Slashdot Log In
A New Bible For Programmers?
Posted by
timothy
on Wed Jun 18, 2003 07:56 AM
from the squinty-little-eyes dept.
from the squinty-little-eyes dept.
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?"
Anyone before heard about Oz?"
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
Newer Copy Available (Score:5, Informative)
http://www.info.ucl.ac.be/people/PVR/booksingle.p
I look forward to reading it from the intro, however, might be really worthwhile.
So.. (Score:5, Funny)
Re:So.. (Score:2, Funny)
*chuckle*
Bad mods, no donut.
Re:So.. (Score:2)
Or was that a movie I saw...
Google's Cached HTML Version (Score:3, Informative)
Ug, /.ed already. (Score:2)
Mirror Here (Score:5, Informative)
It's mirrored here [surveycomplete.com] courtesy of SurveyComplete.
Incedentally, I highly recommend the book Code Complete: A Practical Handbook of Software Construction [amazon.com] by Steve C McConnell. It tought me more about programming than the rest of my computer book bookshelf!
Another great resource is Safari [oreilly.com]. It's a web service that for a fee, allows you to view O'reilly, Que, and Sams books online. I find the code search feature to be invaluable. Cheap way to read technical books.
Parent
Very interesting, also for non-programmers (Score:5, Insightful)
Re:What's going on in your computer (Score:2)
Why, oh why does the above gets past the lameness filter?
(Especially when a couple of lines of perl typically don't)
Another Bible (Score:5, Informative)
+1 Ontopic on the MQR standard (Score:2)
With luck, someone who does have points will jump in...
-- MarkusQ
Re:Another Bible (Score:2)
Already slashdotted? (Score:4, Informative)
-Adam
OutDated? (Score:5, Insightful)
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.
Re:OutDated? (Score:4, 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]
Parent
Re:OutDated? (Score:2)
Proper control groups? hmmm, are you thinking something like a placebo group? perhaps, but what I am thinking of is testing one algorithm against another, or using the say, a standard algorthm for sort (say, bubble sort) and being able to compare to another sort process and get empirical evidence (ie speed) of which one is better.
I would say you have total control of the control group in
Re:OutDated? (Score:5, Interesting)
But, now that I'm on the subject...
Once you've gotten your first non-reproducible bug, you'll see what the parent poster was talking about with reproducible results. An awry pointer can cause all sorts of havoc that's incredibly difficult to track down, and, even worse, it often won't break the same way twice.
As for your example of algorithms: "better" is rather subjective, especially in regards to sorting algoriths. Although quicksort might be faster for general purpose use, there are plenty of algorithms that can beat it in certain conditions. And, programming being what it is, you can never be sure that your program will be running under those certain conditions or not.
Parent
Re:OutDated? (Score:5, Interesting)
Well, I was actually making an ironic joke, but since you ask, I can certainly give it another shove closer to the edge of the cliff, so to speak.
First, let me say that I was actually serious when I said that programming (just like mathematics and logic) is not science.
This opinion was not formed without a fair amount of consideration (BS in math, MA in physics). We could argue semantics for many moons, but my definition of a "science" goes something like "A course of inquiry which employs the proper scientific method: only ask questions you can actually answer, employ direct empirical observation with proper control groups, verify the results independently (one trial does not a conclusion make), and reserve nature as the authority - you must maintain a complete willingness to be proven wrong."
Mathematics, Programming and Logic work this way because they conform to a different kind of rigor for validation -- namely, constructive or analytical "proof", which is not, by its nature, empirical. I'm not trying to refute, denounce or demean non-scientific studies, I just want to point out that "scientific" means something specific, and it does not apply to those other areas I mentioned.
BTW, one pet peeve of mine is when in sci-fi movies, the dude says "There has to be some kind of scientific explanation for this." Well, no: METHODS are scientific, not explanations.
Also, please note that many areas of study: Psychology, Sociology and Political Science (as well as certain areas of Biology and Chemistry -- needle, needle, jab, jab, ha-ha!) *could* be scientific in some cases, but typically aren't because they are populated by dumb researchers employing horribly poor experminental and analytical techniques.
So, having said that, I will conclude with the "on-topic" tongue-in-cheek gags:
Reproducibility: (In WRITING programs, not running them)
Since all developers on a project typically work from the same source tree, no programming results have ever been independently verified except the programming assignments in textbooks.
Control Groups:
Well, maybe you have a point on this one. I suppose a NOP loop would qualify as an effective control, but how do you halt the experiment?
Parent
Re:OutDated? (Score:2)
So, physics, chemistry, & astronomy, which don't have control groups, aren't science? Methinks you need to revise your definition of science to be more in line with what other scientists mean when they use the word "science".
Re:OutDated? (Score:2)
Re:OutDated? (Score:2)
Ultimately, yes, it does.
The theoretical work is a critical component, but if we stop when the theory is finished and do not go into the lab to see if the model we have been working on is correct, we haven't done any science, just math.
Re:OutDated? (Score:3, Insightful)
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
I Know How a Transistor Works! (Score:5, Interesting)
There are two kinds of transistors, bipolar junction transistors and field-effect transistors. Bipolar junction transistors are sandwiches made from two layers of N-type silicon separated by a layer of P-type silicon. A bipolar junction transistor has three terminals: an emitter, a base, and a collector. The emitter and collector are connected to the N-type silicon (on opposite sides of the sandwich) and the base terminal is connected to the P-type silicon. When a small voltage is put on the base terminal, current is allowed to flow from the emitter to the collector. (This is for an NPN-type transistor. There is also a PNP type which is the opposite and works with negative voltages instead of positive.)
A field-effect transistor has three terminals, too, but they are called the source, the gate, and the drain. The source and the drain are connected by a channel made of N-type silicon, but the channel is somewhat narrowed by P-type silicon in the middle which is connected to the gate terminal. When you put a voltage on the gate, it creates an electric field which chokes off the current flow from the source to the drain. There is also a type of field-effect transistor with a channel made of P-type silicon, and the voltages are negative.
I have done better than implementing a sort algorithm; I implemented keyless 2-3 trees in a functional style and thus speeded up my LR(1) parser generator from 27 minutes to 4 minutes.
The work of people like us makes the work of people like you possible. So: nyah nyah na-nyah nyah.
Parent
Re:I Know How a Transistor Works! (Score:2)
Huh? I never said that I didn't know how a transistor (or parser, for that matter) works. I said that most people around here probably don't, and I'd still bet a hefty sum of money on that.
Re:I Know How a Transistor Works! (Score:2)
I hope this was meant to be sarcastic. Everyone makes everyone else's work possible. Otherwise, there would be no such thing as an economy nor such a thing as progress.
Re:I Know How a Transistor Works! (Score:2)
Oh yeah? I _guarantee_ you my work doesn't make your work possible. Or your money back!
Re:I Know How a Transistor Works! (Score:2)
No talk of valence vs. conduction band, no talk of doping concentrations, no talk of electron current vs. Hole current; good sir, you have given semiconductor physics a slap in the face with your cursory knowledge! You're the type who'd forget body effects ignore adding a contact to the substrate! Phillistine!
(P.S.- this is a joke. Laugh. Except for forgetting the substr
Re:OutDated? (Score:5, Informative)
1) Sometimes it's easier to write your own sort than to write a weird ass adaptor for your weird ass data.
2) Sometimes "good enough" isn't "good enough" and you need that extra 15% performance increase you get for writing a search/sort customized for your data.
3) Actually knowing how stuff works is good for the brain. After you learn basic bonehead algorithms, take some time to learn long division as well.
4) Just to prove that you aren't a code monkey destined for the dustheap of history when you turn thirty.
Parent
Why understanding the basics still matters (Score:3, Informative)
On the contrary. In my experience, an awful lot of programmers, mostly those who are self-taught but don't realise what they're missing, frequently choose an incorrect data structure or algorithm even for simple things like sorting and searching. If you're working in a field wh
Re:OutDated? (Score:3, Insightful)
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,
Re:OutDated? (Score:3, Insightful)
Re:OutDated? (Score:5, Insightful)
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.
Parent
Re:OutDated? (Score:2)
Re:OutDated? (Score:2)
I understand where you are coming from and if you catch me in the right mood I might agree (almost) without reservation, but I have some doubts. There are certain programming tasks that just can't be solved with a pred
So few comments... (Score:2, Funny)
More interestingly, it seems may are actually RTFBing.
Oh, I just hope no karma whore posts the book here. 8-)
Mozart & Oz in the book (Score:5, Informative)
Mozart & Oz are well-developed and worth a look--
your programming may improve because of them.
Cheers, Joel
p.s. here are quick excerpts:
The Mozart Programming System is an advanced development platform for intelligent, distributed applications. The system is the result of a decade of research in programming language design and implementation, constraint-based inference, distributed computing, and human-computer interfaces...
Mozart is based on the Oz language, which supports declarative programming, object-oriented programming, constraint programming, and concurrency as part of a coherent whole...
We have developed many applications including sophisticated collaborative tools, multi-agent systems, and digital assistants, as well as applications in natural language understanding and knowledge representation, in scheduling and time-tabling, and in placement and configuration.
Re:Mozart & Oz in the book (Score:2)
Bet you can't write that in functional, OOP and declarative forms. ;-)
Oz (Score:5, Interesting)
Note about the Oz language (Score:5, Insightful)
* 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
Re:Note about the Oz language (Score:2)
* concurrent like Erlang [erlang.org]
* distributed like Erlang [erlang.org]
* functional like Erlang [erlang.org]
and point to some comments by the Erlang crowd [erlang.org]
Regards,
Marc
hmm (Score:4, Interesting)
Is this book really as authoratitive as it tries to appear?
Re:hmm (Score:2)
Re:hmm (Score:2, Interesting)
Cautious first impressions (Score:3, Informative)
I had a quick scan over it, and while I'm reluctant to judge on first impressions, I couldn't help feeling that it had a lot of breadth but not much depth. It struck me as somewhat similar in style to the wizard book [mit.edu], though obviously with wider coverage.
I had the same immediate reservation as you did: the OOP section seemed weak compared to established "classics" in the field. Failure to mention things like LSP is unforgivable in a book aimin
OK, damning indictment time :-( (Score:3, Insightful)
What they called the "substitution property" is a waffly version of Liskov's clear and concise principle.
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 sep
And since I've just noticed who I'm replying to... (Score:2)
...I'll apologise now for the perhaps overly harsh tone of the parent post. As I noted in my original reply, there seems to be a lot of worthwhile material elsewhere in the book. I'm afraid I really don't like your presentation of OO, though.
Programming is my full-time job, and I use this stuff (and other programming styles you mention) all day. I also teach it to newbies from time to time. At that level, I've found that it's vital to get across concepts like invariant/pre-/post-conditions, and the focus
But don't look for... (Score:5, Interesting)
To some, leaving these topics out of a "bible" would amount to extreme heresy. The content of this book owes more of its lineage to The Structure and Interpretation of Computer Programs than The Art of Computer Programming.
Re:But don't look for... (Score:2)
Re:Kneejerk reaction (Score:3, Insightful)
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 [amazon.com] right now, and it's a little more complete treatment of the same
Re:Kneejerk reaction (Score:2)