By Andy Berry
I have been developing software since 1969. I have been using Smalltalk since 1988.
I have helped develop applications ranging from industrial machine controllers, through 3-D graphics and onto complex business applications for industries such as insurance, banking and the utilities. Often, these require the use of concepts from fields such as mathematics or artificial intelligence. Some of these projects are described on Andy Berry's website.
Many 'smalltalkers' (the name for experienced Smalltalk developers) have considerable experience of other languages.
There are, I suppose, three key issues:
In this short essay, I'm going to give my answers.
In the 1980's, there was only one computer magazine worth reading - the venerable 'Byte'. In about 1986, they had a special issue on Smalltalk.
"Ah, ha," I thought, "that sounds fun!" Some time later, I had to develop a prototype of a new product (actually, it was a very intelligent printer driver that included DTP like functions) that was needed for a demonstration in two weeks.
"Ah, ha," I thought, "let's see what Smalltalk can do!" Two weeks later, the demonstration was so successful that a major European computer company brought the entire company and I was out of a job! "Never mind - I know what Smalltalk can do " I said, when I'd found another job.
I then went off and did other things for a while but I always remembered Smalltalk and looked for opportunities to use it again. It seems a funny thing to say, doesn't it? After all, do you remember COBOL or Fortran (this is really showing my age, isn't it!) with affection? No, you probably think "Thanks but let's move on" as you move through generations of languages.
My opportunity came in 1993 when IBM were just starting what developed into one of the largest Smalltalk projects ever - CSS. I have been using Smalltalk almost continuously ever since and I still enjoy it as much as when I started.
Well, I could give you a technical answer but the main reason I want to continue to use Smalltalk is: It's good fun!
It's fun to be able to understand what your code is doing. It's fun to have access to nearly all the source code as well as being a source of inspiration when you're stuck. It's fun to be able to 'get under the hood' if you need to. It's fun to see just what you can do with such a simple language - five statements, isn't it? It's fun to see a complex application coming together as you develop the components (that is, classes that implement windows and business objects).
It's also a language that allows you to be very productive. Who'd have believed that I could develop a fully functional compiler, working on my own, in only four months? Who'd have believed that a team of four could develop an insurance application (implementing the full business process) in three months? Or an HTML browser in about six weeks? These are real examples, being used in real businesses as you read this.
Smalltalk is more than just another programming language. The concept of the IDE (Integrated Development Environment) originated wth Smalltalk and the tight integration of modern IDEs with the lanaguage is a major benefit for Smalltalk developers. But, Smalltalk is more than even this...
The Smalltalk philosophy of 'read-mostly, write-little' contributes greatly to the productivity you achieve but it also does more than this. It makes development an intensely satisfying activity. I often look at the code that others have written and think "Wow, all this for only 50 lines of code!" It positively encourages you to strive to do more with less. Sometimes, I get the feeling that other languages do the opposite.
I think most Smalltalkers don't trust Java. We bear in mind its history - cobbled together out of C++ with a half understood nod in our direction - and the lack (as of today) of any complex application developed in it.
Perhaps 'son of Java' will appeal more. But, today, we'll stick with Smalltalk and continue to be as productive and have as much fun as now.
I'm really keen to hear what you think of this. Please email any comments to: email@example.com