Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Discussion 1 - Vinayak Kashyap
About the article:
Requirements For A First Year Object-Oriented Teaching Language
By: Michael Kolling, Bett Koch, John Rosenberg
AMG SIGCSE Bulletin
ACM Digital Library (from Georgia Tech Library Website)
The paper discusses the efficiency of teaching OOP through four different languages: C++, Smalltalk, Eiffel, and Sather.
The authors state many advantages in teaching OOP as an introductory programming course for CS. Among these are that learning OOP encourages "well structured programming" and also allows students to apply real world concepts to programming. Also, it encourages better software development practices such as code reuse and in the end facilitates in learning a non OOP language.
Few of the requirements of a good OOP language include: simple/consistent syntax, no constructs dealing with machine internals,and should teach the basis concepts of OOP such as inheritance, polymorphism, and information hiding.
The aim of a good OOP language should be to teach underlying concepts so students will be able to write good programs in any language.
The first language analyzed is C++. According to the authors, it is the worst candidate for teaching OOP. The main reason for this is C++'s closeness to C. This leads to students not developing pure C++ programs. Also, dynamic storage allocation without garbage collection is also a problem because the progammer has to deal with details in low level programming. While comparing Smalltalk, the authors are much less harsh. Although Smalltalk is a pure OOP which comes in an IDE, it suffers from a huge class library along with the fact that errors will not be detected until runtime. Also, Smalltalk syntax is more obscure compared to other OOP languages. Eiffel also has problems similar to Smalltalk. Although Eiffel syntax is better that Smalltalk, it too has a huge class library that can be difficult for a beginner to adapt to. Also, linking in Eiffel is slow. Sather is described as a cross between C++ and Eiffel. The problems with Sather include inclusion of untyped objects and need to explicitly identify dynamic dispatch.
Finally, the authors re-iterate the imporant characteristics of an ideal OOP language. The language should be strongly typed with static checking where applicable. Also, multiple inheritance should be provided only in a way that does not complicate the syntax.
The article I read did not mention or compare Java so I decided to discuss Courtland Goodson's article in which he describes the efficiency of Java compared to many other languages. For one, both our articles agree Smalltalk and Eiffel are probably the two best OOP languages. As for Java, his article contends that Java lacks basic types as objects and hence prevents it from being considered a pure OOP language.
Links to this Page