Slashdot Mirror


What Is the Most Influential Programming Book?

First time accepted submitter AlexDomo writes "If you could go back in time and tell yourself to read a specific book at the beginning of your career as a developer, which book would it be? Since it was first posed back in 2008, this question has now become the second most popular question of all time on StackOverflow. The top 5 results are: Code Complete (2nd Edition), The Pragmatic Programmer: From Journeyman to Master, Structure and Interpretation of Computer Programs, The C Programming Language, and Introduction to Algorithms."

624 comments

  1. Deitel & Deitel by bigjocker · · Score: 3, Insightful

    'nuff said

    --
    Life isn't like a box of chocolates. It's more like a jar of jalapenos. What you do today, might burn your ass tomorrow.
    1. Re:Deitel & Deitel by Jeremiah+Cornelius · · Score: 2, Interesting

      Charles Petzold.

      Programming Windows, First Edition
      http://www.charlespetzold.com/pw5/ProgWinEditions.html

      Sad. But TRUE!

      --
      "Flyin' in just a sweet place,
      Never been known to fail..."
    2. Re:Deitel & Deitel by tha_mink · · Score: 1

      Oooof. That hurts. That's

      --
      You'll have that sometimes...
    3. Re:Deitel & Deitel by luis_a_espinal · · Score: 1

      Actually, that was a really good systems programming book, in style and content during the Win95 era.

    4. Re:Deitel & Deitel by lsolano · · Score: 2

      Absolutely.

      I'm not a programmer full time (not even part time :) ) but once, many years ago, I had to learn by myself how to program C, and I've got "C: How to program" and for me, it is the best book on programming I've ever read.

      They way it teaches it just excellent. I do not mean the way it teaches C, I mean, the way it teaches how to program, what a programming language is, etc.

    5. Re:Deitel & Deitel by Anonymous Coward · · Score: 1

      The problem is that the title of this thread asks one question, which you supplied a very reasonable answer for, but then the summary asks a completely different one. FAIL for submitter/editor.

      Nobody in their right mind would say, in 2011, that they wished the first thing they had ever read was Petzold's book on 16-bit real mode Windows programming.

    6. Re:Deitel & Deitel by Anonymous Coward · · Score: 0

      D. Bug and Ms. Kito?

    7. Re:Deitel & Deitel by Anonymous Coward · · Score: 0

      C++ for U++ ;)

    8. Re:Deitel & Deitel by Pseudonym · · Score: 2

      The first edition predates Win95 by... a lot. I remember reading it in 1988.

      Petzold's problem is also its strength: It teaches the Windows API extremely well, but requires that you already be a good programmer with good taste, otherwise all the API isn't all you'll learn. You'll also learn a lot of bad habits.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    9. Re:Deitel & Deitel by KingMotley · · Score: 1

      Microsoft's 80386/80486 Programming Guide by Ross P. Nelson.

    10. Re:Deitel & Deitel by IWannaBeAnAC · · Score: 1

      Yeah, that was a very good book. Back in the days when it was possible to more-or-less understand exactly what was going on inside the CPU...

    11. Re:Deitel & Deitel by TheLink · · Score: 1

      Well the first books I read on programming when I was a 7+ year old kid were the very good Apple II manuals:
      Apple II Reference Manual
      The Applesoft Tutorial
      Applesoft II Basic Programming Manual
      (See: http://www.classiccmp.org/cini/systems.htm )
      I have no regrets reading and even studying them. Learnt a lot: BASIC programming, 6502 machine code (and programming), hardware, I/O. Unfortunately the reference manual didn't provide the cycle timings of the 6502 instructions so I had to figure them out via trial and error. The cycle timing is important for stuff like sound and disk I/O (Apple II disk I/O and control is done mainly in software). By the time I was 8 years old I was modifying games to add features, and later modifying prontodos to try to make disks harder to copy, and disk muncher to copy copy-protected disks more easily ;).

      The other programming book I had no regrets reading was "Learning Perl" (the Llama book).

      --
  2. SAM I AM by Hsien-Ko · · Score: 1

    Sam Publishing's Teach Yourself C++ In 21 days was a teenage "favorite" of mine.

    1. Re:SAM I AM by tixxit · · Score: 1

      That was my first programming book, so it has a special place on my shelf. However, I don't have the heart to try and reread it now, "just in case".

    2. Re:SAM I AM by FutureDomain · · Score: 1

      Sam Publishing's Teach Yourself C++ In 21 days was a teenage "favorite" of mine.

      Seconded. The old version targeting Turbo C++ taught me how OOP works, and did a good job at it too, although it took me another book to finally grasp pointers.

      The top of my list is Operating Systems: A Design Oriented Approach by Charles Crowley. It got me very interested in how the hardware works, but it also taught me fundamental design techniques that I use to this day.

      --
      Hydraulic pizza oven!! Guided missile! Herring sandwich! Styrofoam! Jayne Mansfield! Aluminum siding! Borax!
    3. Re:SAM I AM by AwesomeMcgee · · Score: 1

      3rd, this was the best next step after the KnR when I was a teenager. Though anyone saying the KnR isn't good for a beginner is a nutjob, the strunk 'n white style writing- direct and to the point, gives a foundation for all programming in so clear and concise a manner, you'd be nuts to call it difficult.

  3. Bah! Pretenders! by leftover · · Score: 5, Informative

    Everyone knows it: Knuth's "The Art of Computer Programming"

    Now get off my lawn!

    --
    Bent, folded, spindled, and mutilated.
  4. My two cents.. by Anonymous Coward · · Score: 0

    My top 2: Numerical recipes in 'C', Press et al, and Discrete Mathematics, Dieker and Voxman.

    1. Re:My two cents.. by Doc+Ruby · · Score: 1

      More influential is CJ Date's An Introduction to Database Systems. Many C and other structured programs have used numerical recipes or inspiration from NRiC, but all database systems written or revised since 1977 are directly (and indirectly) influenced by aItDS.

      Though the most influential programming book overall is K&R.

      --

      --
      make install -not war

    2. Re:My two cents.. by 1729 · · Score: 1

      My top 2: Numerical recipes in 'C', ...

      Yep, that's an excellent example of how NOT to write numerical computations.

    3. Re:My two cents.. by craw · · Score: 1

      Kiddie!:-) Numerical Recipes should be in FORTRAN, the language of scientists and engineers!

    4. Re:My two cents.. by ChrisMaple · · Score: 1

      Numerical Recipes has problems, such as changing coefficients from the standard form in order to meet specified accuracy in the fewest terms, and not telling the reader about it. There's lots of stuff for people who need "good enough" results that work most of the time, but there are lots of pitfalls to catch the unwary.

      --
      Contribute to civilization: ari.aynrand.org/donate
  5. Visual Basic for dumbies by Anonymous Coward · · Score: 0

    There i said it.

    1. Re:Visual Basic for dumbies by Anonymous Coward · · Score: 0

      You spelled 'dummies' wrong, so now I have to wonder if you really meant that.

    2. Re:Visual Basic for dumbies by Doc+Ruby · · Score: 0

      You misspelled "dummies", dummy. You said it, all right.

      --

      --
      make install -not war

    3. Re:Visual Basic for dumbies by Anonymous Coward · · Score: 0

      Moderated insightful for the pun.
      (the translation: "VB is for dumbies" - a dummy may evolve)

    4. Re:Visual Basic for dumbies by Cable · · Score: 1

      Visual Basic for Gumby/Gumbies?

  6. Re:Bah! Pretenders! by Chaosrains · · Score: 0

    If only I had mod points...

  7. The C programming language by drodal · · Score: 4, Insightful

    by  k and r

    1. Re:The C programming language by swinefc · · Score: 2

      First edition, K&R. None of this ANSI standard stuff.

      http://en.wikipedia.org/wiki/The_C_Programming_Language

    2. Re:The C programming language by mikewas · · Score: 2

      Some of us keep both the Old Testament & the New Testament on our desks

      --

      "Glory is fleeting, but obscurity is forever." --Napoleon Bonaparte
    3. Re:The C programming language by interval1066 · · Score: 0

      Which does nothing to further your mastery of coding.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    4. Re:The C programming language by sbraab · · Score: 2

      I prefer to think of them as the King James and New International Version. Sometimes, though, you have to go back to the original TeX manuscripts and do your own rendering.

    5. Re:The C programming language by jomcty · · Score: 1

      Amen brother. Amen.

    6. Re:The C programming language by Anonymous Coward · · Score: 0

      They were typeset using Troff.

    7. Re:The C programming language by tverbeek · · Score: 1

      If the second edition of Kernighan & Ritchie was published in 1988, I must have read the first, because it was one of the texts for my mid-80s CS degree. I still have it around here somewhere. For better or worse, I didn't change my life much, as I never went into programming as a career. Seems like a missed opportunity. One of far too many.

      --
      http://alternatives.rzero.com/
    8. Re:The C programming language by Anonymous Coward · · Score: 0

      Which does nothing to further your mastery of coding.

      Au contraire! It's all about the code, you get nowhere by taking them literally. ;)

    9. Re:The C programming language by Dails · · Score: 1

      Could this be one of those literary devices where they say one thing but are actually talking about another?!

    10. Re:The C programming language by Z00L00K · · Score: 1

      The good thing with it is that it's valid regardless of computer platform.

      A lot of other books on the market are old already when they hit the shelves, but the first print of The C Programming Language is still very useful and valid.

      Just be aware that all programming languages and operating systems evolve, even C. However C has not had much change since the 70's compared to other languages out there which means that you can read and compile C code for a 70's computer on a modern machine and make it work with very little effort - much thanks to K&R.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    11. Re:The C programming language by fahrbot-bot · · Score: 1

      Although, some programmers do seem to rely heavily on prayer to get things right...

      --
      It must have been something you assimilated. . . .
    12. Re:The C programming language by Anonymous Coward · · Score: 0

      Ha! First time I read it was when it was a chapter in the Unix manual.

    13. Re:The C programming language by alex67500 · · Score: 1

      I was about to say the same. K&R, first and ANSI edition.

      No point being so -pedantic about ANSI ;-)

    14. Re:The C programming language by Anonymous Coward · · Score: 0

      I guess you didn't read the part where the authors mention that they used troff, not TeX, to typeset the book.

    15. Re:The C programming language by AwesomeMcgee · · Score: 1

      There are two reasons the KnR is THE programming bible the way I figure it

      The functionality it explains about how to instruct a computer, in a way that makes it clear what the computer is *actually* doing without going to ASM, transcends languages. In a very short read you can come away understanding: strings are actually character arrays, which are actually just bytes with a particular set of values, and you have to allocate memory for things real time and release it or else memory leaks. Find any modern day programmer who hasn't read the KnR and ask them to lay a string out in memory on a white board and they would probably stare at you blankly. I can't count the times I've heard people talking about memory leaks but not able to explain how it actually happens.

      Also, it's writing is so direct and to the point, concise, a complete exercise in Strunk 'n White style writing, that makes these concepts easy for anyone. It was my first when I was 11, as will it be my son's first.

    16. Re:The C programming language by Lisandro · · Score: 1

      Ditto. Fantastic book.

    17. Re:The C programming language by mikael · · Score: 1

      The original book had white cover with blue text. The second edition actually had color text inside.

      Was worthwhile learning back then in the era of ADT's (Abstract Data Types) or inside-out classes, and X-windows/Motif or Windows 3.1

      Superceded by C++ classes and MFC in the 1990's, which were in turn superceded with STL, then design patterns. Which were in turn superceded with Java and C#

      You just learn a programming language and GUI system for it to be replaced five years later.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    18. Re:The C programming language by kgeiger · · Score: 1

      ...and coupled with Kernighan and Pike's The Practice of Programming .

      --
      Vision with execution is hallucination.
    19. Re:The C programming language by damian2k · · Score: 1

      The fact that C is still 2nd in language popularity (according to TIOBE) and is possibly the most dominant language used in embedded (firmware) development says something about its simple yet powerful design. This book was the genesis of that.

  8. The One Book All Coders Should Read by SpinningAround · · Score: 5, Insightful

    Is Fred Brook's "The Mythical Man-Month".

    1. Re:The One Book All Coders Should Read by Anonymous Coward · · Score: 0

      The One Book All Coders Should Read

      You can't be a Good Coder (TM) unless you've read the books I have read!

    2. Re:The One Book All Coders Should Read by sizzzzlerz · · Score: 2

      I thought about this one as well but I decided not to post because TMMM is really about program management, not programming, per se. Still, it is a fabulous book that every engineer and manager should read, study, and practice.

    3. Re:The One Book All Coders Should Read by vux984 · · Score: 1

      I've read it. It was also in the top 10 in the full article.

    4. Re:The One Book All Coders Should Read by digitig · · Score: 3, Insightful

      That's the one I was going to suggest. Programming is about more than coding, and TMMM covers a lot of the stuff that a lot of programmers seem to lack.

      --
      Quidnam Latine loqui modo coepi?
    5. Re:The One Book All Coders Should Read by ed1park · · Score: 1

      Mod parent up. Maybe not the most influential, but it should damn well be one of the most. Especially useful as it is language agnostic, and the lessons learned are timeless.

      I also loved the succinct density of "Computer Science: An Overview" by Brookshear. Best way to learn computer science in a single book.

      http://www.amazon.com/Computer-Science-Overview-Glenn-Brookshear/dp/0132569035/ref=sr_1_1?ie=UTF8&qid=1315187835&sr=8-1

    6. Re:The One Book All Coders Should Read by uncqual · · Score: 1

      At the risk of being modded off-topic...

      If the scope is extended to program and project management, every director and exec on the product or development side must read Fumbling the Future (a.k.a. "how to screw up a wet dream" or "how to snatch defeat from the jaws of victory").

      --
      Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
    7. Re:The One Book All Coders Should Read by Anonymous Coward · · Score: 0

      This is a good book to read once you are a good programmer and need some help with full application development. I don't think this is a good start point for a developer.

    8. Re:The One Book All Coders Should Read by Anonymous Coward · · Score: 0

      In the same vein: "Computer power and human reason" (1976) by Joseph Weizenbaum (the programmer of ELIZA, the original chatterbot).

    9. Re:The One Book All Coders Should Read by bug1 · · Score: 1

      I liked his most recent book, "the design of design".

      There is no point trying to program if you dont know a little bit of design, read this book and you know a bit more.

    10. Re:The One Book All Coders Should Read by Anonymous Coward · · Score: 0

      More like what all *managers* should read.

    11. Re:The One Book All Coders Should Read by Anonymous Coward · · Score: 0

      Absolutely %100 correct K & R a classic. Most computer books are junk. Their examples are junk. The K&r book examples are the starting point of many of the staples of unix and hence linux.

    12. Re:The One Book All Coders Should Read by Cederic · · Score: 1

      How does "The Magic Faraway Tree" help become a Good Coder[tm]?
       

  9. Apple ][ by Anonymous Coward · · Score: 0

    My first programming book was actually Assembly Lines: The Book by Roger Wagner. I had taught myself Apple Basic but my code was too slow. So I got this book and learned my first assembly programming (8-bit 6502). It had a major influence.

  10. Gang of Four by intellitech · · Score: 2

    Great book on design patterns, Design Patterns: Elements of Reusable Object-Oriented Software.

    There's also this ruby-flavored version, and since I've been on a ruby kick for quite some time now, I devoured it within a couple of days. It's called Design Patterns in Ruby.

    Hope somebody hasn't heard of these, they'll get a damn good read (or, two, if you take on both). Although for the majority of Slashdot, I'd be really surprised if this recommendation doesn't come from a million people. The original GoF made it around quite a bit.

    --
    vos nescitis quicquam, nec cogitatis quia expedit nobis ut unus moriatur homo pro populo et non tota gens pereat.
    1. Re:Gang of Four by BitterOak · · Score: 1

      Great book on design patterns, Design Patterns: Elements of Reusable Object-Oriented Software.

      I was going to mention Design Patterns too, but you beat me to it. I second the vote. Along with The C Programming Language and Advanced Programming in the UNIX Environment one of the best programming books I've ever read.

      --
      If I can be modded down for being a troll, can I be modded up for being an orc, or a balrog?
    2. Re:Gang of Four by tha_mink · · Score: 1

      Yeah, this book changed my career. I think it's by far the best book in my software design collection. I've read it > 5 times, and I still pull it out from time to time and read a chapter or two.

      --
      You'll have that sometimes...
    3. Re:Gang of Four by syousef · · Score: 4, Insightful

      Great book on design patterns, Design Patterns: Elements of Reusable Object-Oriented Software.

      That book may be considered a classic but is one of the poorest presentations of material I've ever seen to recommend to a beginner. It works better as a reference but even then thinking in those terms has a tendency to make you over engineer every damn thing unless you actively apply the KISS principle. A lot of the patterns covered are best shown to newbies with concrete examples rather than in generic theoretical form.

      --
      These posts express my own personal views, not those of my employer
    4. Re:Gang of Four by TheRaven64 · · Score: 4, Interesting

      The Gang of Four's book may be the most influential programming book, but it's probably done more harm than good. The patterns it describes fall into two categories: so painfully obvious that any programmer with more than a couple of months of experience should have invented them independently, or so obscure that you'll probably never find a real use for them. Unfortunately, once people have read it, they end up designing insanely overcomplicated systems that abuse patterns to death.

      If you really want to understand design patterns, read some of Christopher Alexander's work, not the third-rate derivatives.

      --
      I am TheRaven on Soylent News
    5. Re:Gang of Four by angel'o'sphere · · Score: 1

      For some strange reason I never saw one RL example of overengineering regarding the GOF patterns.
      Also I doubt that Alexanders work is helpfull for a programmer per se. However it is entertaining.
      What me really wonders about your comment: with how many years would you condsider one an experienced programmer? I rarely found anyone programming longer than 5 years who indeed had "invented/discovered" one of the "obvious" patterns. BTW: which of them do you find obvious? And which of them do you find obscure and without real use?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:Gang of Four by De+Lemming · · Score: 2

      That book may be considered a classic but is one of the poorest presentations of material I've ever seen to recommend to a beginner. It works better as a reference but even then thinking in those terms has a tendency to make you over engineer every damn thing unless you actively apply the KISS principle. A lot of the patterns covered are best shown to newbies with concrete examples rather than in generic theoretical form.

      That's why I always recommend Head First Design Patterns (O'Reilly) to everyone. It has a great practical approach to teaching patterns, e.g. by starting with real world bad code, showing what's wrong with it, and then refactoring to a design pattern.

    7. Re:Gang of Four by jgrahn · · Score: 1

      Yeah, this book changed my career.

      Mine too. I've spent many man-months cleaning up after people who read it. In one instance, after someone who's credited in the bloody book itself!

      Ok, maybe design patterns are a good thing in some places. But they also inspired a yet another generation of masturbators to hide their single-purpose code in a sticky mess or generality. My vote goes to Brooks.

    8. Re:Gang of Four by Cederic · · Score: 1

      Erm. Stuff like Singleton, Facade and Adapter are pretty obvious, but anybody programming in an OO language for more than a few days will "invent/discover" Decorator all for themselves.

      Other patterns are less obvious - variations on less generally useful (but still ideal in the correct circumstances) patterns such as Flyweight or Command will generally be implemented, and variations on a theme for most of the patterns will occur in almost any OO code.

      The GoF book primarily gives you a language for describing them, and a reference approach for implementing them. This doesn't necessarily change your code much (if at all) but does make it much easier for other people to understand and maintain.

      E.g. JUnit was released with a simple description of how it was constructed by just drawing attention to the patterns used. It was pair programmed, so there was no upfront design saying "Use this pattern here" (although those words might be been used during the pair sessions) but in subsequently describing the code structure to an audience the pattern language proved extremely useful.

      Obscure ones.. well, I've never needed 'Bridge' or 'State'. I guess I address such problems using other approaches (and patterns).

      Re: Alexander's work, he does explain the need and role of a pattern language beautifully, but A Timeless Way of Building went far beyond that and I'd recommend it to anybody doing design (which includes all good programmers) for its philosophy.

    9. Re:Gang of Four by angel'o'sphere · · Score: 1

      Well,
      I have to say I did not invent/discover any of the GoF patterns during my adept hood. However they where present in the code I was working with. So it was naturally to 'adopt' them.
      At that time I never found/met anyone who used a design pattern by 'deciding' to use it. Either they used it intuitively or not at all.
      Regarding decorator, sorry, I only once or twice used that pattern. So how should I have come to the point to "discover" it my own?
      Perhaps you should change that "days" in your first sentence to "decades"?
      The last shock I had was when I got a hot fix from a well known software vendor for trading systems. A Java file containing a singel method about 3k LOC long. Hot fix means: there was a bug in this file, it got fixed and deployed outside of the usual maintenance cycle. (In other words that method always had 3kLOC, they only fixed a bug in the middle). Needless to say: there was obviously no OO at all involved.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    10. Re:Gang of Four by White+Flame · · Score: 3, Insightful

      I agree that most seasoned programmers have already used most of the design patterns themselves. The value of the book is to give names to those patterns, to aid in communicating design and intent within a team of programmers. The very act of labeling gives these things a concrete boundary instead of just nebulous knowledge mixed in inside programmers' heads. The boundaries established also allow analyzing the scope and robustness of the patterns in isolation.

    11. Re:Gang of Four by Cederic · · Score: 1

      Thing is, patterns are reusable because they solve commonly encountered problems. It shouldn't be a suprise that many people adopt a similar - or identical - approach to solvig such problems.

      A 3k LoC method may be in Java but isn't relevant to a patterns discussion. I fear several of the other books discussed here would be more initially useful to that coder.

    12. Re:Gang of Four by angel'o'sphere · · Score: 1

      You are right, I only wanted to point out that the number of programmers who can not program at all (except for delievering *somehow* code that *somehow* more or less does what is asked for) is very very high.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  11. Software Tools by Kernighan and Plauger, 1976 by Doctor-R · · Score: 2

    This book shows how to build software tools to bootstrap from a crummy environment (FORTRAN on IBM 370) to a much more productive environment. Stop whining, get coding, build tools. Expounds on tool pipelines based on Unix pipes. .

    1. Re:Software Tools by Kernighan and Plauger, 1976 by damian2k · · Score: 1

      The over-obsession with building tools and/or code generators is one of the historical things that stops programmers from being productive ... i.e. actually delivering production software. I think this book would be a little less relevant now, given the frameworks/libraries and generally good development tools available off the shelf (e.g. visual studio, etc.)

  12. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    Calculus Made Easy by Silvanus P. Thompson.

  13. The correct order by Mensa+Babe · · Score: 5, Interesting

    The correct order should be:

    1. Structure and Interpretation of Computer Programs by H.Abelson and G.Sussman with J.Sussman
    2. Structure and Interpretation of Classical Mechanics (sic!) by G.Sussman and J.Wisdom with M.Mayer
    3. Operating Systems Design and Implementation by A.Tanenbaum and A.Woodhull
    4. Modern Operating Systems by A.Tanenbaum
    5. The Art of Computer Programming Volume 1 by D.Knuth
    6. The Art of Computer Programming Volume 2 by D.Knuth
    7. The Art of Computer Programming Volume 3 by D.Knuth
    8. The Art of Computer Programming Volume 4 by D.Knuth

    I am sure that The Art of Computer Programming Volume 5 by D.Knuth will be next on the list. I have seriously been counting the years to the estimated 2020.

    I only regret that Gerry Sussman hasn't written more books and hasn't recorded more talks. I will buy everything he writes and I will listen to everything he says. Please, Gerry! If you read this then please drop everything you do and just start talking to the camera. I have watched your every talk and lecture that I could possibly find on the Internet many times - from the 1986 lectures at MIT to your lecture on mechanical watches. I seriously believe that everything you say should be recorded for future generations. I don't know anyone else who can talk about anything at all and I listen breathlessly like I was hypnotized. I'm sure that many people here could say the same. Let this be an open letter to Gerald Jay Sussman: Please write more books and please record more lectures for the sake of the future of computer science. And thank you for your outstanding contribution that you have made so far. It is something that has shaped literally generations of passionate enthusiasts of programming. Thank you.

    --
    Karma: Positive (probably because of superiour intellect)
    1. Re:The correct order by Anonymous Coward · · Score: 0

      Not bad for a Mensa babe.

    2. Re:The correct order by SuperKendall · · Score: 2

      It's a good list but I feel like you shouldn't have operating system design over TAOCP, most programmers are operating at a level of abstraction these days over the base operating system in a way that makes that knowledge less valuable.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:The correct order by Anonymous Coward · · Score: 0

      This list is absolute right and properly ordered... High five! :)

    4. Re:The correct order by fermion · · Score: 2
      This list is large on theory and short on trade craft, like the list presented in the article is short on theory and not so long on trade craft.

      For instance, the Pragmatic Programmer has some interesting topic, and has been promoted to death, but I found The Practice of Programming to be much more instructive. It might be because of Brian Kernighan, or my belief that Addison-Wesley puts out the most rigorous computer books(O'Reilly is quick and dirty), but I found it a much more compelling read.

      Code Complete is a very important book in terms of trade craft, and was written at a time when MS was writing credible code. I, However, consider it part of a trilogy that includes Writing Solid Code. I can't remember the third MS book, but do recall the three giving me a very good idea of current programming principles when I got back into programming several years ago.

      The C book is a good example of how to document a language and how to write a simple and effective language. However, the C++ book provides much more theory and design using a modern language. If one's interest is deep language, The C++ Programming Language: Special Edition is a hard book to beat.

      For theory, a book that I seldom see recommended, but is deeply important as at least some programming is procedural, is Composite/Structural programming. Most mistakes still seem to come from the lack of segration between data and rules.

      Also, given how basic TCP/IP, I am often concerned that book like TCP/IP Illustrated is not more widely cited. While other books may provide an overview, this is one books that has allowed me to debug deep TCP/IP issues.

      As an aside, efficient OO programming dictates the use of Design Patterns. While many would consider the Gamma book the standard, design patterns are based on the pattern language for architecture. A Pattern Language by Alexander is an interesting tome well worth the read.

      --
      "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    5. Re:The correct order by Anonymous Coward · · Score: 0

      For theory, a book that I seldom see recommended, but is deeply important as at least some programming is procedural, is Composite/Structural programming.

      That would be because you have got the name wrong.

      I am continually surprised at people who claim to be good at programming, yet cannot write English that parses correctly and does not contain basic errors.
      How many times do they need to compile their code before it is free of errors ?

    6. Re:The correct order by loufoque · · Score: 1

      You've forgotten the compiler books.

    7. Re:The correct order by Threni · · Score: 1

      > Code Complete is a very important book in terms of trade craft, and was written at a time when MS
      > was writing credible code.

      Crucially, this was not the second edition. I'm pretty sure people bought the first edition then later got the second one and just said `yeah, that one` in the survey.

    8. Re:The correct order by betterunixthanunix · · Score: 1

      I laughed a little bit when I saw you mention TAoCP and "level of abstraction over the operating system." I get your point and I largely agree with it, but perhaps you should take a closer look at the code listing in Knuth's books...

      --
      Palm trees and 8
    9. Re:The correct order by Anonymous Coward · · Score: 0

      I will buy everything he writes and I will listen to everything he says... I have watched your every talk and lecture that I could possibly find on the Internet many times - from the 1986 lectures at MIT to your lecture on mechanical watches. I seriously believe that everything you say should be recorded for future generations. I don't know anyone else who can talk about anything at all and I listen breathlessly like I was hypnotized.

      Dude, get off his dick already. Your abject obsession is obviously unhealthy.

    10. Re:The correct order by damian2k · · Score: 1

      As a side note, the users on StackOverflow, the site where the votes came from are generally working developers who use the site to solve day to day language specific problems. I think they have come up with a fairly decent list for a top 10, and yes possibly favouring trade craft (top 2) over theory.

    11. Re:The correct order by ShakaUVM · · Score: 1

      >>most programmers are operating at a level of abstraction these days over the base operating system in a way that makes that knowledge less valuable.

      Right up until they can't figure out why their code runs differently if it is writing to standard out as opposed to being piped into a file. Or use your Windows equivalent.

      Sure, I guess beginning programmers can get away with using high level abstractions, but anyone who wants to be a good programmers needs to know how all this stuff works. Hell, even non-programming techie can benefit - look at all the people that kept complaining about their "memory all being in use" when they don't understand how prefetching and caching works.

    12. Re:The correct order by SuperKendall · · Score: 1

      Right up until they can't figure out why their code runs differently if it is writing to standard out as opposed to being piped into a file.

      That's what I mean. Most modern programmers are not doing either. They are using either file management code that writes to a file correctly and efficiently, or database overlays like Core Data that abstract away storage.

      Sure, I guess beginning programmers can get away with using high level abstractions, but anyone who wants to be a good programmers needs to know how all this stuff works.

      Yes of course. But how can they appreciate all of the nuances in OS design UNTIL they have a firm grounding in algorithms? Otherwise they still won't grasp performance implications from various approaches.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    13. Re:The correct order by ixache · · Score: 1

      For theory, a book that I seldom see recommended, but is deeply important as at least some programming is procedural, is Composite/Structural programming.

      That would be because you have got the name wrong.

      So could you please give the correct name, or the author's name? I am actually interested in finding out more about such a book, but I couldn't locate anything seemingly relevant after a quick Google search. Thanks in advance.

      --
      Do I make sense? Please report if not.
    14. Re:The correct order by ixache · · Score: 1

      Code Complete is a very important book in terms of trade craft, and was written at a time when MS was writing credible code. I, However, consider it part of a trilogy that includes Writing Solid Code.

      A dissenting view about the usefulness of this book. I read the book, and I found that while often technically interesting, it was lacking in general principles and too focused on C. IOW, unlike Code Complete, it's no classic.

      --
      Do I make sense? Please report if not.
    15. Re:The correct order by Anonymous Coward · · Score: 0

      Completely agree. This why the set of three is listed. OTOH, at the time the book was written, C was often still the language one used to write code good and efficient. Much less so now that much of the basics have written in well known and useful places.

  14. Most influential on me... by Maljin+Jolt · · Score: 4, Interesting

    John von Neumann: Theory of self-reproducing automata, 1966

    --
    There you are, staring at me again.
    1. Re:Most influential on me... by Anonymous Coward · · Score: 0

      cellular automatons ftw :-)

    2. Re:Most influential on me... by Anonymous Coward · · Score: 0

      And if you enjoy von Neumann's book, move on to Konrad Zuse's "Rechnender Raum" (1969), here's a PDF of the English translation.

  15. Debugging by Anonymous Coward · · Score: 0

    http://www.amazon.com/Debugging-David-J-Agans/dp/0814474578

    Pretty good book. I dont buy many. The others have already been mentioned.

    Read it. It puts into words how to debug things.

  16. Learning Perl by ltcmus · · Score: 2

    Great starter book for non-cs types.

    1. Re:Learning Perl by siddesu · · Score: 1

      Actually, if you want to go with perl all the way, then it'll be three - Learning Perl, the first edition of Advanced Perl Programming and Mastering Algorithms in Perl. Or, picturewise, the llama book, the panther book and the wolf book. As good a start as any, perhaps, but in no way substitute for Knuth.

    2. Re:Learning Perl by cyclopropene · · Score: 1

      I am not a programmer but I read this about 14 years ago because I needed to analyze some pretty big text files. I thought it was written spectacularly and got me up and going in no time at all. If nothing else, this book should be read by anyone looking to get into the business of writing good programming books.

      --
      Shouldn't you be doing something useful?
    3. Re:Learning Perl by Anonymous Coward · · Score: 0

      I blagged a job on the basis of being comfortable with Perl, when all I really knew was Awk. I read Learning Perl before starting work and was fine !

    4. Re:Learning Perl by tokul · · Score: 1

      Perl Cookbook.

  17. The Art of Unix Programming by egork · · Score: 3, Insightful
    1. Re:The Art of Unix Programming by 1729 · · Score: 1

      A better one is The UNIX-HATERS Handbook (http://simson.net/ref/ugh.pdf). Until you realize how terrible[1] Unix is, any program you write is suspect.

      [1]: Yes, like most folks here, I use Unix-like systems almost exclusively. Donald A Norman sums it up well in the Foreward: "A horrible system, except that all the other commercial offerings are even worse."

    2. Re:The Art of Unix Programming by TheRaven64 · · Score: 2

      Seconded. Great book. Quite a few of the things that it complains about are now obsolete (for example, the main complaint levelled at X11 is due to vendors supporting different sets of extensions, but this is largely irrelevant now that everyone uses the same X server without large sets of proprietary patches). Many of the other points are spot on. The ioctl() system call should have been the point at which they saw that the file is the wrong abstraction for most things.

      --
      I am TheRaven on Soylent News
    3. Re:The Art of Unix Programming by Anonymous Coward · · Score: 0

      ESR's writing is just plain awful.

  18. C64 by Anonymous Coward · · Score: 0

    The Commodore 64 Programmers Guide

    1. Re:C64 by Anonymous Coward · · Score: 0

      The Commodore 64 Programmer's Reference Guide, if you please.

  19. Code Complete by DoofusOfDeath · · Score: 2

    This went a long way towards making me better at programming larger, non-academic-assignment programs.

  20. IPC in UNIX: The Nooks and Crannies by hamster_nz · · Score: 1

    The value of book largely depends on your skills at the time... "Code Complete" was pretty good, but you need to be already an adept programmer to see the value of its advice.

    I really wish I had read "Interprocess Communications in UNIX: The Nooks and Crannies (2nd Edition)" earlier. It's not the thickest book but it is the most information dense one I own. In today's environment of multicore and SMT CPUs, any programmer should have a deep understanding of IPC. An excellent partner to a good C book.

  21. K&R C by Doc+Ruby · · Score: 5, Insightful

    The C Programming Language by Kernighan and Ritchie (popularly known as "K&R") is certainly, objectively (puns intended), and probably demonstrably, the most influential programming book. It was a strong, probably primary, influence on every one of the titles suggested in this story. Indeed, it is something like the "ur-text" of modern programming - the vast majority of all programming, since it was first published in 1978. It has influenced programs, programmers and programming books. The influence dependency tree of programming books revolves around K&R.

    I say this despite (or perhaps as demonstrated by) the K&R block brace style, which I abhor. It saves a line to destroy column coherence. And despite popularizing the unitary "var++" (eg. in for() loops), rather than the semantically more consistent "++var". And a hundred other quirks Kernighan and Ritchie infected into programming (and programming books, and thereby programmers). The persistence of which is just part of the ample proof of K&R's paramount influence.

    --

    --
    make install -not war

    1. Re:K&R C by Anonymous Coward · · Score: 0

      I worked at Bell Labs and sat around the corner in the building from them in the 1980's.

    2. Re:K&R C by __aailrp9629 · · Score: 0

      Wow, 1978? That's only ten years after the first volume of The Art of Computer Programming.

    3. Re:K&R C by interval1066 · · Score: 1

      Were they the wild and crazy guys of story and song?

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    4. Re:K&R C by Doc+Ruby · · Score: 0

      And in that decade tAoCP influenced many. But K&R influenced many more. tAoCP influences people at the highest levels of programming; its influence on the masses is diluted - and felt more after its influence passes through K&R. K&R influences many, and influences them more.

      If tAoCP influenced more programming, programming would be better. K&R just influenced programming to make more programs.

      --

      --
      make install -not war

    5. Re:K&R C by Doc+Ruby · · Score: 1

      In spoken conversation, did they speak as succinctly as they wrote C? Or did they say articles and occasional runon sentences :)?

      Did you ever hear them defend their braces style? Why not
      foo()
      {
              bar();
      }

      ? And why semicolons instead of periods? If only I had a time machine...

      --

      --
      make install -not war

    6. Re:K&R C by Anonymous Coward · · Score: 0

      He almost certainly does. They do different things and that was, I think, his point.

    7. Re:K&R C by kanto · · Score: 1

      ...And despite popularizing the unitary "var++" (eg. in for() loops), rather than the semantically more consistent "++var" ...
      You do realise that ++var and var++ are both valid C and do different things, right?

      Q.E.D.

    8. Re:K&R C by icebraining · · Score: 2

      And why semicolons instead of periods?

      I'd rather have neither; Python and Go got it right.

    9. Re:K&R C by Doc+Ruby · · Score: 1

      Of course I do. Why else would I care? And if it weren't valid, how could it have made it into K&R?

      Though they do the same thing in the context I mentioned, but in a semantically annoyingly different way. It's style, and the style of var++ suggests something NOP that ++var does not.

      --

      --
      make install -not war

    10. Re:K&R C by imp · · Score: 2

      for (i = 0; i++; i 10)

      is semantically the same as

      for (i = 0; ++i; i 10)

      period.

      This has what K&R has brought us. Of course, the reason for this preference is that PDP-11 had postincrement addressing mode as well as pre-decrement. So you'll see more --foo than foo-- in old time code. For simple ints like the above, of course it doesn't matter one wit. But for looks like:

      while (*src++ = *dst++) ;

      you get much better code on a pdp-11 than the nearly similar:

      *src = *dst;
      while (*++src = *++dst);

      because the former's data movement is just two instructions, while the latter can be up to 6. Then again, this loop kinda disproves the usefulness of the ++foo that the parent to this reply expounded. There's really nothing more "logical" about it. it isn't until you find yourself in C++ land that you might think that (since operator ++ overloading is a lot easier with preincrement rather than post increment).

      So there you have it. The main reason for foo++'s prevalence in K&R is due to the historical accidents of PDP-11 addressing modes and stack growing direction.

    11. Re:K&R C by Anonymous Coward · · Score: 0

      yeah I think he does, i.e. ++var increments then uses the variable, var++ uses the variable then increments, but if they are executed on their own (as a single atomic statement) then effectively they do the same thing.

    12. Re:K&R C by Anonymous Coward · · Score: 1

      The real WTF is incrementing variables in a conditional expression anyway.

      Saving a little bit of typing at the expense of clarity, consistency and having well-defined predictable behavior is exactly the kind of thing that makes C such a great foot-gun.

    13. Re:K&R C by mfnickster · · Score: 2

      By judging the rest of his post on its merit. ("while (*src++ = *dst++) ;" is also missing an "=").

      See, this is why C sucks and is wonderful at the same time.

      There is no '=' missing. The assignment belongs in the conditional, and actually is the reason why it works.

      In C, the value of an assignment statement is the value being assigned, so this expression copies the value at one location to another location (per the pointers src and dest) and increments both pointers. If the value is null (indicating the end of a string) the expression evaluates as false and the loop terminates.

      The fact that you missed this, or perhaps didn't learn it while learning C, is an argument against this confusing kind of usage. Yes, it's efficient, but is it worth the trouble?

      --
      "Slow down, Cowboy! It has been 3 years, 7 months and 26 days since you last successfully posted a comment."
    14. Re:K&R C by AuMatar · · Score: 3, Insightful

      I'd like the multiple weeks of my life back that python has cost me because of their whitespace as braces style when coworkers decided to mix tabs and spaces. Python's decision would be fine *if* they had decided that we must use exactly 1 tab, or exactly 4 spaces, or any other choice. Allowing arbitrary amounts/types of whitespace along with giving it semantic meaning was the biggest mistake in the history of programming languages, and renders the result unusable.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    15. Re:K&R C by mooingyak · · Score: 2

      "while (*src++ = *dst++) ;" is also missing an "=".

      It has exactly as many "=" as it needs.

      It's a way to code strcpy().

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    16. Re:K&R C by Anonymous Coward · · Score: 0

      It saves a line to destroy column coherence.

      What do you mean? Is this meant to be an argument for putting an opening brace on its own line, or something else?

      The phrase "column coherence" is foreign to me, and apparently to google as well...

    17. Re:K&R C by Anonymous Coward · · Score: 0

      He does, and you've missed his point.

      ++var always increments a variable, and then returns its value
      var++ always returns a variable's value, then increments the variable, and it sometimes spawns a temporary copy of a variable to facilitate the return (whether the returned value is used or not)

      if you're just using an increment operator to increment a for loop index, without using the return value, ++var consistently does exactly that, var++ inconsistently adds in an extra step

    18. Re:K&R C by Anonymous Coward · · Score: 1

      Of course, most people would copy from the source to the destination... but you can name your variables however you like. :)

    19. Re:K&R C by mooingyak · · Score: 1

      Hah!

      Amendment:

      It's a confusing (in several ways) to implement strcpy().

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    20. Re:K&R C by icebraining · · Score: 1

      Idiots will shoot themselves in the foot on any language. You need someone to define the rule and force them to use -tt to prevent such messes. But even if you don't have anyone, running reindent.py and committing the new versions shouldn't much time.

    21. Re:K&R C by Doc+Ruby · · Score: 1

      I like having an "end of statement" mark. Because as an English writer, I'm skilled in statements that end. And that vary the formula, as I have in these last two sentences - that use grammar and statement ends to add more meaning with fewer writing. Writing that doesn't have to resemble line noise like Perl or obfuscated C can.

      --

      --
      make install -not war

    22. Re:K&R C by kayumi · · Score: 3, Funny

      Oh my god, I will go and hide for the rest of the month. I blame it all on python, lack of sleep and Fukushima. I have not used C for a year or two and now this happens. Damn. I must have caught this thinking-in-python disease.

    23. Re:K&R C by Doc+Ruby · · Score: 2

      Use your imagination. You know what columns are, and what coherence is. And what K&R does to columns when you use braces their way, saving a line.

      Or are you a compiler?

      --

      --
      make install -not war

    24. Re:K&R C by AuMatar · · Score: 1, Insightful

      Or you can use a language which doesn't have total brain farts like that. You removed something which caused minimal to no pain (the braces) and replaced it with something that regularly causes large amounts of pain and requires discipline and rules to make work. That's a textbook definition of a big mistake. Made worse by the fact that it's impossible at a glance to tell if it's a mistake or not- with braces you can see a missing one or an extra one, without looking in a hex editor you can't see a tab vs spaces.

      As for running reindent or similar app- great, except it won't work 100%, can cause bugs itself, and when doing blames or diffs of your code base will cause a lot of lines to be touched. All to avoid putting in two characters in the text. Still the wrong answer. The correct answer is to either force all indents to be a particular type and amount of whitespace and force anything else to not compile, or to just add in braces. Until one or the other happens, picking python is just asking for trouble- that language design option has cost businesses I've worked at more productivity than any other I've ever seen.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    25. Re:K&R C by Reality+Master+101 · · Score: 1

      ? And why semicolons instead of periods? If only I had a time machine...

      First think about decimal points, and then think about the lexical madness of also using periods as an end-of-statement indicator. They made the right choice.

      e.g.:
      int a = 5..
      int a = 5.2.
      int a = 5.b = 5.6.
      etc...

      --
      Sometimes it's best to just let stupid people be stupid.
    26. Re:K&R C by Anonymous Coward · · Score: 0

      No, Doc Ruby specified the "unitary var++" and posted later that "they do the same thing in the context I mentioned," so he's not talking about using return values at all.

      K&R says: "In a context where no value is wanted, just the incrementing effect ... prefix and postfix are the same." The extra step with "var++" is not part of the language definition, it's entirely up to the implementation. A compiler can catch the fact that the value is not used, and skip the extra step.

      Doc Ruby was just talking about style, and I don't agree that "var++" is in any way more annoying than "++var." In fact, I like it better because most expressions that modify variables put the operator on the right, e.g. var+=1.

    27. Re:K&R C by iggymanz · · Score: 1

      haha, that and other hot-shot techniques make the malware go round even to this day.

    28. Re:K&R C by Anonymous Coward · · Score: 0

      The C Programming Language by Kernighan and Ritchie (popularly known as "K&R") is certainly, objectively (puns intended),

      Where the fuck is the pun?

    29. Re:K&R C by tqk · · Score: 1

      It's a confusing (in several ways) [way] to implement strcpy().

      Er, I wasn't confused by it, but then I still remember the many hours I spent with K&R (1st and 2nd ed.).

      What's confusing is reading this bantering back and forth of people who can see "=" and assume the code's obviously wrong, not understanding that test for equality is not the same as assigning value. How real programmers can do that's a mystery to me. One makes sense when parsed and the other doesn't, algorythmically. Terseness in C is a feature, but like everything, you need to be careful with it lest it bite you. Compilers barf on stuff like this, or worse, don't barf and produce programs that crash, or worse, don't crash and instead produce corrupt results.

      "What? Did I miss something, or does he know something I don't?" No, he just can't read code. "Ah!" Feh.

      And as a parting shot, damn I hate seeing opening curly braces alone on an otherwise blank line! It's just ugly! Good code should be pretty.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    30. Re:K&R C by tqk · · Score: 1

      "Column coherence" is the least justifiable excuse I've ever heard of in defense of opening brace on a line by itself. I say, if it makes the code look ugly, it's wrong. Go ahead, tell me you know better than K&R (and I'm not talking about the book there, btw).

      Maybe you just need a better text editor that can handle it correctly (emacs vs. vi war in 5, 4, 3, ...). Hell, there's always indent. You do it any way you damned well please, and indent will fix it for me before I even look at it.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    31. Re:K&R C by Anonymous Coward · · Score: 0

      I say this despite (or perhaps as demonstrated by) the K&R block brace style, which I abhor. It saves a line to destroy column coherence.

      I suppose you subscribe to the false dichotomy and preserve column coherence while wasting lines... Instead of having both columnar alignment and lines saved.


      int SoWhat( int about )
      { this();
        return about;
      }

      Save a line + column coherence. Place the bracket on the next line, and code too. (separated by tab).

      You know, for problem solvers many coders can be right daft when it comes to code-style... Personally, I don't give a damn because I run all of your crappy code through my code style re-formatting program to make it look the way I like, (as everyone should).

    32. Re:K&R C by Anonymous Coward · · Score: 0

      Use your imagination. You know ... what K&R does to columns when you use braces their way

      No, else they wouldn't have asked what the fuck you were talking about, jackass. I'm imagining whitespace artwork. Flowers n shit. Is that what you meant?

    33. Re:K&R C by cmcguinness · · Score: 1

      var++ is more efficient on the PDP-11 than ++var.

    34. Re:K&R C by 6Yankee · · Score: 0

      I'm in ur-text lurnin ur Cz?

    35. Re:K&R C by sydneyfong · · Score: 0

      Yeah, blame the language for the incompetence of your coworkers...

      Seriously, if your coworkers and business partners couldn't indent properly... well, they'll suck in any other language which isn't idiot proof anyway.

      --
      Don't quote me on this.
    36. Re:K&R C by uncqual · · Score: 1

      Gee, kids today. Remember the old days when the following was confusing?
      i=-10;
      Was it assigning i to be -10 or was it decrementing i by 10? (Actually, I don't remember after all these years).

      --
      Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
    37. Re:K&R C by Anonymous Coward · · Score: 0

      In what way was it an influence on Introduction to Algorithms?

    38. Re:K&R C by m50d · · Score: 2

      As of v3 you can't mix tabs and spaces in the same file, which removes the "invisible bug" problem. Allowing an arbitrary number of spaces to indent a block is arguably too much flexibility, but since the indentation of each block has to be consistent I've never seen it render the code unclear.

      --
      I am trolling
    39. Re:K&R C by Anonymous Coward · · Score: 0

      So, where exactly is the problem?

      First example, you have double termination.
      Second, no problem.
      Third, you have two statements.

      Smalltalk has "." as a statement terminator, and no problems.

      They made a wrong choice.

    40. Re:K&R C by martin-boundary · · Score: 1
      Why? In English, a period represents the end of a sentence, but a semicolon indicates that the next sentence is closely related in content. In an imperative languague such as C, succeeding statements are generally closely related and should therefore be separated by semicolons.

      If C were a functional language, I'd agree about the period.

    41. Re:K&R C by dunkelfalke · · Score: 1

      Except the K&R style is way uglier because it lacks symmetry and symmetry is for humans the very definition of beauty.

      Thus, if you think that symmetry is ugly, then there is something wrong with you.

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    42. Re:K&R C by Rogerborg · · Score: 3, Interesting

      Oh, and don't forget the abomination:

      int *foo;

      ...and its mutant offspring...

      int foo, *bar;

      IIRC, K later recanted and said that permissiveness (allowing "pointer to" to shack up with the symbol rather than type) was the biggest single mistake they made in the C syntax.

      --
      If you were blocking sigs, you wouldn't have to read this.
    43. Re:K&R C by Anonymous Coward · · Score: 0

      "The C Programming Language" is the only book i have ...and Google.

    44. Re:K&R C by Anonymous Coward · · Score: 0

      Err, how?

      The meaning of the code is very clear to any sufficient C programmer – it's a well-known idiom in C – and it in no way has an inconsistent or unpredictable behavior. In much the same way, a programmer that's doesn't do Java could be perplexed by the try-finally construct, and I can't interpret Ruby at all.

      The only problem here seems to be your lack of vision: you haven't used pointers and the usual algorithms concerning pointers – and that's why you have trouble understanding them. The erring in your part is in thinking that everyone else does, too.

    45. Re:K&R C by martin-boundary · · Score: 1

      However (stylewise) ++var is reminiscent of foo(var), which is I think Doc Ruby's preference.

    46. Re:K&R C by shutdown+-p+now · · Score: 1

      it isn't until you find yourself in C++ land that you might think that (since operator ++ overloading is a lot easier with preincrement rather than post increment).

      It's not so much about "easier" as it is about perf. When you're dealing with raw pointers, any optimizing compiler worth its salt will notice where the result of postincrement is not actually used, and do a simple in-place increment. But with iterators, their postincrement is an overloaded function - and, due to the semantics of operator, it needs to do a copy before it mutates itself, and return said copy. Whether the compiler can figure out that all these copies are not actually needed when the result of ++ is used depends on how good the compiler is, and how complicated the iterator implementation is (specifically, whether it gets inlined).

    47. Re:K&R C by angel'o'sphere · · Score: 1

      Yes he realizes that but you fail to read him ;D

      for (int i=0; i < max; i++)
          do_stuff(); // this idiom is coined by K&R

      should be in fact:

      for (int j=0; j < max; ++j)
          do_some_other_stuff(); // but you likely disagree ;D

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    48. Re:K&R C by Chris+Mattern · · Score: 1

      I'd rather have neither; Python and Go got it right.

      Because nothing is more convenient than syntactically significant characters you can't see.

    49. Re:K&R C by tqk · · Score: 1

      Except the K&R style is way uglier because it lacks symmetry ...

      Symmetry doesn't have to be vertical. There's another 358 degrees that work just as well. Besides, why's the closing brace have to line up with the opening brace? They're only loosely related. It makes more sense for it to line up with the function def'n.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    50. Re:K&R C by jcupitt65 · · Score: 1

      That is K&R style, they have newlines for the braces that enclose function bodies.

      They do omit brace newlines for struct, if, else, for and so on. I suppose the idea was to get more useful lines per page in the book.

    51. Re:K&R C by hey · · Score: 1

      Of course, these loops never reach max. So it would be better to say number_of_elements or just n ...

      for (int i=0; i n; i++)
              do_stuff();

    52. Re:K&R C by dunkelfalke · · Score: 1

      How can a beginning marker and an ending marker of a logical unit be loosely related?

      And since the text of the source is written and aligned in rectangular blocks, you can only have a 90 degree symmetry. Since you don't have a horizontal symmetry there is only the vertical one left.

      I stick to it, there is something seriously wrong with your sense of visual perception.

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    53. Re:K&R C by icebraining · · Score: 1

      End of statement marks are useful in English prose because a single line usually has more than one statement; this can be useful in Python or Go too:

      name = get_name() ; print(name)

      But usually most people choose to write only one statement per line, which turns end-of-statement marks redundant.

      I agree with you - punctuation is very useful when it adds more meaning, that's why I like languages which don't demand their use in meaningless positions.

    54. Re:K&R C by Reality+Master+101 · · Score: 1

      I didn't say it was unparseable, I said it was madness. Computer languages are not primarily designed for the computer, they're designed for human beings, and having a single common symbol represent two commonly used ideas is dumb. I don't particularly like it in English writing, either.

      --
      Sometimes it's best to just let stupid people be stupid.
    55. Re:K&R C by Anonymous Coward · · Score: 0

      But usually most people choose to write only one statement per line, which turns end-of-statement marks redundant.

      Except that C ignores whitespace, including line breaks - so the compiler input doesn't really have "lines" per se.

      Because periods have other uses in C (floating point numbers, selecting struct data members) it would cause confusion and burden the C grammar with context sensitivity. Semicolons are a sensible choice given the constraints that were adopted to keep compilation simple.

    56. Re:K&R C by Anonymous Coward · · Score: 0

      Allowing arbitrary amounts/types of whitespace along with giving it semantic meaning was the biggest mistake in the history of programming languages, and renders the result unusable.

      That's odd... I guess the fact that millions of people are successfully using python scripts daily has no bearing on the matter then?

    57. Re:K&R C by mooingyak · · Score: 1

      I can't remember anymore whether I could just spot it because I've seen it before or because I've done enough C in my life that I can translate it instantly. The problems I see with it are:
      1. The '=' you mentioned. Every class I ever took that involved C made a point of stressing the most common C bugs, of which using '=' when you should have used '==' in a if or while is usually one of the big ones.
      2. It does everything at once. I know it's concise, and I know that a veteran should be able to spot it trivially. But it still looks icky to me.
      3. The while loop is empty. The ';' at the end of the loop means it has no body, it's doing all the work in the condition. That's rare enough to throw people off. I used to make sure I put empty { } and/or a comment to point out the empty body, lest one of my less capable colleagues try to "fix" it.
      4. What the AC pointed out, that having src = dst is backwards from what those names imply. Of course that's just because the original poster transposed them and isn't really a problem with the concept itself.

      None of these things make it wrong, but they do make it tougher for some coders to read what's going on. The maintainability of your code isn't just about what you can see and understand, but what everyone on your team can see and understand.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    58. Re:K&R C by AuMatar · · Score: 1

      First off, get your numbers straight. There aren't millions of programmers in the world- the US numbers for employment isn't expected to top 1.6M until way past 2018 (source: http://www.bls.gov/oco/ocos303.htm), and it's the largest employed base. Maybe triple that worldwide, most of whom have never and will never touch python. On a daily basis I doubt the number of people writing python tops 10K.

      Can it be used? Sure. So can brainfuck. Is it a good choice? Maybe now that 3.0 requires one or the other (if an above poster is correct), it's acceptable. Before that, in a collaborative environment it's a bad choice and will cause problems that just shouldn't exist. In the 3 jobs now that used python for some shared script, all with fairly decent programmers, all 3 have hit that issue. It was a mistake, period.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    59. Re:K&R C by Jeremi · · Score: 1

      I say, if it makes the code look ugly, it's wrong.

      The problem with that standard is that for any line of code you think is ugly, there will be an equal and opposite programmer somewhere who thinks that same line of code is pretty.

      So you'll never settle any arguments solely on aesthetic grounds. Particularly since for many programmers (myself included), "ugly" is mostly just shorthand for "not in the style that I'm used to seeing".

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    60. Re:K&R C by icebraining · · Score: 2

      Again, even in 2.X it was a matter of running python with -t or -tt. You just needed to RTFM.

    61. Re:K&R C by Doc+Ruby · · Score: 1

      No, I blame the language for requiring people to do something as tedious as "indent properly". The indenting character is indistinguishable from the non-characters after the indent. The compiler should permit extra whitespace and clean it up. Not doing that is a trap.

      The language is a tool for human convenience. Not some extra set of skills that don't solve the problem, but instead just create more problem for the programmer to solve.

      --

      --
      make install -not war

    62. Re:K&R C by Doc+Ruby · · Score: 1

      CRs are indistinguishable from other whitespace. Which is why I like statements to have a visible character ending them. Which also lets me include multiple statements in a single line when that composition is meaningful, like for(i=lowNum, j=hiNum; ij; ++i, ++j) { foo(i, j); } . If anything C (and derivatives like Java and Perl) should end a "{}" block with a ";" , and leave a "{}" block without a semicolon as an expression rather than a statement.

      --

      --
      make install -not war

    63. Re:K&R C by Doc+Ruby · · Score: 1

      What does
      int a = 5..
      mean?

      Does
      int a = 5.;
      or
      int a = 5.b;
      mean something syntactically valid?
      Or
      5.b = 5.6
      ?

      int a = 5.2.
      isn't bad at all, as we experience in English all the time. Though I do type to humans including trailing whitespace after code symbols before punctuation, as the symbol name is defined by "between whitespace" in most languages (except Mac, and then Windows, filenames).

      So
      int a = 5 .
      int a = 5.2 .

      What's so hard about that? It looks like the language we've been writing for years before we ever wrote it to a computer.

      --

      --
      make install -not war

    64. Re:K&R C by Doc+Ruby · · Score: 1

      What you just said about C is not true. There is no implication that any two successive statements are related at all, except that their variables are in the same containing scope (except any overrides in any {} block in one statement).

      --

      --
      make install -not war

    65. Re:K&R C by Doc+Ruby · · Score: 1

      There's no reason the PDP-11 C compiler couldn't have seen *++p and compiled it to the instructions INC p and *p (or whatever the actual opcodes are). The C language itself should have both, but when the programmer is saying only "increment p", ++p is semantically more correct than is p++.

      The problem with my preference in C++ is that nobody would have taken seriously a language called "++C" ;).

      --

      --
      make install -not war

    66. Re:K&R C by Doc+Ruby · · Score: 1

      And as a parting shot, damn I hate seeing opening curly braces alone on an otherwise blank line! It's just ugly! Good code should be pretty.

      So an open brace at the end of a line, that doesn't align in a column with its closing brace, is pretty? The column-aligned braces are prettier, and easier to match by eye. And harder to miss at the right end of a line that's beyond the margin of the viewport. Or which wraps to the next line, of course usually as the 81st (or 133rd, etc) character. Which satisfies "pretty" in my eyes, but is not reliably persistent across viewport instances.

      --

      --
      make install -not war

    67. Re:K&R C by Doc+Ruby · · Score: 1

      The result is the same in either style. But the reason the ++var style is better sylistically is that it implies only "increment var", and not the other moot effects the other poster mentioned.

      --

      --
      make install -not war

    68. Re:K&R C by Doc+Ruby · · Score: 1

      That is also correct.

      In fact I wish C used only ()s, not []s or {}s. And that every () indicated a function call, including to implicit list processors.

      Yet somehow I hate Lisp as unreadable. I'd probably be happier if C used only ()s, but allowed (matched) []s or {}s interchangeably. Just as we do in English parenthesizing and consequently in algebra.

      --

      --
      make install -not war

    69. Re:K&R C by Doc+Ruby · · Score: 2

      I know better than K&R (did). Of course, I have the benefit of over 30 years programming after their book was published, starting only a year prior; they had only a decade or less experience when they published, among a vastly smaller society of peers to argue with.

      I won't like any language that requires a text editor more complex than notepad to generate readable code. Certainly not one that requires a post-processing indenter.

      --

      --
      make install -not war

    70. Re:K&R C by Doc+Ruby · · Score: 1

      No, because I code:

      int SoWhat(int about)
      { /* So that's what this is about.
          int that = about(this);

          return(that);
      } /* SoWhat(int) */

      Many other people have to read my code. I sometimes have to read my code years later. The open brace is the perfect place to document that scope.

      --

      --
      make install -not war

    71. Re:K&R C by Doc+Ruby · · Score: 1

      That's what compilers are for. Otherwise C is just a macro-assembler.

      --

      --
      make install -not war

    72. Re:K&R C by Doc+Ruby · · Score: 1

      In a (my) mistaken way.

      Yet ItA has been read directly by so few, and its principles rigorously worked by so few, relative to K&R that K&R is clearly more influential. A step further would say that Principia Mathematica is the most influential programming book.

      --

      --
      make install -not war

    73. Re:K&R C by Doc+Ruby · · Score: 1

      I dunno, after a year or so I had the multilevel meaning of int *foo, and liked seeing a list of ints, even if some were dereferences.

      I think using "->" in "struct->elem" was their biggest mistake, because it's not a single character. ++, +=, || and their like aren't so bad, because they're akin to functions, which can have arbitrary character length names.

      --

      --
      make install -not war

    74. Re:K&R C by Doc+Ruby · · Score: 1

      . would have been just fine, both for humans and compilers to read. Indeed, no space between the line's statement and its terminating semicolon is harder for humans and compilers.

      --

      --
      make install -not war

    75. Re:K&R C by icebraining · · Score: 1

      It's not a CR, it's a newline (0x=A) and it's certainly not indistinguishable, since it breaks the line.

      Which also lets me include multiple statements in a single line

      Sure, Python and Go allow that too, which doesn't mean you have to be forced to write semicolons in the 99% of the cases.

      If anything C (and derivatives like Java and Perl) should end a "{}" block with a ";" , and leave a "{}" block without a semicolon as an expression rather than a statement.

      Or you could use normal parenthesis instead of adding yet another useless character.

    76. Re:K&R C by Anonymous Coward · · Score: 0

      but when the programmer is saying only "increment p", ++p is semantically more correct than is p++.

      Sorry, but it is not semantically "more correct" if the programmer means only "increment p."

      ++p means "increment before evaluating," p++ means "increment after evaluating," so they both carry the meaning "increment p" equally well.

      I can understand why you might like it better, but that has nothing to do with the semantics. If they mean the same thing in this context, one can't be "more correct" than the other. In fact, to be "semantically incorrect" p++ would have to carry a meaning other than the intended one.

    77. Re:K&R C by Doc+Ruby · · Score: 1

      A newline at the end of a long line is indistinguishable from a wordwrapped long line. There are lots of long lines that wordwrap in complex code. Especially with long variable names, which are also a better practice than K&R's single character vars (that have been far too influential for comfort).

      As for braces vs parenthesis, I agree. I'd prefer that all ()s, []s, and {}s were interchangeable (but required to match in open/close), just as in English and algebra. But {}s for blocks are no big deal. Nor is the semicolon, which explicitly ends a statement. Whitespace is ambiguous.

      --

      --
      make install -not war

    78. Re:K&R C by Doc+Ruby · · Score: 1

      I said "semantically", not "syntactically". Programming languages are an interface between humans and machines (and between humans and humans), not just between machines. Semantics include meanings beyond the strict syntax, including implications that machines do not process.

      In English, "increment p" is rendered in C "++p". In English, "p++" means "p, then increment it". That's why "++p" is semantically more correct.

      --

      --
      make install -not war

    79. Re:K&R C by Anonymous Coward · · Score: 0

      Oh, you're talking human semantics not computer language semantics? Why would you do that? C is not English.

      The meaning of unitary "p++" is exactly the same as "++p." If the programmer only intends to increment p, "p, then increment it" is no less correct. It's more consistent with unary minus, though.

      But this is all pissing in the wind. It comes down to your personal preference because it doesn't impact the functionality, and anyone else's opinion is just as valid as yours. Just quit saying it's "less correct" because it's not.

    80. Re:K&R C by Doc+Ruby · · Score: 1

      This is not pissing in the wind. I did not say it's simply "less correct". I said it's semantically less correct, because it is. Because the human semantics of a language that's higher level than assembly are important semantics, and valuable in human terms. As a human, one with expertise in semantics beyond even just computer languages, I am quite qualified to judge the semantic correctness of languages.

      Just because you're not qualified to relate human semantics to programming languages, or even to post as anything but AC, doesn't give you any standing to tell me to quit doing anything.

      Goodbye.

      --

      --
      make install -not war

    81. Re:K&R C by Anonymous Coward · · Score: 0

      Right, you said "more semantically correct," and since semantics concern meaning, that implies there is a "right way" and a "wrong way" (or at least a better and worse way) to say "increment p."

      Since "++p" and "p++" in their context as unitary expressions mean the same thing, how can one be more correct than the other unless you put them in a different context??

      I think the only thing you're qualified for is having a high opinion of yourself.

    82. Re:K&R C by icebraining · · Score: 1

      If they're wrapped by the editor, it's the editor's job to clearly show that. Lines bigger than 90/100 characters are a bug anyway. They harm the readability of the code, regardless of wrapping.

      If it's intentional wordwrap, then there are characters (like \) for such edge cases. It's stupid to force useless characters in every line because of the two or three lines in the whole file (hopefully less) that don't follow the usual rule.

    83. Re:K&R C by martin-boundary · · Score: 1

      You're right of course, but I meant this in a loose sense. In the common case of imperative coding, succeeding statements are usually related so separating them by semicolons feels right to me. I've also been known to introduce extra {}'s purely for grouping, every once in a while :)

    84. Re:K&R C by Doc+Ruby · · Score: 1

      I increasingly use named blocks in Java.

      What I really want is to store all my source code in a relational database. Maybe one line of source text in a column, with revision data in other columns. Maybe even store the lines as sequences of tokens, with formatting in another table. Then generating source files for editing and compiling. I don't like text blobs that only a compiler can give me metadata on, and in which formatting (including line terminators like semicolons, but also braces/whitespace) and even variable/method/class names are changeable on demand. And relatable for stats, etc. A MySQL or Postgres module that is a compiler, even just to render the tokens and resolve references into key references, would be cool. And generate text that SVN and other lexical source management tools consume to deliver their features.

      Then we wouldn't have to deal with style questions about braces and other cosmetics that matter to humans but not machines. And work with our code relationally, like we do so much else.

      --

      --
      make install -not war

    85. Re:K&R C by martin-boundary · · Score: 1
      I sometimes think that the shell language is where Lisp notation should have been headed. In shell, the car is always a command, and the cdr are the arguments. The pipe is sufficient to identify the sexp boundaries.

      The only (major) problem is that shell is linear whereas Lisp is tree structured. For sublists, the shell solution of using backticks and string interpolation is too ugly.

    86. Re:K&R C by cmcguinness · · Score: 1

      If you were writing a compiler for a machine with less than 64K of memory, you'd be happy with a spiffy macro assembler!

    87. Re:K&R C by Doc+Ruby · · Score: 1

      In 1982 I was happy to get for my 48KB RAM Atari 400 Deep Blue C, which was a lot more than just the Atari Assembler/Editor cartridge, even if not fully C. It was certainly a lot more than call -151 on an Apple ][+. And though it was not quite as powerful as fig-forth, it was certainly a lot more useful in the long run. And the "punctuated spectrum" from machine code to keyed-in assembler to assembler/editor to C compiler was the basic training for computing that I continue to tap today, heading towards a half-century later.

      --

      --
      make install -not war

    88. Re:K&R C by Doc+Ruby · · Score: 1

      Shell pipes can be tree structured using tee . I used MS PowerShell through all of 2010 to script MSSQLServer, and I really loved it. It was like they stole the best features from Perl, Java and shellscript, made it object oriented and opened the whole .Net (and installed apps) API with it. I haven't kept up with Perl or Javascript in years, but if either of those languages could adopt the object pipelines and OS registry of all installed classes for an interpreted language that worked like PowerShell, I'd be pretty happy.

      Though ultimately what I really want apart from these tools is a language that can flip back and forth between a dataflow graph and lexical structures, editing either. I loved ProGraph on the Mac, but it got wiped out when it targeted Windows instead of the Web in 1995. Shell pipes and Lisp sublists are hints at such a beast. What I'd want would be a lexical/graph editor of object dataflows, with the objects and their data connections stored in RDBMS and executed in a Java app server. Bytecode should be renderable into graphs or any of the languages that compile to bytecode these days, including Perl, Python, Java, Ruby, and I believe CIL C# etc. I'd love to code functions in whichever language was more apt to the function, and hook up their calling interfaces with explicit call graphs. I'm tired of embedding SQL strings in Java code wrappers; I want to just call SQL returning recordsets directly like RecordSet results = SELECT * FROM news WHERE topic IN (prefs.getSubscriptions()) AND dateline=TODAY();

      The new Intel Atom/FPGA and Xilinx ARM/FPGA chips might be the platform where this actually works. Running a JVM on one ARM9 core and the C/asm Linux OS on the other core, interconnecting buses and RAM through gates circuits, might expose all these various interfaces in an open scope where all the programming approaches could be mixed, processed by whichever HW/SW is given access, even within a single process. The open SW makes porting code across boundaries possible and even likely.

      After all, a man can dream.

      --

      --
      make install -not war

    89. Re:K&R C by Doc+Ruby · · Score: 1

      No imagination necessary to know that you're nothing but a puny troll. You have time for that spittle? Loser.

      --

      --
      make install -not war

    90. Re:K&R C by ShakaUVM · · Score: 1

      >>Yeah, blame the language for the incompetence of your coworkers...

      Part of the design of a language is having to deal with idiots. Misaligned braces are a problem because C compilers will throw errors on the wrong line, sometimes the end of the file, if you have a missing brace. Invisible bugs are way worse though.

      Sure, you can use compiler flags, or LINT, or whatever, but neither excuses bad design.

      There's issues with every language... but people will still use the ones they like even with their flaws. It's like marriage.

    91. Re:K&R C by Anonymous Coward · · Score: 0

      I don't see that it does anything untoward to your columns if you continue to indent as you should. Also, it's not only "saving a line", it's saving a line per block, which is often significant.

      I understand that everyone has their own perception of 'pretty' when it comes to code, but "column coherence" is about the dumbest condemnation of K&R brace style that I've ever heard.

    92. Re:K&R C by Anonymous Coward · · Score: 0

      Also, it's not only "saving a line", it's saving a line per block, which is often significant.

      It's saving a newline character per block (or perhaps a CR/LF). Big deal. Saving space isn't important, visual clarity is.

    93. Re:K&R C by Anonymous Coward · · Score: 0

      It's not about disk space, it's about lines fitting on the screen.

    94. Re:K&R C by Anonymous Coward · · Score: 0

      It's not about disk space, it's about lines fitting on the screen.

      If you're worried about saving lines vertically just so you can see enough code, your font is too big or your screen is too small (or both).

    95. Re:K&R C by Anonymous Coward · · Score: 0

      I like to see more code at once. No matter what size my screen or font is, wasted lines are wasted lines. A brace on its own is indeed a wasted line, adding nothing to code clarity, only comforting small minds that cannot tolerate change, nor read code formatted outside their expectations.

  22. Commodore 64 Programmers Reference Guide by Anonymous Coward · · Score: 0

    I still have mine. Schematics in the back. First edition (Had a c64 with a 4 digit serial number)

    Taught me the machine, how it worked inside and out by the time I was 8 years old.

    Two thumbs up would recommend.

  23. Demon Haunted World, Carl Sagan by syousef · · Score: 4, Interesting

    ...so you can spot the BS and hysterical religion when some idiot consultant comes up with their new XXX driven development or Agile methodology, or tries to replace on perfectly good framework, set of design patterns or tools with a new one that promises to be the best thing since sliced bread.

    But seriously I think it's important to start kids young. My first books were on Apple IIe BASIC. In those days BASIC was what a lot of kids had access to. I saw LOGO later. I wouldn't change that. I'd change the books and systems I tried to use as a teenager and young adult though - MFC and Windows coding was such a waste of time given where my career went. And I never got far.

    Agree with the previous AC about Mythical Man Month. Love the classic idea of a manager who needs a baby to meet a 1 month deadline throwing 9 women at the problem instead of one woman for 9 months. But I think you can get the gist without reading a whole book about it.

    K&R is iconic, but not a good beginner's book at all, and while it does cover some things in great depth it does leave plenty out and is well dated now. Worth reading, but not first. It's good for understanding how the guts of the machine work but as C has been in decline for some time some of today's new coders will likely never use it.

    I've never actually read Code Complete, but it sounds like a good introduction to a lot of ideas if you've not done a degree.

    --
    These posts express my own personal views, not those of my employer
    1. Re:Demon Haunted World, Carl Sagan by hibiki_r · · Score: 1

      The gist of MMM is not anywhere near what you say. Even if we just wanted to cover that single chapter, the points is not just that you can't add more people to speed up a process, but that adding more people to a late project make the project go even later.

      And still you'd be missing at least two chapters that are at least equally as important:
      -There Is No Silver Bullet
      -Plan To Throw One Away

      Which are what makes Brook's little green book timeless, despite how badly some other chapters have aged. This is why MMM sits in my small bookshelf at work, along with Peopleware, Pragmatic Programmer, Lessons Learned in Software Testing, Go4 and Agile Software Development Principles, while K&R stays at home: More a piece of history than something I need today.

    2. Re:Demon Haunted World, Carl Sagan by Anonymous Coward · · Score: 0

      Code Complete is the best book on practical software engineering. Its the one book to read after you've got a degree. Its like packing 10 years of work experience into a few hours of reading.

    3. Re:Demon Haunted World, Carl Sagan by Anonymous Coward · · Score: 0

      _Mythical Man Month_ is essentially about the folly of traditional waterfall command and control management. I suspect you'd prefer iterative approaches using small self organizing teams and frequent testing. Oops, now you're doing Agile, the thing you have harsh words about.

    4. Re:Demon Haunted World, Carl Sagan by tqk · · Score: 1

      I agree wrt DHW. However, ...

      K&R is iconic, but not a good beginner's book at all, and while it does cover some things in great depth it does leave plenty out and is well dated now. Worth reading, but not first.

      I disagree. I started with K&R, and would do it again in a heartbeat. I specifically avoided BASIC after doing some research prior to teaching myself to program and went straight to C. That short, densely and well written book was the best and most instructive tutor I've ever had.

      Watching C plus Mix Power C on a 16 bit DOS machine, then seeing C on a serious commercial Unix machine was the second most instructive lesson.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    5. Re:Demon Haunted World, Carl Sagan by AwesomeMcgee · · Score: 1

      Couldn't agree more, was my first too as will it be my son's. However I must say, reading through these comments and recognizing yours I can't help but wonder if our affinity for the KnR as a starter might be a symptom of something else: I am a *completely* hands on learner. I failed high school and college because of this, but succeed in my software career to great effect. I think the density and conciseness of the KnR worked so well for me possibly in relation to this fact, and not as well for many, as true hands on learners really aren't the norm.

    6. Re:Demon Haunted World, Carl Sagan by ShakaUVM · · Score: 1

      Agree with the previous AC about Mythical Man Month. Love the classic idea of a manager who needs a baby to meet a 1 month deadline throwing 9 women at the problem instead of one woman for 9 months. But I think you can get the gist without reading a whole book about it.

      Dude, you can read the whole thing in like two hours.

      Compared with the size of TAOCP or Tanenbaum or a lot of classic CS books, you can't kill anyone with the Mythical Man Month.

  24. The Design and Evolution of C++ by AddisonW · · Score: 1

    The Design and Evolution of C++ by Bjarne Stroustrup

    http://www.amazon.com/Design-Evolution-C-Bjarne-Stroustrup/dp/0201543303

    This is the book that turned me into a grown up in the world of computer languages. It is the book that brought unparalleled insight and wisdom into every other computer language book, discussion about computer languages, or actual real world use of computer languages since reading.

    1. Re:The Design and Evolution of C++ by Anonymous Coward · · Score: 0

      The book was amazing...

      However it does make pretty much any Internet C++ discussion too painful to read with idiots babbling about how come C++ "doesn't have bulletpoint X yet".

      It's too bad there isn't some alternate Internet where only people who have read that book can post about C++ and none of the shitty Perl, Python, etc hacks that are drawn like swarming annoying insects to a wonderful picknick.

    2. Re:The Design and Evolution of C++ by interval1066 · · Score: 1

      Python's not THAT bad.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    3. Re:The Design and Evolution of C++ by AuMatar · · Score: 1

      Sorry, this is a horrible book. It's poorly organized, rarely coherent. He introduces concepts out of order and in a stream of consciousness style that makes no sense unless one is already a C++ expert. I'd recommend one of those cheap "Teach yourself to program X in Y" books before this one.

      --
      I still have more fans than freaks. WTF is wrong with you people?
  25. If I could turn back time by rossdee · · Score: 1

    If I could go back in time that far, I wouldn't be worried about telling myself to read some book, I would tell myself to buy MSFT stock in 1981, and Apple stock in 1983, and sell short in October '87 etc

    1. Re:If I could turn back time by MarcoAtWork · · Score: 1

      if I were you I would read the book 'Replay' by Ken Grimwood, as it's a very good treatment of the "what would happen if I could go back in time with what I know now" dilemma...

      --
      -- the cake is a lie
  26. K&R by rocket+rancher · · Score: 1

    Next question?

    1. Re:K&R by richieb · · Score: 1

      "Oh! Pascal". Yes!! I still have my copy too. I think I used when I taught Pascal programming years ago.

      --
      ...richie - It is a good day to code.
    2. Re:K&R by rocket+rancher · · Score: 1

      K&R as far as long-lasting impact. But my sentimental favorite? Doug Cooper's "Oh! Pascal!" I still have a copy of it.

      heh -- I struggled with Cooper's Condensed Pascal while I was a freshman and sophomore CS student. The junior and senior classes were in C. C was so much simpler, and so much clearer thanks to K&R's brevity and terseness. I do some technical writing for beer money, and K&R is my style sheet for any technical writing project I sign on for.

    3. Re:K&R by sconeu · · Score: 1

      C&C had THE BEST introduction to pointers that I have EVER read.

      It was the introductory text at UCSC (CIS 12A/B) in the early '80s.

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
  27. K&R by beadfulthings · · Score: 1

    K&R as far as long-lasting impact. But my sentimental favorite? Doug Cooper's "Oh! Pascal!" I still have a copy of it.

    --
    "Here's what's happening. You're starting to drive like your Dad..." - Red Green
  28. Death March by Anonymous Coward · · Score: 0

    Anyone embarking on any career in IT should read Edward Yourdons Death March. Learn to recognise, and not contribute to, flawed projects. You can be as technically savvy as they come but no amount of technical skill will allow you to code your way out of a truly f@#!ked project.

  29. Z-80 Assembly manual by msobkow · · Score: 2

    The most influential programming book I owned was the first one I owned: The Z-80 Assembly manual. That got me started on real programming. The TRS-80 may not have been a great machine compared to what we have now, but it was a great bare-bones-metal learning tool.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:Z-80 Assembly manual by Anonymous Coward · · Score: 0

      Yup. But, it was Lance Leventhal's book on the 8080 8080A and Z80 that was my favorite. Then 6502. After writing, in this order, the editor that was used for all further projects, a dissassembler, a compiler, and a video game in assembler, I wasn't much impressed by most high-level languages, until I discovered LISP.

      Of course, if I were going to recommend such a path to others, the book on assembler would have to come with an 8bit micro. New systems are not so friendly.

    2. Re:Z-80 Assembly manual by Pesticidal · · Score: 1

      I remember that, is that the one by Rodney Zaks? I could only borrow it from the local library when I was a kid so I painstakingly copied everything I could from it into a notepad (not being able to afford photocopies either). I had a ZX Spectrum at the time as well, and of course no proper assembler program, which meant manually converting assembler to hex codes. I loved those days (no sarcasm).

    3. Re:Z-80 Assembly manual by msobkow · · Score: 1

      Yes, that was the one. :)

      --
      I do not fail; I succeed at finding out what does not work.
    4. Re:Z-80 Assembly manual by istartedi · · Score: 1

      I often wonder what kind of a programmer I'd be if I had never purchased and used The Commodore 64 Programmers Reference Guide.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  30. It's one not on the list by LynnwoodRooster · · Score: 2

    It's "I, Robot" from Isaac Asimov. How many read that book early on and thought "I can do better than those three rules"...

    --
    Browsing at +1 - no ACs, I ignore their posts. So refreshing!
    1. Re:It's one not on the list by Daniel_Staal · · Score: 1

      I think a lot of what frustrates me about technology can be traced back to the fact that the first two rules are in the wrong order.

      --
      'Sensible' is a curse word.
    2. Re:It's one not on the list by the_raptor · · Score: 1

      How many read that book early on and thought "I can do better than those three rules"...

      So you missed the point Asimov was trying to make? Which was that simplistic rules can not control the behaviour of something as intelligent as a human. The Three Laws of Robotics were a plot device for human robot conflict, and it is scary how many geeks don't get that and think they are actually good ideas.

      --

      ========
      CINC, 4th Penguin Legion
    3. Re:It's one not on the list by Zironic · · Score: 2

      Hmm? Almost all the stories are about stupid stuff that happens because some genius thought they would be better off if they modified the laws.

    4. Re:It's one not on the list by Anonymous Coward · · Score: 0

      it's a nice collection of stories on _human_ rules, motivations and psyche. nothing to do with programming though.

      and well, even if you could read minds, you couldn't make the customer happy. hah.

    5. Re:It's one not on the list by Anonymous Coward · · Score: 0

      I did and I returned it to the library the first chance I got.

      The rules were so stupid I can still remember how disappointed I was, expecting an awesome book.

      Sadly I have to be reminded every once in a while due to the equally stupid and boring pop-culture who seems to cheer it.

    6. Re:It's one not on the list by LynnwoodRooster · · Score: 1

      WOOSH.

      --
      Browsing at +1 - no ACs, I ignore their posts. So refreshing!
  31. IBM System/360 Principles of Operation by jacobsm · · Score: 2

    The book that started it all.

    1. Re:IBM System/360 Principles of Operation by interval1066 · · Score: 0

      I would argue that Euclid's Elements was the book that started it all. Without it your (or at least my) first program wouldn't have been a simple little ditty to compute the area of a circle using RSTS/E Basic+.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    2. Re:IBM System/360 Principles of Operation by 50000BTU_barbecue · · Score: 1

      Yeah, not the Ned Chapin horror. He's one of those people who can write and write and write and not communicate a single clear concept.

      --
      Mostly random stuff.
    3. Re:IBM System/360 Principles of Operation by Anonymous Coward · · Score: 0

      How about a simplifed approach to S/370 assembler programming ?

    4. Re:IBM System/360 Principles of Operation by iggymanz · · Score: 1

      Hah, all the other people are mentioning more recent books books. When I was ten years old I picked up "Programming the The IBM 1620: The Hands-On Approach" (by Eric A Weiss, publisher McGraw-Hill, 1965) at the local library. It started with teaching the 1620 machine language, then assembly, then Fortran I, all with punched cards and/or teletype. It hooked me on computers and I couldn't wait to get my mitts on one. At twelve I was programming the Z-80 in a TRS-80 in assembler (didn't care for BASIC). Recently I saw that book on eBay and bought it, it still gives me metaphorical "geek wood".

      http://www.amazon.com/Programming-IBM-1620-hands-McGraw-Hill/dp/B0006BN00K - just $5 used, what a bargain!

    5. Re:IBM System/360 Principles of Operation by iggymanz · · Score: 1

      more fun to go hard-core and read the S/370 Principles of Operation. Just quickly skim the first time and it comes together and makes sense the second time through because of chicken and egg issues. It is available on several sites for download as pdf, maybe not supposed to be.

    6. Re:IBM System/360 Principles of Operation by mikechant · · Score: 1

      It is available on several sites for download as pdf, maybe not supposed to be.

      IBM are generally very open with their manuals, e.g. go to this link for the z/OS v1.12 infomation center
      http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp
      and the first link on the front page is a PDF of the current version of PoP

      I get the impression IBM isn't very bothered about old or current manuals being scattered around various web sites.

    7. Re:IBM System/360 Principles of Operation by iggymanz · · Score: 1

      I wish they would get that way about their 1980s OS and compilers (70s and 60s yes you can get) You can actually get z/os ISO to run in your Hercules, but it's naughty.

  32. If you could turn back time by intellitech · · Score: 1

    You kidding? You don't even need to go that far back to rake in dough on stocks.

    Wish I was paying attention to things when Google came around..

    --
    vos nescitis quicquam, nec cogitatis quia expedit nobis ut unus moriatur homo pro populo et non tota gens pereat.
    1. Re:If you could turn back time by prefec2 · · Score: 1

      I did. I had no money. And when I would go back today and tell me to by those damn stocks. My past self would say: "With what you moron?" If I could go back, I would ask all those girls out, which I didn't the last time.

  33. Stackoverflow answered this one already years ago by the-matt-mobile · · Score: 1

    Strange. 10 years ago I used to get my news from slashdot first. Now, not so much anymore. This list is pretty exhaustive and has more backing than I expect you'd find anywhere else, including here: http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read

  34. the Most Influential Programming Book? by MrShaggy · · Score: 4, Funny

    Dianetics.

    --
    I have mod points and I am not afraid to use them.
    1. Re:the Most Influential Programming Book? by Anubis+IV · · Score: 1

      I think they call that "re-programming".

    2. Re:the Most Influential Programming Book? by Anonymous Coward · · Score: 0

      So what's the Most Influential De-programming Book?

    3. Re:the Most Influential Programming Book? by ed1park · · Score: 2

      How about the bible? *ducks* :)

    4. Re:the Most Influential Programming Book? by Anonymous Coward · · Score: 0

      There are more mooslims than christians. Or are you a mooslim loving faggot? Afraid to call a spade a spade? You're a cunt.
       
      FUCK MOOHAMMAD!!! FUCK ALLAH!!! FUCK ISLAM!!!!!!

    5. Re:the Most Influential Programming Book? by Anonymous Coward · · Score: 0

      I'll buy that. Look at how many scientologists it has "programed".
       
        Of course it is quite buggy. Look at Tom Cruise!

    6. Re:the Most Influential Programming Book? by phreakincool · · Score: 1

      I LOL'd! Thanks!

    7. Re:the Most Influential Programming Book? by assertation · · Score: 1

      Even a broken clock is right twice a day and that book does have useful information for programmers.

      Slow down, my name is not John Travolta and I didn't read it.

      Years ago I was sitting in a graduate lounge that had a copy of the book on a bookshelf ( no doubt as a bit of a sophmoric joke ).

      I read the introduction and came across a useful idea that I had never articulated before. Basically, Hubbard said that to understand new material you want to make sure that you understand the meaning of every new word. If you don't know what a word means, stop, learn it and only then move on.

      Too often in IT I will understand most of something, be in a rush to get something and move on. After a while, those words and bits only understood by context or only understood "good enough" by virtue of the whole picture snow balls on you to the point where you are confused and overwhelmed.

    8. Re:the Most Influential Programming Book? by Anonymous Coward · · Score: 0

      I think you meant the Bible, first testament.

    9. Re:the Most Influential Programming Book? by warGod3 · · Score: 1

      and here I was going to say "The Anarchist's Cookbook".

      --
      "Be polite, be professional, but have a plan to kill everybody you meet." General James Mattis
    10. Re:the Most Influential Programming Book? by Anonymous Coward · · Score: 0

      By L. Ron Hubbard ... never read it, never felt inclined too ... but now since I am here typing I will add my *other* 2 cents. The Mythical Man Month thoroughly pissed me off to know that the dumbness I have to deal with is nothing new.

    11. Re:the Most Influential Programming Book? by MrShaggy · · Score: 1

      I am glad to hear this. I guess that makes me a supresive person..

      --
      I have mod points and I am not afraid to use them.
    12. Re:the Most Influential Programming Book? by Anonymous Coward · · Score: 0

      How about the bible? *ducks* :)

      Yeah, you better run!

    13. Re:the Most Influential Programming Book? by Anonymous Coward · · Score: 0

      I always wanted to be called to testify in court, so I could bring my own bible to swear myself in with!

  35. Stroustrup is a good author by Anonymous Coward · · Score: 0

    For a nonnative english speaker, Stroustrup has a very good command of the english language. It gives appreciation of good code.

  36. C64 related books by VanessaE · · Score: 1

    Namely, the C64 Programmer's Reference Guide, and more importantly, Machine Language for the C64 [...] by Jim Butterfield.

    1. Re:C64 related books by Anonymous Coward · · Score: 0

      Mapping the C64 was one of my favorites, along with both "machine language subroutines" books.

    2. Re:C64 related books by Anonymous Coward · · Score: 0

      Butterfield's books were the bomb!

    3. Re:C64 related books by Anonymous Coward · · Score: 0

      Assembly Language for Kids
      (Awesome illustrations in that book b.t.w.)

  37. Re:Bah! Pretenders! by sconeu · · Score: 1

    Damn straight. You beat me to it.

    --
    General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
  38. Oh! I know! I know! by 50000BTU_barbecue · · Score: 1

    The one you read? As opposed to hollow out to keep a flask of scotch in it?

    --
    Mostly random stuff.
  39. Practical C Programming by Anonymous Coward · · Score: 0

    Practical C Programming by Oulaline

  40. Advanced Unix Programming, by Rochkind by Anonymous Coward · · Score: 0

    My first Marc Rochkind explains the Unix environment and the shell in such a way that you can write your own. It was simply awesome when I was in college. I had a very good understanding of how to write a program to do anything on Unix after walking through that book. Great reference, too.

    Second was the "dragon book" (Aho, Seti, Ullman).

    Third was Richard Stevens "Unix Network Programming" (before there were multiple volumes).

  41. For me it was: Choose your Own Adventure books by GoodNewsJimDotCom · · Score: 5, Interesting

    I never read any programming book that has helped me significantly. But I remember copying code from magazines on a TI-99 before I knew how to do multiplication. I just copied the code one line at a time, and it either ran or didn't. The best thing I could do was print rockets. I didn't understand anything until I was 12 and got the IF-THEN statement. Once I had that, I was able to write branching games similar to my Choose your Own Adventure Books. After that the world was wide open.

  42. How To Win Friends And Influence People - Carnagie by 2TecTom · · Score: 3, Insightful

    In terms of success, people skills are more useful than programming skills.

    --
    Words to men, as air to birds.
  43. The Unix Philosophy by i58 · · Score: 1

    If you haven't read this you're missing out. It's the "why" that you won't find in a mere programming book. They all focus on the "how". It really opened my eyes, and I give a copy to every person that interns with me to read. http://www.amazon.com/UNIX-Philosophy-Mike-Gancarz/dp/1555581234

  44. C++ version by kervin · · Score: 1

    That would be my #1 choice. I've read most of the CS classics, and they're good. But I really *got* programming after reading Deitel's C++ textbook from cover-to-cover attempting at least half the exercises.

    Petzold's Programming Windows comes second place.

    Followed by Knuth's 2nd installation.

    1. Re:C++ version by kulnor · · Score: 2

      I would rather go with a classic here: The C Programming Language Brian Kernighan and Dennis Ritchie http://en.wikipedia.org/wiki/The_C_Programming_Language *K

    2. Re:C++ version by Nirvelli · · Score: 1

      Yes, I found it nice to learn C from the guy who actually invented C.

    3. Re:C++ version by Anonymous Coward · · Score: 0

      Agreed - the C++ version was an absolute classic and invaluable to me when I went from C to C++ - the detail in their explanations is astounding. Their java version was also just as good.

  45. Re:Bah! Pretenders! by Enry · · Score: 1

    Got the first three volumes as a HS graduation present from my parents. Don't use it as much as I should, but that's because I'm not a programmer anymore.

  46. Re:Bah! Pretenders! by Anonymous Coward · · Score: 5, Insightful

    The only CS book where 99% of the people touting it have never read it!

  47. Re:Thanks, GoF, for all the Java and C# bloat. by tha_mink · · Score: 1

    At least the C++ community saw it for the bullshit that it is. While they went somewhat template-crazy at times, at least they managed to avoid the sheer stupidity of "design patterns", for the most part. That's probably why most real software today is written in C++.

    Ouch. So you're one of those then eh. I love how you say the C++ community saw it for the bullshit that it was, but then leave out the part where there have been hundreds of books published that relate the GoF patterns to C++. But then, I guess the Java community probably wrote those books too.

    --
    You'll have that sometimes...
  48. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  49. Re:Bah! Pretenders! by Anonymous Coward · · Score: 2, Interesting

    TAOCP is only useful for college students who want to look smart in the eyes of their clueless classmates.

    In reality, it's terrible from a didactic standpoint. MIX is an impractical and verbose language, and an overall horrible way to explain algorithms to any audience. TAOCP is only interesting for the exercises, which most people will ignore for being too difficult to be solved during a casual read.

    The only reason this book makes Top N lists is because people are intimidated by it, and peer pressure prevents them from treating it like the mess that it is.

  50. The UNIX Programming Environment by drinkypoo · · Score: 1

    UNIX and Unix 4ever

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    1. Re:The UNIX Programming Environment by multipartmixed · · Score: 1

      Wow -- I had no idea it was that old. I made heavy use of it in early '97, when I started hacking a BSDI UNIX system.

      That book, K&R, and "The POSIX Programmer's Guide" by Donald R. Lewine were major influences. Followed shortly by TCP/IP Illustrated and UNIX Network Programming (Stevens, RIP) and Andy Tannenbaum's yellow OS book (Operating Systems: Design and Implementation or something like that)

      --

      Do daemons dream of electric sleep()?
  51. It is about programming by SuperKendall · · Score: 1

    I thought about this one as well but I decided not to post because TMMM is really about program management, not programming, per se.

    It's about programming in the sense that it helps you recognize when you are entering a project that will spiral down, so you can avoid emotional attachment or get out if possible.

    And from the other angle if many developers have read it they can help steer the project away from that course early.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:It is about programming by JeremyMorgan · · Score: 3, Insightful

      The biggest problem with MMM is that software developers and architects are the only people who read it. Managers, especially "non technical" project managers have never heard of it, and won't bother to read it and they are the ones who would benefit from it the most.

    2. Re:It is about programming by lennier1 · · Score: 1

      A kingdom for some mod points!!!!

    3. Re:It is about programming by Wordplay · · Score: 1

      The biggest problem with MMM is that software developers and architects are the only people who read it. Managers, especially "non technical" project managers have never heard of it, and won't bother to read it and they are the ones who would benefit from it the most.

      So, true, so true. I've been in the position multiple times of having to explain why "removing all this useless workteam siloing and hierarchy" or ditching modularization will sink a project. It's really, really difficult to cite a book that came out in the 70s without A) it sounding obsolete and B) making your manager sound like he's an idiot for not having read it yet.

      Protip: if your explanation includes the equation "n * (n -1) * 1/2" they will tune out and your argument will not succeed, however mathematically valid it may be.

    4. Re:It is about programming by Surt · · Score: 1

      You're definitely working with the wrong managers then. Time to jump ship for a place with good management.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  52. Any high school geometry textbook by swalve · · Score: 1

    Seriously, doing proofs taught me more about logic and algorithm and problem solving than anything else. But yeah, also K&R.

  53. Agreed by formfeed · · Score: 1

    In terms of success, people skills are more useful than programming skills.

    I completely agree with you. It's nice to see someone contribute to this discussion who is so clever and intelligent.
    Clever, intelligent, and handsome -if I might say so.

    1. Re:Agreed by 2TecTom · · Score: 1

      You may. ;~) and thank you.

      I appreciate your kind words. Please, drop me a line someday.

      --
      Words to men, as air to birds.
  54. Stevens: Unix Network Programming by Anonymous Coward · · Score: 0

    Vol 1 and Vol 2. Plus TCP/IP Illustrated, Volume 1, 2 and 3.

    If you are doing any network programming, these books are amazing. Plus it all applies to Unix, Linux, Windows, and Mac.

  55. Design Patterns by craftycoder · · Score: 2

    For me it is the Design Patterns by the so-called Gang of Four.
    http://en.wikipedia.org/wiki/Design_Patterns

    1. Re:Design Patterns by CountBrass · · Score: 1

      The big, big problem with Design Patterns is that 90% of them solve problems in the design or implementation of the language.

      The right answer would be to fix the flaws in the language (specifically C++ and Java) that require these kludges and work-arounds.

      --
      Bad analogies are like waxing a monkey with a rainbow.
    2. Re:Design Patterns by craftycoder · · Score: 1

      You might be reading the book wrong. Design patterns ideas are applicable regardless of language. I can design the software one time using these or other patterns and then write it in many languages. They entire point is that there are repeated patterns in computer science as it relates to software that can be informed by learning from what other people have already done again and again.

  56. Turbo C Reference Guide? by innocent_white_lamb · · Score: 1

    My first computer was a Commodore 64 and I learned programming and general computer use on that, and most stuff was either Basic or Machine Language on that. When I got an XT and wanted to learn programming, I looked at both Turbo C and Turbo Basic in the local Radio Shack store (they were side by side on the shelf and exactly the same price, as I recall) and bought Turbo Basic because I figured I knew a bit more about Basic and it would be easier to get started doing things.

    In hindsight I should have bought and learned Turbo C instead. I got to be pretty darn good with Basic programming and wrote some cool stuff with Turbo Basic (including some "shareware" that made a pretty decent buck for a while), but some years later I discovered two things:

    1. C wasn't very hard to learn; in fact it took me less time to "get started" with C than it did when I started learning Basic programming on the XT.

    2. I could do some cool stuff with Basic but similar stuff could be done more easily and directly with C. In other words, stuff that required a lot of "bending" in Basic could just be done in C without much fuss at all.

    So in hindsight, I wish I had read the Turbo C Reference Manual when I first got my XT.

    --
    If you're a zombie and you know it, bite your friend!
    1. Re:Turbo C Reference Guide? by durdur · · Score: 1

      Before Turbo C was Turbo Pascal. And before that, Niklaus Wirth wrote a number of influential books, including "Algorithms + Data Structures = Programs", which includes a lot of the material that an intro CS course still has. But Pascal is not a popular language anymore.

  57. Divide it into 3 categories by antifoidulus · · Score: 1

    I would say you would have to have 3 separate categories for this particular award:

    1. Best computer science/algorithms book
    Here I like MITs Introduction to Algorithms book and of course, Dr. Knuths tomes

    2. Best programming(as in turning algorithms and ideas into computer code) book:
    I am partial to Peter Van Der Lindens work, but thats just me.

    3. Best book about computing in the "real world"
    My vote goes to Mythical Man Month.

  58. Re:Bah! Pretenders! by digitig · · Score: 1

    MIX was intentionally problematic to avoid dependencies on platform assumptions that might not be portable -- a questionable tactic, but it was intentional. For the rest, it's a valuable reference (I've used it since college), but not really didactic.

    --
    Quidnam Latine loqui modo coepi?
  59. Should go to the right by mapkinase · · Score: 1

    No different from any other slashdot poll.

    --
    I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
  60. BASIC by KingKaneOfNod · · Score: 1

    I don't remember any of the book titles, but I do remember borrowing many BASIC books from the local library, entering all the sample code into GWBASIC and then playing around with it to see what I could make it do. I suppose if I'd never found those books I probably would never have gotten into computer programming.

    After that there weren't really any books; when I moved onto Pascal I learnt from some tutorials I found on a BBS, then I learnt C from internet guides and Java from university. Who reads books anymore when all the information you really need to learn this stuff is on the internet, easily locatable via Google?

  61. agree by decora · · Score: 1

    the first 'programming books' that i read were "family and home office computing magazine", typing shit into a ti-99/4a.

    then there were the kids programming books with simple ass little projects.

    later on, there was Babbage's , and the giant purple MSDOS book by Microsoft that nobody remembers

    then the Turbo Pascal 7.0 manual, with its introduction to object oriented programming.

    these grown up "classic" books are just a bunch of egg head bullshit. especially Knuth, the hipster's guide to fucking up software (TeX being the fixed gear cycling of the computer world)

    1. Re:agree by colinrichardday · · Score: 1

      (TeX being the fixed gear cycling of the computer world)

      And what would you use for creating a document that includes mathematics?

    2. Re:agree by znerk · · Score: 1

      ... and the giant purple MSDOS book by Microsoft that nobody remembers...

      ... except for the people who still have one, sitting in a dark corner of the "storage area"...

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    3. Re:agree by HuguesT · · Score: 1

      Excellent analogy between TeX and fixed gear cycling. Fixed gear cycles are what professional couriers use, as well as at speed track competition. Of course it is not for everybody, but for those things it is the only game in town.

  62. Microsoft Visual Basic 6.0: Programmer's Guide by fogbrain99 · · Score: 1

    Influential: Having influence. Nuff said.

  63. representing everything that is soulless and wrong by decora · · Score: 1, Insightful

    the 'gang of four' is a phrase coined during the Culutral Revolution of the 60s in China, a horrifically brutal period in which millions of people died, filled with mass starvation, torture, rape, murder, anarchy, mob violence, chaos, destruction, and other things.

    then some fucktard computer dick comes along and writes a book about some obscure software engineering bullshit. what do they title it? "Gang of Four". oh thats FUCKING HILARIOUS

    what is their next book titled, "Himmler and Heydrich"? I've got an idea! Lets write a garbage collector and call it the "Holodomor"! How fucking tongue in cheek!

  64. Re:How To Win Friends And Influence People - Carna by stox · · Score: 0

    Clue #1 that a poster has not read the book they are touting: The author's name is misspelled.

    --
    "To those who are overly cautious, everything is impossible. "
  65. yeah yeah, someone else applied the phrase by decora · · Score: 1

    to the authors. i got a tiny fact wrong. they got an entire history of a nation of people wrong.

    the soulless amorality of the computer science 'community' beggars belief sometimes.

  66. Code Complete by Rizimar · · Score: 1

    I would definitely say that Code Complete has been one of the most helpful and insightful books that I've read about programming. Reading through it never gets old.

  67. Game Programming Gems by Anonymous Coward · · Score: 0

    Great series encourages you to think deeper.

  68. "Object Oriented Software Construction" by richieb · · Score: 1

    I loved the first edition of this book. This was one of the best introductions to object-oriented programming and Eiffel programming language. Written by Bertrand Meyer.

    --
    ...richie - It is a good day to code.
    1. Re:"Object Oriented Software Construction" by Serif · · Score: 1

      One of the best introductions to good programming practice that I know and it instilled in me some good habits I've managed to hang on to.

    2. Re:"Object Oriented Software Construction" by obsess5 · · Score: 1

      Not read as a beginning programmer, but OOSC is probably the best software engineering book I've ever read. First edition here too. I haven't looked at the second edition, but I imagine the increased size of the second edition dilutes its effectiveness.

  69. Kernighan and Plauger - Software Tools by Old-Claimjumper · · Score: 1

    Addison Wesley 1976.
    It showed the Unix Philosophy to a larger audience than Version 6 could reach at the time.
    Best programming book ever if you want to go for pragmatic influence rather than computer science.
    It also came with the ability to get the code. While the code is now dated, the philosophy is still leading edge. And lots of us played with that code.

    Ah the memories! Fortran was still ubiquitous. It made Fortran usable. Kind of makes me want to go dig up RATFOR and do something...

    1. Re:Kernighan and Plauger - Software Tools by richieb · · Score: 1

      I've read the Pascal version of this book. You are right - it was great!

      --
      ...richie - It is a good day to code.
  70. No time travel needed by Cyrano+de+Maniac · · Score: 1

    Perhaps I was lucky, but I did read the top three books I'd recommend as I was starting my first job:

    1. Advanced Programming in the UNIX Environment, W. Richard Stevens. This was influential in teaching me what clean functional programming interfaces look like, and hopefully the code I've developed since then has lived up to that ideal.

    2. Network Programming in the UNIX Environment, W. Richard Stevens. Much the same as the first title, but in some ways illustrating programming interfaces that tackle more complex/flexible situations.

    3. Writing Solid Code. Steve Maguire. Fifteen years later I still daily use a few of the ideas presented in the title. However it also served to show me the ugliness of some programming conventions (e.g. Hungarian Notation and StudlyCaps()) and led me to avoid those practices in my own code when I have a choice (i.e. when not having to conform to the style of existing code).

    --
    Cyrano de Maniac
    1. Re:No time travel needed by arwild01 · · Score: 1

      APUE is awesome. I actually learned a lot of perl by reading APUE. Which might not make sense on the surface, but perl support so much of the standard system calls and APUE is so well written that you can understand the concepts without having to depend on the exact examples.

    2. Re:No time travel needed by obsess5 · · Score: 1

      I liked WRITING SOLID CODE when it came out, but, for some inexplicable reason, Maguire made the same mistake (in one of the footnotes, IIRC) I had to keep correcting our company's GUI programmer about every six months. You've got a hierarchy of GUI objects; each object has two links, one to the first child and a second to the next sibling. Two links?! Why, we can use a binary-tree algorithm to traverse the tree. No, no, no - logically it is not a binary tree despite having two links in each node and performing a binary-tree traversal makes no sense (and potentially leads to a deep stack of recursive calls). That our company's GUI programmer would read Knuth every six months and regurgitate this idea didn't surprise me, but I expected better from one of Microsoft's supposed top programmers.

  71. Any Book on Negotiating Effectively by Anonymous Coward · · Score: 0

    It seems that most things at work have to be negotiated: technologies used, features to implement, costs, what I'm going to do, what you're going to do, when it'll be done, how it'll be done, how we will know it was done right, etc.

  72. It may seem odd by Arran4 · · Score: 5, Interesting

    It may seem odd but I would say Godel Escher Bach. I can't really think of any other book that I would consider worth while reading at the start of my carear. (I am actually thinking of before my college education.)

    1. Re:It may seem odd by Anonymous Coward · · Score: 0

      I was going to suggest GEB, but for different reasons. It is a constant reminder that you might be looking at the problem at the wrong level.

  73. Knaster, "How to Write Macintosh Software" by dpbsmith · · Score: 5, Interesting

    No, not very influential outside the Mac community, not all that influential within it. But the as posed here in Slashdot, "if you could go back in time," this is the one, and not because of what it had to say about the Mac, but because it is the only book I've ever read that truly accepts the idea of debugging. Every other book carries the implied notion that you should concentrate on writing bug-free software, and that a good programmer really ought to be able to do it.

    About half of the book was devoted to debugging, and it is my personal surmise that the book was originally entitled "How to Debug Macintosh Software" and that the publishers made him change it. Some might charge that the way Mac software was at the time--A5 worlds, very little RAM to spare, and somewhat finicky memory management--writing Mac software intrinsically required more debugging than other environments. It doesn't matter.

    What matters was that this is the only book I read that honestly and truly embraced debugging as a fundamental and legitimate part of the software development process.

    1. Re:Knaster, "How to Write Macintosh Software" by Smurf · · Score: 1

      About half of the book was devoted to debugging, and it is my personal surmise that the book was originally entitled "How to Debug Macintosh Software" and that the publishers made him change it.

      I didn't know about Knaster's book, but looking it up on Amazon is see that at least the second and third editions (1988 and 1992) were subtitled "The Debugging Reference for the Macintosh", so your comment may be spot on.

    2. Re:Knaster, "How to Write Macintosh Software" by Anonymous Coward · · Score: 0

      I loved that book. Don't think I'd put it in front of K & R though.

    3. Re:Knaster, "How to Write Macintosh Software" by Anonymous Coward · · Score: 0

      A book from Apple that's readable?!?!

    4. Re:Knaster, "How to Write Macintosh Software" by Anonymous Coward · · Score: 1

      > A book from Apple that's readable?!?!

      You forget how old this is. Back in the late '80s, early '90s, Apple produced high quality documentation and sample code. Developers had a great sense of humor and made coding playful and fun. The focus on quality was still there.

      Not to mention this book was published by Hayden before Addison-Wesley got it. Plus your obvious trolling is obvious.

  74. Pleasantly Free of Trendy Process Related Titles by awrc · · Score: 3, Insightful

    It's nice to see the almost complete absence of any titles reflecting current "flavor of the month" development techniques. About the closest it gets is "Design Patterns", which I've not got the highest opinion of (for reasons I'll explain in a footnote) but which at least codified some common best practices in a way that they could be taught, rather than learned by trial and error.

    Always been a bit bemused by "Code Complete". Read it (well, the first edition), enjoyed it, and thought it contained a lot of good stuff, but at the time I was perplexed by it being a Microsoft Press book. Seemed kinda like the Pope penning the definitive case for atheism.

    Somewhat comforted to see The Dragon Book in there, even if it is in its newer edition. Think I've still got that one around. That, and the Hennessy and Patterson book "Computer Architecture: A Quantitative Approach". My edition's horribly out of date, but so am I..

    (*) Big problem with design patterns is that there's a tendency to take them as Holy Scripture of some sort, and/or to unnecessarily squeeze algorithms into a given design pattern. However, the problem there doesn't really lie with the book, but with the reader (or the teacher of the course, I guess). "Design Patterns" strikes me as something that should be read after a decent level of programming ability has been reached and not before - there's a level of expertise required to know when using a pattern that'll make maintenance of the software a joy for all who touch the code, and when to just wing it. Too many people immediately jump in and conclude that they must use a Visitor pattern on each Decorator, except where there's a Mediator involved, in which case it's necessary to employ the Churning Curds and The Knot Of Fame, before finally employing The Clinging Creeper to either a Flyweight object for the Proxy, or an Abstract Singleton. Then they code it, and you end up with an exponential number of classes, several mutually inclusive interfaces, and a system so flexible that you have to embed a dedicated parser to make any use of it beyond initiating a single object.

  75. Missed the boat by njk · · Score: 1

    You missed the boat if you havent read any Richard Stevens. ANY decent bit of *nix network code has benefited from "UNIX Network Programming", it geek-e-ly changed my life.

    My wife still hates it when I bring that book to bed.

    1. Re:Missed the boat by kayumi · · Score: 1

      > You missed the boat if you havent read any Richard Stevens.
      I agree.
      > My wife still hates it when I bring that book to bed.
      Here I side with your wife. (Hide the book until she is asleep.)

  76. mod parent up. by JoeCommodore · · Score: 1

    Me too, seeing how easy BASIC was got me interested in writing programs, then from there I wanted to learn more. So the book from high school computers, Hands on BASIC with a PET by Pelkham, while no where near a definitive guide was greatly influential That and David Ahl's BASIC Computer Games compilation books.

    --
    "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
    1. Re:mod parent up. by TheGoodNamesWereGone · · Score: 1

      Yep, BASIC Computer Games by David Ahl..... I'm not a professional programmer today, but those (and the Sinclair User's Manual that came with my ZX-81) were what I learned on.

  77. The Elements of Computing Systems by Anonymous Coward · · Score: 0

    The Elements of Computing Systems: Building a Modern Computer from First Principles. I don't think that I've purchased another book that has a more complete look at modern computing.

    -Josh

  78. GoF by Anonymous Coward · · Score: 0

    maybe?

    1. Re:GoF by luis_a_espinal · · Score: 1

      Good choice.

  79. Re:Thanks, GoF, for all the Java and C# bloat. by guybrush3pwood · · Score: 1

    Please login before trolling.

    --
    Perhaps I'm trolling, perhaps I'm not.
  80. Re:Bah! Pretenders! by 2.7182 · · Score: 1

    As someone interested in algorithms, and the sorts of things in Knuth (complexity, number theoretic things, etc.) I have to agree. It's a huge mess that no one is willing to criticize and fewer people read. You're better off starting with a book by Herb Wilf, Dexter Kozen or any of a dozen other well written books. Note that this also goes for Knuth's Discrete Math book.

  81. The Mythical Man-Month by luis_a_espinal · · Score: 1

    .. and also "Pitfalls of Object Oriented Development" by Bruce Webster.

  82. I might as well say by NotSoHeavyD3 · · Score: 1

    The best book on programming for the layman is "Alice in Wonderland"; but that's because it's the best book on anything for the layman.

    --
    Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
    1. Re:I might as well say by pamar · · Score: 1

      The best book on programming for the layman is "Alice in Wonderland"; but that's because it's the best book on anything for the layman.

      Are you Alan Perlis?

    2. Re:I might as well say by Samantha+Wright · · Score: 1

      I was going to post something along these lines, decided to search for "Alice" just to be safe... and lo, I was beaten to the punch.

      It's definitely been far more influential than any actual programming book, regardless of any (heretical) challenges to its status as best. Although I might have to give some serious adoration to Through the Looking-Glass, since (amongst other things) it includes an introduction to the concept of names as independent entities. Both are totally infused with extremely insightful and poignant lessons in clear thinking.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
  83. Continuous Delivery by Anonymous Coward · · Score: 0

    by Jez Humble, David Farley

    It's not the programming book that most undergraduates are accustomed to...but it will be!

  84. Mine are: D. Hofstadter & A. Tanenbaum by Anonymous Coward · · Score: 0

    Gödel, Escher, Bach: An eternal golden braid.
    Modern Operating Systems.

    1. Re:Mine are: D. Hofstadter & A. Tanenbaum by colinrichardday · · Score: 1

      I just don't see Linus including the latter. :-)

  85. There's Fifty Five of Them by Anonymous Coward · · Score: 0

    Facts and Fallacies of Software Engineering by Robert L. Glass (forward by Alan M. Davis)

  86. Gang of Four (Was Re:Deitel & Deitel) by Anonymous Coward · · Score: 0

    For me, it was Design Patterns: Elements of Reusable Object-Oriented Software by gang of 4

    1. Re:Gang of Four (Was Re:Deitel & Deitel) by Cederic · · Score: 1

      That's not a "When you first started programming" book though. That's a "When you've been programming for 1-2 years" book.

      It's pretty much essential then though. Along with Fowler's Refactoring, and The Pragmatic Programmer, all of which add far more value when encountered a year or two into a programming career.

  87. No by edalytical · · Score: 4, Insightful

    Honestly, those are terrible books. If nothing else the signal-to-noise ratio is extremely disproportionate. I mean there are nuggets of good information in the books, but a 1100+ page language tutorial is unnecessary. It would be a stretch to call the series programming books -- let alone "influential" programming books.

    --
    Win a signed Stephen Carpenter ESP Guitar from the Deftones: http://def-tag.com/?r=0008781
    1. Re:No by Daimaou · · Score: 1

      I completely agree! The only thing I recall learning from a Deitel & Deitel book was a deep appreciation for authors who could quickly get to the point.

    2. Re:No by timotten · · Score: 1

      Honestly, those are terrible books. If nothing else the signal-to-noise ratio is extremely disproportionate. I mean there are nuggets of good information in the books, but a 1100+ page language tutorial is unnecessary. It would be a stretch to call the series programming books -- let alone "influential" programming books.

      Speaking from my experience with the Deitels' C++ book in my first-year programming course, I'll agree that the book perhaps lacked some academic artfulness, that it might not help an already-skilled practitioner, and that I wouldn't read it again. But I loved it at the time -- it was fun to read, it had a sort of progression or flow that was easy but rewarding. More importantly, all those lengthy code snippets help the reader become *conversant* in the language. It's one thing to learn the grammar and basic vocabulary of a new language (which you can do quickly); it's another thing to read a novel, write a poem, watch a movie, or chat up a stranger in a new language.

    3. Re:No by Anonymous Coward · · Score: 0

      Speaking from my experience with the Deitels' C++ book in my first-year programming course, I'll agree that the book perhaps lacked some academic artfulness, that it might not help an already-skilled practitioner, and that I wouldn't read it again

      I remember taking a C course that used C: How to Program and I absolutely hated that text.

      The Deitels spent far too much time explaining and re-explaining things that should have been evident from a single paragraph and/or example, and left far too many questions unanswered about how the language actually works. It was painful.

      I almost dropped the course over it, but instead I borrowed a copy of K&R 2nd and read it over a single weekend. After that, I had no problem completing the Deitel exercises and class projects.

  88. Re:My number 1 choice by Billly+Gates · · Score: 1

    Seriously that book is loaded. I mean loaded with 10k lines of code! Very detailed oriented if you ever want to dig deep and try some excersizes as well as skip some.

    Too bad my ex has my Dietel and Dietel how to program C++ and Java books. Nothing online compares to the detail of these books

  89. Re:Bah! Pretenders! by Billly+Gates · · Score: 0

    Knuth teaches goto statements so I wouldn't listen to him or read any of his works. All the other books and any computer science professor will tell you gotos are bad and unstructured.

  90. Data Analysis for Database Design by Kittenman · · Score: 1
    David Howe. I got a job as a DBA in an interview in the UK, read this in the plane on the way to take it up and it helped no end. Lucky it was a long flight :)

    Oh, you said programming... well, database design is important too.

    --
    "The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
  91. Injection Moulding by Anonymous Coward · · Score: 0

    Intertech Machinery Inc. provides the most precise Injection Mould andRubber Molds from Taiwan. With applying excellent unscrewing device in molds,
    Intertech is also very professional for making flip top Cap Molds in the world.

  92. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    And yet, for others of us, it was our starting book back in the 80's.
    Windbourne - moderating.

  93. The classics never go out of style.. by JeremyMorgan · · Score: 1

    I was just having this conversation with some colleagues the other day. Without a doubt, Code Complete tops the list for me, though admittedly I have not read it cover to cover, nor do understand or even implement everything in it. But it's great.

    Also:

    TAOCP - I'm one of the few programmers out there who will sacrifice my ego and admit there is a lot of it I don't understand completely. But it really is a timeless and valuable book.

    Code Complete - Can be applied to programming in many different languages and offers a fresh way of looking at problems.

    The Mythical Man Month - Ok, so not as technical but amazingly accurate in discussing software projects and how they progress in real life.

    Object Oriented Thought Process (Matt Weisfeld) - This isnt as well known, but was my first introduction to true OOP programming, and offers a clear, concise explanation of it.

    K&R - A little dated, but the concepts are still great. Not exactly a beginner book and focused on C, but could be applied to just about any language to make you solve problems better.

    Newer Stuff

    Anything Deitel - These books are expensive but incredibly detailed and packed with great information.

    Head First Design Patterns - I already had a good understanding of them previous to reading the book, but had I read it first I would have much smarter, much earlier.

  94. most influential?? by Anonymous Coward · · Score: 0

    The Psychology of Computer Programming: 1971. Recently reprinted. Excellent.

  95. books Brian Kernighan helped create by Anonymous Coward · · Score: 0

    Programming in C and Software Tools are two that he wrote, but he's also been editor or reviewer for a staggering number of classic C and Unix books published by Addison Wesley over the last three decades, including all of W. Richard Stevens' books IIRC.

    Kernighan's involvement is practically proof that a book is worth careful study.

    As for Addison Wesley, their track record has been pretty good, but they've also pushed a lot of fluffy books on agile/extreme programming and similar fads over the years, usually with price tags like $34.95 for a 200 page trade paperback.

  96. Teach yourself X in 24 hours by amiga500 · · Score: 1

    Seriously, how many other professions have such books? Teach yourself brain surgery, teach yourself plumbing, teach yourself law... No ours is the only profession in which someone can think themselves an expert in a few weeks time. The good thing is many people can improve their lives by studying one of these books and switching jobs. The bad thing is this may be part of why CS graduates have been declining.

    1. Re:Teach yourself X in 24 hours by prefec2 · · Score: 1

      If you use a MSc in CS only for programming, then it was a waste of time. The same is true to some degree also for BSc of CS. However, an untrained person with just a programming in X handbook can never compete on the skill level with a BSc in CS. At least if the university was anything worth it.

      As a BSc you know:
      - Some math: at least some basic graph theory, linear algebra, analysis
      - Some theoretical CS: turing machines, automata, grammars at least C3 and regular grammars, my-recursion
      - One or two programming languages which you used in different courses (e.g. Java and Prolog/Scheme etc.)
      - Basic principals of operating system design, databases, and UML (even though nobody uses it for real work ;-))
      - A few pointers in the direction of software engineering
      - A few pointers to the topic programming paradigms.

      And therefor you should easily outperform an handbook X reader.

  97. Re:Pleasantly Free of Trendy Process Related Title by JeremyMorgan · · Score: 1

    I agree with your view on Design Patterns completely, but never really saw it put into words like that. For a giant project that's going to evolve and have lots of people working on it over time, it only makes sense to use patterns and practices based on others who have solved that same problem. However the tendency to over complicate more simple projects to fit in with a set of patterns can end up being counterproductive and a huge waste of time. Sometimes an application really is so simple that just breaking something into a couple of classes and documenting it good is all you'll ever need to do with it.

  98. Javascript for dummies by Osgeld · · Score: 2

    Apparently its the only book sold

    1. Re:Javascript for dummies by arth1 · · Score: 1

      I saw that title and nodded in agreement.

  99. Re:Bah! Pretenders! by Anonymous Coward · · Score: 1

    Heh.

    For someone seriously interested in programming and CS in general, this is a book(s) that has few equals.

    Yes, it takes careful reading, more than a bit of math and the exercises are sometimes more than difficult.

    So its tough, sometimes absurdly so, but it also covers so much and so well. Those intimidated by it are often poseurs - claiming to be serious computer types, but lacking in understanding and ability.

  100. Jon Bentley, Programming Pearls by rglarson · · Score: 1

    I'm an old geezer (I've been programming for 50+ years, starting with the UNIVAC I), but by far the most thought-provoking and "educational" book for me has been Bentley's Programming Pearls -- I currently have a copy in my bedroom along with the 3 volumes of Knuth!

  101. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    MIX was intentionally problematic to avoid dependencies on platform assumptions that might not be portable -- a questionable tactic, but it was intentional.

    Do you realise just how absurd this is? An author decides to create a fictitious language with which to describe a concept. That is perfectly fine. Many ideas in mathematics and science become dramatically easier to convey when described with a well designed language or notation. However, the author makes the language intentionally verbose and difficult to comprehend, greatly compromising the primary purpose of the book.

    This does not make *any* sense, unless Knuth was trying to troll generations of students who were too insecure to admit they couldn't understand MIX, or posers who used TAOCP to brag to their classmates.

  102. No Assembler? by Khyber · · Score: 3, Interesting

    No ASM programming?

    Enjoy being useless when you need to work at the bare-metal level.

    Also, enjoy being dog-ass slow and having boated code.

    For a perfect example of why ASM rocks, see MenuetOS.

    --
    Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    1. Re:No Assembler? by thryllkill · · Score: 1

      No ASM programming?

      Enjoy being useless when you need to work at the bare-metal level.

      Also, enjoy being dog-ass slow and having boated code.

      For a perfect example of why ASM rocks, see MenuetOS.

      In everyone's defense, the question asked wasn't about languages, but about books. I can't (and this isn't surprising) think of any legendary ASM programming books. I am currently enjoying trying to work my way through Assembly Language Step-by-Step: Programming with Linux, Third Edition by Jeff Duntemann.

      If you want to, please reply with other good ones I should check out.

      --

      Note to self: No more arguing with the faithful.

    2. Re:No Assembler? by Anonymous Coward · · Score: 0

      comments like this are the only thing that redeems slashdot, when it is awash in a hideous mire of stories like: "zomg! faecbook vs. google+, who will win??? find out @ 11!"

    3. Re:No Assembler? by uop · · Score: 2

      Assembly fan here.
      Specifically, the Graphics Programming Black Book (Michael Abrash) was extremely influential in my case. Some of the self modifying code examples were true genius.

    4. Re:No Assembler? by mpaque · · Score: 1

      No ASM programming?

      That would be Knuth, of course. MIX, or, starting Volume 4 and the eventual Ultimate Edition of Volumes 1-3, MMIX.
      The development of hardware capable of using this assembler is an exercise left to the reader.

    5. Re:No Assembler? by Anonymous Coward · · Score: 0

      Enjoy getting modded 'troll'.

    6. Re:No Assembler? by Anonymous Coward · · Score: 0

      Keep telling you that :)

    7. Re:No Assembler? by Anonymous Coward · · Score: 0

      For embedded systems, fine.

      I'd like to see you take advantage of SSE4 in pure assembly, though. Large, convoluted ISAs like x64 demand compilers, and those compilers can probably produce better assembly than you can.

    8. Re:No Assembler? by Anonymous Coward · · Score: 0

      When I was still using assembler, I liked the Book "Turbo Pascal tunen mit (with) Assembler" (a German book), but nowadays, the closest I get to the metal is by the use of SSE intrinsics.

    9. Re:No Assembler? by betterunixthanunix · · Score: 1

      Not sure if you are trying to be funny, or just trolling, but at the risk of being trolled or whooshed I will say that perhaps you should look at a modern compilers textbook. Actually, since this is a discussion about influential books, you should see either the Dragon book or the Tiger book.

      --
      Palm trees and 8
    10. Re:No Assembler? by Anonymous Coward · · Score: 0

      Also, enjoy not doing any useful work because you don't even have a basic c library.

    11. Re:No Assembler? by obarel · · Score: 1

      The Black Book taught me the most important lesson in programming: You have so much more to learn...

      I had the same feeling when I opened Advanced Spectrum Machine Language (opened, not understood).

    12. Re:No Assembler? by Khyber · · Score: 1

      Actualy, I guess you bothered to *NOT* look at MenuetOS.

      Otherwise you'd see you're 100% wrong.

      And we've been doing useful work since well before C, child.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    13. Re:No Assembler? by Anonymous Coward · · Score: 0

      I absolutely HATE boated code.

    14. Re:No Assembler? by mfnickster · · Score: 1

      Sorry to barge in here, but I just skiffed through the GP's comments and I think he's a little dinghy.

      The schooner you learn to optimize, the less boated your code will be, and you won't have to scow-er it for bugs constantly. Yacht to be able to minimize the footprint without having to punt.

      --
      "Slow down, Cowboy! It has been 3 years, 7 months and 26 days since you last successfully posted a comment."
    15. Re:No Assembler? by theArtificial · · Score: 1

      The recommendations will depend what you are trying to do. I own the second edition of ALSbS and I enjoy Jeff's writing style. The Art of Assembly Language with its HLA (High Level Assembly) can get you up and going pretty quickly. Although I had an interest in Windows applications and Mastering Turbo Assembler (2nd Edition) [Sams] is another awesome book, a little dryer is The Revolutionary guide to Assembly Language [Wrox] however you're in 16bit land with that one.

      --
      Man blir trött av att gå och göra ingenting.
    16. Re:No Assembler? by Anonymous Coward · · Score: 0

      Have you ever written any ASM?

  103. The Bible, then the Koran, then Mein Kampf then.. by Anonymous Coward · · Score: 0

    Well, the list goes on, but they've been programming people for centuries in some cases, billions of people.

    Oh wait, did you mean some OTHER kind of programming?

  104. Zen by Anonymous Coward · · Score: 0

    Michael Abrash, "Zen of code optimisation"
    1996: I thought I was a good programmer.
    This book really shook many ideas I had and my vision is still influenced.
    The lesson : look at what the algorithm really does and build everything around it.

  105. Re:Stackoverflow answered this one already years a by Anonymous Coward · · Score: 0

    Slashdot stopped being a technology site ages ago. Rare stories like this one are more about the nostalgia aspect. One can almost hear the editors thoughts: "Remember being a nerd... 10+ years ago? How quaint that was."

  106. Personally? From a hackers perpspective? by sl4shd0rk · · Score: 1
    --
    Join the Slashcott! Feb 10 thru Feb 17!
  107. Peter Norton by Anonymous Coward · · Score: 0

    The Peter Norton Programmer's guide to the IBM PC.

    A.K.A. the pink shirt book.

  108. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    the 'gang of four' is a phrase coined during the Culutral Revolution of the 60s in China, a horrifically brutal period in which millions of people died, filled with mass starvation, torture, rape, murder, anarchy, mob violence, chaos, destruction, and other things.

    then some fucktard computer dick comes along and writes a book about some obscure software engineering bullshit. what do they title it? "Gang of Four". oh thats FUCKING HILARIOUS

    what is their next book titled, "Himmler and Heydrich"? I've got an idea! Lets write a garbage collector and call it the "Holodomor"! How fucking tongue in cheek!

    Well, are the authors murdering, torturing and raping people? You're judging them because of the name they've picked?

    Hey, if people want to call themselves after Himmler and Heydrich while giving a positive contribution to society more power to them. I judge people based on what they do, not based on their sense of humor. It's not immoral for me to publish a computer science book and use the pen name of Adolf Hitler.

  109. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    Those intimidated by it are often poseurs - claiming to be serious computer types, but lacking in understanding and ability.

    I think you've just described the majority of people who recommend this book, having never read it. People who are intimidated by a book just shy away from it and don't actively bring it up to make themselves look smart.

  110. Starting Forth by nkuitse · · Score: 3, Insightful

    Starting Forth by Leo Brodie -- especially the "under the hood" chapter. Runner-up for me is the PostScript Language Tutorial and Cookbook. These books gave me whole news way of thinking about programming, which doesn't happen very often.

    1. Re:Starting Forth by NoNonAlphaCharsHere · · Score: 1

      Completely agree. Starting Forth is one of the best books ever written for how to look at (and into) a problem, break it into manageable chunks, and write a program to solve it. It's really a shame that no one here will ever read it.

    2. Re:Starting Forth by bre_dnd · · Score: 1
      It's been updated and republished as http://home.iae.nl/users/mhx/sf.html

      See also the companion volume Thinking Forth, on http://thinking-forth.sourceforge.net/

    3. Re:Starting Forth by jasenj1 · · Score: 1

      Starting and Thinking Forth were two of my very early computer books. I'm sure I've forgotten everything I read in them, but I'm also sure some of the info has engrained itself in my programming instincts.

      I actually had a job in college writing Forth for a satellite dish controller.

      I'm currently reading "Code Complete". Great stuff.

  111. Norton, Duntemann, & Eckel by RandCraw · · Score: 2

    The books that first grounded me in the hard and software of computing were "Peter Norton's Guide to Programming the IBM PC", Jeff Duntemann's "Complete Turbo Pascal" and , and Bruce Eckel's "Using C++" and "Thinking in C++".

    Each of these books are paragons of clear writing and thought, conveying much more than the rudiments of their topic -- the years of experience and practical perspective of each of the authors.

    I began my software career reading these books (ca. 1985), eventually completing a formal MS in CS. Yet sometimes your greatest influences arise not from ivory towers but from the school of hard knocks.

    1. Re:Norton, Duntemann, & Eckel by Hooya · · Score: 1

      I second "Thinking in C++" except for its craptastic typesetting. The content more than makes up for it though. However, If C++ is not your cup of tea. I'd presume "Thinking in Python" would be of similar high calibre. He does state that it's not a beginning book. But if you can grok Eckel's books, you can be sure that you've really understood the concepts - at least it was like that with the 2 C++ books.

      after that, i'd say PAIP for those willing to go slightly off the beaten track. Once you have a handle of LISP (gasp!), any "new" language feature you might encounter in newer languages will not be intimidating.

  112. Reliable Software Through Composite Design by Latent+Heat · · Score: 1
    Years before Design Patterns there was Glenford Myers, Reliable Software Through Composite Design.

    Some of the concepts are dated as the concepts of objects have superceded the types of non-object or pre-object modules in Myers' world. But the power of this book is not algorithms, not on using goto or not using goto statement, not on the merits of any particular programming language. It is that if you are to code anything but the most trivial computer program, you are going to have to figure out how to divide it into managable pieces and then have the pieces work together.

  113. The problem by slapout · · Score: 2

    The problem with choosing some of these books is that they won't make as much sense until you've had some programming experience.

    --
    Coder's Stone: The programming language quick ref for iPad
    1. Re:The problem by ripdajacker · · Score: 1

      Exactly. Introduction to Algorithms is a great book for learning algorithms, but it's useless if you don't know a programming language.

  114. BBC Micro User Guide by williamhb · · Score: 4, Funny

    And yet, for others of us, it was our starting book back in the 80's.

    More realistically I think for my generation in the UK, this was our starting book. But in mitigation, expecting six year olds to read Knuth might have been a bit much!

    1. Re:BBC Micro User Guide by Anonymous Coward · · Score: 0

      This one got me hooked....

      http://fjkraan.home.xs4all.nl/comp/zx80/om/#ITER

  115. Influential to whom? by Smirker · · Score: 1

    The first programming book I ever read was "The Complete Idiot's Guide to QBASIC." It was great for me when I was 8 years old, taught me what the word "pizzazz" meant and to this date, remains the only book on programming I have read to completion (and I'm a recent honours grad.)

  116. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    Design patterns have raped, murdered, tortured, enslaved and brought chaos to many thousands of software projects around the world. Nothing else has come close to causing so many problems.

    Design patterns have given dipshits and fools a false sense of ability. They can spew out the names of the patterns, and somehow think this will lead to maintainable, reliable, and otherwise good software. Little do they realize that what they produce is total crap. It always is. Their use of design patterns absolutely everywhere just makes it so much worse.

  117. One of my favorite programming texts by mooingyak · · Score: 1

    Was William B. Jones's "Assembly Language for the IBM PC family"

    While I don't do assembly at all professionally, after reading through this one it made me wish the author had written stuff on some other languages too.

    --
    William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
  118. Numerical Recipes in C (Press et al) by Anonymous Coward · · Score: 0

    Admittedly the C is very Fortran-esque, but of all my CS books, this is the one that is the most worn out. That and the C std-lib book that goes with the ANSI update to the K&R classic.

  119. Re:No Indeed good sir by JavaManJim · · Score: 4, Insightful

    Agreed, a little known book for C++ from the ground up. Is an extremely well organized book "Starting Out With C++" by Gaddis. Dietel and Dietel C++ is manageable but its a thicket of information that makes it tough for some (I have gone through Deitel C++ and Dietel Java). There are a thousand books on C++ and probably a thousand squared number of paths to learning C++. Whatever your C++ journey, have fun!

    The C classic is wonderful The C Programming Language Brian Kernighan and Dennis Ritchie.

    Knuth is computer philosophy. Makes your soul shine. Treat it like philosophy, read it at leisure and think hard about every word on every page.

  120. On a tangent but most important by Serendip7 · · Score: 3, Interesting

    After years of programming I have to say the most influential book for me by far is "The Design of Everyday Things" by Donald Norman. In the end, you're designing a tool for someone... whether it's a end user or an api. The days of control-alt-delete are over... or at least they should be. Thinking about the user interface (whether it's mechanical, gui, api,or sdk) should not be something the programmer slaps on after the functionality is completed.

    1. Re:On a tangent but most important by gr8dude · · Score: 1

      If you liked that one, then you simply must read "The humane interface" by Jef Raskin. It offers several key ideas which will help you make a better interface (modeless interfaces, interface monotony, interface efficiency, etc); his examples are very clear. The book is fantastic, you'll really like it .

      You can have a look at my list here: goodreads.com/gr8dude (the tags are not added to all the books, so you'll have to find the tech-ones by browsing the entire list).

  121. Re:Pleasantly Free of Trendy Process Related Title by AuMatar · · Score: 1

    That's definitely a problem with people reading it when they're not yet at an architectural level to understand it. You aren't supposed to look at a problem and ask "What patterns can I use?". You're supposed to come up with a solution to a problem, realize that it's forming a pattern, and use that to both describe the solution to others and to identify potential strengths and weaknesses of your solution.

    Unfortunately too many people without much architecture ability read it and try to apply it to a problem rather than to their solution, leading to a lot of pain. Also leading to my least favorite interview question "What's your favorite design pattern?". The only correct response- "The one that solves my problem".

    --
    I still have more fans than freaks. WTF is wrong with you people?
  122. Re:Stackoverflow answered this one already years a by Anonymous Coward · · Score: 0

    Did you bother with the OP? It's a link to internetsecuritydb.com linking to the stackoverflow.com post you linked to.

  123. Bookstore stats by CODiNE · · Score: 1

    If you wanna go with most reads in a bookstore coffee shop you really must include something like "Learn Java in 21 days". MILLIONS must have read that baby back in the day.

    --
    Cwm, fjord-bank glyphs vext quiz
  124. The Devil's DP Dictionary by Anonymous Coward · · Score: 0

    by Stan Kelly-Bootle
    e.g.

    Loop, infinite
            n. See infinite loop.

    Infinite loop
            n. See loop, infinite.

  125. Design Patterns: Elements of Reusable Object-Orien by Anonymous Coward · · Score: 0

    This book will give you the tools solve complex problems, with out scratching your head too much ;)

  126. Non-obvious answer by Anonymous Coward · · Score: 0

    Harry Potter. Think about it...

    THINK ABOUT IT!

  127. How to solve it... by Anonymous Coward · · Score: 0

    For me it was and will be Dromey's How to Solve it by Computer

  128. Algorithms+DataStructures=Programs; Wirth by martyb · · Score: 2

    Algorithms + Data Structures = Programs by Niklaus Wirth

    I read this book back in the late 1970's. (I was still in High School where we had time-shared access to a PDP/11-70 running RSTS/E. Programming was in Basic-Plus. To put this in perspective, this was the same time frame as the TRS-80, TI 99/4A, and Commodore PET!) Our SysOp at SPHS saw my voracious appetite for all things computing and STRONGLY encouraged me to get and read this book. (Thanks Mike!) But enough with the background!

    This book made an indelible impression on me. It introduced different approaches to tackle problems (algorithms) and different ways of organizing the information I had available (data structures). But, most importantly, it encouraged me to iterate between the Data and the Code to find a reasonably optimal synthesis of the two.

    Prior to this, my experience with data structures had been limited to "scalars" (integers, floating point, and some character strings) and multi-dimensional arrays. It was a real eye-opener to be exposed to structured records as well as linked lists and trees!

    Similarly, my coding experience was limited to combinations of the usual control structures of sequences, conditional statements, looping, and subroutines/functions. Did I ever struggle trying to understand recursion!

    Then, toss in a generous helping of structured programming and step-wise refinement. This single work completely transformed my perspective on programming, its challenges, and its promises... I was hooked for good!

    Amazon Link. Prentice-Hall 1975; ISBN 0-13-022418-9; 366 pages, 102 figures.

    I later had the good fortune to read a number of the other books recommended here, K&R, TAOCP, Mythical Man Month, and I'd highly recommend those, as well. Nevertheless, I read Wirth's A+DS=P first, and it's made a world of difference in my life.

  129. How to Rape Your Sister and Get Away With It by Anonymous Coward · · Score: 0

    It was written by Kent Beck, and is quite easily his best work.

  130. Best thing ever made with a Microsoft logo by BlackSabbath · · Score: 1

    Code Complete is the only programming book I read (almost) cover to cover after I was already working as a developer. Truly the bible of programming (as opposed to the bible of X programming language). As a largely self-taught programmer (does 1st year Fortran and Pascal count as a CS education?) it neatly captured most of the lessons I had painfully learnt over a 10 year period. Once I read it, I thought "why the hell isn't this force-fed to every CS student?".

    Apart from that, K&R's C book was one I kept going back to as I was only an occasional C programmer. Lean but information dense.

    1. Re:Best thing ever made with a Microsoft logo by cffrost · · Score: 1

      Code Complete [...]

      Seconded. Code Complete improved the quality of my work more than any other book I've read. It's worth its weight in high-quality code you wrote after reading Code Complete.

      https://secure.wikimedia.org/wikipedia/en/wiki/Code_Complete

      https://thepiratebay.org/torrent/4168190/Code_Complete__2nd_Edition_(2004).chm

      --
      Thank you, Edward Snowden.

      "Arguments from authority are worthless." —Carl Sagan
    2. Re:Best thing ever made with a Microsoft logo by damian2k · · Score: 1

      Jeffrey Richter's books on CLR C# development (.NET) are also excellent - they cut through so much crap its unbelievable. They are specific to one technology, but do the job very well.

  131. Re:Thanks, GoF, for all the Java and C# bloat. by MagikSlinger · · Score: 1

    It's funny. You talk like you know what you're talking about, but you clearly don't. -- MagikSlinger: C++ programmer for 20 years, and Java programmer for 10 years.

    --
    The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
  132. My votes for most influential books by Anonymous Coward · · Score: 0

    K&R
    Code Complete

  133. Re:representing everything that is soulless and wr by craftycoder · · Score: 1

    Drink some Sanka buddy.

  134. Thinking Forth by tkprit · · Score: 1

    not even sure it's available anymore; but that, and maybe the 16-bit DOS art of assembly.

  135. A FORTRAN Coloring Book by ccandreva · · Score: 1

    I'm surprised no one has mentioned "A FORTRAN Coloring Book." Yes, it's a real book: http://www.seas.gwu.edu/~kaufman1/FortranColoringBook/ColoringBkCover.html

    I would call it influential due to the imitators it had in the end-user publishing field. There were many friendly computer books with cutsy images, but A FORTRAN Coloring Book was the first.

  136. Re:How To Win Friends And Influence People - Carna by Anonymous Coward · · Score: 0

    Cool, a book that teaches how to con people!

  137. W. Richard Stevens by Anonymous Coward · · Score: 0

    Advanced Programming in the UNIX(R) Environment

  138. Re:Bah! Pretenders! by KingAlanI · · Score: 3, Interesting

    "Classic: a book which people praise, but don't read." - Mark Twain

    I guess he meant it with regards to classic literature. It seems extendable to classics in other art fields, and classics in technical fields too I suppose

    --
    I listen to both RIAA and non-RIAA stuff if I like the music, tangential business/politics nonwithstanding.
  139. Judging by the quality of today's programs by makubesu · · Score: 1

    and underlying code, I would say Sam's Teach Yourself C++ in 24 Hours.

  140. Petzold for Win 3.x, Richter for WinNT & 9x by drnb · · Score: 1

    Actually, that was a really good systems programming book, in style and content during the Win95 era.

    Windows 3.x actually. The Win95 version was a fairly straight derivative of the original and was a bit lacking due to that. It did go from 16-bit to 32-bit and it was expanded for the newer APIs to a degree but it did not stand out as it once did.

    Jeffrey Richter's Advanced Windows was the stand out systems programming book for 32-bit Windows.

  141. Winston Churchill reference? by KingAlanI · · Score: 1

    I wonder if he meant that sentiment and phrasing in part as a reference to Winston Churchill's "It has been said that democracy is the worst form of government except all the others that have been tried."...

    --
    I listen to both RIAA and non-RIAA stuff if I like the music, tangential business/politics nonwithstanding.
  142. One underrated book... by jonwil · · Score: 3, Informative

    For anyone doing OS and BIOS level programming on the PC in the DOS days (and not writing games), the "Peter Norton Programmer's Guide to the IBM PC & PS/2" was a great book for understanding BIOS and DOS calls.

    Peter Norton was one of the visionaries of the IBM PC software days and the DOS versions of the Norton Utilities were a godsend for things like repairing a damaged floppy disk or doing low-level hex editing.

    It wasnt until Norton sold his company to Symantec that the Norton product line became the piece of junk it is today.

    1. Re:One underrated book... by Anonymous Coward · · Score: 0

      I had that book in the 80s. I learned a ton about the inner working of the PC BIOS, DOS, and TSR programs. And 90% of that information is completely useless to me now. ;)

  143. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    Well now it all depends. I agree in general, but when it comes to something specific (like networks), I have (sitting on the desk in front of me right now) Unix Network Programming: Networking APIs: Sockets and XTI by W. Richard Stevens. For networks specifically, Stevens wins. For general programming, Knuth has put into print a lot of good software (and algorithms). He has single-handedly bashed the hell out of submarine patent trolls with prior art (and for that I am massively glad).

  144. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    I read a draft version of Knuth's book... Absolutely terrible. Basic mistakes throughout the book..

    I'm sure the final product was great.. but I lost all respect for Knuth's programming ability after that.

  145. The Dragon Books by narcc · · Score: 1

    Aho and Ullman's classic Principles of Compiler Design and the followup they did with Sethi Compilers: Principles Techniques and Tools

    My wife bought me a first printing as gift one year.

  146. Also in this regard... by KingAlanI · · Score: 3, Informative
    --
    I listen to both RIAA and non-RIAA stuff if I like the music, tangential business/politics nonwithstanding.
  147. Commodore 64 Programmers Reference Guide by Radamax · · Score: 1

    Commodore 64 Programmers Reference Guide

  148. MUST BE SAID! by Anonymous Coward · · Score: 0

    The Dragon book sucks, they themselves admit it, quote: "The authors, recognizing that few readers will ever go on to construct a compiler...".

    This book is on my BOTTOM 10 books ever. It has no useful code and only makes you think of the dragon. Not of the compiler you want to make. So that's the end of your project.

    If you must write a compiler, use Parrrot PGE.
    No Dragon inside.

  149. Gödel, Escher, Bach by Anonymous Coward · · Score: 0

    Slit my wrists now, please!!!

    1. Re:Gödel, Escher, Bach by Anonymous Coward · · Score: 0

      Mine too. What an overrated piece of crap. Painful to read.

    2. Re:Gödel, Escher, Bach by damian2k · · Score: 1

      That was 12th on stack overflow's list

  150. Re:Bah! Pretenders! by arth1 · · Score: 1

    Oh, come on. The mantra about goto always being evil is bullocks. Spaghetti programming is bad, but when you use a goto to avoid complexity, it's not to be shunned.

    Everybody says that goto is bad, but very few of those who say it can give a rational explanation of why. In short, they're fanbois.

    Or, put it another way, try to make a CPU without branching, only subroutines...

  151. Operating Systems programming by hcs_$reboot · · Score: 1

    Principles of Operating Systems by Sacha Krakowiak.
    Because it is important to understand the general principles of operating systems (parallel activities, synchronization, resource allocation, memory management...) when programming.

    --
    Slashdot, fix the reply notifications... You won't get away with it...
  152. Re:Bah! Pretenders! by butalearner · · Score: 2

    This does not make *any* sense, unless Knuth was trying to troll generations of students who were too insecure to admit they couldn't understand MIX.

    So Knuth is kinda like the L. Ron Hubbard of Computer Science?

  153. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    what is their next book titled, "Himmler and Heydrich"? I've got an idea! Lets write a garbage collector and call it the "Holodomor"! How fucking tongue in cheek!

    I'm sure it is a series including wonders like, "The Cultural Revolution," and, "The Long March," and the masterwork of the series, "The Great Leap Forward."

  154. Design Patterns by aaaurgh · · Score: 1

    Design Patterns: Elements of Reusable Object-Oriented Software by the "Gang of Four" (Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides).

    Not that there were any main-stream OO languages available when I started programming (mumble) years ago, nor was it written for another decade or more, but...

    --

    Go permanent? In your dreams and my worst nightmares.
  155. Thinking Forth by Anonymous Coward · · Score: 0

    Excellent book. There was a Creative Commons release of the book a few years ago.

  156. Off topic but... by hcs_$reboot · · Score: 1

    linked anyway to this page, I'd love to see a story titled What Is/Was the Most Influential Operating System?

    --
    Slashdot, fix the reply notifications... You won't get away with it...
  157. The Most Influential Programming Book by HellYeahAutomaton · · Score: 1

    Effective Java, by Josh Bloch.

  158. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    TAOCP is a great work of scholarship, probably the greatest single one in computer science; but how often do you actually use it in practice?

    I use the lessons from Code Complete every time i write code (its still the best thing microsoft ever produced); and I'd also like to nominate Design Patterns as the book I that would have saved me the most heartache if I'd read it earlier

  159. Look At My Thumb, Gee You're Dumb by Anonymous Coward · · Score: 0

    "already a C++ expert"

    Wow, a book for C++ experts makes no sense unless one is "already a C++ expert".

    Any more wisdom to share?

  160. i started with pascal by yanyan · · Score: 1

    I started with Pascal, so the most influential book for me is Walter Savitch's "Turbo Pascal: An Introduction to the Art and Science of Programming."

    It's the best book on learning to program that i've ever read and it's still the yardstick by which i compare other entry-level programming books. It's very clear, detailed, informative, and sensible. The fun quotes in every section are an added bonus.

  161. Re:Bah! Pretenders! by Dails · · Score: 2

    Ever looked at the assembly produced by a for loop? It uses jmp calls. jmp is the exact same thing as goto. If your professor is telling you that gotos are bad, they're either not very good professor or you're in a 100 level CS course where they don't want to confuse you too much.

  162. Re:Bah! Pretenders! by dakameleon · · Score: 1

    Goto is bad because of the bad code it enables - even though fundamentally, assembler is all about goto (jmp, etc). A useful technique that enables code to be hacked to death and made unmaintainable deserves to lie in its shallow grave.

    --
    Man who leaps off cliff jumps to conclusion.
  163. Gang of Four by Baba+Ram+Dass · · Score: 1

    I wish I had discovered design patterns earlier in my career.

    Beside that, maybe "Enjoying the Good Life: How to Pick a Career in Anything Other than Software Development So You'll Still Have Your Hair by 35". ;)

    --
    Truckin like the Doo-Dah man...
  164. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    Oh please. You're referring to an english translation of a chinese turn of phrase. The words that chinese people utter, when they refer to "The Gang of Four" certainly sound nothing like the words we use in English. You can't expect computer nerds to be well versed in obscure (yes. it's fucking obscure) chinese political groups and their sorted past.

    You react as though their pet name for the book is The Rape of Nanking, and that their nickname may as well be Khymer Rouge.

    Nigger please.

  165. Re:Bah! Pretenders! by iggymanz · · Score: 1

    on x86, you'll see a compare instruction, then usually a conditional jump. Often JLE (jump near if less than or equal to)

  166. Programming Pearls by Anonymous Coward · · Score: 0

    Both volumes by Bentley.

  167. Knuth, TAOCP. by Arancaytar · · Score: 1

    There are other works specific to certain languages, which rise and decline in importance with the popularity of these languages. The fundamentals of how to program are hard to learn better than from this.

    Of course, the question asked about the most influential work, not the best one, so this answer is more idealistic than anything. If it were more influential, we would have better programmers, and possibly less arguments about this or that language being better.

  168. Yes, this can be considered canonical by spinninggears · · Score: 1

    Somebody knows what they are talking about. I suspect an excellent education at MIT.

  169. Learning programming and books by Anonymous Coward · · Score: 0

    When you look at all these books they show how the author understood the subject and wrote his or her code. They don't teach - crawl-walk-run type of teaching in their text books. The first problem is to show what is given and what is assumed (assumption regarding input, output and the range and values of variables etc). Secondly they don't teach how to translate the explicitly defined problem into an algorithm (based on the assumptions). Thirdly, they don't teach how to allocate memory (memory management - data structure). Once I figured out these three different problem every one has to understand, programming had been a breeze to me. I don't think I learned this type of thinking from any text book. Of course, later on, Knuth etc., helped me.I ended up writing books and made money.

    1. Re:Learning programming and books by Anonymous Coward · · Score: 0

      You claim to write books, yet you cannot produce a coherent post on Slashdot ?!

  170. Programming Perl by Anonymous Coward · · Score: 0

    Nowhere near the first coding book I read, but Programming Perl opened my eyes to what's achievable using "mere" scripting languages. I haven't used Perl for some years now, but the lessons I learned from that book stay with me.

    Pretty sure K&R C was my first programming book, but I haven't retained much of that beyond C syntax. It certainly didn't impact my career as Programming Perl did

  171. Re:Bah! Pretenders! by Anonymous Coward · · Score: 1

    Ever looked at the assembly produced by a for loop? It uses jmp calls. jmp is the exact same thing as goto. If your professor is telling you that gotos are bad, they're either not very good professor or you're in a 100 level CS course where they don't want to confuse you too much.

    You don't understand why goto is considered bad: it allows for disordered structure and program flow (aka "spaghetti code.").

    Of course you can do gotos in assembly - many languages have goto and they have to run on the hardware, but that's not the point.

    In assembly, you have to enforce the code structure yourself. In higher-level languages, the compiler enforces it for you. The language "keeps track" of gotos needed for conditionals and loops so that you don't have to. Structured programming saves work and avoids mistakes.

  172. Structureand Interpretation of Computer Programs by Anonymous Coward · · Score: 0

    Have you read your SICP today?

  173. Re:Stackoverflow answered this one already years a by Anonymous Coward · · Score: 0

    Since it was first posed back in 2008, this question has now become the second most popular question of all time on StackOverflow.

    Thank you for not bothering to read the summary, Matt.

  174. If you could go back in time... by tal_mud · · Score: 1

    I would have to go with any one of the many recent books on financial programming. No, I am not recommending financial programming as a field, I am just pointing out that all those graphs of historical stock prices would have been very useful 20 years ago :-)

  175. Re:No Indeed good sir by Anonymous Coward · · Score: 0

    Spot on!

    The C classic is wonderful The C Programming Language Brian Kernighan and Dennis Ritchie.

  176. Numerical Recipes by Anonymous Coward · · Score: 0

    Although Knuth is ofcourse the number one, there should definitely be a place for Numerical Recipes in the top 5, in any language you are comfortable with. Personally, that would be FORTRAN, but any other is just as fine.

  177. Tufte or Graphics Gems by Anonymous Coward · · Score: 0

    Not straight software dev or programming language books - but they were the most information-dense books I ever read.

  178. 2 old but good classics by Suferick · · Score: 1

    Many older books have now dated, but two that I would recommend are "Classics in Software Engineering" (edited I think by Ed Yourdon), giving a great perspective on how to approach programming and programming style; and "The psychology of Computer Programming" by Gerry Weinberg, an approach to thought processes, both individual and group, involved in software development. I have no idea if they are still in print, but they served me well for many years

  179. ISO 8652 by Anonymous Coward · · Score: 0

    ISO 8652 is probably the one thing I would tell myself to read very early on, probably right after Peter Norton's Programming the IBM PC

  180. Modern classic... by Anonymous Coward · · Score: 0

    hmmm, what's on my shelf... I would say Assembly language and Computer Architecture by Anthony J. Dos Reis http://www.amazon.com/Assembly-Language-Computer-Architecture-Using/dp/0534405274/ref=sr_1_1?ie=UTF8&qid=1315205447&sr=8-1 is a modern classic but perhaps not most influential. For that I would say K&R C as well.

  181. Re:Bah! Pretenders! by mwvdlee · · Score: 1

    If you're programming in assembly, goto is all you've got. If you're using higher level languages there are other options, usually far more appropriate than a goto.
    Those flow control in higher level languages may all compile into jumps, but they shield you from doing stupid things with JMP you shouldn't be doing in ASM either.
    The statement of "goto is bad" isn't about the assembly language where there are no other choices, it's about using it in languages where there are other choices.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  182. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    Came here for this. In days long forgotten when I actually bothered to pump out code, any time I ran into a difficult problem, off to Knuth I went. Even if the solution you needed wasn't there, something about the hardcore nature of Knuth cleared the mind after banging one's head against a wall.

    Since I've given up coding, I can't say there's much out there that's influential for me. I can say I wish 'SQL For Dummies' was more influential.

    For the love of god, PHP "rockstars", lern2index.

  183. Stoustrup's by Anonymous Coward · · Score: 0

    Did everyone forget about Stoustrup's The C++ Programming Language? Easily the book I spent most time on.

  184. Books which heavily influenced my programming: by drolli · · Score: 1

    An introduction to Database systems, C. S. Date

    Algorithms, Sedgewick

    The dragon book.

    1. Re:Books which heavily influenced my programming: by damian2k · · Score: 1

      yeah - C.S. Date's book on database design is very important for all relational database development.

    2. Re:Books which heavily influenced my programming: by drolli · · Score: 1

      I would say: it does hurt to read it even if you dont program relational databases. Some of the thoughts there also dont hurt for general programming (e.g. the section on undefined values)

  185. WARNING! by Anonymous Coward · · Score: 1

    Some of those books are freely available as Creative Commons downloads and yet the Web master offers commissioned links to Amazon to by the books (and he does NOT offer links to the free downloads). Some of these freely available books are sold for well over 100 dollars on Amazon.

    If you want to make a patent troll like Amazon rich, then go ahead and buy these books. Otherwise download them from the authors Web site or pick them up from the Pirate Bay.

    Wikipedia can be your guide for the Creative Commons books.

    1. Re:WARNING! by elrous0 · · Score: 1

      Some of those books are freely available as Creative Commons downloads

      And by "some," you mean "one" (Structure and Interpretation of Computer Programs)

      or pick them up from the Pirate Bay

      In the same sense that you can pick up as many diamond jewels as you can carry from your local jewelry store, if you just bring your own sledgehammer.

      --
      SJW: Someone who has run out of real oppression, and has to fake it.
  186. Re:representing everything that is soulless and wr by nonguru · · Score: 1

    That's why I can't take the Agile Manifesto seriously. Any group that thinks a semantical term used and misued by many a fanatical political grouping (see where I'm going here) as a substitue for reasoned and nuanced thinking (there is no silver bullet) deserves serious scorn and derision.

  187. Re:Bah! Pretenders! by bonch · · Score: 3, Informative
  188. Re:Yes, this can be considered canonical by Anonymous Coward · · Score: 0

    I really, really, really doubt Mensa Babe has an MIT education -- or potentially ANY higher education. Or, if she (he?) does it was probably not excellent. Competent people don't run around shouting their IQ to the world and writing crap in their signatures like "Karma: Positive (probably because of superiour(sic!) intellect)". We just get shit done.

    My IQ is 169. Do I create an account called "MyIqIs169"? No. Because it's stupid and irrelevant.

  189. Gödel, Escher, Bach by Anonymous Coward · · Score: 0

    Gödel, Escher, Bach: An Eternal Golden Braid (commonly GEB) by Douglas Hofstadter.
    You will learn about logic, programming, translation, intelligence, limits, infinity.
    But sadly, not about debugging.
    --
    The All Mighty UnWise Anon

  190. Re:Bah! Pretenders! by cowboy76Spain · · Score: 1

    Also, in the assembly you do not get to name the variables. You just get a chunk of the heap, and it just adds an offset to it.

    You professor should teach you that instead to declare a bunch of variables (which may lead to syntax error), you must just declare one byte array and use it as a memory space, manually calculating the offset of each variables.

    If your professor is telling you that you should use named variables, they're either not very good professor or you're in a 100 level CS course where they don't want to confuse you too much.

    ...

    Why did you stop at the gotos? There are so many things that high level languages do not do *right* (i.e., as assembly code).

    --
    Why can't /. have a rich-text editor? Editing your own HTML is so XXth century.
  191. Whatever helps me land my next gig... by Morpeth · · Score: 1

    ... that's the one that will be of most influence on me :)

    --

    'The unexamined life is not worth living' - Socrates
  192. Visual Basic for Dummies by Anonymous Coward · · Score: 0

    Influential, but not in a good way.

    1. Re:Visual Basic for Dummies by Z00L00K · · Score: 1

      How I wish I had mod points for "Insightful".

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  193. Most influental book != best book for beginners by Anonymous Coward · · Score: 0

    Title is misleading.

    Certainly Knuth's series 'The Art of Computer Programming' is on of the most influential books on the topic. But I'd never recommend it to a beginner.

    So, decide; most influential book or best book for a beginner?

  194. Structured Programming by Oscaro · · Score: 1

    Even if it's somehow outdated (and no longer in print), every single program we write today is highly influenced by "Structured Programming" by Edsger Wybe Dijkstra, C. A. R. Hoare and Ole-Johan Dahl. Before this book, programs used to be a mess of spaghetti code and the familiar constructs like if-then-else or while loops did not exist.

  195. Blitz Basic 2 User Guide :) by ajo_arctus · · Score: 1

    The one that changed everything for me was the smaller of two books that came with Blitz Basic 2 (for my Amiga). It was a cross between a reference manual and a guide to programming, and from it I learned to write code. 20 years later, I'm still coding, full-time now, and I still love it.

    The problem back then (for me at least) was that compilers, SDKs and reference manuals cost a fortune. I earned £4 a week delivering newspapers, so I couldn't afford £300 for a C compiler and £200 for the Commodore SDK. Once you outgrew the included basic, it was quite hard to know where to go next.

    But I'm not suggesting that's a classic by any stretch, it's just a book that had a profound impact on me. As for classics that might have been overlooked so far in this discussion, how about Game Programming Gems? Over the years I'm quite sure that they've made a pretty sound impact on the world of games programming. My favourite books (which are mentioned above, but aren't technical guides per se) are Mythical Man Month and Peopleware. Peopleware in particular taught me that good programming is as much about people as it is about syntax. I also liked Extreme Programming by Beck.

  196. That's a very narrow and uninformed view by dbIII · · Score: 1

    In Fortran GOTO is essential and JMP in assembly is effectively a GOTO (or vice versa). Just because it doesn't look pretty doesn't mean somebody attempting to cover the entire field should ignore it.

  197. Re:Bah! Pretenders! by marto · · Score: 1

    Not nearly as popular as "Harry Potter and the art of computer programming".

  198. Re:Yes, this can be considered canonical by dbIII · · Score: 1

    The name is very likely to be a joke, a band name or something that sounded cool at the time.
    For instance I am not really an old database program or an Aston Martin car.

  199. before the e-book era by Anonymous Coward · · Score: 0

    The programming "book" that influenced me the most was QBasic's help file. Next was MS Word's macro (and later on, VBA) help file.

  200. Re:Bah! Pretenders! by TheRaven64 · · Score: 1

    Couldn't agree more. TAOCP seems more like a book aimed at telling you how clever Knuth is than a book aimed at teaching. The idea of starting with a low-level programming language and building high-level constructs on top of it is great, but the execution of TAOCP is very poor. Part of the reason for this is that Knuth is a great theoretician and a terrible programmer. TeX should show you that TAOCP is not a book about programming - who, in the '70s, would invent a new programming language in which structured programming is impossible? Only Knuth. It combines the worst aspects of Lisp and an assembly language.

    --
    I am TheRaven on Soylent News
  201. Re:Bah! Pretenders! by TheRaven64 · · Score: 5, Insightful

    Bullshit. I have a PhD in computer science, and I wouldn't recommend TAOCP to anyone. Sure, it covers the material, but it covers it amazingly badly. Knuth manages to take simple concepts and make them incomprehensible. Read pretty much any textbook on theoretical computer science other than TAOCP and you'll learn a lot more.

    --
    I am TheRaven on Soylent News
  202. Most influental Source by prefec2 · · Score: 1

    My first book on programming was the CPC 464 programming handbook, which only explained all Basic commands. Later I learned Z80 assembler and Commodore Basic. Then I learned Pascal with a Turbo Pascal handbook from the library. That book told me to use pointers for dynamic memory usage. And I learned about paging. And then I learned a little bit of C with K&Rs book.

    However, the biggest boost (approx. 200% at least) in improving programming skills came from my first semester in computer science. We had a lecture called Programming with 2 2 hour lectures a week and 2 hour exercise course. We learned about all known programming pattern and how to use them in different languages. Our professor was a big Scheme fan, so most of his examples where in Scheme. But functional programming was very influential for me. It changed my way to code in Pascal and C.

    Ah yes and I learned to use libraries. ;-) Something you do not, when you are on a DOS machine.

  203. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    To others reading: the book is not actually titled GoF, it's an affectionate nickname

    Ignore this dumbass (decora is a known troll)

  204. Re:Bah! Pretenders! by TheRaven64 · · Score: 1

    The statement of "goto is bad" isn't about the assembly language where there are no other choices, it's about using it in languages where there are other choices.

    The original statement was 'Go To Statement Considered Harmful'. The essay - which really kick-started the structured programming revolution - was not about using goto, it was about providing it in the language at all. If you're using C, for example, then you don't have a go-to statement in the original sense. You have a very limited version that only allows flow control within a function scope. The go-to statements that Djikstra was complaining about were ones that made things like variable scoping impossible. They allowed jumping anywhere inside a program, without a return mechanism. This made reasoning about the code insanely hard. If you learned to program after the '70s, then you've probably never used a language (other than an assembly language) where this kind of thing was possible. The closest that we have now is setjmp()/longjmp().

    --
    I am TheRaven on Soylent News
  205. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    Maybe this is a bigger indictment of most programmers than the books themselves not being influential. Personally I have read all the books apart from the most recent one many times. Any programmer who hasn't read it at least once is a programmer who doesn't care for his craft.

  206. Re:Yes, this can be considered canonical by TheRaven64 · · Score: 1

    Really? Tanenbaum is pretty specialised - certainly worth reading, but not sure it's in the most influential. The MINIX book is way too heavy on source code and light on general theory, although Modern Operating Systems is a lot better. If you want something with the detail of the MINIX book, read either Amit Singh's OS X book (which also has a lot of detail about processor architecture) or one of Kirk McCusick's BSD books.

    The Knuth series teaches algorithms, but does it badly. It's also light on the general theory. If you want to understand the theoretical side, start with Church and Turing, take a side track into Gödel, and then visit Dijkstra. Skip Knuth entirely. If you want something more in the practical side, read some of Alan Kay and Dan Ingalls' papers from PARC.

    --
    I am TheRaven on Soylent News
  207. Re:How To Win Friends And Influence People - Carna by prefec2 · · Score: 1

    Indeed. When you are the bast hacker of all, but you are not able to understand other people, you cannot bring all your genius on the road. This is like a car (I hate car analogies) with a really fat engine but without wheels. Even though best systems are developed in teams. Therefore people skills are very important. Therefore we had a course in soft skills at university. ;-)

  208. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    The book was written in 1994 where using google to find the meaning of every single phrase on the planet was not as viable.

  209. Code Complete 1st Edition by freedom_india · · Score: 1

    Blew my mind away. Any randomly selected page was useful.

    --
    "Doing what i can, with what i have." ~ Burt Gummer
  210. Re:Bah! Pretenders! by Paradise+Pete · · Score: 1

    If you're programming in assembly, goto is all you've got.

    Even the 6502 had JSR and RTS.
    Not sure why my brain insists on remembering thirty year old stuff like that, and yet I forget where my keys are.

  211. Re:Thanks, GoF, for all the Java and C# bloat. by loufoque · · Score: 1

    Mod parent up.

  212. Re:Stackoverflow answered this one already years a by Anonymous Coward · · Score: 0

    The article is about that very StackOverflow poll, and it even links to it in the first sentence. The Slashdot story refers to it: "Since it was first posed back in 2008, this question has now become the second most popular question of all time on StackOverflow." This is not an "Ask Slashdot" story. Did you read past the title?

  213. Noone mention Wirth? by cardpuncher · · Score: 1

    Algorithms + Data Structures = Programs

    http://www.amazon.com/Algorithms-Structures-Prentice-Hall-Automatic-Computation/dp/0130224189

    Slightly more practical than the Knuth books (though replacing MIX with Pascal doesn't increase the opportunities for cut-and-paste coding).

    And as an added bonus, no mention of the dreaded words "design pattern" in the entire text.

  214. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    Well you're just a pure fountain of joy, aren't you?

  215. Books? by ledow · · Score: 2

    I'm only a casual programmer - I've been doing it for the last 20+ years, I've used it in my career, there are schools still running on my code, and I've written any tool that I needed and couldn't find a decent utility for elsewhere. I don't consider it a serious pursuit for myself and write more games and one-off utilities than I do serious projects.

    Listed in order, this is every physical "programming" book I've ever read in those 20+ years:

    - ZX Spectrum BASIC manual
    - INPUT series (from Marshal Cavendish)
    - O'Reilly Java in a Nutshell (probably 2nd/3rd edition, I can't remember)
    - O'Reilly Physics for Game Developers
    - OpenGL Superbible, 4th edition

    The first one got me programming all on its own. The second helped immensely and allowed me to get a rough grasp of things that I couldn't quite understand at that age. It also taught me how to break the problems down and generate code rather than just showing me how their code worked.

    After those, I was writing games, utilities, network management tools, I removed the CD protection on my copies of Desert Strike using only MS DOS debug (but never distributed the code which was already out there anyway), contributing to open-source projects (everything from games to single-floppy-linux-distros), and basically able to write anything I needed given enough time and enthusiasm. Hell, I taught my own sixth-form (Year 12/13) classmates for two years because I understood programming better than my teachers.

    Then, YEARS later, I read the Java book (because I was starting uni and they made a Java course compulsory and I just wanted a quick reference and that book was cheap - I never attended those programming lectures for two years after I'd got the hang of Java syntax in the first week, and passed them with flying colours - that was my first introduction to OO, even).

    Again, YEARS after graduating, I read the physics one and didn't do a damn thing about it because I thought it was horrible, Windows- and even compiler-specific and physics was the only subject that I ever really "failed" (i.e. did terribly on, or actually failed) despite everyone telling me that I'd be good at it because I was good at maths. I binned it after a single reading - I knew exactly what it was trying to teach me but in terms of actually walking away knowing something, it was worthless.

    And this year I read the OpenGL book because I thought I'd finally see what all the fuss was about (gaming for me is 2D - it's what I was brought up on, it's easier to program and do the art, and it's much less demanding and never really goes out of fashion - and I wanted to use OpenGL acceleration on my 2D games). That, admittedly, is one of the best "programming" books that I've ever read except they have a tendency to butcher previous versions for each iteration in order to keep it "up-to-date".

    Now, I have a Maths & CS degree, I've run my own business in and worked in IT since graduating. I'm responsible for school systems and quite a bit of my own code makes that possible.

    I've been exposed to Knuth, etc. but if you asked me what book I've give my younger-self, it would have to be the first two and the OpenGL one.

    To me, learning programming isn't about the memorisation of coroutine techniques, but about the ability to formulate a problem into code and have the computer solve it. I don't think books can really teach that and I only use books, references and guides in order to learn the *syntax* of a language, or to learn about a particular technique (e.g. the matrix-operations that OpenGL performs are a wonderful insight into how something quite removed (conceptually) from computing can be formulated in a way which fits into a computing technique really well).

    Until you actually sit and do it on a computer for a project you need yourself, you're just nodding along going "This is cool" with no knowledge of how practical is it to apply to a project (I've seen no end of people start a ten-line utility by writing flow-charts and a

  216. I disagree by assertation · · Score: 1

    I wouldn't want to use the D & D books to learn a new language on the job and not all of D & D books were great, but when I was in school they made very good TEXTBOOKS. They were academic in scope, taught concepts beyond the language and covered concepts completely. Best of all I could understand them. I couldn't understand K&R's as a raw beginner programmer.

  217. Commodore 64 Users Manual by Bitsy+Boffin · · Score: 1

    I think for me, it has to be the Commodore 64 Users Manual. Why? Because that's what taught me BASIC, and the phrase in that manual, something like "don't worry, you can't break the computer, unless you're an elephant".

    Runner up in close second, a series of kids "detective" adventure type books in which they used little BASIC programs to help them solve the "crime". That taught me to think of the computer as a tool that could help me solve problems, if I just gave it the right instructions.

    --
    NZ Electronics Enthusiasts: Check out my Trade Me Listings
    1. Re:Commodore 64 Users Manual by Bitsy+Boffin · · Score: 1

      And here they are, "The Bytes Brothers"

      http://www.gamebooks.org/show_series_images.php?id=1171

      --
      NZ Electronics Enthusiasts: Check out my Trade Me Listings
  218. A discipline or Programming by jcaren · · Score: 1

    The best It book I had (a russian programmer stole it).
    Its coverage on bounded non determinacy was inspired for its day.

  219. Python by assertation · · Score: 1

    I don't know about a particular book, but I would ( and have ) push Python on any beginner programmer. The first language learned and the first lessons dictate habits that last a career.

    Python is built to teach good habits and it is a practical language at the same time.

    1. Re:Python by Anonymous Coward · · Score: 0

      This gets my vote for Most Worthless Contribution to the discussion.

  220. C for dummies by spooky_d · · Score: 1

    C for dummies was the book that my girlfriend taught C from and programming in general. With its friendly writing it helps alleviate the learning curve for a noob programmer. I think it's the book I'd recommend to anyone starting programming - and to me too. Unfortunately, I was born too early for this book, and started programming with ZX Spectrum Basic and assembly language. Which is cool too, but by far not as cool as C :)

  221. I would never have read books like that... by phozz+bare · · Score: 2

    The biggest problem with the question posed by this article is that even if I had a time machine and could meet myself when I started programming, I'd have a hard time selling "The C Programming Language" to my 5 year old self. Seriously, most of us started programming as kids, and we did it for fun. Reading long books is no fun, and CS theory is seriously no fun at all.

    Personally I started with "Inside ATARI Basic" by Bill Carris. It was a very fun read and was definitely aimed at kids and beginner adults. Unfortunately my walk through the book came to a screeching halt when trying to understand what FOR and NEXT did. The book explained that FOR and NEXT are like the two parts of an Oreo cookie, and the code in between them was like the cream in the middle. Mmmmm, Oreo cookies. Yum! But what does it actually do? No explanation at all. At that point I gave up on BASIC and moved to LOGO. It was only 5 years later that it was explained to me that FOR-NEXT was a loop structure, which is what broke the barriers for me and allowed me to move from BASIC to Assembly, then (much later on) on to Java, C and C++.

    But I digress. My main point here is that nobody starts programming by reading Knuth cover to cover and then digging in, and that most of the "must read" and influential books on the subject make no sense to the beginner.

  222. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    Forever after, groups of writers were only ever willing to assemble up to, and including, three persons _OR_ in groups of five or more. If, at some point, they wished to go from three or less to five or more they would need to do this without stopping at the number four. An atomic operation would be required, unless of course no reference was made to the gang in the time they were four nor do any writing.

  223. Dartmouth BASIC Manual by advocate_one · · Score: 1

    very influential programming book...

    --
    Donald 'Duck' Dunn: We had a band powerful enough to turn goat piss into gasoline.
  224. Re:Bah! Pretenders! by jbolden · · Score: 1

    Many of these algorithms were at the time being explained for the first time. The Knuth version of the algorithm is extremely important for people writing libraries and still quite influential. As far as MIX and verbose, any assembler is going to be verbose.

  225. A book by Niklaus Wirth by Anonymous Coward · · Score: 0

    Algorithms and Data Structures (1985)
    http://www.ethoberon.ethz.ch/WirthPubl/AD.pdf

  226. Us olde timers remember by Anonymous Coward · · Score: 0

    6502 programming by R. Zaks

    Back in the days when C++ was a typo in somebody's mind... ...and still is.

  227. Re:Bah! Pretenders! by jbolden · · Score: 1

    Sort of. There are 3 levels of anti-gotoism

    1) Arbitrary jumps. Which in practice are like function calls with no return mechanism. And you are right that stack based has replaced this. A pure plus for everyone.

    2) Violations of one entrance / one exit. Things like "last" statement in loops or "if x then return" etc... inside loops. These are still used

    3) Complex flow. Things like event driven programming make complex flow more common than it ever way in the goto hayday. I'm not sure there is a choice but...

  228. No "Lions' Commentary on UNIX 6th Edition"? by Anonymous Coward · · Score: 0

    "Lions' Commentary on UNIX 6th Edition, with Source Code" was the best programming book I've ever read. It's a well explained walk through important and great code. It should be on any great programming book list!

  229. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    How did this troll get +4 insightful?
    There is no book called "Gang of Four".
    Some people for some reason refer to the 4 authors of the book Design Patterns as the Gang of Four.
    I prefer the refactoring book by martin fowler.

  230. Programming the 6502 by zig007 · · Score: 1

    Although mine didn't have exactly the same cover:
    http://www.amazon.com/Programming-6502-Rodnay-Zaks/dp/0895880466

    A fantastically to-the-point and useful book. In -84, -85.
    Or whatever year it was, I don't remember. To me it felt like opening a treasure chest.

    --
    Baboons are cute.
    1. Re:Programming the 6502 by etienne_gr · · Score: 1

      Zaks' 6502 is what started me in programming too! I checked the thread to see if anyone would mention that book. I am sure any good book will do, as long as it captures the reader's attention.

  231. Gödel, Escher, Bach by Anonymous Coward · · Score: 0

    No love for Gödel, Escher, Bach yet? All these technical books are fine but I found the beauty of programming in this book.

  232. Re:Bah! Pretenders! by mwvdlee · · Score: 1

    JSR and JMP aren't interchangeable (atleast not on a 6502). They handle the registers and stack differently. On a typical CPU, you can't do flow control like if/while/switch from higher-level languages without jumping.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  233. One book that i always liked... by Anonymous Coward · · Score: 0

    was oh my! Modula-2, words of wit and wisdom for all.

  234. When was the beginning of your career? by Anonymous Coward · · Score: 0

    ... because suggesting "Introduction to Algorithms" as one you should have read at the beginning of your career, when it is only 2 years old, says a lot on the length of careers the voters have had.

  235. 3 Books ... by angel'o'sphere · · Score: 2

    I guess I learned the principles of programming from "Algorithms and Data Structures" by Niklaus Wirth.

    I read "The Design and Evolution of C++" by Bjarne Stroustrup later, and buy understanding his design constraints and decissions he made I could forgive him for lot of the shit that I considerd a cluster fuck up in C++.

    Most influenced I perhaps was by "Design Patterns. Elements of Reusable Object-Oriented Software" Erich Gamma, Richard Helm, Ralph E. Johnson and John Matthew Vlissides (+ 2005, R.I.P.)

    I found it amazing to "name" larger "structures" in programming / design and/or architecture. I basically knew all those patterns because I was involved in oo framework development and research. But having some guys just grabbing them out of existing code, displaying them and giving them a name was very stunning for me.

    Also the original edition of that book was excellent printed with sidenotes on the margines and graphical overviews in the inside of the book covers.

    I guess I have roughly 50 computer science books ... which reminds me to get: "XUnit Test Patterns" by Gerard Meszaros, see: http://xunitpatterns.com/ This is an excellent book about Software Testing.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  236. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    Then you must be happy to hear that the Gang of Four were convicted in the Show Trial Against the Gang of Four for Crimes Against Computer Science, which was held in the OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) conference in 1999. Unfortunately their disciples were not subjected to the same harsh punishments and their heresy continues to spread.

  237. Programming Logic and Design by Joyce Farrell by trboyden · · Score: 1

    A lot of the books mentioned are fairly specific to C, C++, Java, etc... but I like to get down to the basics of programming logic, application design, and "KISS". Joyce Farrell's Programming Logic and Design does exactly that and forces you to think how you can improve the optimization of your algorithms through careful planning. I can honestly say I have written better code (and documentation) as a result of reading the book and practicing its philosophy. I also think Joyce's Java Programming text was a lot more comprehensible than the Deitel How to Program Java text.

  238. The Dilbert Principle by megalomaniacs4u · · Score: 1

    Nuff said

    1. Re:The Dilbert Principle by yoshman · · Score: 1

      I used a lot of the techniques described in "The Dilbert Principle" combined with "The Pragmatic Programmer" and I must say that it has made wonders to my career as a programmer/software architect so far (and I really DO mean that).

  239. Re:Bah! Pretenders! by angel'o'sphere · · Score: 2

    If you already can program Knuth is surely worth reading. But if you are a beginner, then simply don't.

    I really would not fancy a guy who is applying for a job and his example code consists of 30 lines where every variable just named with one letter. Even if he points out: oh but that is how Knuth does it ;D

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  240. "Algorithms + Data Structures = Programs" by Wirth by Anonymous Coward · · Score: 0
  241. Re:Bah! Pretenders! by angel'o'sphere · · Score: 1

    You seem to fail to graps the difference between an low level assembly JMP instruction and GOTOs in high level languages. Your complete posting makes no sense. Why don't you read the relevant Essay or look at some old Fortran or Basic code to get at least a remote idea about what you are bragging? Hint: http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  242. Re:Bah! Pretenders! by shutdown+-p+now · · Score: 1

    Well, Knuth would hardly need to supply any example code if he applies for a job, so it kinda makes sense. ~

  243. Re:Bah! Pretenders! by Chris+Mattern · · Score: 1

    If you're programming in assembly, goto is all you've got

    But if you're disciplined and only use the goto to build structures, you'll have code you can actually maintain.

  244. From my uni days by PBPanther · · Score: 1

    A Discipline of Programming by E.W. Dijkstra (1976)

    1. Re:From my uni days by stevebyan · · Score: 1

      Yes! This is the book that taught me how to program. The rigor of Dijkstra's predicate calculus (aka Hoare triples) is sorely missed in today's bug-filled programming practice.

  245. lol.. by Anonymous Coward · · Score: 0

    Enjoy being useless when you need to work at the bare-metal level.

    Awww he thinks assembly is bare-metal. How cute. Although a non-technical person like you would make such a mistake.. so its acceptable I suppose.

  246. The Advanced User Guide by gidds · · Score: 1
    The Advanced User Guide for the BBC Micro by Bray, Dickens, & Holmes.

    The first book that got me thinking deeply about computing, not as a collection of hacks and tricks, but as something to be done properly. It's not a programming manual as such, but it's chock-full of advice-by-example, illustrating some of the really good bits of design in the Beeb, how the various subsystems interacted with each other, how to make best use of extremely limited memory without sacrificing design -- and the value of writing something well, which could allow it to be used in ways you never thought of.

    I've read many great books since then, of course -- K&R, Knuth, Sedgewick, Programming Pearls, Effective Java, Programming in Scala, and more -- but the Advanced User Guide has probably had the most influence on me and how I think about computers. It also has the most annotations and other scribblings all over it!

    --

    Ceterum censeo subscriptionem esse delendam.

  247. Mapping the 64 by Chysn · · Score: 1

    The most important programming book for me was Mapping the Commodore 64 by Shelon Leemon. I learned how a computer really worked under the hood. It made working with pointers later much easier. But most of all, it helped stoke the fire.

    --
    --I'm so big, my sig has its own sig.
    -- See?
  248. Re:Bah! Pretenders! by betterunixthanunix · · Score: 1

    Can you name a reason why GOTO statements are a bad thing? You sound like someone who heard it from their APCS teacher, did not pay attention to the reason why, and now repeats it religiously. "All the other books" must not include compilers textbooks or textbooks on machine architecture.

    --
    Palm trees and 8
  249. Re:Bah! Pretenders! by betterunixthanunix · · Score: 1

    A useful technique that enables code to be hacked to death and made unmaintainable deserves to lie in its shallow grave.

    So do you only program in SKI or BKCW? Just about any useful programming language is going to have features that allow you to hack your code to death...

    --
    Palm trees and 8
  250. My most influencial book by lsatenstein · · Score: 1

    For me it was Gilman and Rose's A Programming Language. (APL), developed by Dr Kenneth Iverson. He opened my mind to thinking of solutions to problems in a different way. Sadly, APL has dwindled to almost nothing, and is probably only used by Actuaries and some aficionados. Dr Iverson's son and his peers developed J as an alternative. Once you think of the solution by not thinking of the underlying programming language, progress in thinking can be made.

     

    --
    Leslie Satenstein Montreal Quebec Canada
  251. Re:Bah! Pretenders! by betterunixthanunix · · Score: 3, Insightful

    To be fair, I have turned to Knuth for reference on a few occasions when I needed a very detailed explanation of an algorithm and the background and reasoning behind that algorithm. The way I see it, TAOCP is something that should be used as a reference, for those cases where you need a lot of detail.

    --
    Palm trees and 8
  252. 6809 Assembly Language Programming by Anonymous Coward · · Score: 0

    Personally, I would have to say 6809 Assembly Language Programming by William Barden.

  253. Re:Bah! Pretenders! by betterunixthanunix · · Score: 1

    MIX was intentionally problematic to avoid dependencies on platform assumptions that might not be portable

    A side-side-project that I want to work on some day is to write a "companion" for TAOCP, which presents the algorithms in Scheme or Haskell (or some similar language). I understand Knuth's point about getting to the machine level and really understanding what the machine is doing, but presenting the algorithms in a high level language would be useful for the vast majority of people who own his books.

    --
    Palm trees and 8
  254. Forth on the Atari by Anonymous Coward · · Score: 0

    You forgot Forth on the Atari.

  255. Dragon Book by Anonymous Coward · · Score: 0

    No one has mentioned the Dragon Book yet?

    1. Re:Dragon Book by damian2k · · Score: 1

      The dragon book came in at number 10 on the list in the original article ... quite a feat.

  256. I suspect... by Angostura · · Score: 1

    It might be the Basic manuals that came with the Sinclair ZX81 or the TRS-80 or the Commodore 64

  257. Re:No Indeed good sir by sqldr · · Score: 1

    when I was learning c++, i had a copy of stroustrup, and got nowhere with it. Then I printed out the entire c++ FAQ and read it on various bus trips. It actually explains it like an FAQ should. Then I went back to stroustrup and was able to understand it.

    --
    I wrote my first program at the age of six, and I still can't work out how this website works.
  258. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    I thought that was the most influential book in sending people to sleep.

  259. The Mythical Man-Month by Anonymous Coward · · Score: 0

    "The Mythical Man-Month" in software engineering.

    And "Out of the Crisis" with Deming's 14 Points to quality engineering.

    I'm an aerospace engineer converted to software developer. I didn't take software design or software engineering serious the first 4 yrs of my career and only used FORTRAN prior to getting a job writing real-time GN&C flight software in extremely specialized languages that 99% of the world has never heard about. You've seen my work, I'm absolutely positive.

      The "Effective C++" and "More Effective C++" programming books actually made a real difference in my programming style.
    I've read "The C Language" and lots of other normal C++, Java books. None are very good..

    In my first C++ programming class, we used a book by "Terrible" (author). I can't recall the name of the book and gave it away to a friend. I can't find the book online anywhere.

    When I finally decided to learn the craft of software design and engineering, I purchased all the Knuth books. Brilliant - for what I read. Also picked up a C++ Algorithms book and lots of UNIX/Linux admin books from DNS, Essential System Administration, and a number of CDROM Bookshelf book/CDROM combos (Perl, Unix, Linux, Web Admin). I still use the Perl one almost daily. These are from O'Reily.

    These days, I'm reading "Modern Perl" so I'm ready when Perl6 is production ready. Perl doesn't look like C code anymore. It is extremely OO.

  260. Concepts, Techniques, and Models of Computer Progr by sourcerror · · Score: 1

    Concepts, Techniques, and Models of Computer Programming. They call it the new SICP book. I only read the first 50 pages, but it's quite intresting read. It covers parallel programming, constraint programming, and old lispy topics as well, like program transformation.

    http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695

  261. MSX manuals by Anonymous Coward · · Score: 0

    For me the most influential books at the beginning of my path were the Philips VG-8000 manuals.
    Which came along with the VG-8000 I received as a gift from my father of course.

    All the rest was important and useful (The Art of Computer Programming etc), but those are things I got afterwards, when I was well on my path already.

    Most influential for me? The MSX Basic version 1.0 Programming manual.

  262. K&R C 1st ed. followed by others by datajerk · · Score: 1

    I have nothing against the 2nd ed. K&R, it's just that only the 1st ed. was available in the early 80's. It was the best programming book I had read at the time. Both books are great in that they are small.

    Programming the Z80 and Programming the 6502 (both from Zaks) are probably the best assembly language programming books I have read because they focus on processor internals and how computers work. Understanding assembly can make you a better C coder. And who doesn't love inline assembly? :-)

    Hacker's Delight is a great read. You can perform a lot of magic by shifting bits around. This book is often cited as the "lost TAOCS book".

    I prefer Concrete Mathematics over TAOCS as far as Knuth books go.

  263. The UNIX Programming Environment by vu2lid · · Score: 1

    Published in 1984 The UNIX Programming Environment by Brian W. Kernighan and Rob Pike - http://en.wikipedia.org/wiki/The_Unix_Programming_Environment . The book remains interesting, useful and relevant even now after more than 27 years. It remains a 'must read' for anyone who uses UNIX like systems. Compare this with most of the 'Programming Books' now, which goes out of date within a few months after publishing.

  264. Re:Yes, this can be considered canonical by blane.bramble · · Score: 1

    For instance I am not really an old database program or an Aston Martin car.

    Prove it!

  265. thanks for proving my point by decora · · Score: 1

    jesus thats fucked

  266. Illustrating Pascal by xwildph · · Score: 1

    Back in the day, I found Illustrating Pascal, ISBN 0/521/33695/3 by D.Alcock to be very useful. ref: http://www.amazon.co.uk/gp/reader/0521336953/ref=sib_dp_pt#reader-link It helped me make the jump from programming as a hobby, in various forms of BASIC, to proper programming languages.

  267. Re:Bah! Pretenders! by Surt · · Score: 1

    Ever tried to maintain that assembly code? That's why jmp/goto is bad.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  268. Re:Bah! Pretenders! by 32771 · · Score: 1

    Well many things in it go over my head, but I have used it for random number generator related work, and sorting and searching was also helpful. I certainly didn't go through it while trying to do every exercise.

    --
    Je me souviens.
  269. Re:Bah! Pretenders! by Anonymous Coward · · Score: 0

    "Classic: a book which people praise, but don't read." - Mark Twain

    I guess he meant it with regards to classic literature. It seems extendable to classics in other art fields, and classics in technical fields too I suppose

    We never read classics, because they're already available in video.

  270. Re:How To Win Friends And Influence People - Carna by 2TecTom · · Score: 1

    My sincerest apologies for my grievous error.

    The author's surname is Carnegie

    There, feel better now?

    --
    Words to men, as air to birds.
  271. I got to read drafts of this book by peter303 · · Score: 1

    Doug was in my Chinese-1 class at Stanford in 1976. I think he was chilling out at his Stanford Prof Dad's house after just finishing his physics PhD and working on his book. I think Doug was exploring the Whorf-Sapir-Heinlein hypothesis that language influences how you think. Chinese was the most radically different language from English you could readily study at the time. I was interested in Chinese philosophical classics in the original (a level I never reached).

    Anyways, Doug gave me this clever little vignettes he was writing that reminded me of the mathematical puzzles in Scientific America because I was one of the few techies in the Chinese class. I never guess these would win the Pulizer non-fiction prize and become a computer classic.

    1. Re:I got to read drafts of this book by Arran4 · · Score: 1

      Ah cool. Small world ... sorta. I guess. Been doing the whole Sapir-Whrof thing myself with learning Lojban since 05. :P

  272. Beck's extreme programming should be on the list by peter303 · · Score: 1

    Ken suggested that small, bottom up skunkworks are more productive than massive managed software projects. This certainly changed how we did things over a decade ago. The compromise between the two methodolgies is Agile.

  273. Re:Bah! Pretenders! by Cederic · · Score: 1

    Or a programmer that writes software, not algorithms.

    I don't care which sort routine is most optimal. I merely need a 'good enough' one that I can pull out of the standard language libraries and use.

    Let the computer scientists model, design and provide reference implementations for new algorithms. The rest of us will turn them into useful software.

    Maybe if you work at Google, or a market trading company, or one of those other roles that comprises a thousandth of one percent of programming jobs where that shit actually matters then it's useful. The rest of us just need to know when to use an array in preference to a linked list and focus instead on functionality, interface and the several hundred constraints we're dealing with that are more important than a marginal improvement in efficiency.

  274. Re:representing everything that is soulless and wr by jgrahn · · Score: 1

    That's why I can't take the Agile Manifesto seriously. Any group that thinks a semantical term used and misued by many a fanatical political grouping (see where I'm going here) as a substitue for reasoned and nuanced thinking (there is no silver bullet) deserves serious scorn and derision.

    A "manifesto" is when a number of people think alike, condense their thinking into a short text and publish it hoping to swing even more people. What's wrong with that, exactly: thinking alike, writing it down, or telling people about it?

  275. Books by Anonymous Coward · · Score: 0

    For me, the most influential resources were:
    Carter, An Introduction to Computer Science Using Java
    King, C Programming: A Modern Approach
    CLRS, Introduction to Algorithms
    Hall, Beej's Guide to Network Programming
    Wall, Programming Perl
    Raymond, How To Become A Hacker
    http://www.w3schools.com/

  276. Re:Bah! Pretenders! by arth1 · · Score: 1

    No, that doesn't follow. There are uncountable other ways to make code unmaintainable.

  277. Clean Code by Robert C. Martin by Anonymous Coward · · Score: 0

    I haven't seen this mentioned so... Clean Code.

    and he has a new one thats probably worth reading... The Clean Coder.

    1. Re:Clean Code by Robert C. Martin by wpi97 · · Score: 1

      Definitely! Too bad I don't have any mod points.

  278. Reflections on Trusting Trust by Ken Thompson by rur · · Score: 1

    Not a book, but a must read for anyone working with computers.

  279. simple by Anonymous Coward · · Score: 0

    GOOGLE

  280. Programming Pearls by brausch · · Score: 1

    Reprinted from columns in Communications of the ACM by Jon Bentley.

    --
    "Almost every wise saying has an opposite one, no less wise, to balance it." - George Santayana
  281. My Favorite Book from College by bazmail · · Score: 1

    The Joy of C, 3rd Edition by Lawrence H. Miller and Alexander E. Quilici (Jan 16, 1997)

  282. professional couriers ahem by decora · · Score: 1

    most fixed gear cycling is hipsters who are following a fashion trend. the courier profession is dying, and track competitions are highly specialized racing events that used 'fixed gear' because of their arcane rule system (which also, by the way, bans recumbents).

    yup. just about like TeX users.

  283. Fortran Coloring Book by kenh · · Score: 1

    The Fortran Coloring Book, with the program listings in Creative Computing and 101 Basic Games tied for a close second...

    --
    Ken
  284. Mapping the C64 by Haxx · · Score: 1

    This was the one.

  285. Re:No Indeed good sir by damian2k · · Score: 1

    As a student I learnt C using K&R's classic in 1989, the year after it came out. Then later in a job, I used Deitel and Deitel to pick up both C++ and Java ... great books, but K&R and D & D are totally different in approach.

  286. Abstraction by SuperKendall · · Score: 1

    I get your point and I largely agree with it, but perhaps you should take a closer look at the code listing in Knuth's books...

    That's abstraction over language though; the things in Knuth's books are often directly usable in modern applications just translating into the language you have to work with, adjusting implementation as suits the language you are working with.

    A good operating system book might have some nice bits on schedulers or managing concurrency in applications or filesystems, but very little of that is going to be very useful in most modern application development.

    Not to say OS classes are not valuable and I think everyone seriously interested in CS should work through one of those books, I just think it should be after you have the fundamentals of algorithms down. Then you can even better appreciate what is going on in the OS books.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  287. I Teach BASIC to my PET by multipartmixed · · Score: 1

    ....I only just got the freaking pun in the title. Just now. September 2011.

    Lord help me!

    --

    Do daemons dream of electric sleep()?
  288. A Pattern Language: Towns, Buildings, Construction by MountainLogic · · Score: 1

    You've probably never heard of this book, but when you move from code monkey to engineer/architect you must read this book, http://en.wikipedia.org/wiki/A_Pattern_Language. The other one you should read is the Toyoda Way http://en.wikipedia.org/wiki/The_Toyota_Way

  289. Re:Python Whitespace by real-modo · · Score: 1

    Better hope your manager doesn't read Slashdot. She'll be asking herself, "what use have I got for someone who takes weeks to realise he needs to use his editor's 'show white space characters' command when dealing with a white space sensitive language?"

  290. Re:representing everything that is soulless and wr by nonguru · · Score: 1

    A manifesto is ultimately an opinion or philosophy, not a fact of life or immutable physical laws. My objections don't lie with the intent but rather the substitution of logic with belief. All religious creeds begin with a "manifesto" establishing common belief systems. I think Agile is another form of belief, not backed up by much more than anecdotes.

  291. Agile Principles, Patterns, and Practices in C# by damian2k · · Score: 1

    by Robert C Martin. Its got nuggets of gold in every chapter and covers a whole gammut of topics.

  292. The 1st C#.NET book by Andrew Troelsen by damian2k · · Score: 1

    I know its language specific, but the way the book was written and structured made learning a new (and challenging) language easy for me ... really inspired writing.

  293. I'm sort of surprised there's no UML books listed by damian2k · · Score: 1

    Not that I'd vote for one, but just a bit surprised considering the silver bullet it was meant to be for software engineering in general.

  294. Re:representing everything that is soulless and wr by Anonymous Coward · · Score: 0

    There is a Scheme compiler called "Stalin". It has also been subject of similar criticism from some sensitive fellows. Whatever - it's not like it was the compiler that killed their grandparents.

  295. Fundy programming by BubbaJonBoy · · Score: 1

    Kernighan and Plaugher wrote "Software Tools" to assert that small, capable, tightly focused programs could be hooked together to accomplish large tasks. Unix/Linux organization is a prime example of this approach.

  296. Gries: _Science of Programming_ by mengel · · Score: 1

    Ideas like deriving code from specifications, developing proof outlines and code in tandem, and just generally more rigorously thinking about code and why it works.

    --
    - "History shows again and again how nature points out the folly of men" -- Blue Oyster Cult, 'Godzilla'
  297. Martin Fowler by Anonymous Coward · · Score: 0

    For something more contemporary, I'd recommend anyone read Martin Fowler's "Refactoring: Improving the design of existing code". A great perspective on mitigating risk when introducing changes into new, often complex and/or unfamiliar, systems.

  298. Re:Python Whitespace by AuMatar · · Score: 1

    Since my manager just spent a week fixing a build script bug that ended up being this problem, he'd not only agree with me but he'd probably be more vehement.

    So lets see, that's now the 5th work around I'm supposed to be using, all because of a idiotic design decision in the language. Or I can just use languages that don't do stupid shit like this. Decisions decisions.

    --
    I still have more fans than freaks. WTF is wrong with you people?
  299. I think we all need to agree on one thing... by Anonymous Coward · · Score: 0

    Well written, concise and substantive programming books are few and far between...

    I agree with the selection of "Design Patterns: Elements of Reusable Object-Oriented Software" but if you are going to mention this book, then you really have to go to the source of it all that influenced computer science significantly towards modular and object-oriented design:

    "Notes on the Synthesis of Form" by Christopher Alexander
    http://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512

    and then the following which influenced computer science greatly towards using design patterns and reusable code:
    "A Pattern Language: Towns, Buildings, Construction" by Christopher Alexander
    http://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199

    Lets stop producing programmers that are educated and trained first to be hacks...and produce programmers that early on understand their profession is grounded first on design.

    One other thing, you can't mention Design Patterns unless you also accompany it with the idea of, and some source of AntiPatterns.

  300. Amiga Hardware Reference Manual by jaminJay · · Score: 1

    Amiga Hardware Reference Manual: knowing how your program operates in physical reality will change your perception of how your code should best be structured. It will also open your mind to multiple processes running on multiple devices whilst sharing resources efficiently such as to allow real-time performance.

    --
    Leela: "Is all the work done by children?" Alien: "No, not the whipping."
  301. Basic Computer Games, by David H. Ahl by REden · · Score: 1

    How many of us got a start with "Basic Computer Games" by David H. Ahl?

    Without that, I bet many would not be posting here.

    --
    --- If it's worth doing, it's worth doing in Perl!
  302. Which books finished outside the top 10? by AlexDomo · · Score: 1

    There was a number of books outside the top 10 that have been mentioned in the comments here, note that the original article has been updated to include the books placed in spots 11 through to 30... http://www.internetsecuritydb.com/2011/09/top-ten-most-influential-programming.html

  303. Re:Pleasantly Free of Trendy Process Related Title by AlexDomo · · Score: 1

    Yeah agree with your view on Design Patterns ... there was a stage several years ago when if you went to an interview you were almost guaranteed to get a question on design patterns ... and if you didn't know anything about them, then sorry, better luck next time ... it was as if to be considered a good developer you must able to memorize a few design patterns, which may or not be of any use in real projects you encountered anyway.