The Tragedy of the Common Lisp, or, Why Large Languages Explode (was: revive let blocks)

Bill Frantz frantz at
Sat Jun 20 18:18:04 UTC 2015

While I am also concerned with the problem of ever-expanding 
languages because the larger they grow, the harder they are to 
learn, and the harder it is to read someone else's code which 
uses unfamiliar features, there are other issues that are 
equally important.

I find the most unappreciated feature of a language is the list 
of things it can't do. For a bit of background, my first program 
was written in machine language, and after struggling with it, 
the instructor introduced the class to a wonderful tool: 
assembler language. Sufficient to say, I know about languages 
with built in footguns.

The advantage of having a language that doesn't allow certain 
things is that you don't have to worry about them when you are 
debugging or reviewing a program. Memory safety is high on the 
list of useful features which JS has. Another very valuable 
feature is the ability to limit what a piece of code can do 
before you invoke it. In the JS arena, this kind of limitation 
allows web sites which give their users security assurances to 
run arbitrary JS provided by advertisers. ES2015 has a number of 
features to support this usage, but because of the need to not 
"break the web", they are a bit delicate to use.

It would be good to include a list of the things you can't do in 
the language specification so failures in this area are clearly 
bugs in either the implementation or the specification. I would 
suggest for JS that this list include the things required for 
confining a piece of JS code running within a larger 
environment, like a web page to keep it from doing all the 
things the web page can do.

Cheers - Bill

Bill Frantz        | Ham radio contesting is a    | Periwinkle
(408)356-8506      | contact sport.               | 16345 
Englewood Ave |  - Ken Widelitz K6LA / VY2TT | Los Gatos, 
CA 95032

More information about the es-discuss mailing list