Philosophical musings: interpreting models
Wed, 15 Sep 1999 01:27:51 -0600
Sorry for the delayed reply -- I was gone over the weekend.
> I don't understand Jim's insistence. Jim, why is Lisp low-level?
Although I already addressed this in my response to Laurent, I'd like to
take this opportunity to talk about my definitions of low and high
To me, the "level" of a language or library is directly related to what
kind of task you're trying to accomplish. The language or library is
high-level if it allows you to accomplish your task directly, without
having to specify any intermediate tasks. The language or library is
low-level if it requires you to accomplish your task by specifying
intermediate tasks, rather than the task itself.
Here's an example of a high-level language. The task is to dial a
The same task in a low(er)-level language:
pick up handset
Another way to look at it is to say that the fewer lines of code your
program requires, the higher-level language you are using. This
approach also demonstrates the analog rather than discrete nature of
"levels". A language isn't so much "low" or "high" level -- it's
"lower" or "higher" level.
That's why I say Lisp is a low-level language -- for most tasks, its
semantics aren't even close to those required for the task at hand.
Yes, you can write high-level functions, but there's a difference
between a high-level language and a low-level language with high-level
functions, which I address in my email to Laurent.
PS: The ultimate high-level language, of course, is DWIWRN* -- it
contains only one instruction, and all programs have only one line of
*DWIWRN is an acronym for "Do What I Want, Right Now**"
**DWIWRN is the successor to DWIW, which was a revolutionary language
for its time but which didn't gain widespread acceptance. DWIM worked
very well but was hobbled because no one could prove that its programs
would complete in a finite amount of time.