Slashdot Mirror


Books on Programming Theory?

subversionfactor asks: "I am a philosophy student with an intense interest in mathematics and programming. However, while I've always been able to find books about various experimental areas of mathematics, I've never seen (m)any on the subject of programming theory. Most bookstores' "Tech" sections only include how-to books and books about why dot-coms failed. Does anyone in the Slashdot community have any recommendations for books dealing with any aspect of programming theory?"

85 comments

  1. The Definitive... by ActiveSX · · Score: 5, Informative
    1. Re:The Definitive... by flonker · · Score: 2

      Yes, what he said. Also, read the Jargon File. Anything it recommends is a good read. See the entries for Dragon Book for compiler design, for example.

    2. Re:The Definitive... by PD · · Score: 5, Informative

      And to add to that, Goedel Escher Bach. That book really has a lot of programming theory. Amazon has it here

    3. Re:The Definitive... by Trusty+Penfold · · Score: 1, Informative

      That is just a pre-order though; Mr Knuth has not finished writing the book yet.

    4. Re:The Definitive... by norwoodites · · Score: 1, Offtopic

      I have to agree but why was this even a ask slashdot when there was one definite answer if he had looked on google, 5th one down (6th if you count the sub one) is the answer?
      Cliff next time do a search one google to see if the answer is in the top ten.
      Also it is algorithm theory not programming theory, as programming theory is how people program, not what they use to get the answer to the problem.

    5. Re:The Definitive... by wdr1 · · Score: 1, Offtopic

      I have to agree but why was this even a ask slashdot when there was one definite answer if he had looked on google, 5th one down (6th if you count the sub one) is the answer?

      Cliff has to make his quota or he loses his job.

      Why do people hate Muslims?

      What people? That's pretty vauge.

      -Bill

      --
      SlashSig Karma: Excellent (mostly affected by moderatio
    6. Re:The Definitive... by jason_watkins · · Score: 2, Informative

      It's Dr. Knuth, and the first edition of the first three volumes are in fact, done. He'll be making 2nd editions sometime in the future after he finishes the volumes he's working on now.

    7. Re:The Definitive... by JonBob · · Score: 1

      I can't agree enough. Goedel, Escher, Bach is my favorite book of all time, and it combines all of the asker's stated interests (philosophy, math, computer science) along with a smattering of art and music as well. One of the best things about it as an answer to this question is that it truly is appropriate for a beginner. No previous knowledge about computers is assumed; it was written before everyone played with computers now and then. Start it now. It's a great read!

    8. Re:The Definitive... by Anonymous Coward · · Score: 0

      Volume 1,2 and 3 (chapters 1-6) are currently in their 3rd edition.

  2. Perhaps you should look in the right section... by roachmotel3 · · Score: 2, Informative

    We had lots of great classes in college on programming theory. You really want to look at a book on compiler theory or a book on language theory -- a great one would cover the differences between the major paradigms, and give examples of each.

    Our programming languages class had us learn a crapload (scientific term) of languages in one semester, and while I don't remember them all, or even how to code in them, I learned a lot about the underlying theory behind coding and the different paradigms.

    I wish I could find the book we used in the class, but amazon has the following which looks interesting: http://www.amazon.com/exec/obidos/tg/detail/-/0716 782669/qid=1034821624/sr=8-2/ref=sr_8_2/103-561245 0-3349406?v=glance&n=507846

    1. Re:Perhaps you should look in the right section... by Captain_Stupendous · · Score: 1

      As I recall, this was the standard method used in the majority of programming degrees: Learn a crapload of programming languages, and infer (with a couple of hints from the prof) the underlying basic principles. OF course the fru-fru courses (boolean algebra et al.) helped.... I always got the impression that there was some sort of basic underlying gestalt that couldn't be taught. You just had to slog through a bazillion different implementations of decision structures (if/then, case, etc.), loop structures (for, do while, repeat until, etc.) and work your way up to intermediate level stuff (recursion, pointers, etc), and only THEN were you ready for the supposed holy grail, the be-all, end-all of programming, OOP. Nuts to that. Personally, I think it would be an amazing resource to have a book that covers the major ideas, or "philosophy" behind programming, and THEN go after the language that implements this in a manner to your liking...

      --


      I am alone, yet I also surf the universal backwash of undifferentiated Being, which is LOVE.
    2. Re:Perhaps you should look in the right section... by Anonymous Coward · · Score: 0

      and only THEN were you ready for the supposed holy grail, the be-all, end-all of programming, OOP.

      Oh you troll good monsiuer. Real good. Join us, be at one with the trolls...

    3. Re:Perhaps you should look in the right section... by roachmotel3 · · Score: 1

      You know, this is very similar to the whole phonics/whole language debate, and frankly I don't think that you can sit down and just LEARN the fundamentals and theory behind programming without learning a bunch of languages to give you some reference point for what all of these heady concepts are.

      You don't just learn a lot of languages and then have the theory click, and you can't just learn the theory and have the languages fall into place. Rather, it's a combination of both. Just like learning to read, it's a combination of sounds and grammar.

      No matter how easy people want to make it, for some folks programming is just too complex and their brains aren't wired to understand it.

  3. Two titles by xyzzy · · Score: 5, Informative

    Structure and Interpretation of Computer Programming, Abelson & Sussman

    Art of Computer Programming, v1-4, Knuth (ok, so this is three titles)

    1. Re:Two titles by dirtydamo · · Score: 5, Informative

      You can find the full text of the Structure and Interpretation of Computer Programming online here.

  4. Obvious and non-obvious by Danny+Rathjens · · Score: 5, Informative

    Although "theory of programming" is rather weakly defined:
    "The Art of Computer Programming" by Knuth
    "Programming Pearls" by Bentley
    "Godel, Escher, Bach: An Eternal Golden Braid" by Hofstadter
    "The Tao of Programming"
    Jargon File

  5. One word: Knuth. (EOM). by Anonymous Coward · · Score: 0
    "Cat got your tongue? (something important seems to be missing from your comment ... like the body or the subject!)"
    Well all right then:

    Four words:
    Knuth in 3 volumes


    EOM.
  6. Theory by sameb · · Score: 5, Interesting

    While not strictly 'computer theory', the following books have definitely helped me to merge computer programming with philosophy...

    "The Elegant Universe" - Greene
    "Hyperspace" - Kaku
    "The Bit and the Pendulum" - Siegfried
    "The Structure of Scientific Revolutions" - Kuhn
    "The Advent of the Aglorithm" - Berlinksi
    "Orality & Literacy" - Ong
    "Genome" - Ridley
    "Philosophy of Mind" - Kim
    Scientific American - Every issue
    "Artificial Intelligence [A Modern Approach]" - Russel & Norvig
    "Computer Organization & Design [The Hardware/Software Interface]" - Hennessey

    And then of course Plato [The Republic, Timaeus & Critias, Phaedrus, etc..], Descarte [Meditations, ...], Rousseau [Reveries of a Solitary Walker, ...], Seneca [Letters From a Stoic, ...]... it's the texts that dwell into abstraction, truth, human nature, etc...

    While non of these books will make you a better programmer persay, they all will make you understand how things relate, how to approach topics, and what people will get out of things...

    1. Re:Theory by smallfries · · Score: 2, Interesting

      As the reply above said, great looking list. I'll have to dig a few of those out myself.

      You might also want to browse some of the stuff at Edge which is right in the middle of this field. The authors who contribute there have a book called 'The Third Culture', sorry I can't give you an ISBN but UI can't find a copy myself. It's aimed as a bridge between areas in the arts and sciences. Some of the papers in it (which are on the site) are good non-technical discussions of AI/programming and the philosophy behind it.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    2. Re:Theory by Moeses · · Score: 1

      I've read some excerpts from "The Structure of Scientific Revolutions" by Kuhn. It had some very interesting critique of the the various positivists (verificationists, falsificationists and whatever you consider Popper), but the part of Kuhn's POV that I didn't really agree with was the way he described the selection of competing scientific paradigms as a non-rational (not irrational) decision. Another philosopher I've read a little but from, Lakatos, had an argument that defended scientific process as a rationale enterprise. Lakatos had some neat models for handling periods of normal science and periods of revolutionary science. Pretty cool stuff, lakatos presents his ideas as explaining what Popper really meant, only better. In reality I think Lakatos doesn't give himself enought credit.

  7. Best beginner's books by rjh · · Score: 2

    Friedman and Felleisen, The Little LISPer and The Seasoned LISPer. Also available as The Little Schemer and The Seasoned Schemer, and The Little MLer and The Seasoned MLer.

    All are absolutely first-rate books.

  8. From another Phil major by Snafoo · · Score: 5, Interesting
    Geez, I didn't realise that there was more than one of us. :)

    I'm going to (a) give you a fish and (b) teach you how to catch more.

    (a) Introduction to the Theory of Computation (Sipser, Michael; 1997, PWS Publishing Company; ISBN 0-534-94728-X; QA267.S56 1996b 511.3 --dc20; amazon page here) is a fantastic volume. We used it in a comp sci course I took, and is probably the only book from my dint in c.s. that I won't sell. This, however, brings us to the bit about fishing:

    (b) Find out what courses at your university offer comp. sci theory, and then either (i) take the course (possibly pass/fail), or (ii) borrow their reading list. Contrary to your experiences in phil, virtually all (comp?) sci lectures are simple verbalisations of some gigantic glossy textbook. Those guys in the faculty of Science have far less interest in primary sources than we do; class time is not spent carefully teasing apart inscrutable two thousand year old sentences when a big glossy manual with colour diagrams are available.

    --
    - undoware.ca
  9. In addition by KnightStalker · · Score: 5, Informative

    "Introduction to Algorithms" by Cormen, Leisersen, Rivest, and Stein provides a much more readable, but, as always, not as in-depth alternative to Knuth.

    --
    * And remember, it's spelled N-e-t-s-c-a-p-e, but it's pronounced "Mozilla."
  10. On the Origin of Objects by mrolig · · Score: 3, Informative

    Brian Cantwell Smith
    On the Origin of Objects
    MIT Press
    ISBN: 0-262-19363-9 (HB) 0-262-69209-0 (PB)

    An exploration of object oriented programming turned philosophic inquiry. I've only read the first half; as a double major in Philosophy and CS I had to stop reading it so that my senior CS project did not devlove into a philosophy paper.

  11. Martin Davis, Engines of Logic by alacqua · · Score: 4, Informative
    If you like philosophy, mathematics and programming I can heartily recommend Engines of Logic: Mathematicians and the Origin of the Computer by Martin Davis (ISBN: 0393322297). [Actually, I read the hardback The Universal Computer: The Road from Leibniz to Turing but I believe they are the exactly the same.] Davis is a heavyweight in the theory of computation and has written very technical stuff, but this is a very accessible history of mathematical logic and said theory.

    In my opinion, it strikes the perfect balance for a book of its kind between readability and technical detail. And, based on who wrote it, you can be sure that the tecnical detail is correct. Depending on what you mean by "programming theory", I'm not sure if this is exactly what you are looking for. But based on your stated background, I'm sure you'll love it.

    --

    Move on. There's nothing to see here.
  12. The best ever book on computer programming... by Anonymous Coward · · Score: 2, Funny

    Alice in Wonderland.

    1. Re:The best ever book on computer programming... by norwoodites · · Score: 2

      Actually that was the second book.

    2. Re:The best ever book on computer programming... by Trusty+Penfold · · Score: 0, Offtopic

      I did a DLA project for my Chemistry degree. I didn't do the triangualar and hexagonal grids, but I did do 3D square lattices. I needed to get time on the 3090 for that.

      What's even more surprising is that this comment is actually true; unlike everything else I've written today.

    3. Re:The best ever book on computer programming... by KnightStalker · · Score: 2

      I believe the full name of the first book is "Alice's Adventures In Wonderland."

      --
      * And remember, it's spelled N-e-t-s-c-a-p-e, but it's pronounced "Mozilla."
  13. "Computer Power and Human Reason" by HotNeedleOfInquiry · · Score: 1

    By Joseph Weizenbaum. A beautifully written book on differences between human thought and the fuction of computers. It may be a bit more abstract than what you are looking for, but it is still a classic read. From the dust jacket: "Computer Power and Human Reason is a searching examination of what computers can do, what they cannot do, and what they should not be used to do. It is, above all, an eloquent argument for the sanctity of the human spirit."

    --
    "Eve of Destruction", it's not just for old hippies anymore...
  14. Related Philosophic Bibliography by mrolig · · Score: 5, Informative

    ... Just a few more things to throw in. If you're interested in Philsophy of Language and Phil. of Mathematics, you're also likely to be interested in formal semantics and other programming language areas, which are not neccessarily linked to "Theory of Computation". These fields delve much more into meaning of programming languages, rather than merely the computational or algorithmic side.

    For semantics, I don't have any good sources to refer you to, as I've only got lecture notes explaining the basics, but you want to look for discussion of "denotational semantics" These are discussed most in the functional language community. The Scheme spec (r5rs) has a denotational semantics for the language. "Monads" are also an area of some interest... but monads and category theory may be leaning more towards the mathematical side.

    Another related article:

    Rayside, Derick, Gerard T. Campbell
    "An Aristotelian Understanding of Object-Oriented Programming"
    OOPSLA '00 10/00 Minneapolis, MN USA
    [conference procedings]
    http://citeseer.nj.nec.com/rayside00aristotelian.h tml

    Here are two cites ripped from a course web page somewhere:
    J.C.Reynolds, Theories of Programming Languages, Cambridge University Press 1998, ISBN 0-521-59414-6

    D.A.Schmidt, Denotational Semantics: A Methodology for Language Development, WCB Publishers, Dubuque, Iowa 1988, ISBN 0-697-06849-8

    A few other things that may or may not be of interest in object oriented areas:

    Black, Andrew, Jens Palsberg. Foundations of Object-Oriented Languages ACM SIGPLAN Notices. Volume 29, No. 3, March 1994.

    Cook, William R., Walter L. Hill, and Peter S. Canning. Inheritance Is Not Subtyping. in Theoretical Aspects of Object-Oriented Design. ed. Carl A. Gunter and John C. Mitchel. MIT Press, Cambridge, Mass.: 1994.

    Danforth, Scott, Chris Tomlinson. Type Theories and Object-Oriented Programming. ACM Comput-ing Surveys, Vol. 20, No. 1, March 1988, p. 29

  15. The Pragmatic Programmer: From Journeyman to Maste by helixblue · · Score: 4, Interesting

    While not strictly "theory", but more good programming attitude & habits - I highly recommend picking up a copy of "The Pragmatic Programmer: From Journeyman to Master". I cannot recommend this book nearly enough. While it may not teach you a specific language, it teaches you general best practices in getting the job done in an effective manner. I'll rip off one of the quotes from the Amazon.com page:


    This book is an excellent distillation of practical experience and advice covering all phases of software development. While it's written mainly for the software developer, project managers will get valuable insight from the book on effective software development practice. The strength of this book is that it draws heavily from the authors' experience. Rather that promote a methodology, it promotes attitudes, values, tools and proven practices that will help anyone become a better software developer and make the job of software development more creative and stimulating. It's especially good for new software developers as it contains many lessons that experienced developers only learn the hard way. The book is well organized in easily digestible segments, with a very good cross reference system that makes it handy for repeated use. The appendix presents many valuable resources that professional programmers will want to explore.


    I actually got introduced to it because the same guys later went on to write a pretty decent Book on Ruby. However useful that book was to learning Ruby, The Pragmatic Programmer was useful to fostering a positive set of habits and attitude toward programming in General. At least do yourself a favor and read the rest of the comments on Amazon.com before dismissing this underrated classic!

  16. basically, you want early analytic philosophy by woggo · · Score: 5, Interesting

    You can learn a lot about CS by looking at pre-1930 math and philosophy.

    You'll see a lot of the genesis of proto-computer-science in Frege and Wittgenstein. Of course, it comes out full bore in Church and Turing. Any graduate-level logic text should cover combinatory logic (basically, with the lambda-calculus, the basis of functional programming). One such text (that I can recommend) is _Computability and Logic_, by Boolos.

    Of course, SICP (as recommended elsewhere) is excellent, and the Sipser book (likewise) is a readable introduction to theory of computation.

    What are you interested in? If you're interested in models for computation, check out the logic books. If you're interested in types (a la Russell), contrast logical types with PL types by reading Luca Cardelli's "Type Systems" (available online free from citeseer, use google). If you're interested in algorithms, Sedgewick or the massive MIT Press algorithms book is good.

    You can't be hurt by reading the fundamentals, either: Church, Turing, Rosser, anything by Burstall or Hoare, and (if you're in for some fun), PL semantics (the seminal work in this area is Strachey/Scott). There is a good book available online called "Semantics with Applications" or something similar; I believe that the authors are named Nielsen.

    Be careful, though. I was an undergrad philosophy major, and now I'm a grad student in programming languages.

  17. I wonder... by afay · · Score: 4, Insightful

    Out of the people who recommend Knuth's the Art of Computer Programming, how many have actually read any book in that series? Or even 1/4 of any book in that series? 1%?

    Not that they are bad books. I actually enjoy reading them and I'm working my way through the first one. The only problem is I can only get through about 5 pages before falling asleep (reading before I go to bed). Also, a suggestion if you're planning on reading any of these: keep a pad of paper and pencil nearby.

    Oh, also for people who want slightly lighter reading, but still good. Check out Algorithms in C or Algorithms in C++ by Sedgewick. Very good books (same book different languages) and very easy to read. Also, I believe this guy and his coauther were students of Knuth at Stanford.

    --
    Best slashdot comment
    1. Re:I wonder... by IainHere · · Score: 1

      "I believe this guy and his coauther were students of Knuth at Stanford."

      Of course, as Knuth himself quotes from Abel in one of the volumes of TAOCP (all of which I've read ;-)

      (In answer to a question on how he got his experience)
      "By studying the masters and not their pupils"

    2. Re:I wonder... by jimmyCarter · · Score: 1

      Amen.. I also love giving them a stab, but after about ten pages of reading, I always come to the same conclusion: I should have taken more math!

      --

      -- jimmycarter
  18. Dijkstra! by MarkusQ · · Score: 5, Informative

    I am a philosophy student with an intense interest in mathematics and programming...Does anyone...have any recommendations for books dealing with any aspect of programming theory?

    It sounds like you are looking for Edsger Dijkstra's A Discipline of Programming, which is great fun if you can juggle math, logic, philosophy, and programming (in a non-deterministic language he made up for the book) without getting fixated on any one to the exclusion of the others. He starts with an interesting angle on why we have computers at all, and builds up from there.

    -- MarkusQ

    1. Re:Dijkstra! by jason_watkins · · Score: 1

      I also highly reccomend this book. While I've certainly not pluged the depth of connotation such a short book offers, it's already been very useful. If, as a philosopher you strive for basic, general, unifying principles, this book is a very concise presentation of the same in the arena of programming. It's a shame more people don't read it.

  19. Object Oriented Software Construction by Breakerofthings · · Score: 2, Informative

    by Bertrand Myer

    Eiffel is used for the examples, but it is a comprehensive work on OO Design applicable to any OO language.

    Definitely worth reading.

  20. The Practice of Programming by agnosonga · · Score: 2, Informative

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

    1. Re:The Practice of Programming by rwinston · · Score: 1

      I second that one. Also 'Code Complete', by Steve McConnell, his follow-up, 'Rapid Development', and the amazing 'Programming Pearls' by Jon Bentley. I'm currently trawling through 'Object-Oriented Software Development' by Bertrand Meyer, but I'm finding it very dry and academic.

      --
      "If we cannot be free, then at least we can be cheap" -- Frank Zappa
    2. Re:The Practice of Programming by z01d · · Score: 1

      this book is excellent, it's all about the theory of practice, the theory of daily programming work. so i don't think it can fit the submitter's taste

  21. I liked this one by judd · · Score: 2

    A K Dewdney's New Turing Omnibus. Lots of short, chatty chapters on interesting problems in computer science, with illustrations and pseudocode. Good stuff.

  22. David Gries, The Science of Programming, Springer. by larse · · Score: 4, Informative

    David Gries, The Science of Programming, Springer.

    "This is the very first book to discuss the theory and principles of computer programming on the basis of the idea that a proof of correctness and a program should be developed hand in hand. It is built around the method first proposed by Dijkstra in his monograph The Discipline of Programming (1976), involving a "calculus for the derivation of programs." Directing his materials to the computer programmer with at least one year of experience, Gries presents explicit principles behind program development, and then leads the reader through example programs using those principles. Propositions and predicate calculus are presented as a took for the programmer, rather than simply an object of study. The reader should come away with a fresh outlook on programming theory and practice, and the assurance to develop correct programs effectively."

  23. Color me stupid... by itwerx · · Score: 1

    ...but how does "Programming Theory" need a book to be understood?
    Information comes in, it gets processed and goes back out.
    Anything more complicated than that starts getting into the whys and wherefores of the particular hardware/OS/compiler/libraries/languages you're working with.
    There's best practices, sure, but theory?!? Somebody tell me what I'm missing in this question...

    1. Re:Color me stupid... by Anonymous Coward · · Score: 0
      You're missing something called "charitable interpretation." It means that you assume the other person is more intelligent than a 2x4, and infer from that that the person obviously didn't mean the question that you are answering. The question is probably about theory of computation or theory of programming languages.

      Do you really think that somebody who asks a question on slashdot doesn't know that "information comes in, it gets processed and goes back out" (which is not even really correct) ?

      Sorry if I'm overreacting, I'm just sick of these stupid smart ass questions that pretend they don't have a clue what the original poster meant. Thank god not everybody is like you, otherwise communication would be very difficult.

    2. Re:Color me stupid... by bedessen · · Score: 5, Informative

      You're not a CS major, I take it.

      Compare the work done by a bubble-sort to that of a quick-sort. This is independant of OS, compiler, library, and language. Good algorithms are above such details. When you're dealing with basic tasks like sorting, hashing, indexing, graph theory, list manipulation, etc., there are many fundamental theorms that transcend the particulars of the compiler or operating system. And many complex problems can be broken down into these sort of basic primitives.

      I'm not implying that programming is all about these theoretical details, because it's not. But understanding the theory is an essential tool for being able to optimize a loop, write a library, or fix code in any case where time and space (i.e. code length) is of any concern.

    3. Re:Color me stupid... by itwerx · · Score: 1

      Thank you for a much more informative reply than the AC before you! :)

  24. agree, disute, add by freaq · · Score: 3, Interesting

    wicked looking list.

    not every issue of scientific american has dealt with programmming. maybe i'm biased because i read it throughout the 70's and 80's, but not so regularly in the last dozen years. maybe i'm jsut showing my age.

    add this one: "The Society of Mind" - Marvin Minsky.
    totally readable non-technical look at AI. brought to my attention by a geographer.

    --
    united states nuclear device terrorist bioweapon encryption cocaine korea syria iran iraq columbia cuba
    1. Re:agree, disute, add by sameb · · Score: 1

      Thanks :)

      The school I'm in at NYU (Gallatin) is an 'individualized studies' school -- so you get to basically pick and choose what you want to take. The catch is that in order to graduate you need to have a 2 hour talk with 3 professors explaining what you've done in the past 4 years, using atleast 20 books, 7 coming from before the 1600s, 4 humanities works after the 1600s, 4 social & natural science works after the 1600s, and 5 from your 'area of concentration'. So I've been staying up late developing a booklist and a theme of what I want to discuss.

      The thing is, if I transferred to CAS (the arts & science school), I'd have more than enough credits to be a Comp Sci major -- that's not what I want though. I'm interested in how computers have changed thought, and how design patterns relate to social & life patterns. You can imagine how ecstatic I was when I saw this 'Ask Slashdot' question. I already purchased the Goedel Escher Bach book (should be here tomorrow), am probably getting the "Origin of Objects" and will most definitely get the Knuth book[s].

      I've essentially decided that my focus is going to be 'The Development of Abstraction' -- from unordered random information to concrete working/usable information to abstract essences. It's basically the pattern that everything goes through, from a child becoming an adult to the universe creating life. Atleast those are my thoughts.

      Anyway... if anyone would like to add some more books to my list, or ideas to focus on, I'd be forever grateful.

    2. Re:agree, disute, add by Anonymous Coward · · Score: 0

      Sounds like you're going to be doing a lot of reading with one hand, if you catch my drift.

  25. There isnt... by sICE · · Score: 1


    well, although there are a lot of good refs and *ptr here, i never found such a book full filling what you have asked for (methinks).

    why? well i guess it depends on what -exactly- you're looking for. but you dont look for something specific... "Programming Theory". Maybe you're looking about a book about algorythms? Again, there's a bunch of books you can find on the net, try "algorythm site:ru" on google and there hundred of books you may drop an eye on.

    Again what's in an algorythm? it's a way of solving a problem in reguard to the tools you have to do so. Try to use the same algo with assembly (which one? 6502, 680x0 or 80x86 or ...? yurgl!), befunge, brainf*ck, c, c++, lisp, perl... the way you solve a problem depends the way you;re able to adapt to it... why not have your own set of solutions handling your problems... well then check "The Art of Computer Programming" and have a look about 99 bottles of beers, there http://99-bottles-of-beer.ls-la.net/)... my bet is there's even more algos than languages, depending on one situation. Will you malloc 10M to open a file or just go on with 4k chuncks?.

    i remember having asked to my mother how much pili-pili to put in the fish-soup... she said, shoked, "just taste it, you dumb!"

    cant help on this one :->

    ---
    http://freddo.netfirms.com/
    ---

    1. Re:There isnt... by sICE · · Score: 2, Interesting


      btw, about phi-psychology, is there any good book about reprogramming humans?

      advertising, propaganda, oh and `social engineering`? any general algo to exploit those stupid wetwares? we should be more open to what sect and religion do, there's surely some money to get there...

      i wonder what OS we're running on, definitively if there's a god, he's a bad coder... sadly, with my job status i probably cant judge...

      ---
      http://freddo.netfirms.com/
      ---

    2. Re:There isnt... by Anonymous Coward · · Score: 0

      ...interesting question, actually.

      The three that come to mind are...

      John Lilly, Programming in the Human Bio-Computer
      Norbert Wiener, Cybernetics
      Mind Control, Walter Bowart

      You may also look at military texts such as...

      Psychological Operations in Guerilla Warfare
      Silent Weapons for Quiet Wars (f/ Behold a Pale Horse)

      There are also many psychology, self-help & hypno-therapy books which deal with programming humans.

      The CIA had something of a cottage industry creating mind-control slaves for various nefarious purposes until the whole operation went deep underground following the intelligence community shakedowns of the 1970's. Look at stuff like Acid Dreams, Mk-Ultra, Phoenix Program, Monarch & related projects, Prouty's The Secret Team and others to find out what I mean.

      AC

    3. Re:There isnt... by sICE · · Score: 1


      Thanks a lot for your pointers, i just received the John Lilly book and it looks really interresting!

      i also found a lot of stuff just googleing for the authors. thanks again.

      freddo

  26. A huge area by twem2 · · Score: 1

    This is a huge area...
    To start off with I'd recommend a book about Logic. After this one can go onto Computation Theory (Turing/Church etc) and Complexity. These need a fair amount of Discrete Maths.
    AI is often a favourite area for philosophers (much to the annoyance of my lecturer as they never actually study it properly). This is again a huge area in itself, we've been recommended "Artificial Intelligence: A Modern Approach - Stuart Russell and Peter Norvig"
    See if you can find some lecture notes as well, many universities put the on the web (try http://www.cl.cam.ac.uk/)

  27. A book about theory of computation by jjkivilu · · Score: 1

    Hopcroft, J., Motwani, R., Ullman, J., Introduction to Automata Theory, Languages, and Computation, 2nd edition. Addison-Wesley Publishing. 2000. ISBN: 0201441241.

    Amazon information can be found here.

    1. Re:A book about theory of computation by WWE-TicK · · Score: 1

      Ugh .. this is the book we used in my Automata Theory class. I sold that bitch back as soon as the course was over.

  28. Wolfram 's book by PinglePongle · · Score: 4, Insightful

    A new kind of science - it's either genius or folly, but never is it boring...

    Code complete by McConnell - very much about the practice, not so much about the theory, but still useful.

    Software Engineering - a practitioners approach - useful overview.

    Bentley's Programming Pearls - down n dirty.

    --
    It's all very well in practice, but it will never work in theory.
  29. How about Nicklaus Wirth? by Old.UNIX.Nut · · Score: 2, Informative

    Algorithms+Data Structures=Programs is classic CS material.

  30. They exist... by joto · · Score: 3, Interesting
    But of course, to understand it, it would be beneficial to have a background in programming. Two excellent books that are useful for non-programmers however are: "David Harel: Algorithmics - The Spirit of Computing", and "Douglas Hofstadter: Goedel, Escher, Bach - An Eternal Golden Braid".

    The first book try to condense modern computer science into a few hundred pages written for a layman (much like "A brief history of time" does it for physics). The second combines everything interesting (Art, music, mathematics, philosophy, literature, genetics, etc), with programming, and is among the most interesting books I've ever read.

    The foundations of programming in Scheme is covered quite well in "Abelson & Sussman: Structured Interpretation of Computer Programs". But this is only one view. You may also want to read "Bertrand Meyer: Object-oriented software construction" for a relatively different view (more mainstream). Of course, when it comes to programming, there are no hard facts, and people tend to have a lot of differing opinions.

    Functional programming and logic programming arose out of a need to make programming more like that of writing specifications, to make it easier to construct mathematical proofs. It would be a good idea to look into that as well. I can recommend "L. C. Paulson: ML for the working programmer" as a good introduction to functional programming. There are also a number of good books on Haskell, please pick one. When it comes to logic programming, things are unfortunately a bit more messy. The main logic programming language, "Prolog", is all but logical. Also, most research these days seems to focus on constraint programming, which is a generalization of logic programming. For a good online introduction, check out Oz Mozart.

    The foundations of mathematics (logic, set-theory, category-theory, etc) are all important in computer science. And of course also more mundane subjects such as combinatorics, calculus, etc...

    Logic relates to programming, as mathematics do to engineering. While formal methods have not had much practical value so far, it's an important part of computer science, and undoubtedly something that should become important sometime in the future, once we find a practical way to do it. The best place to get the basic ideas are still "Edsger Dijkstra: A discipline of programming". It's more than likely that you local CS department offers some courses.

    Since your view is from philosophy, I guess you are more interested in the important insights of computer science, rather than the boring details. In that case, I can also recommend: "Papadimitrou: Computational Complexity" which covers more or less the same stuff as Harel's book, but in a bit more in depth. It would be good to have read a basic book on algorithms first (basically any will do, but I can recommend the books by Sedgewick, or Cormen, Leiserson & Rivest). By this time, you should be able to find your own references in computational complexity and algorithm analysis.

  31. Philpsopy and programming by keoghp · · Score: 0

    Try Wolframs "A new kind of science"

    --
    For problems, seek only the simplest solution, complexity brings with it more problems.
  32. If you're just starting out... by Just_Tom · · Score: 1

    The Pattern On The Stone by Daniel Hillis is a good introductory text on what it is exactly that computers are doing, and a solid introduction to some other topics such as genetic algorithms and chip design. It's only short, but I got a lot out of it (and this was two years into my BSc which had covered quite a lot of AI and programming by then).

  33. Programming Language Theory Weblog by noelwelsh · · Score: 1

    Programming theory covers everything from theories of computation to software engineering. Assuming your more interested in the former than the later I suggest looking at the programming language theory weblog Lambda the Ultimate.

  34. Well... by Anonymous Coward · · Score: 0

    The above recommendations are fine, but don't really apply to you. You are a philosophy student, and will be criticized for actually agreeing with anything those books say in the first place. What you need to do is make up your own programming theory. In your philosophy world, your uninformed opinions on something will be treated as equally as the facts anyway, so why bother learning what the facts are, when it's easier to learn stuff you've just made up anyway.

  35. Hi! Can I suggest a book? by Anonymous Coward · · Score: 0

    I just saw "I am a philosophy student with an intense interest in mathematics and programming" in the article, and I think the most important book you will need is this one.

    I'm serious here. Forget the mind-wanking in the ivory tower, and ask yourself: How will I eat? What will I eat? You may think I'm kidding, but just look at all the high-and-mighty Nortel and Hype-Your-(nonexistent)Chip 'engineers' 2 years ago and look at them now... I think one of them just asked me 'paper or plastic' the other day.

  36. Three simple words: Turing Turing Turing by FortKnox · · Score: 2

    For a good mix of mathematics and computational theory, look at the man that fathered computers: Alan Turing. Any book that mentions the experiments and papers of Turing will have good bits on what you want (pun intended). ;-)

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  37. Programming Language books... by Tom7 · · Score: 2

    I think you'll probably find some interesting things about the "theory of programming" in theory-oriented programming language texts and papers. Benjamin Pierce has a good new book, for instance:

    http://www.cis.upenn.edu/~bcpierce/tapl/index.html

    (This doesn't cover computability and complexity, etc., rather, it really is about the act of *programming*.)

  38. Book on the Computer and Metaphysics by WINSTANLEY · · Score: 1


    Heinz Pagels, the late physicist, wrote a book about how computer modeling was influencing fundamental we imagine the world. I believe the title is Dreams Of Reason.

    --
    It is by coff... er, will, alone I set my mind in motion...
  39. Look at Quantum Computing by scruffy · · Score: 2

    If you want to think about the very latest, you should learn Quantum Computing. I don't know the best books though.

  40. The Deadline by MerlynEmrys67 · · Score: 1
    The Deadline by Tom Demarco - ISBN: 0932633390; (July 1997)

    One of my favorite books on Project management. This book is a work of fiction by one of the great authors in Computer Science. This book is a work of Fiction, where the books main character is kidnapped by the ruthless King Bill (who just spent his money buying a country), and forced to manage a team of engineers producing knockoffs of popular desktop applications.

    You might recognize some of the other cameo appearances as well. This is a great read, perfect for a flight on a business trip, or handed to any manager you might find yourself working for.

    --
    I have mod points and I am not afraid to use them
  41. Reprogramming humans by Glonoinha · · Score: 1

    Snow Crash.

    Note - this is fiction.
    Well it is currently fiction.

    --
    Glonoinha the MebiByte Slayer
  42. I will add a few that have not been mentioned. by Glonoinha · · Score: 1

    Books :
    Snow Crash.
    Neuromancer.
    The Mythical Man Month.

    I also recommend that you pick up the hardcover copies of the AD&D Second Edition and learn to play, spend a few weekends playing from dusk to dawn. You would be amazed at how many real programmers used to play RPGs. AD&D (dungeons and dragons) is a game that can only be played successfully if you read through and memorize all 6 manuals, understand the system from the back end, remember where to (quickly) find a rule that supports what you need to do - generally hidden in the larger volumes (books total maybe 1500 pages tops.) You learn to twist the system to do what you need it to do, all the while struggling with random events or malicious other people.

    Just like programming.

    --
    Glonoinha the MebiByte Slayer
  43. Re:One word: Knuth. (EOM). by joe_adk · · Score: 1

    fourth volume info:Knuth

  44. Automated Reasoning by Basselope · · Score: 1

    I'm presently taking a course on using computers to perform automated reasoning tasks. It's basically theorem proving, but it can be applied to a number of problems such as designing circuit boards or validating code.

    Anyhow, there are two texts I'm using right now. I don't have them with me, so I'm working from memory right now, but I believe both are titled Automated Reasoning. The first was written by Wos and others while the second was written by Chang and Lee.

    I've enjoyed it a lot so far. The authors use very different approaches - Chang and Lee are very formal and the book reads like a typical math text. Wos, on the other hand, is very chatty. Neither of them relies on a specific implementation of automated reasoning, so you should be able to apply what you learn to any application.

    They both start by building from basic Boolean logic, introducing better models, and explaining their limitations. As somebody with a strong math background but little experience with programming or automated reasoning, I've found them both easy to follow and understand.

    Anyhow, enjoy.

  45. Canonical Tomes by anguish+feast · · Score: 2, Informative

    this site was mentioned here about a year ago. theres's a good list of books there. others might like to contribute the titles they've mentioned.

  46. programming theory by cbare · · Score: 1

    Godel, Escher, Bach

    "The Advent of the Algorithm" - David Berlinksi
    A quirky, very accessible treatment of the link between mathematics and computation.

    "Concrete Mathematics" - Ronald Graham, Donald Knuth, and Oren Patashnik
    If you're hard-core about the mathematical aspect.

    "Object-Oriented Analysis and Design with Applications" - Grady Booch
    If you're interested in OO.

    Books by or about:
    alan turing
    godel
    noam chomsky
    claude shannon

    --
    -cbare
  47. Kay - Smalltalk, Papert - Logo, Wirth A+D=P by Anonymous Coward · · Score: 0

    "Algorithms + Data Structures = Programs" by Niklaus Wirth is important and good.
    Alan Kay's article in September 1977 Scientific American on early Smalltalk, the "new" graphical terminals and teaching programming to children is astonishing. (Examples include drag-and-drop circuit drawing programs written by 15-year-olds)
    Seymour Papert's "Mindstorms" on teaching programming to kids with Logo and turtle graphics (and real pen-holding turtle robots too, I think) is good. (last two on teaching kids aren't silly or low-level -- they're instructive explaining why this stuff is done and how people new to the field learn it)
    Also, the Modula-3 report and the 1980 Smalltalk report have important (though different) stuff.

  48. Programming Language Theory & Philosophy by N.+Evil+Genius · · Score: 1
    That's an easy one! The most basic points of programming philosophy are set forth in Asimov's Laws of Robotics, as stated in his robot stories and novels, though I think that new Zeroth Law ("A robot may not harm humanity in general, or, through inaction, allow humanity in general to come to harm.") might prove somewhat difficult to implement.

    In addition, I agree quite strongly with those who recommended MIT's Jargon File, and I direct your attention especially to the entry for "molly guard."

    You should also try S. I. Hayakawa's Language in Thought and Actio, and you should definitely consult The Word Spy. The first is one of the classics in the field of semantics; the second logs the appearance of new words and phrases (frequently tech-related), and explains the concepts behind them.

    --
    If it seems like the world is run by crazies, that's only because none of you sane people wanted the job.
  49. The Pragmatic Programmer by bokmann · · Score: 2

    The Pragmatic Programmer by Dave thomas and Andy Hunt. While not exactly 'theory of application design' is an EXCELLENT book about being a software engineering practicioner.

  50. Colleges? by joshdick · · Score: 1

    To anyone who can offer some guidance:
    I am a senior in high school. I also am interested in math, philosophy, and computer programming. In addition, I like political science. I don't really know what to major in. Can anybody suggest any good majors or colleges for me, please?

  51. GEB vs The Emperor's New Mind by Anonymous Coward · · Score: 0

    AS one poster has already pointed out Michael Sipser's book "Introduction to the theory of computation" is excellent, and cannot be reccomended enough. Now is it just me or is "Godel, Escher, Bach" the biggest bunch of codswallop ever to be slapped between the cardboard. As an antidote I suggest Roger (the black hole) Penrose's book "the emperor's new mind". One is briming with insight and thoughtful considerations. The other is full of delusions and personal mind manipulations which will disgust most thoughtful truth seekers, but appeal to hippies.