Indentations and future evolution of languages

Steven D'Aprano steve at
Fri Mar 6 03:31:35 CET 2009

bearophileHUGS at wrote:

> This is an interesting post, it shows me that fitness plateau where
> design of Python syntax lives is really small, you can't design
> something just similar:
> Living on a small fitness plateau isn't good, even if it's very high,
> because it's evolutionary unstable :-(

You're assuming that (1) evolutionary changes occur at random, and (2)
there's value in there being many similar species/languages sharing a
fitness plateau.

Neither of those necessarily follow. Few languages (if any) undergo random
mutation -- a better model for programming language evolution is directed
mutation and artificial selection rather than evolution by natural
selection with random mutation.

It's very rare (non-existent) for two species to share a niche, and
therefore co-exist in a fitness plateau. Due to network effects, much the
same happens for languages: a few popular languages (e.g. C, Java, Perl)
overwhelmingly capture a market. Given the popularity of
Python, "Python-like" languages will be doomed to tiny niches -- unless the
language discovers some sort of distinguishing feature that shifts them
into a different, but similar, fitness plateau, where they can capture a
market large enough to get their own network effort, or if the original
language becomes moribund.

E.g. some hypothetical Python clone with optional braces might take off,
thus proving that all the l^H users begging for braces were right. Or the
shift to multi-core processors and Guido's reluctance/inability to remove
the GIL might doom Python to only being useful on an ever-shrinking pool of
single-core CPUs.

> Indentation-wise Haskell syntax seems one of the very few local maxima
> that is close enough to the little fitness plateau where Python is.

If the article is right, there is a fundamental incompatibility between
indentation-sensitive languages and languages with multi-line anonymous
blocks. You can have one, or the other, but not both, unless you're willing
to have a "practicality beats purity" trade-off and create a second way of
grouping blocks, and who knows whether that will turn out to *actually* be

That doesn't say anything about the narrowness of the Python fitness
plateau. There could be room for a dozen languages with the same approach
to indentation as Python.


More information about the Python-list mailing list