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

Discussion 1 - Peter Kinnaird

I read an article comparing Smalltalk to Java:

The article first discusses the history of the two languages: where and why they were developed. The author first identified efficiency as a 'con' of both smalltalk and java, but makes note of the advantages of the virtual machine paradigm, namely that these languages have unprecedented mobility by being compatible across platforms.

The author then discusses similarities between the two languages in terms of simple language and readability. He identified the preciceness of both languages as a positive attribute that is not present in every language (operator overloading in C++, for instance). He notes that most operations in both smalltalk and java are not redundant, with the exception of incrementing and decrementing variables. He further states that the lack of type declarations in smalltalk is generally an advantage. The coder does not have to keep track of every single variable and its type to avoid compile-time errors.

He then goes on to discuss the languages' orthagonality. One disadvantage to smalltalk, in this respect, is the lack of simple control statements common to other programming languages, such as for, and while loops. Another disadvantage to smalltalk is the absence of strong-type checking. This can lead to unreliability in the form of common runtime errors. However, the author does praise the presence of the automated garbage collection systems in both languages.

In line with his earlier statement regarding the pros of inefficiency (in exchange for other functionality), the author then identifies the vast store of built-in, expressive functions and libraries which allow more productive coding. These prevent the coder from having to recode extremely common procedures.

The author then identifies several key components of both languages that he believes are positive, including: portability, Integrated Development Environments that are free and provide useful tools such as debugging, and the implementation of abstraction including recursion and polymorphism that allow code simplifications and thus enhance readability.

The author eventually concludes that Java is better suited for the majority of programming applications, including Applets, games, server technologies, and everyday client-side programs. However, he acknowledges that implementations of smalltalk are much better suited to certain specific areas, such as old mainframe technology, and environments that are not very dynamic (such as at a phone company, for call routing).

He has presented a strong case for the use of both languages in different situations. The use of one of these two languages over the other is unlikely to dramatically affect the coding style of experienced programmers because both provide the same essential features. However, one can clearly see the advantages of Smalltalk for teaching Object Oriented Design. While java can, and is used for teaching OO, one can easily code enormous main() methods in java that lead to the deceptive understanding that structured programming contains the basics of OO.

My response is to David Shirley's article that also compared Java with Smalltalk. His article claims that the coder would have a 'different mindset' between Java and Smalltalk due to the differences in encapsulation and scoping. The article that I read reaches a different conclusion: coders of both would have a similar mindset because encapsulation and scoping are not among the defining features of object oriented design. It is interesting, however, to see an article with the identical topic that covers an entirely different aspect of the languages from mine. His article seems to completley ignore the topics covered in mine, while mine made no mention of the differences highlighted in his.

Links to this Page