237x Filetype PDF File size 1.44 MB Source: research.utwente.nl
Functional C
Pieter Hartel HenkMuller
January3, 1999
i
Functional C
Pieter Hartel HenkMuller
University of Southampton University ofBristol
Revision: 6.7
ii
ToMarijke
Pieter
Tomyfamilyandothersourcesofinspiration
Henk
Revision: 6.7
c 1995,1996Pieter Hartel & Henk Muller, all rights reserved.
Preface
The Computer Science Departments of many universities teach a functional lan-
guage as the first programming language. Using a functional language with its
highlevel of abstraction helps to emphasize theprinciples ofprogramming. Func-
tional programming is only one of the paradigms with which a student should
beacquainted. 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 programmerthinks 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 theorderingofcomputations andtheallocation ofstorage. This
makes imperative programming more difficult, but it offers the imperative
programmeropportunitiesforoptimisations thatarenotavailabletothefunc-
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,
andbecauseits 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
no reviews yet
Please Login to review.