Rulx Narcisse

Object-Oriented High Level Programming Languages: Origin, Evolution & Perspectives



Posted: Wednesday, May 03, 2006

by Rulx Narcisse

Abstract: Since SIMULA, the concepts of computer programming languages have shift mostly to Object-Oriented (OO). All the beginning languages have played their partition to make computer language more “human" and finally the oriented-object approach made it better to even model the external reality with its “object". Many languages have emerged from this revolution (Smalltalk, C++/C#, Java, Visual Basic) by making them either pure scheme of the OO or producing hybrid language system from the high level procedural language.The computer programming languages will continue to evolve and even if there are some dominant languages and that some predictions have been made for some to disappear, many will persist for decade.

Object-Oriented Languages (OOL) are the latest computer programming concept to date and since its apparition, many have adopted them. In this paper , I will retraced the roads of these concepts that make a revolution in the software world.

A language is a way to communicate human beings, due to different origins, use many languages to communicate (English, French, Creole, Spanish, etc) and we need some letters to build words, and words build sentences as well, the machine has a particular language with an alphabet of 2 “letters": 0 & 1(the computer native language ) as we made combination in our 24 letters (English) to create words, on the machine language, there are “words" too with their 2 “letters" 0 & 1.

So there are instructions (phrases) for these machines. These instructions tell the machine what to do: this is the Program of the machine.

The machine cannot understand the human language we have to learn the machine language to communicate with them. That the job of the programmer he is like a translator between human and machine.



See here an example of machine language (binary codes) [These codes are executed by the CPU of the machine ]:

001001 00000 00100 0000

110 110000

00011 101110 11111 000111 00000

1111000

1100 00000 0000110 111100

111000 100 0000 11110

Here are some names of machine programming languages:


ARM

Intel 80x86

Intel 8008/8080/8085

MIPS R2000|R3000

MOS Tech 6502

Motorola 680x

Motorola 680x0

National 32032

IBM POWER, PowerPC

StrongARM

Sun SPARC, UltraSPARC



Writing these kind of instruction was very difficult and need high level professional knowledge fortunately, programming language become less complicated by the introduction of assemblage language which use mnemonic (alphabetic abbreviations for instructions) for some particular group of code by this, programming language start to resemble human language programmer has better way to express algorithm.

The following are some assembly programming languages:

a56

MACRO-11

AKI

MACRO-32

ASCENT

MASM

ASPER

MI

C--

NASM

COMPASS

PAL-III

Emu8086

RosASM

FAP

Sphinx C--

FASM

SSK

GAS

TASM

HLA

Linoleum

HLASM

ASEM-51



Here is an example of assembly language:

main proc pay

mov ax, desy

mov ax, obooh

add ax, dx

mov a1, b1

This evolution of the programming language was essential but not enough since some problems persist as the difficulties to debug & maintain code. Then the need for another concept: the high level programming language The high level programming language have instructions that resemble the English language, so allow better “comprehension" between human and machine. Whatever, these languages required an interpreter or a compiler these are tools permitting the translation of the written “English words" (program) to the machine language.

Example of such languages is FORTRAN (FORmula TRANslation) in 1957. Some think about FORTRAN as “the language that literally put a man on the moon" (Todd Verbeek)

As high level programming languages evolve, they become more task orienting, so they‘ve been called procedure-oriented high-level languages. The programmers must show the way a task will be accomplished in order for the machine to execute the code and obtain the desired results. From the start to the end, the machine follows the instructions to do the assigned task. The languages are structured: (COBOL, BASIC , PASCAL, and C) Then the next step in the programming evolution was the object-oriented approach

Rentsch said that “object oriented programming will be in the 1980's what structured programming was in the 1970's. Everyone will be in favor of it. Every manufacturer will promote his products as supporting it. Every manager will pay lip service to it. Every programmer will practice it (differently). And no one will know just what it is.'' (Rentsch, 1982)

Effectively, “somewhere around 1985, the software marketing community discovered the term “object oriented," and latched onto the phrase with a devotion that even “hypertext" and “multimedia" have yet to approach. With so many marketers using the term, and so few of them knowing what it means, “object oriented" has come to mean almost anything, and hence nothing….[but] Despite the confusion, the term really does have a meaning."

The object oriented perspective offers the concepts of keeping the data and the behavior tied as an element, realizing an “independent" structure. The procedural way separates them, reflecting the internal structure of the computer. These independent “structures" that can communicate with each other sending message are the “object" then the name object oriented. One element should have the necessary data and behavior to react to a particular situation, so having data and program behavior (code) in each element, as each human brain cell has its complete material to send and receive messages . With this approach, we gain power & efficiency.

Object-oriented programming offers a new and powerful model for writing computer software . In an interface, for example, we could have object like button or drop list and clicking on them is the event (behavior) Visual Basic and Java are good examples of this.

The object programming concept, by individualize the object allows to represent the reality because every object would have “both state (data) and behavior (operations on data). In that, they're not much different from ordinary physical objects. It's easy to see how a mechanical device, such as a pocket watch or a piano, embodies both state and behavior. But almost anything that's designed to do a job does too. Even simple things with no moving parts such as an ordinary bottle combine state (how full the bottle is, whether or not it's open, how warm its contents are) with behavior (the ability to dispense its contents at various flow rates, to be opened or closed, to withstand high or low temperatures). It's this resemblance to real things that gives objects much of their power and appeal. They can not only model components of real systems, but equally as well fulfill assigned roles as components in software systems. “

Principal features of OOPL are: class concept, encapsulation, inheritance, and polymorphism. There are 2 kind of OOPL: the first are called the pure (Smalltalk, Eiffel, Java ) and the second the hybrid (C++, Visual Basic, Delphi, etc)

Object Oriented History:

The story of OOPL started in the 60’s at the Norwegian Computing Center (NCC) ( Norsk Regnesentral) there was a simulation research project leaded by Ole-Johan Dahl (October 12, 1931 – June 29 2002) and Kristen Nygaard (August 27, 1926 - August 10, 2002) (see figure 3). They wanted to create a simulation program with the ALGOL 60 programming language . Their project was not well viewed at this epoch, but they could have finally the contract between the NCC & UNIVAC to setup the simulation and system analysis program. They conceived SIMULA I compilator (1962-1965) that can run on UNIVAC 1107 they have been influenced by Tony Hoarse who published an article about record class construct in ALGOL Bulletin # 21, 1965. They add class and subclass in the ALGOL 60 features. Then Object-Oriented has been created . The SIMULA 67 compiler was not only used on UNIVAC, but also on IBM, Control Data, Burroughs, DEC, CDC mainframes. The SIMULA 67 (lately renamed SIMULA) not only introduced OOP, but also discussion on abstract data types & models and it has been extensively used for the development of Smalltalk in the 70’s by the Alan Kay’s group at Xerox (PARC) the early versions of Smalltalk were between 1972 & 1978. So at this period, programmers become focus to the new concepts and we started having two groups of OOPL: the pure ones & the hybrid. The pure OOLP: Some programmers use the entire new concept of OOLP to conceive it was the case for Smalltalk (integrating OOP with GUI and interactive programming execution), also for Eiffel, created by Bertrand Mayer in 1985 and Ruby. They had the same aim: creating quintessential OOL, increase productivity and software quality.

Here are some Object-Oriented class-based languages:

Actor,J,Delphi, Bistro, Object Pascal,PowerBuilder, SuperCollider, Ada 95, BETA, Java, Dylan, Squeak, Object REXX, Prograph, Ubercode, C++, Lava, ECMAScript a.k.a., ActionScript, DMDScript, JavaScript, JScript, Objective-C, Python, VBScript, C#, Lua, Eiffel, Ubercode, Objective Caml, Revolution, Visual Basic, Chrome programming language, Modula-2, F-Script, VBScript, Oz, Ruby, Visual Foxpro, ChucK, Modula-3, Fortran 2003, Mozart Programming System, Sather, Visual Prolog, Common Lisp, Objective Modula-2, Fortress, Visual Foxpro, Perl 5, Simula, Corn, NetRexx, PHP, Bistro, Smalltalk, D, Oberon, Pliant, XOTcl, Squeak, XOTcl.

The Java Programming language created by James Gosling (born May 19, 1955 near Calgary, Alberta, Canada), Bill Joy, and Guy Steele at Sun Microsystems in 1994 is claimed to be pure too, but all are not object in java created an ambiguous situation for classification (all pre-defined type are not Object, all operations are not message to Object) Actually, Java is one of the leading programming languages and is considered as the emerging language of the future, at least for some internet applications .

What’s about the hybrid? Instead of using entirely the new concept of OOPL, some programmers have chosen to continue using some features of previous non-OO programming language with integration of the concept of object there were a lot of compiler keeping the capacity of running both oriented and not oriented design, then named hybrid languages. Some hybrid OOPL are: Ada 95 , CLOS (an object-enhanced version of LISP), C++, Objective C, C#, Delphi , Python and Perl.

C++ & Objective C are both extension of the C language. C is a procedure-oriented high level language (as well as COBOL , BASIC, PASCAL ) that has been developed by Dennis Ritchie at Bell Laboratories in 1972 it is versatile, efficient & portable in 1978 when Bjarne Stroustroup (see fi. 5) at the Computing Laboratory at Cambridge University wanted to use SIMULA for a simulation program for distributed computer systems, he found that he would need the efficiently and the power of C with the OO SIMULA program. So C++ was created (a superset of C).

Where we are going from here? You have seen a list of OO programming languages added to the procedure-oriented high level programming some languages share the two concepts , for example Perl has OO feature since its version 5. Visual Basic is the most popular programming language used and Java is getting more and more popular: a survey held in 1998 showed that 40% of US business use it and 30% intended to use it. Researches are done continuously to improve the system and new versions of programming languages are regularly released.

The object-oriented language is an opened door to improvement and better approach to the reality for the machine this doesn’t not imply the abandon of procedure-oriented way since the future could be for mixture, with the goal of flexibility, power & versatility.

Conclusion

Object-oriented language gives us new model and power over computer programming from the work of Ole-Johan Dahl (October 12, 1931 – June 29 2002) and Kristen Nygaard (August 27, 1926 - August 10, 2002) and from experiences since the beginning of the programming era (machine codes, assembly languages, high level procedure languages) the maturity has been reached with this new approach. Many languages have emerged from the SIMULA pioneering some of the most dominant are Smalltalk (VisualWorks, Visual Smalltalk), C++/C#, Java, Visual Basic. Object-Oriented concepts allows to better model the reality and then programmers should shift their thinking way, at least for big project. One must note too that there are many speculations about the future dominant language: some predict C++ will disappear in some decades, but we could remark that FORTRAN is not yet abandoned.

Rulx Narcisse is a Computer Programmer with particular interest in JAVA & Visual Basic and a lover of astronomy. He is a passionate of programming, too, blogging the most of his time.  He is living with his wife Roselene in Haiti. His blog: My Programming Corner; his email; his phone number is:   (509)3902-7435
                    
 

This Article has been viewed 2,947 times. (Not updated in real-time.)
Top-level comments on this article: (1 total)
» left by Anonymous 2 years 331 days ago.
Hi, nice article. BTW, Objective Modula-2 very much mirrors Objective-C and should probably also be listed in the paragraph that lists hybrid languages (along with Objective-C). Another hybrid language which mirrors Objective-C is Objective-J (based on Javascript). You can find information on both languages easily via google search.
We want your comments! If you can read this, you don't have javascript enabled, so you can't use this comment system. Please enable javascript.