107x 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.