Programming Languages – Are They Redundant?

programming-languages

Off course this doesn't apply to all languages. But I was wondering if some languages only exists due to the market culture of concurrence.

For example, we all know that C is widely used for built in and light weight systems. And, as far as I know, no one bit them.

But how about JAVA, C#, Ruby, PHP, ASP.NET, Python, Perl and son on?

I know that PHP is much more light weight then ASP.NET and JAVA and some would say it is its differential, because you can deploy applications much faster. Others would say that, despite that, in the future, you'll realize that you'll need a more robust language.

There are different cases, like in the twitter case, using SCALA.

What would you say if, for example, tomorrow you wakeup in Garden of Eden, where everyone works together without competitors. Which programming languages would you merge or discontinue?

My point is: Is there programming languages that exists only due to competition or all of them have very specific applications and cannot be thrown away or have their functionality merged?

Best Answer

Yes, different programming languages are redundant to a large degree, but this is not necessarily a bad thing. Programming languages that succeed usually become entrenched and are virtually impossible to change. (An exception that proves the rule is C++1x, where change is absolutely glacial.) When this happens, new languages that are somewhat redundant but improve the old language comes along to learn from the mistakes and bring in the best of other paradigms. Often there's disagreement about what exactly the good and bad of the old language is and what the best features of other paradigms are, so there needs to be multiple new languages to try out a variety of approaches. If you need compatibility and stability you use the old language. If you need productivity, cool new features and less cruft, you one of the new languages. Examples:

  1. C is a great language for low-level bit bashing. C++ added basically every productivity feature that could be added onto C without major loss of backwards compatibility, with zero overhead, and within the bounds of compiler technology at the time. D and Go are attempts to make a better systems programming language based on what's been learned since C++ became entrenched, with more modern compiler technology, and with small but nonzero overhead that's more acceptable nowadays than when C++ was created. D focuses more metaprogramming and expressiveness and being a better C++, Go focuses more on simplicity and being a better C.

  2. BASIC was among the earliest attempts at a high-level dynamic language, but was too limited to be very useful. Perl made dynamic languages useful for real work, but accumulated tons of cruft because it evolved more than it was designed. Python and Ruby try to take the best of Perl and make a language with a cleaner, more consistent design. Of course the designers of Python and Ruby have somewhat different ideas about what the good parts of Perl are.

  3. Java pioneered the idea of an industrial strength VM language with super-efficient garbage collection that can easily be JIT compiled into code with performance comparable to native. They arguably went overboard favoring simplicity over expressiveness, but it's too late to change. C# is kind of similar to Java, but being new had much more freedom to innovate and make the language more expressive.

  4. Functional flavored languages used to have a very academic, steep-learning-curve feel, despite their advantages in terms of reasoning about code and concurrency and in some cases terseness. Recent attempts to make them more approachable and real-world oriented include Scala and F#.

Related Topic