A somehow sorted list of computer-related reading material, with my personal point of view. If not otherwise mentioned the comment refers to the first edition of the printed version.
Harold Abelson and Gerald Jay Sussman
"Structure and Interpretation of Computer Programs" (2nd ed.).
A must read for any computer professional. 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 IT seen through the Scheme language. Yet, it's a
pleasant read for non-beginners. 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 than the
SICP does.
Have a look
at its preface as well.
Donald E. Knuth
"The Art of Computer Programming".
Does this series need any comment? A classic about computer
algorithms. Not easy, though.
Bruce Schneier
"Applied Cryptography" (2nd ed.).
The encyclopedia of crypto-algorithms. If you have to work with
anything that has got to do with security on computers this is
one of the best books. Simple and linear, doesn't require
previous knowledge in this 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. Written by the authors of
the program itself. For those who don't know, 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 output devices?
This is a good introduction on this clever language and, as far
as I know, it's even 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. In fact, this book is
part of a collection written by the same author that claims to
employ a new teaching method ("answering your natural
questions in a natural order"). It's brief and probably
doesn't explore the full language, but its simplicity will
certainly appeal those who want to get an idea without investing
too much time.
James O. Coplien
"Advanced C++ Programming Styles and Idioms".
This is a book about C++ patterns before Design
Patterns was written. Coplien explains a lot of precious
idioms and patterns you need in the everyday C++ programming
life. Some of them are workarounds to the language limitations
and some are ideas borrowed from other languages. Still my
preferred book on C++.
Bruce Eckel
"Thinking in C++" (2nd ed.).
These two volumes are not just books on C++, they are also a
sort of introduction to the OO paradigm. 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). The result is not better completeness but a
briefing on everything you might need to know about OOP in C++,
but you won't get from these pages. 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 buy
other books.
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 reaches challenging concepts
expressed always in a delightful and funny way. 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. It's 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 basic ideas.
Unfortunately it's 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 it.
Kent Dybvig
"The Scheme Programming Language" (3rd ed.).
Actually I've read only the first edition and I was very well
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 I'm aware of completely dedicated to CLOS. While
not an entertaining reading, it's a valuable introduction and
reference book. A must have if you want to program with CLOS.
Beware, this isn't an introduction to Lisp at all.
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
consider it a valuable book on Common Lisp, if you are looking
for an introductory book on Lisp and the fundamental concepts of
functional programming, I would 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 IMHO the best of the two. It's a good tutorial
on advanced Common Lisp programming techniques. You will get
exposed to the more exotic programming tricks in this language.
A knowledge that usually takes long time to build up by
experience. Macros, generalised variables, continuations, logic
programming, patter matching, OOP, it's all in there. It's
sometimes brief and requires you to have a background in related
subjects.
Stephen Slade
"Object-Oriented Common Lisp".
The title is misleading. It's not too bad and it covers almost
everything about Common Lisp, but beside a chapter on OO there
is not very much that would justify the title. I believe the
title has been chosen because object-oriented was a
fashionable label at the time the book came out. I expected
something a bit more challenging.
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 JDE 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".
Not as good as it's predecessors, The Little
Schemer and The Seasoned Schemer, but
certainly an interesting reading. This time the title wants to
explicitly suggest that this book is about patterns (a
fashionable buzzword, when first published) in Java but this is
what all the other books of the series were all about: patterns
and idioms. It covers mainly the GoF's visitor
pattern giving clever hints and 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 network 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 Unix system.
If you are interested in the internals of a very good operating
systems, 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 Unix 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 guide to survive the administration of
this cryptic program, but you'll sooner or later find out that
even after reading it: wild guessing and sleepless nights can't
be avoided. Nice try, though.
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 few 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. It can be consider a sort of survival kit in the
bureaucratic jungle of OO hype. 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".
Pattern has been for a while The Buzzword for software
developers. This is the book that started the fashion.
Patterns are to OOP as algorithms are to procedural programming.
Although OOP is a thing of the past, and FP is the new craze,
there are still plenty of places where you would need to brush
up on your GoF to wrestle your Java compiler to obedience.
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 that 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 easily tell.
Much of this material has proved to be wrong or simply no more
relevant by now. The concept about 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 in small
pieces.
While it might not keep people from making mistakes (these and
others) it's an amusing read. The authors gave a name to many
(not all) situations that drove you crazy in years of software
development. Even if it's a serious book, I suggest you to read
it as you would read a Dilbert strip.
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 qualities really rare in computer books. I suggest
you to buy the hard cover version, because you can get rid of
the ugly jacket.
Robert M. Pirsig
"The Zen and the Art of Motorcycle Maintenance".
It's not a book about computers or programming. For me it's
just the best book about Quality. A great novel that
introduces you to the concept of Quality from a philosophical
perspective. However you are involved in quality of software you
should never start without reading this book before.
It
seems that the author decided to make this title available on
Internet. I recommend to buy the book nevertheless.
Scott Adams
"The Dilbert Principle".
Are you thinking you are doomed for the rest of your miserable
life to deal with dumb corporate people? Read this and cheer
up: you are not alone! It's relevant to software development
much more than you would like to admit.
Edward Yourdon.
"Death March The Complete Software Developer's Guide
to Surviving Mission Impossible Projects".
Nice ideas in too many pages. The author obviously has a large
experience about Death Marches and software project management.
Many things he writes are absolutely the (outrageous) truth.
The book is only 200 pages, but still too long for the subject
and the author is a bit too self referencing. I grew the
impression that either Yourdon targets the complete imbecile or
he's paid by the page.
Kent Beck
"Extreme Programming Explained: Embrace Change".
It's not a silver bullet nor something revolutionary. Actually,
there is nothing extreme about it, beside the commercial hype.
Nevertheless I like the idea of putting together common sense
pills in a single paper. I wonder if applying all these
recommendations could improve your development life cycle; they
certainly don't hurt. I appreciated the attention payed on
continuous refactoring and micro development cycles.
Musser, Saini
"STL Tutorial and Reference Guide".
There is not very much to say about it. STL was the missing
part to make C++ an useful language: this is the companion to
your C++ language book. Now that STL is part of the C++
standard, books on C++ are likely to include a section about
it.
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 programming in general. It considers
other APIs mainly for portability issues.
David Flanagan, Jim Farley, William Crawford and Kris Magnusson
"Java Enterprise in a Nutshell a Desktop Quick Reference".
I don't know very much about the value of this reference, but it
looks good. What makes me suggest this book is the fast paced
tutorial on J2EE technologies. In my opinion contains
everything you need to know to get started in this area. 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 and the content
is a bit too partisan with a strong focus on convincing you on
how good, cool and clever Corba is. Can be regarded as a good
but expensive brochure about Corba.
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 on EJB. It covers
many aspects including a thorough coverage of the most recurring
issues in implementing three-tier distributed applications using
this technology. Without doubt one of the best books on the subject.
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. It looks like nobody
spent a minute proofreading it.
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. TeX was
very common before the WYSIWYG wave of the '90s. I guess
nowadays it's on the desk of only few people who find visual
tools distracting and limiting. The book while being a very
amusing 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.
It's very well written while a bit more challenging than the TeX
book, but the topic is indeed more technical.
Leslie Lamport
"LaTeX A Document Preparation System".
The tutorial and reference book about LaTeX, the macro package
for TeX written by the same author. It's concise and clear. My
copy is outdated; look for the new edition.
Patrick J. Lynch and Sarah Horton
"Web Style Guide".
Pity that 80% of the web pages hasn't been written after reading
this book. This is a small and 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
option). 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 and fashions. You may want to
have a look at it on its web page.
Peter Kent
"Poor Richard's Web Site: Geek-Free, Commonsense Advice on Building a Low-Cost Web Site".
The target audience of this book is the completely clueless
idiot who should better stay away from the Web, rather than mess
around with it. Even if you fall in this category,
buy Philip's, or Patrick and
Sarah's, or Håkon and Bert's books.
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, not covering the latest
fashions like JSP or EJB, 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.).
It's 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, trust me, 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. Again, pulling a book from your bookshelf is
much easier than bootstrapping your Unix system and starting
your browser. (It turns chicks off!)
Kevin D. Mitnick & William L. Simon
"The Art of Deception Controlling the Human Element of Security".
Although the author got famous (and infamous) for his cunning
talent at working around security systems and cracking
computers, the book, I'm afraid, doesn't live up to his fame.
The stories in it are interesting and sometimes fairly exciting,
but the technical part is pretty dull and the message somehow
repetitive. The bottom line is always: if you are stupid they
will break into your system, steal your money, mobile phone, car
and girlfriend.
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
juicy hints about the future.
As you might expect this is
an insightful book, not to be confused with the tons of bullshit
that have been written on the topic by herds of improvised Web
experts.
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 this book.
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
information, 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 or PlayStation addicts.
Olof S. Kylander and Karin Kylander
"GIMP The Official Handbook".
While available in electronic form on the Internet I believe the
printed copy is more relaxing to read (despite the glossy paper)
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 is a
complete disaster. You keep turning pages flipping back and
forth the index without ever finding anything, even if you are
sure that what you are looking for is somewhere in there,
because you have seen it already.
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 few technical superiority matters to make billions
of dollars and crush the competitors. A must read even for the
technically inclined.
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 dull. Actually I must say that some bits are
downright annoying; I found, for instance, a lot of juvenile
naivety in the way he praises the American Way (TM), that puts
me really off, but I suppose turns on lots of pimple-pocked-face
teenagers.
I've got the impression that all the merit goes to David, who
must have done a lot of work to turn an otherwise uninteresting
life, like the one of a still young computer geek, into 250
pages book.
You should buy a copy at least as a sign of appreciation towards
Linus' hacking work. Then you can as well place it somewhere
high on your shelves and forget it.