3 ms·
What is the purpose of modern language design, if not to improve developer experience?
by ori_b 3y ago
What is the purpose of modern language design, if not to improve developer experience?
- jb1991 3y agoIt's a subjective issue, but sometimes the end results can be better even if the experience of getting there is not as nice as a simpler language that is more bug-prone. Consider Rust, which is notoriously difficult to learn, but that offers improved end results in many cases re: security, safety, reliability.
- ori_b 3y agoCan you explain how that's not an aspect of developer experience? It seems to be like trading off between type system correctness (you can go all the way to needing full formal proofs of correctness, resource use, etc) and ease of getting stuff done is the core of developer experience.
- worik 3y agoWith Rust it is the learning curve that is hard. I find every other aspect of "developer experience" excellent
- jb1991 3y agoDoes your idea of a good developer experience include programs that are reliable, won't crash in production, won't be compromised, and save you lots of time later on so you can just focus on writing code the first time? In the absence of these guarantees, your developer experience can include some very frustrating and/or stressful debugging.
- ori_b 3y agoYes. Does yours not? Tools like Agda, Spark, Idris, and Coq move the tradeoff around towards "probably correct", and I welcome seeing some of their features become gradually available. Getting things right the first time is useful. But these features can also make it hard to get anything done quickly. Good developer experience means finding a balance between the quick and dirty, and the provably correct.
- saagarjha 3y agoDeveloper experience is just one facet of writing software. It means that it is pleasant to write code, but you can also focus on: * Language features that make it so that you don't have to write code at all * Tooling that makes it easier to find bugs in the code you do write * Expressiveness and portability that allows the code to be used in more places * Approachability, so that new people can pick up the language quickly * "Batteries", so that people can rely on your high-quality libraries instead of having to manage their own * Documentation and community, to handle the hardest parts of programming: people * Performance, so that the code can use fewer resources …among many other things.
- geodel 3y agoSame as purpose of modern arts. True masters know its worth. Will it look good in my living room? Doesn't matter.