View this PageEdit this Page (locked)Attachments 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 - Lee Crippen


I read the paper The Problem of Teaching Object-Oriented Programming by Michael Kölling. In this paper, Kölling details 12 requirements for an object-oriented language as a teaching tool, then specifically evaluates C++, SmallTalk, Eiffel, and Java against these requirements. The 12 requirements he states are clean concepts, pure object-orientation, safety, high level, simple object/execution model, readable syntax, no redundancy, smallness, easy transition to other languages, support for correctness assurance, and suitable environment.

His first and harshest criticisms are of C++. Its redundancy, complicated syntax, and lack of memory-management safety are some of the biggest flaws he points out. Though a powerful development tool, he deems it a bad O-O teaching tool. Next, Kölling reviews SmallTalk. Although easily the most object-oriented language of the four, it still has some major flaws. Some object-oriented concepts are not available(such as private methods), there is no static typing, and the syntax, while simply written, can still be obscure and confusing. Next comes Eiffel, which has only 2 major flaws. Its two modes of object storage seem confusing from a learning point of view, and its environment is just plain bad. Finally comes Java, which appears to be the best option from the four, though far from perfect. Among others, Kölling criticizes some problems with the static types, the occasional dip into low-level territory, and the C-like syntax.

This paper does a good job of objectively comparing C++, SmallTalk, Eiffel, and Java in the particular application of teaching tools. Although Java appears to be the language with the least problems, the paper as a whole does not seem to be biased towards it. All four languages are equally rated against the 12 criteria as teaching tools. Examples are given and points are made showing how these languages positively and negatively affect the teaching of object-oriented programming as well.

In relation to Elliott Clark's article, I'd like to point out that leaving memory cleanup to the programmer can have adverse affects other than those immediate and obvious(problems with the code itself, like bugs and leaks). The complexity involved in learning memory management can be detrimental to beginning students; they may start off on the wrong foot if an object-oriented language like C++ is used as their introduction to programming.

Links to this Page