The Smalltalk 80 spec was licensed to several companies, one of which
was Apple. They implemented Apple Smalltalk sometime in the 80s, which
worked along the lines you describe. Squeak was bootstrapped from Apple
Smalltalk by writing the new VM in a subset of Smalltalk that can be
transcribed to C. So the Squeak VM was first run inside Apple Smalltalk,
and the world of objects (called image in Smalltalk) that it ran was a
translation of the Apple Smalltalk image (by a tool called
SystemTracer, that converts images from one run-time format to another).
Therefore, in a sense, Squeak is not just "a real implementation of
Smalltalk" - it actually is a reincarnation of one of the original 80's
Smalltalks. This makes even more sense if you consider that the Squeak
team that did this included Dan Ingalls, the original Smalltalk
implementor.
This is the historical story that explains why Squeak has all of the
"differentness" you see, for good and for bad.
Anyway, quite recently Apple has rereleased the original Squeak under
APSL 2.0, so that version is even Free Software now (some other parts of
modern Squeak are under another license which is open, but not Open
Source).
guy keren wrote:
i think what shlomi is missing, is what smalltalk was when it was
developed (in the late 70s - i think it was released in 1980).
smalltalk wasn't just a language. it was a complete environment,
including its own widgets system and GUI system. the compiler was part
of the environment and came with the source - so you could change the
compiler. the GUI came with the source - so you could change the GUI.
and everything, indeed, was an object. the idea was more then "syntax
for a new programming language".
Many development environments today are open source, so you can change
their UIs too. What I think distinguishes Smalltalk from most (Emacs is
probably also this way), is that changes are normally done "live" - you
change the source from within the system, and it immediately changes its
behavior. No shutdown, recompile restart, not even "load the new class".
When you save the source for the new method, the lookup table for that
class in the running system is modified to include the new version
immediately.
in this sense, it sounds like squeak is a real implementation of
smalltalk, whereas GNU smalltalk striped out a lot of the real
smalltalk, and left you with a small part of it.
in smalltalk, everything was an object (including numbers, and including
"if" - the "if" command was an object to which you could pass an object
to evaluate, a 'true' clause and a 'false' clause. comparison operators
were objects. _everything_ was an object (a 1st-class object, if you'd
like to tall it that). classes were objects. all objects inherited from
a top-level class named 'Object' (which was, ofcourse, an object too ;).
there was only single inheritance, as far as i remember.
what you'd do with objects is pass them messages, which may contain
parameters - which are more objects.
there is no point in arguing about its efficiency - ofcourse this is not
very efficient from a run-time point of view. and ofcourse it is
different then what you are used to, so it looks awkward. i'd say - look
at this as a form of art - it does look beautiful ;)
and smalltalk was actually used in the industry. you would have found it
mostly..... in brokering companies in wallstreet ;) for some reason,
people there used it to write programs to help with with performing
investments - no idea why. a friend of mine worked in a company whose
product was written entirely in smalltalk. some years after they moved
to other languages.
Sure, but why do you use the past sense? as far as I know, JPMorgan (an
example from the domain you mention) is still using Smalltalk to extend
and maintain Kapital, a futures pricing system. I head a talk by a
programmer on that system a couple of years ago. It is huge, makes them
tons of money, and the project to rewrite it in Java failed miserably...
its very counter-intuitive, but Smalltalk is both at the software
development cutting edge *and* very mature. AFAIK, they're still hiring
Smalltalkers, importing them from as far as Argentina.
Daniel
later on all the other object-oriented languages borrowed from smalltalk
- which was the first object-oriented language to appear publicly. the
developers of C created "objective C", which was C with the addition of
objects. the syntax of invoking messages on objects was copied from
smalltalk. objective C was actually used in the industry (the NeXT
operating system of steve jobs was writte in objective C. i had the
pleasure of working on a project written in objective C, too).
lookup smalltalk on wikipedia for more info, and to see its strange
syntax ;)
http://en.wikipedia.org/wiki/Smalltalk
--guy
On Wed, 2006-07-19 at 04:59 +0300, Daniel Vainsencher wrote:
Hi Shlomi,
I can certainly understand how you feel, my fingers have EMACS burned in
pretty deep. I will offer you a different point of view, from the
assumption that this can only help you decide what's good for you.
Squeak is indeed very different in many ways, and I agree the limited
keyboard navigation is a bad one. The upside is that it is different in
many ways that are good, or at least thought provoking. For example,
this defective keyboard support is the downside of having its own UI
framework, Morphic. One upside is that Morphic is very explorable:
getting from seeing a UI element on the screen, to seeing and modifying
interactively the values of that object takes about 5 mouse (sic)
clicks. This illustrates one of Smalltalk's main premises, that
"Everything is an object" in a way that is incomparably concrete. Sounds
like a curiosity, but living in object-land for a while changes the way
you think more than any particular feature of the language. Similarly
novel ideas that affect you slowly: saving the image, everything
including the compiler and (almost all of) the VM is written in
Smalltalk, deep portability across platforms, the execution stack is
made of objects...
So sure, using GNU Smalltalk will seem much more familiar, but by the
very choices that make it superficially more convenient, it is made more
conventional, and therefore less interesting to learn. If you decide
beforehand to miss so much of what makes Smalltalk different, maybe you
*would* be better served by learning Ruby...
BTW, note that the [brackets] are not equivalent to C's {braces} -
they're a very concise syntax for closures (Scheme's lambda). In fact in
Squeak {} actually do something very close to what they do in C:
evaluate the statements in order (and then return all their returned
values in an array).
On the other hand, Squeak itself is quite versatile - it has alternative
UIs you can use. The same Browser that you find annoying in Morphic
because it has bad keyboard support there, has also been ported to
wvWindows, gtk (under heavy development) and the web browser of you
choice, so don't let the surface mislead you. But better advice would be
- try to learn like a child. Forget what you're used to for a while.
Even the mouse has its wisdom.
And most important, whatever you do, have fun :-)
Daniel
Shlomi Fish wrote:
<> שלום לכולם!
<> לי יש בעייה אחת עם Squeak - היא לא מתנהגת כמו שאני רגיל. אני כבר מתכנת בא
<> בימים, שרגיל לכתוב קוד. באמצעות gvim, Bash ועם קצת עזרה מפרל. מעל KDE. על
<> לינוקס. סקו'יק היא מכונה וירטואלית, עם מערכת הפעלה וירטואלית, עם ממשק משתמש
<> פנימי, שכולם לא תואמים למה שאני רגיל ואוהב. בנוסף לא קיימת שום אפשרות בה
<> לערוך קובץ טקסט אחד (או מספר קבצי תוכנה) כדי לכתוב את התוכנה מההתחלה עד הסוף.
<> כדי לעשות זאת יש צורך להשתמש בממשק המשתמש וב-Class Browser עם קליקים רבים,
<> שאני שונא לעשות.
<> ניסיתי לייצא קבצים מסקוו'יק והם יוצאו כקבצים שבהם השורות נגמרות ב-\r. לא \n
<> כמו שרגילים לכתוב ביוניקס, גם לא \r\n כמו שיש בחלונות. \r כמו במקינטוש הישן
<> והגרוע. למה???
<> בקיצור בסוף התייאשתי מסקו'יק ועברתי ל-GNU Smalltalk, שלפחות רץ מעל יוניקס
<> ומשחק יפה איתו, ואפשר לכתוב לו קוד ב-gvim. אומנם התחביר של לכתוב מחלקה חדשה
<> הוא קצת מעוות (איזו הערה מוטרפת) אבל אפשר להסתדר איתו. אבל הצלחתי לגרום לו
<> לקרוס... ;-)
<> עוד בעייה שאני מוצא ב-Smalltalk הוא שהתחביר שונה ממה שאני רגיל. למשל משתמשים
<> בסוגריים מרובעות ([...]) במקום בסוגריים מסולסלות ({...}) בשביל בלוקים. ברור
<> לי ש-Smalltakl נכתבה לפני ש-C וחברותיה נהיו פופולריות, אבל זה עדיין מעצבן. לא
<> יודע, אולי אני צריך ללמוד רובי במקום.
<> בכבוד רב,
<> שלומי פיש
On Sunday 16 July 2006 11:57, Nir Soffer wrote:
<>> ברור שSmalltalk היא השפה המושלמת לילדים :-)
---------------------------------------------------------------------
Shlomi Fish [EMAIL PROTECTED]
Homepage: http://www.shlomifish.org/
Chuck Norris wrote a complete Perl 6 implementation in a day but then
destroyed all evidence with his bare hands, so no one will know his secrets.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]