(www.youtube.com) Oopsla Conference: Growing a Language - YouTube
ROAM_REFS: https://www.youtube.com/watch?v=lw6TaiXzHAE
[Recorded on October 1998]
From University Video Communications' catalog:
"Over the last quarter-century Guy Steele has been convinced that trying to design a complete and perfect programming language is the worst thing you can do. A programming language (including its associated libraries) must grow over time as its user community and its development community grow. This is a different situation from 25 years ago, when all such communities were relatively small. The difference is a problem of scale. As a result, programming language design now and in the future is necessarily as much a matter of social engineering as technical engineering and must rely more on a set of general principles than on a set of specific technical decisions."
Catalog number: 102706476
Lot number: X6636.2013
Ultimately, the thesis of the talk is that programming languages should be designed to be seamlessly extended by the programmers that use it. No general purpose programming language will be suitable for all general purpose users; therefore, it needs to be extendable.
The primary topic is that of large vs. small languages. One point of note is that Guy L. Steele Jr. thinks that building a perfect small language, in contrast to an imperfect small language, can't be done. He points out that Scheme was his best attempt at that. He also points out that users tend not to like languages as small and simple as Scheme or Pascal. Guy L. Steele Jr. concludes that, since large languages take too long to make, and that a perfect small language doesn't appear to be possible, the answer is to build a small language that is designed to grow and have the imperfections filed away.
Guy L. Steele Jr. points out that Lisp works in a way John McCarthy likely didn't originally intend or foresee: in Lisp, user additions to the language look identical to language primitives and vice versa. This means that user additions are indistinguishable from the base language.