The aims of this course are to introduce the principles and
constraints that affect the way programming languages are
designed. Linguistic features of several languages will be explored
and compared, so that both the mistakes and good ideas from the past
can contribute to improved design and use of computer languages in
the future.
Lectures
Introduction.
A brief history of programming languages. Comparing languages:
programming paradigms, language features, execution styles.
Why study programming languages.
History. Changing influences. What makes a good programming language,
application domains.
Language standardisation.
Language standards, examples from C and PL/I.
C.
History and importance, example, types, operators,
statements, declarations, casts, functions, arrays and pointers.
Strings, space allocation, structures and unions.
Representation of trees.
In ML, BCPL and C.
Prolog.
Introduction to the main features of the Prolog Language.
Syntax of the language, unification, several example programs.
[4 lectures]
Object Oriented Languages.
Simula-67 example, class hierarchy and inheritance, SIMULA primitives.
Smalltalk.
History, syntax, classes, declaration, example showing the
definition of new classes and methods.
C++.
Introduction to some of the features of C++, design philosophy.
Data hiding, data abstraction. Initialisation and cleanup.
Parameterised types, iterators. Multiple inheritance.
Standards.
Objectives
At the end of the course students should
be familiar with several language paradigms and how they can
be effective in different areas of application
have a reasonable understanding of the compromises that have
to be made in a standard specification of a language in relation
to machine independence and efficiency
appreciate the similarities and differences between
various approaches taken by object oriented languages
be sufficiently familiar with C and C++ to be able
to read and understand programs written in these languages
Recommended books
Mitchell, J.C. (2003). Concepts in programming languages.
Cambridge University Press.
Pratt, T.W. & Zelkowitz, M.V. (1996). Programming languages,
design and implementation. Prentice-Hall (3rd ed.).
Appleby, D. & VandeKopple, J.J. (1997). Programming languages,
paradigm and practice. McGraw-Hill (2nd ed.).
Stroustrup, B. (1994). The design and implementation of C++.
Addison-Wesley.
Mössenböck, H. (1993). Object-oriented programming in Oberon-2.
Springer-Verlag.
Antonakos, J.L. & Mansfield Jr., K.C. (1998). Reference guide to C
and C++. Prentice-Hall.
Kernighan, B.W. & Ritchie, D.M. (1988). The C programming
language. Prentice-Hall (2nd ed.).