Rob Earhart wrote:
Tcl and Scheme come to mind (although one could argue that Scheme's
learned from all the mistakes made in various LISPs).
Tomas Fasth writes:
AFAIK, Python is another example of such a language.
Actually, Python's syntax has changed, but only in very minor ways.
The "access" statement was removed, and the "assert" statement was
added. These actually required changes to the grammar and parser.
(The third argument to "raise" may fall into this category as well; I
think it was not in early versions of the language.) Optional &
keyword parameters to functions also required changes.
Of course, these have been very minor changes. Old code is not
broken so long as the "access" statement wasn't used and there weren't
too many assumptions made about implementation details of the
runtime. New code is less likely to be runnable with old versions of
the interpreter, mostly because Python programmers are using the newer
language features. A lot of code can be written that is indenpendent
of the interpreter version. Dependence on the standard library is
more likely to be a problem, where bug fixes can change the expected
behavior in some cases (like when someone uses an undocumented
interface that wasn't intended to be public, or for which a bug was
being worked around). These really shouldn't be issues for Sieve.
As long as there is some reasonable grammar which can allow new
statements and expressions to be recognized and skipped over, there's
unlikely to be any real problems with future extensibility. The catch
is to write the grammar that way. ;-)
-Fred
--
Fred L. Drake, Jr.
fdrake(_at_)cnri(_dot_)reston(_dot_)va(_dot_)us
Corporation for National Research Initiatives
1895 Preston White Drive
Reston, VA 20191-5434