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-Shruthi Panicker

I found an interesting article that goes through the history of Object Oriented Programming titled ‘A Brief History of the Object-Oriented Approach’. It is written by Luiz Fernando Capretz and the article can be found here:

http://gtel.gatech.edu:2111/citation.cfm?id=638778&coll=portal&dl=ACM&CFID=53748549&CFTOKEN=16915125

I say the article is interesting because by looking at the history of the Object Oriented Programming Languages and its evolution, we can understand the differences between the various languages and the reason behind the same.

Object-Oriented programming as a concept has been around for a while and exploded into the scene of computers in the last three decades. This came about as a mean to simplify extremely complex software systems and model the real world. Ideas such as reduced complexity, friendliness, and reuse dominate today’s software world. The entire development with computers over many decades has been to reach down and reach the common people and even children.

As the article points out, the term ‘object’ came out almost simultaneously in the 1970’s from the various branches of computer science like system simulation, operating systems, artificial intelligence and so on. For example, classes of objects are used to simulate real-world applications in Simula (one of the early OO Language) and CLU supports data abstraction.

The article then moves on to comparing some of the many different OO languages that have come about during the years. The move from assembly languages to higher level languages like ALGOL and FORTRAN was driven by the need to simplify.

Slowly, the shift from procedural to languages modeling the real world came about with the growth of languages like CLU, which had room for abstract data types like the cluster construct. Simula then grew to become an ancestor of OO language with classes and inheritance which differentiated it from languages like CLU. Another OO language of the era, Smalltalk, became the reason behind the usage of the term ‘object-oriented’. It was a by-product of another project and was aimed at kids and basically common people using the computers.

To meet with the demand for people moving from procedural or low level programming to OO programming, languages such Objective-C, C++, ObjectPascal and Modula-3. These unlike pure OO languages was a hybrid between low-level and OO programming. Programmers had the benefit of using either or both of the features to their advantage. However, these languages are complex and have to be used carefully because it is difficult to master and it is very easy to deviate from sound OO principles.

Then the need for concurrency in OO came to the picture ‘to provide programmers
with powerful constructs that allow objects to run concurrently’. Languages like Actor, ABCL, POOL-T, Orient84 and ConcurrentSmalltalk supports this and have this feature in it. Languages like Beta and Eiffel also borrow heavily from Simula and CLU.

Despite the many different good Programming languages, C++ became extremely widespread before Java became very popular. This is mainly because of influence of UNIX and popularity of C from which C is derived. Java is a cleaner version of C++ with much more robust library of classes, easier to learn and is used with internet (which is extremely important these days) and is the most widely used OO language these days. It is also the most widely used language to teach students programming in the beginning of their careers in college of high school.

Over time, languages changed and evolved to meet people’s needs and technological advances. Newer languages and concepts will continue to grow and there will many thousand languages that I will probably hear of in my lifetime!

I read Vinayak Kashyap’s article and the topic interests me because the first language I learnt was C++ and I sincerely think that this has greatly helped me in understanding OO programming concepts, how storage of variables in the memory works, references works and so on. Like my article points out, C++ is a hybrid between OO and low-level programming. We can work with memory directly with pointers and other such features. Java, on the other hand, makes all that work by magic and I probably would never have got my basics right. I would have been sitting and wondering how comparing objects with an ‘=’ does not quite work like integers.

Link to this Page