If you are looking for a way to fill an unsightly hole on your shelf, decorate you tea table, or wrap the fish, you may want to consider computer literature. Look no further.
Harold Abelson and Gerald Jay Sussman
"Structure and Interpretation of Computer Programs" (2nd ed.).
A must read for any software developer. An invaluable
introduction to programming, touching many important subjects
ranging from recursion to meta-languages, from data abstractions
to object oriented programming. As a side effect you will be
introduced to Scheme, used throughout the book. See also
the home
page.
Vincent S. Mantis and James J. Little
"The Schematics of Computation".
Not surprisingly similar in contents and style
to Structure and Interpretation of Computer
Programs, it's a good introduction for beginners to many
aspects of programming, through the user of the Scheme language.
Although my favourite is probably still the SICP, this is a well
written book. It has more modern and pleasant graphics, a
neater layout, and touches certain subjects in a more
modern/fresh style.
Have a look
at its preface as well.
Donald E. Knuth
"The Art of Computer Programming".
Does this series need any introduction? A classic about
computer algorithms. Not trivial, though.
Bruce Schneier
"Applied Cryptography" (2nd ed.).
The reference book of crypto-algorithms. If you have to work
with anything that has to do with security on computers, this is
one of the best books. Simple and clear, doesn't require
previous knowledge of the subject nor a strong mathematical
background.
Peter Norvig
"Teach Yourself Programming in Ten Years".
Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger
"The AWK Programming Language".
An excellent, concise introduction and reference book about the
most famous stream processing tool (as in Unix pipes, not
Kafka). Written by the authors of the program. For those who
are wondering, AWK happens to be the grandfather of the
once-famous Perl language.
Adobe Systems Incorporated
"PostScript Language Tutorial and Cookbook".
Who said PostScript is meant to be read only by printers? This
is a good introduction on this clever language and, as far as I
know, the only one.
Leo Brodie
"Starting Forth" (2nd ed.).
It's a very simple introduction to Forth. Sometime annoyingly
simple. If you don't have any background in programming
languages this may be your book.
Patrick H. Winston
"On to Smalltalk".
Simple introduction to Smalltalk in a style that somehow reminds
the The Little Lisper. It's brief and
probably doesn't explore the full language, but its simplicity
will certainly appeal those who want to get a taster without
investing too much time.
James O. Coplien
"Advanced C++ Programming Styles and Idioms".
This is a book about C++ patterns that
predates Design Patterns. Coplien explains a
lot of precious idioms and patterns you need in your daily C++
programming. My favorite book on C++.
Bruce Eckel
"Thinking in C++" (2nd ed.).
These two volumes are not just books on C++, they serve as a
sort of introduction to OOP. It could be seen as a blend of
many other books on C++ and OOP with a lot of extra stuff I
wouldn't have included, ranging from patterns
to XP (Extreme Programming). IMO, the result
is a bit superficial. If you are an absolute beginner these two
volumes can be a good resource, but if you want to go deeper in
any of these subjects, you need to look elsewhere.
STL Tutorial and Reference Guide
Daniel P. Friedman and Matthias Felleisen
"The Little Schemer" (4th ed.).
A brilliant introduction to Scheme and recursion. It has a
unique style; something you need few pages to get used to. It
starts slow and easy but it soon gets challenging. It's not a
sterile explanation of the syntax and semantics of the Scheme
language. It's mostly aimed at training your mind on the
functional paradigm. A classic.
Daniel P. Friedman and Matthias Felleisen
"The Seasoned Schemer".
The sequel to The Little Schemer. If you
enjoyed the first one you ought to read this.
David S. Touretzky
"Common LISP: A Gentle Introduction to Symbolic Computation".
A brilliant introduction to Lisp and some of its fundamental
ideas. Unfortunately this is a title out of print. On the
other hand, the author has been so kind to make it
available on-line.
It's really worth downloading and printing.
Kent Dybvig
"The Scheme Programming Language" (3rd ed.).
Actually I've read only the first edition and I have been
impressed. If you are looking for a complete tutorial on ANSI
Scheme, this is the way to go. See also the
author's home page where you
will find this book, as well.
Sonya E. Keene
"Object-Oriented Programming in Common LISP: A Programmers Guide to the Common Lisp Object System".
The only book, that I'm aware of, entirely dedicated to CLOS. A
valuable introduction and reference book. A must have if you
want to program with CLOS. Beware, this isn't an introduction
to Common Lisp.
Paul Graham
"ANSI Common Lisp".
From one of the most successful Lisp gurus around, a good
tutorial on Common Lisp. The approach is more or less a fast
description of most of the Common Lisp primitives. While I find
it great, if you are looking for an introduction to Lisp I'd
rather recommend Common
Lisp, The Little Schemer
or Structure and Interpretation of Computer
Programs.
Paul Graham
"On Lisp".
The sequel to ANSI Common Lisp. Actually
this is IMO the best of the two. It's a good tutorial on
advanced Common Lisp programming techniques. Macros,
generalised variables, continuations, logic programming, patter
matching, OOP, it's all in there. It's sometimes succinct and
requires you to have a background in related subjects.
Stephen Slade
"Object-Oriented Common Lisp".
The title is misleading. It's not bad and it covers almost
everything about Common Lisp but, beside a chapter on OOP, there
is not very much that justifies the title. I believe the title
has been chosen because object-oriented was fashionable
back then.
Structure and Interpretation of Computer Programs
Nick Levine and Kent M. Pitman
Common Lisp - Myths and Legends
Stuart Watt
Pride and Prejudice: Four Decades of Lisp
David B. Lamkins
Successful Lisp: How to Understand and Use Common Lisp
Erann Gat
Lisp as an Alternative to Java
David J. Cooper, Jr.
Basic Lisp Techniques
Guy L. Steele, Jr., Richard P. Gabriel
The Evolution of Lisp
Richard P. Gabriel
Lisp: Good
News Bad News, How to Win Big
Arnold and Gosling
"The Java Programming Language".
The best tutorial I could find on Java at that time. It doesn't
cover every aspect of the JDK and may be a bit outdated, but if
you liked the K&R on C, then you like this one. It's a
no-frills good introduction to Java for programmers.
Matthias Felleisen and Daniel P. Friedman
"A Little Java, A Few Patterns".
Perhaps not as good as it's predecessors, The
Little Schemer and The Seasoned Schemer,
but an interesting read all the same. The title suggests that
this book is about patterns in Java but this is what all
the other books of the series were all about, too. It covers
mainly the GoF's visitor
pattern providing clever
variations to the theme. Compared to the Schemer books I found
it a bit dull, but I guess it's difficult to do better than
those.
Programming with Enterprise JavaBeans, JTS and OTS
W. Richard Stevens
"Unix Network Programming".
The Book about low level TCP/IP programming in the Unix
environment. It's an excellent description of everything you
need to know to program at the socket layer. Full of examples,
it covers both BSD and System V.
Marshall McKusick, Keith Bostic, Michael J. Karels, John S. Quarterman
"The design and the implementation of the 4.4 BSD Operating System".
The reference book on the architecture of the BSD operating
system. If you are interested in the internals of a very good
Unix, written by some of its gurus, this is for you.
W. Richard Stevens
"Advanced Programming in the Unix Environment".
A must-have for every serious Unix programmer. It explains
differences between various implementations taking special
care of standards. While as a tutorial might look daunting, it
can be used just as a reference provided you already have a Unix
background. It goes far beyond Unix Network
Programming, covering all the aspects of system libraries,
but I wouldn't consider it a superset. UNP
is still a better tutorial and reference book when it comes to
IPC.
Bryan Costales with Eric Allman and Neil Rickert
"Sendmail".
The ubiquitous mail transfer agent for Unix systems. This book
aims to be the definitive survival guide for the administration of
this cryptic program.
Grady Booch
"Object Oriented Design with Applications".
It was a bestseller before Booch teamed up with Rumbaugh and
Jacobson. I believe it's a good introduction to OOD in general
but, using the Booch notation. In this respect, it may be a bit
outdated now that UML has become an industry standard.
Martin Fowler and Kendall Scott
"UML Distilled Second Edition: A Brief Guide to the
Standard Object Modelling Language".
Everything you need to know about UML, in as little as 170
pages, if you don't want to commit suicide reading one of the
deadly boring masterpieces on the subject by Booch, Rumbaugh and
Jacobson. Possibly the only book worth reading on UML.
Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides
"Design Patterns Elements of Reusable Object-Oriented Software".
This is the book that started the OO patterns fashion. Clear,
with a good introduction. You need a basic knowledge of OOD/OOP.
John Vlissides
"Pattern Hatching Design Patterns Applied".
I would have preferred that the few patterns explained in this
book made their way into Design Patterns. The
deeper insight of other GoF patterns is interesting at least as
a mind stretcher (but I prefer A Little Java
in this respect). The bickering between the GoF members on this
or that subtle detail of certain patterns is not exactly
thrilling.
While not a bad book, for the price, I was expecting better
ideas, not just a collection of papers and e-mails.
Advanced C++: Programming Styles and Idioms
Object-Oriented Programming in Common LISP: A Programmers Guide to the Common Lisp Object System
Bill Curran
"What is Software Engineering?"
It explains why this section is called the way it is.
Frederick P. Brooks, Jr.
"The Mythical Man Month Essays on Software Engineering".
This book has been written in 1975 and you can tell. Although
not all the material survived the test of time, the concept of
the nonlinear economy of scale in collaborative work is, of
course, still valid and probably the most interesting part. The
20th anniversary edition sports four new chapters with rather
more updated insights on software production techniques.
William J. Brown, Raphael C. Malveau, Hays W. McCormick III, Thomas J. Mowbray
"Anti Patterns Refactoring Software, Architectures, and Projects in Crisis".
A collection of recurring mistakes in software engineering. You
don't need to read it from cover to cover. It's organised a bit
like the GoF so you can read it little by
little.
While it might not keep people from making mistakes (these and
others) it's an amusing read.
Richard P. Gabriel
"Patterns of Software Tales from the Software Community".
The title is a bit misleading, in the sense that the book is not
just about patterns or software. It contains a remarkable essay
on patterns (as explained by Alexander not the GoF) applied to
software engineering. It's a book full of wisdom and enjoyable
to read; two rare qualities in computer books.
Robert M. Pirsig
"The Zen and the Art of Motorcycle Maintenance".
It's not a book about computers nor programming. But it's
perhaps the best book about Quality. A great novel that
introduces you to the concept of Quality from a philosophical
perspective. However you might be involved in quality of
software, you should never start without reading this book
before.
Scott Adams
"The Dilbert Principle".
Do you think you are doomed to a miserable corporate life? Read
this and cheer up: you are not alone!
Edward Yourdon.
"Death March The Complete Software Developer's Guide
to Surviving Mission Impossible Projects".
A classic. The author has obviously a large experience on Death
Marches and project management. The book is only 200 pages, but
still too long for the subject and the author is a bit too self
referencing.
Kent Beck
"Extreme Programming Explained: Embrace Change".
I like the idea of putting together common sense pills in a
single paper. I wonder if applying all these recommendations
could improve your developer's life; they certainly don't hurt.
I appreciated the attention payed on continuous refactoring and
micro development cycles.
Musser, Saini
"STL Tutorial and Reference Guide".
Back in the days, STL was not part of the C++ standard, yet.
STL was the missing part to make C++ a useful language: this was
the companion to your favorite C++ book.
Bil Lewis and Daniel J. Berg
"Multithreaded Programming with Pthreads".
From the pen of Guy L. Steele Jr.: Bil Lewis and Dan Berg
explain clearly the concepts of multithreaded programming as
well as the useful little tricks of the trade, illustrated by
helpful diagrams and coding examples. It's focused mainly
on the Posix standard but it's a very good introduction to
threads in general. It considers other APIs mainly for
portability.
David Flanagan, Jim Farley, William Crawford and Kris Magnusson
"Java Enterprise in a Nutshell a Desktop Quick Reference".
Everything you need to know to get started with the now-obsolete
J2EE. It's short and straight to the point.
Robert Orfali, Dan Harkey, Jeri Edwards
"Instant Corba".
A short non technical introduction to what Corba is and what it
is meant for. The Martians thing is sort of annoying.
Bob Blakley
"CORBA Security: An Introduction to Safe Computing with Objects".
Just an overpriced waste of paper.
Richard Monson-Haefel
"Enterprise JavaBeans." (2nd ed.).
A very good introduction and reference book for EJB. It covers
many aspects including the most recurring issues in implementing
three-tier distributed applications using this ancient
technology.
Andreas Vogel and Madhavan Rangarao
"Programming with Enterprise JavaBeans, JTS and OTS. Building Distributed Transactions with Java and C++".
It's mainly focused on transaction monitors and the EJB part is
fairly small. The book wouldn't be too bad if it wasn't ridden
with incredible typographical errors.
Donald E. Knuth
"The TeX book".
The Bible of TeX (the text processing system famous mostly in
the academic circles) from the author of the program. The book,
while being an entertaining read, can't be used as a reference.
Donald E. Knuth
"The Metafont book".
The companion of The TeX book if you are
interested in designing your fonts or modifying existing ones.
Leslie Lamport
"LaTeX A Document Preparation System".
The tutorial and reference book for LaTeX, the macro package
for TeX. It's concise and clear. My copy is outdated; look for
the newest edition.
Patrick J. Lynch and Sarah Horton
"Web Style Guide".
This is a small but good book that has plenty to teach about web
style. Beautifully typed and in itself a source of inspiration.
Unfortunately, on the technical front, the first edition is
outdated (CSS are merely mentioned as future evolution). It's
also weird the abundance of photographic examples that are meant
to show colour differences, but are all printed in black and
white.
There is already a 3rd edition that is likely to be more up to
date with the latest web trends. You may want to have a look at
it on its web page.
Philip Greenspun
"Philip and Alex's Guide to Web Publishing".
A good introduction to a broad range of subjects on Web
publishing from someone who does have knowledge and experience
to sell. It may be a little outdated, but it's nevertheless
valuable. Funny to read and enjoyable in every sense.
The author has made this title available on-line. The book is
heavy because of the high quality paper required for the
reproduction of the numerous beautiful photos.
Håkon Wium Lie and Bert Bos
"Cascading Style Sheets Designing for the web" (2nd ed.).
An authoritative introduction and reference book to CSS. It
also introduces HTML to the absolute beginner and contains
plenty of examples. Easy and clear. The page numbers of the
reference card, inside the covers, are messed up, though. Pity,
as this would have been a good idea.
Paul Graham
"Hackers and Painters Big Ideas from the Computer Age".
The long awaited collection of on-line articles from one of the
most successful Lisp gurus. Yes, you can actually read most of
them from his web page, but the laptop makes an awkward bedside
book. The book has a fair share of witty remarks that you may
want to quote to friends, when they come over for a drink.
Kevin D. Mitnick & William L. Simon
"The Art of Deception Controlling the Human Element of Security".
Although the author got famous for his talent for working around
security systems, the book, I'm afraid, doesn't live up to his
fame. The stories are interesting, but they are focused on the
human factor, the weak link, not the technical.
Tim Berners-Lee
"Weaving the Web".
Past, present and future of the World Wide Web according to its
inventor. It unveils curious details regarding the origins of
the Web, gives an overview of the state of the art and gives
hints about its future.
Donald E. Knuth
"Selected Papers on Computer Science".
Some are fairly interesting, some others not quite. Although,
the papers are about CS you probably need a higher math
education to fully appreciate them.
Steven Levy
"Hackers Heroes of the Computer Revolution".
Hardly a technical book. It's written by a journalist who, with
patience and dedication put together a remarkable collection of
interviews, memories and gossips that otherwise would have
risked to be lost in the minds of the few pioneers who started
it all. This is a book about the real hackers, not about
computer criminals.
Olof S. Kylander and Karin Kylander
"GIMP The Official Handbook".
While available in electronic form on the net, I believe the
printed copy is more relaxing to read and the pictures look
better. Unfortunately the artistic talent of the authors is not
equalled by their writing skills. The organisation is less than
perfect, the index is more or less nonexistent, the cross
references are vague or missing at all, and the material is not
laid down in an organic way.
The book is packed with brilliant ideas, but as a reference it's
a complete disaster.
Jennifer Edstrom and Marlin Eller
"Barbarians led by Bill Gates Microsoft from the Inside".
This is a book for those who failed to realise that what people
learnt to love, was actually shoved down their throat. It also
explains how little technical superiority matters to make
billions of dollars and crush the competitors. A must read.
Simon St. Laurent
"XML A Primer".
Just a book among the many available on the subject. I suggest
it because it's concise and reasonably sized, yet clear and
complete.
Linus Torvalds with David Diamond
"Just for Fun The Story of An Accidental Revolutionary".
If you are a fan of this famous hacker, it may be worth a read.
Although some anecdotes are funny and well written, I found the
book overall a bit bland and premature. You should buy a copy
at least as a sign of appreciation towards Linus' work.