Sebastion Dietz wrote:
We are using Smalltalk (a rather old implemetation) for a logistics and foreign trade application with a bit over 500,000 lines of code (comments and empty lines excluded ;-) ).
Having worked with Smalltalk for 10 years now, I would not recommend it for larger business applications.
Smalltalk allows me to be agile, productive, my systems are maintainable regardless of all changes of business climate in recent years.
Unfortunately, Smalltalk is an effectively dead langauge to the majority of software shops out there (a real pity, too), relegated to the same dustbin which holds both Lisp and Forth.
Smalltalk is a language that makes true OO programming so cheap that you’re more often than not benefitting from a pure-OO (possibly with patterns) approach to coding for pretty much everything.
In short, it’ll take you, the programmer, substantially longer to implement a properly OO solution to any problem in Java than it would in Smalltalk.
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.
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 my opinion, Seaside is the coolest thing going in web development
Recently I’ve had the good fortune to be exposed to Blain Buxton, a long time Smalltalker.
Stange talk of ‘messages’ and ‘images’ and crazy talk of changing objects on the fly without restarting anything. In fact, not even having the concept of an application to restart.
After some digging and reading, and after a nice demonstration using Squeak, I am starting to understand things and want to be in this lively Smalltalk world.
I use Ruby, I like Ruby, but Smalltalk is more productive when I’m working in unknown territory.
Smalltalk doesn’t have to be pragmatic, because it’s better than its imitators and the things that make it different are also the things that give it an advantage.
So, if you still haven’t tried Smalltalk, and I mean really tried it, by writing an application in it, give it a go. You’ll never regret it, because everything you learn, and you’ll learn a lot, you’ll be able to bring back with you to whatever language you call home.
Interesting, the corporate world may not be in love with Smalltalk, but for many developers Smalltalk becomes the language of choice (once they get to know it).
The fact is that there are a number of companies with significant and ongoing investments in Smalltalk. There may not be a ton of companies out there leveraging Smalltalk, but they are out there and not all of them are interested in letting the competition in on their secret.
But this post isn’t aimed at IT shops and corporations.
Smalltalk was designed to allow people (not just programmers) to express their creativity in the computing medium.
You don’t program in Smalltalk. You work in Smalltalk. You immerse yourself in Smalltalk.
Everything is an object and everything can be modified from within the development environment, including the tools and the web server. If you need to change the behavior of the web server (i.e., fix a bug), you can – the source code is in the image, easily accessible and the changes can be made without breaking stride.
The image provides built-in persistence for your application objects – no need to configure and manage separate programs to persist your data.
With the built-in inspector you can poke around your object graph. With the built-in debugger you can fix your code and explore the relevant objects. No context switch needed when you hit a problem whether it be a problem in the data base, a problem in your web server, or a problem with your application – the debugger pops up and you just continue with your development. It is a joy to accomplish things in Smalltalk.
For individuals and small groups of programmers (like MicroISVs) for whom productivity is important it can make a lot of sense to choose Smalltalk as the development/deployment platform. For a web application, the entire deployment stack can be built into a single executable program (the image): DB, configuration console and web server, all running within a single program – all written in the same language and all developed with the same tools. Here are several examples of Smalltalk-based deployment stacks in action (each download includes a Mac application, a Linux shell script and a Windows .exe file):
- AIDA6.0-beta1 (Aida; Squeak)
- Pier 1.1.1 (Pier; Pharo)
- Seaside One-Click Experience 2.8.3 (Seaside; Squeak)
Don’t you think it’s time that you gave Smalltalk a whirl?