Functional C [Hartel & Muller 1997-06-04].pdf

(3128 KB) Pobierz
Functional C
Pieter Hartel
Henk Muller
i
Functional C
Pieter Hartel
Henk Muller
University of Southampton University of Bristol
ii
To Marijke
Pieter
To my family and other sources of inspiration
Henk
Preface
The Computer Science Departments of many universities teach a functional lan-
guage as the first programming language. Using a functional language with its
high level of abstraction helps to emphasize the principles of programming. Func-
tional programming is only one of the paradigms with which a student should
be acquainted. Imperative, Concurrent, Object-Oriented, and Logic programming
are also important. Depending on the problem to be solved, one of the paradigms
will be chosen as the most natural paradigm for that problem.
This book is the course material to teach a second paradigm:
imperative pro-
gramming,
using C as the programming language. The book has been written so
that it builds on the knowledge that the students have acquired during their first
course on functional programming, using SML. The prerequisite of this book is
that the principles of programming are already understood; this book does not
specifically aim to teach ‘problem solving’ or ‘programming’. This book aims to:
Familiarise the reader with
imperative programming
as another way of imple-
menting programs. The aim is to preserve the programming style, that is,
the programmer thinks functionally while implementing an imperative pro-
gram.
¡
¡
¡
Provide understanding of the
differences between functional and imperative pro-
gramming.
Functional programming is a high level activity. The ordering of
computations and the allocation of storage are automatic. Imperative pro-
gramming, particularly in C, is a low level activity where the programmer
controls both the ordering of computations and the allocation of storage. This
makes imperative programming more difficult, but it offers the imperative
programmer opportunities for optimisations that are not available to the func-
tional programmer.
Familiarise the reader with the
syntax and semantics of ISO-C,
especially the
power of the language (at the same time stressing that power can kill). We
visit all dark alleys of C, from
void *
to pointer arithmetic and assignments
in expressions. On occasions, we use other languages (like C++ and Pascal)
to illustrate concepts of imperative languages that are not present in C. C has
been chosen because it is a de facto standard for imperative programming,
and because its low level nature nicely contrasts with SML. Those who want
to learn, for example, Modula-2 or Ada-95 afterwards should not find many
difficulties.
iii
Zgłoś jeśli naruszono regulamin