4 ms·
We have two approaches for a programming language: 1. We design something "perfect" and "pure", that will never need to change. 2. We design something simple
by bumbada 6y ago
We have two approaches for a programming language:
1. We design something "perfect" and "pure", that will never need to change.
2. We design something simple that works for something and let other people improve the language.
PHP or js were terrible designs, but there are not so bad today. Thousands of people have improved the design over time.
BTW, languages like Lisp actually evolved over time too. S expressions were not intended to be definitive, and you were not supposed to interpret code in code itself. McCarthy was just interested in the mathematical proof of creating a Lisp machine different from a Turing one. The practical side of that was of no interest for him and other people added this fucntionality.
In fact one of the problems with Lisp is that it is too flexible. In c like languages you have 3 or 4 different loop systems, you have for, while, do. In common Lisp you have more than 20 official loops, and you can create your own infinite set with macros!!
And that is with loops alone. It applies to everything in the language. You have so many ways of creating objects or parsing.
That is amazing and incredible for academic research, but not so good for production.
For production you need standards that are simplified, like if you design a machine, you choose 3 different screws instead of 30. Your prices go down, need less tools, you don't need "change of tool" interruptions, everybody can supply you.
Most of the time, if you design your own screw you are shooting yourself in the foot. You will have to wait much longer for being manufactured at 100x the price.
With software something similar happens. Geeks love learning new paradigms but while you are in "production mode" you should be producing not learning the custom syntax a programmer has created that can be done with a standard one.
Everybody has an ego. Dunning–Kruger effect tells us that the less we know about computer languages, the more confident we are that we can change the world with a brilliant design (that is not so brilliant in the first place).
In fact, languages like c or PHP or js are actually brilliant in lots of ways. If they were not, nobody would have used them. You should learn what this brilliance is before you create something new.
- lispm 6y ago> BTW, languages like Lisp actually evolved over time too. S expressions were not intended to be definitive, and you were not supposed to interpret code in code itself. McCarthy was just interested in the mathematical proof of creating a Lisp machine different from a Turing one. The practical side of that was of no interest for him and other people added this fucntionality. Actually McCarthy was working on a new research domain called 'Artificial Intelligence'. For that he and his team needed a programming language. They did early experiments with list processing added to Fortran. Eventually they developed their own programming language. It was designed and implemented over short time frame of a few years for an IBM computer they had. McCarthy and his team were very much interested in the practical side how to implement Lisp and they learned a lot while doing so. During the first design and implementation phase 'it became clear that this combination of ideas made an elegant mathematical system as well as a practical programming language' (McCarthy, History of Lisp, 1979). The new programming language was thought to be used to implement software like the proposed 'Advice Talker' (McCarthy, 1959). http://www-formal.stanford.edu/jmc/mcc59.pdf http://www-formal.stanford.edu/jmc/mcc59.pdf > For production you need standards that are simplified Quasi standards for Lisp were early the Lisp 1.5 language (the language description was published as a book). Then actual work started on a new language standard, supposed to be Lisp 2. That work failed eventually. In the 80s/90s Common Lisp was defined as a standard. Further standards of Lisp languages were IEEE Scheme and ISLisp (an ISO standard). > For production you need standards that are simplified See the extensive standards of Ada, C++ and Java EE, ... C++ is a very complex language standard, even with meta-programming features: https://en.wikipedia.org/wiki/Template_metaprogramming https://en.wikipedia.org/wiki/Template_metaprogramming