Concepts of Programming Languages

(Sean Pound) #1

36 Chapter 2 Evolution of the Major Programming Languages


T


his chapter describes the development of a collection of programming lan-
guages. It explores the environment in which each was designed and focuses
on the contributions of the language and the motivation for its development.
Overall language descriptions are not included; rather, we discuss only some of the
new features introduced by each language. Of particular interest are the features
that most influenced subsequent languages or the field of computer science.
This chapter does not include an in-depth discussion of any language feature or
concept; that is left for later chapters. Brief, informal explanations of features will
suffice for our trek through the development of these languages.
This chapter discusses a wide variety of languages and language concepts that
will not be familiar to many readers. These topics are discussed in detail only in
later chapters. Those who find this unsettling may prefer to delay reading this chap-
ter until the rest of the book has been studied.
The choice as to which languages to discuss here was subjective, and some
readers will unhappily note the absence of one or more of their favorites. However,
to keep this historical coverage to a reasonable size, it was necessary to leave out
some languages that some regard highly. The choices were based on our estimate of
each language’s importance to language development and the computing world as a
whole. We also include brief discussions of some other languages that are referenced
later in the book.
The organization of this chapter is as follows: The initial versions of languages
generally are discussed in chronological order. However, subsequent versions of lan-
guages appear with their initial version, rather than in later sections. For example,
Fortran 2003 is discussed in the section with Fortran I (1956). Also, in some cases,
languages of secondary importance that are related to a language that has its own
section appear in that section.
This chapter includes listings of 14 complete example programs, each in a
different language. These programs are not described in this chapter; they are meant
simply to illustrate the appearance of programs in these languages. Readers familiar
with any of the common imperative languages should be able to read and understand
most of the code in these programs, except those in LISP, COBOL, and Smalltalk.
(A Scheme function similar to the LISP example is discussed in Chapter 15.) The same
problem is solved by the Fortran, ALGOL 60, PL/I, BASIC, Pascal, C, Perl, Ada, Java,
JavaScript, and C# programs. Note that most of the contemporary languages in this
list support dynamic arrays, but because of the simplicity of the example problem,
we did not use them in the example programs. Also, in the Fortran 95 program, we
avoided using the features that could have avoided the use of loops altogether, in
part to keep the program simple and readable and in part just to illustrate the basic
loop structure of the language.
Figure 2.1 is a chart of the genealogy of the high-level languages discussed in
this chapter.
Free download pdf