Richard Kenneth Eng
2 min readJul 23, 2016

--

For those who have a problem with using an image-based approach to software development, Smalltalk offers several options…

First, there’s GNU Smalltalk, a command-line Smalltalk that you can use with your favourite text editor.

Second, there’s Redline Smalltalk, which is Smalltalk for the JVM. You can use this with your favourite text editor or IDE such as IntelliJ IDEA (for which there is a plugin).

Third, there’s Essence#, which is Smalltalk for .NET. You can use this with your favourite text editor.

Of course, you’d be losing one of the biggest benefits of programming in Smalltalk: the hyper-productivity. But clearly, some people don’t care and that’s fair.

The novelty of Smalltalk’s syntax is often a sticking point for programmers from other languages. I find this puzzling. The Top 20 programming languages (according to Redmonk) have extremely varying kinds of syntax: 1) “C-style” languages such as JavaScript, Java, PHP, C#, C++, Perl; 2) indentation-sensitive languages such as Python and Nim; 3) Ruby; 4) Objective-C; 5) Haskell; 6) Visual Basic; 7) Clojure. What makes Smalltalk stand out?

Moreover, Objective-C is a cross between C and Smalltalk!

In fact, Smalltalk hardly has any syntax at all! Everything is accomplished by message-passing. This makes Smalltalk supremely easy to learn. There shouldn’t be an issue at all.

As for the arithmetical precedence rules, for example in 1 + 5 * 9, since everything in Smalltalk is done by message passing in a left-to-right order, 1 + 5 is performed first, followed by * 9. To get the more conventional mathematical ordering, you simply put parentheses around 5 * 9, hence, 1 + (5 * 9). Yes, this is “odd,” but it’s scarcely a hardship.

Are the precedence rules in Clojure or Lisp syntactically any better? (+ 1 (* 5 9)). What about Forth? 5 9 * 1 +. In APL or J language, which works from right to left, 3*3–1 will give you 6, not 8. Talk about odd. By comparison, Smalltalk is perfectly sane.

--

--