7

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?

11
  • 1
    I know, right? Why do we need any new programming languages when there's already HTML? Aug 31, 2011 at 17:55
  • 2
    Each and every problem deserves its own programming language. By definition. So, there must be at least as many languages as problem domains.
    – SK-logic
    Aug 31, 2011 at 18:12
  • 1
    And there is also an infinite pool of possible (and necessary) languages: en.wikipedia.org/wiki/Domain-specific_language
    – SK-logic
    Aug 31, 2011 at 18:19
  • 3
    Everyone knows that in Garden of Eden, you'll find Lisp. Or Perl? xkcd.com/224 Aug 31, 2011 at 18:20
  • 2
    Aren't the different flavours of pie just redundant? Why not make everyone eat the same pie? It's all pie after all!
    – user7043
    Aug 31, 2011 at 18:42

4 Answers 4

21

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#.

10
  • 1
    Now we are reaching the point. Thanks for your answer. Aug 31, 2011 at 18:59
  • 2
    @DeadMG: I didn't mean exactly as fast. I meant that it's not orders of magnitude slower like an interpreted language. Yes, it's slower for some things but the difference is peanuts compared to the difference between e.g. C++ and Ruby.
    – dsimcha
    Aug 31, 2011 at 19:40
  • 3
    @Keyne: Simplicity vs. expressiveness examples: Making a single-function class that implements a single-function interface vs. lambda expressions. Lambdas complicate the language but allow you to say more with less code. Another example: Generics vs. real templates.
    – dsimcha
    Aug 31, 2011 at 20:16
  • 1
    +1, very nice comprehension about the top ten of most popular languages today, you only forgot COBOL ;-)
    – Doc Brown
    Aug 31, 2011 at 21:29
  • 3
    @Doc: Uh, COBOL's niche was a boring business language for pointy-haired bosses that prefer as much verbosity as possible. It was superseded by Java when they figured out that, with the proper frameworks, Java can be more verbose than COBOL.
    – dsimcha
    Sep 1, 2011 at 3:03
7

The problem with this is that different programmers prefer or even need to think in different ways. For example, I personally would discontinue pretty much every interpreted implementation or dynamically typed language, as I simply don't see the need for them and vastly prefer statically typed compiled implementation languages. And then I would discontinue every language without deterministic destruction or where you can't choose per instance how to allocate your memory- which pretty much just leaves C++. But another programmer might find that suddenly he doesn't have the tools he needs. Not everyone is up to the same challenges. Some people prefer debugging type errors in run-time type languages to debugging wrong overload errors in statically typed languages.

Edit for clarity: If you ask two programmers what languages matter, you'll get three different answers.

10
  • 9
    This man does his scripting in C++!
    – Raynos
    Aug 31, 2011 at 17:49
  • I need scripting?
    – DeadMG
    Aug 31, 2011 at 17:51
  • 1
    What do they know of C++, who only C++ know? Or was that England?
    – jimwise
    Aug 31, 2011 at 18:11
  • 2
    @DeadMG, you're coding your configuration and build systems in C++?!?
    – SK-logic
    Aug 31, 2011 at 18:13
  • 2
    @Keyne: Note that this answer doesn't say "Every language except C++ is redundant". It says "ask two programmers which languages matter and you'll get three different answers". (Or at least I hope so...)
    – user7043
    Aug 31, 2011 at 18:40
3

Yes, they are terribly redundant. If we would all just use the best programming language, the others could fall by the wayside. Now, if we could just agree on what the best programming language was...

Jokes aside, there are good reasons for there to be many programming languages:

a.) a programming language which is good for low-level bit-bashing may (and usually does) lack higher-level abstractions, making it poorly suited for programming in the large

b.) a programming language with high level abstractions will often depend on a very heavyweight runtime environment (often even a complete virtual machine environment written in another language), and thus cannot be used directly for bare-metal programming (or even for native code generation)

c.) different programming languages often encourage very different ways of thinking about a problem -- and since there are many different kinds of problem in the world, some languages and problems make natural pairings, while other pairings may be awkward or even unusable (beyond the `turing tarpit' level at which any language could be used for any purpose).

4
  • Agree, but still think that in each of these three categories, we possibly have redundancy. We will not compare a low-level programming language like assembly with a high-level, but, for example, what's the difference between Python and PHP? See wiki.python.org/moin/PythonVsPhp Seems like both can be merged. Don't you think? Aug 31, 2011 at 17:57
  • @Keyne, Python and PHP are a way too different, and used for solving extremely different problems. It would be nearly idiotic to code, say, Mailman in PHP.
    – SK-logic
    Aug 31, 2011 at 18:15
  • Yes, their implementation are very different. But from the user point of view, do we need both, or their functionalities can be merged in one? (Just pretending) Aug 31, 2011 at 18:26
  • @Keyne: Apart from the fact that language semantics and libraries are wholly different and incompatible, at least a third, if not more, of the people who program in either language have their reasons not to use the other.
    – user7043
    Aug 31, 2011 at 18:36
2

The only language I know that came from competition was J++ from Microsoft and that was killed in 2004.

A lot of languages are created to fit a particular need by the author. Examples of this are Perl and Ruby.


Perl was created by Larry Wall in 1987 to make report processing easier. Ruby was created by Yukihiro Matsumoto because of discontent with other languages. He wanted to make a "...scripting language that was more powerful than Perl, and more object-oriented than Python...".

7
  • Which are the specifics of these two languages? Aug 31, 2011 at 17:49
  • 1
    Keyne: As I recall, Perl was designed to be very good at text manipulation, I think the name originally derived from Practical Extraction and Reporting Language. Aug 31, 2011 at 17:59
  • @Keyne - I updated my answer.
    – Jetti
    Aug 31, 2011 at 18:07
  • So are Ruby, Perl and Python redundant, since Ruby came on the scene to do a better job? Aug 31, 2011 at 18:23
  • It doesn't come on to do a "better job", only to be "more object-oriented". That doesn't equate to better, just different.
    – Jetti
    Aug 31, 2011 at 18:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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