| > The developer experience in Java is worse compared to some other popular programming languages like JavaScript, Go, Python, Wait, what? Go, maybe. But the dev experience in languages that are only able to catch errors at runtime, like Javascript and Python, are painful! Looking at existing Python/Node.js codebases, half the automated tests are there simply to catch errors that statically typed languages catch for free, and even those tests aren't a match for a statically-typed language anyway. I hate, hate, hate, HATE working on languages where my only options are: 1. Pray that no future code calls this function I just wrote with the wrong parameter types. 2. Write tests for all the callers of that function, to defend against some caller getting called with some combination of arguments that result in the function being called with the wrong types, while knowing full well I can't cover all possible cases like I would in a statically typed language. Honestly, the first step in writing software is modelling the data types and structures[1]. In Node.js and Python you can model all you want but enforcement is left to developer discretion. At this point in time, having done a few Node.js and Python backends, the dev experience in c11 is superior. In order of least painful to most painful, in my experience of writing backends: 1. Go
2. Java
3. C#
4. C
5. C++
6. PHP, Python, Node, Ruby, etc. Those languages in #6 above are popular because they allow you to hodge-podge your system together. [1] The second step is modelling the data flow, of course. |