An Aesthetic Observation.
There are so many subtle differences between the SmalltalkLanguage
and the JavaLanguage
that it almost isn't fair to compare the two. Most folks have no idea what they're missing by using Java. Words almost cannot describe the heuristic differences between the two without using Smalltalk (VisualWorks
, MT, DolphinSmalltalk
, etc.) first.
Sadly, most Java programmers treat the language as a modern-day COBOL -- a mold it sorely fails to fit into. Let's face it: If you want to define a record structure and MOVE data between fields and do a few COMPUTEs and then do a WRITE, COBOL wins the race. This, in part, I think is why many Java programmers fail to "see" the Smalltalk worldview: It's completely object-oriented right down to the environment. Most Java programmers simply aren't to that point in their thinking yet. One wonders if this will ever happen. -- JeffPanici
[clap of thunder]
- Why C isn't Smalltalk? Why Ada 95 isn't Smalltalk? Why Object Pascal isn't Smalltalk? why Common Lisp isn't Smalltalk? Why BETA isn't Smalltalk ?
- Why don't they implement the Smalltalk engine directly in the microprocessor and have an assembly is Smalltalk
- By the way can you change the class of an object dynamically ? I'm affraid you can't. What a limited language is this Smalltalk.
- Can you do real polymorphism (polymorphism on all the arguments , not just the first one - the self reference)?
- Why Smalltalk has classes, when classless languages or languages with dynamic classification are far more flexible?
- Why SmallTalk isn't typed like ADA, when typed languages are by far safer than Smalltalk class languages?
- Get used to it buddy !!! Respecting differences of thinking and opinion is the way modern spirit is supposed to work
Well, if it has done to death, just for my intellectual curiosity, I'd like to know whether there is a method to achieve formal proof that once a fairly complex Smalltalk system deployed, it will not generate any MethodNotFound?/DoNotUnderstand? type of strong dynamic typing ?? Give me a reference, or a link.
[Will you also contribute an analogous reference or link showing that "fairly complex" Java code will not generate a ClassCastException or segmentation fault at runtime? More importantly, would please sketch, in pseudocode, how (without restartable exceptions) you'd recover from such a situation in Java? The Smalltalk analog is straightforward and has been done multiple times. -- TomStambaugh]
- Either because the language you choose is not object-oriented, or they decided to make a major classifying design decision differently, or because they made serious mistakes like Java did.
- Smalltalk has been a bytecoded language for ages. Naturally people tried doing this, and it ended up into a legal dispute between Intel and International Meta Systems over patent No. 5,574,927. Intel was looking into the design for its Merced architecture.
- Smalltalk has ObjectSwizzling? by way of the become: method. In fact, one of the classic benchmarking tests is how fast you can become: a whole bunch of objects.
- ParametricPolymorphism doesn't make much sense in a dynamically typed language. But, as always, you can fake it.
- Smalltalk has classes because Smalltalk is object-oriented. This is a tautologous statement. If Smalltalk was a functional language, it would not have classes (ok, unless it was CLOS.. gah.)
- "Self is like SmallTalk, only more so", and it uses prototypes. Objects do not require classes. But prototype-based languages are not "more flexible" than class-based ones. Each can emulate the other.
- Smalltalk is strongly typed. Smalltalk is dynamically typed. These are two of the major design decisions that help classify languages. The argument of whether or not dynamically typed languages are better than statically typed languages has been done to death on this wiki.
- UnitTests. Formal proofs don't matter in computer science. It's difficult to prove the correctness of any program more than a few hundred lines long, and even that would take you a few weeks to months.
- Are you confident that you can write enough UnitTests as to make absolutely sure, that your UnitTests catch all the programming errors that a statically typed language would catch at run-time? I believe not. If I am correct, do you have a model for calculating some probability on that ?
- Respecting differences of opinion over beer is the way modern spirit works. At work, most people prefer to be efficient because if you are not you will be justifiably crushed. When making technical decisions over which solution is better, being aware of the technicalities does indeed matter.
This reminds me so much of WorseIsBetter
. -- CharlesMiller
When making technical decisions over which solution is better, being aware of the technicalities does indeed matter.
I hope you won't get a decision position in developping avionics software, and decide to replace Ada with Smalltalk because you prefer to be efficient. Or if you do, please let us know here on Wiki, so we can avoid catastrophes.
who suggested doing that?
Well, don't a lot of people think that Smalltalk is the greatest of 'em all ?
You're suggesting that one couldn't write safe avionics software in Smalltalk? I don't believe that for a second. Remember that a big chunk of our financial industry is based on Smalltalk-based software. Also note that some major pieces of avionics software, as used in comercial passenger jets, runs on Microsoft's Embedded NT product.
So Smalltalk IS the greatest of 'em all, after all... For one second I belived somebody had some hesitations about that.
Hey, how does the statement "I believe that you could write safe avionics software in Smalltalk" equate to "Smalltalk is the greatest of 'em all"?
Do you believe, or are you sure ? Has Smalltalk ever been used in a safety critical environment? Would you care to share with me what exactly are the real time facilities of Smalltalk? "EmbeddedSmalltalk?" has been used inside every oscilloscope produced by TektronixInc for an eternity; it is the way Tek manages to deliver such a variety of special-purpose scopes. There is a wealth of literature describing the hard- and soft-realtime aspects of that technology. WardCunningham and KentBeck, among others, can speak from first-hand experience. DaveThomas and OTI produced the embedded virtual machine technology, and derivatives of that technology, acquired from OTI, now power VisualAgeSmalltalk and VisualAgeJava from IBM. -- TomStambaugh
[Tek isn't using Smalltalk any more, and hasn't for years. See TektronixElevenKayScope
I would also really like to know about that dynamic strong typing. I have absolutely no prejudices on Smalltalk, and even I'm willing to admit that 'good for everything' language theoretically can exist. Please help me find out if that phylosophic stone is not exactly Smalltalk.
I posted the links to the logical fallacies. I did this to show you that you are arguing from desperation. It's cheaper to retract your comments and then weaken them to questions then to argue hopelessly backed into a corner. -- SunirShah
The biggest logical fallacy in here is you making the connection between financial software and avionics. Cut the whole crap out. It doesn't matter to me.--CostinCozianu
I didn't make the connection between avionics and financial software. Someone else did. -- SunirShah
So, either I was sleepy , or RobertChurch
really didn't signed the paragraph at first time. Anyway I kindly invite him to pay a visit to comp.lang.ada newsgroup and express his opinon on the subject at hand (financial and avionics).
I'm sorry for taking on you SunirShah
. My point is that we have different languages, supporting different concerns and its pointless to make language comparisons.
As a matter of fact even for OO I believe we have several equally valid OO models. Thus I find it nonsense when good Smalltalk folks behave like they have some kind of a monopoly on everything that has OO in the description. -- CostinCozianu
But that doesn't change the question. Why isn't Java better designed?
That's a good question. I'm affraid it's too late to ask for a change, so the question remains rhetorical, thus useless. With all its bad things (and some more are on the way), it kind of works for me. A good programmer can pretty easily slalom around java limitations. -CostinCozianu
Of course, my bet is that Sun just doesn't have the expertise to do it, especially JamesGosling
. A good opinion from RichardStallman
lies on "JamesGosling
has had many first-hand words about the Sun troup as well. -- SunirShah