Why Are There So Many Programming Languages?

Thread Starter

nsaspook

Joined Aug 27, 2009
12,297
https://cacm.acm.org/blogs/blog-cacm/262424-why-are-there-so-many-programming-languages/fulltext
I was once asked by a friend of mine back in the 1990's why there were so many programming languages. "Why wasn't there just one good programming language?" he asked. He was computer-savvy but not a developer, at least not a full-time one. I replied that programming languages are often designed for certain tasks or workloads in mind, and in that sense most languages differ less in what they make possible, and more in terms of what they make easy. That last part was a quote I half-remembered somebody else saying. It sounded smart and appropriate enough, but the truth was I really didn't really know why there were so many programming languages. The question remained stuck in my head.
 

crutschow

Joined Mar 14, 2008
33,355
I think its from a programmer with too much time on his hands (likely in academia) who decides there is something he doesn't like about all the available programs, so decides to write another one.
(Of course, I can understand that if the only language he originally learned was C with its arcane syntax.) :rolleyes:
 

WBahn

Joined Mar 31, 2012
29,510
LOTS of reasons why there are so many programming languages -- probably hundreds of them.

Different languages often have different emphases. Some were designed for efficiency, some were designed for safety, some were designed for education, some were designed for scientific computing, some were designed for business computing, some were design for database computing, some where designed for describing hardware, some where designed for list processing, some were designed for (name it).

Sometimes someone wants/needs to do things that existing languages can't do (or can't do well) and shoehorning the new feature into an existing language would either be far harder than it's worth, or would largely defeat the purposes altogether.

Sometimes someone wants/needs to have a better match between the expressivity of the language and the optimization of the tools.

Sometimes someone just things that all existing languages have some unbearable flaw that just must be corrected.
 

WBahn

Joined Mar 31, 2012
29,510
Whenever a standard becomes universally popular, it's rare that it's the best standard.
Since "best" implies "better than any other", by what metric would one standard be compared to another standard in order to determine which of the two is better?

That's really the crux of the issue, whether it be programming languages or bolt threads. What is critically important to one group is completely irrelevant to another, thus any solution is necessarily a compromise that favors some factors over others. The "universally popular" solutions usually just represent a set of compromises that are sufficiently acceptable to a sufficiently large group of people and are all but guaranteed to be far short of being the "best" by just about any particular metric other than being widely accepted and usable -- which sometimes is precisely the metric that is critically important.
 

boostbuck

Joined Oct 5, 2017
417
I have VERY strong opinions about what are great, good, poor and bad languages which I know better than to elucidate here.

Saturation will be reached when there are as many different languages as there are programmer's egos.
 

Ya’akov

Joined Jan 27, 2019
8,519
There are two different broad “reasons” for programming language multiplicity.

First is the “good” reason that programming languages have attributes which are mutually exclusive and so optimizing those for a particular application means needing more than one language.

One obvious example of this is the abstraction level of a language. The trade off between ease of writing programs and their performance means there will be more than one language to accommodate this.

While in theory it could be sort of “one language” with “layers”, the other thing that leads to multiple languages—practical limitations on the “ideal”—means that because it is more likely different people or teams creating languages will be interested in the different levels of abstraction there will not be one, layered language.

So, you might see a sort of spectrum from assembler, to a complied language, to a dynamic language, to a graphical programming environment, the particular implementations for each of those slots will vary from instance to instance.

The second “bad” reason is that human beings create programming languages. People don’t approach this task with purity and humility looking only for the best solution for everyone and incorporating all the best ideas. They think they’ve worked out how to do it (better) and they have at it.

Profit motives (for money or other rewards like social ones) are also present and will tend to multiply programming languages.

I am going to cut this short long before it becomes another overly long screed and answer the original question this way:

Q: Why isn’t there just one good programming language?
A: Because there isn’t just one good programming language.
 

BobTPH

Joined Jun 5, 2013
8,104
My take: because every language designer has her pet peeves and and her blind spots and therefore enhances and optimizes some aspects while totally botching others. For some reason, this seems to be even more true of committees. Committees seem to somehow amplify the most flawed ideas of the membership.
 

MrAl

Joined Jun 17, 2014
10,906
Hi,

The fact is, programming languages evolve just like any other technology. When something is discovered it could then be implemented, and since it was not known before that, it could have never been implemented in a language before that.

There are certain scientific reasons behind some of this too. That comes from experience having used a given language for some time and realizing that some things have to be done over and over again and so it would be good to find a way to wrap that into an easier to use language. You can actually follow the history of some languages as to how they evolved to include various types of variables like integers, arrays, strings, classes, etc. Once it was realized that oop (object-oriented programming) was a good idea the class object became a useful type of variable where you could define things in a reusable package.

The drawback in the evolutionary process I think is we see the introduction of very complex forms of methodology coming into the picture. This virtually means learning yet another language because the forms are so complex even though they built on simpler forms under the wrapper. This essentially means learning all those forms and how to apply them, and the hierarchy behind them may be nonexistent so there is no good logical connection between forms. This means learning things that can only be applied in certain ways unlike regular basic programming. There are benefits but if you need something unusual it can be hell to start from scratch.

I started programming years ago with numerical programming, which is something like asm but you would have to write everything in octal. I then moved to actual asm, then to Basic, Fortran, C and C++, Pascal, and some not well-known languages. Also briefly Unix. I meant to get into html and python and java a bit more but don't seem to have the time and energy for that anymore, and a lot of that entails looking for information on the web which gets tiring.

There are also a number of API's that are almost like learning a new language because there are so many functions available that act as a wrapper for doing a variety of things with a given product. The Windows API is a good example.

After all is said and done, there are probably as many languages as there are ways that people internalize ideas and concepts.
 
Top