By introducing the principles of programming languages, using the Java language as a support, Gilles Dowek provides the necessary fundamentals of this language as a first objective.
It is important to realise that knowledge of a single programming language is not really enough. To be a good programmer, you should be familiar with several languages and be able to learn new ones. In order to do this, you’ll need to understand universal concepts, such as functions or cells, which exist in one form or another in all programming languages. The most effective way to understand these universal concepts is to compare two or more languages. In this book, the author has chosen Caml and C.
To understand the principles of programming languages, it is also important to learn how to precisely define the meaning ofa program, and tools for doing so are discussed. Finally, there is coverage of basic algorithms for lists and trees.

Written for students, this book presents what all scientists and engineers should know about programming languages.



Proofs and Algorithms

by Gilles Dowek

Published 14 January 2011
Logic is a branch of philosophy, mathematics and computer science. It studies the required methods to determine whether a statement is true, such as reasoning and computation.

Proofs and Algorithms: Introduction to Logic and Computability is an introduction to the fundamental concepts of contemporary logic - those of a proof, a computable function, a model and a set. It presents a series of results, both positive and negative, - Church's undecidability theorem, Gödel’s incompleteness theorem, the theorem asserting the semi-decidability of provability - that have profoundly changed our vision of reasoning, computation, and finally truth itself.

Designed for undergraduate students, this book presents all that philosophers, mathematicians and computer scientists should know about logic.

The design and implementation of programming languages, from Fortran and Cobol to Caml and Java, has been one of the key developments in the management of ever more complex computerized systems. Introduction to the Theory of Programming Languages gives the reader the means to discover the tools to think, design, and implement these languages.

It proposes a unified vision of the different formalisms that permit definition of a programming language: small steps operational semantics, big steps operational semantics, and denotational semantics, emphasising that all seek to define a relation between three objects: a program, an input value, and an output value. These formalisms are illustrated by presenting the semantics of some typical features of programming languages: functions, recursivity, assignments, records, objects, ... showing that the study of programming languages does not consist of studying languages one after another, but is organized around the features that arepresent in these various languages. The study of these features leads to the development of evaluators, interpreters and compilers, and also type inference algorithms, for small languages.