3 ms·
If the first thing you talk about is performance and not quality and maintainability, then you're already missing the point. Most software just isn't in some s
by louthy 4y ago
If the first thing you talk about is performance and not quality and maintainability, then you're already missing the point. Most software just isn't in some super high-perf environment - what matters is fewer bugs, easier maintainability, better communication with other engineers (through declarative code).
The code we work on in the 2020s is much, much more complex than code written 20 years ago. We need better primitives to help our weak and feeble brains deal with this complexity. FP (particularly pure FP) gives us that. It isn't a panacea, but it's a major step in the right direction.
- skohan 4y agoI just disagree that performance isn't a concern in almost every context. There's a hierarchy of concerns, to be sure, and if you haven't written reliable code which solves the problem yet you shouldn't be worried about performance, but if your PL itself imposes a performance tax, that's something which has to be paid every time your program gets executed, by every user. As programmers, our job is to not to play with abstractions, it's to move electrons and make hardware do things. We can't afford to abstract away the complexity of the hardware completely. Indeed the trends in PL popularity of the past 20 years have been to move back closer to the hardware, and away from highly abstracted environments, like scripting languages and JVM.
- tluyben2 4y agoBut Python/Ruby (and JS? Not sure how far they are with optimising that or what the comparison would be) are very slow compared to Haskell. So people are paying that price all the time without getting any benefits that Haskell (etc) can over next to it. I agree with the GP; performance is really not very interesting for most projects and most (Py/JS are the top dev languages by far I think) programmers/companies are agreeing with that by using low performance environments that make them productive. So productivity seems to win out. For sake of the environment and hardware upgrades, I think we definitely should make an effort and we can see that improvements in compilers and PL theory do help with this when the goal is practical programming languages using these techniques; Rust does, Haskell was meant as academic language for a long time. I think robustness/security should go first anyway as hierarchy of concerns; that's where things are really breaking now.
- skohan 4y agoPython and JS are top programming languages for very specific reasons. Python because: 1. It has a low barrier of entry for non-programmers, which makes it suited for applications like data science and ML. 2. There is vast library support for math and science, which makes it basically the only choice for those domains. But python is basically used as an API for highly optimized C libraries since any kind of a hot loop in python is basically an anti-pattern unless you own stock in energy companies or hate getting results quickly. JS has its place because because until very recently it had a monopoly on web front end development, which is one of the largest programming domains. So for both of those examples, it's the use-case determining the PL, not the programmer.
- rileymat2 4y agoCan you give some examples of increased code complexity over the last 20 years? I am blanking on that. I have noticed a lot more ops complexity and additional library usage, but not complexity in the code I am responsible for.