Doing Wiki is not only addictive, it's also contagious: Several people have been known to catch Smalltalk here:
Bill Trost (recatch it, actually)
Richard Emerson (who once had it at university, too)
Dave Harris (had it for 3 months 10 years ago)
Stephan Houben (just toying around with Squeak)
Robert Church (also just toying with Squeak)
Laurent Bossavit (looking for a good excuse to learn Small Talk)
Chelle Hine (playing with Dolphin Smalltalk, and loving it!)
Syver Enstad (on and off Dolphin for some time, very nice!)
Chris Schreiner:
[looking for a good excuse to put Smalltalk away]
Peter Merel: Can't really build Ajax Smalltalk without learning proper Smalltalk Language, can I?
This page is for exchanging experiences and tips.
-TUTORIALS/BOOKS (See also Definitive Smalltalk Books):
I started by downloading two Web-tutorials, one by IBM (not that good) and one for GNU Smalltalk (I liked that one; ~50 pages of good text).
The squeak quick reference is www.gate.net
As for books: After consulting a few "suggested readings"-list I decided to start with Smalltalk Objects And Design by Chamond Liu (I have just ordered it). If I then feel I need more on the language itself, I'll buy Smalltalk The Language And Its Implementation; if not, I'll skip that and go straight to Smalltalk Best Practice Patterns. Good plan, or any suggestions? --Falk Bruegmann
The following links seem to go stale quickly, but we can try to keep them up to date. (Note: we only need a few active links, not an exhaustive list.)
GNU Smalltalk Tutorial
www.cs.loyola.edu (html, txt, ps)
IBM Smalltalk Tutorial
See also Smalltalk Implementations
CODE TO STUDY:
I just ran across the following on Plumbin Simulation, although I have yet to track it down ("too busy"):
Just wanted to let you know that the sources for Plumin' have helped me understand Squeak better. I've gotten the sources running and have started enhancing. I added a Mosaic Controller? object which pops up a menu allowing one to add new tiles to the model. Its helping me understand how to work in the MVC enviroment. Thanks again. -- Erik Husby
I feel slightly feverish, my stomach is queasy and (sometimes) Java's non-typesafe containers seem to be a plus. Am I catching it?
Also, It would be nice to more readily consume the examples I see on Wiki. I easily read sample code in many languages that I don't know at all, but simple Smalltalk examples seem to require more effort. Maybe I'm just getting old. :-)
As for Smalltalk environments, free is nice, small footprint is essential. Squeak takes less than 10MB of disk on a 386-based UNIX architecture, and that's without trying to throw anything (like Morphic) away. Dolphin 1.1 takes under 6 MB on an NT workstation, not bad.
All right, I had already figured out 95% of the basic Smalltalk syntax after all. I just didn't know that I knew! Then there is the browser and the library...
-- Kiel Hodges
For what it is worth, as an exercise, I ported Kent Beck's Testing Framework to Squeak Smalltalk. Nothing like getting into the gory details of error handling as a learning experience...
And, I finally broke down and bought a book -- Smalltalk The Language And Its Implementation. I even managed to find a used copy. Alas, every one of the dozen or so copies of Smalltalk Best Practice Patterns Powells Books had were new, which has to tell you something...
Update: over a month later, I walk into their Beaverton store to pick one up regardless of the price, and lo and behold, there's a used copy sitting there.
-- Bill Trost
I've got to ask a silly question here. Why are there three or four ports of Testing Framework to a couple of different Smalltalks. Are they all really that different? The syntax seems very straightforward in Squeak and the book that I have. Is there that much variation?
Each Smalltalk has its own slightly-different-but-largely-equivalent exception handling mechanism. The testing framework makes extensive use of it, so I suspect that this is the reason. --Anthony Lander
-- Michael Feathers (read the other day that the motto of Smalltalk in the 80s was "write once, run anywhere." Amazed that phrase was lifted for Java in toto)
Hmm, interesting. I wonder if that is sufficient basis to challenge Sun's trademark on the phrase.
Anthony Lander is mostly right -- the error handling mechanisms vary (in my opinion, rather widely) between Smalltalks. Porting to Squeak Smalltalk was sort of odd -- the one port that I was able to file had vastly different error handling, and I had to look at Kent Beck's other port to do actually make the error handling work.
As I recall, there were a couple other small changes, but I forget the details. -- Bill Trost
So how's it going, everyone? I ended having work to do, and haven't touched Smalltalk in a month or so. -- BT
Re: free Smalltalk versions. What ever happened to Smalltalk Express (the original 16-bit Digitalk dialect)? It used to be available from the Parc Place Digitalk web site. - Joseph Pelrine
I have a newbie question - what do you do about the User Interface? I'm starting with Visual Works (partly guided by comments here). It has a bunch of "looks" and a bunch of "feels", but none of them seem to be the native Win95 UI that I am used to.
For example, menus pop up on right-mouse-down when in Win95 they should pop up on right-mouse-up. I click, the menu appears and disappears - and if I'm unlucky it went and did some command that I never even saw. Selecting words is the opposite. Double-click should select the word on mouse-down, so that you can hold it down and drag to select multiple words. Instead VW selects the word on mouse up and has no multiword select that I can find.
I find this very off-putting, because it is non-standard for my platform. I suspect this kind of thing is part of the reasons Smalltalk does not appeal to mainstream programmers.
What do real Smalltalk people do about it? Do you put up with it? Is there an well-known extention I can download to make it work properly? Should I try to write my own? I'm tempted by the latter, but I'm worried that it will cause me problems if I ever have to Pair-Program with real Smalltalk who stuck with the weird UI. -- Dave Harris
They either put up with, fix it (there's an improved Win95/98 look that ships with the 5i non-commercial, except that the browsers in 5i are kind of half-redone, so you might want to stick with 3.0 anyway) or they use a different dialect. If you're big on Windows look-and-feel you'll probably prefer Dolphin Smalltalk to Visualworks regardless, and Dolphin is arguably a better choice for a beginner (I liked their tutorials). Note: I sprung for the incredibly expensive commercial version of Dolphin. -- Alan Knight
I have been toying with Squeak Smalltalk, which also has a non-standard UI. A nice learning experience is to try and change the UI so that it resembles more the other windows on your screen. It's actually rather simple to do. -- Stephan Houben
Thanks. I was avoiding Dolphin because I expect to deploy on Linux. I might try it anyway, as I gather non-UI stuff is pretty portable.
I've noticed people on Wiki talk about having buttons in their MNU dialog that creates the message concerned. I think it would help to have a development image that included all that kind of stuff - a tool configured as real Smalltalkers actually use it. Having the Refactoring Browser is a good start. -- Dave Harris
While I'm ashamed at its astonishingly high price, Visual Age Smalltalk (from IBM) does the best job (in my opinion) of adopting the native platform look and feel. The Visual Age user interface is coded in terms of a "Common Graphics" package (coded around Motif) that is in turn expressed in each of the platforms it supports. The code is all open and therefore easily extensible and readily customizable. No Mac version, though. -- Tom Stambaugh
After looking into Smalltalk a little, and reading two books, I got somewhat distracted, Python Language among them. Now, Bistro Language may just bring my attention back to Smalltalk. --Falk Bruegmann
I have downloaded Dolphin and the free Visual Works, and I fool around with the tutorials from time to time. It's sad, but the only way I'll ever invest the time to really get into the language is if I find something it can do for me (professionally or personally) that I couldn't do just as well with other languages. For instance, it was easy to find excuses to learn Perl - nothing else will do for munging text files, which you always need to do at some point in your life or career.
Does anyone know of a port of Kent Beck's testing framework to Dolphin 98?
For example, menus pop up on right-mouse-down when in Win95 they should pop up on right-mouse-up.
For what it is worth, the "correct" behaviour in a Wimp Interface is for the menu to come up on mouse down and disappear on mouse up. The idea being that a menu is a mode, and that the fact that you are holding the mouse down is a direct physical feedback to indicate that you are in this mode.
Can't blame Smalltalk that Windows got it wrong. ;-)
I have noted the smiley, but the definition of "correct" for a "look" that's supposed to be emulating Win95/Win98 is whatever the emulated system does. Arguing "ah, but ours is better theoretically" just doesn't cut it. Every time I go look at VW I get frustrated by the way it expects me to re-train my fingers and go back to Dolphin Smalltalk. Forcing me to think about something that's normally automatic and so interrupt whatever I was trying to do is really distruptive -- Paul Hudson
I just added a note above about Visual Age Smalltalk that you might find relevant -- Tom Stambaugh
Holding down buttons a lot of the time while trying to do things (make a selection) causes quite a bit of stress in a few specific muscles. It also behaves badly in high load situations. Besides, the mode "theory" is based on what? Usability? Surely not. And why base a User Interface on anything else?
Today was a watershed for me - after over a year of toying with Dolphin I finally wrote my first useful program in it. A Slow Learner for sure. The program is a UI front-end to a Perl script that parses C++ source files to generate lists of headers on which the source files depend directly or indirectly, and is helping me in Refactoring Cpp To Reduce Dependencies. (I'm thinking of reimplementing the Perl script in Dolphin itself so I can update the dependency lists more dynamically.) -- Laurent Bossavit
It'll be interesting to find out how to handle regexes. So what are the options?
get some C-based regex library, turn it into a DLL and link against it, then wrap it in some Dolphin classes
find a way to use SmaCC to do it? (This sounds like terrible overkill.)
write your own regex library in Dolphin
find some open-source regex library for Smalltalk (where?)
I'm building a Learning Squeak tutorial as I'm learning Smalltalk. -- Sean Oleary
Where did this get to Sean?
See original on c2.com