Including easily digested information about fundamental techniques and concepts in software construction, this book is distinct in unifying pure theory with pragmatic details. Driven by generic problems and concepts, with brief and complete illustrations from languages including C, Prolog, Java, Scheme, Haskell and HTML.
This book is intended to be both a how-to handbook and easy reference guide. Discussions of principle, worked examples and exercises are presented. All concepts outside introductory programming are explained with clear demarcation and dependencies so the experienced programmer can quickly locate material. Readable in a linear manner, with short mono-thematic to encourage dipping and reference. Also included are sections on open problems in software theory and practice.
While little other than a novice programmer's knowledge is explicitly assumed, a certain conceptual maturity, either through commercial programming or academic training is required - each language is introduced and explained briefly as needed.
Is there nothing more to programming?
How can you develop your skill if all you do is hunt for the prescribed routine in a menu of 1001 others? Are you frustrated by the plethora of languages that ultimately do the same thing? Would you like your skills to give you lasting and intrinsic worth as an expert programmer, instead of going stale like last week's bread? Would you like to know more about the nature and limits of programming?
Can code be written so that it is intrinsically robust? Written rapidly without sacrificing reliability? Written generically without iterative loops, without recursion, or even variables?
This book shows you how. Densely packed with explicit techniques on each page, this book takes you from a rudimentary understanding of programming into the world of deep technical software development.
It is demonstrated that most of the important features of modern languages are derived from deeper concepts that change much more slowly than computer languages. A small representative collection of languages (such as C, Java, Scheme, Prolog and Haskell) is used to show that paradigms are largely language independent. The effort of programming can occur separately, and then be molded in detail to fit the language at hand.
Bruce Mills has been teaching and practicing programming in industry and academia for two decades. His experience covers the spectrum in languages and applications. He brings to this book his love of programming and a desire to encourage robust and yet creative engagement with computer languages.
From the reviews:
"A good programmer has to know more than the constructs of a given programming language: eg., computational models, formal technologies, limitations on models, technologies and computers, properties of programming languages (and their compilers), interaction between programs, and even philosophical aspects. ? the author gives a good introduction to the mentioned fields in the form of chapters partitioned into notions (and some exercises) ? . So, the book is a good survey for specialists ? ." (G. Riedewald, Zentralblatt MATH, Vol. 1097 (23), 2006)