[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?

