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.
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
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.
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.