Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Why are there so many programming languages?

And what prompts someone to create a programming languages in spite of the fact that other languages already exist?

share|improve this question
    
an entertaining video on this topic is "The last programming language" by Uncle Bob Martin (skillsmatter.com/podcast/agile-testing/bobs-last-language) –  mikera Nov 25 '11 at 8:18
    
Because programmers like tools. –  haylem Nov 14 '12 at 13:20
    
Same question on Computer Science. –  Kaveh Apr 22 '13 at 19:40
add comment

closed as not constructive by Walter, Thomas Owens Nov 15 '12 at 21:24

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

15 Answers

up vote 28 down vote accepted

Programming languages evolve

New programming languages often learn from existing languages and add, remove and combine features in a new way. There is a few different paradigms like object oriented and functional and many modern languages try to mix features from them both.

There is also new problems that needs to be solved, e.g. the increase of multi-core CPUs. The most common solution to that have been threads, but some programming languages try to solve the concurrency problem in a different way e.g. the Actor Model. See Erlang - Software for a Concurrent World

share|improve this answer
9  
What's interesting about Erlang is that it's a "clean room reinvention" of the Actor model. When Armstrong and friends developed Erlang they didn't know about Hewitt et al's work on the Actor model! –  Frank Shearar Sep 27 '10 at 12:54
    
@Frank: That's interesting. I didn't know that, thanks. –  Jonas Sep 27 '10 at 22:24
1  
+1 for evolution. An analogous question might be "Why are there so many species of animals and plants? Why do new ones still appear?" –  Gary Buyn Jun 17 '11 at 0:59
1  
@GaryBuyn that's only a "+1 for evolution" if you subscribe to that viewpoint. For many, the animal analogy is a tiny bit too far. –  Darknight Nov 15 '12 at 9:27
add comment

It is a cycle. You start a new language, and you are free to get away from all of the bad syntax and poor choices from your predecessors. In version 1, the language looks great because it doesn't have any of that baggage, and it gets the job done. Then, in newer versions, you start to experiment with features that may not work out, or you bring in features from other, newer languages that cause your syntax to be a little kludgey. Lo and behold, after a few more versions, you realize that your language is now as complicated as the one you replaced, with silly syntax issues and legacy baggage. And suddenly, you realize that if you created a new language, you could fix all that...

share|improve this answer
1  
This definitely is true for libraries, frameworks and software, but I personally don't know of a language this applies to. Do you have examples? –  back2dos Sep 27 '10 at 14:21
13  
Well, I think both C# and Java were introduced at least in part to address complexities with C++. And now, if you look at both of those languages several versions later, their syntax and feature sets are getting complex enough where people are starting to talk about them being "over the hill". Just my take on it though I can't prove anything. :-) –  RationalGeek Sep 27 '10 at 14:45
1  
Good point, but i think another fact is at play with C# - it's a commercial product which doesn't exist for charitable reasons and for market acceptance / keeping your customers products have to be "improved" for new releases etc. –  g.f Sep 27 '10 at 15:36
    
This is true. The drive to add new features in order to get more money from the market certainly cannot be ignored. However, it is a double-edged sword. You can expect new features from a commercially-backed product for this exact reason. But from an open source product, you only get new features for as long as the volunteer army stays interested, and there is someone of skill at the helm to herd the cats. –  RationalGeek Sep 27 '10 at 16:43
    
C# has plenty of features, but it's still a cleaner language than C++. Newer additions such as LINQ allow you to do things cleanly that you can't easily do in C++. I think it's more likely that there's two kinds of conservation of complexity - one where some complexity is inherent in a problem, and one where as you eliminate one kind of redundant complexity from your programs, the requirements get more complex - complexity, like data, expands to fill the "space" available. –  Steve314 Jun 17 '11 at 1:15
show 1 more comment

For the same reason there are hammers, screwdrivers, handsaws, bandsaws, jackhammers, crowbars, and a host of other tools: not every language is perfect for every task. Some languages are targeted at specific problem domains: R is particularly good for statistical analysis, C is particularly good for writing operating system kernels, Haskell is particularly good for math-heavy or financial computations, Erlang is particularly good at concurrent programming, etc.

Also, for the same reason that shirts come in different colors: some people just like the "style" of one language over another.

And, of course, a lot of programmers find it fun to invent a new language, just to see what happens, or perhaps because they have some knowledge about languages and want to scratch an itch, or try out some ideas.

share|improve this answer
    
Not only are there all those construction tools, but there are even many different kinds of hammers and hammers that look similar but have specific design factors that make them better for different jobs or users. –  Barry Brown Jun 17 '11 at 4:32
    
+1 For suitability for problem domains. The academics who study tools in general say that a very general tool is less powerful than a specific tool for a specific task. Think about an adjustable spanner vs. a fixed size spanner –  MarkJ Jun 17 '11 at 8:42
add comment

Legacy Code. If you start a new language you don't have to listen/consider all the complaints when you change an old language. Even if everyone agrees that the new implementation is better, it can't break the old code. And there is a lot of old code out there.

share|improve this answer
2  
Is there any documented case of a language being designed to avoid legacy code? This claim seems highly unlikely. I can see the case where you want to start fresh (.net comes to mind) but it's not so much to avoid legacy code but to better enable future code. –  Bryan Oakley Jun 16 '11 at 23:49
    
I don't believe that this correct. Its (usually) possible to fork an open source implementation of an existent language. –  alternative Jun 16 '11 at 23:51
    
@BryanOakley - originally .NET was intended to keep backward compatibility with VB6, but they decided it was too hard a problem. .NET still had a lot of legacy WRT Java/J++ that it was based on. I think D is an example of a language designed against legacy code. –  gbjbaanb Aug 20 '12 at 16:28
add comment

Because they all suck (one way or the other).

Right now, we have created about 5000 languages to describe natural problems and none of them are available to write programs (an example would be "English").

Until someone finds a way to create a programming language that can express what you can express in a sentence in a natural language, they will keep coming.

share|improve this answer
10  
Even then, they will keep coming. Only dead languages are written in stone, pardon the pun. There is a reason living languages are constantly changing. –  R. Martinho Fernandes Sep 27 '10 at 17:15
    
Some would claim that the natural language to express problems is math. This raises the question of why people keep adding syntactic sugar to functional languages rather than using the pure lambda calculus. I think the problems we have to routinely solve often aren't easily expressed in either English or math either. –  Steve314 Jun 17 '11 at 1:18
4  
Agreed. It's so hard to express "I'm hungry" using pure math. –  Aaron Digulla Jun 20 '11 at 7:32
    
@AaronDigulla : hungry = sum(belly/food) surely :) –  gbjbaanb Aug 20 '12 at 16:31
    
@AaronDigulla that's a good example, often you want to express computation. So we take a given scenario like: I'm hungry , now eat -> fine, now not eat -> starve . To build systems beeing able to negotiate or expand context I think that's the goal of AI. Normal programing languages only express what people tell them what they should do and usually that's rather specific than general. But since most problems are themselves specific you may see the problem here. –  AndreasScheinert Nov 15 '12 at 9:03
show 5 more comments

Obviously one important motivation for creating a new language is to achieve something better than the already existing languages. And as there is always room for improvement, there will always be new languages.

Commercial interests are another big reason. I believe it is important for example Microsoft that they can offer a language for every need so companies and developers prefer their platforms.

share|improve this answer
add comment

because it's fun to create new languages even if they have no real use

An esoteric programming language (sometimes shortened to esolang) is a programming language designed to test the boundaries of computer programming language design, as a proof of concept, or as a joke.

share|improve this answer
1  
For those who didn't get down to the footnotes in the wikipedia article, the esoteric languages wiki is a lot of fun: esoteric.voxelperfect.net/wiki/Main_Page –  David Winslow Feb 15 '11 at 1:15
    
would you mind explaining more on what it does and why do you recommend it as answering the question asked? "Link-only answers" are not quite welcome at Stack Exchange –  gnat Sep 26 '13 at 9:18
    
@gnat I honestly think the original text is not a link only answer, it would stand as a short but perfectly valid answer without the link. But given that the link does add flavour, I've included a short quote from it. –  jk. Sep 26 '13 at 9:46
add comment

Creating a programming language is rather fun. It's close to pure creative work, since you aren't limited to previous requirements. It's not that difficult to implement any more, since you can always compile to C and compile the C code for adequate performance if you're writing a compiler in the first place.

Of course, most of us have fewer good ideas than we think we have, so they often wind up being disappointing, or not being loved by anybody other than the original designer.

Think about any programming language you know. You can easily come up with several things you dislike about it, right? You presumably have ideas how those could be fixed. With just a little more impetus, assuming you know much about compiler building (and lots of people do), you might start designing and even implementing your own.

share|improve this answer
add comment

new programming languages are built for many different reasons, mostly because there are new programming paradigm, or because of advances in hardware people create new language to take advantage of the new hardware features like multitasking, etc.

in my case, I usually build small compilers( with a new programming language), for specialty reason. if I make allot of games, and I believe that a programming language specifically made for game development will result in smaller faster code and faster development turn around, then I build it. and at then end it turns out that it can also be used for other general purpose programming.

I think most people who create programming languages have a specific purpose in mind, there are those who create them for general purpose from the beginning. but most are not.

By the way, I do think there are way too many programming languages, but hundred of new ones will always come out. some out of fun, some out of a niche purpose, as a school project, or for hundreds of other reasons. and sooner or later a new one will become popular. Its never going to end.

share|improve this answer
add comment

For the same reason there are so many <whatever> and we keep creating new <whatever>

There are a dozen PHP MVC frameworks, for example, but people will always create new ones to fill specific needs, to avoid becoming dependent on some other team, or just to try and create something better. The same holds true for basically every type of tool or application.

It's a very good thing, pretty much a win-win for everyone in my opinion.

share|improve this answer
    
NIH syndrome = not generally useful for the IT industry at all. –  gbjbaanb Aug 20 '12 at 16:32
add comment

Universities contribute a lot of programming languages, and so do very large corporations like Ericsson (Erlang = Ericsson language), Bell Labs (B and C languages), Google (Go language as of a few months prior). Many of the ones that were written as part of university research aren't used much. There are a few notable exceptions, though. I suppose writing your own language/compiler makes a good topic for PhD theses of people studying CS Theory or related disciplines. It strikes me that Python is one of the first languages to be born out of the collaborative online effort of various programmers around a single idea.

share|improve this answer
    
python-history.blogspot.com/2009/01/… describes the birth of Python in detail –  Andy Dent Sep 28 '10 at 4:32
add comment

There are a few reasons, most are because people think that what exists does not make it easy to solve some set of problems. Some are just for fun or for academic interest.

I think there is a solid argument that the issue of how you design the perfect language is not yet solved (and may never be). So as long as people have new ideas on what would make a great language people will keep trying. Some of those tries will map out cool new space like Erlang and some will flop, but as long as something is learned from the flop that is OK too.

share|improve this answer
add comment

Many people forget that "another similar new language for old programmers" is "a plain new language for new programmers".

What do I mean for that ?

Well, for "several years" programmers, Java or C# may be an additional programming languages to existing Cobol, (O.O./Procedural) Basic, C/C++, while for "new" programmers, Java or C# are new languages, while Cobol, (O.O./Procedural) Basic, C/C++ doesn't exist for them, so reinventing the wheel becomes a common thing...

share|improve this answer
add comment

Like previously stated, languages try to target certain specific tasks and the new languages might target a new area. These languages can take features from other languages that are currently out.

Another reason for new languages is trying to incorporate many different tasks and to be the language of choice for many different needs. Some of these languages are trying to be all encompassing languages that you would always use, no matter the need you have.

share|improve this answer
add comment

I learned in my programming languages class that most languages were invented to scratch an itch. Most languages were invented to be able to express some set of algorithms better. For instance, functional languages were invented to give recursive algorithms a much more expressive space.

Asking why are there so many languages is like asking why C++0x? :)

Plus, the more languages you know, the more expressive you can become - this is true in both programming and natural languages!

share|improve this answer
add comment

protected by maple_shaft Nov 14 '12 at 13:28

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.