Consider for a moment HTML. As a programming language, it's, well, not. But because the bulk of the Web is "written in" HTML (in the sense that HTML is what's exposed to the browser or other client), browsers can do start rendering a page before they've even read all of it, spiders can get useful information off the Web without having to embed a Turing-complete language interpreter, and pages written by newbies might look ugly but they communicate more or less what their authors intended and are very unlikely to crash your browser.
IIRC one of Richard Gabriel's complaints about Common Lisp is that because the standard allowed programmers so much flexibility, it was very difficult to write an optimizing Lisp implementation--which meant that novice-to-intermediate Lisp programmer would get lousy performance until they learned the optimization tricks of their particular implementation.
So I think that in general, constraints on the language end permit optimizations on the implementation end, and when a language user is doing things that don't continually bump into those constraints, that leads to happiness on the user end.
The proper way to accommodate users that do run into those constraints, IMHO, is to provide escape hatches to other languages: SCRIPT tags, the Haskell foreign function interface, PostgreSQL "createlang", etc.
no subject
IIRC one of Richard Gabriel's complaints about Common Lisp is that because the standard allowed programmers so much flexibility, it was very difficult to write an optimizing Lisp implementation--which meant that novice-to-intermediate Lisp programmer would get lousy performance until they learned the optimization tricks of their particular implementation.
So I think that in general, constraints on the language end permit optimizations on the implementation end, and when a language user is doing things that don't continually bump into those constraints, that leads to happiness on the user end.
The proper way to accommodate users that do run into those constraints, IMHO, is to provide escape hatches to other languages: SCRIPT tags, the Haskell foreign function interface, PostgreSQL "createlang", etc.