The first Smalltalk system I ever used was Smalltalk/V from a company called Digitalk. That was back in the late ‘80s and early ‘90s. Prior to that I had programmed mainly in Pascal with occasional forays into C, Modula-2 and Prolog. None of this had prepared me for Smalltalk.
With its tightly integrated environment (all graphics, overlapping windows, class browsers, interactive program development and mouse-control) the Smalltalk/V IDE was totally unlike the text-based, keyboard-centric write-compile-debug tools I’d used previously.
The Smalltalk language was just as much of a shock to the system. No function calls, just ‘message passing’; no free-standing procedures, just tightly-bound methods; no ‘main’ loop - in the Smalltalk world all classes are equal and a program can, in theory, start anywhere it likes - just create an object of your choice and off you go!
Some of Smalltalk’s big ideas have subsequently permeated into other languages in the programming mainstream; some, but not all... For me, it is certainly the case that programming in Delphi, say, or C# feels like a totally different activity from programming in Smalltalk.
So what about Ruby?
There is undoubtedly something about Ruby that ‘feels’ different from languages such as Java, C#, C++ or Delphi. To some extent, that might be explained by the fact that C++ and Delphi began life as procedural languages (Pascal and C respectively) onto which they ‘bolted’ additional layers of objects. The end result is a hybrid with some procedural features and some OO features. But Ruby (like Smalltalk) was built on objects from the ground up. Even more ‘pure’ OOP languages such as Java and C# are nowhere near as Object-obsessive as Smalltalk.
So is Ruby truly the naturally successor to Smalltalk? And if so, is that necessarily a good thing?
In order to answer those questions, we’ll need to take a close look at Smalltalk itself. To that end, I shall shortly be starting a series of articles here on the Blog called Ruby The Smalltalk Way. If you are unfamiliar with Smalltalk, fear not, I’ll be providing a very gentle introduction. You won’t have to do any hands-on Smalltalk coding if you don’t want to (though if you are feeling adventurous, you might want to give it a try - Smalltalk really is a lot of fun!)
Dolphin Smalltalk - the 2007 face of Smalltalk. But what has it got in common with Ruby?
I’ll put the first part of the series online in about a week. If you can’t wait that long, you might want to grab a free Smalltalk IDE to try it out for yourself. In the series, I’ll be using the free Windows system, Dolphin Smalltalk (Community Edition). Alternatively, you could try out the cross-platform Squeak Smalltalk.
I shall also be referring to the Smalltalk/V Tutorial which is available for free download (along with a number of other fine books) from Stéphane Ducasse’s site, Free Online Smalltalk Books. If you also need a simple introduction to the Ruby language, please download The Little Book Of Ruby from this site.
More Ruby and Smalltalk soon...