Came across this pros/cons table recently (some un-named company, when deciding on micro-service language-of-choice):
Mostly agree, except that
- We do have generics in Go (as of
1.18) and “… unfamiliar with the language” is true for any language
- The Python cons will remain as they are (though they should matter much less when not doing cpu-intensive tasks)
- The Rust cons will reduce as (1) it becomes less ‘new‘, and (2) the ecosystem becomes more ‘strong‘, and (3)
async/await has been standardized now, but yes, the memory model will always take time to learn.
Given this, and admitting a lack of Kotlin knowledge, IMO Go seems like a safe default choice (or Rust/Python where appropriate).
The “tragic tradeoff” in programming languages:
I still remember a wonderful presentation by Damian Conway a number of years ago about all of the great ways Perl 6 could turn into whatever domain specific language you needed it to be. It was beautiful, I was awestruck. I’ve always enjoyed Perl as a language. But I walked out of that presentation thinking “That was so beautiful, and I don’t want it anywhere near my business.” Because the last thing I need is software written in a language I can’t hire anyone else to maintain.
At some level that’s what I think has happened to Perl in general. I never liked Python much, until I got forced to use it on a new team. Now I’m convinced that it has a really distinct advantage — there aren’t too many ways to write Python, so an experienced Python developer can figure out code pretty quickly. But Perl programs are frequently art pieces that take a lot of effort to truly grok.From HN, “What happened to Perl 7“
The types of programming language semantics, according to CTM
Takeaway from http://norvig.com/lisp_talk_final.htm:
- Simple is better
- Useful is better
- Cheap is better
- First is better