Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Discussion 1 - Steven Carr
Programming Language Comparison by Jason Voegele
This website compares several different programming languages including Java, smalltalk, and C#. It began by establishing several properties that object oriented languages should have.
1. Encapsulation/Information Hiding
3. Polymorphism/Dynamic Binding
4. All pre-defined types are Objects
5. All operations performed by sending messages to Objects
6. All user-defined types are Objects
An object oriented programming language is “pure” if it has all of these properties. Eiffel, smalltalk, and ruby have all these properties so they are “pure”. Other well known languages like Java and C# are only hybrids because they have primitive data types and not all operations are messages sent to the object.
The site also mentioned the differences between dynamic and static typing. Both smalltalk and ruby use dynamic typing which means that variables are not defined as a specific type. This leads to increased flexibility. Languages like Java that are statically typed cannot change what type of object a variable holds after it is created. This can prevent passing a different type of object into a method than it is expecting, which could cause strange things to happen.
Almost all programming languages listed on this site support some form of inheritance, operator overloading, class variables and methods, garbage collection, access control, and reflection.
An interesting description of the languages that the website had was the Capers Jones Language Level. The higher the levels, the fewer lines of code are needed to implement a function. This study didn’t examine all languages in equal depth, so it is considered flawed, but it provides an estimate on the productivity levels of the languages. Smalltalk, Eiffel, and perl, had the highest rating with 15, and Java and C++ were the lowest at 6.
I found that Alex Groleau’s discussion related to mine, as he looked at the same website. I thought it was interesting that he pointed out that not using primitive data types is a fairly trivial difference which suggests that maybe the six properties of object oriented languages listed by Voegele and the differences between “pure” and not pure languages isn’t important.
Links to this Page