views:

3051

answers:

20

My questions is simple!

  1. Would you start learning Smalltalk if you had the time? Why? Why not?
  2. Do you already know Smalltalk? Why would you recommend Smalltalk? Why not?

Personally I'm a Ruby on Rails programmer and I really like it. However, I'm thinking about Smalltalk because I read various blogs and some people are calling Ruby something like "Smalltalk Light". The second reason why I'm interested in Smalltalk is Seaside.

Maybe someone has made the same transition before?

EDIT: Actually, what got me most excited about Smalltalk/Seaside is the following Episode of WebDevRadio: Episode 52: Randal Schwartz on Seaside (among other things)

+2  A: 

I was taught Smalltalk in one of the first graduate college level Object-Orient Programming courses (circa 1988). The teacher thought it best to start was a "pure" OO langauge,before moving on to a more trendy one (we did a bit of C++ at the end of the semester).

By that measure, it's still best to start with pure OO, although these days we have Java & C#, both of which are "nearly-pure" OO -- close enough that you can get by ignoring the non-OO features of them, and limiting yourself to the Pure-OO subset of the langauges.

James Curran
A: 

Yes, I'm interested in it. Tried to start once already, but couldn't find a Smalltalk development environment that didn't cost both arms and a leg.

Brian Knoblauch
Squeak (from http://squeak.org) is a free open source implementation based on the original Smalltalk-80 image.
Kevin Driedger
VisualWorks is also available as a freebit now. You can get it from http://www.cincomsmalltalk.com/
ConcernedOfTunbridgeWells
+5  A: 

I do not know Ruby..

Smalltalk is a pure OO language. If you feel the need to really understand OO, and not just the simulated OO of most popular 'OO' languages (like C++, Java, etc), then I would recommend that you play with smalltalk.

In smalltalk everything is an object, with attributes, behavior and meta. In the simulations you have data types that you use in your objects.

I would say play with it, you will only benefit.

slashmais
In SmallTalk, even "classes" are objects, instances of the class Class!!! This drove me mad until I grokked it!
Joe Pineda
Ruby is also a pure OO language in the sense that even Classes are objects. So are blocks, methods and the reference of a null pointer.
Alan
Ruby takes (Matz will freely state this) many ideas from Smalltalk. In many ways it can be viewed as a 'Pragmatic' (apologies to Hunt and Thomas) Smalltalk-like language.
ConcernedOfTunbridgeWells
+11  A: 

> couldn't find a Smalltalk development environment that didn't cost both arms and a leg

Google - free smalltalk

Cincom Smalltalk, Squeak, GNU Smalltalk

Squeak is really nice! Pure OOP, completely graphic, lovely user interface, open source (some disagree on this), more or less portable...
Joe Pineda
+1 for Squeak, and it has a great community with a nice mailing list for beginners.
Sébastien RoccaSerra
+1 for Squeak, the object explorer (or whatever it's called) is invaluable for learning how the object model works.
Mauricio Scheffer
Pharo is free and has all the modern tools..
cartoonfox
+1  A: 

It depends on what kind of applications you plan on writing. If you are going to write larger applications, I would recommend focusing on C#/Java. They are not "pure" OO languages but very close.

If you need it purely for scripting, I tend to favor Python. Python's popularity has been booming and you are more likely to find large support communities and software integration using Python.

I personally haven't heard of many people using SmallTalk outside of university settings but that may be just my little universe. It never hurts to learn a language just to understand different paradigms.

j0rd4n
+11  A: 

Learning Smalltalk will give you a grounding in object oriented software development from the perspective of the man who invented OO (Alan Kay). The idea of a overlapping windowing environment came from Smalltalk.

A stumbling block to learning Smalltalk is that it is a message passing system with a strange syntax for flow control like:

i < 60
   ifTrue: [ self walk ]

It has a very mature class library that has a consistency I've not seen too many places. The class library in all environments (even commercial Smalltalks) has available source which allows you to learn from the masters of the language. When programming Smalltalk, I always ask the question how is it done in the environment.

Smalltalk is generally implemented in an image which is a live environment for all the objects in your system.

The interactive debugger really seperates Smalltalk from Ruby.

Seaside is the web development framework and has given Smalltalk a new spotlight. It is a continuation based environment that allows for intra-hit debugging and a smooth Rich Client type development experience (top application flow can be designed in a single method). It's integration with script.aculo.us has been done in such a way that it is easily called from within Smalltalk.

Kevin Driedger
The syntax is not strange - its actually VERY elegant. It must be read as: hey, whatever you outcome of "i<60" are, here is a piece of code (code-object passed as argument), to be evaluated if you think you are true. The funny thing is, that even works, if "i<60" returns a fuzzy, statistical thingy.
blabla999
...and that fuzzy, statistical thing can then decide (as a method) how to deal with that. There is not a single builtIn operator or control structure which cannot be redefined this way.
blabla999
+2  A: 

I've been a software engineer for quite a few years now. I've heard people bring up Smalltalk a few times, and certainly Smalltalk has been around since about 1980, but it's one of those languages that's never seemed to make it into the software mainstream. Sort of like Objective C, CLIPS, PL/I, etc--someting you may have heard of, but something that most folks have never programmed in.

I probalby wouldn't take the time to learn Smalltalk unless I needed to for a particular jo. I looked at some Smalltalk tutorials and examples briefly a few years back, and it looks like it has some clear advantages for certain aspects of OO programming (like the message concept seems cool). But sadly, it is not mainstream, and doesn't seem to be gaining much momentum.

Ogre Psalm33
A: 

I don't really know what you're looking for.

If you are looking for a different language to write in, I'd think that would depend heavily on the libraries available. I know neither Ruby nor Smalltalk, but it seems likely that the most efficient way to write Ruby on Rails-sorts of applications may not be Smalltalk.

If you are looking to learn the ideas behind Ruby, this might be a very good move. I don't have anything quantitative, but I always felt better about using tools (such as language systems) if I knew more than just the tools, if I kmew the ideas behind them or how they worked.

If you want to learn different sorts of object-oriented languages, you might well want to learn Smalltalk (if it differs significantly from Ruby), something like Java or C++, and perhaps also the Common Lisp Object System.

If you just want to learn something different, Smalltalk may well be a good choice. I'd also suggest Common Lisp, and other people will doubtless have other suggestions (can you get a good Forth system nowadays?).

David Thornley
It is clear you didn't take a look at Seaside. The most efficient way to write Ruby-on-Rails sort of applications is clearly with Seaside.
Stephan Eggermont
Didn't take a look at Seaside, and haven't used Ruby or Smalltalk, so this is general advice. Thanks for pointing out Seaside.
David Thornley
+31  A: 

If you like Ruby you'll probably like Smalltalk. IIRC Seaside has been ported to the Gemstone VM, which is part of their Gemstone/S OODBMS. This has much better thread support than Ruby, so it is a better back-end for a high-volume system. This might be a good reason to take a close look at it.

Reasons to learn Smalltalk:

  • It's a really, really nice programming environment. Once you've got your head around it (it tends to be a bit of a culture shock for people used to C++ or Java) you'll find it to be a really good environment to work in. Even a really crappy smalltalk like the Old Digitalk ones I used is a remarkably pleasant system to use. Many of the old XP and O-O guru types like Kent Beck and Martin Fowler cut their teeth on Smalltalk back in the day and can occasionally be heard yearning for the good old days in public (Thanks to Frank Shearer for the citation, +1) - Agile development originated on this platform.

  • It's one of the most productive development platforms in history.

  • Several mature implementations exist and there's a surprisingly large code base out there. At one point it got quite trendy in financial market circles where developer productivity and time-to-market is quite a big deal. Up until the mid 1990s it was more or less the only game in town (With the possible exception of LISP) if you wanted a commercially supported high-level language that was suitable for application development.

  • Deployment is easy - just drop the image file in the appropriate directory.

  • Not really a reason, but the Gang of Four Book uses Smalltalk for quite a few of their examples.

Reasons not to learn Smalltalk:

  • It's something of a niche market. You may have trouble finding work. However if you are producing some sort of .com application where you own the servers this might not be an issue.

  • It's viewed as a legacy system by many. There is relatively little new development on the platform (although Seaside seems to be driving a bit of a renaissance).

  • It tends not to play nicely with traditional source control systems (at least as of the early-mid 90's when I used it). This may or may not still be the case.

  • It is somewhat insular and likes to play by itself. Python or Ruby are built for integration from the ground up and tend to be more promiscuous and thus easier to integrate with 3rd party software. However, various other more mainstream systems suffer from this type of insularity to a greater or lesser degree and that doesn't seem to impede their usage much.

ConcernedOfTunbridgeWells
Ruby has also been ported to Gemstone: it's called Maglev: http://www.infoq.com/news/2008/04/maglev-gemstone-builds-ruby
brian d foy
What do you mean by "it tends not to play nicely with traditional source control systems"?
detly
The way a traditional Smalltalk stored source code meant that it was embedded within the image and associated sources and changes files. You didn't get a nice clean set of program files like you would get with (say) C. Smalltalk systems tended to require specialised smalltalk-aware source control systems, which tended to be (a) proprietary, (b) expensive and (c) incompatible with everything else.
ConcernedOfTunbridgeWells
And hopefully Monticello will address (a) and (b) of these issues. Squeak's already using it heavily, and SqueakSource has many many projects using it. It still has warts though. Once the git-Monticello projects are actually in use, (c) will hopefully also fall by the wayside.
Frank Shearar
+20  A: 

Well, since you mentioned me by name, I feel I should chime in.

As I said in that podcast interview, and as I have repeatedly demonstrated in my blog at http://MethodsAndMessages.vox.com/, this is "the year of smalltalk". And having now done Smalltalk advocacy for the past ten months, I can see that it really is happening. More customers are turning to Smalltalk and Seaside, and the Smalltalk vendors are all working hard to capture this new influx of attention. More larger Smalltalk conferences are being planned. More job postings are being posted. More blog postings are being made.

If you turn to Smalltalk today, you are not alone. There are many others who are out there as well.

Randal Schwartz
That's why Stack Overflow is cool! Thank you for your answer!
Christoph Schiessl
Out of curiosity, can you elaborate on the influx of attention - any ideas where the mindshare is coming from?
ConcernedOfTunbridgeWells
Ruby certainly helped, I think Javascript and Objective-C too. For people that don't get the pure OO thing, those languages provide a familiar starting point from which one can extrapolate how Smalltalk shines.
Damien Pollet
Then the Seaside guys did some good PR, Avi Bryant with DabbleDB and the Maglev coup at Rails conf, and Randal is quite vocal too :)Also Google V8's Lars Bak comes from Self... there was many tiny cues like that, all hinting at Smalltalk and Lisp, strange languages from the future-in-the-past :)
Damien Pollet
+10  A: 

Smalltalk is a good language to learn, and the great thing is that it only takes a day to do it. It's a lot more than just an academic language. People are building huge, scalable, replicable applications handling billions of dollars. They just don't talk about it much. See, for instance, GemStone and Orient Overseas Container Lines: A Shipping Industry Case Study.

Seaside is a good reason to learn Smalltalk, but I don't think you'll find it orders of magnitude better than Rails.

The thing that convinced me was GemStone. I really like Gemstone's GLASS (GemStone, Linux, Apache, Smalltalk, Seaside). The killer part of that is GemStone, which handles all the object persistence for you mostly without you thinking about it. Seeing some of their demos and hearing about what people are doing with GemStone reset my idea of what "big application" meant.

The part that bugs me the most about Rails is the object-relational mapping. That's nothing against Ruby because it sucks just as hard in GLORP (which handles ActiveRecord for Smalltalk), or Perl, or anything else. Mapping objects to database tables is just painful. With GemStone, thinking about the database disappears, so the work with the database disappears too. It's like a huge stone (or a troop of monkeys) is taken off my back.

brian d foy
I wish I could vote twice... I totally agree.
Sébastien RoccaSerra
+5  A: 

Nigel, one quote I have is this:

Although it's now a long time since I did anything with it, I nominate Smalltalk, I still haven't come across anything quite like it for being able to transfer thoughts into computer code. It's not just the language: It's the wonderful browser environment, the libraries, and the culture of writing clear, well-designed code as quickly as anything else can crank out spaghetti. When the participants at JavaOne were extolling how Java was so much more productive than anything else, I needed a brown paper bag. Oh well, back to sorting out my classpaths... -- Martin Fowler (Software Development Magazine, Jan 2001)

I found it here.

Frank Shearar
Thanks. I've edited my posting to include it.
ConcernedOfTunbridgeWells
+5  A: 

Would disagree with the poster who reckons you wouldn’t use Smalltalk for large apps – that’s precisely where it shines. But I have created fairly groovy (note lowercase) prototype apps in under a week too.

I learned OO in ST starting in 92, incredibly glad I did so. It gave me a real background in OO. Thinking in classes. No types. ST has a real emphasis on messaging. If you want to know something send an object a message and get an answer. IMHO, the ethos and the IDE really encourage you to do the right thing with your coupling and cohesion.

In my Java day job, I’m stuck with files, generics, IDE’s like eclipse that are orders of magnitude less productive that any ST IDE. I was using ST the only time I finished a development ahead of schedule. In fact it was so productive, and we got so much reuse I had to be moved off to another project, as I had nothing to do! (Ok, maybe I could have spent time learning to estimate...)

Download squeak, find a good book and play. Only downside is that if your day gig is using Java or C#, you’ll end up wishing you could use ST. You’d get home sooner.

Chris Brooks

Chris Brooks
+3  A: 

Would not start learning it if I had the time. Why not? Because it would be more productive and lucrative financially to learn C# or Java.

On the other hand if your a hobbyist, and would like to go on an archeological dig, then I'd suggest spending some time looking at the What, When, Why and how of smalltalk by researching Alan Kay. Fascinating story and an incredible person (after all, he earned the Turning Award). Then maybe play with squeak a little to get a feeling for the language. After this you might have a newly found respect/understanding of blocks, closures, and Object Oriented principles.

I know and use Smalltalk, have for about 15 years, still maintaining it, and would not recommend Smalltalk to a friend. Why not? Employment is a good thing to have and keep getting. Although you can learn a lot from Smalltalk you can't easily turn that into gainfully being employed in this day and age.

Also, you appeared to be excited over Seaside and I would assume the Seaside/GemStone partnership. I've used GemStone for quite some time and the two together are very appealing. I hope they can get the market share and momentum required to be successful.

daduffer
+4  A: 

I recommend everybody to learn Lisp (Scheme) or Smalltalk.

Smalltalks have wonderful IDEs which you dont want to miss once you got over the culture shock. And yes, there are more than one free ones: Squeak, Dolphin, Smalltalk/X, and Visualworks (Non-Comercial).

Lisp may be even cleaner in its mathematic foundation, though.

regards

PS: actually I recommend learning both !

blabla999
+1 for "learn both!"
Frank Shearar
+4  A: 

I'm totally in your shoes. Im using RoR and looking into Smalltalk land. Here's some pros & cons I find important:

Pros:

  • Mature & stable environment
  • Fast development cycle
  • Makes you think more and write less

Cons:

  • Requires different thinking
  • Still didn't quite grasp it

It's quite funny how I got to know about Smalltalk. It was this one thing that keept popping up in Google results when searching for Lisp and Erlang stuff. One day I checked it out and was amazed with nice windows environment. Few moments later I've found Aida/Web framework. I was hooked and started learning Smalltalk through web development with this framework.

Still not quite there, but it's so damn interesting I just can't sit still... :-) I'm having fun again.

Damir Horvat
+4  A: 

Smalltalk: Getting The Message: http://www.smalltalk-resources.com/Smalltalk-Getting-the-Message.html

Alan Lovejoy
A: 

This thread has become very actual for me. I'm planning for a Software migration to a web-application. It's a database based software. I'm especially checking the alternatives 1) Rails 2) Seaside

If I can get the figures for the Gemstone/S as Database, I'll consider that also. So for me it means I have to learn Smalltalk (better) than before. Because it could be that it will be my work for the next 15 years. You would (and should not) work with software you don't like for that long ;-). I've the impression Gemstone/S is one of the "killer" applications. But persistence of Objects still is a very difficult field....

Friedrich
+1  A: 

Don't! If you really start learning it, you might not want to programm in something else anymore ever.

This may be not true, if you are a lisp programmer.

Richard Durr
A: 

If you want a better understanding of Extreme Programming (and even Scrum) I'd say yes.

Why impatient, Java programmers need to learn Smalltalk:

http://www.dafydd.net/archive/2010/why-smalltalk-isnt-just-another-language/

cartoonfox