7 ms·
"Go compiles down to native code and it does it fast. Usually in just a few seconds." Very strange statement. Most programming languages/runtimes do small ope
by niggler 14y ago
"Go compiles down to native code and it does it fast. Usually in just a few seconds."
Very strange statement. Most programming languages/runtimes do small operations very quickly.
- StavrosK 14y agoWhat do you mean? He means that you can compile a pretty large program in seconds, most languages' compilers aren't that fast.
- niggler 14y agoWhat's "pretty large"? It's fair to say that compilation is quick, but that's meaningless without a comparison. For example, you can generate really short C++ programs that exploit the template mechanism to perform heavy calculations at compile time.
- shadowmint 14y agoIt's not a scientific test or anything, but the results are so marked it's almost worth not even bothering to measure it: 24k loc of C (24743 total excluding headers and comments), using ninja and cmake, without using the autofail tool suite (which ups the time taken about about 150%): $ time make ... real 0m16.929s user 0m9.952s sys 0m4.641s 23kloc of go code (23588 total excluding comments): $ time go build ... real 0m1.667s user 0m1.331s sys 0m0.214s
- seanmcdirmid 14y agoWhat do you mean? Even C# is measured in millions of lines per-second. The only compilers that are kind of slow these days deal with complex static type systems (Scala), whereas Go has a simple static type system and should compile fast.
- laureny 14y agoAgreed. In terms of compilation times, Scala feels as slow in compilation times as C++ did in the early 2000's. Kotlin and Ceylon are showing that it's possible to be a modern JVM language and still compile fast. Hopefully, Scala can learn from them.
- seanmcdirmid 14y agoMartin Odersky does care about compilation speed a lot and pulls out as many tricks as possible to make it faster. But Scala has a way powerful type system in a way that I doubt Kotlin and Ceylon are barely approaching. I don't think many want to give up scala's features for better compilation speed, which anyway can be mitigated via better incremental compilation (disclaimer, my experience is about 5 years out of date).
- meaty 14y agoWith c# though it has to compile it again at runtime which destroys your advantage.
- seanmcdirmid 14y agoThat hasn't been true for a long time (ngen.....).
- meaty 14y agoNgen is useless if you're deploying to IIS. Think of views, asp.net pages etc. You're to going to put them in the GAC are you. Ir makes pretty much no sense to ngen anything other than stuff exposed to com or core framework bits. All you do is fuck yourself at deploy time.
- seanmcdirmid 14y agoI've never done any asp.net programming, but then isn't C# competitive with everything else in that space (like python, ruby...)? .net has a pretty good back end and the only thing you really fight with is not instruction compilation/execution time, but garbage collection. GC is mainly why you might want to use C++ sometimes instead of C#.
- laureny 14y ago> most languages' compilers aren't that fast All mainstream languages compile in about that ballpark, if not faster. I've always found it odd that one of the driving design principles of Go was "fast compilation". It's always struck me as odd and short-sighted, obviously motivated by the Go authors' history with C++. If only they had spent some more time studying other languages, they would have realized that compilation times are really not a concern in languages these days, and they might also have designed Go with more modern features in mind, such as exceptions and generics.
- DeepDuh 14y agoNot really a concern? I don't agree. Look at large C++ projects, and let's not speak about GPU frameworks like CUDA, OpenCL and OpenACC. If it weren't be a concern, software companies wouldn't invest in clusters just for compilation.
- laureny 14y agoDidn't I just single out C++ as the only mainstream language being slow to compile?
- RobotCaleb 14y agoApparently you're stuck in a world where nobody around you uses C++. I hate to be the one to break the news to you...
- laureny 14y agoDidn't I just call C++ "mainstream"?
- pjmlp 14y agoContrary to what many young developers may think, C and C++ aren't the only languages with compilation to native code. Already in 1987 Turbo Pascal 4.0 was compiling quite fast, Borland states around 34,000 lines/minute for the 5.5 version in 1989. Similar compilation speeds are possible for languages with modules, since the early 80's. Go's compilation speed is only news for someone that never used a module based language for systems programming like Modula-2 or Turbo Pascal, just to name two.
- sehugg 14y agoIt looks like Go has a compiler implementation with a custom linker and object format. Turbo Pascal got much of its speed from its linker (and by having a module system instead of include files) so they may have decided on the same strategy. They do list the Wirth family of languages as an influence in the FAQ -- of course Oberon and Plan 9 also have history with the Go designers.