[partly from bits posted to FoRK and subtext mailing lists]

Most successful languages get adopted because they enable the
exploitation of something else (C for Unix, Lisp for Emacs or AutoCAD
or AI, Tcl for Tk, Perl for CGI or today for CPAN, Basic for
microcomputers, Turbo Pascal for a compiler), not because they are
superior to other languages people already know.  Basic, Visicalc,
Fortran, and COBOL succeeded largely because their adopters didn't
know any programming languages previously.

We're talking about software here, not bricklaying, and we're in the
Web era, where distribution is free.  If one skilled Lisp hacker
writes one widely-useful Lisp program, immediately millions of people
can use it, and if he chooses to tell them he wrote it in Lisp,
suddenly you will see dozens of people deciding to learn Lisp.  David
Roundy's darcs will probably do more for Haskell adoption than all the
academic papers; and that one guy's poker server will do more for
Erlang adoption than Joe Armstrong's thesis, his blog, and all his
papers, which themselves wouldn't have existed without various Erlang
applications.

Here's a list of programming languages and platforms and libraries
that aren't widely adopted despite having technical advantages and
free implementations: A+, the Apache Portable Runtime, NSPR, Berlin,
GLUT, Haskell, Ogg/Vorbis/Theora, DSSSL, S/S+/R, Graphviz, darcs,
Rake, Octave, wxWindows, Qt, the Boehm-Demers-Weiser garbage
collector, garbage collection in general, OCaml, Self, arch, LZO,
Python, Ruby, libart.

Here are a few pieces of software that I have on my laptop that could
have been written by one person in their spare time in any programming
language at all:

- a MIDI player
- a packet sniffer
- an HTML syntax checker and corrector
- a screen saver (I probably have more than a hundred)
- a file compressor
- a print queue manager
- a TrueType renderer
- an mDNS for Zeroconf implementation
- an RDF inference engine
- a parser generator
- an instant-messaging client
- a GUI package manager frontend for apt
- a bunch of audio processing LADSPA plugins
- a SQL database (actually I think I have four, but SQLite kind of had
  to be in C)
- an X window manager (I probably have ten)
- a secure MTA
- a touch-typing tutor
- an image file viewer (I probably have ten: zgv, pornview, gthumb,
  eog, display,...)
- an RDP client
- a caching HTTP proxy
- a roguelike game
- an NTP client
- sloccount, which counts source lines of code
- a diagram editor (Dia, similar to Visio)
- a mailreader
- an interactive numerical programming environment (I have
  Python+Numeric, R, Octave, tela...)
- a web programming environment (e.g. Rails)

Many of them were, in fact, written by one person in their spare time.

So why are they written in such a small number of languages?

Reply via email to