April 11, 2010

The Why of Smalltalk

I began to learn Smalltalk in an academic way on university. So I first valued its technical qualities like easy syntax, homogenous design, dynamic behavior, etc. The first questions I faced were when somebody, who didn't know Smalltalk yet, asked me why it is so good and what's so special about it. Of course I couldn't resist and had to praise Smalltalk to the skies. It was not before such discussions, that I was also asked why Smalltalk isn't really popular if it is that good, and I started to be interested in the history of Smalltalk and where it's real applications are. Today, there are tons of new languages, most of them stating that they were among others influenced by Smalltalk, so the usual versus debates keep coming up.

Over at stackoverflow they posed some of these very essential questions and collected a lot of interesting answers:

  1. What is so special about Smalltalk?
    • The Smalltalk way isn't to crash out on unexpected behaviour - it's to adapt.
    • Today, Smalltalk isn't particularly important on its own - there are some people still using it to write stuff, but it's definitely not mainstream. Learning it will give you some insight in how and why OOP evolved, however.
  2. Where do you use Smalltalk?
    • Smalltalk's strengths play into it's weaknesses. It's not the language (dynamic vs static typing will always be a discussion point) as much as the development/deployment environment.
    • ... Smalltalk allowed me to develop and debug this system as people used it. I did not need to restart the system to install new features and bug fixes. If a user process crashed, the debugger would open on my monitor and I could debug it live. The user's terminal would restart automatically.
  3. Why isn’t Smalltalk popular?
    • When Smalltalk was introduced, it was too far ahead of its time in terms of what kind of hardware it really needed.
    • ... IBM took a look at it and figured two things. First they didn't want to enter a marketing war with Sun that was clearly planning to spend a fortune on the Java brand. ... Anyhow, I don't mind that Smalltalk isn't popular. That makes it a secret weapon for me and I am really encouraged to see all the new development projects. Smalltalk is growing and advancing again and this is good because a lot of the best ideas in software (XP, unit testing, refactoring editors, coding assistants) all were developed in Smalltalk first and then filtered out to the rest of the world (generally in diluted forms).
    • Most of the Smalltalkers that I've run into on the net try to say how Smalltalk is basically the best thing since sliced bread, and how awful every other language is.
    • Any language where the expression 2 + 3 * 4 has the value 20 isn't going to be a commercial success.
    • There was freedom. Smalltalk was about "take it all or leave it all". Java is a language, that can be used in different environments.
    • Lack of Free implementations. At the time, it hadn't been demonstrated that a language needed a solid community-driven implementation to pick up mindshare; people still thought that selling software was a good way to make money.
  4. Why use Ruby instead of Smalltalk?
    • I think your question is somewhat missing the point. You shouldn't choose, you should learn them both!
    • You answered the question in your first line: "Ruby is becoming popular".
    • Over a year ago IBM dumped the language (their term is sunset). Also, take a look at the History. ParkPlace and Digitalk where the first major commercial players in the Smalltalk arena, they merged and then went out of business.