Conservatism of Programming Languages
The C lineage of languages stubbornly refuse to die. C was built up from the very simple concepts of assembly language (which of course is just a representation of machine code). C++, Java, C#, Objective-C, etc. were built primarily upon C. On the other hand, Smalltalk and LISP first started with abstract ideals and then were forcibly mapped onto the less-than-ideal machines below. The C lineage continues to enjoy almost universal popularity while the Smalltalk and LISP lineages seem to languish by comparison - even though there’s theoretically many advantages to the purity of a top-down approach to language design.
Smalltalk and LISP proponents tend to put forth that their systems were so much more advanced from the start that the mainstream languages haven’t caught up yet. There might be some truth to this - after all, both C++ and Objective-C (and Java, etc) all owe a great deal to Smalltalk and LISP. Even so, they are clearly of the C lineage of languages. Is this simply a reflection of the idea that learning a language that is a derivative of the language you already knew is easier than learning one that’s got an entirely different root? Or is it that an incremental improvement of past methods is considered the safer choice when pitted against a clean slate approach?
I think it’s interesting that the languages that seem to persist in popularity have evolved much like human languages. Just as english is based on many of the languages that came before it, the C lineage was based on assembly which is based on machine code which is a reflection of how the physical hardware works. Smalltalk and LISP started at the other end of the evolutionary chain. Instead of working with the state of the world as it was and adding a little something to it, they instead chose to try to reshape the world to their ideals.
These two opposing approaches to language design parallel other things seen in human culture. In many ways, it is the same attribute that divides liberals and conservatives: Liberals are always pushing to change, expand, and try new things whereas conservatives, by definition, are cautious of change and treat tradition and past knowledge as a kind of safety net.
Like a typical Neal Stephenson novel… I’ll just end this here in the middle…
I had more thoughts, but they suddenly escaped me. Oh well.