Imagine you were elected coroner of IEEE or somesuch governing body and you had to pronounce a programming language as dead. What signs would you look for? Are there any zombie languages out there that don't know they're already dead?
Computer languages never die; they only turn from overhyped to underused. Someone will always re-discover an old language and learn it, just for the fun of it.
Addendum: Those people who like older languages sometimes write a new language inspired by it. So even if the original language is dead by some people's terms, its spirit continues to live on in its descendants. Some examples include:
- B and BCPL inspired C
- SNOBOL inspired Icon
- Algol inspired too many languages to count
In linguistics, a dead language is defined as one which has no native or fluent speakers. I think this definition translates quite well in the programming sphere. A dead programming language is one that no programmer uses as their main language, or no system supports natively.
A language is dead when no one in their right mind would ever do a greenfield project in it. Just like dead human languages aren't completely irrelevant (because we study history), dead programming languages aren't completely irrelevant (because we maintain all that crufty historical code).
If I were the IEEE coroner, I'd look for the same signs linguists use to determine whether a natural language is dying/dead, viz.
- How many programmers still use the language?
- What is the average age of its users?
- What percentage of the youngest generation of programmers acquire fluency with the language?
Based on these criteria, I'd guess COBOL is moribund. Despite 220 bazilion LOC written in COBOL, according to this 2006 article in CW, the average age of COBOL programmers has got to be over 50 by now. While I couldn't find exact statistics, I'd guess the average Java programmer is in his/her 20s, by comparison. COBOL apologists point out that some 5B LOC are still written in COBOL annually, but I don't think this is a reliable measure: I could probably re-write 10 lines of COBOL in 1 line of Perl or a few keystrokes in J--COBOL is a fairly verbose language.
A programming language is not dead as long as you can find some sort of specification of it, from which you can create a compiler or an interpreter able to run programs on a working computer.
- How many books have been published about this language recently?
- How much chatter (IRC, e-mail, blogs) has been generated about this language recently?
- How many programmers un-ironically self-identify as natives of this language?
As someone pointed out, there's always a sect of people, either historians or crazies, that will go out and study dead languages for the hell of it. Dead languages are easier to find by raising this bar.
People opinions determine the deadiness
- Man walks into a hip, new geeky hi-tech area bar.
- Man starts talking about cool features in COBOL.
- People start backing away, giving you a wider and wider berth.
- People are smirking all around
- Man learns that COBOL seems pretty dead huh?
p.s. I was tempted to use 'woman' or person' instead of man but I don't want to imply that the [female] gender was related to it, was tempted to use 'person' but sounded weird given our history of "man walks into a bar" style jokes. Well anyway, at least I'm thinking about the stuff.
To me, there is a difference whether a committee has decided something is dead or something is dead to me.
For example, Forth per se is dead to me: there are not many current Forth projects I can learn from, there are not many active mailing lists or forums where I could ask for help, and there are not too many libraries available.
The Forth-like language, Factor, on the other hand seems to be a lot more alive. I would not call it dead even though it is not much less obscure than Forth.