Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
I read a paper called “A Conceptual Perspective on the Comparison of Object-Oriented Programming Languages”. I found the paper in the ACM digital library provided by the Georgia Tech library. Its main purpose was to look at the features of object-oriented languages and see how they affect the conceptual perspectives that can be used with that language. The languages are then compared based on their supported conceptual perspectives. The paper includes analysis on Smalltalk, Beta, C++, Eiffel, CLOS, Self, Objective C, Ada, SIMULA, and Object Pascal.
The paper includes a variety of sections that all end in a chart that classifies how each of the languages works under the aspect the section described. The aspects that were compared included the intention/extension relationship, abstraction process, pragmatic aspects of abstraction process and kinds of concepts. These charts were then combined at the end to show the overall difference between languages when viewed from a conceptual viewpoint.
The paper found a number of languages to be very similar as expected such as SIMULA/ Object Pascal, Beta/SIMULA, and C++/Objective C as well as some you wouldn’t expect such as Eiffel/C++ and ST80 / CLOS. While they may seem to be different from a syntactical point of view some of these languages are close to each other from the conceptual point of view which is more important. When designing a program a programmer has to start with a conceptual point of view which makes a comparison of this type very valid. How a programming language is structured at its top level greatly effects what would make a good design for that programming language and thus effects how best to program in different languages much more so then syntactical issues.
In reference to Hai Phan’s discussion where he states “Each language has its own advantages and disadvantages. Thus, the programmers always should consider all the requirements for a project before choosing the language for their implementation.” I would like to add that when looking at a problem it may be beneficial to look at what language works best from a conceptual point of view before considering other attributes.
3. A design pattern is a general solution to a common computing problem.
Creational design problems resolve around the creation of objects and how that works within the design. An example of this would be the singleton method where you can make a static call to a class and get an instance returned to you(One will be made if there already isn’t one in use).
Structural design problems deal with seeing a relationship between objects that makes the design easier. An example of this is an adapter class that allows 2 objects to relate and use each other that normally would not be able too.
Behavior design problems deal with common ways of communication between objects. An example of this is the “chain of command” problem where objects will deal with a command if they are able, and if not will pass the command up the line.
I like the singleton design pattern as I have already used it many times in java without knowing it. It allows you to get an instance of a class without having direct access to that class. ie: you could be deep in your code and realize you need to update the GUI with some new information. You could make a call like GUI.getGUI() to get access to the GUI instance you already have created previously.
I used wikipedia to obtain all this information for discussion 2.
Links to this Page