As lamented on AllPanaceasBecomePoison
, part of what poisons a language is that if it's got any real power it soon grows ExtremelyInterstrangled
. Well, political woes aside, that doesn't seem to have happened to lisp and smalltalk. How come?
I suggest it has to do with the SymmetryOfLanguage of these two.
I think the SymmetryOfLanguage
factor is required, but not sufficient. There is a another, deeper reason: Lisp is, at its core, a syntax designed to work with a simple but powerful computational model. (Smalltalk and Forth seem to be similar in this regard - I know Lisp better, but I know enough of Smalltalk and Forth to see this property). The fundamental model of Lisp (or its "design center", as referred to on AllPanaceasBecomePoison
) is right there, in your face, with every single statement/expression you write. You can't lose sight of it, or drift away from it, and still be able to use the language.
I'm guessing that everyone who seriously uses Lisp, Smalltalk, and Forth knows how they work, and understands that any significant tinkering with it will result in a very different language. Therefore, there is and likely always will be a clearly articulated and generally accepted design center for these languages.
to this then allows any programmer to extend these languages' libraries as he sees fit, and to use his extensions just like the stuff that's already built-in. Therefore, the libraries change and grow, but the language syntax (being just a representation of the underlying computational model) never really has to change.
There is one other language I know of that has this "thin layer of syntax over simple computational model" sort of feel -- CeeLanguage
. C has been around a long time, and has not been poisoned as quickly as C++, Perl, etc. I think this is because C's design center is well known -- portable assembler for a Von Neumann-like architecture. C's main problems (in this regard) are that it doesn't have good SymmetryOfLanguage
, and that its computational model is not fully specified (e.g. different size ints on different computers...).