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?
Software Engineering Stack Exchange is a question and answer site for professionals, academics, and students working within the systems development life cycle. It only takes a minute to sign up.
Sign up to join this communityWhy 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?
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
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...
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.
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.
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.
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.
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.
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.
Quick Short Answer
Reinventing The Wheel ... What is the current trend ...
Boring Long Answer
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 ...
And, if there is a new trend on technology, people may make a new programming language based on that trend, like ecmascript / javascript for the web and functional programming ...
Cheers.
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.
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.
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.
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.
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.
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!