HACKER Q&A
📣 monroewalker

Which programming language that you've used had the best DX?


Which programming language that you've used had the best DX?


  👤 pawelduda Accepted Answer ✓
DX == developer experience? If not, I will delete this

For me, the answer is Elixir:

- takes the good parts of Ruby and applies them in a functional paradigm (data is separated from behaviour as opposed to encapsulated in complex class hierarchies),

- standarized documentation, strong emphasis on tests, it even has documentation that can double as a test (see doctests),

- quite recent language but already matured because it builds upon Erlang (which you will need rarely to be productive, if at all), - a lot of exciting things going on in the ecosystem, see Phoenix Liveview.

Probably has the most friendly community that I've encountered too. The language author Jose Valim is all over the Internet answering everyone's questions and looks like this behaviour is poisonous.


👤 yen223
Kotlin, hands down.

I've used many many languages in my life. Some languages have huge ecosystems (think Java or Python), making them productive to work with. Some languages have very cutting-edge features (think effect systems in Koka), making them fun to use. Kotlin is one of the few languages that strikes a nice balance between the two.

The fact that it's built by a company that makes really good IDEs is a big plus as well.


👤 mc4ndr3
I feel most productive in Go. Less clutter to manage. Modern concurrency support.

As for least productive, the Fallout 3 tool bench scripting language. Some proprietary nonsense with examples so bad they clearly didn't understand basic for loops.

AppleScript is fairly awful, simply because it saves the source code as binary rather than text.

newLISP has phenomenal API documentation, with at least one example for every function. Unfortunately not spec to either Scheme or CommonLisp. For spec, see Chicken Scheme.m or CLISP.

Not a fan of Java, due to the temptation to overengineer everything. A second rate implementation of OOP in any case. altJVM languages tend to break the build tools. And you end up having to memorize two languages instead of one.

I prefer compiled languages, but if I had to pick a dynamic one to save my life then that would be Ruby. My pseudocode mimics a mix of Ruby and other languages. Ruby gives you enough rope to hang yourself. Or build a bridge. It borrows IF as expression from Scheme.

Shell (any flavor) has revealed just how risky the simplest line of code can be. The developer experience can be slightly improved here by turning on as many set safety flags as possible (e.g., set -eEuo pipefail). But generally I've learned to treat all shell scripts as time bombs. Just say no to ksh and to non-POSIX shell languages like Fish, PowerShell, rc, (t)csh.

C++ as a teaching tool has been enlightening for studying applied computer science concepts, especially about performance. Rust has a smoother, less warty syntax.

Python I would say is a siren calling out in sweet dulcet tones. As you approach production, Python snaps its eval jaws around your torso and drags you into the abyss. It looks friendly for newbies but is less reliable or expressive for advanced use. Ruby is similar but better in so many ways.

Node.js has wonderful ideas with their NPM. Too bad about ECMAScript.


👤 mikewarot
Turbo Pascal, then Delphi, now Lazarus.

The only things close was Visual Basic 6

Nothing else compiles as fast, nor lets you make a GUI with such ease.