

Growing a Language, by Guy Steele [video] - vorador
http://video.google.com/videoplay?docid=-8860158196198824415

======
thristian
I 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
I 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
I loved the paper - it took me a couple pages before I figured out what he was
doing. Very clever.

