Programming language should be simple
blog.dhananjaynene.comIn 40 years there has not been very much improvement. The same concepts of decade old languages are implemented in newer languages.
OP: > Programming should be simple. And it should be accessible. And when I mean accessible I mean people with IQ of approximately 100 should be able to write programs.
He's looking for the wrong tool for the job. We'd need great IDE's for this to hide all the stuff making the app complex.
Similarly, open heart surgery should be simple and easy to learn.
I don't mind if theres a learning curve, so long as it is approachable (ie, a language geared for web development shouldnt require a degree in type theory) and, much more importantly, consistent. I don't mind complex tools for a complex job, though.
Having said that, I agree with what he is saying in general. Simple languages lead to cheaper maintenance (and fewer bugs), which is often more important than more powerful (but more complex) features. Of course, if we can have the features without sacrificing simplicity, then all the better. Consistency helps here.
Apples and Oranges. Open heart surgery is not most--notice I say most--programming jobs. Nor do most software bugs carry the same sorts of penalties as screw-ups in major surgery.
This is why programmers aren't sued and surgeons are.
There is a huge niche in programming languages for non-professional/semi-professional programmers without computer science degrees. This niche is currently unfilled. Basic used to do the job. Python used to, and still wants to, but it keeps moving up the ladder in complexity.
Lua looks most competitive in this regard, I think. One main data structure, fast execution, room to grow without feature creep.
These requirements are too stringent. Something better give, or what he wants is a Java that is both more featured, simpler, and better documented.
1. Must run on a very specific instruction set (JVM).
2. Must have (require?) lots of documentation
3. Be both Object Oriented, and Functional.
4. Must be able to automagically do multicore.
5. Must also contain a full type inferencing system.
6. While prioritizing human readability over consistent syntax.
7. And constrain itself to a very specific call stack layout.