Lambda the Ultimate

inactiveTopic Wirth: On the Design of Programming Languages
started 11/19/2001; 11:35:55 AM - last post 11/21/2001; 8:17:13 AM
Ehud Lamm - Wirth: On the Design of Programming Languages  blueArrow
11/19/2001; 11:35:55 AM (reads: 2733, responses: 10)
Wirth: On the Design of Programming Languages
This is more a manifesto than an academic paper, but I think it is worth reading Wirth when thinking about PL design.

Wirth recalls some of his personal experiences from early designs (the Euler language), and the evolution of his views on simplicity as a goal for PL design.

It may be interesting to compare Wirth's design criteria with other lists of PL design criteria.

Which languages would you put in the category of languages that are too simple?


Posted to history by Ehud Lamm on 11/19/01; 11:40:11 AM

rev - Re: Wirth: On the Design of Programming Languages  blueArrow
11/19/2001; 12:48:42 PM (reads: 1635, responses: 1)
Too simple in what way? I'd say that Scheme is about as simple ain syntax s it gets- (function param1 param2 ... paramN). However, in it's semantics and and what it can do, it's not so simple.

PILOT is a language that's too simple, IMO. At the same time, it does what it was designed to do.

I don't know if a "too simple" language can exist; a language is designed for a specific task. A language may not support enough functionality to produce the results, but oftentimes I would imagine it's a result of a poor rather than one that is too simple. My support for this is that a language can be quite simple, yet the abilities it has be enough implement what is needed, e.g. Scheme.

Ehud Lamm - Re: Wirth: On the Design of Programming Languages  blueArrow
11/19/2001; 1:12:56 PM (reads: 1713, responses: 0)
I was refering to the discussion of simplicity in Wirth's paper.

Chris Rathman - Re: Wirth: On the Design of Programming Languages  blueArrow
11/20/2001; 11:50:42 AM (reads: 1575, responses: 0)
I'm a tad confuseth. :-)

From what I gather, Wirth praises simplicity in a programming language - i.e. the language should be simple for the given problem domain. So I'm not sure what would qualify a language as being too simple.

Frank Atanassow - Re: Wirth: On the Design of Programming Languages  blueArrow
11/20/2001; 11:51:09 AM (reads: 1578, responses: 0)
OK, I will be the devil's advocate: all languages are too simple; they're all approximations to an ideal language which lets you abstract over arbitrary collections of entities without compromising static guarantees.

It will always be that way, I think.

I certainly can't agree with everything that Wirth says, but I think he's right on the money when he says that "the language designer must not ask [users] `what do you want?', but rather `how does your problem arise?'" Perl is a language which is founded on answering the first question, and that's why it's such a mess. Modern languages try to focus on answering the second question, but no language can address every such problem, because the space of them is not bounded, and I believe no finite formal system can provide general enough abstraction mechanisms for problems of arbitrary complexity. (My intuition tells me that Goedel's Incompleteness Theorem is responsible for that fact, but I can't make a formal connection.)

Anyway, I think that language design is mostly about answering that second question, and distinguishing between situations where we thought we were answering it, yet were actually answering the first one. The distinction between them is the same as the distinction between implementation (or "model") and "specification", and when you jump to the meta level of a formal system, a specification becomes merely a model of a more general class of specifications. (This is why I think there can be no finite, ideal formal system.)

Frank Atanassow - Re: Wirth: On the Design of Programming Languages  blueArrow
11/20/2001; 11:53:30 AM (reads: 1568, responses: 0)
BTW, I did not wrap an HTML anchor around implementation; does the weblog do that when you wrap something in quotes? (For comparison, here is an unquoted implementation.)

Ehud Lamm - Re: Wirth: On the Design of Programming Languages  blueArrow
11/20/2001; 12:08:49 PM (reads: 1582, responses: 0)
Manila support shortcuts, which are indeed used by quoting the shortcut text. There's a global shortcut lists, and sites can also have local shortcuts. For example our deparment names are shortcuts: OOP, LC etc. Also some often used book names: SICP EOPL2. I add to the list from time to time.

Editors should be able to see the list.

Ehud Lamm - Re: Wirth: On the Design of Programming Languages  blueArrow
11/20/2001; 1:08:58 PM (reads: 1568, responses: 0)
To focus the discussion let me quote from the paper. This is from page 24:

The premise that a language should not be burdened by (syntactical) rules that define meaningful texts led to a language where it was difficult and almost impossible to detect a flaw in the logic of a program. It led to what I like to call a high-level Turing machine. Making mistakes is human (particularly in programming) and we need all the help possible to avoid committing them.

Michael Christopher Vanier - Re: Wirth: On the Design of Programming Languages  blueArrow
11/20/2001; 5:26:14 PM (reads: 1565, responses: 0)
I would say that Forth is too simple from a number of perspectives.

The Forth parser is so trivially simple that it doesn't even understand strings. There is no notion of grouping in function calls. There is no concept of compound data, just pointers to allocated blocks of memory (a sin repeated by C, although structs make it less onerous). There are no types. Thus, Forth is like an extensible assembly language. Despite what its advocates claim, adding these features to Forth is non-trivial, and most Forth programs thus contain a lot of convolutions to get around these annoyances.

Luke Gorrie - Re: Wirth: On the Design of Programming Languages  blueArrow
11/20/2001; 6:06:29 PM (reads: 1549, responses: 0)
Great post!

The Oberon book is a ripper for Wirth simplifications. Throwing away everything that's hard to implement and not essential, and trying to keep what remainds super-lean.

Unfortunately out of print, but here's a ref: http://www.amazon.com/exec/obidos/ASIN/0201544288/qid=1006308054/sr=1-2/ref=sr_1_8_2/002-6962332-9227265

Ehud Lamm - Re: Wirth: On the Design of Programming Languages  blueArrow
11/21/2001; 8:17:13 AM (reads: 1529, responses: 0)
Perl is a language which is founded on answering the first question, and that's why it's such a mess.

Maybe. But Wirth also goes on to cricize the other extreme, which may include languages like Scheme, which IIRC you quite like...