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 - William Blatt

"Programming Language Comparison" by Jason Voegele
http://www.jvoegele.com/software/langcomp.html

This page compares a number of languages based on a number of different features they offer. The page is intended mostly for programmers looking to decide on a langauge that would be best for their specific project.

Some of the more interesting discussions on the page (at least in comparing Smalltalk to other OO languages) include the discussions on being "purely" object-oriented and the issue of static and dynamic typing. Smalltalk, along with Ruby, Eiffel, and other languages not discussed in this article, are all considered to be pure object-oriented languages. Although Java and C++ are often the first languages many in the mainstream think of when referring to object-oriented programming, they are not considered to be completely object-oriented due to their use of primitives and built-in arithmetic operators.

Another important comparison Voegele makes is that of the ways dynamic and static typing is implemented in the languages he examines. Smalltalk uses a completely dynamically typed system, meaning that variables are created without having to be declared as a certain type. While this gives the programmer more flexibility, it also creates the possibility of run-time errors if the system attempts to access a variable that is a different type than it is expecting. In statically typed languages such as Java, the compiler checks that variables contain objects compatible with the static type of the variable. While this does grant the programmer some degree of protection, it can cause hassle when making changes because of the need to possibly change numerous instances of variable declarations in code if the design is altered.

While the page compares many more features of those languages, many of them are not as inherently important to OO as the two I examined, and others contain somewhat outdated information (such as Voegele bemoaning Java's lack of generics, a feature added in Java 1.5). Overall, though, the article does give a fairly in-depth comparison of languages and the situations where some languages become preferable to others.



One discussion I found interesting was Peter Budny's discussion on an article that analyzed how effective several OO langauges would be for teaching beginning programming. It was interesting to see how difficult it is to find a language that effectively teaches all of the facets of object-oriented design and avoids confusing contradictions and special cases (such as Smalltalk and Eiffel) while still being easy enough for users to grasp syntactically and being transferable to other languages.

Links to this Page