"Scalable" programming languages

Posted by David N. Welton Thu, 26 Mar 2009 20:06:00 GMT

A thought occurred to me a while ago, and I thought I'd write it up:

Some languages are better at others for Really Big Systems, those with hundreds, or perhaps even thousands of people who work on them. They allow people to divy up work without stepping on one anothers' toes. Other languages are great for writing quick little hacks or small, one-off programs to just get something done. Generally, people talk about the former as 'scaling well', but there's an important point missing there: for most people, what really counts is not the absolute upper limit, but the range of problems a language can handle. To haul out the poor, bedraggled transportation example once again, some things, like Boeing 747's, are pretty good if you have to fly halfway around the world. They're not so good if you need to pop out to the grocery store for milk. Bicycles are a great way of getting around the congested streets of the Italian town I live in, but a little less useful once you start talking about distances upwards of 10 km. Cars, on the other hand, are popular because they're pretty good at a lot of things. It might be a lot slower than flying, but you could drive from Oregon to Maine if you needed to. A car might not be quite as convenient as a bike or scooter in downtown Padova, but you can still use it. So the car, while ultimately being inferior to the 747 in terms of its upper range, is way more flexible. I think the same thing generally holds true for languages. Java is seen as being good for big, 'enterprisey' sorts of things... and it probably is - it has a lot of mechanisms to keep people from getting in one another's ways. On the other hand, writing a quick sysadmin program in Java is, at least for me, not all that fun compared to a language like Tcl or Ruby. Tcl is more or less in the opposite corner. Sure, if you know what you're doing, you can write massive programs with it, but it's probably not its sweet spot. Currently, I'm pretty happy with where Ruby is: it lets me do the simple stuff quickly and easily, and has decent mechanisms for growing and organizing a codebase, although of course you have to be careful with things like reopening classes ("monkeypatching") lest they interfere with the work of others.

4 comments |

Trackbacks

Use the following link to trackback from your own site:
http://journal.dedasys.com/trackbacks?article_id=2142

  1. chromatic
    about 10 hours later:

    That's an important insight many people miss. I believe it's equally as important for language designers not to box their language into a particular niche without a very good reason. Java escaped from embedded programming, Pascal escaped from teaching, and PHP has tried to escape from web programming.

  2. Chris Frohoff
    about 11 hours later:

    A post about scalable languages with no mention of Sca(lable)la(nguage) http://www.scala-lang.org/?

  3. David Welton
    about 13 hours later:

    Chris, I have only barely glanced at Scala, so I have no idea where it fits on that scale, although being able to take advantage of Java is certainly helpful.

  4. Dan Schaefer
    3 days later:

    Hey David, I like your analogy of the car vs bike vs 747. Ruby is the "car", while - IMHO - TCL is more like a scooter. In any case, I agree that Ruby seems to hit the sweet spot. I've been using it for over a year, and I'm continually fascinated by the number and range of problems it can solve.