Swipe to navigate through the chapters of this book
This chapter presents a short history of programming languages, starting with machine languages, to assembly languages, to early high-level procedural languages such as FORTRAN and COBOL, to later high-level languages such as Pascal and C and to object-oriented languages such as C++ and Java. Functional programming languages and logic programming languages are discussed, and there is a short discussion on the important area of syntax and semantics.
Please log in to get access to this content
To get access to this content you need the following product:
This is true of code generated by native compilers. Other compilers may compile the source code to the object code of a virtual machine, and the translator module of the virtual machine translates each byte code of the virtual machine to the corresponding native machine instruction. That is, the virtual machine translates each generalized machine instruction into a specific machine instruction (or instructions) that may then be executed by the processor on the target computer. Most computer languages such as C require a separate compiler for each computer platform (i.e. computer and operating system). However, a language such as Java comes with a virtual machine for each platform. This allows the source code statements in these programs to be compiled just once, and they will then run on any platform.
The study of programming language semantics commenced in the 1960s. It includes work done by Hoare on axiomatic semantics, work done by Gordon Plotkin on operational semantics and work done by Scott and Strachey on denotational semantics.
Norwegian Research originally developed object-oriented programming with their work on Simula 67 in the late 1960s.
Mary Hopper was a programmer on the Mark I, Mark II, Mark III and UNIVAC 1 computers. She was the technical advisor to the CODASYL committee.
The semi-colon in Pascal is used as a statement separator, whereas it is used as a statement terminator in C.
It is very easy to write incomprehensible code in C and even one line of C code can be incomprehensible. The maintenance of poorly written code is a challenge unless programmers follow good programming practice. This discipline needs to be enforced by formal reviews of the source code.
Information hiding is a key contribution by Parnas to computer science. He has also done work on mathematical approaches to software quality using tabular expressions [ ORg:06].
The inventors of Simula 67 were Ole-Johan Dahl and Kristen Nygaard.
Dahl and Nygaard were working on ship simulations and were attempting to address the huge number of combinations of different attributes from different types of ships. Their insight was to group the different types of ships into different classes of objects, with each class of objects being responsible for defining its own data and behaviour.
Higher-order functions are functions that take functions as arguments or return a function as a result. They are known as operators (or functionals) in mathematics, and one example is the derivative function dy/ dx that takes a function as an argument and returns a function as a result.
Monads are used in functional programming to express input and output operations without introducing side effects. The Haskell functional programming language makes use of uses this feature.
This is the most common algorithm used to perform type inference. Type inference is concerned with determining the type of the value derived from the eventual evaluation of an expression.
Lisp is a multi-paradigm language rather than a functional programming language.
Iverson received the Turing Award in 1979 for his contributions to programming language and mathematical notation. The title of his Turing Award paper was ‘Notation as a tool of thought’.
This essentially expresses that the names of bound variables is unimportant.
This essentially expresses the idea of function application.
This essentially expresses the idea that two functions are equal if and only if they give the same results for all arguments.
First-order logic allows quantification over objects but not functions or relations. Higher-order logics allow quantification of functions and relations.
For example, the statement ∃ x such that x = √4 states that there is an x such that x is the square root of 4, and the constructive existence yields that the answer is that x = 2 or x - -2, i.e. constructive existence provides more the truth of the statement of existence, and an actual object satisfying the existence criteria is explicitly produced.
John McCarthy received the Turing Award in 1971 for his contributions to artificial intelligence. He also developed the programming language LISP.
Backus-Naur Form is named after John Backus and Peter Naur. It was created as part of the design of ALGOL 60 and used to define the syntax rules of the language.
Chomsky made important contributions to linguistics and the theory of grammars. He is more widely known today as a critic of US foreign policy.
Of course, what the programmer has written may not be what the programmer had intended.
go back to reference Dijkstra EW (1968) Go to statement considered harmful. Commun ACM 51:7–9 Dijkstra EW (1968) Go to statement considered harmful. Commun ACM 51:7–9
go back to reference Kernighan B (1981) Why Pascal is not my favourite language. AT&T Bell Laboratories, Murray Hill Kernighan B (1981) Why Pascal is not my favourite language. AT&T Bell Laboratories, Murray Hill
go back to reference Kernighan B, Ritchie D (1978) The C Programming Language, 1st edn. Prentice Hall, Englewood Cliffs MATH Kernighan B, Ritchie D (1978) The C Programming Language, 1st edn. Prentice Hall, Englewood Cliffs MATH
go back to reference Peter N (1960) Report on the algorithmic language: ALGOL 60. Commun ACM 3(5):299–314 MathSciNetCrossRefMATH Peter N (1960) Report on the algorithmic language: ALGOL 60. Commun ACM 3(5):299–314 MathSciNetCrossRefMATH
go back to reference O’Regan G (2006) Mathematical approaches to software quality. Springer, London MATH O’Regan G (2006) Mathematical approaches to software quality. Springer, London MATH
go back to reference O’Regan G (2012) Mathematics in computing. Springer, London O’Regan G (2012) Mathematics in computing. Springer, London
go back to reference Gordon P (1981) A structural approach to operational semantics, Technical Report DAIM FN-19. Computer Science Department. Aarhus University, Denmark Gordon P (1981) A structural approach to operational semantics, Technical Report DAIM FN-19. Computer Science Department. Aarhus University, Denmark
go back to reference Turner MD (1985) Proceedings IFIP Conference, Nancy France, Springer LNCS (201). September 1985 Turner MD (1985) Proceedings IFIP Conference, Nancy France, Springer LNCS (201). September 1985
- History of Programming Languages
- Springer International Publishing
- Sequence number
- Chapter number