Why are there so many programming languages?

Asked

Viewed 1,841 times

22

Several decades ago, programming languages emerged to make life easier for programmers and indirectly, for the general public as well.

In the beginning, everything was done with buttons that represented binary numbers. Then people realized that they always ended up pressing the same buttons in sequence several times, then came the punched cards.

Then they realized that they could write a program on a computer that would allow them to write the code there, and then the first programming languages appeared, like FORTRAN and LISP.

Time was passing and more and more languages were appearing as C, COBOL, BASIC, among others.

But why are more and more languages emerging? Even knowing that the first languages were complicated, what justifies the emergence of new ones today? Currently, there are more than 400 programming languages, there may be even more thousands languages, and in most parts of the world, less than 25% of them are used.

So, why there are so many programming languages?

  • 2

    There are programming languages more or less indicated for each of the multiple classes of problems to be solved. Now you’re being very modest, the last time I researched there were over 2,500 different programming languages

  • 2

    I read over the answers, but did not see comment, so I will comment here, there are languages simply created by some personal "whim" (php I see as an example of this) or entertainment (usually "esoteric" languages). In the case of PHP, Rasmus created it for his personal use and it was really different from what it is today, in fact his idea about languages was sometimes a little mistaken, but I’m not going to criticize, the focus is that the language was adopted by a "community" and they evolved it, that is, no longer what it was [...]

  • 2

    [...] then his initial reason was not to solve something that another language could not, was initially to be something personal that he might well have done with another interpreter, as was common at the time, perhaps Perl (at the time usually used CGI (port/protocol))... Other possible (over other languages) motives are probably the "commercial/marketing", ie a technology company that develops its own language should be something "amazing" in the eyes of the "world" (at least so people expect)

  • 1

    To celebrate the question, I was curious because I saw this video yesterday https://www.youtube.com/watch?v=Og847HVwRSI

5 answers

20

  • One of the reasons is that there are many different problems, needs that cannot be met by a single programming model. But this involves a certain degree of fallacy, I’m going to go further down. The official reason is this, the others are secondary. For this to be exercised properly the language needs to be of a paradigm different.

    Save something very punctual languages are not improved to suit hardware evolution, at least not for technical reasons, since for political reasons the hardware vendor may have the adoption or creation of new language. Also there is no such thing because of operating system.

    At some point we can say that it is because there are nails and screws and so it needs different tools, but when the handle is plastic or wood, or metal, or is curved or has other characteristics is because there are people who like it differently, not because it is necessary.

  • A secondary point of this is that languages always have flaws and a new one comes to give a solution to these failures. Many of these flaws are subjective, which always allows someone to find a reason to do something different. There is no way to make a perfect language, a positive characteristic tends to prevent another or creates a negative.

    Is one language difficult to manage memory? It creates another that makes it simpler. Does a language require writing too much code and expressing what it really is? Does the language not allow you to write very large codes with ease? A language is legal but in exactly constructed form is inefficient? All this can be solved using the basis of what already exists, ma changing some details that solve this problem.

  • Another reason is that people want to have a certain dominance of the market or mark their position in history, so they find something that can be done a little differently even if it’s not that different. This can happen because people tend to like things because of little details.

    Why are there so many brands and varieties of so many products? For the reasons I mentioned above, then programming language is no different. Why do you need a white car and a blue one? It doesn’t change anything in people’s lives.

    Of course, a new language solves a problem found in another language, even if this problem is not so relevant, but the biggest issue is that people want to do different things. It would make sense to have a few very different languages, the rest is just a space fight. It is even a partial fallacy this question that each one meets a different need. Of course this is partly true, but part is just to suit a different taste. Except in some scenarios it makes little difference to use one thing or another.

    So the real reason is that people like different things and there are people who want to supply that.

  • Why are there several types of computers? Or cars? Many of them do not actually exist anymore because they became obsolete, they were good at the time they were created, but today no more. With language it is the same, with the difference that it does not wear out with time and can still be used.

    Again, whoever created something in the past tries to keep their product relevant and makes improvements. This only works because have those who like.

In essence all programming languages can do everything necessary and some are slightly better at some specific point. Often you see more difference in the implementation of one language than from one language to another.

Languages are forms of expression so each has a preferred way of doing it. In some cases this way may be easier for certain scenarios. It is not so different from natural languages. Even some serve better than others. Some serve better for technical subjects others serve better for artistic scenarios.

Have you ever noticed a great strength of people trying to evangelize about the use of a certain language? People know that greater adoption leads to greater adoption and this is necessary. Most adoptions are made by marketing, even spontaneous, and not by the actual technical characteristic. Of course, it is rare to adopt very out of parameter, but it is also rare to have something that is very complicated to do in different languages.

Currently there are thousands of programming languages and each has the right to create their own, what will determine whether it will be known is how much you can disclose it and get hold of other people. And thousands are used, only varies the amount of use.

Many languages are not created to be viable products but rather experiments or evolutions of any existing.

I often saw people adopt a language not because it was different but because it had a library that people wanted to use that way. Even some think that a change in the library creates another language when that is not true.

The fact is that there are literally infinite combinations possible to make in one language. Each sees one combination as better than another.

It makes it even easier to evaluate language against language about it. For example, there’s a reason people use C or C++ and it’s not performance as many people think, only naive people think it is. I’m going to try to put some motivations that we see around to give an overview of how choices are made. I’m of course making simplifications.

C was created to be a portable Assembly. And be something easier to express than ALGOL which is a fantastic language but very boring to use.

C++ was initially created to add C classes, to give better abstractions without paying anything for it.

Java was created to be a better C++ (never got anywhere near that, it’s worse than C++ in almost everything that doesn’t involve robustness).

C# was created for Microsoft to have an alternative to Java since it was forbidden to evolve Java. And also to be what Java said it would be, ie a C++ better, so it got in the middle between C++ and Java.

The big difference from these languages to C++ is memory management.

VB.NET is the VB for .NET. VB is the BASIC most suitable for Windows and that Microsoft could control the evolution. It has an immeasurable amount of BASIC dialects. This language emerged to be a simple alternative to what existed around as FORTRAN or COBOL.

F# exists to have a working footprint on . NET, based initially on Ocaml.

Pascal ALGOL should be more pragmatic.

Delphi would be Pascal with classes, an attempt by Borland to keep its market around Pascal in the face of the novelties that emerged.

Objective C was created out of some dissatisfaction with how C++ handles object orientation. Swift was created because Objective C had too many problems and still held the legacy of C.

R was created to facilitate statistics. It is one of the few languages that imposes a real difference that makes sense to exist beyond taste.

Rust was created because C++ has many flaws and Java and similar have tracing Garbage Collector.

Go was created to be C with GC and correct some errors of this language, in addition to allowing better abstractions (but not so much in some cases), and also to compile fast. Just like in other languages, the market goes elsewhere and the goals change. Not always can the creator keep the language the way she thought, people can adopt it, but have other ideas.

D was created because C++ was too complex. It didn’t work out so well and they are reformulating the objectives.

Dart was created because JS was very bad.

Scala was born to have a more functional strand for Java

Kotlin emerged to have an alternative without the problems of Java running on JVM (had other goals initially, but were abandoned).

Eifell was created to demonstrate that it is possible to make multiple inheritance and how is the use of contracts.

Haskell emerged to teach Haskell to people :P :D

They say that V was created to raise money from unsuspecting people (I’m not the one who said that :) ).

Javascript has emerged to allow customizing web pages with behaviors, and so it should be a simple and easy-to-use language, not to make applications. Most of the choices made for her were for lack of choice, or at least lack of time to choose to do better things.

Typescript was created to put types and more organization into JS, thus allowing applications.

PHP was created to facilitate the work of creating web pages where the C that was used by the creator was very complicated.

Python, Ruby, Perl and others have appeared to be something similar, or at least to be able to do scripts simpler than C, Pascal or other language of the type, but more powerful than awk, bash and others shells. Ruby wanted to put OOP on scripts, beautiful idea.

Python for example tried to give an air of functional language but with the imperative way that everyone is accustomed, which is a recipe for success, because functional languages are simple and beautiful, but bad for certain usage patterns. Hence the indentation to define block.

Groovy exists to be a dynamic alternative to Java.

Moon was created because they needed a Brazilian technology to make scripts simple and with performance embedded in other applications.

Boo should be a better Python running on. NET, but died from lack of community and commitment from the creator, perhaps because C# improved much of the things that Boo brought.

Elixir should be dynamically typed Erlang among other "improvements".

dBase was created to support a simple database. Clipper was initially created as a dBase compiler, but then I need to evolve to be able to create complete applications. Harbour was created to meet those who became orphaned of Clipper and ended up having a natural evolution to meet new demands. Foxpro should be the Clipper of another company to earn some of the rivers of money that Nantucket was earning. It has other dialects created each for the interest of a company.

These latest languages usually give up efficiency to give more ease. Some less than others, an example is Lua that can be easy and simple without being too inefficient.

There are some languages that nobody knows because it was created because it only makes things worse :) In general it’s just the creator’s taste.

I find it curious how some languages were created with a clear goal and was changing, today is something else and nobody notices. Many people defended language as it was and today defends the other way going against their initial argument. People root for teams, political parties and companies and technologies, all in a religious way but with dogmatism biased to the discourse of the moment. This gives space to emerge new languages, people are waiting for a speech that makes more sense to her.

Some languages are true Frankensteins.

  • 1

    He spoke about "marketing" and "market" +1

  • "Haskell emerged to teach Haskell to people :P :D" Kkkkkkkkkkkkkkk, laughing until 2030

18


There are several reasons:

  1. Natural evolution of languages: in the same way as in human language, where she was born with simple phonemes and according to the evolution of the human being and its migration and geographical separation, she was adapting and evolving together. The programming language, as you mentioned yourself, emerged in the most rudimentary ways and as programmers and developers were realizing that things could be done better, more intuitive and therefore faster, were creating their own languages.
  2. Adaptation with the historical moment: until the end of the 1970s, for example, the mainframes, (large) companies that owned them had huge and complex development structures, involving systems analysts (who analyzed the need, created flow charts - block diagrams), which passed this material to the programmers (who tried to understand what the analyst wanted and encoded an 80-column paper program), which passed this material to the typesetters that would type the source code into the mainframe operating system, etc. There was many people involved to generate a simple program (and a lot could go wrong), so a programming language was needed that was more prolix, like the COBOL, so that everything was well detailed, nothing implied. As these mega-structures disappeared, with the emergence of the CP and the figure of the professionals were synthesized in only one person (who analyzes, program, type, compile, forehead, etc), the paradigm was changing and the focus was more on intelligibility, objectivity, among others.
  3. New technologies / hardware: as technologies (such as the emergence of the internet, mobile devices, etc.), new types of hardware, as well as different operating systems (Windows, Ios, Android, Linux) were evolving, it was realized that each case had a specific reality. Some companies created proprietary systems that did not accept pre-existing languages and required new languages to be used. Each new processor model created brings with it new rules, new features that had not been explored before. Theoretically you could do everything in a low-level language, but it would take years to do something that could be reduced to minutes in a high-level language.
  4. Idiosyncrasy: Over time and experience, many programmers were realizing that "this or that" in a given language could be done much better in another way... so many launched themselves into an "adventure" to create something new in order to facilitate and improve previous difficulties. And here come together the particularities of every human being who puts his way of thinking and his personal style in this new language. Take the example of Python which carries with it a series of ideas from its creator, which in turn resonated positively with several people who embraced this new form, which in turn transformed it into a language of success. But believe me, for every success, there are thousands of unknown failures out there.
  5. Future: I don’t think we’ll ever have a universal language as philosophically desired even for humanity. On the contrary, I think there will be more and more specialization, i.e., each monkey-in-its-branch, each language fulfilling (well) its function.

7

Among the different reasons we have:

  • Technological evolution. What was invented yesterday may no longer serve today. Today’s need may be different from yesterday’s need. This is one of the reasons that led to the creation of Java.

  • Existing languages may be insufficient or deficient to meet certain requirements. This is what made the object-oriented paradigm born and lead to the creation of languages that follow this paradigm.

  • There are specific niches that require special languages. An obvious example of this is SQL. Javascript was born like this, to be a specific language to run in the browser. PHP was also born like this. Another example is the C variant used in Arduino or the C# variant used in Unity.

  • Different people have different opinions about the structure of programming languages. For example, C has pointers and pointer arithmetic, but some people consider it bad, and that was one of the reasons that Java emerged. The ancient Basics were heavily attacked for not being structured (it was all based on Gotos and Gosubs). There is a "100-year war" going on between static typing and dynamic typing languages. One of Python’s inspirations was to use indentation to nest structures and consider that other languages had a very complicated structure. There are people who are more in favor of functional, there are people who prefer O, there are people who hate O, etc. And many other things enter this category.

  • Specific vendors. There are several programming languages that are developed by a single vendor. Hence comes a different vendor and suggests a similar language, but with some differences (some small, others large). Then another comes along and takes what was left of the predecessors and does another similar thing for their products... This is one of the reasons why there have been so many variations of Cobol, Basic and C, for example. Languages like D and C# were born like this. In more modern cases this tends to be more rare, but it still exists, as React.js can prove.

3

There was a very cool talk that I saw in Xconf this year from Luciano Ramalho and Rosi Teixeira from TW who talked a little about it.

The basic structure of programming logic has changed very little over the years.

Conditionals use IF, loops use FOR, While, for comparison use >,< =, ==, && and so on.

What happens is that the problems change as the years go by, the resources get better and there is a question of experience of the developer, hence the paradigms come up. As well as the type of communication (TCP/IP, SOAP, REST, Grpc).

Evolutions are going to happen, language that makes better use of resources is going to emerge and that is inevitable. Before we had server client architecture, came SOA, Microservices, serverless and this will never end!

Imagine what it would be like to develop a serverless architecture in Cobol? no chance.

New architectures will arise because there are new business needs.

As the time-to-market should be low, the developer’s experience should be good, because the delivery should be agile, the learning curve should be low.

I hear every day that Java is too verbose and Spring comes to help.

Today with half a dozen @ a dev can deliver a CRUD microservice.

Finally, new languages emerge to support new architectures, business needs and to meet the user experience.

  • The only reason something"serverless" does not work with COBOL is "serverless" server vendors do not support the technology.

  • I mean, no way!

-9

Each type of language is used for something specific, for example, the CSS language is used to style layouts, the HTML5 language is used to develop web pages, some languages have various purposes, such as C++ or Python that can be used to develop both home automation and AI, for example.

Each programming language has a different purpose, but most have been developed for problem solving.

  • 6

    CSS and HTML are not programming languages. Cite me a language that was not created for troubleshooting.

  • 2

    @Maniero, Whitespace! She was created for was the xD problem

  • @Maniero BIRL

Browser other questions tagged

You are not signed in. Login or sign up in order to post.