Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!news.iecc.com!nerds-end From: Christophe de Dinechin Newsgroups: comp.compilers Subject: Re: Looking for volunteers for XL Date: Sat, 26 Nov 2011 12:38:04 -0800 (PST) Organization: Compilers Central Lines: 60 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <11-11-053@comp.compilers> References: <11-11-048@comp.compilers> NNTP-Posting-Host: news.iecc.com X-Trace: leila.iecc.com 1322342730 57635 64.57.183.58 (26 Nov 2011 21:25:30 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Sat, 26 Nov 2011 21:25:30 +0000 (UTC) Keywords: design, comment Posted-Date: 26 Nov 2011 16:25:29 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: x330-a1.tempe.blueboxinc.net comp.compilers:355 > [There were a bazillion extensible languages in the 1970s, many quite > sophisticated. They all disappeared without a trace, largely because > the ability to do per-program extensions meant that every program was > written in a different language, making them all unreadable. It turned > out that semantic extension, a la C++ overloaded operators, is a lot > more usable than extra syntax. I assume you're familiar with EL/1, > IMP-72, et al, so why is this any better? -John] The first truly extensible language was Lisp, and it never disappeared. It evolved, largely thanks to its extensible nature, becoming the first language to get objects in a normalized way, for example. This is the only language where normalization simply recorded accepted extensions that had already been validated by its user base. Contrast this with how C++ evolved by committee, adding features that no one had really tried before (export templates anyone?) just because it's so darn difficult to extend the compiler in the first place. You expressed an opinion about why the languages you refer to failed, which you do not substantiate. My personal opinion is that they disappeared because they were too big and complex (for the time), without bringing much value in return (at the time). That was back when dedicating 50K to a compiler was considered luxury enough to be mentioned in the manual for IMP-72 (see http://www.saildart.org/prog/DOC/_11_DOC/.html/000055?54,173450), and where there wasn't much need for more than one language anyway. Things have changed. Making the language extensible no longer costs an arm and a leg. And the vast majority of software projects today need more than one language, when they do not simply go as far as using meta-programming or DSLs. Whether you consider GUIs or distributed programming, you always resort to some kind of meta-tools, annotations, IDE, code generators, all sorts of things that demonstrate a need to go beyond the base language. Do these tools create dialects that are indecipherable to other users? Well, yes and no.You need to learn about Qt's slots or about Doxygen annotations, i.e. learn something above and beyond standard C++. But that's not different from learning about Posix functions, the Java class libraries or iOS. All these things are rather big "dialects", you have to learn them before you can be fluent. We just manage. As for why XL is better than these older languages: this is absolute value in IMP-72 ::= ABS ( ) ::= "A<0=>-A ELSE A" Here is the same thing in XL: abs A -> if A < 0 then -A else A This has much less "syntactic noise". In general, the older language (not just extensible ones) had a rather complicated internal representation. In XL, it's really simple, on a par with Lisp, but enabling easy-to-read source code. [I wrote actual programs in IMP-72. The compiler was slow, but not unduly so for the time, and it was in the same ballpark as BLISS-11 which got a lot of use. (They both cross-compiled on a PDP-10.) We gave up on it because we didn't want to try to remember which of six slightly different case statements each program used. -John]