Doing Wiki is not only addictive, it's also contagious: Several people have been known to catch Smalltalk here:
-TUTORIALS/BOOKS (See also DefinitiveSmalltalkBooks):
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 http://www.gate.net/~werdna/squeak-qref.html
As for books: After consulting a few "suggested readings"-list I decided to start with SmalltalkObjectsAndDesign by ChamondLiu (I have just ordered it). If I then feel I need more on the language itself, I'll buy SmalltalkTheLanguageAndItsImplementation; if not, I'll skip that and go straight to SmalltalkBestPracticePatterns. Good plan, or any suggestions? --FalkBruegmann
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
See also SmalltalkImplementations
CODE TO STUDY:
I just ran across the following on PlumbinSimulation, although I have yet to track it down ("too busy"):
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... -- KielHodges
For what it is worth, as an exercise, I ported KentBeck's TestingFramework to SqueakSmalltalk. Nothing like getting into the gory details of error handling as a learning experience...
And, I finally broke down and bought a book -- SmalltalkTheLanguageAndItsImplementation. I even managed to find a used copy. Alas, every one of the dozen or so copies of SmalltalkBestPracticePatterns PowellsBooks 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.
-- BillTrost
I've got to ask a silly question here. Why are there three or four ports of TestingFramework 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. --AnthonyLander
-- MichaelFeathers (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.
AnthonyLander is mostly right -- the error handling mechanisms vary (in my opinion, rather widely) between Smalltalks. Porting to SqueakSmalltalk was sort of odd -- the one port that I was able to file had vastly different error handling, and I had to look at KentBeck'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. -- BillTrost
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 ParcPlaceDigitalk web site. - JosephPelrine
I have a newbie question - what do you do about the UserInterface? I'm starting with VisualWorks (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. -- DaveHarris
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 <grin> commercial version of Dolphin. -- AlanKnight
I have been toying with SqueakSmalltalk, 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. -- StephanHouben
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 RefactoringBrowser is a good start. -- DaveHarris
While I'm ashamed at its astonishingly high price, VisualAgeSmalltalk (from IBM) does the best job (in my opinion) of adopting the native platform look and feel. The VisualAge 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. -- TomStambaugh
After looking into Smalltalk a little, and reading two books, I got somewhat distracted, PythonLanguage among them. Now, BistroLanguage may just bring my attention back to Smalltalk. --FalkBruegmann
I have downloaded Dolphin and the free VisualWorks, 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 KentBeck'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 WimpInterface 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 DolphinSmalltalk. Forcing me to think about something that's normally automatic and so interrupt whatever I was trying to do is really distruptive -- PaulHudson
I just added a note above about VisualAgeSmalltalk that you might find relevant -- TomStambaugh
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 UserInterface 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 SlowLearner 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 RefactoringCppToReduceDependencies. (I'm thinking of reimplementing the Perl script in Dolphin itself so I can update the dependency lists more dynamically.) -- LaurentBossavit
It'll be interesting to find out how to handle regexes. So what are the options?
I'm building a LearningSqueak tutorial as I'm learning Smalltalk. -- SeanOleary
Where did this get to Sean?