Subject: Re: is there any app can compile lisp program to machine code?
From: Erik Naggum <erik@naggum.net>
Date: Sun, 24 Feb 2002 08:50:43 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3223529447153534@naggum.net>
* attonie@etang.com (attonie)
| as i know, lisp is a interpretion language, thus the speed is slow, so
| is there any program can compile lisp program to machine code?
You must be thinking of Scheme, a toy Lisp. Common Lisp, a real Lisp,
has always had compilers. Matter of fact, even in 1959, Lisp had a
compiler. It is just that the toy Lisps that are used in education and
other forms of confusion are implemented by people who want to prove some
academic point -- and these all use Scheme. There is significant merit
to learning about computers from a higher-level point of view than, say,
machine instructions and stuff, and Scheme offers a way to look at Lambda
calculus. More of this is visible with interpreted code than with
compiled machine language, so for purpose of study, Scheme is usually an
interpreted Lisp.
Lisp has, however, always provided an interactive programming environment
and many toolmakers in the history of computing have made interactive
environments using interpreted languages, because it is _so_ much easier
than writing compilers that work with interactive environments, but all
this means is that people who are not very smart never gave you the power
of an interactive environment combined with the speed of compiled machine
code. The people who make Common Lisp environments are much smarter than
those who stay with interpreted environments, so they provide you with
this particular combination as a matter of course.
Now, over the years, a lot of people who have been overexposed to Scheme
and to lazy or stupid people and their toy implementations of Scheme have
come to Common Lisp with the severely misguided notions that Lisp is
slow, Lisp is interpreted, Lisp is a memory hog, etc, all because they
have gathered all their experience about Lisp from incompetent or lazy
people. What you have actually seen is that even incompetent and lazy
people can make some useful Lisp environments that can be really nifty
compared to the compile-only environments of other toy languages. This
should be an important clue. It is, sadly, often missed completely.
It is like those LEGO robot kits for modern kids (of any age :), with
which you can do a lot of fascinating stuff with building blocks and a
computer -- but it is of course no match for industrial robots, and
anyone who went into an automated machine shop and thought he knew how
robots were made, would be laughed at and kicked out. The nature of the
"virtual reality" on the Net provides no clues to what most people need
visual information to get, namely that their assumptions are all wrong.
When you start an obvious falsehood with "as I know", it it very easy to
think you are one of those guys whose assumptions are set in stone and
for whom reality had better fit nicely with them, or else. So it is very
easy to laugh at you and kick you out because of this. However, it is up
to you whether you accept that what you have known up to now is wrong (or
applies only to a very small fragment of reality, not to be confused with
larger fragments or the whole thing) and are prepared to listen to people
who know a lot more about this than you do, or whether you will insist
that you had a right to believe what you did, which a lot of people will
not grant you, and be laughed and tried to be kicked out.
If you really want the toy Lisp, go ask in comp.lang.lisp.toy, probably
known at your newsserver as comp.lang.scheme. Some Scheme freaks also
offer compiled versions, whatever the point of that waste would be. As
you might infer, Scheme is the annoying little kid brother who always
tags along and ruins your day, and Scheme freaks have an annyoing habit
of trying to make it on their own, only to blame real Lisp when it fails.
I do not think you _really_ want the toy Lisp, do you? :)
Visit www.lisp.org and look for links to commercial vendors who offer
their excellent environments in trial versions or to free, but much
smaller environments that require a slightly more educated user to enjoy
from the start. Note that these are not "apps", but environments.
///
--
In a fight against something, the fight has value, victory has none.
In a fight for something, the fight is a loss, victory merely relief.