AN0017 - A Programmers Bookshelf

DescriptionSections:
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

Programmers bookshelf

Selected book

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

Modern Operating Systems

AuthorAndrew S. Tanenbaum
PublisherPrentice Hall
ISBN0130313580
Amazonlink
BookBrainlink

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

The Art of Computer Programming: Fundamental Algorithms

AuthorDonald E. Knuth
Publisher Addison Wesley
ISBN0201896834
Amazonlink
BookBrainlink

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

The Art of Computer Programming: Seminumerical Algorithms

AuthorDonald E. Knuth
Publisher Addison Wesley
ISBN 0201896842
Amazonlink
BookBrainlink

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

The Art of Computer Programming: Sorting and Searching

AuthorDonald E. Knuth
Publisher Addison Wesley
ISBN0201896850
Amazonlink
BookBrainlink

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

Computer Networks

AuthorAndrew S. Tanenbaum
Publisher Prentice Hall
ISBN0133942481
Amazonlink
BookBrainlink

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

Design patterns : elements of reusable object-oriented software

AuthorErich Gamma, Richard Helm, Ralph Johnson, John Vissides
PublisherAddison Wesley
ISBN0201633612
Amazonlink
BookBrainlink

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

Refactoring: Improving the Design of Existing Code

AuthorMartin Fowler
Publisher Addison Wesley
ISBN0201485672
Amazonlink
BookBrainlink

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

UML in a Nutshell

AuthorSinan Si Alhir
Publisher O'Reilly
ISBN1565924487
Amazonlink
BookBrainlink

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

UNIX Network Programming Vol 1: Networking APIs - Sockets and XTI

AuthorW.Richard Stevens
Publisher Prentice Hall
ISBN013490012X
Amazonlink
BookBrainlink

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

Unix Network Programming Vol 2: Interprocess Communications

AuthorW.Richard Stevens
Publisher Prentice Hall
ISBN0130810819
Amazonlink
BookBrainlink

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

TCP/IP Illustrated: The Protocols

AuthorW.Richard Stevens
Publisher Addison Wesley
ISBN0201633469
Amazonlink
BookBrainlink

The illustrated series do pretty much what their name imply, they illustrate how most widespread network protocols work.


TCP/IP Illustrated: The Implementation

TCP/IP Illustrated: The Implementation

AuthorGary A. Wright, W.Richard Stevens
Publisher Addison Wesley
ISBN020163354X
Amazonlink
BookBrainlink

This book explains in detail how a network stack is written.


Web technologies

HTML and XHTML: The Definitive Guide

HTML and XHTML: The Definitive Guide

AuthorChuck Musciano, Bill Kennedy
Publisher O'Reilly
ISBN059600382X
Amazonlink
BookBrainlink

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

Cascading Style Sheets the Definitive Guide

AuthorEric Meyer
Publisher O'Reilly
ISBN0596005253
Amazonlink
BookBrainlink

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

JavaScript: The Definitive Guide

AuthorDavid Flanagan
Publisher O'Reilly
ISBN0596000480
Amazonlink
BookBrainlink

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

Don't Make Me Think!: A Common Sense Approach to Web Usability

AuthorSteve Krug
Publisher New Riders
ISBN0321344758
Amazonlink
BookBrainlink

If you are designing an embedded web interface reasonable design is as relevant as in a "proper" site


HTTP Pocket Reference

HTTP Pocket Reference

AuthorC. Wong, Linda Mui
Publisher O'Reilly
ISBN1565928628
Amazonlink
BookBrainlink

Quick reference guide to the HTTP protocol, useful if one of the other full networking books is too much.


HTML Pocket Reference

HTML Pocket Reference

AuthorJennifer Niederst
Publisher O'Reilly
ISBN0596002963
Amazonlink
BookBrainlink

Quick reference guide to HTML useful adjunct to the Definitive guide.


Squid the Definitive Guide

Squid the Definitive Guide

AuthorDuane Wessels
Publisher O'Reilly
ISBN0596001622
Amazonlink
BookBrainlink

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

ActionScript: The Definitive Guide

AuthorColin Moock
Publisher O'Reilly
ISBN1565928520
Amazonlink
BookBrainlink

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

Linux Device Drivers

AuthorAlessandro Rubini, Jonathan Corbet, Greg Kroah-Hartman
Publisher O'Reilly
ISBN0596005903
Amazonlink
BookBrainlink

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

Learning the Korn Shell

AuthorBill Rosenblatt, Arnold Robbins
Publisher O'Reilly
ISBN0596001959
Amazonlink
BookBrainlink

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

Linux NFS and Automounter Administration

AuthorErez Zadoc
Publisher Sybex Inc.,U.S.
ISBN0782127398
Amazonlink
BookBrainlink

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

The Art Of Electronics

AuthorPaul Horowitz, Winfield Hill
Publisher Cambridge University Press
ISBN0521370957
Amazonlink
BookBrainlink

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

The C programming language

AuthorBrian W. Kernighan, Dennis M. Ritchie
Publisher Prentice Hall
ISBN0131103628
Amazonlink
BookBrainlink

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

The C++ programming language

AuthorBjarne Stroustrup
Publisher Addison Wesley
ISBN0201700735
Amazonlink
BookBrainlink

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

The C++ standard library

AuthorNicolai M. Josuttis
Publisher Addison Wesley
ISBN0201379260
Amazonlink
BookBrainlink


Advanced Programming in the UNIX Environment

Advanced Programming in the UNIX Environment

AuthorW.Richard Stevens
Publisher Addison Wesley
ISBN0201563177
Amazonlink
BookBrainlink

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

Programming Pearls

AuthorJon Bentley
Publisher Addison Wesley
ISBN0201657880
Amazonlink
BookBrainlink

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

Java in a Nutshell

AuthorDavid Flanagan
Publisher O'Reilly
ISBN0596007736
Amazonlink
BookBrainlink

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

Java Foundation Classes in a Nutshell: A Desktop Quick Reference

AuthorDavid Flanagan
Publisher O'Reilly
ISBN 1565924886
Amazonlink

Java Examples

Java Examples

AuthorDavid Flanagan
Publisher O'Reilly
ISBN0596006209
Amazonlink
BookBrainlink

Programming Perl

Programming Perl

AuthorLarry Wall, Tom Christiansen, Jon Orwant
Publisher O'Reilly
ISBN0596000278
Amazonlink
BookBrainlink

If you need a perl reference...this is it. Third edition is best but second will do.


Learning Perl

Learning Perl

AuthorRandal L. Schwartz, Tom Phoenix, brian d foy
Publisher O'Reilly
ISBN0596101058
Amazonlink
BookBrainlink

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

Programming Python

AuthorGuido Van Rossum (Foreword), Mark Lutz (Editor), Laura Lewin, Frank Willison
Publisher O'Reilly
ISBN0596000855
Amazonlink
BookBrainlink

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

Python and TKinter

AuthorJohn E. Grayson
Publisher Manning
ISBN1884777813
Amazonlink
BookBrainlink

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#

Programming C#

AuthorJesse Liberty
Publisher O'Reilly
ISBN0596006993
Amazonlink
BookBrainlink

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#

Learning C#

AuthorJesse Liberty
Publisher O'Reilly
ISBN0596003765
Amazonlink
BookBrainlink

A good introduction for the novice object-oriented programmer.


PostScript Language Reference Manual

PostScript Language Reference Manual

AuthorUSA Adobe Systems Inc.
Publisher Addison Wesley
ISBN0201181274
Amazonlink
BookBrainlink

If you need a reference to the postscript language, this is it.


Databases

a database can be extremely useful in many projects.

MySQL & mSQL

MySQL & mSQL

AuthorRandy Jay Yarger, George Reese, Tim King
Publisher O'Reilly
ISBN1565924347
Amazonlink
BookBrainlink

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

Oracle 8 DBA Handbook

AuthorKevin Loney
Publisher Osborne McGraw-Hill
ISBN0078824060
Amazonlink
BookBrainlink

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

XML in a Nutshell

AuthorElliotte Rusty Harold, W.Scott Means
Publisher O'Reilly
ISBN0596007647
Amazonlink
BookBrainlink

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

802.11 Wireless Networks the Definitive Guide

AuthorMatthew Gast
Publisher O'Reilly
ISBN0596100523
Amazonlink
BookBrainlink

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

Essential CVS

AuthorJennifer Vesperman
Publisher O'Reilly
ISBN0596004591
Amazonlink
BookBrainlink

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

See MIPS Run

AuthorDominic Sweetman
Publisher Morgan Kaufmann
ISBN1558604103
Amazonlink
BookBrainlink

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

OpenGL Programming for the X Windows System

AuthorMark J. Kilgard
Publisher Addison Wesley
ISBN0201483599
Amazonlink
BookBrainlink

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

X Window System: Core and Extension Protocols

AuthorRobert W. Scheifler, James Gettys, Al Mento, Donna Converse
Publisher Digital Press
ISBN155558148X
Amazonlink
BookBrainlink

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

X Protocol Reference Manual V 0

AuthorAdrian Nye
Publisher O'Reilly
ISBN156592083X
Amazonlink
BookBrainlink

Useful if you are writing an X server but not for much else.


Sendmail

Sendmail

AuthorBryan Costales, Eric Allman
Publisher O'Reilly
ISBN1565928393
Amazonlink
BookBrainlink

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

Programming with QT

AuthorMatthias Kalle Dalheimer
Publisher O'Reilly
ISBN0596000642
Amazonlink
BookBrainlink

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

Tools for Thought: The History and Future of Mind-expanding Technology

AuthorHoward Rheingold
Publisher The MIT Press
ISBN0262681153
Amazonlink
BookBrainlink

A historical view on computing and how it has affected society mainly biased from the American viewpoint.


Growing Up With Lucy

Growing Up With Lucy

AuthorSteve Grand
Publisher Weidenfeld & Nicolson
ISBN0297607332
Amazonlink
BookBrainlink

One mans quest to understand robotics


Garfield: Compute This!

Garfield: Compute This!

AuthorJim Davis
Publisher Ravette Publishing Ltd
ISBN1841611948
Amazonlink
BookBrainlink

Every good programmer loves garfield?


Dilbert: Don't Stand Where the Comet Is Assumed to Strike Oil

Dilbert: Don't Stand Where the Comet Is Assumed to Strike Oil

AuthorScott Adams
Publisher Boxtree
ISBN0752224026
Amazonlink
BookBrainlink

Every programmer has dilbert books somewhere


Dilbert: Words You Don't Want to Hear During Your Annual Performance Review

Dilbert: Words You Don't Want to Hear During Your Annual Performance Review

AuthorScott Adams
Publisher Boxtree
ISBN0752224220
Amazonlink
BookBrainlink

Laugh, its funny


Introductory Circuit Theory

Introductory Circuit Theory

AuthorProf. Kel Fidler
Publisher McGraw-Hill Education
ISBN0071004319
Amazonlink
BookBrainlink

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

LISP: Gentle Introduction to Symbolic Computation

AuthorDavid S. Touretzky
Publisher Longman Higher Education
ISBN006046657X
Amazonlink
BookBrainlink

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.