Comparative Study of Programming Language

Only available on StudyMode
  • Download(s) : 66
  • Published : March 18, 2013
Open Document
Text Preview
The Evolution of Programming Languages
Course Notes for COMP 348 and COMP 6411

These notes may be copied for students who are taking either COMP 348 Principles of Programming Languages or COMP 6411 Comparative Study of Programming Languages.

First draft: Revised:

August 1999 August 2002

c Peter Grogono 1999, 2002
Department of Computer Science Concordia University Montreal, Quebec

CONTENTS

ii

Contents
1 Introduction 1.1 1.2 How important are programming languages? . . . . . . . . . . . . . . . . . . . . . . Features of the Course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 7 7 7 8 8 9

2 Anomalies 3 Theoretical Issues 3.1 3.2 3.3 3.4 Syntactic and Lexical Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Type Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Regular Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 3.4.2 3.4.3 3.4.4 Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Context Free Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Control Structures and Data Structures . . . . . . . . . . . . . . . . . . . . . 10 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12

4 The Procedural Paradigm 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9

Early Days . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 FORTRAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Algol 60 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 COBOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 PL/I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Algol 68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Modula–2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.10 Ada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5 The Functional Paradigm 5.1 5.2 5.3 5.4 5.5 25

LISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 SASL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 SML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Other Functional Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

CONTENTS 6 The Object Oriented Paradigm 6.1 6.2 6.3 6.4 6.5

iii 36

Simula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 CLU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Eiffel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.5.1 6.5.2 6.5.3 Programming by Contract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Repeated Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Interfaces . . . . . . . . . . . . . . ....
tracking img