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.
"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.
"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 nowadays 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.
"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++.
"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.
"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.
"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.
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.
"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
Pride and Prejudice: Four Decades of Lisp
David B. Lamkins
Successful Lisp: How to Understand and Use Common Lisp
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
pattern giving clever hints and variation 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
Java Enterprise in a Nutshell
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
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.
"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, it may be a bit outdated now that UML has become a must.
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. To me it's the only book worth reading on UML, among the tons that have been published recently.
Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides
"Design Patterns Elements of Reusable Object-Oriented Software".
Pattern is the new buzzword among today's software developers. This is the book that started the fashion. It's not a complete new idea: pattern is to OOP as algorithm is to procedural programming. Clear with a good introduction. You need a basic knowledge of OOD/OOP.
"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
A Little Java, A Few Patterns
Object-Oriented Programming in Common LISP: A Programmers Guide to the Common Lisp Object System
"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.
"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.
"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.
"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.
"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
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.
"CORBA Security: An Introduction to Safe Computing with Objects".
Just an overpriced waste of paper.
"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 area) from the author of the program. TeX was very common before the wave of the '90s that demanded WYSIWYG tools. 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.
"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.
"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 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.
"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.
"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.
"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 tenths 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.