<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
 Dear All!
<p>Curiously not wanting to provoke you or offend you, Smalltalk was
<br>  > the only language among Basic,  Fortran ( I studied Fortran
when I
<br>  > was nineteen years old and a Biological Sciences student concerned
with
<br>  > ecological modeling - my ex-husband was the professor, he
was teaching
<br>  > a graduate course for electronic engineers! I was the best
student! I
<br>  > got
<br>  > 10 and he has not at all helped me! Indeed he hated to teach
me
<br>  > anything!)
<br>  >
<br>  > , Pascal, C,  Modula, Oberon, Simula,
<br>  > C++, Eiffel, Sather, CLOS, Beta (The Mjolner Beta System and
the
<br>  > Simula system)
<br>  > that I was unable to study by myself!
<p>  This is fun because for me this is the opposite. But I come from
a lisp
<br>  background and I not syntax-aware and not polluted by {}.
<br> 
<p>OK!<b><font color="#3366FF"> Let's check how wonderful and didactic
it is to study Smalltalk</font></b>
<br><b><font color="#3366FF">and associated languages!</font></b><b><font color="#3366FF"></font></b>
<p><b><font color="#3366FF">First of all, I have read nine pages from the
paper <i>The Early History of</i></font></b>
<br><b><font color="#3366FF"><i>Smalltalk that</i> may be downloaded from
<A HREF="http://www.iam.unibe.ch/~ducasse/">http://www.iam.unibe.ch/~ducasse/</A></font></b><b><font color="#3366FF"></font></b>
<p><b><font color="#3366FF">and has recently been published at ACM SIGOLAN
Notices, vol. 28 no.3</font></b>
<br><b><font color="#3366FF">March 1993</font></b>
<br><b><font color="#3366FF">Alan Kay is very honest and makes evident
how naïve and simple ideas</font></b>
<br><b><font color="#3366FF">dawned on the computer scientists to keep
the ball rolling are woven into</font></b>
<br><b><font color="#3366FF">computer systems!</font></b>
<br><b><font color="#3366FF">Then it is up to the users to reject them
or simply pretend they are doing</font></b>
<br><b><font color="#3366FF">research on computer science that is really
having impact on the change</font></b>
<br><b><font color="#3366FF">of the quality of life on Mother Earth! Sorry
if I do not manage to teach</font></b>
<br><b><font color="#3366FF">seventeen-year old architects how to program
complex systems such</font></b>
<br><b><font color="#3366FF">as to design and plan sustainable cities,
I do not see mankind is really</font></b>
<br><b><font color="#3366FF">building a sustainable basis for our cities.
Hence everybody will face</font></b>
<br><b><font color="#3366FF">collapse soon! Nobody cares about this of
course! But I do care! This is</font></b>
<br><b><font color="#3366FF">my mission!</font></b><b><i><font color="#3366FF"></font></i></b>
<p><b><i><font color="#3366FF">Alan Kay says: The bridge to an object-based
system could be in terms of each object as a syntax-directed interpreter
of messages sent to it. = unify</font></i></b>
<br><b><i><font color="#3366FF">OO semantics with the ideal of a completely
extensible language</font></i></b><b><i><font color="#3366FF"></font></i></b>
<p><b><font color="#3366FF"><i>Just perfect:-)! Then </i>to continue reading
the rest of paper he takes for</font></b>
<br><b><font color="#3366FF">granted that I know about <i>car, cdr, 
cons eval apply functions, lambda</i></font></b>
<br><b><i><font color="#3366FF">expressions, quotes conds etc!</font></i></b>
<br><b><font color="#3366FF"><i>Then I start reading On Lisp from </i>Paul
Graham you can download on site</font></b>
<br><b><font color="#3366FF"><A HREF="http://www.paulgraham.com/onlisp.htm">http://www.paulgraham.com/onlisp.htm</A> or html?</font></b><b><font color="#3366FF"></font></b>
<p><b><font color="#3366FF">Of course not only does he explain nothing
about <i>car, cdr, cons etc </i> and</font></b>
<br><b><font color="#3366FF">worse introduce lots of expressions and commands
I have never heard of!!!</font></b>
<br><b><font color="#3366FF">For example can someone explain to me how
can I understand the following</font></b>
<br><b><font color="#3366FF">closure to make a new database?</font></b><b><font color="#3366FF"></font></b>
<p><b><font color="#3366FF">(<i>defun make-dbms (db)</i></font></b>
<br><b><i><font color="#3366FF">    (list</font></i></b>
<br><b><i><font color="#3366FF">      #'(lambda
(key)</font></i></b>
<br><b><i><font color="#3366FF">          
(cdr (assoc key db))</font></i></b>
<br><b><i><font color="#3366FF">      #'(lambda
(key val)</font></i></b>
<br><b><i><font color="#3366FF">          
(push (cons key val) db)</font></i></b>
<br><b><i><font color="#3366FF">          
key)</font></i></b>
<br><b><i><font color="#3366FF">       #'(lambda 
(key)</font></i></b>
<br><b><i><font color="#3366FF">           
(setf db  (delete key db :key  #' car))</font></i></b>
<br><b><i><font color="#3366FF">            
key)))</font></i></b><b><i><font color="#3366FF"></font></i></b>
<p><b><font color="#3366FF">For me this is a nightmare! And the same obstacles
I find when I try</font></b>
<br><b><font color="#3366FF">to delve deeper into Smalltalk and Self!!!
It is worse than biochemistry</font></b>
<br><b><font color="#3366FF">because in biochemistry every new enzyme or
organic product that appears</font></b>
<br><b><font color="#3366FF">one knows why! I mean it is a coherent whole!</font></b>
<br><b><font color="#3366FF">Special thanks and apologies for complaining,
but I do need to understand</font></b>
<br><b><font color="#3366FF">the gist of exploratory programming. Is it
the same as bottom-up programming</font></b>
<br><b><font color="#3366FF">what's the difference?</font></b>
<br><b><font color="#3366FF">Have a fun-filled peaceful creative weekend</font></b>
<br><b><font color="#3366FF">Albertina</font></b>
<br><b><font color="#3366FF"></font></b> <b><font color="#3366FF"></font></b>
<p>tb@becket.net wrote:
<blockquote TYPE=CITE>James McCartney <asynth@io.com> writes:
<p>> It depends on the Smalltalk.
<br>> A full closure can be returned from a function and still refer to
that
<br>> function's variables. Self disallows this, as do some Smalltalks
I
<br>> beleive. If you support this feature you can no longer put all your
<br>> local variables on the stack, because references to them may outlive
<br>> the function activation in which they were created.
<p>This is a fiction that the Smalltalk crowd likes to talk about, and
<br>it's a shame that the Self crowd also repeats it.
<p>In languages which support closures, it is rare to return them. 
Most
<br>functions never return them.  So you can store such local variables
on
<br>the stack just fine, for all but the minority of functions which
<br>return closures.
<p>But what about the ones that do?  Well, if you didn't return a
<br>closure, you'd have to do something else to hold the same data, some
<br>kind of allocation, and that has just whatever cost the alternative
<br>non-stack compilation has for the same data.
<p>There is a wrinkle because Smalltalk and Self use internal closures
<br>(whether real or pseudo) for control structures to a higher degree
<br>than Lisp/Scheme usually do.  However, it is still very rare to
<br>actually return them.
<p>A Lisp/Scheme system therefore can use non-stack allocation for any
<br>function where a closure is created, even if it is not returned (that
<br>is, if it can be taken to have dynamic extent).  But this is not
<br>strictly necessary--Smalltalk and Self do just fine with
<br>pseudo-closures, that is, closures with merely dynamic extent.
<p>So, since Smalltalk/Self code is more aggressive in creating closures,
<br>which are typically not returned, the trick is for the compiler to
<br>detect ones which won't be returned.  This is in general a matter
of
<br>detecting aliasing, and it's not too tough for the common uses of
<br>closures in Smalltalk and Self.
<p>So, my suggestion is to bite the bullet and do it right.  Demand
real
<br>closures.
<p>If you think this is "too hard", then what are you doing with
<br>Smalltalk and Self anyhow?  The whole glory here is that things
that
<br>are "too hard" can, indeed, be made quite tractible through good
<br>compilation.  In the case of closures, the techniques are well-known,
<br>and it's a shame that the Smalltalk/Self crowd mostly disregard them.
<br> 
<br> 
<p>Your use of Yahoo! Groups is subject to <a href="http://docs.yahoo.com/info/terms/">http://docs.yahoo.com/info/terms/</a></blockquote>
</html>