2 ms·
Growing a Language, by Guy Steele [video]
- thristian 17y agoI watched this video a week or so ago (it was linked in a Tell Me Which Google Tech Talks Are Good To Watch thread) and I was impressed at how well-reasoned his points were, how poorly Java has lived up to them since 1998 when the talk was recorded (still no operator overloading!) and how many subsequent languages have followed his guidelines for growth, either deliberately or as parallel evolution. For example, although Python's syntax isn't extensible to the extent that Scheme or Lisp are, Python's Decimal class is still fairly transparently interoperable with built-in numeric classes. Other parts of the interpreter, such as object instances, classes and modules are built out of exactly the same dict objects that normal scripts use, which makes it easy to build new language features that feel like part of the base language.
- stcredzero 17y agoI note that Guy Steele's examples support a language which has a sufficient vocabulary. (Which can be easily expanded.) There is no example which argues for a large syntax. EDIT: I would also need to add that a language that wants to be widely popular needs a large enough syntax. Even though it results in a less elegant design, enough cultural expectations need to be respected so that programmers are immediately comfortable. Python is close to this ideal. (But definitely errs on the side of being too large.) Operator precedence is so deeply ingrained in engineering and technical culture, that it is a non-negotiable for many programmers. To put it another way, algebras are a pattern most expect to be a feature of a language. (This is written by a Smalltalker, who is perfectly comfortable working in a language with its own, much simpler, rules of precedence.) EDIT: Languages should be designed so that it is easy to implement Algebras and easy to use Algebras!
- pchristensen 17y agoI loved the paper - it took me a couple pages before I figured out what he was doing. Very clever.