This is a page for frequently answered FUD about Smalltalk. (FUD = FearUncertaintyDoubt
) Please post examples of anti-Smalltalk FUD and answers to these. Then, instead of rewriting an answer, we can use our time in a more valuable way.
You cannot write fast code without static typing.
demonstrated that this is false, in a pretty funny way. :) Strongtalk is a dialect of Smalltalk with optional StaticTyping
. It has a really cool optimizing compiler which does all sorts of SelfLanguage
-style optimizations. "It executes Smalltalk much faster than any other Smalltalk implementation," according to the website. And the punch line is: the static type system is completely independent from the optimizing compiler. Strongtalk code runs just as fast whether you specify the types or not.
You cannot write reliable mission critical code without static typing.
Smalltalk has no MultipleInheritance (MI).
You only need MI when you use static typing. MI is a static typing language's implementation of polymorphism. Besides, Java dropped MI of implementation for good reasons. (By the way, so did Smalltalk about 10 years ago.)
This is FUD about multiple inheritance. Multiple implementation inheritance is applicable to both statically and dynamically typed languages. Note that saying "for good reasons" but not saying which reasons is a good way to spread FUD :-) -- LukeGorrie
I disagree with most of the statements above. However, it is true that Java has no Multiple Inheritance. Stating that a language has no MI is not FUD. It is just a statement of fact. Stating that all languages that lack it are useless would be FUD. -- PeterKwangjunSuk
Smalltalk requires multiple inheritance because its standard libraries often override superclass methods with messageNotUnderstood
. This suffers from the CircleAndEllipseProblem
for the sake of simplicity/efficiency. Instead, a multiple inheritance system would likely be better. Really, multiple inheritance is necessary by all strongly typed
object-oriented languages, not statically typed. Prototype-based languages, on the other hand, do not need multiple inheritance, and prototype-oriented languages really enjoy multiple inheritance -- SunirShah
Smalltalk is slow.
It's faster than Java.
This raises the question "In what ways?" VisualWorks
GC still kicks ass. Swing looks more polished in some ways, but a Swing app next to a VisualWorks
app on the same machine is a considerable contrast in GUI responsiveness. -- PeterKwangjunSuk
The above statements about speed are silly. Which Smalltalk and which JVM would you consider? For what types of applications? (Java can be "faster" than C if you have a sequential C program running against a Java application that uses threads to avoid unnecessary waiting... Context does matter.)
The issue really is, "Is it fast enough for my application?". The answer for most applications is yes, just not computational intensive programs. Science and engineering apps generally don't use Smalltalk for this reason. However, Los Alamos Nation Labarotory uses Smalltalk for some projects, so this is not universally true.
If I could write 5% of my code in C and use Smalltalk as the glue for that C code and it runs 80%% as fast as a C program is this worth it? How fast do I need it to run. If it takes .2 seconds to spellcheck a document versus .15, do I really care about performance? You just need to answer the question, "Is it fast enough?".
Smalltalk looks funny/is ugly/isn't C.
If C doesn't look funny, what does? Remember ThreeStarProgrammer
No one has ever written an application (like mine/shrinkwrapped/for windows) in Smalltalk.
Well, that's not true. After all, LibertyBasicIsWrittenInSmalltalk
. Also, all of the VisualAge
products are written in Smalltalk, and Haestad methods (http://www.haestad.com
) has a whole line of shrinkwrapped CAD programs written in Smalltalk.
That's not very many.
IBM has bought the Smalltalk market and eventually all Smalltalk will go through them (for support).
Now that IBM has also bought big into Java, they'll ignore Smalltalk eventually and, being the big name in it, will let it die.
IBM historically does not kill products; witness the longevity of OS/2. -- BobJarvis
No, IBM just abuses and neglects its own products without ever having the mercy to let them die a peaceful death!
IBM just announced they were outfitting 200,000 emplyees with Windows 2000.
Smalltalkers are hard to find and expensive.
So's good talent for any other language/system/what-have-you. Sometimes you have to grow your own. People who know Smalltalk tend to be very loyal to it; thus, training people in Smalltalk can be very cost effective as it can actually aid retention, both by making people feel appreciated and secure ("Gee, they're sending me to training - I guess I'm not going to be downsized this week!"), and by giving them tools they want to work with. -- BobJarvis
Most people haven't even heard of Smalltalk or, if they have, consider its time past.
Well, most people are stupid too, so what.