Influential programming languages: some of the considerations
Which programming languages have been the most influential?
Let’s define an influential language as one that has had an impact on lots of developers. What impact might a programming language have on developers?
To have an impact a language needs to be used by lots of people, or at least have a big impact on a language that is used by lots of people.
Figuring out the possible impacts a language might have had is very difficult, requiring knowledge of different application domains, software history, and implementation techniques. The following discussion of specific languages illustrate some of the issues.
Simula is an example of a language used by a handful of people, but a few of the people under its influence went on to create Smalltalk and C++. Some people reacted against the complexity of Algol 68, creating much simpler languages (e.g., Pascal), while others thought some of its feature were neat and reused them (e.g., Bourne shell).
Cobol has been very influential, at least within business computing (those who have not worked in business computing complain about constructs handling uses that it was not really designed to handle, rather than appreciating its strengths in doing what it was designed to do, e.g., reading/writing and converting a wide range of different numeric data formats). RPG may have been even more influential in this usage domain (all businesses have to specific requirements on formatting reports).
I suspect that most people could not point to the major influence C has had on almost every language since. No, not the use of {
and }
; if a single character is going to be used as a compound statement bracketing token, this pair are the only available choice. Almost every language now essentially uses C’s operator precedence (rather than Fortran‘s, which is slightly different; R follows Fortran).
Algol 60 has been very influential: until C came along it was the base template for many languages.
Fortran is still widely used in scientific and engineering software. Its impact on other languages may be unknown to those involved. The intricacies of floating-point arithmetic are difficult to get right, and WG5 (the ISO language committee, although the original work was done by the ANSI committee, J3). Fortran code is often computationally intensive, and many optimization techniques started out optimizing Fortran (see “Optimizing Compilers for Modern Architectures” by Allen and Kennedy).
BASIC showed how it was possible to create a usable interactive language system. The compactness of its many, and varied, implementations were successful because they did not take up much storage and were immediately usable.
Forth has been influential in the embedded systems domain, and also people fall in love with threaded code as an implementation technique (see “Threaded Interpretive Languages” by Loeliger).
During the mid-1990s the growth of the Internet enabled a few new languages to become widely used, e.g., PHP and Javascript. It’s difficult to say whether these were more influenced by what their creators ate the night before or earlier languages. PHP and Javascript are widely used, and they have influenced the creation of many languages designed to fix their myriad of issues.
ML from the 1970s has been extraordinarily influential. It evolved into Standard ML and OCaml, which are heavily used in academic teaching but not so much in industry, but more recent languages such as F#, Reason (really just an alternate syntax for OCaml), Elm, Scala, Rust, and Swift are all descendants of ML (with their own unique other ancestors mixed in).
@Franklin Chen
Yes, ML, and then there was Miranda which was influential in the functional community but never took off (its creator tried to make it a commercial success, never a good idea for language success), but it influenced Haskell.
Then, of course, there is the whole Lisp branch of the language tree.
@Derek Jones
Amusingly, Haskell was invented by committee precisely because Miranda wasn’t free. David Turner just recently open-sourced Miranda finally. Haskell’s main influence on languages has been not its laziness, but actually spreading the type class mechanism back into ML-family languages!
Lisp has been extraordinarily influential, just not its syntax! It directly influenced every language whose main implementation is interpretation, has dynamic typing, garbage collection, etc. Meaning, every “scripting” language in common use.
@Franklin Chen
What has been the major influence of ML languages outside of its community (which has never been that large)? I cannot think of any, but then I am not an expert in that area.
Dynamic typing is an obvious efficient implementation technique. I’m sure other languages were using it before Lisp; it’s just that Lisp is famous and we know about it today; most BASIC use dynamic typing, but they are not considered respectable languages.
Was garbage collection invented with Lisp? Wikipedia says it was. It’s a non-trivial idea, and perhaps this is a major influence of Lisp on what came later.