

Remember Smalltalk? (2008) - sebastianconcpt
http://blogs.gartner.com/mark_driver/2008/10/09/remember-smalltalk/
I’ve often referred to Smalltalk as the ‘Latin’ of modern OO languages.  Most owe a tremendous debt to Smalltalk but the language itself has been relegated to a small niche of technology elites for several years now.<p>Here a simply equation.  In terms of mental fortitude…
======
gaius
It's simple. Java was free, Smalltalk was $50,000/seat.

~~~
mark_l_watson
Basically correct, except for the price of $50K. In the early 1980s I had a
Xerox Lisp Machine (cost about $25K with extra RAM). Xerox let me use a
Smalltalk license for a while for evaluation - I forget the exact price, but
it was about $5K.

Now, nearly all programming languages are free :-)

Pharo Smalltalk (based on Squeak) is very nice, and runs on Mac, Windows, or
Linux box using very little resources.

~~~
gaius
I learnt Java in '95 and was getting paid for it in '96 - the option to become
a Smalltalk developer simply never existed for me - you already had to be one,
to get access to it! That it faded into irrelevance is completely
unsurprising, where was the fresh blood supposed to come from?

~~~
mark_l_watson
I rode the Java wave early on also. A good ride.

Smalltalk is still used, as is Common Lisp, Scheme, etc. Just because
languages are only used for < 1% of commercial projects does not mean that
people skilled in their use shouldn't use them. My go-to languages right now
are Clojure, Java, and JavaScript, but, I still like to code occasionally in
Pharo Smalltalk (good online tutorials, BTW, if you want to play with Pharo).

------
rongenre
I started my professional career doing Smalltalk in the early 90's. The
experience of development as a conversation in which I persuade a system to
behave was really formative.

In a lot of ways, I'm still programming in Smalltalk... just in other
languages.

------
angersock
So, what's the advantage of Smalltalk over Ruby?

It seems like Ruby is a better Perl than Perl, a better Smalltalk than
Smalltalk, and a better Python than Python.

It's slow (though that's getting better) but otherwise it allows genuinely
beautiful system design.

~~~
akavi
>a better Python than Python

As someone who's quite the Ruby fan, this is the only one on the list I'd
object to.

There's a very real philosophical difference between the two, which I'd
identify as being their attitude to "magic". Ruby is OK with a certain level
of increased complexity and semi-hidden behaviour if it means more
expressivity. Python, on the other hand, prefers simplicity and explicitness.

It's not the most radical divide, and I don't really think either one is the
One True Philosophy; they're just different. And neither is better at
embodying the other's philosophy.

~~~
Avshalom
Well I mean that's Smalltalk: Things that look like magic in Ruby look as
simple and explicit as Python in Smalltalk.

------
cconroy
Anyone else love Smalltalk's message syntax. Objective-C uses it too. It has
got to be the best syntax invented for a programming language. To see what I
mean compare the normal procedural code vs. the OO version:

(a) drawRect(50, 50, 10, 21)

(b) aRect drawAtX: 50 andY: 50 width: 10 height: 21

~~~
JoeAltmaier
I guess that's better in a COBOLly sort of way. I'd prefer a tool that let me
investigate the signature and validate the arguments if I was interested;
otherwise its awfully wordy and slow to write/read.

~~~
programminggeek
wordy maybe, but incredibly easy to understand upon coming back to the code.
At least, more than a list of 5+ unnamed arguments in an arbitrary order made
up by someone you'll never meet and you can only understand by looking at the
api docs, if there are any.

~~~
JoeAltmaier
I'd agree, except arguments are rarely just a list of numbers. With well-named
constants, methods and variables its pretty clear what's being passed.

~~~
programminggeek
Yes, but in the case of a sometimes inconsistent API, you get things like
string methods that are sometimes method(needle, haystack) and sometimes
method(haystack, needle) and so on. If you were sending properly labeled
messages, like you are forced to do in just about every web api ever, you can
at least inspect the message to get an idea what is going on.

It's sort of weird to me that so much effort goes into making programming
languages expressive, yet we cling to incredibly terse method names, sometimes
too terse, and no labels on method inputs. So, if you don't know what some bit
of code does, you have to figure out what the methods are doing and what
arguments they are supposed to take.

I guess to me it's like if you had to do a dictionary lookup for every word
you read and had minimal context to understand a words meaning in the context
of the other words around it. At the very least you would cling to a
dictionary if you wanted to get anything done.

------
svc
The Smalltalk spirit is still alive, witness Pharo. And the legacy lives on in
so many languages, like Ruby, Objective-C.

~~~
sdfjkl
And even spawns new heirs, such as Objective-Smalltalk:
[http://objective.st/](http://objective.st/)

~~~
adamnemecek
And F-Script
[https://en.wikipedia.org/wiki/F-Script_(programming_language...](https://en.wikipedia.org/wiki/F-Script_\(programming_language\))

~~~
sdfjkl
F-Script was actually how I discovered the beauty of Smalltalk :)

------
agumonkey
I remember some IBM guys not nostalgic at all about ST. They said it was a
doesNotUnderstandHELL. Maybe they didn't receive adequate training. They were
quite in love with Eclipse/EMF/RSA way of life too. Funny.

------
GnarfGnarf
Beware! This Website will throw up 40 or 50 cookie permission dialogs in
Firefox.

------
pjmlp
Yeah, I got a nice experience with VisualWorks while at University, around
1996.

However Smalltalk lost the enterprise place it got, but its spirit lives
partially[1] on modern dynamic languages.

[1] Without live coding experience, it isn't a full Smalltalk descendent.

~~~
mpweiher
Really live coding with Objective-Smalltalk[1]:

    
    
       http://www.youtube.com/watch?v=sypkOhE-ufs
    

It's obviously only a very simple example, but hopefully shows the potential.

[1] [http://objective.st/](http://objective.st/)

~~~
pjmlp
The Smalltalk environment is much more than just a REPL.

~~~
mpweiher
And that isn't a REPL, it's live evaluation on every keystroke.

But yes, you also have other tools, for example a class browser and inspectors
that hook remotely into running programs via http, for example.

