Table14.1 gives a rough indication of today's
distribution of language usage. We give figures from both
SourceForge[128] and Freshmeat,[129] the two most important
new-release sites, as of March 2003.
The SourceForge figures are soft in several ways: Notably,
SourceForge's query interface doesn't permit filtering on OS and
language simultaneously, so some of these numbers represent MacOS and
Windows projects. The effect is probably to exaggerate
C++ and
Java's share
considerably. However, Unix-based projects dominate sufficiently (by
about a 3:1 ratio) so that the effect on the figures for languages other
than these is probably not too distorting.
The Freshmeat sample is smaller, but the site hosts only
Unix-based releases — and it counts actual releases, not the
huge clutter of failed and inactive SourceForge projects. It is thus
interesting that the population figures track SourceForge's by about a
1:2 ratio except in precisely the cases (C++ and Java) where we would
expect them to be out of proportion because of the absence of Windows
projects.
Table14.1.Language choices.
Language |
SourceForge |
Freshmeat |
C |
10296 |
4845 |
C++ |
9880 |
2098 |
Shell |
1058 |
487 |
Perl |
4394 |
2508 |
Tcl |
649 |
328 |
Python |
2222 |
948 |
Java |
8032 |
1900 |
Emacs Lisp |
? |
31 |
This chapter was first drafted in 1997; at time of writing
it is mid-2003. That is a long enough time base that the relative
positions of the languages we surveyed above have changed somewhat
since first writing, indicating adoption trends that may suggest
what their futures will be like. (Community size is an important
predictor of the quality and amount of work that will go into
improving the most-used open-source implementations of these
languages; both growth and decline tend to be
self-reinforcing.)
Broadly speaking, C and C++ and Emacs Lisp have remained stable across the
1997-2003 time period, appealing to much the same constituencies in
2003 as they did in 1997. C has gained slowly at the expense of older
conventional languages such as FORTRAN; C++, on the other hand, has
lost some ground to Java.
Perl
usage has grown respectably, but the language itself has been stagnant
for some time. Perl's internals are notoriously grubby; it's been
understood for years that the language's implementation needs to be
rewritten from scratch, but an attempt in 1999 failed and another
seems presently stalled in mid-2003. Nevertheless, Perl is still
the 800-pound gorilla of scripting
languages, and dominates Web scripting and
CGI.
Tcl has
been in a period of relative decline, or at least of diminishing
visibility. In 1996 a widely-reported and plausible estimate of
community sizes held that for every Python hacker there were five
Tcl hackers and
twelve Perl
hackers. Today the SourceForge figures suggest those ratios are about
3:1:7. However, Tcl is reported to be very widely used for scripting
of specialized components in several industries, including electronic
design automation, radio and television broadcasting, and the film
industry.
Python
has risen in popularity as rapidly as Tcl has fallen. Though the
Perl community
is still twice the size of Python's, a visible tendency of the
brightest Perl hackers to migrate to Python has been rather ominous
for the former language — especially as there is no migration at
all in the opposite direction.
Java has
become widely used at sites already invested in Sun
Microsystems
technology and is in increasing deployment as an instructional
language in undergraduate computer science curricula. Elsewhere,
however, it is only marginally more popular than it was in 1997. Sun's
determination to stick to a proprietary licensing model has prevented
the major breakout many observers then predicted; under
Linux
and in the wider open-source community Java has not made the headway
against C that it has elsewhere.
No new general-purpose language has emerged to seriously
challenge those we've surveyed here. PHP is making inroads in Web
development, challenging Perl CGIs (as well as ASP and server-side
Java) but is
almost never used for standalone programming. Non-Emacs
Lisp dialects,
a once-promising area that seemed headed for a renaissance in the
mid-1990s, have continued to fade. Recent efforts such as Ruby (a sort
of Python-Perl-Smalltalk cross developed in Japan) and Squeak (an
open-source Smalltalk port) look promising, but have so far neither
attracted hackers far outside their development groups nor
demonstrated staying power.