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