|
|
|
|
|
by LocalMan
4617 days ago
|
|
Go has both faster run-time performance and stricter type checking than Ruby, Python, or JS, competitors in the server space. Go development is fast, because the language is simple and it compiles very quickly. Once you've made it, you certainly don't want to recode. Although, of course, if you've super-made it, you can just get more hardware. But even the largest web companies can run into the performance bottleneck. Like Google, apparently. The Go Authors say one of the motives for building Go was the very long compile times of building C++ apps for large-scale web development. One thing they mentioned in particular was the large compile times due to processing and reprocessing of #include files. We know Microsoft ran into the same problem because they put Pre-Compiled Headers (PCH files) into their C family tools. Go has an import facility that prevents the problems of the #include file design. Go is trying to hit the sweet spot for large-scale development. Go is by no means the only one, of course. Any of you guys know how well .NET does in compiling big web-scale applications? I don't. |
|
I don't dispute that, but those aren't the only competitors. If you're willing to give up the extreme dynamicism of those languages, you gain a lot more type-safety and expressiveness, and similar performance, from a modern strongly typed functional language like OCaml/F#/Scala/Haskell.
> Once you've made it, you certainly don't want to recode.
Yes and no. You probably want to accumulate a lot of technical debt during the early stages, meaning you're going to be doing substantial rewriting in any case. The rewrite strategy has worked out pretty well for e.g. Twitter.
> The Go Authors say one of the motives for building Go was the very long compile times of building C++ apps for large-scale web development. One thing they mentioned in particular was the large compile times due to processing and reprocessing of #include files. We know Microsoft ran into the same problem because they put Pre-Compiled Headers (PCH files) into their C family tools. Go has an import facility that prevents the problems of the #include file design.
Sure, like pretty much any language from the past 20 years. The C++ header recompilation problem is basically unique to C++. I can understand Go would seem good if C++ (and Ruby/Python et al) were the only alternatives, but that's really not the case.