Programming language concepts and paradigms

This book introduces the basic concepts that underlie functional, object-oriented and imperative programming languages. It then goes on to cover more advanced topics.