A language with a short learning curve is like a toolbox that’s nearly empty. You quickly run out of ways it could help you. We should optimize for experts, because that’s where each of us is going to spend most of his career.
In defense of complicated programming languages
11–20 of 379 posts
Re: In defense of complicated programming languages
#12"The idea is that you can't understand a solution without understanding the problem it solves," great quote!
"But mostly, software is bounded by its creation process: Programmers have limited time to create, and especially limited time to maintain, code." Software is this weird commodity with no marginal cost but some "complexity" cost.
Also, I remember taking a theory of the mind course and learned how people whose native language didn't have words for things like other people's minds or consciousness couldn't solve tests on those topics IIRC. Humans, in general, needed these words in our vocab to reason about these things. Just as adding words in our language helped us reason about higher-order concepts, these programming words and features allow us to reason about our code better. Furthermore, words in our language grow organically, just like these programming concepts.
Re: In defense of complicated programming languages
#13A language with a short learning curve is like a toolbox that’s nearly empty. You quickly run out of ways it could help you. We should optimize for experts, because that’s where each of us is going to spend most of his career.
Is it possible to optimize too much for experts, and sacrifice learning curve too much?
Re: In defense of complicated programming languages
#14> The only resolution is for us as professionals to use our judgement.
Or the third option: create the language with the simplest implementation of all necessary complexity.
Unfortunately, famously, tragically, perfect languages attempted so far are examples of what not to do. The best ones are wonderfully unique examples of what not to do!
I know because I have created more than several.
Re: In defense of complicated programming languages
#15A succinct and level-headed assessment of the programming language landscape. Agree that beginners need to struggle with unwieldy personal projects before " getting" typing and classes. "The idea is that you can't understand a solution without understanding the problem it solves," great quote! "But mostly, software is bounded by its creation process: Programmers have limited time to create, and especially limited tim…
Except that words for concepts nobody's ever bothered to consider don't just appear in the language. That can only happen when somebody tries to think about the topic and is forced into making up some new words.
Re: In defense of complicated programming languages
#16Classes are not a design inevitability, but just one way of managing state. Languages that mostly avoid mutable state don't tend to have object systems, for instance.
Re: In defense of complicated programming languages
#17This is something I've tried putting into words many times.
I'll try to solve a problem and get to know its challenges deeply. Then a tool is introduced that brings it all together. In these cases, I seem to quickly get a full grasp of the operation and essence of the tool.
I wish education was based around this principle. A bit like what Paul Lockhart advocated for in "A Mathematician's Lament" (https://www.maa.org/external_archive/devlin/LockhartsLament....)
Re: In defense of complicated programming languages
#18"Classes would still exist, but as implicit patterns." Classes are not a design inevitability, but just one way of managing state. Languages that mostly avoid mutable state don't tend to have object systems, for instance.
But yes, the entire OOP-classes with namspaced methods and "self", that's not inevitable
Re: In defense of complicated programming languages
#19Earlier quoted context omitted.
Is it possible to optimize too much for experts, and sacrifice learning curve too much?
I certainly doubt any extant language actually does it, and also fundamentally there may just not be so much that's worth building into a general-purpose language. The most extreme examples I can think of are something like Haskell (which takes, what, a weekend to be able to write code in?) or maybe APL (which takes, what, maybe two months?). A language that was truly expert-oriented might take as long to learn as hu…
https://stackoverflow.com/questions/39558633/higher-rank-lif...
I still don't understand what higher rank lifetime bound means and this affects whether I can write code that actually compiles
Re: In defense of complicated programming languages
#20Earlier quoted context omitted.
Is it possible to optimize too much for experts, and sacrifice learning curve too much?
If you can’t retain any or the project is short-term, I suppose. Probably nobody could learn a new language just for a hackathon.
Some learned C++ on the Arduino, some went with TypeScript and Angular, others with JavaScript and AWS Lambdas, together we got a robot arm to pick and drop pieces with a Web dashboard and remote control, talking with each other via the "cloud".
Naturally all of them had several years of coding experience, but in other languages.