Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Your link is discussing the development of Unix, which was before Rob Pike came on the scene. Rob Pike is discussing an incident that happened a number of years later when Rob would have been significantly junior to Ken.

There is no reason that both versions of history can't be true.



On top of that, things would have grown in complexity since the early days.


Don't kid yourself. Systems may be larger and seemingly more complex, the individual parts are as simple or complex as they ever were. Anyway, if things are more complex the necessity of thinking it through are even greater.


In many ways Plan 9 is simpler than Unix, and Go is simpler than C.

Unix was also much simpler than Multics.

Software doesn't need to always grow in complexity, but it takes lots of determination to accomplish this.


A Go implementation is likely more complicated than a C one. You don't think that GC is free, do you?


You forget the fact that Go is a young language while modern C implementation has to support several standards, countless extensions and probably decades of cruft in the codebase. Additionally, if you factor in that go includes a tool that replaces most of what autotools gdoes in the C world, we're talking about a huge blob of accidentally complex code.

It's very reasonable to think that the Go implementation is simpler.


I'm not forgetting. The make tools are not part if the language and irrelevant. Most C developers I know avoid extensions for portability reasons. The cruft part doesn't matter much for this discussion either, you can start from scratch if you want like TCC. The language definition of Go requires some things that C does not for any reasonable implementation. I think it is much more reasonable to think a C implementation will be much simpler.


Everything else you said I'll grant with "we have differing opinions" except

"The make tools are not part if[sic] the language and irrelevant"

No, they're quite a lot more than just make replacement. And definitely not irrelevant!


They are irrelevant to discussing implementation details of the languages.


Actually, the go implementation is very simple, if a little arcane in the style of C used.


Simple compared to what? The Go implementation is very immature, I'll grant you that, but it is definitely more complex than an implementation of C at a similar point in its life. At the very least Go supports, fairly straight forwardly, a lot of C and it has a GC and multiplexing user land threads over multiple cores.

* Assume C90


Ahh, if we are comparing equivalent implementations, you are definitely correct. GC and goroutines are much more complex than anything in C. In fact, off the top of my head, the only features truly missing in Go from C are unions (unfortunately) and the preprocessor (effectively a part of C).


Have you ever implemented GC or fibers? They can be pretty simple to implement, really.


There is a big difference between implementing them for fun and implementing them for a production system. Regardless, even if they are simple to implement they are more than what C90 has so, by definition, more complex implementation.


They're a lot simpler than printf, strxfrm, or mktime, all of which are in C90!


They are conceptually more high level than anything in C - that's what I meant.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: