Is Ruby The New Smalltalk?
I’ve lost count of the number of times I’ve heard people comparing Ruby and Smalltalk. In programming books, blogs, newsgroups and magazines articles, the close affinity with the two languages often seems to be taken for granted. But how close are they really...?
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!)
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...
Same engine, different body... Ruby is the bridge between the Smalltalk world (which remains one of the greatest achievement of computer science for the past 30 years) and the more conventional languages that are de facto standards of the industry today.
I’m mostly use Squeak but the Dolphin browser looks very good!
Ruby isn’t a successor to Smalltalk, it’s an imitator. To call it a successor would be implying it was better, and it’s far from it. It is a dialect of Smalltalk, with a pythonish syntax. I call it a dialect because its object system is a direct copy of Smalltalk.