“Is language X scalable? I heard that it isn’t”

A nonsensical question that is rarely qualified.

To quote Theo from his fine book

Languages aren’t slow; implementations of languages are.


Language selection and scalability have little to do with each other; architectural design and implementation strategy dictate how scalable a final product will be.

I couldn’t have put it better myself.

The point is simple.

Just because a given language may be slower (note the “er”, that makes this a relative term) in parsing XML doesn’t mean that

  1. it’s fundamentally slow (an absolute term),
  2. that as part of a web stack it can’t do 10,000 requests/second, and
  3. simply tells you something about it’s performance in a given situation not about it’s “scalability”.

In case you’re wondering, I just got off a call where I was asked this question not about Ruby but about Java. Interesting.

One response to ““Is language X scalable? I heard that it isn’t””

  1. Hmmm.

    Yes and no and way too brief to really make the point clear.

    All other things being equal, some languages are slower than others regardless of implementation because the semantics they afford are just inherently slower.

    The same is true of scalability where a language may or may not provide support that makes scalability either easier or even possible. Usually, but not always, we’re talking horizontal scalability. For example, erlang and something like Persistent Datarush both have a lot of built-in scalability relative to many pure procedural languages. It isn’t meaningless at all to consider that, particularly if you take a look at the many articles about the multicore meme that are making their way across the blogosphere.

    If, OTOH, the languages are intended for roughly the same domain (e.g. if its anything anyone would should even be trying to hit 10K requests/sec with), it is probably in at least a similar ballpark to its peer languages because they all need to support the same semantics for the task. Hence one might argue Ruby and Java are in the same ballpark for many problems.

    Even still, I don’t know why it would be crazy at all to ask the question nor why you wouldn’t want to give the asker something a little more helpful to go on. If nothing else, rather than tell the asker their question is nonsensical and immediately put them off, why not ask them what context they had in mind or how they came by the impression one language was more scalable than another?