Smalltalk Solutions 2001 Trip Report
John Squeaker writes: "Last week while the rest of the world was worrying about corporations warning, and dot coms failing, 300 smalltalkers got together in Chicago to plan for the future. Given the fact corporations like Dell have canceled their user conference this year we were very pleased with the attendence figures. The conference hosted a key note by Alan Kay, a *must* read, and the mood and general feeling of the show was captured in this excellent trip report. More information on the conference plus links to the papers/tutorials presented there can be found at the conference site. Do you want to know where OO languages like Java, Ruby, Squeak, and SmallScript come from? Then come visit us for the real story, and see what you can expect to hear in the next five years." The whole thing is interesting, but I particularly liked Tuesday. Smalltalkers seem to have a secret from everyone else sometimes ...
Indeed, VisualAge Smalltalk and VisualAge for Java are both written in Smalltalk. The portability of the OTI implementation allowed VA/Smalltalk and VA/Java to be shipped on Win32, OS/2 (oohhh), and Unix's. The VM was also responsible for running a Tectronic oscilloscope. Just some of the examples of successful ST products.
Extreme Programming. The extreme programming (XP) methodology grew out of a Smalltalk project 3-4 years ago. The founder of extreme programming, Kent Beck, advocates Smalltalk as the most productive language for XP, as does Ron Jeffries, the author of the Extreme Programming Installed book.
Refactoring. The term "refactoring" has become popular in the last few years, due in large part to the work done on the Refactoring Browser for Smalltalk by John Brant and Don Roberts. (Martin Fowler's book on Refactoring includes a section on the Refactoring Browser.) The Refactoring Browser lets you perform automated behavior-preserving code refactorings, such as abstracting references to an instance variable, pushing a method up into its superclass, etc. (There have also been some refactoring tools written for Java, but the nature of the Java language will make it difficult to create a tool as powerful as the Refactoring Browser for Smalltalk.)
IDE's (Integrated Development Environments). Smalltalk has generally been considered a leader in this area, with its integrated code browsers, the ability to reliably look up all senders or implementors of a method, etc. (There is the occasional effort in other languages to catch up in this area, such as VisualAge Java with its integrated browsers, but VA/Java was also written in Smalltalk.) Also, to shamelessy toot my own horn for a minute, I've created an object-oriented "stacking" code browser for Squeak/Smalltalk called Whisker. I used Smalltalk to create this because the IDE supports this sort of experimentation well.
So, to claim that Smalltalk is somehow dead or obsolete is obviously false. True, it doesn't have the marketing hype (and market penetration) that Java does, but then, what else does? :-)
(Also, I still consider the language features of Smalltalk to be more technically "advanced" than those of Java. My personal hunch is that if you conducted a random poll of developers with *significant* experience with both languages (say, a minimum of 1 year full-time experience with each), probably 90-98% would agree with this. Of course, the same is probably true of Scheme vs. Java, or CLOS vs. Java, etc.)
Anyway, Smalltalk is obviously not the answer to all programming problems. (I wouldn't use it to write a device driver, for example.) But it is still one of the best (if not *the* best) options for many larger programming problems.
I have to do some of my development in Windows, and boy was finding Dolphin Smalltalk a nice thing for me. And no, I'm not some holdover from the 80s - when I started to do programming in the past couple of years (my training is really in mathematics; I wound up here via a winding path), I looked into various languages, tried them out for some of the things that I need to do, and found that two "old-timers" languages (Common Lisp and Smalltalk) fit many of my needs (which, incidentally, are not at all exotic - I do programming for a small trading firm).
It's a shame that so many people have preconceptions about various languages (often formed on the basis of where they were twenty years ago rather than where they've advanced to today) and therefore avoid checking them out to see what good things they can do.
The story submitter states:
Do you want to know where OO languages like Java, Ruby, Squeak, and SmallScript come from?
Although it is true that Java is heavily influenced by Smalltalk, there are also distinctive parts of Java that are based on Modula. Most prominent of which are the Exception handling mechanism and threading model based on Monitors.
--
Language bigotry has no place in this forum, particularly when propounded in a naive and uninformed fashion. The author of the comment has apparently not built too many enterprise back-office systems, a venue in which Smalltalk has yet to be surpassed, or been following the extraordinary work at Disney R&D with Squeak.
Smalltalk has its place in the cannon, just as does Perl and other languages. It has aged quite well, in fact, among those who have taken the time to learn something about it.
The bigots are free to their own views. I commend to the rest of us, however, a second look. Consider Squeak, an excellent, modern and free Smalltalk implementation. Play with it a bit, and see if you don't begin, at least, to "get it."
I can report that Smalltalk it the best computer language out there despite its only flaw (contained objects don't know about their containers unless you create an explicit link back to the container. That makes instantiation in context more complicated.)
It consists of a few fundamental rules, ruthlessly applied and a huge library of functional objects.
I have done things in Smalltalk that are years ahead of what I accomplished in previous languages (C, COBOL, PL/I, APL, BASIC etc.) because the environment is reflexive and additions are interactive.
Its not that I couldn't have done all this, even in assembler, but that I'd still be scratching out code and waiting on compile-links. With the Smalltalk IDE it was there waiting for me to use it and to build on it.
The closer other languages and IDEs get to where Smalltalk was (because its a moving target,) the better Smalltalk looks.
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
Its now been 3 hours. Attempted to virtualize base methods into my new class, but got distracted by hairs on my right thumb. Also, humming from PC now becoming unbearable. Will go for a walk outside, its sunny and i can hear the birds sing. Mellow/not confusing at all, but nice visuals, especially the traces, which persist for several seconds.
I believe EZBoard is written in Smalltalk
Volkswagen Beetles with code in Smalltalk
Extreme Programming was invented while Kent Beck was consulting on Smalltalk projects
I think that's enough for a start :)
Writing is the only socially acceptable form of schizophrenia. (E. L. Doctorow)
nobody bothered to solve the interesting problems that Java addressed - perfect portability of source and byte codes, a single standard and just-in-time compilation
No, that isn't the case. The free Disney R&D implementation of Smalltalk, Squeak addresses these issues, in some cases profoundly better than does Java.
Indeed, Java hardly offers "perfect portability," the "write-once, run anywhere" claim is marketing hype at its best. It is, in practice, quite difficult to get identical results from any but the most trivial Java programs.
In comparison, a multimedia GUI-based application in Squeak runs pixel-for-pixel IDENTICALLY across a vast array of platforms. I wrote a video game for my wife's birthday in Squeak, complete with animation sound and graphics, from the machine at my Office, a Dell PC Laptop. I sent the image by e-mail to my home, flipped it on her iMac while she slept, fired it up, and it just worked. Identically.
On the other counts, Squeak has a JIT (plus many other nice internal features including object send caching, a sweet and super-fast generational garbage collector), and there is, in fact, an ANSI standard.
Indeed, Smalltalk's source code is virtually identical across implementations. (The syntax, which --in this sense only-- is super-elegant, can be trivially described in a handful of rules). Except for one religious issue (closures for code blocks). Differences in and interoperability problems between implementations derive primarily from the underlying framework libraries provided with those codes -- a problem hardly unique to Smalltalk.
Apparently, page 144 of Flanagan's otherwise Definitive Guide to JavaScript concerning inheritance in that language misled many to believe that multi-level inheritance would not be possible in JavaScript. As it turns out, not only is multi-level inheritance possible, but so are class methods/attributes, meta-classes and even multiple inheritance and fun stuff like instance level programming ala Self. Apparently JavaScript is a lot more capable than most people, even some of the better experts in it, give it credit for being.
It would be great if TIBET got released at the WWW10 conference, but I think registration deadlines for vendors has passed.
Seastead this.
It most certainly does not. I've just spent a semester here at Georgia Tech taking a course on OO-design and -programming, with Squeak being the language of (instructor, definitely not student) choice. Our ongoing semester project was to build an MP3 player (seems cool, right?). However, nobody seemed to notice that people who ran Squeak under Windows (a majority of the class, I believe) had no MP3 support. Oops. They were delayed at least two weeks while someone scrambled to find (or write, I dunno) the appropriate library. Even then, the Windows users had to use a specially-modified Squeak binary.
Squeak itself didn't have an MP3 driver (we call them plugins) until just a few months ago, and it did take some time to sort it out cross-platform (there were also some licensing issues). I thought that they had this sorted by now, but I'm not sure one way or the other to where John Macintosh's excellent work has been ported.
It is most certainly true that C-language plugin code is not automatically cross-platform portable, even when plugged into Squeak.
God, someone just had to bring up Squeak. Ugh.
Wow, someone who uses Squeak in the real world! I hope you're getting paid a very large sum of money to do so, since I can't imagine anyone doing it out of personal preference.
As stated above I'm currently in a OOP class using Squeak, and maybe 75% of the people I know in there would agree with me when I say Squeak has been the worst programming language I've ever had to deal with (out of the seven or eight I've learned).
Interesting, my personal preferences were exactly the reverse, but I suspect this may be the difference between "learning seven or eight programming languages" and building real commercial code in one. Smalltalk is an excellent tool for prototyping and building OO systems, and then for extending the prototype to a solid commercial result, at least in my experience. Perhaps this may not be apparent when writing toy programs for a class in school, but in time, you may come to understand the virtues of a programming language that makes programming easier and more efficient.
The Squeak IDE is one of the most frustrating pieces of software I've ever had to use. Slow, ugly as sin (both the original MVC and the newer Morphic GUI), and bloated as all hell. You must have superhuman patience to be able to create a game for your wife using it.
De gustibus non disputandum est. My experience is much to the contrary. While I am regarded by some as an excellent hacker, capable of generating high quality code with breakneck speed. I have never been as efficient as I was since I started hacking in Squeak, or as happy while coding and debugging.
I met Squeak in early November a year or so ago after it was demonstrated by Ted Kaehler at Hackers. I went home, downloaded it, spent a little time with the old Smalltalk books, and had the product running in production form in time for her December 26 birthday, and still attend all the holiday parties.
Since that experience, in which I was a rank newbie to Smalltalk (and now, I realize to OOP -- though I had been writing in OOPLs for years), it has only gotten better.
I suppose we will have to take our respective positions as reasonable people, and agree to disagree.
It's *really* hard to believe that Squeak was supposed to become the language used on the Dynabook, If a bunch of college students can't get the hang of it, I don't see how elementary-school kids could either.
I'm trying to be polite here. MMy experience is to the contrary. For example, my 9-year old son codes in Squeak, having picked it up, indeed with some decent coaching, in just a week or so. His code is awkward at times and unpolished, but hey, he's actually writing code and thinking its fun.
Today : Smalltalk is crap because its too old, and we have other languages that do the same...
Morale of this? : 90% of Slashdot has the mindset "The way I do it is best. Anyone else doing it a different way is an ignorant asshole."
Pax,
White Rabbit +++ Divide by Cucumber Error ++
free experimental electronic music netlabel at www.viablehybrid.com
It most certainly does not. I've just spent a semester here at Georgia Tech taking a course on OO-design and -programming, with Squeak being the language of (instructor, definitely not student) choice. Our ongoing semester project was to build an MP3 player (seems cool, right?). However, nobody seemed to notice that people who ran Squeak under Windows (a majority of the class, I believe) had no MP3 support. Oops. They were delayed at least two weeks while someone scrambled to find (or write, I dunno) the appropriate library. Even then, the Windows users had to use a specially-modified Squeak binary.
God, someone just had to bring up Squeak. Ugh.
<rant>
Wow, someone who uses Squeak in the real world! I hope you're getting paid a very large sum of money to do so, since I can't imagine anyone doing it out of personal preference.
As stated above I'm currently in a OOP class using Squeak, and maybe 75% of the people I know in there would agree with me when I say Squeak has been the worst programming language I've ever had to deal with (out of the seven or eight I've learned).
The Squeak IDE is one of the most frustrating pieces of software I've ever had to use. Slow, ugly as sin (both the original MVC and the newer Morphic GUI), and bloated as all hell. You must have superhuman patience to be able to create a game for your wife using it.
But good luck trying to turn it into a binary to distribute to your friends, because you can't! And don't ask them to try and learn the language either, because there's no documented API, and the purportedly self-commented code really isn't. Did I mention that that same code sometimes breaks on you, fresh from an install? Yep, believe it.
Also (and yes, I realize I'm reaching here), but the syntax is all backwards. It's not sufficiently like natural laugnage to be easy for beginners to use, and it just frustrates experienced programmers used to nearly every other language (i.e., based on C). It's going the way of Hypercard, Apple's old natural language-based multimedia programming environment.
It's *really* hard to believe that Squeak was supposed to become the language used on the Dynabook, If a bunch of college students can't get the hang of it, I don't see how elementary-school kids could either.
</rant>
the coolest club on
Java is the direct decendent of (some would say bastard offspring ;-) of C and Smalltalk.
-WolfWithoutAClause
"Gravity is only a theory, not a fact!"