[ | smalltalk dot org ].
Community and industry meet inventing the future.
If you're tired of drinking all that coffee, and you don't like your C flat, how 'bout some good 'ol Smalltalk to help soothe the soul?
posted by Peter William Lount
version 1, 20050225 4:51pm PDT

In the Why Smalltalk article Smalltalk v. Java: Which is More Productive? Don Raab has one of the best summaries of why Smalltalk is better than Java. Don cuts right to the heart of the matter and we find out how Java is so much more complex than Smalltalk.

"Smalltalk is simple, terse and consistent. Everything is an object, and things get done by sending messages. There are 5 reserved words. The class library is well architected, and easy to navigate (I love Trailblazer in VAST). Everything is available right at your finger tips. You can execute code and inspect the results right away. Smalltalk gives you complete freedom to explore and learn. Once you've done it for a while, you can start to guess that classes will respond to certain messages. Once you break the shackles of your Pascal or C programming heritage, Smalltalk is much easier to read. Easy to read, means easy to learn, enhance and maintain."

"Java is kind of like kindergarten. There are lots of rules you have to remember. If you don't follow them, the compiler makes you sit in the corner until you do. There are 59+ reserved words. Everything is not an object. There are primitives, and your classes are not first class objects. And you have to remember that there is no "this" in a static method (in Smalltalk calling self in a class method would return the class itself). You have to remember to tell the compiler things several times so it knows what you're talking about (Date date = new Date())."
- Don Raab, Currenltly a Java Developer, and formerly a Smalltalk Developer.

Don continues with a point that I've made over and over here at Smalltalk.org and that is that humans have limited amounts of information that they can process at once. Computer langauges and software must be designed to take this into account. This is known as "chunking" and it's an important aspect of being productive no matter what it is that you are doing.

The human mind can effectively remember 7 +- 2 things. Java forces you to memorize much more than this. Java doesn't lend itself to information chunking. And it doesn't help that the class library has design flaws in it (java.util.Date anyone !?!? how 'bout java.sql.Date? or java.sql.Timestamp? What's that design heuristic that says that all base classes should be abstract classes? ;-)). If all you have in front of you is your mail editor, it will be much harder for you to remember all of the details for writing complicated Java code. Smalltalk is a bit easier to remember. The fact that I haven't been programming in Smalltalk since Feb. 2000, should be evidence of that. Once you've learned Smalltalk, it's like riding a bike. With Java, I am much more dependent on my JBuilder environment and code assist, and Java Doc to remember things. Because there are a many more things to remember.

By the way the seven plus or minus two chunks of information that our conscious minds can handle is on a good day! You know when you have a day when you are a bit (or a lot) frustrated, when you are overwhelmed with work and other thoughts on your mind, when you are emotional or upset or facing difficulties and challenges? On these days you might be having a one or two chunk day. You know those days when you didn't see what was going on because you were so busy in your own head or with some other task that you missed what was happening around you?

The reason that many people don't want drivers using cell phones is for the limited chunks of attention span that we humans have. This human factors issue is very real. Lives are at stake and not just from a distracted drivers actions, but also from the people who program systems using tools that are way too complex such as Sun's Java and Microsoft's C# .NET systems.

Futhermore the seven plus or minus two chunks might be really generous. A new study indicates that it might be four plus one and minus two chunks on a good day. The design of systems makes a huge difference. Smalltalk's design helps by being easier on the number of chunks your brain has to hold at once. Let's face it software is complex enough without the tools getting in the way all of the time. Java gets in the way way too often as Don demonstrates. Could it be that Java slows down and distracts your developers and as a result costs your company more money in development, testing, debugging, maintenance and other hidden costs? You bet.

Java's developers are devoted to complextity as Don so elequently illustrates. The question is why is Java so complex? Who knows? Other than saying that the majority of people in the high technology and software industries like being the high tech priests to ensure that their jobs, contracts and products are secure, I'm not sure why they choose complexity. I think the answers for why Java is so complex must be addressed to those culpible at Sun. They are the ones who designed and built the white elephant otherwise known as Java. It's a beastie for sure. Sue them for your extra costs on your project. Switch to Smalltalk today and succeed.

Oh, the title for this article also comes from Don. Nice work Don.
 If you're tired of drinking all that coffee, and you don't like your C flat, how 'bout some good 'ol Smalltalk to help soothe the soul?."
- - Don Raab, Currenltly a Java Developer, and formerly a Smalltalk Developer.

Additional Resources
More Donald Raab's Smalltalk vs Java Comparisons.
Copyright 1999-2010 by Smalltalk.org"!, All Rights Reserved.