On Sun, Jun 08, 2003 at 09:51:46PM +0300, Stanislav Malyshev wrote:
> AM>> and many other universities teach Scheme in their introduction
> AM>> to CS classes. Scheme has garbage collection, no pointer
> AM>> arithmetics, unboundedly
>
> Well, I personally never understood how anybody can use, let alone like, a
> language that has '(' and ')' as it's only syntax and I personally think
> it's an assembler for people with twisted minds - so I cannot
> wholehertedly support or even reasonably evaluate the usefulness of
> teaching Scheme to the beginners.
I had a lot to comment on this thread, on more than the lisp issue,
and I stopped myself thinking (which I still do) this is all nonsense,
but I can't stop myself now (and this is not only to you, Stanislav,
but to anyone who wants to read a biased but informed opinion):
Beating the Averages <http://www.paulgraham.com/paulgraham/avg.html>.
I now recall someone else mentioned Paul Graham. I must admit I
never heard of him, and even when I met this article, I did not bother
to further look in his site. Naughty me. Maybe I will now.
Disclamer: I started programming almost 17 years ago (at age 13),
and learned and used many of the mentioned langs. I only worked as
a programmer by definition for 2 years, in a lisp-based project,
where I learned it, and loved it a lot. I now work as a SysAdmin,
and write mostly in sh/awk/sed and C (learning a bit of perl and
thinking about python and others). I have no doubt, though, that
most big projects won't lose by using lisp heavily (maybe not only,
I am not a fanatic).
Since I already added my own poison of offtopicism to the list, I
allow myself to add some few more notes, in no particular order,
and am quite sure some of them will interest whoever is already
reading this thread:
I don't know scheme, but from what I heard and read, it sounds to
me a bit that "scheme to lisp (especially CommomLisp) is as pascal
is to C". I guess this is a bit unfair to scheme, but you get my
point - it's a small language, good for teaching, for small programs,
for embedding (such as guile), but for real, big, programs, you do
need the big library and unclean real-world features of CommonLisp.
About performance: Here, lisp tends to be a bit like Java. Since
it has a huge runtime, it takes a lot of time to load, especially
CommonLisp. Well, it of course depends on your hardware - I now
run at home Linux on a 300Mhz Celeron with 256MB, and starting
and quiting a CL (cmucl) takes a few seconds on first run, and
about 0.25 on the next ones. This is comparable to the time it takes
to gcc 'main(){}'. On the machines we had in the project, (DECStations
with 33Mhz R3000 and 32MB), cc (and gcc) were more-or-less the same
as on the Celeron (of course proportionally to the cpu speed, but
in practice, when you only change a single source file at a time,
running 'make' still takes only a few seconds), but the lisp part
had a 50MB executable image, used around 70-80MB of memory (most
in the swap, of course), and took few minutes to load (and I guess
even on a new machine with 256MB will still take much more than
a 'make'). But the fact that you then had all the runtime for the
whole day (you didn't have to exit/enter the lisp for every change -
that's some of the power of it), and that changing a function (or
a source file) was comparable to in C, but you were still in the
middle of the running program, made all the difference. I guess you
have to use it for a few days to understand - a small story won't
tell it. I don't know Java, but from what I understand, it partly
suffers from the same problems, but without all the fun (some of it,
yes, but I did talk to Java programmers and it's not the same).
Another note not related to anything (if at all, to another thread
on small machines currently running here): Some of you might find
interesting tcc, a Tiny C Compiler. It's tiny (100KB), includes
its own assembler/linker in the exe, very very fast, can run as
a script (but does compile to memory and runs from memory), very
cool for small things. Can be easily put on any ramdisk, for example.
I haven't really thought of this, but it might be better to put on
the ramdisk "tcc script" versions of some programs instead of things
like busybox (which tries to save space by putting many programs
into a single compiled executable). This primarily depends on whether
machine code is smaller or larger than C, which I don't really know
(but I do know they are rather close, not 1:10 or even 1:3 in any
direction).
One of my favourite sites is www.tunes.org. Among other things,
they have there a (quite biased towards what they intend to do)
review of many langs and OSes. Recommended to anyone that is
looking for interesting langs to learn.
Contrary to lisp/scheme (which I personally think, as others here,
are the best for teaching programming), it's worth noting that taking
Nadav's opinion (about C) even further, Knuth talks almost only about
Assembler (of his MIX, now MMIX). So I guess at least some experts
also take this side.
To anyone that asked/talked about/was interested in Pascal:
Formally, Pascal haven't changed much - it wasn't meant to. Many
know that implementations did add a lot to the base, and both
Delphi and fpc (Free Pascal Compiler) are much bigger than the
standard Pascal. What did happen, though, is that the creator of
Pascal, Nicklaus Wirth, continued and invented more languages, among
them Modula and Oberon. If you search google for oberon, you see that
one of the top results (among 282000) is by Guy Laden, who also used
to be a SysAdmin here, and who loved it a lot (of course). What you
can't easily see is that he didn't update the site for many years,
and his rank in google is simply amazing. From what I recall from
our discussions, it is indeed a quite interesting language, especially
to someone who still doesn't know Lisp :-)
>
> AM>> (is that a word?) big integers/fractions. Heck, even arrays in
>
> No big deal. My second (the first was Basic, obviously) programming
> language was one that could easily calculate 100! without resorting to any
> special algorithms or libraries. :) Actually, with existance of GNU GMP,
> any language can do this now ;)
Yes, but
1. There are many other things that Lisp was first to have. E.g.
CLOS, Lisp's idea of OOP, was the first OOP language to have been
standardized, and many consider it one of the best OOP langs.
2. There are things in Lisp that many other langs can't have at all,
because they can't be implemented as a library function, only as an
interpreter to a lisp subset. One such thing is lisp's macros. Read
'Beating the Averages' (above) for an explanation better-written
than anything I could write.
My first language, BTW, for almost two years, was the (unnamed?)
language of a CASIO FX7000G. Was a bit problematic for 100!, if you
also wanted your program to do other things (it had only 422 bytes
for programs).
> --
> [EMAIL PROTECTED] \/ There shall be counsels taken
> Stanislav Malyshev /\ Stronger than Morgul-spells
> phone +972-50-624945 /\ JRRT LotR.
> whois:!SM8333
>
>
>
> =================================================================
> To unsubscribe, send mail to [EMAIL PROTECTED] with
> the word "unsubscribe" in the message body, e.g., run the command
> echo unsubscribe | mail [EMAIL PROTECTED]
Didi
=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]