What if there could be only one?

May 1st, 2007

Suppose God awoke you one night as you slumbered on your keyboard (having collapsed in exhaustion from another all night coding session). God spoketh, “I am angry with you programmers for daring to out do my stunt at the tower of Babel! How dare you invent 10 times more (programming) languages than I did on that day! As your punishment for your great hubris I am imposing an inverse-Babel on your unholy profession. From this day onward for the next 40 years there shalt be only ONE programming language. I commandeth you to picketh which one that language shall be!”

Now, from a practical point of view, this scenario is ridiculous because even if there was a God I am sure he could not give a rat’s tuckus about programmers. Try to run with it anyway! If God asked you, which language would you pick? Be careful! You may be tempted to pick C. The thinking might be that with C you could simply start over and recreate the other missing languages! Sorry, God said no. Pick the language and that’s it for 40 years. Are you really willing to write all your shell scripts, database queries and XML transforms in C for the next 40 years?

Maybe you’d pick LISP? Certainly an improvement in many respects over C but what would happen to all those real-real time systems and 3D first person shooter games if everything became LISP? Could you live with yourself after the 100th multi-car pile up on the freeway after the GC kicked in on that embedded controller in charge of the ABS brakes!?!

Yes, this is a stupid question but trying to answer might teach you a thing or two about what you value as language user/connoisseur.

6 Responses to “What if there could be only one?”

  1. Kalani Thielen Says:

    >The thinking might be that with C you could
    >simply start over and recreate the other missing
    >languages! Sorry, God said no.

    Well how is God going to stop me? If he’s going to micromanage the way I write C code, let him come up with a procedure to determine whether arbitrary C code implements a compiler or interpreter.

    That seems like the more serious restriction to me — not being able to write interpreters or compilers — because I think that some of the best software has a unique interpreter or compiler at its core. Without that ability, I don’t think that we’d be programming anymore so much as transcribing legalese.

    Otherwise, without that restriction I’d probably pick some abstract (or concrete) assembly code. To use your example of a 3D game in Lisp — I think that can actually be a great idea (as “Crash Bandicoot” showed), but it would be a custom Lisp with lots of performance-oriented bits in C/abstract-assembly.

  2. smangano Says:

    You can write all the compilers or interpreters you want but don’t let God catch you coding in those new languages!

  3. smangano Says:

    In fairness I should go out on the same limb I am asking everyone else to and pick a language. My knee jerk answer might be to pick Forth but I’d immediately regret it afterward. Interestingly Forth’s inventor Charles Moore was partly motivated by the desire to create the ONE language (http://www.ultratechnology.com/). It is also interesting that Forth kind of meets Kalani’s criteria for a abstract assembly code if you don’t mind a stack based architecture.

    Another knee jerk reaction would be to pick Erlang. But I don’t have enough experience with it to really have the guts to go that route.

    So when push came to shove I’d ask God if he’d give me 24 hours to speck out a new language. After he stopped laughing and said “Okay you fool, let all future generations mock your name.” I’d basically take C, fix some broken pieces of it (enumerations and unions for instance) and give it a richer/safer macro language specification and call it a night.

    It could be worse. I could have picked Basic (or Powershell — you know I luv ya Doug!)

  4. Kalani Thielen Says:

    Sal,

    I think that Forth is a great choice, I hadn’t thought of that specifically. Abstract stack languages are pretty neat though, and they map well to real hardware instructions. Another language in that family that seems to be seeing a resurgence is Joy:

    http://en.wikipedia.org/wiki/Joy_(programming_language)

    According to some people’s definition, Joy and Forth are both in the family of “concatenative languages”:

    http://en.wikipedia.org/wiki/Concatenative_programming_language

    You might not like the ‘other’ language that Wikipedia claims belongs to that family. :)

  5. smangano Says:

    These concatenative languages are sort of like pipelines without the pipes |

  6. Sergey Lipnevich Says:

    D would be a better choice than C I think. My first pick is Python though, as I find myself writing the most readable working code in the shortest time even if I haven’t done any Python for months. One thing I know is that the choice of language should not be governed by popularity, otherwise this has too big a chance.