Steve Klabnik1 wrote a nice piece on choosing an appropriate language for a software project, in the wake of the kerfuffle regarding the announcement by Anders Hejlsberg2 that the TypeScript compiler has been re-implemented in Go for performance reasons. The TLDR of his post is:
Here’s my opinion on the new typescript compiler: You should write programs in the language you want to.
It’s a bit disheartening to realize how many developers have very strong opinions for what is essentially a 10x tooling speedup they get for free—you can see for yourself in this very long GitHub discussion thread. The main reason given by the typescript-go
team is quite interesting because it highlights the peculiarities of this software project, making it clear that the engineering decision was not made lightly and the team was just being economical and pragmatic3:
[…] By far the most important aspect is that we need to keep the new codebase as compatible as possible, both in terms of semantics and in terms of code structure. We expect to maintain both codebases for quite some time going forward. Languages that allow for a structurally similar codebase offer a significant boon for anyone making code changes because we can easily port changes between the two codebases. […]
Even this sounds like a lot of additional overhead in supporting both the ‘normal’ TypeScript compiler and new typescript-go
, so I’m happy the team found a language that would allow for this setup and still give them such a nice speedup.
–
One of the Rust book authors and an early contributor to the Rust language. ↩
Of Turbo Pascal, Delphi, C#, and TypeScript fame. He may know a thing or two about programming languages. ↩
This reminds me of another favorite programming book of mine, The Pragmatic Programmer. You can download a PDF of an older edition from archive.org. ↩