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

Blake Israel 2 Discussion 1

Smalltalk-80 vs. C++ vs. Java

The article I chose can be found at:

Because the article appears to be from a Ruby biased site, I have chosen to use the information they provide and compare anything but Ruby.

Therefore, I will compare/contrast Smalltalk-80, C++, and Java.

  1. Java and Smalltalk both provide access to the names of Objects, variables, etc. during Run-Time, whereas C++ does not.
  2. Smalltalk provides only for single inheritence, C++ provides openly for multiple inheritence without protection, and Java provides a unique blend, allowing only a single truly inherited object, but allowing for the definition of interfaces which provide requirements for the new Object to implement, but leave out the implementation.
  3. Both Smalltalk and Java have a root object (i.e.: Object), whereas C++ does not have any root type object.
  4. While all 3 may have hidden (private) data variables, only Smalltalk-80 may not have privatized methods.
  5. C++ also lacks garbage collection capabilities, whereas they are abundant in the others.
  6. C++ and Java support primatives, whereas in Smalltalk even integers are objects.

I think David Shirley does an excellent job of describing the impact of encapsulation on the programmer. The fact that Smalltalk enforces very strict OO policies can be somewhat of an annoyance, but overally may lead to better design. Where languages like Java and C++ let you run wild with the scope of everything. Unfortunately, Smalltalk excludes certain design patterns by doing this. Such as singletons, where the programmer needs to hide the ability of another to instantiate that class, and provides a method instead that retrieves a single instance. In this way Java and C++ are more flexible in the design patterns they can produce, but at the same time, can be much more destructive in the way they are used (i.e.: in creating sloppy, bad designs).

Respond to my discussion:

Links to this Page