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.
Here a simply equation. In terms of mental fortitude…
1 Smalltalk developer = 2.5 C++ developers
1 C++ Developer = 1.5 Java developers
in other words…
Smalltalk is a meal with a fine Bordeaux and a petite filet mignon
Java is a meal with a cold beer and t-bone
So Yeah.. I said it. Smalltalk is making a comeback.
(pausing to wait for reader to regain consciousness)
There are few reasons for this but a couple come immediately to mind…
Smalltalk was ahead of its time — not only in developer skills and techniques but also in hardware support. Many early Smalltalk systems simply didn’t scale well. Today Moore’s law has fixed the hardware issue and developers have (in general) finally gotten their heads around OO concepts.
Smalltalk tools and platforms had a heavy lock-in factor. Lock-in related to tools and technology supporting the Smalltalk language pushed many towards things like C++ and eventually Java. Today open source Smalltalk projects have significantly reduced the perspective and reality of Smalltalk vendor lock-in.
It’s been said that a “rising tide lifts all ships”. I can see this clearly in the relationship between Smalltalk and hot topic languages such as Ruby and Python (to some degree PHP here as well). The significant growth that we see among these languages is also causing a few to take a second look at Smalltalk as well.
Its somewhat funny to consider that a new generation of developers (post C++) consider the features in Ruby to be bleeding edge when in fact they are mostly retro features of things that Smalltalk has done for decades. The challenge of course is that languages like Python and Ruby have the heat needed to create a strong momentum. Smalltalk enjoys the benefit of association but not enough to transfer that heat in large volume — at least not yet.
So I’m not suggesting that we are going to see a massive renaissance in Smalltalk use in the near future. Today I still have a hard time recommending most mainstream IT organizations invest heavily in new strategic initiatives with Smalltalk. However I *am* seeing an up tick in the role that Smalltalk is having among certain communities of developers.
There is a chicken and egg problem here no doubt. But as an analyst I have to balance the “what is happening” with the what “should happen”. Yes its a fine line.
Put it this way. I see *enough* momentum in the small spark of the developer universe that is the Smalltalk niche to suggest that we might see some smoke and maybe even a small flame in the near future.
1) If you have investments in Smalltalk consider the risk of the language to be lower over the next 3 years than the last 3 years. Smalltalk is cool again. Is it the start of a long term trend or a fad? Yet to been seen.
2) If you are BIG fan of dynamics languages (closures, meta programming, and all that cool stuff) then consider giving Smalltalk a look. You might like what you see. Its like Ruby but with bigger muscles. You think Rails is cool? Check out seaside.
In the end we’ll see a up tick in Smalltalk momentum over the next few years. I’m not entirely sure it will be enough to change the long term trend of a declining developer base but I does my heart good to see a “members only” jacket come back into style nonetheless.
The Gartner Blog Network provides an opportunity for Gartner analysts to test ideas and move research forward. Because the content posted by Gartner analysts on this site does not undergo our standard editorial review, all comments or opinions expressed hereunder are those of the individual contributors and do not represent the views of Gartner, Inc. or its management.
Comments are closed
Smalltalk and those who were its original innovators have had a tremendous affect on software development not only in language but as much of the drive behind agile development and commonly used tools like jUnit.
Out challenge is that it is hard to go back to the future and thus while we may have some ressurgence in Smalltalk we tend to always be goign to the next great thing. When Java appeared on the market many of the performance issues of Smalltalk had been solved by a) fast enough hardware b) tools that could “build” a packaged executable. But Smalltalk carried the moniker of being slow and it wasn’t the new kid on the block.
Maybe a second wave can happen but even if it doesn’t it can bring more of the good influence in an continue to drive software design.
Thanks for noticing the uptick in Smalltalk. I’ve been saying this for about a year now, and it’s really coming true.
I linked to your article on my blog at http://methodsandmessages.vox.com/library/post/gartner-analyst-says-smalltalk-is-making-a-comeback.html – check out my “Year of Smalltalk” analysis as well at http://methodsandmessages.vox.com/library/post/the-year-of-smalltalk.html … thanks!
Interesting post. People who remember Smalltalk as slow, big, etc should try it out again on even the oldest hardware you can find in your office. A really big Smalltalk “image” is say 50MB. That’s with source, all code, and even the objects that represent the running UI. Smalltalk has massive code density so that’s a lot of function. VM comes up, sucks the image into memory, quick scan for pointer updates and run. Exactly where you left off. We’re talking 1 second here.
Smalltalk’s failing has always been the packaging story (unless you are a strongly typed sort of person in which case its lack of types would turn you off). There was Envy/Packager, Image Components, Stripper, … but fundamentally it was hard. It would be cool to revisit the language and the system to see if there was something that could be done.
Sigh, now I am all wistful. Smalltalk is fun! I need closure…
Please don’t talk about Smalltalk.
I enjoy my competitive advantage over the Java/NET crowd
There has been a recent, significant addition to the more traditional Smalltalk conferences such as Smalltalk Solutions or ESUG. It is the Smalltalks conference that is held yearly in Buenos Aires, Argentina. Here is the conference’s website.
Hope this helps,
I LOVE Smalltalk.
Some of the old timers might remember me from the giddy days when Smalltalk was hot and companies like IBM, where I worked, were in the Smalltalk camp.
I’ve really happy to see the resurgence.
On the other hand, Smalltalk isn’t perfect, nothing is. My old friend, and IBM/OTI colleague Jeff is right about the packaging issues.
I wrote an article some months ago comparing Smalltalk to my current favorite language, Some might find it instructive:
I am another Smalltalk orphan, and I would be really happy to see it making a comeback, but I am not sure it is really happening. There are a few things that Sun got right with Java that were (and I believe still are) missing in Smalltalk:
1 – a comprehensive, standard, class library (no variations between vendor implementations, no vendor-specific libraries required for almost anything).
2 – a rich, detailed VM specification, that any implementation would have to follow to be named a Smalltalk VM
3 – a cross-platform, vendor neutral, fine grained (class or maybe component level) binary byte code format
4 – a cross-platform, vendor neutral image format
Yes, it is weird that I am talking mostly about vendor neutrality while Java is still controlled by only one company, but since the beginning Sun managed to get a good part of the industry on its side, supporting and contributing to the success of the technology.
Just use Squeak.
If you are wondering what the job market is like for Smalltalk programmers, check out the free, community supported Smalltalk Jobs database: http://xrl.us/smalltalkjobs
1 lisp developer = 10 smalltalk developers ? :-p
Where Smalltalk really shines recently is in field of web applications due to its dynamic nature (live upgrading, debugging etc.) and because its shortcoming are not relevant here. Sure this is partly a “rising tide lifts all ships” consequence, from success of Ruby of Rails mostly, which raises the interest on Smalltalk web frameworks like Seaside and Aida/Web as well.
The problems of Smalltalk were and still are, that it’s different from the mainstream. It begins with its difference syntax, it’s source code management, missing of types – simple things human beings care very much about.
When we switched from Smalltalk to .NET we ran against a culture wall – source repository ? No way. I still remember discussions in the MS newsgroups, that lots of developers do not want to give away their flat C (Or C#, ..) files.
VS2003, VS2005 and now VS2008 – the stuff is getting bigger and bigger and actually also more difficult (at least, when doing larger jobs). VS-IDE’s are pretty well programmed tools, but they have bugs – nasty bugs, which are perhaps only fixed over a long period of time. We were surprised about the complexity of the language (C#) itselfs.
While VS-IDE’s are tremendous fast and give their developers good turn-around times, you are still ending up with the old edit-compile-run cycles when the system becomes larger.
And there’s is one factor one should not forget: there are 1000000 thousands of developers using C# and Java and C and the producing factor of this masses of developers is pretty good – even at the open source libraries out there.
I still like to use Smalltalk for my own work – its easier, is takes (in these days) much less memory than C# or Java applications – a point nobody is now considering today and the interactivity is by far still not reached by all others IDE’s out there.
Lots of good sentiments here – I still write things in Smalltalk and the momentum behind Seaside is awesome.
Its been a shame that not more of the Smalltalk IDE UI’s have moved on – (having said that Dolphin is awesome, and the new announcement with Lesser Software is great news. Also Cincom seem to be picking up more energy. Hopefully Squeak will keep improving).
As for packaging – for the Web its less of an issue – a 30mb image on a server is not a big deal (after all its problably more than that if you look at all your java sdks and wars). On the Desktop – Dolphin creates 500k exe’s with ease – its a 1 button click (you just have to follow some of their easy put things in packages rules).
So its nice to see things coming back full circle.
What books and other resources do you recommend for learning Smalltalk.
Ah, Gartner endorsing Smalltalk. I can’t decide if that’s a day late and a dollar short or just the kiss of death for Smalltalk.
Remember LAN MAN? OS2? Both were heavily endorsed by Gartner.
Funny how self delusional language communities are.
Closures (and to an extend, meta-programming) have nothing to do with dynamically typed languages (I assume this is what you meant). They exist in statically typed languages too.
The way you begin this post is basically flamebait: “I program in Smalltalk, therefore I am better than you (Java/C++ programmers).
I don’t think very many people can take that sort of advice seriously, which is sad since Smalltalk and associated IDEs are potentially mind expanding.
Smalltalk has had such a positive influence on Java. The Java 2 collections are but a small example of what happened with the Smalltalk community started taking a good sniff at Java. JRuby has some really cool features but the syntax is still fairly ugly when you consider the elegance of Smalltalk. I’d say a modernized version of Smalltalk would be a great advance.
I would like to point out to the Smalltalk Industry Council (STIC). It is a vendor independent board to organize collaboration of Smalltalk language and software producers. The STIC is exactly one of the instruments of the Smalltalk community itself to gain and speed up momentum for Smalltalk.
Another sign of uprising momentum is the European Smalltalk User Group (ESUG) which recently held its 2008 conference in Amsterdam. The audience is from all over the world, not only Europe. The interest to take part was that big, that the organizers were forced to close reception for new visitors. This has never happened before. This shows how the interest in Smalltalk is growing, even beyond the estimation of Smalltalk professionals.
> What books and other resources do you recommend
> for learning Smalltalk.
Stéphane Ducasse has a quite a few electronic versions of Smalltalk books available on his website: http://stephane.ducasse.free.fr/FreeBooks.html
You can also download a version of Cincom Smalltalk for free and it has a non-commercial licence:
You can also go to the STIC website for links to other resources:
To my mind, Smalltalk has always been a far more modern, elegant language than C-derived hybrids. The factor of seven in code bulk between Java and Smalltalk is part of the reason, standard and easily reusable class libraries are the other.
I laugh when people say poor performance on older hardware was a mjor Smalltalk weakness. We routinely delivered applications that ran on 386 and 68020 processors with 8MB RAM. And yes, they were quite snappy.
No, the reason Smalltalk didn’t catch on is because Sun spent more money on Java marketing than was spent on all computer languages combined, since the dawn of time. They bought mindshare, as did Microsoft.
After a decade-long detour into mediocrity, companies are finally waking up to what actually works: dynamic languages save vast amounts of developer effort, which often means the difference between a canceled project and a successful one.
Considering that fortitude means “strength of mind that allows one to endure pain or adversity with courage”, I’m trying to make sense of your equation. I would think that the C++ developers are enduring the most pain and adversity, followed by Java, then Smalltalk.
Or maybe the Smalltalk developers endure the most pain because they can’t actually get paid to use their favorite language? I kid, I kid..
I’m a bit of a Lisp fan, though have never been paid to use it. Clojure is especially interesting to me because it runs on the JVM and is compatible with Java which makes it more applicable to my paid work. Any decent Smalltalk implementations for the JVM?
I’ve always been interested in Smalltalk, though, just haven’t gotten around to really trying it out.
I’ve been working at IBM for the past year on implementing Smalltalk in Eclipse to support some internal tools. We’ve started a blog about our progress at http://www.ibm.com/developerworks/blogs/page/stdt.
Soon smalltalk programmers will be whining again that all the Ruby on Rails losers have been jumping ship to smalltalk and seaside because they need to sell webapps that are worth more than a PHP app.
I’ve listened personally to whiny ROR programmers groan and whine about PHP devs LEARNING ROR and undercutting them.
At least smalltalk has some good compilers.
This micro benchmarks say another thing:
here http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=all smalltalk visual works 12 times slower than Java on a quad core.
here http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=all smalltalk vw and Python almost same performance
here http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all Java is one of the top in performance, Python psyco more fast than smalltalk vw and squake is almost at last to slow.
I think the best solution is one smalltalk implementation on the JVM or use Jython. Also check the Java6_10 with just the kernel deployment is to small it is like 2mb the vm.
Java and JVM is to advance more than 3 decades from smalltalks vm’s if you like tha smalltalk syntax the best as I said is make an implementation over the JVM if is to much work use Jython or JRuby and be done.
I like smalltalk and I admire it but better bring the best of smalltalk to already functional and mature VM as JVM and don’t reinvent the wheel anymore.
1) If you have investments in Smalltalk consider the risk of the language to be lower over the next 3 years than the last 3 years. Smalltalk is cool again. Is it the start of a long term trend or a fad? Yet to been seen.
makes me smile.
One of our customers has GUI code still running unchanged, which is more than 15 years old. If he had started with C/C++ in the early 90s, he’d rewritten the GUI code at least 3 times. And I bet it will run another 15 years – on whatever hardware we’ll have then. Anyone out there who is so sure about C++ / Java / C# GUI apps ? Would anyone bet if PHP is still around in 15 years ? Anyone bet on the windows API ?
Thats what I call “protecting your investment” !
That is called legacy, There still systems in Cobol running for 50 years. Your point doesn’t make sense, The GUI will change, now we are in the Web Era not anymore Gui app desktop era. PHP and Java and Python already they will stay with us for a long time.
This kind of blogs are just for Hypes and Fads. Smalltalk got their shot long time ago but failed I dont think it will comeback to the masses.
I think that all those script kiddies going PHP and other scripting languages will face a maintenance nightmare soon. Some already do.
> the reason Smalltalk didn’t catch on is because Sun
> spent more money on Java marketing than was spent
> on all computer languages combined, since the dawn of time.
> They bought mindshare, as did Microsoft.
I don’t Java’s success is result of strong marketing. I didn’t fall for it for the marketing. I fell for WORA, for the language/runtime separation, for the multi-vendor approach (Sun never wanted to be the single provider for any Java centric product niche, and in fact was never the leader), for the comprehensive set of vendor-neutral APIs for all sorts of execution environments/applications,
Now if you want to call strategic technical decisions and openness ‘marketing’, well, be my guest.
Those who like ruby on rails will like seaBreeze too. Have a look at http://seabreeze.heeg.de and load your QuickStart test and demo application to run your own webserver within a minute. seaBreeze is a really cool tool for webdevelopment and it is open source.
Well, there is no doubt Smalltalk was and is an innovative language, but I still miss coexpressions and goal directed evaluation in the Icon programming language. Types? who needs types? I want results (plural)!
If we could get those into Java, along with a correct Unicode support (UTF-16 for internal representation, are you nuts!?) then we could have some real fun.
Chekke – why do applications, especially GUIs have to change? If they satisfy the requirements, why change? For the sake of it? That is not how a company invests its money.
As for the web, Python and PHP are themselves not really fast, Python being as fast as Smalltalk (see your own statement). I dont know about PHP, but I doubt it is really fast.
I agree with your statement that Smalltalk on a JVM would be a good thing, though.
You could do a global-replace of “Smalltalk” with “Lisp”. The article and comments would for the most part make pretty much exactly the same amount of sense.
I used Lisp (a lot!) when in school, thought Smalltalk-80 was very cool (and bought the books) when it came out. I do not expect either to be a practical choice of any of the projects in my future. Not that I would mind – just that I doubt either will be a pragmatic choice.
Oh, and the comparison between Smalltalk/Java/C++ programmers? The key difference is the programmers, not the language. Not all C++ programmers are (remotely) equal, and the difference has nothing to do with the language used.
As a long time OTI’er I too miss Smalltalk dearly. The time between thought and running code seemed much shorter than Java. Admittedly the packaging story was a mess and hurt adoption, with Envy/Packager requiring unrealistic extensive and deep knowledge.
The Java marketing was quite clever, being billed as the language for the internet, just as the internet fever was really catching. Nobody understood what that meant though. Remember applets being the solution to delivery of internet apps?
Unfortunately the lesson for me was that the best language doesn’t necessarily win. But I am heartened by the growing return to dynamic languages in general. It may be that its too late for Smalltalk, or that you’d need to fix the packaging story, standardize the libs, and change the name to give it a new life (or is that now called “Ruby”? ).
I you want to learn Smalltalk with the Squeak flavor, you can download freely or buy this book: Squeak by example or his french translation : Squeak par l’exemple.
As another Smalltalker, I too would like to see its return someday. For now I would like to see more use of Smalltalk like constructs in Java (Groovy). It would be much easier to move someone to Smalltalk if they were already using Groovy. It was a no brainier for someone using C or C++ to move to Java. I remember back when all the C and C++ people wouldn’t touch a language that ran on a VM. Now, I think 90% of people think the VMs started with Java.
Java did a couple of things right, besides the timing to become so successful.
Built lots if free open reusable libraries in the form of jar files (REUSE…).
Huge amount of PR and R&D
Hello from Prague, the heart of Europe!
I stayed to teach Smalltalk since 1993 and am very happy about this information. Each academic year, we produce a small group of new Smalltalkers in the Czech Republic.
Also, there is a growing interest for Smalltalk in Ukraine and Russia.
But my friends, we need a change. Smalltalk must have sofisticated CASE tools, business process simulation tools, large development environments etc. etc. etc. This a bit different class from current VisualWorks, STX and Squeak 🙂
the old Smalltalker
I programmed in a derivative of Smalltalk called RPL which was used in the ObjecTime tool. It was an absolutely fantastic language, so I guess that Smalltalk is probably not much different.
Smalltalk’s problem is that its main proponents are usually 50-something old guys with no sex appeal. (I’m getting close, so I know what I’m talking about).
Ruby is great because it does a lot of what Smalltalk does. Ruby beats out Smalltalk because the syntax looks more like C than like make or Prolog. It also beats out Smalltalk because it deals in the well-understood currency of files and databases, rather than massive passivated images. Not that one is better than the other, but more people understand files and databases rather than images.
To fix this, Smalltalk needs hip and sexy new websites built with Seaside with lots of young-ish 20-something developers and users obviously succeeding with it. They also have to get a Seaside/Smalltalk book published by Pragmatic Programmers.
At the company where I work, we have used Smalltalk for 19 years. Our tiny team of programmers has beat the pants off of competitors who employ teams 100 times our size. Is it because they use C++ and we use Smalltalk? Maybe not, but we’re sticking to Smalltalk anyway…
Smalltalk beats Ruby because the syntax looks nothing like C and there is so little syntax to remember and type in. It also beats Ruby because it avoids the out dated and inflexible currency of source files, instead using the flexible and powerful concept of in-memory images which can be usefully snapshotted at any point in time.
Smalltalk is an enabler. It doesn’t get in the way of writing code by overloading you with syntax and masses of typing. Anything you type in Smalltalk does something rather than just being there to pacify the compiler. It also beats all other languages by encouraging the development of code during a live debugging session. You never have to stop, edit, compile and re-run.
One of the organizations i know is moving from Smalltalk to Java since they feel smalltalk will die – tomorrow or day after – but death is certain.
Sorry state of affair in this case – i feel which ever architecture you develop in Java can be developed (and in a better way) in Smalltalk. Still, because ppl feel the future of smalltalk is bleak with only a handful of organizations supporting it, “businessmen” try to move to a widely used platform.
I personally love smalltalk because of its ‘transparency’ which isn’t there in any other language – i can ‘see’ how and why a thing is working the way it is. the dev tools it provides are unmatched and performance is amazing.