Kuro5hin.org: technology and culture, from the trenches
create account | help/FAQ | contact | links | search | IRC | site news
[ Everything | Diaries | Technology | Science | Culture | Politics | Media | News | Internet | Op-Ed | Fiction | Meta | MLP ]
We need your support: buy an ad | premium membership

Top 5 Tech Books: Share your Favorites

By pi in Op-Ed
Wed Oct 25, 2000 at 03:54:02 AM EST
Tags: Books (all tags)

Anyone who delves head-first into a life of technical tomfoolery likely spends a good deal of his or her time reading. Reading manuals? Sometimes. Reading RFCs? Quite possibbly so. Reading READMEs? For the computationally inclined, most certainly. Personally, I have found myself reading good old-fashioned treeware more often than anything else -- academic text books, reference books, and programming manuals. And, like the rest of you k5 readers, I have my crop of favorites. I thought it might be good discussion fodder for us all to spit forth out personal "Top 5" list, ala High Fidelity discussing why our favorite techbooks are just that -- favorites. The idea is that through these listings, everyone will learn of at least one new dead tree pile to peruse. The key is to be nice and descriptive as to why you like the volume. So here's mine, pi's list of all-time favorite tech books...

Running Linux. Lars Kaufman and Matt Welsh This book pretty much single-handedly yanked me from Microsoft-ville into the world of Linux (and UNIX, really). When I had just begun my undergraduate degree, another student told me about Linux. I have to say I was quite disbelieving at first that a PC UNIX was available for free (hey.. I grew up in western PA, USA -- very backwoods). So, during a trip to the suburban mall/hell, I noticed and picked up a copy of Running Linux, 1st ed. This tome was my vest friend for the next year or so, filling in the many gaps left by the Infomagic Linux Developer's CD insert :) It guided this *NIX newbie into a bright and enjoyable new world. You should see my copy -- it is all beat up, dog-eared and sloppy with food. Almost six years later I still pull it off the shelf for an occasional reference. I liked it then for its comrehensiveness (from a newbie perspective) and for the excellent writing style. I will always remember this book as my point of departure into the UNIX world. Assuming that the most recent edition is on par with the original, I would reccommend this book to anyone looking for a distrobution-neutral book that teaches the basics of utilizing a Linux box for numerous tasks.

Internetworking with TCP/IP vol 1. Douglas Comer This book was recommended to me as pretty much the best book for getting to know TCP/IP. Well, I only have a few others to compare it too, but it is seems stinking comprehensive. Comer is a teacher, and it shows. He presents everything in the text with excellent clarity and the pacing is perfect. This text covers **everything** about TCP/IP, including it's history. The new edition even goes into IPv6, IPsec, and some other recent IP developments. This first volume doesn't go into implementations of TCP/IP or client/server computing, but the next two volumes server this purpose. Anyway, if you want to learn about the architecture of the Internet, grab this text.

The C Programming Language. Brian Kernighan and Dennis Ritchie I expect that alot of you have run into this at one point or another. When I first encountered it, having just learned Pascal (my first programming language -- well ok, Logo) I wasn't very impressed. The volume seemed dry and too cryptic -- not great for an newbie C programmer. I revisited it a few years later after having become a mildly decent C programmer through a conglomeration of other texts and basic UNIX goofing. This book now seemed so damn perfect. So concise! So packed with information! No bullshit, just pure C skill straight from the creators of the language. I would later find it to be frequently referenced on comp.lang.c as "The Book" or "K and R." It's a reference I would never want to be without.

Computer Organization and Design: The Hardware Software Interface. Patterson and Hennessy This is one of the few textbooks my CS program selected that I really, really love. Computer Architecture was a tough subject for me -- it was alot less intuitive for me than the typical CS subjects: algoritms, operating systems, etc. This book was key to helping me understand (and enjoy) computer architecture. It is extremely well written and chock full of interesting historical anecdotes. Further, the book doesn't get too detailed about any one subject -- they leave that for the second volume. This book lets a non-EE tyoe get a good grasp of fundamental computer architecture issues and provides lots of pointers to further reading. It is the only architecture book I've found to be readable for its own sake -- funny and amazingly non-dry. If anyone out there is looking for a good book on the subject, this is one.

Expert C Programming: Deep C Secrets. Peter van der Linden is one funny SOB. This book is a must-read for any C hackers out there. It is full of excellent C tips and tricks and is one of the funniest technical books I've ever read. The intended audience is a C programmer with a few years experience under her belt who's looking to improve her understanding of the language. It aims to deliver up to the reader C's trickiest sneakery and discuss the language itself -- no so much what one does with it. In my case, it definitely accomplished this goal. All I can say is, if you like programming in C, read this book ASAP. You will thank me (and the author) :) The book is pretty easy to spot in the library or bookstore since it is bright orange with a big, blue coelacanth (big fishy) on the cover.

Books I am currently reading that I think will probably make it on this list in the future: the Art of Computer Programming (Knuth), There's alot here to love. Unix Network Programming (Stevens) -- brought to my attention a friend as "the best fucking book on unixs socket programming," I'm finding it to be just that.

Books I hope people discuss: Any good book, besides Knuth, on algorithms. A good book on graphics programming... hmm. The definitive compiler book -- all I know is the "dragon" book (which was pretty good).

I hope this list provides at least one k5 reader with a new book to read..

Cheers. pi


Voxel dot net
o Managed Hosting
o VoxCAST Content Delivery
o Raw Infrastructure


Related Links
o High Fidelity
o Also by pi

Display: Sort:
Top 5 Tech Books: Share your Favorites | 130 comments (122 topical, 8 editorial, 0 hidden)
some of my fav's (3.50 / 8) (#1)
by madams on Tue Oct 24, 2000 at 11:15:12 PM EST

The best written tech book of all time is undoubtedly Philip and Alex's Guide to Web Publishing. If Greenspun isn't a witty and inspiring tech writer, I don't know who is.

It's funny that you mention Computer Organization and Design. It's the textbook for the CS class I'm taking right now (okay, I have to get back to designing that ALU)

Java in a Nutshell is also a great example of everything good about Oreilly.

Mark Adams
"But pay no attention to anonymous charges, for they are a bad precedent and are not worthy of our age." - Trajan's reply to Pliny the Younger, 112 A.D.

I used that book too (3.00 / 1) (#14)
by skim123 on Wed Oct 25, 2000 at 05:12:44 AM EST

It's funny that you mention Computer Organization and Design. It's the textbook for the CS class I'm taking right now (okay, I have to get back to designing that ALU)

At my school I had to take two semesters of classes with that stupid book. I guess it was, overall, a good book, but I had a craptacular teacher for one of those semesters... the assembly stuff was neat, though... designing the hardware was downright boring, though. Guess that's why I am a computer programmer and not a computer engineer.

Money is in some respects like fire; it is a very excellent servant but a terrible master.
PT Barnum

[ Parent ]
.. (3.00 / 1) (#16)
by ameoba on Wed Oct 25, 2000 at 05:35:06 AM EST

I hope it's better than <a href="http://vig.prenhall.com/academic/book/1,3410,0130959901,00.html">Tanenbaum's</a> SCO book. The text is decent, but the <b>COVER</b> is ridiculous. I was unable to read the damned thing in public without people asking me what second grade level remedial class I was taking.<br>
If you can't tell from the uselessly small picture on the web site, the cover's a cheesy cartoon of a building with absurdly literal interpretations of computer architecture related terms, like a bus full of elephants labeled 'Memory Bus', or a pair of sheep, the jumping one labeled 'Dynamic RAM', and a resting one for 'Static RAM'.<br>
I know they say "don't judge a book by its cover", but I think they'd change their mind after seeing this one... Fortunately, the follow-up book on operating systems has a slightly better cover... The Dining philosophers engaged in combat, trying to get their forks... =)

[ Parent ]
Tannenbaum - the networking bible. (4.50 / 2) (#17)
by Merekat on Wed Oct 25, 2000 at 05:50:46 AM EST

Tannenbaum's Computer Networks has a similar front cover theme, with bridges etc. It is, however, a great read. Informative, flowing nicely, humourous and pretty detailed. One of the few tech books I've ever encountered that is equally good as a quick reference and a cover to cover read.

I also enjoyed O'Reilly's DNS & Bind for shedding light on the strange thing that is DNS. IMHO, compulsory if you have to deal with nameservers.

Finally, Lions' commentary on Unix, to which I owe special thanks for saving my ass for a particularly nasty project, but which I kept reading after the project was done. It is what it says it is, source code and commentary. It was written by an Australian lecturer in the 70s but unavailable legally for about 20 years.
I've always had the greatest respect for other peoples crack-pot beliefs.
- Sam the Eagle, The Muppet Show
[ Parent ]

Lifelines... (none / 0) (#125)
by SuperCujo on Mon Oct 30, 2000 at 10:07:24 PM EST

I don't usually use books once I know the language/system fairly well. The books are generally dug out in the early hours of the morning when I am so tired the brain doesnt want to access the memory store...

I agree Tannenbaum's book is a great one, saved me a few times when my memory has failed me.

Another book that has saved me a few times is Java in a Nutshell. Best Java reference book I have found. None of the learning Java books helped me, I downloaded the Sun tutorial for Version 1.0 and learnt the basics from there, Java in a Nutshell took me the rest of the way.

If the human brain was simple enough that we could understand it, we couldn't...
[ Parent ]
Best Java book (for beginners, at least) (4.00 / 15) (#3)
by Dacta on Tue Oct 24, 2000 at 11:28:53 PM EST

Thinking in Java by Bruce Eckel.

I've never heard anyone with anything except praise for this book. If you are learning Java I highly recommend you check it out. It is available to download (free).

The Dragon Book (3.88 / 9) (#8)
by mafried on Wed Oct 25, 2000 at 01:41:54 AM EST

"Compilers: Principals, Techniques, and Tools" by Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman.

I've used the theory presented within this book on nearly every project I've worked on (and very few of my projects have had anything to do with compilers). It gave me an enormous amount of insight into the inner workings of the tools that I use on a day to day basis. It covers all sorts of theory - from simple pattern matchers, to complex parsing and memory managment algorithms. Definatly the most influential technical book I have ever read.

ah (3.00 / 2) (#32)
by jovlinger on Wed Oct 25, 2000 at 09:59:06 AM EST

The dragon book. You never hear anyone refer to it by its title. It's always the dragon book. Like SICP, Hennesy and Patterson, or Tannenbaum -- all books beloved enough to have nicknames more pervasive than their titles. anyways, back to our regularly scheduled programming:

Language theory and parser generation are never going to go out of style, and registers will likely need to be allocated for a long time ahead. However, it is getting a bit long in the tooth, and is skimpy on issues such as object layout tradeoffs, applicative languages (I know it does have a short chapter on this, but it's a deep field), and scheduling. Just to name a few.

I've read Appel's Modern Compiler Construction (or is it Advanced..?) but it failed to click for me. Peyton-Jones' is great, but only for the very small field of compiling lazy functional languages.

What other good modern compiler books can you recommend?

[ Parent ]

Three more suggestions (3.00 / 6) (#9)
by scheme on Wed Oct 25, 2000 at 03:02:54 AM EST

The lady book aka Introducion to Automata Theory, Languages, and Computation. Great book if you need a solid foundation on turing machines, automatas of all sorts, languages. Plus it has some applications to figuring out what a regular expression can and can't do, how to recognize languages, and just what the halting problem is.

Artificial Intelligence: A Modern Approach. This is the book to read if you want an intro to any major subfield in AI today. It covers every thing from machine learning to vision and robotics.

Finally Rivest, Cormen, and some other guy's algorithms book. Great introduction to algorithms with a focus on the theoretical parts of algorithmic analysis and it even has couple chapters on parallel algorithms under different models.

"Put your hand on a hot stove for a minute, and it seems like an hour. Sit with a pretty girl for an hour, and it seems like a minute. THAT'S relativity." --Albert Einstein

"Introduction to algorithms" (3.00 / 2) (#29)
by arafel on Wed Oct 25, 2000 at 09:33:03 AM EST

>Finally Rivest, Cormen, and some other guy's algorithms book.
>Great introduction to algorithms with a focus on the

By Cormen, Leiserson, and Rivest. I'm fairly sure that's the one you're thinking of, and yes, it's very good.

Bloody thick, though. :-)
[ Parent ]
Good books (3.33 / 6) (#10)
by swc on Wed Oct 25, 2000 at 04:33:45 AM EST

A Practical Guide to Linux: After playing around with Linux on an old 486 for a year, I picked this book up and became a full-fledged convert.

Programming Perl: *The* book for learning Perl.

Perl Cookbook: Several hundred "recipes" that will save you many hours of banging your head against the wall.

Mastering Algorithms with Perl: Learn computer science (some of it anyway) with Perl

Phillip and Alex's Guide to Web Publishing: Incredibly useful book for web developers (or anyone wanting to become one)

Writing Apache Modules With Perl and C: The definitive guide to the Apache API.

Advanced Programming in a UNIX Environment (3.12 / 8) (#11)
by chakie on Wed Oct 25, 2000 at 04:37:12 AM EST

The book Advanced Programming in a UNIX Environment by Richard Stevens is IMHO the best Unix programming book available. Everyone who needs to do some kind of programming under Unix should read it. It contains enormous amounts of good examples, is clearly written and bautifully typeset. Most new books still look stupid in comparison with what RS managed to do with troff (or was it nroff?) and some tools.

I read it cover to cover when I got it, and it was a really interesting read. Gives a lot of history too as to why things are the way they are. Read it!

Advanced Programming in a UNIX Environment (3.00 / 2) (#34)
by jbuchana on Wed Oct 25, 2000 at 10:32:01 AM EST

When I saw the subject, I expected to see a lot of people suggesting this book. I'm happy to see at least one suggestion.

For those who have not read Advanced Programming in the Unix environment, I reccomend you go buy a copy today. (assuming that you are interested in programming :-) )

Despite the "Advanced" in the title, I would reccomend it for almost anyone who already has some C knowledge and wants to use it in Unix/Linux. This book is quite approachable, and while it is a long read if done from front to back, you will enjoy it. I still remember much of Steven's anecdote about the time he did not beleive the advice against making a hard link to a directory and tried it. It turns out that the advice was good. :-)

A lot of the information is quite useful in perl a well, but the examples all assume C

Jim Buchanan
[ Parent ]
My recommendations (2.83 / 6) (#12)
by washort on Wed Oct 25, 2000 at 04:49:04 AM EST

  • Structure and Interpretation of Computer Programs, Abelson and Sussman
    A true classic. Explains key programming concepts in an easy to read style, but doesn't skimp on the hard stuff.
  • Paradigms of AI Programming, Norvig
    Covers historic approaches to AI problems and implementation strategies.
  • the Dragon Book, Aho and Ullman
    Classic text on compilers.
i can't think of two more.... it's 4a here =)

The classics are never obsolete. (3.00 / 7) (#13)
by dmitri on Wed Oct 25, 2000 at 04:55:51 AM EST

Design Patterns : Elements of Reusable Object-Oriented Software
by Erich Gamma

-Perennial OO design patterns book. Must read for all OO programmers.

Structure and Interpretation of Computer Programs
by Harold Abelson and Gerald Jay Sussman with Julie Sussman

-Want to understand compiler and interpreter design? Or just learn scheme...

The society of mind
by Marvin Minsky

-Great AI book. Understanding the mind as a society of agents and the theory behind implementing this in a computer system.

-- "A society that will trade a little liberty for a little order will deserve neither and lose both." --B. Franklin
Physicist's view... (3.00 / 5) (#15)
by pak21 on Wed Oct 25, 2000 at 05:31:30 AM EST

Posting here as an astrophysicist, rather than a programmer per se (although most of my time is spent coding)...

  • Numerical Recipies in C (Press et al.): the bible for how to do numerical computing (at least in theory. Their actual code is awful, but the algorithms are good).
  • Programming Perl: for all the bits where I don't need the performance of C.

That's about it I guess... I've currently got a couple of the O'Reilly X books on my desk, but that's for a different project.

Awful? (2.50 / 2) (#31)
by jovlinger on Wed Oct 25, 2000 at 09:54:49 AM EST

Awful in what way? Inefficient or unclear?

I bought the Fortran version, but only read it for the algorithms (can't speak an non-lexible word of fortran).

[ Parent ]
Re: Awful? (4.00 / 1) (#56)
by a humble lich on Wed Oct 25, 2000 at 01:54:04 PM EST

It is not quite the clearest of code, but the complaint I hear the most is that it is C code written like Fortran. I would say their Fortran code is much better, especially their Fortran 90 version, but the book is good because of the algorithms. Num. Rec has been sitting open on my desk for two years straight now--good book.

[ Parent ]
Numerical Recipes good for some things but not all (none / 0) (#123)
by gdwyer on Mon Oct 30, 2000 at 08:27:37 AM EST

I think that there is one good thing about Numerical Recipes (NR) and two bad things.

The good thing is that the books have clear discussions and good references about algorithms that can be hard to understand.

The bad things? The C code is little better than running f2c on the fortran. Also, the algorithms apparently are not generally the best available. I know this to be true of the random number generators, and it seems that experts in some area of numerical computing invariably don't think much of NR's discussion of their field.

My personal bottom line: NR is a good starting point but it is not a good stopping point if you want more than a quick and dirty solution to a one-off problem. I'm not sure that they claim more than this.

[ Parent ]
I have to have a shower after I use Numerical... (none / 0) (#71)
by SIGFPE on Wed Oct 25, 2000 at 05:30:33 PM EST

...Recipes because I feel dirty just looking at that hideously awful 'C' code. All of the arrays start at 1 for a start! It's old style K&R 'C' so it won't compile in a C++ compiler.

Here's a problem I had. I was porting some of the code to C++. I wanted to change the structure of the code as little as possible but I definitely wanted to remove the macros as I think macros can obscure code. I found this macro:
SHIFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d);
I figured that I could replace it with
void Shift(float &a,float &b,float &c,float d) { a = b; b = c; c = d; }
Note that d is read but not written so I pass the last argument by value. It took me ages to spot that this is not a correct translation even when the arguments are just variables - not expressions. Can you spot why? This stuff violates some very basic rules about what an interface should be. Argh! These algorithms are cool but this code is from hell!
[ Parent ]
I'll bite... (none / 0) (#100)
by Zagadka on Thu Oct 26, 2000 at 09:16:35 PM EST

What's the difference? I would've mentioned the case where the parameters are expressions, but you've already ruled that out. (the function also only works with floats, and is three separate statements, so it could do hokey things if used in an if/while/for type situation without braces, but somehow I don't think that's what you meant...)

[ Parent ]
How it's actually used (none / 0) (#102)
by SIGFPE on Thu Oct 26, 2000 at 09:41:28 PM EST

It's actually used in the code something like this:
Note how although the 'd' macro parameter is only read it's still incorrect to use the 'const' because 'd' is in fact the variable 'a' so although the 'd' parameter is only read the value that is actually read is not the value passed into the function because the line 'a=b' modified it. Ouch!

Still, as I write this I have code based on the NR amoeba minimiser algorithm running in the background so I oughtn't to complain too much.
[ Parent ]
Numerical recipes (none / 0) (#98)
by joe_nobody on Thu Oct 26, 2000 at 05:37:13 PM EST

There has been some criticism of numerical recipes. I'm sure that are many more up to date resources out there.

[ Parent ]
Buy the Fortran 77 book. (none / 0) (#110)
by SoVLF on Fri Oct 27, 2000 at 07:49:40 AM EST

I can't speak about the C book, but I would assume that if the originals were written in f77 by people raised on Fortran, the translation to C might not be so hot. The f77 algorithms (if you can stand using something as "archaic" as f77 :-) are very solid.

[ Parent ]
Win32 Books (3.11 / 9) (#18)
by katravax on Wed Oct 25, 2000 at 06:07:48 AM EST

These books, along with the MSDN library (available online or via monthly CDs) form my Windows canon. I do not use MFC, but prefer everything in straight C++ and straight API with no external libraries when possible. As a side comment, I also dug the movie High Fidelity <g>.

Programming Windows by Charles Petzold. Written for C Programmers, this is the bible that explains from ground zero how Windows programming works, with copius examples. This is the one to start with. It does not use MFC since it is not a C++ book.

Professional NT Services by Kevin Miller. Not only does this explain how NT Services work (and provide excellent class libraries you can use), it also explains using the event log, creating control panel applets, and how to use NT security tokens within your apps. This book does not use MFC for its examples until later in the COM section (which I have not read).

Win32 Multithreaded Programming by Aaron Cohen and Mike Woodring. This O'Reilly book covers precisely what the title says, and explains it extremely well, covering threading and synchronization methods. It also covers topics special to threading from DLLs, User Interface components, and demonstrates techniques for shared memory, pipes, thread pooling, and debugging multi-threaded applications. It provides some highly usable class libraries and code samples. This book and its code does not use MFC, but does have a chapter dedicated to the book techniques from MFC.

Advanced Windows by Jeffrey Richter. This book explains Windows memory and process management in detail and teaches techniques for threads, virtual memory, shared memory via memory-mapped files, asynchronous messages, DLLs, Thread-local storage, File Systems, SEH, Unicode, Device I/O and some more. This is the book that picks up where the Petzold book leaves off. The code is highly-focused and doesn't waste lines on areas not relevant to the problem at hand (like many shovelbooks do). The explanations in this book are outstanding, and the author takes away some of the mushiness of advanced windows programming techniques. It also does not use MFC.

Network Programming for Microsoft Windows by Anthony Jones and Jim Ohlund. This book explains every networking type that Windows can use, and provides some outstanding code samples. Unlike most Windows network books that only cover Winsock, this book also covers the Redirector, Mailslots, NetBIOS, Named Pipes, and RAS, though fully half the book is dedicated to Winsock. Not only is TCP/IP-specific Winsock covered, but explanation and examples are given for all protocols, families, IO Methods, and every conceivable topic. Of course address resolution and registration are covered as well. This book has become my bible for any type of network code from Windows. There is a chapter for issues related to MFC, and another for Visual Basic (haven't read either of them, though).

Project Management and Other books (4.40 / 10) (#19)
by katravax on Wed Oct 25, 2000 at 06:29:10 AM EST

These books I've separated from my posted list here of Win32 books because they're not really about specific coding topics, but programming and project techniques in general.

The Inmates are Running the Asylum by Alan Cooper. This book explains in great detail why programmers and software companies keep screwing up software (because we really don't pay attention to what and how the user wants to do things, even when we think we do). It gives good methods for excellent user design, and is not Windows-specific. At times the book comes off as a big advertisement for the product design firm, but is still a highly worthwhile read for the design techniques that are detailed. This is a fairly short book that can be read in one or two evenings.

Debugging the Development Process by Steve Maguire. This book covers project management, or more precisely, how to get rid of all the stupidity and distractions that keep programmers from doing their jobs. One of the more suprising tips for time and concentration-management: Close your email client except for a couple of pre-defined times a day (!). This book is very programmer-centric, and explains all the things that hurt productivity and morale, and how to make the programmers happier, more productive, and more motivated. As a programmer, I can say this book really improved my productivity by pointing out the things I do to sabatoge it. This is also a fairly short book that can be read in one or two sittings. This book is not Windows-specific, but does use some samples from inside Microsoft on why some projects went poorly and some went well.

Code Complete : A Practical Handbook of Software Construction by Steve McConnell. Extremely language non-specific (examples are frequently given in several languages), this book shows techniques to improve the overall quality of your code and make it more readable, self-documenting, easily maintained, and just plain better. It's almost like a "how to program well" book that doesn't teach a particular language. It's interesting to read a book that goes back to level zero and even has an entire chapter discussing how to most effectively utilize routines. Just routines (functions/subs/blocks/etc). Though many of the topics are "beginner" topics, it's surprising how much an experienced developer can get from discussion on the basics and their correct usage. One of the more useful parts of each section is the provision of checklists and things to remember to do (and not to do) in your code. Lots of examples of good code, bad code, and why, are given. This is not a short book, but does not need to be read sequentially. It makes excellent bathroom reading as well because the topics are arranged in manageable chunks. This book is not specific to any language, OS, or environment.

Old to New to Old. (4.00 / 5) (#20)
by IoaPetraka on Wed Oct 25, 2000 at 06:45:21 AM EST

As a person who just recently really got into computers, and only within the last year got into programming enough to warrent the purchase of expensive books, I don't quite have a list of five yet. Here is my Top So Far.

  • Python and Tkinter Programming by John E. Grayson. This is quite simply one of the most well-rounded GUI progamming books I've ever come across. I would recommend this book even if you do not use Python or Tkinter. Both are trivially easy to learn, and the speeed in which you can create prototypes is unbelievable. This book covers everything from the basic Tkinter widget methods, to the powerful Pmw extension set. It is absolutely loaded with good examples. No little five liners that barely illustrate a point. This guy explain necessary comments, then spends pages showing you an entire program. Thus, when you are following along you actually end up making some pretty cool stuff just from the examples. The compulsion to dig into the code and play with it is irresistable, and this is to me, what makes a good learning book. If the book leaves you just skimming pages and never actually trying the langauge out, it has failed. On the other hand, you'll find yourself going through this book rather slowly as you stop and spend days on tangent projects.
  • Programming Perl, 3rd Edition by Larry Wall, Tom Christiansen, Jon Orwant. What could I even say about this one that hasn't already been said a million times over. The third edition is a whopping 1,100 pages of well organized and crystal clear Perl wisdom from the author of Perl and some of the best documentors of Perl. If you use Perl for anything more than the most simple one-time scripts, this book is a definate need and should have been purchased yesterday (Hint: Fatbrain is selling this at 40% off for their october top 100 sale.)
  • Perl CD Bookshelf While this contains the afformentioned book in 2nd edition flavour, it also has Learning Perl, Learning Perl on Win32, Perl in a Nutshell, the Perl Cookbook, and Advanced Perl Programming. As the name implies, this is not a set of dead trees. These books are on a CD in straight HTML format. It comes with its own java-based search engine so you can do full searching of the text. The best features of this computerized version are a massive linked index. If you want information on a certain function but you are not sure which book to go to, the total index shows you all instances of the function in the set. Also, I know it isn't for everybody, but I prefer programming material to be on screen. I get a sore neck from turning back and forth between paper books and computer screens when learning languages. Having the books right up there, beside my xterm is super nice. As an added bonus when you buy this set you also get the Perl In a Nutshell hard copy. Which was a good choice. Of all the books I use the nutshell on screen least since you go there for a quick little refreshing on how to do things instead of extensive reading. My only complaint with this set is having two tutorial books, one for a platform I rarely use. I would have removed the redundant Learning/win32 and replaced it with either Mastering Perl Algorithms or Mastering Regular Expressions (Yeah, not actually a PERL book, but IMHO an essential read for anybody who rummages through massive quantities of text between m// lines.)
Well, that is it for now.

Ioa Aqualine Petra'ka
Why programmers should have real offices w/doors.. (3.85 / 7) (#21)
by crasch on Wed Oct 25, 2000 at 06:45:56 AM EST

...is explained in Peopleware, one of the books I list below. I'm still quite new to the programming field, but here are some other books I've been impressed with so far:

  1. Philip and Alex's Guide to Web Publishing by Philip Greenspun--how many tech books do you know that have over 180+ five star reviews at Amazon.com? Best book on web design around, and available completely online.
  2. Applied Cryptography, 2nd Edition by Bruce Schneier. Bible of cryptography. Not technical, but his Secrets and Lies : Digital Security in a Networked World is also good.
  3. Designing Web Usability: The Practice of Simplicity. See also Joel Spolsky's User Interface Design for Programmers. Both authors also have superb web sites with numerous essays. Of course, Edward Tufte's books are also required reading for anyone who wants well-designed interfaces.
  4. Code Complete by Steve McConnell. Great overall overview of the programming process. See also Peoplewaree by Tom DeMarco and Timothy Lister for why programmers should have real offices with doors that close.

Political/social messages in tech books (3.00 / 2) (#26)
by ralphph on Wed Oct 25, 2000 at 08:50:26 AM EST

Your number one choice dirctly relates to this K5 story. It's a useful and popular book not in spite of but because of the author's outrageous examples.

[ Parent ]
Time-Life's Guide to the IBM PCjr (2.33 / 6) (#22)
by Precious Roy on Wed Oct 25, 2000 at 06:47:18 AM EST

I still have this book, despite having gotten rid of the PCjr (my first real computer, unless you count the TI-99/4A) many years ago. Not spectacularly written, but it had color photos (!) and is still a heavy dose of nostalgia from the days of King's Quest I.

One of the better books I've seen... (2.80 / 5) (#23)
by jmcneill on Wed Oct 25, 2000 at 07:15:45 AM EST

...is the 'Design and Implementation of the 4.4BSD Operating System' by Marshall Kirk McKusick.
``Of course it runs NetBSD.''
Good books on how to program (3.20 / 5) (#24)
by pw201 on Wed Oct 25, 2000 at 08:44:46 AM EST

Couple of good ones to try are:
  • The Pragmatic Programmer, by Andrew Hunt and David Thomas, covers programming good practice and also a bit of what you might think of as management things. It's funny and informative, and covers a lot of ground (it's not just a "how to code" book). There's a website for the book, too.

  • The Practice of Programming by Kernighan and Pike, is another book about programming practice. This one is more specifically about good coding, though it also contains chapters on debugging and testing.

How do these compare to (2.00 / 1) (#36)
by hariya on Wed Oct 25, 2000 at 10:38:37 AM EST

Elements of Programming Style by Kerninghan and Plauger, if you have read that one.

I mainly code in Fortran and am looking for a good book to supplement Elements. The info in it is outdated and I need some good Object Oriented programming style book.

[ Parent ]
personal favorites (3.80 / 5) (#25)
by lachoy on Wed Oct 25, 2000 at 08:47:17 AM EST

Just a list for now. These are my current favorites rather than 'all-time'.

Object Oriented Perl by Damian Conway.

Programming Perl by Larry Wall, Tom Christiansen and Jon Orwant

Design Patterns by the Gang o' Four

Peopleware by Tom DeMarco and Timothy Lister

Practical Internet Groupware by Jon Udell

Code Complete by Steve McConnell

Unix Power Tools by various

Extreme Programming Explained by Kent Beck

The Pragmatic Programmer by Andrew Hunt and David Thomas

Oh! Pascal by someone I can't remember and I'm too lame to look it up (nostalgia pick -- my first programming book)
M-x auto-bs-mode

After the Gold Rush (3.00 / 4) (#27)
by beetle on Wed Oct 25, 2000 at 09:28:04 AM EST

After the Gold Rush. Steve McConnell For everyone who's read Code Complete, this is another of Steve McConnell's books. Less technical, but more forward looking, it discusses the creation of a true Software Engineering profession, and all which that entails.

Very well written, short, sweet and to the point, this should be ingrained in the minds of anyone trying to build real software.

You picked three of mine (3.00 / 4) (#28)
by Fireblade on Wed Oct 25, 2000 at 09:32:11 AM EST

Internetworking with TCP/IP. I have vols. 1 & 2

The C Programming Language

Expert C Programming: Deep C Secrets. I have to admit I bought this one for the picture on the cover. Definitely the funniest technical book I've ever read.

Add to these anything In a Nutshell.

One of my favorite quotes ever... (4.00 / 1) (#65)
by Biff Cool on Wed Oct 25, 2000 at 03:39:43 PM EST

was in Expert C Programming.  Something like:
The argument of whether array indexing should start at 0 or 1 has gone on for years I feel my compromise of .5 was not given fair consideration.

I can't even remember who it was attributed to though.

My ass. It's code, with pictures of fish attached. Get over it. --trhurler

[ Parent ]
Peter Linden is amazing. Case in point... (none / 0) (#101)
by Jason H. Smith on Thu Oct 26, 2000 at 09:23:48 PM EST

I too agree this book is phenominal. It is the best mix of useful information and entertainment I have ever come across. Linden was with Sun doing either compilers or the kernel (I forget which). Needless to say, he is very elite and has much to share about the nuances of the C language.

And . . . I just recently found this tidbit about Jamie Lee Curtis' status as a hermaphrodite, as discussed on alt.folklore.urban. I was astounded to learn who, of all people, mailed the actress to ask about it personally!
Ants. (two by two)
[ Parent ]
My Top 5 (3.14 / 7) (#30)
by gauntlet on Wed Oct 25, 2000 at 09:47:09 AM EST

  1. Linux in a Nutshell

  2. It has been a marvelous reference to me for the last year, and I expect for decades to come, both in terms of Linux and general Unix. (obligatory)O'Reilly rules.(/obligatory)
  3. The C++ Programming Language

  4. From Stroustrup, an excellent book if you're serious about being a good programmer. Bjarne doesn't force you to understand everything, just to understand enough to be able to use the tool really effectively. Not for beginners. Go to C++ for dummies, More C++ for dummies.
  5. Apache: The Definitive Guide

  6. Blah blah blah, O'Reilly rules, blah blah blah, Apache rules, blah blah blah, "Oh! That's what X (means|is for)"
  7. Men are from Mars, Women are from Venus

  8. I swear, this is one of the most educational books I have ever read. Made me realize that what I hear is totally different from what is said, which is totally different from what is trying to be communicated. If you are a geek, and ever hope to have a meaningful relationship with a person of the opposite sex, GET THIS BOOK.
  9. Vic-20 Basic Programmers Guide

  10. This one started it all for me, baby.
    10 if $notforthisbook then goto INeverWouldaEndedUpLikeThis
    20 for I=$clueless to $clued
    30 REM Learn something here.
    40 next I

Into Canadian Politics?

Men are from Mars?!? (4.00 / 2) (#55)
by synaptik on Wed Oct 25, 2000 at 01:35:48 PM EST

I read the book back when the MafM,WafV craze was at its pinnacle, and I did think it was somewhat insightful. But I lost respect for the author ("Dr." Gray) when I learned that his PhD was of the mail-order variety, that you can obtain for "life experience." (I learned this from my Psychology professor, who co-authored a book called "The Definitive Guide to Self-Help Books." MafMWafV got the lowest score in his book.)

warning C4717: 'WORLD3D::operator=' : recursive on all control paths, function will cause runtime stack overflow
[ Parent ]

That book rots (none / 0) (#78)
by KidSock on Wed Oct 25, 2000 at 09:31:13 PM EST

IMO the Apache book you mention is horrible. It leads you through a crappy example. Unless you really read throught it in order you get completely lost. This was one of the major O'Reilly disappointments.

[ Parent ]
Me Too! (3.75 / 4) (#33)
by 0xdeadbeef on Wed Oct 25, 2000 at 10:07:52 AM EST

I'll mention the mandatory Applied Cryptography and Programming Perl. And Design Patterns rocks for no other reason than it says what we're all thinking, and does so far more clearly than most of us ever could.

I think the best advanced graphics book is Advanced Animation and Rendering Techniques by Alan Watt and Mark Watt. It goes into far more detail about rendering than the "bible" of computer graphics, Computer Graphics: Principles and Practice, by Foley, Van Damn, et al.

One book most will overlook though many have probably read is Mastering Turbo Pascal 6, by Tom Swan. This book taught me how to program, and damn, it's still one of the best "learn language X" books I've ever seen. It is also a complete reference to the language and its standard libraries, something more modern books too frequently leave out.

I've also got to mention Standard C++ Iostreams and Locales, by Langer and Kreft, for no other reason than this is also a good learning book and reference to some of the more complex and frequently ignored parts of the C++ standard library.

Booklist 1 (4.00 / 4) (#35)
by Swing on Wed Oct 25, 2000 at 10:37:46 AM EST

There are a lot of very interesting "tech" books out there. Here are the few that surround me. When I leave, I'll look at the titles of my others; the ones surrounding me are a bit faddish. (The more theoretical or time-tested books whose titles I don't recall I'll list later.)

- Any W.R. Stevens book. Lucid books like Advanced Programming in the Unix Environment and the Network Programming series show how much work he put into the books. Assumes next to nothing in terms of knowledge; and did the grunt work of communicating with people like Kernighan and Ritchie to elucidate things that aren't documented anywhere.

- Knuth's Art of Computer Programming is nice. Most people don't deal with algorithms on that level, but if you like a purely mathematical treatment of algorithms, visit here. Deals with computers at the assembly level; MIX (and its RISC successor, MMIX) were invented with the nicest features of existing processors. (After all, how are you to obtain meaningful time results without defining the machine?)

- For XML:
XML and Java: Developing Web Applications (Maruyama). Yes, this book is slanted towards Java and uses IBM's (free software?) parser. But it is very honest about its prejudices, and is very careful to note how to make sure you write W3C compliant XML code so you're not locked into IBM's parser. Short, concise intro into the subject, touches upon interesting things in the later chapters, if you're interested.

XML Pocket Ref (O'Reilly pub). I've heard very good things about it. I'm ordering a copy myself; most books take too damn long explaining XML, for such a simple concept.

- For Java:
Online Java tutorial (java.sun.com). I frankly don't know where a good place to learn java is; I sort of learned it from reading sourcecode, and referencing in the Java VM Specification. But that's because I know other languages.

Practical Java (Addison-Wesley pub). It's a useful little guide on writing more polished way, to minimize errors. Written as a numbered collection of tips+explanation, so it can be good bathroom reading.

The Java Class Libraries series (Chan). It's like the online javadocs (at java.sun.com), except really good. Examples are top-rate, very good organization. Pretty necessary, as it is often better than the javadocs, despite lagging a bit -- it shows the more stable classes. Pretty necessary.

Java Enterprise in a Nutshell (O'Reilly pub). Best treatment I've found of servlets, good reference in the back.

Java Swing (Eckstein, et al), Swing (Robinson, Vorobiev), online Sun Swing tutorial. Swing is the all-powerful, blahblahblah GUI system that Sun supports for Java. And it actually is very powerful; my Java dev environment is mostly a GNU IDE written using Swing components. (The makefiles use Apache's Jakarta-Ant, also written in Java.) The 1st book is a comprehensive O'Reilly book, almost the begin & end source to consult. The 2nd is a very good explanation manual, with "production-quality" examples. Has the most lucid and short explanation of JavaBeans I have seen, which is what underlies the Swing system. Text also available online. The 3rd is a nice tutorial, with pretty pictures. You can buy it, better to read the online version. Gets you intuitively used to Swing.

My Top 5+ (4.00 / 5) (#37)
by kostya on Wed Oct 25, 2000 at 10:46:57 AM EST

The Art of Computer Programming, Knuth
We should all have a book that challenges us to be better than we already are.

Linux Programming, Stones & Matthews
Truly an incredible book in the breadth of knowledge it covers so well! This book has been a great asset, having almost every topic you could ever need as a UNIX programmer (I've used the examples to put together similar programs on different platforms.

Design Patterns, Gamma et al.
To put it simply, if you do OO programming, you MUST own this book. Phenomenal book that makes you think and abstract in new ways.

Programming Perl, Wall
The most dog-eared of the bunch. Goes anywhere, has any topic. Always withing arms reach because I never know when I will need to write another Perl wonder-script.

Database Design for Mere Mortals, Hernandez
If you need to create a database, this is the book for you. Not the syntax, but the theory of how to go from a pile of paper to a thorough and detailed database spec. Fantastic methods for getting requirements and turning them into a database. EXTREMELY useful.

Honorable Mention:
The C++ Programming Language, Stroustrup
Gets only honorable mention because I haven't finished it yet. But already, it is an invaluable resource.

Veritas otium parit. --Terence
Yet another top N list. :-) (4.00 / 3) (#38)
by darthaya on Wed Oct 25, 2000 at 11:07:46 AM EST

  • Advanced UNIX Programming by W.R.Stevens

    Definitely the bible in UNIX programming. Very well written and give you a lot of insight.

  • Internetworking with TCP/IP Vol 1, 2, 3

    Bible in understanding and programming in TCP/IP.

  • Programming Perl, Learning Perl, Perl Cookbook.

    I recommend them as the must-read for anyone who wants to learn serious perl programming. Learning Perl gets you started, Programming perl leads you into the perl world, and perl cookbook is a GREAT reference book.

  • Design Pattern

    Teach you how to think OO, eat OO and sleep OO. :)

  • The C++ Programming Language by Bjarne Stroustrup.

    The only book for a C++ veteran.

  • Operating System Concepts by Silberschatz and Galvin

    A great book you can learn about Operating System from.

I only trust only books from O'reilly and Addison-Wesley these days. The O'reilly books are relatively easier to read, and better for starters, while Addison-Wesley books are just hard-core tech references, great, nonetheless. :)

my recommendations (2.75 / 4) (#39)
by wnewman on Wed Oct 25, 2000 at 11:34:09 AM EST

Note 1: This is not a list of things I think are imporant to know, just a list of books that I've run across which have done a notably first-rate job on a topic.

Note 2: sorry there are more than 5..

  • Stevens, Advanced Programming in the Unix Environment. (The TCP/IP books are great too.)
  • Graham, ANSI Common Lisp.
  • Schneier, Applied Cryptography.
  • Horowitz and Hill, The Art of Electronics.
  • Russell and Norvig, Artificial Intelligence: A Modern Approach.
  • don't know the author, A Concept of Limits. (It's a little Dover book now. Read it before you try to follow calculus from a typical instructor.)
  • Kernighan and Ritchie, The C Programming Language.
  • Stroustrup, The C++ Programming Language.
  • Corman et al, Introduction to Algorithms.
  • Arfken, Mathematical Methods for Physicists.
  • Landau and Lifschitz, Mechanics.
  • Press et al., Numerical Recipes.
  • Abelson and Sussman, The Structure and Interpretation of Computer Programs.

Along the lines of physics.... (none / 0) (#112)
by SoVLF on Fri Oct 27, 2000 at 08:29:52 AM EST

Add in

Radiative Processes in Astrophysics - Rybicki and Lightman
Stellar Interiors - Hansen and Kawaler

The latter isn't quite up there with Cox and Giuli (1968), but it's more up to date, and well-written.

Good books on hydrodynamics are Shore's Astrophysical Hydrodynamics, and Zeldovich and Raizer.

[ Parent ]

Ah, diversity. (2.60 / 5) (#40)
by Alanzilla on Wed Oct 25, 2000 at 11:51:51 AM EST

The Revolutionary Guide To Assembly Language

The Undocumented PC: A Programmer's Guide To I/O, CPUs, And Fixed Memory Areas

Unintended Consequences
A novel about the history of gun control in America and the abuses of its citizenry at the hands of government tax collectors.

Cryptography: A Primer
In case you actually want to know what Neil Stephenson is talking about in Cryptonomicon

Snow Crash
The coolest sci-fi book I've ever read--also by Neil Stephenson.

Elements Of Information Theory
Just ignore the Venn diagram about entropy--it screwed me up until I realized it was invalid.

History Of The Peloponnesian War
It's Thucydides, after all.... I mean, come on!

The Divine Comedy: Inferno
Dante kicks ass.

Resonant Power Converters
After all, it's by my thesis advisor... :)

And, of course, the most interesting of the lot:

Motorcycle Turbocharging, Supercharging, And Nitrous Oxide: A Complete Guide To Forced Induction And Its Use On Motorcycle Engines

a different kind of technical? (3.50 / 2) (#42)
by khallow on Wed Oct 25, 2000 at 12:07:14 PM EST

Well my list is a little different seeing as I was a mathematician in a past life.

CRC Standard Mathematical Tables and Formulae (get 30th ed or later), edited by Daniel Zwillinger. The coolest reference book I've seen around for describing what's useful in mathetics. It discusses geometry, number theory, graph theory and discrete mathematics, integration and differential equations, financial theory, and so on.

Matrix Computations by Gene H. Golub and Charles F. Van Loan. You need no other book for describing matrix algorithms. Discusses efficient algorithms for solving linear systems of multiple variables, finding least squares solutions to linear problems, and finding eigenvalue, eigenvectors of matrices. Also you find out how good these algorithms are and why they break.

Differential Forms with Application to the Physical Sciences by Harley Flanders. Ok, this book doesn't have anything to do with computers, the internet, or programming and algorithms (which excuse the above two). I could just say that this is *my* list and ignore you, instead here's why it's on my top five list. It's simply the best book I've seen in multivariable integration or differentiable geometry. I.e., it describes multivariable integration in the way it should be not the way you may have experienced back in high school or college. And it's a Dover book so you can get it for under $15.

Donald Knuth's cool The Art of Programming. Other's have said enough about these three volumes.

Algebra by Serge Lang. Algebra is one of the most mistaught subjects that I've seen (Calculus being another). Serge sets you straight. There are a number of other algebra books out there that are almost as good and a legion that are really bad.

Finally, there's Beliefs-Preferences Gauge Symmetry Group and Replication of Contingent Claims in a General Market Environment. Ok ok, just kidding. :-)

Stating the obvious since 1969.

Van Loan! (none / 0) (#43)
by madams on Wed Oct 25, 2000 at 12:18:30 PM EST

Charlie Van Loan is the chair of the CS deparment at my university. He's really a nice guy (this reminds me I need to take his Scientific Computation class).

Mark Adams
"But pay no attention to anonymous charges, for they are a bad precedent and are not worthy of our age." - Trajan's reply to Pliny the Younger, 112 A.D.
[ Parent ]

Algaebra (none / 0) (#48)
by Swing on Wed Oct 25, 2000 at 12:58:09 PM EST

You would like Dummit & Foote's Algebra. Currently the "popular" book for the subject, I've heard (though I have no idea). But despite that all, it's very good and encourages the reader to think.

Assumes very little; starts from set theory and goes from there.

[ Parent ]
Algebra and Calculus (none / 0) (#99)
by Jason H. Smith on Thu Oct 26, 2000 at 09:11:06 PM EST

Algebra is one of the most mistaught subjects that I've seen (Calculus being another).

Care to explain why you think so? I'm interested.
Ants. (two by two)
[ Parent ]
Sure I'll explain (4.00 / 1) (#117)
by khallow on Fri Oct 27, 2000 at 09:58:58 PM EST

Me: Algebra is one of the most mistaught subjects that I've seen (Calculus being another).

Jason H. Smith: Care to explain why you think so? I'm interested.

No problem. There's this huge chasm between the way mathematics is used and the way that it is taught at the introductory levels. Maybe I am guilty of puffery here, but where else is a subject taught to millions of people, but virtually unused in that form by those who have mastered it.

Let me explain in more detail (much much more) what I'm talking about. I've taught "college algebra" a number of times (like this rather than this) (rather poorly I might add - that's why I don't teach any more :-( ). The emphasis has always been on solving certain types of equations (linear in several variables, quadratic (e.g., ax^2 + bx + c = 0, radicals including the present of square roots, factoring polynomials in a single variable, and so on.

Then you get trigonometry which starts with angles and the basic properties of the sin, cos, tan, etc. functions. Then the average course dwells on identities of these functions. I've seen courses where the principal goal was to memorize the various identity rules and know how to apply them to get the desired end state identity.

Finally, calculus does differentiation, series and sums, and integration (usually finishing with integration in multiple variables). Except for a lucky few, this is the limit of virtually everyone's exposure to mathematics. Often people don't even bother with "algebra" in the first place. In my cynical opinion, the approach can be summed up as "memorize the rules, figure out how they work, and pass the course" or basically that these courses teach a set of algorithms for a small rigid subset of mathematics.

There are two problems with this. First, most (IMHO) of the most useful and interesting mathematics simply is ignored. Second, the true ideas of mathematics and their benefits aren't being developed in these courses or used.

Let's start with the list of stuff that isn't covered. I don't know of any high schools or colleges that require knowledge of discrete mathematics. I'm talking about graph theory, combinatorics, set theory (ok, this gets covered a little, usually), discete dynamical systems, etc. I bet a bunch of this could be more useful than say trigonometry, no harder to understand, and engage students more. number theory and geometry should be more available than they are. These two subjects are among the most interesting subjects in mathematics. True, they don't have much to do with real life, but they get the student thinking. Even probability and statistics (often glanced at in introductory courses) can be taught in interesting ways.

I've heard the comment from many mathematicians that they really didn't use or understand algebra properly until they had taught it. This is interesting in that it highlights that mathematicians rarely use what they teach in these early courses.

Then when you get to the ideas that students should be exposed to, you see more problems. The emphasis is on following algorithms and making graphs rather than on what should be important. My favorite low level course was business math. The reason was because it discussed one of the fundamental aspects of mathematics - namely making a mathematical model of a problem and using that model (and some mathematics) to deduce properties and solutions for the original problem (and it did a fairly neat job too). That's the sort of thing that most scientists, engineers, business people, etc. do every day.

What do I think is lacking from mathematics teaching in high school and college. First, the principle of abstraction is missing. A problem can be made easier by removing the parts that add complexity, but don't change the solution very much. The second is the ability to make a mathematical model of a problem. Finally, the variety in mathematics is being missed and with this, a lot of stuff to engage people's minds is not being used.

Note I haven't said anything about the quality of teaching. This is a somewhat independent issue. Let's say that many people have ranted on the quality of their teachers whether they be good or poor. But how much better could good teachers be if they were teaching the really interesting stuff, and not just what's acceptable. My general impression is that there's two current faulty modes of thought on teaching mathematics. The first is the "old math" which insists on blackboards, doing work by hand, etc. while the "new math" wants to make use of these shiny boxes (you call them computers :-).

In a way, the problem (IMHO) is that we're (as a global society) are teaching low level math 19th century style. Here's an example. While looking for more information on the history of teaching mathematics, I found this (slow) history of teaching mathematics in Germany. This link describes the broad changes made in German mathematics teaching (in high school) since the 19th century. It is notable for its brevity. I.e., not much has happened to change the high school math course (except for events in the 60's and 80's) since 1905! It may turn out that computers are undesireable in mathematics classes. However, the many advances in mathematics in the last hundred years should be reflected. Also, some of the best mathematics is actually the earliest. Two thousand year old math (and the challenging thought and discourse behind it) also isn't reflected in our faded 19th century classroom.

Stating the obvious since 1969.
[ Parent ]

Abstraction and Maths (5.00 / 1) (#128)
by Abelian Grape on Wed Nov 08, 2000 at 11:18:22 AM EST

What do I think is lacking from mathematics teaching in high school and college. First, the principle of abstraction is missing.

I'm in absolute agreement with you there, abstraction is what allows you to reveal some of the deep structure of mathematics, which is not only hugely interesting, it provides you with the experience and the kinds of schemata which can help you find your way through the mazes of syntax, and can turn some very messy maths from thrashing around in an anonymous formal system into a problem where you can think a bit about the system, and get some sort of direction to take the formalism in (just to tie this up with some of the other posts, Gödel Escher Bach brings in a similar sort of distinction between thinking within the system and thinking about the system).

A lot of people clearly have problems dealing with abstraction in maths; just look at the reaction most people have to complex numbers, even some in the lower level university courses (although the name is unfortunate). Complex numbers are often taught at a basic level as just another piece of formalism, except this one appears to have little application to the real world. If people were shown how complex numbers can make life a lot easier, if proper applications (not necessarily just to the real world, but to other areas of maths which are perhaps better understood or motivated) were taught in conjuction, then you'd get a much better response to complex numbers, and hopefully to abstraction in general.

Number theory and geometry should be more available than they are

Well, number theory isn't that useful in its own right (cryptography excepted), but it is vey useful in motivating a lot of abstract algebra, and makes a good introduction to such topics.

Anyway, to throw in a few books I haven't seen mentioned yet (although I'd heartily reccomend some of the others that have been mentioned, particularly Lang's "Algebra")

Formal Programming Language Semantics, Glynn Winskel
Excellent introduction to formal semantics, relies on very little maths knowledge to start with (although if you are mathematically inclined, it might not provide the kind of rigour you're looking for). It's perhaps a bit of a tough read for a beginner in the field, but not impossible by any stretch.

Mathematical Thought from Ancient to Modern Times, Morris Kline
Not really computers, but you should know where you're coming from. From Babylon through to Gödel in two volumes... easily my favourite historical text on maths.

[ Parent ]

My top 4 (4.00 / 3) (#44)
by DesiredUsername on Wed Oct 25, 2000 at 12:19:26 PM EST

I don't generally use many reference books, so these are just my favorites (in no particular order) for various tech-related reasons.

1) Alice in Wonderland Yes, really. It doesn't teach any programming (obviously) but it is an excellent litmus test for determining if you (still) want to be a programmer.

2) Mastering Regular Expressions (O'Reilly) Just plain excellent. I read the whole thing through like a novel, didn't do any of the examples, and STILL picked up everything I need to know about regex's.

3) The C Programming Language Unfortunately I don't own my own copy. But my one reading taught me more about C than I learned earning my degree. (Also, this size of the book compared to the size of the C++ book is an excellent argument in favor of it's being a better language).

4) Godel, Escher, Bach and Metamagical Themas (Douglas Hofstadter) Again, just plain excellent books for expanding the mind. Recommended to any programmer.

Play 囲碁
alice in wonderland? (none / 0) (#59)
by phunbalanced on Wed Oct 25, 2000 at 02:02:20 PM EST

please elaborate on what you mean about Alice in Wonderland. Were you kidding? or is this something I've never heard about before?

[ Parent ]
Alice In Wonderland (none / 0) (#60)
by yosemite on Wed Oct 25, 2000 at 02:26:21 PM EST

Perhaps referring to Alice's Adventures in Wonderland?

[Signature redacted]

[ Parent ]
Alice In Wonderland. (none / 0) (#79)
by pb on Wed Oct 25, 2000 at 10:56:23 PM EST

Alice In Wonderland is standard fare in many introductory Discrete Math/Logic texts; many parts of it are quoted due to the immense chopping of reason that goes on in the dialogue.

If you search for it, you will surely find many Alice In Wonderland Quotes on Math Quote pages; here are a few.

Carroll, Lewis:
"Then you should say what you mean," the March Hare went on.
"I do, " Alice hastily replied; "at least I mean what I say, that's the same thing, you know."
"Not the same thing a bit!" said the Hatter. "Why, you might just as well say that "I see what I eat" is the same thing as "I eat what I see!"

'Contrariwise,' continued Tweedledee/ 'if it was so, it might be; and if it were so, it would be: but as it isn't, it ain't. That's logic.'

The different branches of Arithmetic - Ambition, Distraction, Uglification, and Derision.

"See what the drooling, ravening, flesh-eating hordes^W^W^W^WKuro5hin.org readers have to say."
-- pwhysall
[ Parent ]
.. (none / 0) (#77)
by ameoba on Wed Oct 25, 2000 at 08:54:10 PM EST

While GEB is a great book, it's not exactly the best thing to read after you've got some formal education under your belt. After already having learned some formal number theory and some CS. The book, while making interesting points, get's bogged down in remedial math/cs.

In all, a great read for the layman, or a highschooler, but a bit elementary for those who've actually studied CS/math.

Now, if somebody would write a condenced version... =)

[ Parent ]
Not true! (none / 0) (#84)
by DesiredUsername on Thu Oct 26, 2000 at 08:34:36 AM EST

Not only have I actually studied CS/math, I first read GEB while in my junior year at college. Some of the "remedial math" were redundant (I already know boolean and predicate logic, etc) it still does a very good job of drawing a lot of things together (like music, art, math, physics, biology, etc) and making some things (esp Godel) a lot clearer even if you DID study it.

Play 囲碁
[ Parent ]
my 5 (3.00 / 3) (#45)
by barooo on Wed Oct 25, 2000 at 12:31:22 PM EST

  • Introduction to Algorithms by Rivest, Cormen, and Lieserson. I'm surprised more people don't mention it. Mathematical as all heck, but quite useful for the "theoretical" aspects of computer science.
  • Design Patterns by Gamma, Helm, Johnson, and Vlissides. I wish I had discovered this in my forming days. I'm only now starting to really think object-oreinetedly instead of procedurally.
  • K&R. 'nuff said.
  • Anything penned by the late W. Richard Stevens. Especially Unix Network Programming or Advanced Programming in the Unix Environment. More technical authors should seek to emulate his style and approach.
  • Calculus with Analytical Geometry by Edwards and Penney. Their book on diffy screw is pretty good too.

[G. W. Bush makes] one long for the flashy showmanship of Calvin Coolidge, the easy eloquence of Dwight D. Eisenhower, the simple honesty of Richard Nixon.
P. M. Carpenter
Dedicated to a yellow pig (none / 0) (#47)
by Swing on Wed Oct 25, 2000 at 12:51:41 PM EST

I think you would be interested in Spivak's Calculus. The guy is in his personal life nutty as all hell (from what I've heard) and has written the elegant book on proof-level calc that is based completely on some theorems about addition and what numbers are.

It's said that most math grads don't understand it all, though it is a very beautiful little book. Transcends calculus in some ways, supposedly is the best intro into analysis.

[ Parent ]
me too! (1.00 / 1) (#97)
by persimmon on Thu Oct 26, 2000 at 05:10:40 PM EST

Probably the only math book where "pigheadedness" is an entry in the index. But aside from the yellow pigs with 17 eyelashes, Spivak's Calculus is clear, concise, and relatively cheap. We used it in my Honours Calc course last year, all kept the book, and all got out of Analysis 315. Can't help but pity the people in regular calc who ended up with "Early Transcendentals".
It's funny because it's a blancmange!
[ Parent ]
Expanding your mind (2.66 / 3) (#46)
by systmc on Wed Oct 25, 2000 at 12:42:22 PM EST

Douglas Hofstadter's writings touch on such matters as the mind, artificial intelligence, translation, creativity and consciousness. I *highly* recommend them.

- systmc
Lets get naked.

Oh, mind trip books.... (3.00 / 1) (#49)
by 0xdeadbeef on Wed Oct 25, 2000 at 01:03:00 PM EST

In a similar vein, but less abstract and more "out there" are Clifford A. Pickover's books.

[ Parent ]
Ah, but can you describe GEB to someone? (3.00 / 1) (#51)
by synaptik on Wed Oct 25, 2000 at 01:19:27 PM EST

I find that trying to describe G.E.B. to someone who's not familiar with it is pretty challenging. Of course, you could always just tell them to read the Forward added to the second edition, but it's more fun to try to put it on your own words. Here's my attempt (ahem):

A recursive, metaphorical fugue about recursion, canons, and fugues in different contexts and domains, and how these "strange loops" (author's term) seem to be principal to the concept of self-awareness.

warning C4717: 'WORLD3D::operator=' : recursive on all control paths, function will cause runtime stack overflow
[ Parent ]

Tech books & a few others... (4.40 / 5) (#50)
by Maniac on Wed Oct 25, 2000 at 01:15:20 PM EST

From reading several of the other lists, I've tried NOT to repeat but to list books that I've used and reused over the years.

Technical Books

  • Principles of Compiler Design, Alfred V. Aho and Jeffrey D. Ullman ("the dragon book"). An excellent introduction into the problems and then current solutions to converting human readable languages into something the computer can handle.
  • Introduction to Algorithms, Thomas H Cormen, Charles E Leiserson, and Donald L Rivest. A large >1000pp explanation of algorithms used in a variety of application areas. I've used it several times as a reference in implementing part of a system.
  • Writings of the Revolution, Selected Readings in Software Engineering, Edited by Edward Yourdon. A great collection of articles - cover a good range of topics and all extremely well written.
  • The TeXbook, Donald E Knuth. I have "The Art of Computer Programming" as well, but I was always pissed off at the assembly code examples & the fact he never finished the 7 volume set. The TeXbook on the other hand is book that is made to be read at least twice and is usable as a reference in problem solving. The idea of the "dangerous bend" signs (and esoteric items marked with two of them) was great. The quality of both TeX (the program) and the book was outstanding. Both were useful & extremely robust in use.
  • The Unix System, S. R. Bourne. A relatively concise <350pp summary of Unix, AND C. Stuff described in this 1983 book still runs today. Tools described there are in use daily.
Other good books
  • Peopleware, Tom DeMarco and Timothy Lister. An excellent book that describes the good and bad of working in companies. The material on "coding war games" made it possible to improve working conditions for our staff.
  • The Mythical Man Month. Fredrick P. Brooks, Jr. I try to read this book every few years or so to make sure I'm not going down some dark path by mistake.
  • The Goal, Eliyahu M. Goldratt. A very easy to read book that describes the turnaround of a factory. Especially helpful for anyone working on a large project where removing the bottlenecks is your primary job.
  • The Psychology of Everyday Things, Donald A. Norman. Now called "The Design of Everyday Things", a good introduction into how to make systems usable. Goes into methods for how to emphasize the important features and how to hide the less used ones.

Design of Everyday Things - yes! (3.00 / 1) (#52)
by lachoy on Wed Oct 25, 2000 at 01:19:59 PM EST

Big me too on this one -- many of the ideas in the book are not revolutionary but illustrate small details which by themselves can make a huge difference. All together, they can make the world a better place :-) (The notion of an item 'affording' an action is one of these -- gets you in the mindset of thinking about things a certain way.)
M-x auto-bs-mode
[ Parent ]

RE: Tech books & a few others... (3.00 / 1) (#54)
by synaptik on Wed Oct 25, 2000 at 01:28:31 PM EST

Ah, glad to see someone else likes Introduction To Algorithms. That's the book my school is using this year, and it is awesome. I really appreciate the way the authors tell you ahead of time when they're about to be lax and take liberties with the notation. So many authors will do this unannounced, without giving second thought about how many readers they may leave stranded.

But just to be pedantic... Knuth is still alive and kicking. It's not that he never finished volumes 4 through 7; he just hasn't, yet. He chose to revise volumes 1-3, to bring them up to date. (Lame Knuth joke: his book writing algorithm has a time complexity of O(n^2)...)

warning C4717: 'WORLD3D::operator=' : recursive on all control paths, function will cause runtime stack overflow
[ Parent ]

off topic - improved working conditions (3.00 / 1) (#109)
by hyssop on Fri Oct 27, 2000 at 02:22:17 AM EST

I love Peopleware. I've been trying to use it to get my management to change the work environment. I have not yet been successful.

I'm curious what conditions you went from, and have gone to? I'm also curious what company you work for?


[ Parent ]
OT - Work conditions (none / 0) (#114)
by Maniac on Fri Oct 27, 2000 at 12:38:36 PM EST

A few examples of "before" and "after":
  • Square foot per person. When I started work I, my first desk was basically one in a row of 6, facing another desk (some one from configuration management). Perhaps 40 square feet per person. Later, in cubes, we ended up with four people per cube (about 50 square feet per person). After Peopleware, we made the argument for three people in a cube (about 65-70 square feet).
  • Telephones. I have a phone where its easy to turn off the ringer. Bliss! (until I notice three hours later that I left it off & wanted to get the calls immediately)
  • Overtime and off shift work. My current facility develops on a set of systems that is in use by the customer for two shifts, 6 days a week. Developers get 3am and similar times. I'm currently pushing to get workstations on everybody's desk and bring most of the work back to first shift.
  • Teams. I'm rereading this again to make sure I get a jelled team on a big computer upgrade effort.
  • Office Space Patterns. Again, get it set up outside the standard cube layout into something the team wants and needs. We still use the cube walls & modular components, just not in the "furniture police" layout.
These are not done in a vacuum. They don't happen without some effort. I'm at a point now where I can direct the work to be done. But I always have a good reason for making these changes. Before, it was done by influencing the people in charge. Do a good technical job & get their trust - then work on these issues.

PS: Re: Company I work for. I've worked in several places and companies, mostly DoD and NASA contracts.

[ Parent ]

Guidebooks to the view from the trenches (4.20 / 5) (#53)
by rst on Wed Oct 25, 2000 at 01:27:49 PM EST

Here are some books which, I think, help to give a new programmer some idea of how the trade is practiced in the real world. It's not comprehensive --- I'd really like to have listed something on data modelling, for instance, but haven't yet found a book on the subject that really grabs me the way these do:
  • The mythical man-month, by Fred Brooks. It's amazing how many projects still manage to fall into the pitfalls he warned against before some of his readers were born.
  • Commentary on Unix 6th edition, with source code, by John Lions. A problem with programming textbooks is that it's hard to discuss a complete, sizable, real program because the program would be as long as the book itself. Too often, depending on the topic, you get either a lot of toy examples, which can't demonstrate the issues that arise in a program of any real size, or an abstract discussion of those issues, which can't argue from examples, because they wouldn't fit. This is the first detailed exegesis I'm aware of in the literature of a program (Unix v6) which is large enough to be interesting, and still small enough to be understood. And now, you don't even have to settle for bootleg copies of somebody else's third-generation Xerox.
  • Anything by W. Richard Stevens. TCP/IP Illustrated, vol. 1 is particularly useful these days; it's kinda helpful to know how these network things actually work.
  • Programming Pearls, by Jon Bentley. I almost suggested his Writing Efficient Programs instead, for the more extensive discussion of code tuning, but I think the discussion in Pearls captures the essence of that, while putting it in context. Besides, the chapter on back-of-the-envelope estimation is priceless.
  • Building Internet Firewalls, by Zwicky, Cooper, and Chapman. If you're not thinking about security, these days, you're not thinking straight.
  • The Annotated Alice by Lewis Carroll, with annotations by Martin Gardner and the original Tenniel illustrations. The best introduction to programming --- but only because, as someone pointed out well before me, it is the best introduction to any subject at all.

-- rst

I only have one that sticks out... (2.50 / 2) (#57)
by Ndog on Wed Oct 25, 2000 at 01:56:32 PM EST

I've read so many, they're all kind of muddled. But, whether you want to learn how to do it or prevent it, Hacking Exposed is an excellent book. I have the first edition, but I noticed the second has just come out. It reads like a how-to, but there's no better way to prevent something than by knowing how to do it.

Ill take your Hacking Exposed and Raise you ... (4.00 / 1) (#74)
by neutrino on Wed Oct 25, 2000 at 06:36:11 PM EST

Ill take your Hacking Exposed and Raise you "Network Intrusion Detection: An Analyst's Handbook by Stephen Northcutt" (New Riders). I will agree with you that Hacking Exposed was one of the better "written by a hacker" books, and gives you a good introduction. The Network Intrusion Detection book is one of the best security books I have read so far. It analyses "scans" showing you how they look from a tcpdump. Very worthwhile.

Another one I am picking my way through at the moment, is "Internet Security Protocols: Protecting IP Traffic by Uyless Black" (Prentice Halls Series in Advanced Communications Technologies). Its more an introduction into security protocols. It takes you through cryptography methods, and then goes into how PPP works (+PAP and CHAP auth) and down the line to a number of chapters explaining IPSec. Looking at the table of contents it finishes off with a chapter on Mobile telecommunications and the security in their protocols. This book has enough meat in it to give the technical mind enough understanding of how things work (down to the packet level), but is a high enough level to be classed as an overview or introduction. I found its explaination of the cryptography methods one of the best I have read so far.

[ Parent ]

yes, and... (none / 0) (#80)
by marisa on Thu Oct 26, 2000 at 03:14:56 AM EST

very good indeed. but don't forget...

practical unix & internet security garfinkel/spafford

applied cryptography bruce schneier

six not-so-easy pieces richard p. feynman

"Physics is not a religion. If it were,
we'd have a much easier time raising money."
[ Parent ]

More Some (3.00 / 2) (#58)
by kvigor on Wed Oct 25, 2000 at 01:58:25 PM EST

For algorithms, it's hard to beat Sedgewick's Algorithms in <language> series (where <language> changes every year, but really doesn't matter.) No theory at all, but if you want a fast string search or a quick random number generator, this will give you an answer within minutes. Great book.

For compilers, Holub's Compiler Design in C is unfortunately out of print. A great practical introduction if you can find it, though it glosses over some of the hard parts. I expect his Compiler design in Java is similarly decent, though I haven't read it.

Also on compilers, A Retargetable C Compiler is worth reading, though flawed in odd ways.

Finally, I've always been in the Harbison & Steele camp; K&R is a classic, but H&S is for mortals. Now if only they'd write a C++ manual...

Cormen or other references are better (none / 0) (#85)
by goonie on Thu Oct 26, 2000 at 09:05:17 AM EST

Finally, I've always been in the Harbison & Steele camp; K&R is a classic, but H&S is for mortals. Now if only they'd write a C++ manual...

While I certainly agree that K&R isn't suitable for novice programmers, I don't see why it's not suitable for mortals. I certainly consider myself mortal, and I appreciate the crystal-clear language - and more to the point their ability to omit needless verbiage that wastes people's time. I can't see why anyone would ever need another C reference manual (other than the standard itself if you're implementing a compiler or something equally dependent on the very low-level details).

I'm genuinely curious - could you point out where you think K&R is too terse, unclear, or omits important detail?

[ Parent ]
Ignore title to parent (none / 0) (#86)
by goonie on Thu Oct 26, 2000 at 09:07:31 AM EST

Sorry to reply to my own post, but the title is obviously wrong. Brain fade . . . I really am all-too-mortal :)

[ Parent ]
Harbison and Steele vs. K&R (none / 0) (#122)
by gdwyer on Mon Oct 30, 2000 at 08:08:04 AM EST

I can't speak for the original e-mail because I didn't write it, but I think that K&R and H&S serve two different purposes. K&R tells you about the general design principles behind C and shows you how to write slick routines. H&S tells you the gory details about C. I use H&S as a reference book about C -- in fact, I have all four editions! It's better than any manual that I've ever gotten with a compiler.

[ Parent ]
Favorite Books (3.50 / 6) (#61)
by mattk on Wed Oct 25, 2000 at 02:30:34 PM EST

Structure and Interpretation of Computer Programming
Anybody who doesn't have a formal computer science education would do well to read this book. It's incredibly dense, and gets into things such as functional programming, algorithm design/analysis, and the science behind compilers/interpreters/virtual machines; things you may never get to do in a more practical setting. As a bonus, you learn Scheme along the way.

The Pragmatic Programmer
Excellent book, one which I highly recommend. Extremely practical advice that is usually picked up by trial and error such as writing proper comments and object oriented design. As I'm relatively new to the software development industry, some of this advice has been invaluable in that it saved me from many mistakes made by young programmers.

Code Complete
Great introduction to software engineering. Every beginning programmer should be given a copy of this book and forced to read it at gunpoint.

Compilers: Principles, Techniques and Tools
You may never write a compiler, but this book will give you a great understanding of what goes on behind the scenes. The knowledge maps over to a lot of different areas. It helped me when I needed to write a syntax highlighter.

Programming Pearls
Since I read this book, I've never looked at a difficult problem the same way. The stories are incredibly interesting, and you learn a ton of problem solving skills. The book gets into topics such as algorithm design and optimization. The gist of the book is to always look at problems from different angles. It's also quite humorous and I love the authors writing style.

Just a note.. (none / 0) (#95)
by farmgeek on Thu Oct 26, 2000 at 02:04:44 PM EST

Structure and Interpretation of Computer Programming can be read online at: http://sicp.arsdigita.org/text/sicp/.

[ Parent ]
A New Classic (3.66 / 3) (#62)
by admiyo on Wed Oct 25, 2000 at 03:00:12 PM EST

Refactoring: Improving the Design of Existing Code, By Martin Fowler, The concept is amazing, and what it allows you to do with existing code is the key to OO life-extension I have been looking for for quite some time. Key tool in Extreme programming. Honorable Mention goes to Database Desing for Smarties: Using UML for Data Modeling by Robert J Muller. Still reading it, liked it so far.

Favorite Tech books (2.00 / 1) (#63)
by granto on Wed Oct 25, 2000 at 03:28:24 PM EST

Purely Functional Data Structures by Okasaki
Probably the coolest FP book I've ever seen; it's easily the most thumbed reference book I have in my library!

The books that changed my life. (4.66 / 6) (#66)
by Mark 'Kamikaze' Hughes on Wed Oct 25, 2000 at 04:32:44 PM EST

  1. The Tao of Programming, by Geoffrey James.
  2. The Little Red Book always has something useful to say about any software development situation. "When you have learned to snatch the error code from the trap frame, it will be time for you to leave."

  3. The Tao of Objects, by Gary Entsminger.

    IMO, this is still the best introduction to OOP for non-OOP programmers. His later books are not as good as the original, but they're still quite decent.

  4. Computer Graphics: Principles and Practice, by Foley, van Dam, Feiner, and Hughes.

    All of the answers you ever wanted to your graphics-programming questions. Yes, it's very thick and very hard reading. It's still worth it. EVERYTHING is in here.

  5. Design Patterns, by Gamma, Helm, Johnson, and Vlissides.

    Don't read DP until you've been doing OOP for some years; the book won't mean anything until you recognize patterns that you've done several times yourself. Then, the light goes on and this becomes useful.

  6. The Timeless Way of Building, by Christopher Alexander.
  7. Chris Alexander's books really are applicable to software development, though you won't see how until you've read DP.

  8. Concurrent Programming in Java, by Douglas Lea.

    A design pattern-based approach to building concurrent programs. This just completely blew me away. It uses Java, but it's not really specific to Java - the principles can be applied to any multithreaded program.

  9. The Practice of Programming, by Brian W. Kernighan and Rob Pike.

    This didn't actually change my life, because it came out too late for me. But if I'd been starting programming when it came out, it would have. Give this book to all of the novice programmers you know.

  10. Extreme Programming Explained: Embrace Change, by Kent Beck.

    It's become clear that traditional software development produces crap software that doesn't meet the needs of the customer, even in the 10% of projects that actually produce any working software at all. Maybe XP isn't the only solution, but it works. Seriously, try it just for one project iteration with your team. Or adapt whatever techniques you can from it for your environment.

  11. Refactoring: Improving the Design of Existing Code, by Martin Fowler.

    How to make small, reliable changes to your code. In combination with test-first design, this makes it almost impossible to produce bugs.

  12. JavaSpaces: Principles, Patterns, and Practice, by Freeman, Hupfer, and Arnold.

    How to make an incredibly powerful distributed object system with just a handful of commands. Even if you never program with Jini/JavaSpaces, this is the best (and one of the only) explanation of the TupleSpace concept I've ever seen. On a side note, this is why I hate academics, even or especially when they come up with great ideas. This concept had been HIDDEN from us for years, because they weren't interested in making it commercial. What good is an idea that nobody knows about?!?

-- Mark Hughes
Design Patterns (3.00 / 1) (#107)
by slynkie on Fri Oct 27, 2000 at 01:43:28 AM EST

"Don't read DP until you've been doing OOP for some years; the book won't mean anything until you recognize patterns that you've done several times yourself. Then, the light goes on and this becomes useful."

I sorta disagree...I read DP a year or so ago, and it was quite enlightening. Granted, I first started coding C++ a few years before that, but I hadn't been truly using it for more than a few school projects. It may have been my general CS background, but reading DP made perfect sense to me. I would read through a pattern, think about it for a little bit, skim through it again, and suddenly smack myself on the head with an "of course!".

I think that beginner OOPers should definitely think of pickin' this one up...learning these types of things hand-in-hand with other idealogy and style can be very valuable...and of course you'll always have the book around to re-read when you do have a better understanding of OO concepts.

[ Parent ]
Second batch... (3.33 / 3) (#67)
by Swing on Wed Oct 25, 2000 at 04:36:31 PM EST

A couple more..

- Feynman's Lectures v1-3. Best exposition on physics, philosophy. Should be everyone's first year course. Also look at books by von Neumann and such people; they're actually pretty well written, as I recall.

- Art of Electronics (Horowitz, Hill). Many people swear by this electronics book. Covers many different facets of electronics, from many basic concepts, to processor design, to component pathologies....

- Database Systems : A Practical Approach to Design, Implementation and Management(Connolly, Begg). Goes into the theory of databases, the reason why things are, Codd's model of RDBMS'. As ambitious as the title.

- Linux in a Nutshell (Siever). Nice little reference on Linux, also covers quickly Perl, Emacs/Vi, etc.

- Java Developers Almanac (Chan). Relased yearly, it's the quickest ref I've seen. Far better lugging around tomes or going through a local copy of the javadocs, when you're just wondering about the order of parameters in the standard java libraries. Also has a nice summary of the packages in the beginning, with little "examplets."

ANSI Common Lisp (Graham). Talky for some, it nonetheless is an interesting little book on Lisp. There's a sequel to this book whose name I don't recall.

Many many others...

Richard P. Feynman (none / 0) (#76)
by pi on Wed Oct 25, 2000 at 07:24:41 PM EST

So you like his physics series? Did you know you can get at some of his lectures on computation? I just picked it up from Fatbrain:

Feynman Lectures on Computation Ed. Tony Hey

Like I said, I just picked it up, but the chapter on coding transmissions was pretty keen.

-- "egad, a base tone denotes a bad age!" - tmbg
[ Parent ]
Fine guy (none / 0) (#91)
by Swing on Thu Oct 26, 2000 at 11:57:45 AM EST

So you like his physics series? Did you know you can get at some of his lectures on computation?

Yes, I do like his physics series, and no I didn't know the lectures on computation were easily available, thanks. The 3-vol physics hardcover is over $100, but it can be found in paperback for about $50 for all three... Or on audio.

[ Parent ]
On Lisp (none / 0) (#129)
by hading on Tue Feb 27, 2001 at 02:11:39 PM EST

The "sequel" to ANSI Common Lisp is called On Lisp, and mainly covers the use of macros in Lisp.

[ Parent ]

I'm a bit suprised. (3.00 / 3) (#68)
by jetpack on Wed Oct 25, 2000 at 04:51:16 PM EST

I've read alot of the books mentioned so far, and agree with most of the recomendations. However I'm a bit suprised that no C++ coders have mentioned the following:

Effective C++ : 50 Specific Ways to Improve Your Programs and Designs; Scott Meyers

More Effective C++ : 35 New Ways to Improve Your Programs and Designs; Scott Meyers

C++ FAQs; Marshall Cline / Greg Lomow / Mike Girou

In particular, the first Effective C++ will probably leave you shaking in your boots unless you've done quite a bit of C++ already. However, you will avoid making alot of nasty mistakes in the future. And, if any C++ newbie decides to tell you that C++ is easy, tell them to read this book. When they are finished, assuming they haven't been rendered into a quivering mass, they will probably have changed their opinion of C++ :)

As for the FAQs: Yes, you can get it online, but last I checked, the book is fleshed out quite a bit compared to the online version, and includes extra sections that aren't online. See the sections on memory management for a bit of crazy C++.

/* The beatings will continue until morale improves */

Effective/More Effective C++... (none / 0) (#106)
by slynkie on Fri Oct 27, 2000 at 01:36:39 AM EST

Turns out you can actually get the text of both books on CD-ROM for less than the price of even 1 book...

yesyes, i know, you can't beat a good ole printed book, but some of us -are- broke college students, you know ;p

they have it at fatbrain, http://www1.fatbrain.com/asp/bookinfo/bookinfo.asp?theisbn=0201310155

[ Parent ]
My top five list... (3.75 / 4) (#69)
by chipuni on Wed Oct 25, 2000 at 05:07:37 PM EST

I'm a huge technical reader. I'm trying to include some books that I didn't otherwise see.

  1. Software Testing Techniques by Boris Beizer

    Too few programmers know about good QA techniques. Too few QA people know about good QA techniques. If you think that quality assurance means "Play with the program for a while, and if it doesn't crash, it's bug-free", then you should read this book. It's far more complete than his later book, Black-Box Testing

  2. Journey of the Software Professional by Luke Hohmann

    If you read this book, you will find 'Extreme Programming' to be boring and derivative. This book will change your world as a programmer.

  3. Pitfalls of Object-Oriented Development by Bruce F. Webster

    This book goes through conceptual, political, management, analysis and design, environment and language pitfalls, coding pitfalls, quality assurance pitfalls, and reuse pitfalls: what causes them, how to fix them, and how to prevent them.

  4. The Case of the Killer Robot by Richard G. Epstein

    A very entertaining book about computer ethics. It gets into a lot of the ethical questions that computer programmers deal with every day.

  5. Code Complete by Steve McConnell

    Yes, it appears in many other lists. And yes, it needs to be updated for object-oriented programming, Java, and a few other things. However, in my opinion, it remains required reading for -any- programmer.

Perfection is not reached when nothing more can be added, but only when nothing more can be taken away.
Wisdom for short attention spans.
My picks (4.00 / 2) (#70)
by trhurler on Wed Oct 25, 2000 at 05:24:09 PM EST

You'll see that I'm a C, Unix, security kind of guy from this list. However, I do genuinely believe that all but the most superficial techies can benefit from these books, and if you're one of those "I know Java, and that's all that exists" kind of guys, I just don't care about you:)

The C Programming Language - (K & R) Any self respecting geek who doesn't pick this one obviously hasn't read it. Not only is it THE C book, but it is the prototypical perfect language primer.

The Design and Implementation of the 4.4 BSD Operating System - (McKusick, etc) Without a thorough reading of this, you probably don't know Unix as well as you think you do. Or operating systems in general, for that matter.

Computer Networks - (by Tanenbaum) This one's on the list because most of us, even the network guys, don't know jack about networks - but Andy Tanenbaum does.

Applied Cryptography - (by Schneier) We all need to know about this subject, and this is THE book.

Lions' Commentary on UNIX 6th Edition with Source Code - (John Lions) If you can't already see why this is valuable, you probably don't need to read it, but if you can, then you damn well better go buy a copy, because there is none greater.

'God dammit, your posts make me hard.' --LilDebbie

5 Mechanical Favorites (3.00 / 2) (#72)
by Kartoffel on Wed Oct 25, 2000 at 05:39:28 PM EST

  1. Hot Air Rises and Heat Sinks: Everything You Know About Cooling Electronics is Wrong
  2. Introduction to Turbomachinery
  3. Machinery's Handbook
  4. Handbook of Heat Transfer
  5. The FreeBSD Handbook

A Few Favs (3.00 / 1) (#73)
by jck2000 on Wed Oct 25, 2000 at 06:26:40 PM EST

Stroustroup's The C++ Programming Language, both the 2nd (gray) edition and the 3rd (wave) edition. Coplien's Advanced C++ -- it will make you look at C++ in a different way, seeing both its possibilities and its limits. Don Box's Essential COM -- don't fiddle with COM much anymore, but this book is very well written and will, like the Coplien book, make you reassess C++. For those working with Windows, Shepard & Wingo's Inside MFC is an excellent under-the-hood look the world's favorite application framework.

Not the Primer? (none / 0) (#81)
by rongen on Thu Oct 26, 2000 at 05:13:55 AM EST

Wow, I am amazed that you didn't mention C++ Primer, 3rd edition (Lippman and Lajoie, 1998). Really complete, well written---it would make a great addition to the books you mentioned. Have you read this and rejected it or is it new to you (just curious). I found it a little easier to use than the Stroustrup book (3rd edition).

read/write http://www.prosebush.com
[ Parent ]

C++ Primer (none / 0) (#87)
by jck2000 on Thu Oct 26, 2000 at 09:59:48 AM EST

I have heard of it, but I was so taken with Stroustroup's approach in the Gray book (I loved my copy to death -- the binding completely fell apart and I had highlighted the majority of the text), that I didn't bother to seek out alternatives (though, as I mentioned, I bought the Wave book as soon as it came out). I still have a warm place in my heart for the Gray book, because of its nice carrying size and the illusion it gave about the finiteness of the topic. The Wave book, however, has a great deal of excellent added material on standard libraries, app frameworks, fat interfaces and event-driven programming.

[ Parent ]
Essential C++? (none / 0) (#90)
by barooo on Thu Oct 26, 2000 at 11:52:25 AM EST

I'm surprised no one has mentioned Scott Meyers's Essential C++ and its successor (or that I haven't noticed it if they did). His books have definitely helped my C++. I love Stroustrup's book (especially the 3rd/special edition, since it covers the standard), and it's essential for a C++ programmer. It didn't make my list because 1.), I wanted to limit my list to 5, and b.), it just isn't quite as good as, say K&R.

The two big flaws with Stroustrup's book are, it's very tough for newcomers to the language (but indispensable once you start to grok things), and it's just too damn big. Meyers's book is great for questions of "why" and "how", once you start to actually dig in. Stroustrup's The Design & Evolution of C++ is also good for these questions, but more "academic". Meyers may be a bit of a heretic (see the discussion of his article recommending standalone functions over member functions under certain circumstances), but his books are very good from a pragmatic standpoint.

Plus, (no offense to Scott), he looks like the sort of guy I want writing my technical books :)

[G. W. Bush makes] one long for the flashy showmanship of Calvin Coolidge, the easy eloquence of Dwight D. Eisenhower, the simple honesty of Richard Nixon.
P. M. Carpenter
[ Parent ]
urm... _Effective_ not _Essential_ (none / 0) (#92)
by barooo on Thu Oct 26, 2000 at 12:07:28 PM EST

The book is Effective C++But you knew that.

[G. W. Bush makes] one long for the flashy showmanship of Calvin Coolidge, the easy eloquence of Dwight D. Eisenhower, the simple honesty of Richard Nixon.
P. M. Carpenter
[ Parent ]
Current Faves (3.00 / 1) (#75)
by Stmpjmpr on Wed Oct 25, 2000 at 07:17:49 PM EST

These are my current faves, that I've read in the past couple of months:

Learning Java. This has been a boon for me, covering a lot of stuff without too much fluff.

Core Servlets and Java Server Pages. Great coverage of these topics. Deep enough to satisfy, yet easy enough for me as a Java beginner.

Programming Perl. This book never leaves my side. I keep a copy at home and at work. You never know when a Perl script may be needed to save the day.

Philip and Alex's Guide to Web Publishing. An excellent book on web style.

Java.. (none / 0) (#105)
by slynkie on Fri Oct 27, 2000 at 01:25:15 AM EST

When I had to learn Java, I picked up the Java 1.1 Developer's Guide by Jamie Jaworski, published by Sams. I'm not sure if they have any newer editions, but the one I have was and is great...it's awesome as a reference, as well as a great beginners book. This book, coupled with the tutorial/docs on sun's site, is all one needs, IMHO, to get a really good grasp on Java...

[ Parent ]
The essential CORBA book (2.00 / 1) (#83)
by Pachy on Thu Oct 26, 2000 at 07:58:34 AM EST

Advanced CORBA programming with C++ by Steve Vinoski and Michi Henning. Despite the "advanced" in its title it's a great book for learning CORBA.

not yet mentioned? don't forget... (3.00 / 3) (#88)
by dchud on Thu Oct 26, 2000 at 10:52:46 AM EST

  • The UNIX Philosophy by Mike Gancarz. Short, simple, and very clear on the principles that have made *nix work so well for so long. Very helpful influence on design for your own projects, too.

  • The Perl Cookbook by Christiansen & Torkington. Single most useful perl book you can own, especially if you use perl often but not every day and can never remember the syntax for this or that. It's organized perfectly to answer such questions, and this organization alone makes it more useful than man pages as it lends itself nicely toward browsing related topics.

  • Caught in the Web of Words : James A. H. Murray and the Oxford English Dictionary, by K. M. Elisabeth Murray and R. W. Burchfield. If you are actively involved in open source development, there's a chapter in the middle of this book you should not miss (not to say that the whole story isn't fascinating; many caught a glimpse by reading The Professor and the Madman, but this goes much deeper and avoids the sensational). It expounds at length on the great efforts Murray went through to commend and encourage the thousands upon thousands of readers' contributions he received, and the difficulties in maintaining the content influx and individual relationships. Especially because, as it notes, often many contributions are simply not useful. This book will hammer home a clear picture of many of the social issues you and your open source project peers face every day, teaching you a lot about this amazing project along the way.

  • Graphics (4.00 / 1) (#89)
    by ultrasoul on Thu Oct 26, 2000 at 11:01:10 AM EST

    IMHO, there is more to learn here then any other particular discipline. Graphics (and especially games) combine the most difficult aspects of operating systems (scheduling, resource contention, hardware), mathematics (diff. equations, linear algebra), and algorithms (you try making something as pretty as quake run at 30 fps). Naturally, there are tons of volumes on the subject, but my pics are:

    1) Michael Abrash's Graphics Programming Black Book (Special Edition), by Michael Abrash. Michael Abrash started writing graphics literature way back with articles in Dr. Dobb's. He helped write Quake and now is one of the leads on the X-Box project at Microsoft. This book is basically a concatenation of 3 of his other works (The Zen of Assembly Language, the Zen of Code Optimization, and the Zen of Graphics Programming) plus his articles in Dr. Dobb's and everything you want to know about the Quake engine but never dared to ask. I started graphics programming with the precursor to this book, Zen of Graphics, writing assembly and C to move bits on my VGA card. Don't think you can jump into OpenGL before getting an understanding of what its doing for you.

    2) Graphics Gems (particularly vol. 1 and 3). Once you've got a handle on things and you think you want to go write that nifty, pretty, flashy graphics app, don't pretend you know whats going on. Consult the experts. Graphics Gems is a collection of tips and secrets from different people in the industrty (game programmers, researches, SGI guys, etc) that show you how to things the fastest way possible.

    3) You won't get far in OpenGL without the ARB's (Architecture Review Board) OpenGL Reference Manual and you might like the Programming Guide.

    4) Computer Graphics: Principles and Practice. By Foley, Van Dam, et al. The Bible according to some. Whatever road you take in Graphics, you end up here. Consider it the K & R for pixels.

    There's also a nice refresher book on the math behind all of this. I have loaned it out right now, but I believe the title is, Computer Graphics: Mathematical First Steps. Don't let the title confuse you, it goes into hefty detail and (I belive) it expects the reader to have at least been through Calculus. This is a nice reference to keep by you in case you just don't happen to remember how to calculate that cross product by hand in order to find the normal of a general triangle.

    Anyone have anything to add?

    More graphics (2.00 / 1) (#94)
    by kallisti on Thu Oct 26, 2000 at 01:12:40 PM EST

    Just one:

    Real-time Rendering by Möller and Haines.

    This is an up-to-date look at almost all aspects of graphics these days. It has very informative web site as well.

    [ Parent ]

    A few more... (none / 0) (#104)
    by slynkie on Fri Oct 27, 2000 at 01:21:51 AM EST

    1) Interactive Computer Graphics with OpenGL by Edward Angel
    An interesting approach, and one of the few non-ARB OpenGL books out there for beginners...the presentation can get pretty boring though, IMHO.

    2) 3D Computer Graphics by Alan Watt
    A great book, even better that it's non-API specific. I believe it's in it's 3rd edition, which for some reason removed some good stuff that was in the 2nd edition, but nevertheless, it remains one of the few books that i didn't sell back after the class was over. Makes a good algorithm reference, as well.

    [ Parent ]
    Re: A few more... (3.00 / 1) (#108)
    by ultrasoul on Fri Oct 27, 2000 at 01:58:30 AM EST

    2) 3D Computer Graphics by Alan Watt

    How could I have forgotten this one, its on my shelf right next to Graphics Gems 1. It makes a good primer to most of the princibples, but in retrospect, after going through that book and the similar chapters in the Foley Van Dam, I find the Foley Van Dam explains it more completely and doesn't demand the reader to have any more background knowledge then the Watt book. Take geometric transformations for example; Foley takes from the ground up so it leads naturally into viewing transformations, even when they get complicated. The Watt book seemed to have made that a little more complicated, more of a big gap between the two, even as related as they should be. Maybe its just me ;)

    But good call, thanks.

    [ Parent ]
    My List (4.00 / 3) (#93)
    by ThePolack on Thu Oct 26, 2000 at 01:00:50 PM EST

    1. Knuth - I personally think that every programmer should deal with algorithms on this level at least some of the time.

    2. "The Dragon Book", Compilers: Principles, Techniques, and Tools by Aho, Sethi and Ullman - If you are serious about being a good programmer, compilers are what you need to know right after algorithms.

    3. Mastering Regular Expressions by Friedl - I increased my efficieny tenfold after reading this book. Regexes are not just for Perl progammers.

    4. Design Patterns by Gamma, Helm, Johnson, and Vlissides - A must read for anyone who uses OO seriously.

    5. "The Aluminum Book", Guy L. Steele's Common Lisp: The Language - Not particularly practical (unless you actually use Lisp at work, in which case I envy you), but it sure is a cool book.
    In the immortal words of Socrates who said, "I drank what?"
    Amen to Knuth (5.00 / 1) (#118)
    by Nelson on Sat Oct 28, 2000 at 10:41:47 AM EST

    Of my 5 Knuth currently owns 3 slots and within a year or two it will probably be 4. I just feel like a more powerful programmer with them on my shelf, it's like the roseta stone to precursor technology. Problems will themselves solved in the presence of that knowledge. Read them and reread them until you can grok it, it's really not that hard but the text does have an intimidating style to it. If you took all my books, and I have a lot, and let me pick 3 to rebuild all computer programming knowledge that the world knows it would be those 3.

    Patterns is another great one, add Pattern Hatching too. Numerical Methods is a fine book. Dragon covers more than just compilers in my mind, if you know how your compiler works it is a much more powerful tool to you, eventually everyone has to do performance work and reading the dragon book has given me knowledge that I think helps with it even though I never do compiler work anymore. There are some algorithm books that I think are helpful, despite the availability of Knuth, Algorithmics (buy it and read it, it's out there and it kind of ties the world together, awesome read) the Cormen, et al Intro to Algorithms ("big whitey") Applied Crypto and Handbook of Applied Crypto. Nelson's Data Compression Book, Psychology of Computer Programming, The Little MLer, UML distilled is a handy reference I rely on all the time, and the various LaTeX companions...

    [ Parent ]

    3 from me (3.00 / 1) (#96)
    by helge on Thu Oct 26, 2000 at 02:28:27 PM EST

    Analysis and Design of Analog Integrated Cirucits by Paul R. Gray and Robert G. Meyer. I have the 2nd edition from 1984, but there is a 3rd one also. The standard text book in its field.

    Metamagical Themas by Douglas Hofstadter.

    Searching for Certainty: What scientists can know about the future, by John L. Casti. Very different subjects such as war, weather, arithmetic and the shaping of animals gets related i a wonderful way.

    5 Fave "geek" books (4.00 / 2) (#103)
    by Miniluv on Thu Oct 26, 2000 at 10:25:52 PM EST

    1) Einstein - In His Own Words I loved this book, it's actually two of his works concatenated into one little book. It's cheap, it's Einstein, and it's just worth reading.

    2)Programming Perl This is how technical documents SHOULD be written, built on the great tradition of Unix humor and insightfulness. Despite the authors of the 3rd edition recommending a different book for "learning" perl, this is the book I hand everybody.

    3)Bruce Schnier - Applied Cryptography The man is brilliant, his work is amazing, and he can explain it really really well. Crypto is becoming part of everything we do...gotta read about it before it's too late.

    4)Nemeth, Snyder, Seebass, Hein - Unix System Admin Handbook The "Red Book" of sysadmin'ing. I know it's now in the third edition and is purple this time, but the red book is still my favorite. Nicely divided into "Bsd does this, SystemV does this, and Solaris does this other thing" on almost every topic.

    5 is a two way tie on non-tech books:Bill Gates - The Road Ahead and Bruce Schneier - Secrets and Lies Say what you will about Bill G's business habits, but he has a definite vision for technology, and it's one a lot of people are going to be following. Besides, he gets to go a lot of places we can't and see what's being done just because he's Mr. Gates. Schneier went in a not overly technical direction with Secrets and Lies, and it's perfect for loaning to management when they can't quite clue in WHY they need to pay a bit more to get a secure solution.
    "Its like someone opened my mouth and stuck a fistful of herbs in it." - Tamio Kageyama, Iron Chef 'Battle Eggplant'

    For more fun... (none / 0) (#116)
    by duffbeer on Fri Oct 27, 2000 at 06:36:13 PM EST

    Read the First and second editions of The Road Ahead, and notice how Bill 'revised' his view of the future.

    [ Parent ]
    Two More (4.00 / 2) (#111)
    by malcohol on Fri Oct 27, 2000 at 08:00:41 AM EST

    Two great books not on anyone else's list are:
    • Object Oriented Software Construction, second edition by Betrand Meyer. This book carefully presents the OO-paradigm of software development concept by concept. It does this without direct reference to any real world language. Instead it builds up an idealised language which embodies the best features of OO. In fact the language being presented is Eiffel, but this is only mentioned at the very end. This IS a biased book, but Meyer argues his position intelligently. If you disagree with his position, there's a lot to be gained by asking yourself why you disagree. If you can if you can stomach the OO-evangelism I highly recommend this book.
    • The Little Schemer It's been a while since I read this, but it really did change the way I thought about programming. It teaches a functional style to coding (even if scheme isn't a pure functional language) and does it in an interactive and challenging way. The way this book conveys its message is interesting in itself.

    My favoites (2.00 / 1) (#113)
    by ppetrakis on Fri Oct 27, 2000 at 11:58:05 AM EST

    - Programming Abstractions in C : A Second Course in Computer Science; Roberts, Eric S.

    - ThreadTime : The Multithreaded Programming Guide
    By Norton, Scott J. / DePasquale, Mark D.

    - Objekt-orientierte Programmierung mit ANSI-C
    1994, Hanser, Munic

    download the pdf of the book (free) , in english

    - O'Reilly's X windows bookshelf volumes 0-2 , 4-6B

    - Digital's Programmer's bookshelf (all free download HTML, PDF)



    Peter Petrakis Warrior/Engineer ppetrakis@alphalinux.org
    "Oh my God! They killed Xena! You bastards!!"
    "<BLAM!!> Who the hell are you!? Name's Ash <click clock> Housewares..."

    my favs (3.00 / 1) (#115)
    by mx on Fri Oct 27, 2000 at 03:12:00 PM EST

    • "The C++ Programming Language" && "The Design & Evolution of C++" - Stroustrup. The toras for the c++ programming language ... my staple development environment.
    • "Rapid Application Development" - Steve McConnell. Process described by example. I may not follow the stiffest of processes, but knowing how process has worked for other devs helps me decide what to use when.
    • "The pragmatic programmer" - Hunt/Thomas. Uber process described by example. Not 100%, but some good stuff here.
    • "Large Scale C++ Software Design" - Lakos. What to comprimise where to make large scale design and implementations actually work. Info that only comes from failure, in this case not mine.
    • "Software Runaways" - Robert L. Glass. Stories of software development to make you tear your fingernails out. What not to do. Seems to motivate me somehow.
    • "The UNIX Philosophy" - Gancarz. Put into words what I knew to be true, and what the Mac/MS world could do to make things better.

    - mx
    The Camel Book! (3.00 / 1) (#119)
    by DJBongHit on Sat Oct 28, 2000 at 07:26:21 PM EST

    Best programming book ever: "Programming Perl." "The Perl Cookbook" is pretty damn good too. Also "Inside 3D Studio MAX 3" for a non-programming technical book.


    GNU GPL: Free as in herpes.

    Recommendations from Jamie Zawinski and others (1.00 / 1) (#120)
    by Enthrad on Sun Oct 29, 2000 at 02:47:22 AM EST

    MozillaZine has a list of recommendations from some Mozilla people...

    My 5 (2.00 / 1) (#121)
    by pwhysall on Sun Oct 29, 2000 at 07:25:00 PM EST

    1. Tanenbaum, Computer Networks
    2. Deitel, Operating Systems
    3. The Camel Book
    4. The Llama Book
    5. Ahituv & Neumann, Principles of Information Systems For Management

    K5 Editors
    I'm going to wager that the story keeps getting dumped because it is a steaming pile of badly formatted fool-meme.
    a few i didn't see right away and was suppried (2.00 / 1) (#124)
    by yugami on Mon Oct 30, 2000 at 01:48:39 PM EST

    anything by Stevens.

    Advanced programming in the unix environment

    Unix Network Programming (VI and II, or the original)

    TCP/IP illustrated(vol I?)

    good conceptual book for CORBA is Inside Corba, and depending on taste, Learning the vi editor, or Using Gnu Emacs.

    Personal Favorites (3.00 / 1) (#126)
    by jfpoole on Wed Nov 01, 2000 at 03:24:17 PM EST

    Here's a list of books I've found either exceptionally useful or influential over the years:
    • The C++ Programming Language. I'm not as fond of working in C++ as I once was, but this is by far the best book I've seen on the subject. Some complain that it's inaccessible, but I've found it's perfect for my needs.
    • Large-Scale C++ Software Design. Great book that covers some of the more "mundane" aspects of working on a large software project using C++. It's rather dense and at times hard to read, but the information is invaluable.
    • Programming Python and Programming Python on Win32. Both are invaluable texts if you're working with Python (especially the second if you're working on one of the various Win32 platforms). I'm not as thrilled with the style found in both when compared to TC++PL, but that doesn't discount their usefulness.
    • The Inmates are Running the Asylum. A great book detailing the various reasons why software is as hard to use as it is, and what we should do to change it. A must-read if you're working on software that appeals to a large audience.

    As always, my two cents

    Did someone say RFCs? (3.00 / 1) (#127)
    by J'raxis on Thu Nov 02, 2000 at 10:36:32 AM EST

    I noticed RFCs mentioned in the post; so I thought I'd contribute the ones I review most often:

    • RFC2616 - HTTP/1.1 protocol. The listing of status codes is especially helpful as it desribes when each one should and should not be used, how browsers should respond, etc. I also find the information about controlling web caches quite helpful (most of my site is PHP dynamic content).
    • RFC1459 - IRC protocol. Where I spend most of my time, so it helps to know the internals.
    • RFC822 - Email standards (so old it refers to email as "ARPA text messages" ;). Like HTTP, I've used this one a lot for status-code information and reading arcane header lines.
    -- The Raxis

    [ J’raxis·Com | Liberty in your lifetime ]

    Greenspun writes well, but isn't right. (none / 0) (#130)
    by Will Sargent on Sun Mar 04, 2001 at 04:53:28 PM EST

    Greenspun was a great resource for removing some of the hype from web development, but unfortunately he replaced it with his own.

    To summarize: Oracle + Tcl + AOLServer is not a replacement for an application server. And the problem isn't a matter of PHYSICAL scalability -- if you can run Slashdot on a couple of perl scripts and some outsized hardware, you can run a simple enough web application on anything. If you've seen the box that his web site resides on, you realize how much he's hedging his bets.

    ArsTech capitalizes on this as much as it can, because most sites don't need anything really complicated. But trying to run big, complicated sites on Tcl scripts is just as dumb as trying to write a transaction processing system in Perl. It's a matter of language scalability (and interaction between designers, developers and business managers, but let's not get into that).

    Because he does write so much, readers assume he's famous and his opinions are strongly considered and respected. You are probably much better off in choosing Apache and a good template language (with business logic encapsulation if possible) like PHP, JSP or WebObjects rather than following his advice.
    I'm pickle. I'm stealing your pregnant.

    Top 5 Tech Books: Share your Favorites | 130 comments (122 topical, 8 editorial, 0 hidden)
    Display: Sort:


    All trademarks and copyrights on this page are owned by their respective companies. The Rest © 2000 - Present Kuro5hin.org Inc.
    See our legalese page for copyright policies. Please also read our Privacy Policy.
    Kuro5hin.org is powered by Free Software, including Apache, Perl, and Linux, The Scoop Engine that runs this site is freely available, under the terms of the GPL.
    Need some help? Email help@kuro5hin.org.
    My heart's the long stairs.

    Powered by Scoop create account | help/FAQ | mission | links | search | IRC | YOU choose the stories!