Slashdot Mirror


A New Bible For Programmers?

KZigurs writes "The wonders of online publishing... If you are ready to take on a heroic task and read thru all 976 pages of Concepts, Techniques, and Models of Computer Programming (draft) (pdf file, 3MB, intro here) written by Peter Van Roy and Seif Haridi you won't regret it. Just finished reading it and I feel like I have read the Bible. And who knows? It has the potential, and since current de facto books about programming are aging with increasing speed it very well may become one. (Please read the intro to get more detailed outlook at topics covered)
Anyone before heard about Oz?"

10 of 117 comments (clear)

  1. Very interesting, also for non-programmers by tsa · · Score: 4, Insightful

    I am not a programmer but this seems to me a very interesting book for people who want to have a detailed yet general (hope you understand what I mean) idea of what's going on inside their computers as they are hammering their keyboards. Seriously, popular books on computer programming usually learn you how to use a certain programming language and not the concepts behind writing a computer program so this is a must-read for all people that want to learn to program computers.

    --

    -- Cheers!

  2. OutDated? by peripatetic_bum · · Score: 5, Insightful
    since current de facto books about programming are aging with increasing speed


    I'm sorry to sound susppicious, but the concepts of programming are not out dated. The problem is tat programming has actaully become (or rather started out) incredible sophisticated and that a lot of programmers now have not been properly trained (be it by self study or a rigour CS program). And that flurry of programming books are more lke cookbooks and dont really *teach* anything anymore.

    I find it rather hard to believe that Knuth's analysis of algorithms of Sorting and Searching have/will become out dated. I think his title the ART of COmputer Programming was always incredible ironic because he has done more than anyone else to turn into a real science, which it is now, and by which I mean that it has hypothesis that can now be tested. His book lay the foundation for it and I doubt any new programming book, short of specilized computer journal articles have done much to advance programming.
    --

    Sigs are dangerous coy things

    1. Re:OutDated? by Asprin · · Score: 3, Insightful


      I think his title the ART of COmputer Programming was always incredible ironic because he has done more than anyone else to turn into a real science, which it is now, and by which I mean that it has hypothesis that can now be tested.

      I disagree.

      Real science has proper control groups and reproducible results. Programming has neither.




      [/me grins, ducks and runs]

      --
      "Lawyers are for sucks."
      - Doug McKenzie
    2. Re:OutDated? by Oscaro · · Score: 5, Insightful

      Gnahhhrrrrg I keep hearing this argument over and over. But knowing how to do things right (and why) is the ONLY way to survive to new problems and situations that the STL does not solve.

      That's one of the reason I hate Java. Its huge library lets you write programs without having to learn or understand what the hell you are doing.

      Thanksfully, when I learned to program, I had to code my own hashtables.

    3. Re:OutDated? by egomaniac · · Score: 2, Insightful

      I find it rather hard to believe that Knuth's analysis of algorithms of Sorting and Searching have/will become out dated.

      Really? When's the last time you wrote your own implementation of a search or sort algorithm?

      I haven't done so in a decade. Every language I use has built-in implementations which are more than fast enough for my purposes. Likewise with virtually all such basic algorithms -- they have been implemented, and generally very well, in libraries. Computers are fast enough now that even a "good enough" general implementation of an algorithm is more than fast enough in virtually every case (and for the other cases, that's when you need to haul out the books).

      I'm not saying that it is useless to know how sort algorithms work, but suggesting that it's relevant in the day-to-day work of a typical software developer (which is what you seem to be implying) is very misguided, in my opinion. In the same vein, most programmers couldn't explain how a transistor works if their lives depended on it, and I don't see that as such a huge problem, either.

      Just out of curiosity, do you know how a transistor works? I'd wager that most folks around here don't, any more than they could write an implementation of QuickSort without having to look it up.

      --
      ZFS: because love is never having to say fsck
    4. Re:OutDated? by oni · · Score: 2, Insightful

      I find it rather hard to believe that Knuth's analysis of algorithms of Sorting and Searching have/will become out dated.

      It's too bad that you mentioned searching and sorting because it seems a lot of the other replies here jumped on that issue and completely missed your point.

      The Art of Programming isn't about either of those topics. It's about algorithms. Knuth uses seaching and sorting as a means to the ends of teaching the programmer to think about his algorithms. As other people have pointed out, a modern programmer is unlikely to implement either a search algorithm or a sort algorithm. But they use other algorithms to every day. They invent algorithms every day.

      The core of programming is ability to examine a problem and create algorithms to solve it. That's what programmers do (unless of course we're talking about VB programmers doing little more than connecting an interface to a control). At any rate, Knuth teaches algorithms - not searching and not sorting.

      The bottom line is, Knuth's work is still relevant and quite useful.

    5. Re:OutDated? by H*(BZ_2)-Module · · Score: 3, Insightful
      I agree, and I think much of the misinterpretation comes because many are commenting on Knuth without ever having really read it. This comes from the introduction to TOACP.V3 2nd edition(which is from 1998 by the way, not so ancient):
      The title "Sorting and Searching" may sound as if this book is only for those systems programmers who are concerned with the preperation of general-purpose sorting routines or applications to information retrieval. But in fact the area of sorting and searching provides an ideal framework for discussing a wide variety of important general issues: How are good algorithms discovered? How can algorithms and programs be improved? How can the efficiency of algorithms be analyzed mathematically? How can a person choose rationally between different algorithms for the same task? In what sense can algorithms be proved "best possible"? How does the theory of computing interact with practical considerations? How can external memories like tapes, drums, or disks be used efficiently with large databases? Indeed, I believe that virtually every important aspect of programming arises somewhere in the context of sorting and searching!
  3. Note about the Oz language by Anm · · Score: 5, Insightful

    For those curious why this books uses Oz as it's language of choice, it is one of the few, if not the only language, to support the many popular paradigms of programming:
    * procedural, like C & BASIC
    * object-oriented, like Ada & Java
    * functional, like Scheme & Haskel
    * declarative, like Prolog

    It that way, this book is a good way to keep your mind open to different approaches to doing things.

    Anm

  4. Re:Kneejerk reaction by jason_watkins · · Score: 2, Insightful

    all depends what those 1000 pages are full of. If it's 1000 pages of "teach yourself NEW_FAD_TECHNOLOGY in 21 days" then I'd agree. If it's 1000 pages of authoritative, carefully considered and exhaustive thought, then I'd say 1000 pages is to little... I'd like a lifetime supply.

    As for this book... so far I've only skimmed, and for being free on the web as a preprint, I'd say it's fantastic. I'm also reading Programing Language Pragamtics right now, and it's a little more complete treatment of the same subject area.

  5. OK, damning indictment time :-( by Anonymous+Brave+Guy · · Score: 2, Insightful
    Why, the LSP is known by many different names. The 'substitution property' for example.

    What they called the "substitution property" is a waffly version of Liskov's clear and concise principle.

    Why not try actually *reading* the OO chapter before giving such a sweeping judgement :-).

    I appreciate the smiley there, but OK, I've now read the first half of the OO chapter in its entirety. Not only does it fail to mention the LSP in any useful way, it also fails to stress the interface/implementation separation, the significance of polymorphism and the way inheritance is used in many languages to allow it, the concepts of invariant conditions on a class' state and pre- and post-conditions on its methods, and just about everything else that's actually important about OO. Instead, they seem to spend lots of time going on about the cute syntax in their pet language.

    Just to finally convince me that they don't really understand OO, their example (in section 7.4.1) of bad inheritance is dubious at best. They could have used the circle/ellipse or integer/rational "paradoxes" to demonstrate the hazards of using inheritance poorly, but instead they use an example that actually seems entirely reasonable to me. Their claim about what the outside world can expect violates the very principle of encapsulation: the outside world shouldn't know that, because it's an internal proprerty of that class... Unless, of course, it's documented in the interface as a post-condition of the method calls, but in that case, the derived class is breaking LSP. Oh, but they haven't mentioned post-conditions and how they are constrained by LSP, so it's kinda hard to say that.

    Sorry, but having read 50 pages of that book, I'm quite convinced that it's not the new bible of programming. On the contrary, I would actually steer anyone interested in learning OO away from it, as I think its overweight theory and underpowered practice would be harmful to a newbie.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.