
Getting Back to Smalltalk - stesch
http://railsrx.com/2011/12/29/getting-back-to-smalltalk/
======
ootachi
"The first element of an array is index 1, not index 0. Which, honestly, makes
more sense."

No, it really doesn't. This is a constant headache in Lua too. See Dijkstra's
comments on the subject here:
[http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EW...](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html)

~~~
fractallyte
I'm struggling to find Dijkstra's argument sufficiently compelling to conclude
that zero is the 'most natural number'. It's a conclusion based on _his_
aesthetics (plus an anecdotal story).

The natural numbers are generally considered to start at 1. Therefore, to
people in general, such a system makes more sense.

~~~
r00fus
Agreed. The fact that arrays were simple memory-offsets making zero-index
easier for low-level programming doesn't make it easier for humans who
historically prefer 1-indexing.

Zero is not a "natural" number, in fact many societies / civilizations never
even understood or used zero in arithmetic [1].

[1] <http://en.wikipedia.org/wiki/Roman_numerals>

~~~
technomancy
> in fact many societies / civilizations never even understood or used zero in
> arithmetic

Yeah, but those societies were uniformly terrible at math.

~~~
gaius
There are Roman bridges still standing, and Roman roads still in use.

------
amjith
There are some excellent screencasts for pharo here:

<http://www.pharocasts.com>

Smalltalk is a small language (think C), so you can learn the whole language
set in a few days.

The live objects concept might warp your brain a little bit. I've heard lisp
does the same, so if you're from a lisp background, you might not find it
shocking.

The Pharo environment (IDE) can make all the modern IDEs (Eclipse, Visual
Studio) look like babies in diapers.

There is built in versionsing, DVCS, refactoring tool, unit testing framework,
The most powerful debugger etc....

You will not regret trying out Smalltalk (maybe you will when you have to go
back to C++) :).

~~~
markokocic
In general I agree, except for the IDE part. Every single IDE I haven ever
used have better editor that Smalltalk IDE.

Not being able to use your own editor, whichever it is, and being forced to
use something that is basically equivalent to plain old browser textarea is a
showstopper for calling Smalltalk environments pleasant.

Maybe Gnu Smalltalk is a cure to that, since it doesn't have live image and
you can use whichever editor you like, but that kinda defeats most of the
benefits of Smalltalk.

~~~
amjith
True. I've had trouble with that as well when starting up. But later on I
found I'm not writing methods that are larger than 10 lines (longest being 20
lines) in Smalltalk, which makes it tolerable. Still no ideal.

I hear that SqueakVM has a package called nvi that can emulate Vi keybindings
as well as emacs keybindings.

~~~
gecko
Squeak and Pharo used to have a really great (for some value of "great",
anyway) Vim emulator you could use in place of the default editor, but the
hacks to enable it ran so deep that it doesn't run well anymore. The good news
is that Pharo's GUI is increasingly clean and less crufty, which ought to make
reintroducing a similar package feasible for the first time in years, if
anyone were up to it.

~~~
rue
It should be possible to simply embed or shell out the editing to an external
program… I think this'd be the ideal solution.

------
hboon
If you want to get introduced to Smalltalk and happens to have a Windows
machine, check out Dolphin Smalltalk <http://www.object-arts.com/>.

Many years back, I tried Squeak a couple of times and it didn't click. Dolphin
Smalltalk did that for me (and I then went back to Squeak due to other
reasons). It has a well-designed, compact class library and a decent UI. I'm
not sure if it has been updated to keep up with Windows, but it's a great
start.

------
mark_l_watson
I also enjoy hacking in the Pharo environment. That said, I have been doing
most of my work lately using Clojure with combinations of: repl, Emacs, slime,
and IntelliJ. I find working with Lisp or Smalltalk yields similar benefits of
supporting very quick code experiments and development.

The important thing is having an environment that supports your eventual
deployment requirements and also supports short term fast development
requirements.

------
simsimsalabim
Do i really need to use the ide to 'get' smalltalk? I'm pretty happy with my
tools, and would only use ST for the paradigm shift anyway. I don't want to
leave my text editor. It has become a part of me, and i can't imagine life
without it.

~~~
jcromartie
Just to play devil's advocate to some of the other comments, there is GNU
Smalltalk:

<http://smalltalk.gnu.org/>

It's tagline is "The Smalltalk for those who can type".

However it doesn't look very lively, and you'd be pretty lonely. I don't know
any projects using GNU ST. Squeak, and now Pharo, are really the only
implementations with momentum right now.

And as far as the typing thing... I am a die-hard Emacs user, and I still
enjoy Pharo. This is because programming in Smalltalk is not so much about
writing and editing code as it is working with objects. And, frankly,
Smalltalk's way of working with objects (and remember: classes and their
methods are just objects) is much more powerful than the average editor's way
of working with source code.

~~~
fractallyte
The developers at ObjectFusion (<http://www.objectfusion.fr/>) appear to do
much of their development in GNU Smalltalk. That's: Iliad web framework,
Odyssey CMS, and possibly the upcoming Smalltalk Hub (the equivalent of
GitHub, and an anticipated replacement for SqueakSource).

~~~
gecko
Unless I'm badly mistaken, SmalltalkHub is now developed on, and for, Pharo,
not GNU Smalltalk. I have no insight into the reason for that change, however.

(I'm basing this on the code for SmalltalkHub, which at least used to be
available on SmalltalkHub, and which had Pharoisms in the code base. It's
entirely possible they simply moved those pieces over to GNU Smalltalk,
though.)

