5 ms·
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 complexit
by luriel 14y ago
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.
- sausagefeet 14y agoA Go implementation is likely more complicated than a C one. You don't think that GC is free, do you?
- dscrd 14y agoYou 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.
- sausagefeet 14y agoI'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.
- dscrd 14y agoEverything 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!
- sausagefeet 14y agoThey are irrelevant to discussing implementation details of the languages.
- duaneb 14y agoActually, the go implementation is very simple, if a little arcane in the style of C used.
- sausagefeet 14y agoSimple 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
- duaneb 14y agoAhh, 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).
- kragen 14y agoHave you ever implemented GC or fibers? They can be pretty simple to implement, really.
- duaneb 14y agoThey are conceptually more high level than anything in C - that's what I meant.
- sausagefeet 14y agoThere 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.
- 14y ago