View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Michael Bleigh: Discussion 1

Based off of reading this article:

SmallTalk vs. Java

How do they compare?
The first point the author of this article makes is about SmallTalk's pure object model. By having primitive types, Java is limiting the use of these types in polymorphic collections and other such things.

Additionally, it talks about the reflective model of SmallTalk, allowing any class to be viewed with true introspection, getting methods from itself and superclasses.

SmallTalk also, according to the article, has a very clean, English-like grammar, unlike the flow-based machine syntax associated with C-based languages.

How does this affect programmers?
By every type being an object instead of a primitive, SmallTalk has a unique advantage of being completely transparent to the programmer. This allows for creative programming strategies that may involve extending primitives from other languages. Additionally this means that any object written by a programmer will be treated the same as any given primitive type.

My primary experience has been with Java, and it often frustrated me how the primitive types and arrays didn't play well with ArrayLists and other collections. Smalltalk can't possibly have a separate integration structure because there are no primitives, and so this changes the model of programming.

Dynamic typing is a feature of SmallTalk that I think holds the greatest advantage to the programmer. While it may be less efficient than strict typing, dynamic typing allows the programmer to greatly increase workflow and productivity.

After reading Samuel Young's discussion, it supports much of what my article had been talking about. An additional and interesting point it raises is the standardization of Java vs. the 'dialects' of SmallTalk. I think the standardized language does allow for greater flexibility in a code-base and available libraries.

Link to this Page