DRAGON CITY  SYSTEMS

Smalltalk Programming Language
Written June 2006

I had my interest in Smalltalk (ST) renewed by a comment made by a Ruby blog in 2003. I had not played with ST
since the days when MS-DOS was king ! Then, I had tried the famous Smalltalk V, which was an amazing achivement
considering the underlying operating system and hardware, however, I did not continue with ST as it did not include any easy way to create end-user GUI and Database programs let alone Reports. ( VB & Paradox for Windows, etc were the development tools of choice then, Delphi came later).

I again became interested, in 2003, in Smalltalk while looking for a programming  tool for a unix/linux
environment, I had used Ruby with FXRuby to some good effect, but wanted a more complete solution, Smalltalk appeared to fill this need.
In some ways I'm looking for a Delphi type development tool -- well developed base language, GUI IDE and End-User  GUI tools, easy Database Access, access to Internet Services ( mail in particular), Report Writer. Of course, Ruby fails the IDE/GUI
but they are working on it. I had expectations that after approx 30 years development Smalltalk would cover my needs.

A general comment on Smalltalk

In my opinion Smalltalk is a interesting language, and has many good features, but it suffers from a number of problems
that the various Smalltalk vendors try to gloss over.

I see the language in three separate parts which need better explainations in their own right and how they fit together.
One of  most misunderstood features of Smalltalk is the Image ! Programmers coming from a more traditional language, of any flavour,  are looking for a file based stucture, eg Main + subroutines,  its up to every Smalltalk  implementor to have a simple overview, with simple diagrams! of the Image concept and how it differs from a file base system. It really is not that complex -- just different. One Smalltalk proponent wrote "many new programmers often ask 'where is my  code?' " - I think a more profound question is "where is my bl**dy Program !!".  After all writing a program that does something is what it's all about.

Even finding a reference text  containing the language syntax was pretty difficult, however, I can recommend David N. Smith's book "IBM Smalltalk - the language".  ( which does not address the GUI part - its the language reference)

Unfortunately, the beginner is tossed right into the IDE without much hand-holding and expected to find out how 'cool' Smalltalk is from a simple SystemTranscript entered code examples. None of the books, etc, I found actually explained the relationship between the above parts and how the Smalltalk 'image' brought all these parts together as one seemless
environment. Which, after all is the real power of Smalltalk. All the IDE's are overly complex, far too many menu options.
A bit of 'refactoring' ( a favourite Smalltalkers phrase :-) is definitely required across all versions.

The end-user GUI interface methods are all different, only adding to the confusion when you try a bit of published code in your version of Smalltalk !. I can't see why a 'standard'  method set for field access, form navigation, widget usage , etc, etc cannot be defined commonly across all versions.  I don't care how a particular version actually does it,  just so my programs  have common methods.

Apart from VAST, all the Smalltalks seemed to ignore the Reporting aspects of computing with Smalltalk. One vendor recommends using Crystal Reports! I'm not sure, but I think Crystal Reports cannot actually process data held in a Smalltalk Image.

Vast's technique to access a ODBC database is just miles ahead of any of the of the other Smalltalks. I found that VWST's own examples just did not function properly. (Hung the system).

Smalltalk Versions

After doing a search of available ST's  I found a few of interest to me:


Visual Works (VWST) from Cincom
Windows, Linux, Mac, etc

Complete commercial product, somewhat complex IDE, flakky end-user GUI tools but is being rewritten (Pollock). No report writer.
Excellent support.
Works well on every o/s I tried.
Visual Age Smalltalk (VAST)  from Instantations (ex IBM)
Windows, Linux,  etc
Complete commercial product,  somewhat complex IDE, good end-user GUI tools , report writer, easy database connectivity.
Support a bit suss.
Works well on Windows,  really poor on Linux, yet to try on Solaris.
Dolphin Smalltalk from Object Arts
Windows only.                                     
Complete commercial product, well coupled to Windows, a worthy replacement for Visual Basic. I would have continued with Dolphin but all my work is based upon Unix/Linux.
Squeak Smalltalk
Windows, Linux, etc

A 'open source' Smalltalk Development which although it functions has an appalling  user interface. Many add-on tools just dont work.
GNU Smalltalk
Various, I assume it can be recompiled everywhere.
No GUI , but perhaps useful as a scripting tool. So you can use ST everywhere you wish.

There are/were other versions but a number seem to be 'ex'-versions and often defunct ( 2006), but you might
find a version that suits your needs.

Even the fully commercial versions have 'not commercial usage'  unlimited versions available. This allows you to really try out ST using a real version , and I've tried all the above !, just because I could.

If you intend to use Smalltalk for commercial development, then you *must* check out the differing licience arrangments, they could have a major impact on your choice of product. 

Experience with various versions:

Dolphin : A very well thought out and developed Smalltalk. I personally do not like their concept of MVC (Model,View,Controller), but had I been working in the Windows environment only then this would be the version of choice. Other ST's offer Windows versions, but Dolphin is quite seamless in its Windows access. As you would expect. Excellent value for money.

The vendor is very active in supporting this product, and I've noticed they are timely in responding to user queries.

Easy to install.


Squeak: This version of Smalltalk is a interesting development 'gone wrong' in my opinion. It has the most apalling
user interface, gross misuse of colour, ( just because modern screens can display millions of colours, you don't have to
use them all!),  really bad fonts ( why can't I use the nice ones supplied with the underlying o/s ?), actually looks like crap
( the teeny-bopper magazine style, with awful icons, just does not cut it) . Pity really. 

Also many of the available add-ons either don't load or install properly or just don't work at all!
A major clean out is required of many of these useless addons.

However after you overcome its many deficiencies you can write Smalltalk programs. And of course its 'free', but that depends upon how you cost your time sorting it out.

I try it out from time to time, when updates appear to have been done. ( then drop it again)

Easy to install.


VisualWorks :  Offered by Cincom, has the longest  Smalltalk development of any of the offerings, but even so they have not developed a readily accessable Smalltalk version and has a very complex IDE and many features are not well developed. Over time they have fallen into "more features are good" development cycle, and it shows.
Its  documentation is vast, but often inaccessable as the indexing is so poor.

The IDE is rather complex,  and definitely a put off at first look. After you've figured out that you really only need about 1/10th of the menu options, its pretty good.

However, VWST works, and works well on every OS I tried it on -- Windows, Linux & OpenBSD, Solaris 10.

Cincom is really supporting this product, and I have had generous support  from my local Cincom Office even tho
I am using the NC version, and I dont expect any support, and it would have to be the first choice in a non-Windows environment or cross platform development, also its cross platform look & feel is consistent which is very nice.

The end-user GUI development tool is very ordinary, I found serious problems with it after only a few weeks of testing, GUI drag&drop would run amock, explainations on some typical widgets really lacking and some rather complex to setup.  Cincom are developing  a new GUI tool called "Pollock", but so far any development documentation is seriously lacking, I'm afraid the infrequent  'fire-side' chats by its developer just dont cut it.  The Pollock end-user GUI tool is not defined as yet. Time will tell how it goes. Its definitely a very important part of VWST's future.

Easy to install. And consistant across all o/s's.


Visual Age : Originally developed by IBM, VAST had a long history of development in IBM, but they have 'flicked passed' the product onto Instantations in recent times ( 2005/6), it remains to be seen how serious they will be in supporting the product line as they ( like IBM) are a bit JAVA centric.

 However, I really like this version, it has the developer and end-user  very much in mind and the 'visual-age' interface is really excellent. It does take a litte time to 'get into' the technique of  using components by drag-and-drop linking and finally attaching you own code, but surely this is what GUI programming is ALL about ??

The support from Instantations is open to question, they are not really interested in answering questions from NC users,  apart from initial contact,  but when I demurred on paying for what I percieve to be a buggy product ( esp under Linux) when contacted by Sales, you are somewhat 'persona non grata' :-).  Cincom on the other hand are very active in end-user contact via both a Blog site and through user groups. The Cincoms Product Managers blog by James Robertson is always worth a look.

The IDE is very complex, like VWST, but at least VAST puts you into a developer environment on start up, so most of the menu options can be ignored until you actually need them. I like the way that creating a new program is so easy, as is getting back to it for changes. ( Other Smalltalk versions should take note.)

Huge source of documentation,  much of which a pretty bad. IBM was never good at clear documentation, even from my 1970's COBOL experience -- if IBM could make documention 
confusing , they would !!
Not even a good base reference manual.

The hardcopy book "IBM Smalltalk - The Language" by David N. Smith is a vital resource for any VAST user.
ISBN 0-8053-0908-X.

Pity that VAST only really works in Windows !! -- The Linux version (I used SUSE 9.3)  is full of bugs, crappy user interface, windows are'nt drawn properly,  icons not displaying, etc. VAST was the only product I have ever install under Suse that had any problems. Really, they have to do MUCH better !!. I'm about to try out VAST under Solaris,
it did not install under OpenBSD (unix). ( VWST and Squeak did)

The installation technique is very ordinary (bad actually), as you have to dig into a number of documents to find out exactly how.  Desperately needs updating and that  information brought nearer the top of release documentation !
They should go and install VWST and learn how its done!

Not so easy to install.


GNU Smalltalk : had a look just for interest really, no IDE or GUI tools, but could be useful as  scripting tool if you desired to stay in the Smalltalk idiom.  Perl, PHP, Ruby are much better for the task tho.

Easy to install.


A book on Smalltalk

I wrote this book "Smalltalk for mere mortals" over the period 2004/5  after I became  very annoyed at not being able to find a ready reference on how to write a program in Smalltalk!

I scoured the various online books ( some good, some not very useful) , sourced a few real books, and the tutorials
(which often were far too simplistic in that they mostly used the Transcript area to write code and never actually ended up with a complete program!). I got really annoyed when one tutorial had the cheek to say , "we really should be doing XXX, but we wont!" -- as if the reader was too stupid to understand the need for doing XXX.

So my book is really a collection of organised notes and a ready reference to Smalltalk  base methods, its not complete and never will be , but I find it quite useful. Its based around VWST from Cincom as I was trying that out that  version at the time I collected my notes. 
( I was using VWST 7.2.1 NC at the time, and have tried every release since then).

It contains :

My Smalltalk Book (.pdf) approx 700KBytes

Below is a example input file for the program ScanTex , it is a LaTeX generated index file for the book.
So if you decide to develop ScanTex from the book here is a test file so you dont need TeX installed. I have not included the code for ScanTex as I feel that by working through the ScanTex chapter and re-entering the code will be more instructive than simply loading it into the Smalltalk image. ( Its not very large, BUT I have not revisited the code or book since 2005 so maybe the code does not work with the current VWST NC version -- be warned ! Might work with other ST versions)

A example test datafile for ScanTex program

Useful books on Smalltalk

The followng books are those I found useful , to varying degrees, on Smalltalk ( of various flavours) :

Summary:

I find Smalltalk a very interesting development environment, but quite difficult to 'get into', but strangely satisfying
once you do!  It does suffer from a perception of elitism in that too often we are told the "Smalltalk had <insert language feature of choice here>  x years ago", and for a while a sneering atitude to Ruby, et al as the 'curly bracket crowd'  which fortunately has petered out in recent times. ( Just say you use SIMULA! -- that'll shut them up !!)

Smalltalkers should realise that (other) people just dont care ! -- just get over it ! Until Smalltalk can show other programmers the advantages of using Smalltalk , Smalltalk will remain just that : Small Talk.

I think that the Smalltalk Vendors should collectiveley fund having a online book written that covers all their versions with current information on the base Smalltalk Language plus appropriate chapters on each vendors version. Showing the development of the same program, a small parts ordering/invoice system perhaps, using Multiple Forms, Database access  using their products 'best' technique, Reports, Internet Mail, etc.

"Developing Visual Programming Applications using Smalltalk" by Michael Linderman comes close as he covers a number of  (then) mainstream Smalltalks, but of course it is rather dated (1996).  Of course such a book would need updating.

Bad documentation is just as much a bug as bad code!


Brett S Hallett
dragoncity@impulse.net.au
Written June 2006