In this chapter we will dive into a discussion and comparison of several common and current object-oriented programming languages (OOPLs). But before doing that, however, we should really dive into a brief history of programming in general.
The primary difference between an OOPL and a purely procedural (non-object-oriented) language is that an OOPL provides a syntax to incorporate object-oriented concepts such as inheritance, polymorphism, and so on. Although the languages provide this ability on a syntax level, its important to recognize that OOP was not just created, but grew out of good ideas and common practices of programmers.
There really is no exactly defined start of computers ”they can be traced to a number of origins, not the least of which is simply the creation of numbers and math itself. As you may be aware, all computers work internally with the binary numbering system, where all data is represented with 1s and 0s (because, being electronic devices, they have a state of on or off).
It may surprise you to learn that we will start our history discussion in the early 1940s. But to be more accurate, the groundwork was laid long before that. For example, the Fibonacci Series commonly used in programming exercises and used to define timing of recursive function calls was actually defined by the Italian mathematician Fibonacci in the thirteenth century!
In order to detail computer history, we first must define what a computer is. It can be argued that the abacus was a form of computer, but we will say that in order to be considered a direct ancestor of the modern computer, a computer must be able to store internally and execute a program. Amazingly, our history then starts in 1943, or several years before that if we take into consideration the designing stage of building a computer.
With the preceding definition, we would say that the first recognized digital computer was ENIAC (Electronic Numerical Integrator And Computer). ENIAC was built between 1943 and 1946 by the University of Pennsylvania for the United States government. It was designed to calculate bombing tables and trajectories for the military.
ENIAC was a behemoth of a machine, weighing over 30 tons, and containing more than 19,000 vacuum tubes (the predecessor to the transistor , tubes are electronic devices enclosed in glass, which you can still see today in many modern televisions ) and 1,500 relays. In order to program the ENIAC, the technicians of the day would actually rewire the computer system, if a programming change was made. Truly a hard-wired system.
Around 1945, John von Neumann wrote a paper in which he outlined a method for storing a program in a manner more convenient to change. The ENIAC was modified so that it used switches to create a program. Instead of changing wires, programmers would flip switches to define the desired behavior.
In 1945, Grace Hopper became the first programmer to coin the term bug . One of her programs was not operating as expected. After checking her logic, she reportedly opened the computer system and found a moth stuck between two tubes. Amazingly, 60 years later, and the term bug is still used. Hopper also did a large amount of work on developing languages and compilers, and her work led to the creation of the COBOL programming language.
In 1946, Konrad Zuse developed the first high-level language, called Plankalkul. Although it was modeled on von Neumann s work, it contained a number of improvements over von Neumann s programming model. Zuse s work is not widely recognized in the computer industry, but he is sometimes attributed with building the first truly digital computer system.
In 1948, IBM created the Selective Sequence Electronic Calculator machine. Measuring 25 40 feet, this system used punch cards and tape to be programmed. In 1949, Maurice Wilkes built the EDSAC system, commonly thought of as the first stored-program system, which contained 1K words of memory. Wilkes had a set of punch cards he kept in a library for reusable procedures.
In 1950, Engineering Research Associates built the first commercially available computer: the ERA 1101. The first machine was purchased by the United States Navy and contained one million bits of memory on a magnetic drum. The year 1950 also saw the SEAC (Standards Eastern Automatic Computer) built by the National Bureau of Standards, which was the first computer to replace tubes with diodes.
The year 1951 saw the creation of the UNIVAC system by Remington Rand (who employed Grace Hopper at one time). This was the first computer to gain public attention and was the inspiration for a number of clones to come later, such as the MANIAC, ILLIAC, and SILLIAC.
Between 1949 and 1956, a number of small languages appeared. Languages such as A-0, Short Code, and AUTOCODE were designed to make the tedious task of assembling code easier. By modern definitions, assembly language is the language used by a particular CPU itself that these languages were all very close to. But, up to this point, there was no central processing unit, and what we now call a CPU was built from several distinctly different pieces.
In 1957, the first modern programming language made its appearance: FORTRAN (FORmula TRANslating), which is still in use today. In 1959, COBOL and LISP appeared, and in 1960, ALGOL 60, a predecessor for PASCAL, appeared. A number of languages and versions of languages began to appear during this time.
Between 1962 and 1967, SIMULA, the first object-oriented programming language, appeared. Simula II followed it in 1967.
In 1970, Kenneth Thompson, who created the UNIX operating system, created the B language so that UNIX would have a programming language for creating applications. The core of UNIX was originally created in assembly language, with various programs later developed in B. In 1972, Dennis Ritchie created the C language, based on the B language, which Thompson then used to rewrite UNIX. Also, 1973 saw the first published C reference book.
The year 1972 saw the introduction of Smalltalk, based in part on SIMULA. Smalltalk would be one of the more prevalent programming languages until C++ would appear.
Between 1983 and 1985, Bjarne Stroustrup created the C++ language, modeled after C. Originally called C with Classes, this language would acquire ANSI standardization in 1989. C++ would be one of the major programming languages of all time, still in widespread use today.
In 1991, James Gosling, Patrick Naughton, and Mike Sheridan of Sun created Java. Java was originally intended to be a system for programming small devices such as cable boxes, and the programming language was only a small part of the system. Around 1995, the popularity of the Internet changed the intentions of Java, and Sun targeted it to be a multiplatform programming environment and language.
In 2000, Microsoft created the C# programming language, which was EMCA certified that same year. Often compared to Java, C# incorporates the same environment approach as Java, but it s currently still available only on the Windows platform (an open-source project is underway to create an open -source version of the .NET Framework for the C# language and the Common Language Runtime).