Issue #7

2006-12-24 2006-12-24

What is Smalltalk?

Where is the Editor? Where is the Compiler? How can I compile and run a program?

Forget for a while about Smalltalk as a programming language. Avoid, for a while, comparing it with other programming languages and their tools. We are going to talk about something pretty different.

What is Smalltalk? Smalltalk is a different kind of computer. One that is not based on the concept of program.

But wait a minute, doesn’t Smalltalk run on regular computers? Yes, it does. But Smalltalk lets you forget about a CPU that loads programs from disk to RAM, in order to execute them and such.

With Smalltalk, your computer becomes a virtual place filled with things. You can interact with these objects, and ask them to perform actions. You can inspect them, and study their behavior and relationships. Of course, you can also modify their behavior and relationships.

Everything in Smalltalk is an Object. For example, the Numbers and Characters. But also the Editor and the Compiler are Objects. The windows and menus, with their scrollbars and buttons and stuff are Objects too. Pieces of code are also Objects. In Smalltalk, even True and False are objects.

Most computers run Operating Systems. But the entities of regular Operating Systems are not uniformly available for inspection, study and modification. This would break the basic ideas of Smalltalk! Therefore, while in Smalltalk, Smalltalk becomes the Operating System. You can interact with and modify such things as Files and Directories the same way you manipulate any other object.

As the whole Smalltalk system is made with Objects, and all Objects can be studied and modified, the Smalltalk system hides no secrets from the user. Any aspect of the system can be modified to suit the user needs.

To continue, you need a Smalltalk system. Let’s use Squeak. You can go to http://www.squeak.org/Download and get Squeak for your platform. The set of all the available object in a certain Smalltalk environment is called the ‘image’. The standard Squeak image includes really a lot of objects. Perhaps too many for a beginner. You can use it anyway, or you can get www.jvuletich.org/Squeak/EToysFreeMorphic/NoEtoysImage-jmv.zip. This is a reduced image I like to use. Launch Squeak.

Click on an empty area of the screen to open the World menu. Select ‘Open…’ / ‘workspace’. There type 3+4. Select it. Right click over it and select ‘print it’. If it shows 7, you have written your Smalltalk “hello world” program.

Now you can try the first Smalltalk example in The Weekly Juan #6. Copy and paste the code in an empty workspace. Now select it and right click ‘do it’. Voila. It works.

Now let’s try the second version. This one includes some real Smalltalk programming. This is, adding behavior to existing objects. We’ll add new behavior (methods, code) to FFT objects. This is done by modifying the FFT class. In Smalltalk all objects belong to some class, that defines its behavior. Please note that classes are Objects too (as everything else).

Open the world menu and select ‘Open’ / ‘browser’. What you see now is the Smalltalk browser. The main tool for reading and writing Smalltalk code. The top half of the browser has four lists. From left to right we have:

- The System Categories. The items here show groups of classes that belong together. Do as follows: Right click / ‘find class…’ FFT <Enter>. The other 3 lists get filled.

- The Classes in the selected Category. Class FFT is now selected.

- Method categories. Methods in a class are grouped together in method categories. You can create a new category if you wish, named for example ‘extras’.

When you select a category, in the bottom half of the browser you see a method template. Replace the selected text with the magnitudes method. Right click / ‘accept’. We have added a new method to the class. Add the remaining 4 methods.

All the methods appear in the fourth list, the methods list.

Now you can try the second Smalltalk example, that uses the newly added methods. Do it in a workspace as before.

After this, you can use the browser to see what other classes are available. Some of the most interesting objects in Squeak are graphical objects, ‘Morphs’. Read about them! Read my introductory article on Morphic.

You can also check the other links below Other Squeak Projects in http://www.jvuletich.org/.

If you want to better understand the ideas, read http://users.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.html. In Spanish at http://www.smalltalking.net/Papers/stDesign/stDesign.htm.

Other great links for beginners are:

http://www.squeak.org/

http://www.iam.unibe.ch/~ducasse/FreeBooks.html

http://en.wikipedia.org/wiki/Smalltalk

http://kb.iu.edu/data/aeya.html

http://www.webopedia.com/TERM/S/Smalltalk.html

http://www.whysmalltalk.com/articles/collins/what.htm

http://www.smalltalk-central.com/showDocument.ssp?section=Articles&name=What%20is%20Smalltalk%3F

To know more about the history of Smalltalk, read

http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html

http://www.parc.xerox.com/about/history/default.html(at the bottom of the page, the seventies).

Well, I hope you enjoyed this, and you are wanting to know more about Smalltalk!

Juan Vuletich