AN0017 - A Programmers Bookshelf
| Introduction |
| Bookshelf |
| Books on theory |
| Networking |
| Web technologies |
| Unix/Linux books |
| Electronics |
| C/C++ Programming Language |
| Other Programming Languages |
| Databases |
| Other technologies |
| Everything else |
| Online Support |
Introduction
We are often asked by our customers what books we recommend for various areas of computing. This is a very hard question because many areas of "embedded" computing cross large swathes of computer science and require knowledge in several fields.
Because of these issues it's very hard to give recommendations so instead here's a novel approach to the question we hope you will find useful. Presented here is the bookshelf of one of our senior programmers. Hopefully this will act as a guide as to what we find useful in developing the varied software needed for our products. Not all of these are definite recommendations but the comments should explain the books relevance (if any).
Please note the view expressed here are by definition subjective and your opinion may differ from ours. Links are given to Amazon for convenience but there are other book vendors.
Bookshelf
Selected book
Books on theory
The books in this section do not generally concern a specific implementation but rather give a grounding in an area of computer science. These books are usually used by the more advanced programmer to develop new strategies or to learn a subject new to them.
Modern Operating Systems

| Author | Andrew S. Tanenbaum |
|---|---|
| Publisher | Prentice Hall |
| ISBN | 0130313580 |
| Amazon | link |
| BookBrain | link |
Modern Operating Systems is one of the definitive works on how and why most current operating systems behave and fit together the way they do.
The Art of Computer Programming: Fundamental Algorithms

| Author | Donald E. Knuth |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201896834 |
| Amazon | link |
| BookBrain | link |
The foundation of many computer science courses and the first place many turn to when needing to get a handle on a new algorithm.
The Art of Computer Programming: Seminumerical Algorithms

| Author | Donald E. Knuth |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201896842 |
| Amazon | link |
| BookBrain | link |
Again a seminal work on the subject, not on the shelf because it was in use at the time!
The Art of Computer Programming: Sorting and Searching

| Author | Donald E. Knuth |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201896850 |
| Amazon | link |
| BookBrain | link |
If you need to know how a searching or sorting algorithm works this is pretty much the definitive work. A word of warning, this book pulls no punches and is pretty heavy going in places. Ensure you get the second edition as it's more up to date than the original.
Computer Networks

| Author | Andrew S. Tanenbaum |
|---|---|
| Publisher | Prentice Hall |
| ISBN | 0133942481 |
| Amazon | link |
| BookBrain | link |
Computer networks pretty much covers all the fundamental principles of modern networking. Get at least the third edition as this is a book that whilst covering fundamentals needs to be kept updated because of its rapidly changing subject.
Design patterns : elements of reusable object-oriented software

| Author | Erich Gamma, Richard Helm, Ralph Johnson, John Vissides |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201633612 |
| Amazon | link |
| BookBrain | link |
Design Patterns is based on the idea that there are only so many design problems in computer programming. This book identifies some common program-design problems--such as adapting the interface of one object to that of another object or notifying an object of a change in another object's state--and explains the best ways (not always the obvious ways) that the authors know to solve them. The idea is that you can use the authors' sophisticated design ideas to solve problems that you often waste time solving over and over again in your own programming.
Refactoring: Improving the Design of Existing Code

| Author | Martin Fowler |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201485672 |
| Amazon | link |
| BookBrain | link |
Your class library works, but could it be better? Refactoring: Improving the Design of Existing Code shows how refactoring can make object-oriented code simpler and easier to maintain. Besides an introduction to what refactoring is, this handbook provides a catalogue of dozens of tips for improving code. The best thing about Refactoring is its remarkably clear presentation, along with excellent nuts-and-bolts advice, from object expert Martin Fowler. The author is also an authority on software patterns and UML, and this experience helps make this a better book, one that should be immediately accessible to any intermediate or advanced object-oriented developer.
UML in a Nutshell

| Author | Sinan Si Alhir |
|---|---|
| Publisher | O'Reilly |
| ISBN | 1565924487 |
| Amazon | link |
| BookBrain | link |
Sometimes a customer needs a solution to be modelled before implementation. UML is a suitable language for this task. There are other books on this subject and the original UML in a nutshell is unfortunately showing its age.
Networking
These books typically concentrate on networking technologies such as TCP/IP.
UNIX Network Programming Vol 1: Networking APIs - Sockets and XTI

| Author | W.Richard Stevens |
|---|---|
| Publisher | Prentice Hall |
| ISBN | 013490012X |
| Amazon | link |
| BookBrain | link |
One of the seminal works for anyone who needs to write networking code on UNIX. It's not the only book in this area but its one of the old reliable sources and many have learnt their trade from this book. The second edition or later is a must although the death of Stevens hasn't slowed down the work on later editions by others thus keeping the work up to date.
Unix Network Programming Vol 2: Interprocess Communications

| Author | W.Richard Stevens |
|---|---|
| Publisher | Prentice Hall |
| ISBN | 0130810819 |
| Amazon | link |
| BookBrain | link |
This book, like volume 1, is an old standby and can be relied upon to answer most practical questions about interprocess communication.
TCP/IP Illustrated: The Protocols

| Author | W.Richard Stevens |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201633469 |
| Amazon | link |
| BookBrain | link |
The illustrated series do pretty much what their name imply, they illustrate how most widespread network protocols work.
TCP/IP Illustrated: The Implementation

| Author | Gary A. Wright, W.Richard Stevens |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 020163354X |
| Amazon | link |
| BookBrain | link |
This book explains in detail how a network stack is written.
Web technologies
HTML and XHTML: The Definitive Guide

| Author | Chuck Musciano, Bill Kennedy |
|---|---|
| Publisher | O'Reilly |
| ISBN | 059600382X |
| Amazon | link |
| BookBrain | link |
Not the only book on this subject, however as typical with O'Reilly books, its a contender for the best in the area. Get the third edition or later if possible.
Cascading Style Sheets the Definitive Guide

| Author | Eric Meyer |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596005253 |
| Amazon | link |
| BookBrain | link |
Not the only book on the subject, possibly not even the best but a good solid all round examination of CSS especially useful if you're designing embedded webserver applets and want to be able to change the look and feel without altering the code.
JavaScript: The Definitive Guide

| Author | David Flanagan |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596000480 |
| Amazon | link |
| BookBrain | link |
Everything you need to know about javascript/ECMA script. Third or later edition is best.
Don't Make Me Think!: A Common Sense Approach to Web Usability

| Author | Steve Krug |
|---|---|
| Publisher | New Riders |
| ISBN | 0321344758 |
| Amazon | link |
| BookBrain | link |
If you are designing an embedded web interface reasonable design is as relevant as in a "proper" site
HTTP Pocket Reference

| Author | C. Wong, Linda Mui |
|---|---|
| Publisher | O'Reilly |
| ISBN | 1565928628 |
| Amazon | link |
| BookBrain | link |
Quick reference guide to the HTTP protocol, useful if one of the other full networking books is too much.
HTML Pocket Reference

| Author | Jennifer Niederst |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596002963 |
| Amazon | link |
| BookBrain | link |
Quick reference guide to HTML useful adjunct to the Definitive guide.
Squid the Definitive Guide

| Author | Duane Wessels |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596001622 |
| Amazon | link |
| BookBrain | link |
If you need to set up or administer a squid web proxy this is the book for you. This comes up more often than you might think in the embedded world where a number of embedded devices need to operate against a single webserver.
ActionScript: The Definitive Guide

| Author | Colin Moock |
|---|---|
| Publisher | O'Reilly |
| ISBN | 1565928520 |
| Amazon | link |
| BookBrain | link |
If you must do flash scripting (avoid it if possible - there are almost always better solutions) this book will help. Its possibly not the most accessible book but certainly warrants its "definitive" moniker.
Unix/Linux books
Linux Device Drivers

| Author | Alessandro Rubini, Jonathan Corbet, Greg Kroah-Hartman |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596005903 |
| Amazon | link |
| BookBrain | link |
If you want to learn how to write a Linux driver then you should probably buy this book. It gives a very good background into the workings of the Linux device module system. The text is very readable and usually puts (some very complex) ideas across in a manner that doesn't scare the reader off.
Learning the Korn Shell

| Author | Bill Rosenblatt, Arnold Robbins |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596001959 |
| Amazon | link |
| BookBrain | link |
This book introduces the Korn shell, a variation on the classic Bourne shell used almost universally as the default unix command line shell and scripting language. This book is somewhat old now, today you are probably more likely to want a book which covers the bash shell.
Linux NFS and Automounter Administration

| Author | Erez Zadoc |
|---|---|
| Publisher | Sybex Inc.,U.S. |
| ISBN | 0782127398 |
| Amazon | link |
| BookBrain | link |
A reasonable book on administering a Linux NFS installation. Not the only book in the area and there are better choices like Managing NFS and NIS from O'Reilly
Electronics
Where the software meets the hardware.
The Art Of Electronics

| Author | Paul Horowitz, Winfield Hill |
|---|---|
| Publisher | Cambridge University Press |
| ISBN | 0521370957 |
| Amazon | link |
| BookBrain | link |
At some point you will probably meet the hardware, this book makes that meeting if not pleasant then at least understandable. Widely accepted as the single, authoritative text and reference on electronic circuit design, both analog and digital. This book revolutionised the teaching of electronics by emphasising the methods actually used by circuit designers, a combination of some basic laws, rules of thumb, and a large bag of tricks. The result is a largely nonmathematical treatment that encourages circuit intuition, brain storming, and simplified calculations of circuit values and performance. The second edition is a must, the only drawback is that some of the microprocessor sections are a little dated but the fundamentals are sound.
C/C++ Programming Language
The C programming language

| Author | Brian W. Kernighan, Dennis M. Ritchie |
|---|---|
| Publisher | Prentice Hall |
| ISBN | 0131103628 |
| Amazon | link |
| BookBrain | link |
This book is probably the closest thing to a definitive guide to the C language that exists. It would certainly be difficult to argue with the authors as they created the language! Often referred to as "K n R" most C programmers of note have this one on their shelf. Its not a beginners introduction to programming however, if thats whats needed try the books by Kelley & Pohl, K.N.King or Gottfried(Schaum series). Its concise and complete but ensure you get the second edition and note that many dislike the indentation style the authors prefer.
The C++ programming language

| Author | Bjarne Stroustrup |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201700735 |
| Amazon | link |
| BookBrain | link |
Written by the languages creator this book gives a solid grounding to c++. Ensure you get the special edition if you can.
The C++ standard library

| Author | Nicolai M. Josuttis |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201379260 |
| Amazon | link |
| BookBrain | link |
Advanced Programming in the UNIX Environment

| Author | W.Richard Stevens |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201563177 |
| Amazon | link |
| BookBrain | link |
If you are an C programmer with a working knowledge of UNIX, you cannot afford to be without this tutorial on the system call interface and the most important functions found in the ANSI C library. Stevens describes more than 200 system calls and functions; since he believes the best way to learn code is to read code, a brief example accompanies each description.
Programming Pearls

| Author | Jon Bentley |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201657880 |
| Amazon | link |
| BookBrain | link |
Not to be confused with the perl language this book attempts to show the "art" of programming well in C by defining a problem well and achieving a fast and efficient solution. It has been argued that this book is no longer relevant with modern computers with vast amounts of memory and disk but a solid understanding of reducing these requirements is critical to the embedded engineer.
Other Programming Languages
The other languages represented here make up only a small fraction of what is available. These languages are generally used where a compiled language is inappropriate.
Java in a Nutshell

| Author | David Flanagan |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596007736 |
| Amazon | link |
| BookBrain | link |
Pretty much exactly what it says on the cover, this book give a complete overview of the Java language in a reasonably small space.
Java Foundation Classes in a Nutshell: A Desktop Quick Reference

| Author | David Flanagan |
|---|---|
| Publisher | O'Reilly |
| ISBN | 1565924886 |
| Amazon | link |
Java Examples

| Author | David Flanagan |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596006209 |
| Amazon | link |
| BookBrain | link |
Programming Perl

| Author | Larry Wall, Tom Christiansen, Jon Orwant |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596000278 |
| Amazon | link |
| BookBrain | link |
If you need a perl reference...this is it. Third edition is best but second will do.
Learning Perl

| Author | Randal L. Schwartz, Tom Phoenix, brian d foy |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596101058 |
| Amazon | link |
| BookBrain | link |
Learning Perl draws on the expertise of two of the major supporters of this highly flexible language, Randal Schwatrz and Tom Christiansen, to produce an introductory manual which manages to be concise yet informative throughout.
Weighing in at a mere (for a computer manual) 271 pages it achieves admirably what it sets out to do--teach Perl basics and no more. From the introduction to the different variable types through hash arrays, file access, process management and coding for the World Wide Web, it's a well-paced easy-to-understand book which assumes a rudimentary knowledge of programming but no more.
Programming Python

| Author | Guido Van Rossum (Foreword), Mark Lutz (Editor), Laura Lewin, Frank Willison |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596000855 |
| Amazon | link |
| BookBrain | link |
This book offers an extremely comprehensive guide to Python development. Though densely packed with information, Lutz is a lively and witty writer whose focus is on getting things done using the natural strengths of the Python language. Python is one of a growing number of interpreted languages suitable for all manner of medium to small scale applications, this could easily have been a book on lua, ruby or several others.
Python and TKinter

| Author | John E. Grayson |
|---|---|
| Publisher | Manning |
| ISBN | 1884777813 |
| Amazon | link |
| BookBrain | link |
Useful book for anyone wanting to program in the tk widget set using python. Acquired for a specific project requirement and good at what it describes.
Programming C#

| Author | Jesse Liberty |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596006993 |
| Amazon | link |
| BookBrain | link |
Programming C# provides an adept and extremely well conceived guide to the C# language and is written for the developer with some previous C++, Java and/or Visual Basic experience.
This book represents just the tip of the .net iceberg, with the open source mono implementation of .net these technologies are becoming more prevalent in embedded areas.
Learning C#

| Author | Jesse Liberty |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596003765 |
| Amazon | link |
| BookBrain | link |
A good introduction for the novice object-oriented programmer.
PostScript Language Reference Manual

| Author | USA Adobe Systems Inc. |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201181274 |
| Amazon | link |
| BookBrain | link |
If you need a reference to the postscript language, this is it.
Databases
a database can be extremely useful in many projects.
MySQL & mSQL

| Author | Randy Jay Yarger, George Reese, Tim King |
|---|---|
| Publisher | O'Reilly |
| ISBN | 1565924347 |
| Amazon | link |
| BookBrain | link |
A pretty good book about using the Mysql RDBMS. There are other database systems which are popular for different reasons almost all are SQL driven systems. There are even SQL database engines that operate on flat files such as SQLLite which can give great flexibility and scale in embedded systems.
Oracle 8 DBA Handbook

| Author | Kevin Loney |
|---|---|
| Publisher | Osborne McGraw-Hill |
| ISBN | 0078824060 |
| Amazon | link |
| BookBrain | link |
A good introduction to database administration of the Oracle RDBMS. This book is pretty specific to Oracle but there are other databases out there.
Other technologies
These books represent specific technologies like revision control or wireless systems.
XML in a Nutshell

| Author | Elliotte Rusty Harold, W.Scott Means |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596007647 |
| Amazon | link |
| BookBrain | link |
If you need to know about the underlying technologies of XML this book is for you. The book doesn't cover the application of these technologies in any specific language but thats not really its aim. The subject changes a lot so the latest edition possible is always useful.
802.11 Wireless Networks the Definitive Guide

| Author | Matthew Gast |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596100523 |
| Amazon | link |
| BookBrain | link |
A book which gives a thorough technical grounding in the IEEE 802.11 wireless networking standards. It wont give hints on practical network design but is covers everything you need to know as a programmer or designer.
Essential CVS

| Author | Jennifer Vesperman |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596004591 |
| Amazon | link |
| BookBrain | link |
A good book on the CVS revision system. This is again a book that represents a whole gamut of code revision systems such as subversion, arch, mono and git. The major point is that any project must have a code revision system agreed and used by all the developers. It comes a surprise when embedded developers don't use such a system but it still happens far too frequently.
See MIPS Run

| Author | Dominic Sweetman |
|---|---|
| Publisher | Morgan Kaufmann |
| ISBN | 1558604103 |
| Amazon | link |
| BookBrain | link |
Although we specialise in ARM systems we are not afraid of using other architectures. This book covers everything you need to know about the inner workings of the MIPS processors.
OpenGL Programming for the X Windows System

| Author | Mark J. Kilgard |
|---|---|
| Publisher | Addison Wesley |
| ISBN | 0201483599 |
| Amazon | link |
| BookBrain | link |
If you need to know how the OpenGL 3D graphics system is used under X Windows then this is for you.
X Window System: Core and Extension Protocols

| Author | Robert W. Scheifler, James Gettys, Al Mento, Donna Converse |
|---|---|
| Publisher | Digital Press |
| ISBN | 155558148X |
| Amazon | link |
| BookBrain | link |
If you need to write an X server or debug one at a protocol level this is for you.
X Protocol Reference Manual V 0

| Author | Adrian Nye |
|---|---|
| Publisher | O'Reilly |
| ISBN | 156592083X |
| Amazon | link |
| BookBrain | link |
Useful if you are writing an X server but not for much else.
Sendmail

| Author | Bryan Costales, Eric Allman |
|---|---|
| Publisher | O'Reilly |
| ISBN | 1565928393 |
| Amazon | link |
| BookBrain | link |
This book is a must if your configuring sendmail as a Mail Transport Agent. Our advice is don't use sendmail, this old grandfather of the Internet mail systems can be replaced with more modern and less cumbersome solutions such as exim or postfix.
Programming with QT

| Author | Matthias Kalle Dalheimer |
|---|---|
| Publisher | O'Reilly |
| ISBN | 0596000642 |
| Amazon | link |
| BookBrain | link |
It's a good book if you have absolutely no idea about Qt, but it probably won't help you if you want insight in more advanced or subtle Qt. There are better books about Qt, and more current (this one is getting a bit old, even more with Qt4)
Everything else
The books in this section are everything that doesnt fit into the other categories.
Tools for Thought: The History and Future of Mind-expanding Technology

| Author | Howard Rheingold |
|---|---|
| Publisher | The MIT Press |
| ISBN | 0262681153 |
| Amazon | link |
| BookBrain | link |
A historical view on computing and how it has affected society mainly biased from the American viewpoint.
Growing Up With Lucy

| Author | Steve Grand |
|---|---|
| Publisher | Weidenfeld & Nicolson |
| ISBN | 0297607332 |
| Amazon | link |
| BookBrain | link |
One mans quest to understand robotics
Garfield: Compute This!

| Author | Jim Davis |
|---|---|
| Publisher | Ravette Publishing Ltd |
| ISBN | 1841611948 |
| Amazon | link |
| BookBrain | link |
Every good programmer loves garfield?
Dilbert: Don't Stand Where the Comet Is Assumed to Strike Oil

| Author | Scott Adams |
|---|---|
| Publisher | Boxtree |
| ISBN | 0752224026 |
| Amazon | link |
| BookBrain | link |
Every programmer has dilbert books somewhere
Dilbert: Words You Don't Want to Hear During Your Annual Performance Review

| Author | Scott Adams |
|---|---|
| Publisher | Boxtree |
| ISBN | 0752224220 |
| Amazon | link |
| BookBrain | link |
Laugh, its funny
Introductory Circuit Theory

| Author | Prof. Kel Fidler |
|---|---|
| Publisher | McGraw-Hill Education |
| ISBN | 0071004319 |
| Amazon | link |
| BookBrain | link |
Like most books with the word "introductory" in the title this book is anything but...it goes from ohms law to complex circuit theory in nothing flat. Only kept on the bookshelf to remind the programmer in question of how bad he performed at the subject at university.
LISP: Gentle Introduction to Symbolic Computation

| Author | David S. Touretzky |
|---|---|
| Publisher | Longman Higher Education |
| ISBN | 006046657X |
| Amazon | link |
| BookBrain | link |
This book just shows the programmer's age. Except for extremely rare cases lisp is no longer seen "in the wild" of interest only to archaeological students.
Online Support
Disclaimer
Information contained in these publications regarding device applications and the like is intended as suggestion only and may be superseded by updates.
It is your responsibility to ensure that your application meets with your specifications. No representation or warranty is given and no liability is assumed by Simtec Electronics with respect to the accuracy or use of such information, or infringement of patents or other intellectual property rights arising from such use or otherwise.
Trademarks
All trademarks mentioned are the property of their respective owners.
