Swipe to navigate through the chapters of this book
Hardware is physical and may be seen and touched, whereas software is intangible and is an intellectual undertaking by a team of programmers. Software is written in a particular programming language, and hundreds of languages have been developed. Programming languages have evolved over time with the earliest languages using machine code to program the computer. The next development was the use of assembly languages to represent machine language instructions. These were then translated into machine code by an assembler. The next step was the development of high-level programming languages such as FORTRAN and COBOL. These were easier to use than assembly languages and machine code and helped to improve quality and productivity.
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 generalised 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 Bjørner and Jones at IBM in Vienna on operational semantics and work done by Scott and Strachey on denotational semantics.
Object-oriented programming was originally developed by Norwegian Research with Simula 67 in the late 1960s.
Grace Murray Hopper was a programmer on the Mark 1, Mark II and 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 a 1 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.
Monads are used in functional programming to express input and output operations without introducing side effects. The Haskell functional programming language makes use of 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, E.W.: Go to statement considered harmful. Commun. ACM 51, 7–9 (1968) Dijkstra, E.W.: Go to statement considered harmful. Commun. ACM 51, 7–9 (1968)
go back to reference Kernighan, B., Ritchie, D.: The C Programming Language. Prentice Hall Software Series, 1st edn. Prentice Hall, Englewood Cliffs (1978) Kernighan, B., Ritchie, D.: The C Programming Language. Prentice Hall Software Series, 1st edn. Prentice Hall, Englewood Cliffs (1978)
go back to reference Kernighan, B.: Why Pascal Is Not My Favourite Language. AT&T Bell Laboratories, Murray Hill (1981) Kernighan, B.: Why Pascal Is Not My Favourite Language. AT&T Bell Laboratories, Murray Hill (1981)
go back to reference Naur, P. (eds.): Report on the algorithmic language: ALGOL 60. Commun. ACM. 3(5), 299–314 (1960) Naur, P. (eds.): Report on the algorithmic language: ALGOL 60. Commun. ACM. 3(5), 299–314 (1960)
go back to reference O’Regan, G.: Mathematical Approaches to Software Quality. Springer, London (2006) MATH O’Regan, G.: Mathematical Approaches to Software Quality. Springer, London (2006) MATH
go back to reference Plotkin, G.: A structural approach to operational semantics. Technical Report DAIM FN-19. Computer Science Department. Aarhus University, Denmark (1981) Plotkin, G.: A structural approach to operational semantics. Technical Report DAIM FN-19. Computer Science Department. Aarhus University, Denmark (1981)
go back to reference Turner, M.D.: Proceedings IFIP Conference, Nancy France, Springer LNCS (201) (1985) Turner, M.D.: Proceedings IFIP Conference, Nancy France, Springer LNCS (201) (1985)
- History of Programming Languages
- Springer London
- Sequence number
- Chapter number
- Chapter 9