If you want to be a thorough-going world traveler, you need to
learn 6,912 ways to say "Where is the toilet,
please?" That's the number of languages known to be
spoken by the peoples of planet Earth, according to
Ethnologue.com.
If you want to be the complete
polyglot programmer, you also have quite a challenge ahead
of you, learning all the ways to say:
printf("hello,
world\n") ;
(This one is in C.) A catalog maintained by
Bill Kinnersley of the University of Kansas lists about
2,500 programming languages. Another survey, compiled by
Diarmuid Piggott, puts the total even higher, at more than
8,500. And keep in mind that whereas human languages have
had millennia to evolve and diversify, all the computer
languages have sprung up in just 50 years. Even by the
more-conservative standards of the Kinnersley count, that means
we've been inventing one language a week, on average, ever since
Fortran.
For ethnologists, linguistic diversity is a cultural
resource to be nurtured and preserved, much like
biodiversity. All human languages are valuable; the more the
better. That attitude of detached reverence is harder to
sustain when it comes to computer languages, which are
products of design or engineering rather than evolution. The
creators of a new programming language are not just adding
variety for its own sake; they are trying to make something
demonstrably better. But the very fact that the proliferation of
languages goes on and on argues that we still haven't gotten it
right. We still don't know the best notation—or even a
good-enough notation—for expressing an algorithm or
defining a data structure.
There are programmers of
my acquaintance who will dispute that last statement. I
expect to hear from them. They will argue—zealously,
ardently, vehemently—that we have indeed found the
right programming language, and for me to claim otherwise is
willful ignorance. The one true language may not yet be
perfect, they'll concede, but it's built on a sound foundation
and solves the main problems, and now we should all work
together to refine and improve it. The catch, of course, is
that each of these friends will favor a different language.
It's Lisp, says one. No, it's Python. It's Ruby. It's Java,
C#, Lua, Haskell, Prolog, Curl.
Sadly, linguistic
diversity has a dark side. Communities separated by
differences of language don't always get along peaceably; the
term "Balkanization" comes to mind. And, like weary,
war-torn countries, the computing professions have had their
share of sectarian strife and schism. As far as I know, the
conflicts have never come to actual bloodshed, but harsh
words have been exchanged (in many languages).