Page 1 of 2 12 Last
  • Jump to page:
    #1
  1. Commie Mutant Traitor
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Jun 2004
    Location
    Alpharetta, GA
    Posts
    1,809
    Rep Power
    1574

    Structure and Interpretation of Computer Programs: Opinions?


    I want to ask you about what is probably (judging from, among other things, the reviews on Amazon) the most divisive introductory text in the field: Structure and Interpretation of Computer Programs.

    (And if you haven't read it before, take a look at the online edition. It will be well worth your time - if it doesn't put you to sleep, that is.)

    It's an odd little book, and tends to generate strong emotions. I am personally in love with it, and with the Scheme language, but I've got a definite theoretical bent; and even given this, the rather abstruse nature of the text makes it hard to follow, and even harder to apply to real world programming (I discuss this in greater depth here and here). Practical-minded programmers almost universally hate it, because it is entirely abstract - it takes a lot of effort and time to digest the material, and even then, the presentation is so dry that a lot of programmers find it completely worthless. Even on an abstract level, many have opined that it is sloppy and poorly thought out, but others aver that it is lucid and tightly-reasoned. There doesn't seem to be much room for compromise with it - for most people, they either love it or hate it.

    I was wondering what the folks here thought of it. Any comments?

    (I wasn't sure if this should go under 'Software Development' or 'Beginning Programming', so I took the easy way out and posted it here. If any of the mods think it would be better in another forum, I would not object - not that I would have a say in the matter, of course. Also, this was crossposted to the NightStar Code Monkeys forum and User Friendly ARS, if you are interested in seeing the responses from elsewhere.)
    Last edited by Schol-R-LEA; June 11th, 2006 at 08:26 PM.
    Rev First Speaker Schol-R-LEA;2 JAM LCF ELF KoR KCO BiWM TGIF
    #define KINSEY (rand() % 7) λ Scheme is the Red Pill
    Scheme in ShortUnderstanding the C/C++ Preprocessor
    Taming PythonA Highly Opinionated Review of Programming Languages for the Novice, v1.1

    FOR SALE: One ShapeSystem 2300 CMD, extensively modified for human use. Includes s/w for anthro, transgender, sex-appeal enhance, & Gillian Anderson and Jason D. Poit clone forms. Some wear. $4500 obo. tverres@et.ins.gov
  2. #2
  3. Google Relay Server
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Oct 2003
    Location
    Oh christ I don't even know any more.
    Posts
    1,811
    Rep Power
    442
    That book looks incredibly interesting from the TOC. I'm going to pick up a copy, maybe I'll be able to have some solid backing to my armchair programming language philosphy .

    Speaking of which:
    Trying to teach good programming habits in VB6 is like trying to teach good hygiene in a sewer.
    That's not true!
  4. #3
  5. Contributing User
    Devshed Supreme Being (6500+ posts)

    Join Date
    Jan 2005
    Location
    Internet
    Posts
    7,625
    Rep Power
    6088
    Trying to teach good programming habits in VB6 is like trying to teach good hygiene in a sewer.
    That's not true!
    Yes, it is.
    Chat Server Project & Tutorial | WiFi-remote-control sailboat (building) | Joke Thread
    “Rational thinkers deplore the excesses of democracy; it abuses the individual and elevates the mob. The death of Socrates was its finest fruit.”
    Use XXX in a comment to flag something that is bogus but works. Use FIXME to flag something that is bogus and broken. Use TODO to leave yourself reminders. Calling a program finished before all these points are checked off is lazy.
    -Partial Credit: Sun

    If I ask you to redescribe your problem, it's because when you describe issues in detail, you often get a *click* and you suddenly know the solutions.
    Ches Koblents
  6. #4
  7. No Profile Picture
    Banned
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Apr 2005
    Posts
    4,934
    Rep Power
    0
    Re: VB....

    Trying to insult a language by saying that it allows bad programming habits is a complete "cop-out". It's an admission that the real reason "programmers" don't like it is that it has a low entry threshold, in other words, non-programmers can understand it. Most anti-VB garbage is based on this completely flawed argument that shifts the discussion away from what a language is capable of doing to what idiots are capable of doing with it.

    It's the same argument that Perl zealots and the like use against php, the same tripe that PostgreSQL fan boys use when talking about MySQL, and what all the Open Source sheep say about MS SQL and the rest of the Microsoft technologies...

    In other words, an argument that holds water like a chinoise...

    Comments on this post

    • peenie agrees : ding ding ding!
    • Ucht agrees
  8. #5
  9. Commie Mutant Traitor
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Jun 2004
    Location
    Alpharetta, GA
    Posts
    1,809
    Rep Power
    1574
    "Allows bad programming habits"? All languages are guilty of that, no matter what Niklaus Wirth and Bertrand Meyer might think. My problem is that VB 6 and earlier make it difficult to teach good ones. This has nothing to do with entry threshold - VB.Net, Delphi, Smalltalk, Logo, and Python are all pretty accessible, but don't have the problems I see in the older versions of VB (they each have their own flaws, as all languages do, but they generally are better for teaching than VB6). VB is great for rapid development of small user programs. From a teaching perspective, however, it is lousy, and from a software engineering perspective, it is a disaster.

    The main issues I have with older versions of VB are that a) they had a great deal of inconsistent material due to legacy support (which VB.Net dropped, admittedly rather abruptly), b) were entirely dependent on the RAD tools for the user interface (prior to VB5, in fact, you couldn't write a program in the language without at least one window - and this was only changed to allow DLLs to be written in VB), c) made it hard to use many kinds of design approaches and analysis tools, and d) made modularizing programs very hard, especially the event handling code, which was tied directly to the forms themselves in earlier versions. Also, apropos to teaching, it is a compiled language which has only a rudimentary ability (through the 'immediate window', which few VB programmers know exists) to be used interactively - making it less accessible than languages with listeners (such as earlier versions of BASIC).

    Now, this isn't to say those versions of VB aren't useful languages. But just because they are useful, doesn't make them suited for teaching introductory programming - accessibility is a necessary condition for a teaching language, but not a sufficient one.

    If people were only using it to write the sort of small, one-shot programs it was designed for, VB6 would have been fine. The problem was that people try to use it for major applications, and as an introductory language for teaching CS (mind you, I have equally serious reservations with C++, C# and Java as first languages as well, primarily due to them having too high an entry threshold). The language simply wasn't up to the task, IMAO. The biggest problem of all with VB6 was that Microsoft's marketing for the system promised more than it could reasonably deliver.

    As for which language I think is both accessible to novices and well-suited for teaching, well, that's implied in the topic of the post, isn't it?

    Speaking of which, this is all getting away from the original topic, especially in light of the fact that the quote in question has been in my .sig for over a year. Can we discuss SICP, please?

    Comments on this post

    • Arty Ziff disagrees : Eleitist.
    • gimp agrees
    Last edited by Schol-R-LEA; June 11th, 2006 at 11:36 PM.
    Rev First Speaker Schol-R-LEA;2 JAM LCF ELF KoR KCO BiWM TGIF
    #define KINSEY (rand() % 7) λ Scheme is the Red Pill
    Scheme in ShortUnderstanding the C/C++ Preprocessor
    Taming PythonA Highly Opinionated Review of Programming Languages for the Novice, v1.1

    FOR SALE: One ShapeSystem 2300 CMD, extensively modified for human use. Includes s/w for anthro, transgender, sex-appeal enhance, & Gillian Anderson and Jason D. Poit clone forms. Some wear. $4500 obo. tverres@et.ins.gov
  10. #6
  11. Google Relay Server
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Oct 2003
    Location
    Oh christ I don't even know any more.
    Posts
    1,811
    Rep Power
    442
    You're sig would probably be more accurate if it read:

    Trying to teach good programming habits to sloppy programmers is like trying to teach good hygiene in a sewer.
    Can we discuss SICP, please?
    We are, aren't we? Unless I'm thinking about it too much.

    Oh right, I guess you mean the book itself. You are probably right about sticking to the topic. Well, all I know is I just ordered my copy.

    Edit: Er, wait... should that be "to a sewer"? That would be kind of tough...
    Last edited by peenie; June 11th, 2006 at 11:39 PM.
    OMG RAVER CHICKS!!
    On a related note: C/C++ Programming Tutorials


    "Science is based on reality staying the same, and Nature ignores what humans vote upon." -- Bill Beaty
    "Three litres of sherry up the butt can only be described as astounding." -- Darwin Awards
  12. #7
  13. No Profile Picture
    Banned
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Apr 2005
    Posts
    4,934
    Rep Power
    0
    Originally Posted by Schol-R-LEA
    If people were only using it to write the sort of small, one-shot programs it was designed for, VB6 would have been fine. ...
    Really? That's what VB6 was designed for? That will be news to the people that designed it... It will also be news to all the developers who have written many thousands of complex mission critical three-tier applications with it. That's like saying that originally, php was designed to automate some guys web page, which really has zip to do with the current state of php. Obviously anyone programming in anything less than C++, Java, or Perl (or maybe Ruby or Python...) are just wanna-bes. Ah well, pointless going any farther down this road.
    Last edited by Arty Ziff; June 11th, 2006 at 11:42 PM.
  14. #8
  15. Commie Mutant Traitor
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Jun 2004
    Location
    Alpharetta, GA
    Posts
    1,809
    Rep Power
    1574
    Originally Posted by Arty Ziff
    disagrees: Elitist.
    Eh? Perhaps. But I would argue that a better designed language could have a much lower entry threshold than VB 6 did, and should. The simplicity of VB6 is an illusion; it is actually a very large language, with some quite hairy syntax, almost as bad as Perl in places (though like Perl, it is still imminently practical). Beyond a certain point, it becomes an anchor weighing you down, or at least that has been my experience with it. VB.Net fixed a good deal of this, really.

    As for it's applicability to larger problems, the fact that people do use it for complex applications of that sort doesn't mean it was designed for it, nor that it was suited for it (I would argue that no language yet devised is suited for them, actually). In any case, my main argument is regarding its suitability for teaching, which is a different matter altogether.

    Comments on this post

    • Arty Ziff disagrees : The "bash VB" thread has been done before. Negative points for unoriginality.
    Last edited by Schol-R-LEA; June 11th, 2006 at 11:58 PM.
    Rev First Speaker Schol-R-LEA;2 JAM LCF ELF KoR KCO BiWM TGIF
    #define KINSEY (rand() % 7) λ Scheme is the Red Pill
    Scheme in ShortUnderstanding the C/C++ Preprocessor
    Taming PythonA Highly Opinionated Review of Programming Languages for the Novice, v1.1

    FOR SALE: One ShapeSystem 2300 CMD, extensively modified for human use. Includes s/w for anthro, transgender, sex-appeal enhance, & Gillian Anderson and Jason D. Poit clone forms. Some wear. $4500 obo. tverres@et.ins.gov
  16. #9
  17. Google Relay Server
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Oct 2003
    Location
    Oh christ I don't even know any more.
    Posts
    1,811
    Rep Power
    442
    The simplicity of the language is an illusion; beyond a certain point, it becomes an anchor weight you down, or at least that has been my experience with it.
    I suppose I could see that but I mean (and I'm gonna have to bust out a phat cliché here), a hammer is great for nails but if you try to use it for a screw, it will also be an "anchor that weighs you down". That doesn't mean hammers aren't useful. Of course it's going to weigh you down if you are using the wrong tools for the job.

    That said, I've never had a problem developing "complex applications" in VB. Although I admit that sometimes I don't solely use VB (if I'm using VB at all). But the fact that VB gives you the power to say, write part of your application in any language that you can build a DLL with, you do have options.

    As for it's applicability to larger problems, the fact that people do use it for complex applications of that sort doesn't mean it was designed for it, nor that it was suited for it (I would argue that no language yet devised is suited for them, actually).
    But the fact that you can't use it to design complex applications doesn't mean it wasn't designed for it, or at least doesn't mean it can't be used for it.

    Bad "programming habits" are (and I would argue in all cases) a consequence of a bad programmer (well not "bad", that's harsh, but you know what I mean), not a bad language. You can write clean, flexible, maintainable, efficient code in VB, just as you can in PHP, or even a language like Lisp. It is possible. But you have to understand the language you are using well enough that things like, for example, finding the "immediate window" in VB, or dealing with complex C++ constructs, is so natural to you that 100% of your effort goes into design.

    Which is why this relates to [the contents of] that book, and why I made the comment originally. IMHO, having "good programming habits" means you are so fluent with the language that you can use it's constructs to express your problem so perfectly that merely by doing so, you have a good program. If you've actually mastered the language you are dealing with, and a lot of the more abstract theoretical stuff behind it, then everything will always fall into place correctly, without fail.

    Edit: Still haven't mastered that English yet, though. <.<
    Last edited by peenie; June 12th, 2006 at 12:06 AM.
    OMG RAVER CHICKS!!
    On a related note: C/C++ Programming Tutorials


    "Science is based on reality staying the same, and Nature ignores what humans vote upon." -- Bill Beaty
    "Three litres of sherry up the butt can only be described as astounding." -- Darwin Awards
  18. #10
  19. Commie Mutant Traitor
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Jun 2004
    Location
    Alpharetta, GA
    Posts
    1,809
    Rep Power
    1574
    Originally Posted by peenie
    Bad "programming habits" are (and I would argue in all cases) a consequence of a bad programmer (well not "bad", that's harsh, but you know what I mean), not a bad language. You can write clean, flexible, maintainable, efficient code in VB, just as you can in PHP, or even a language like Lisp. It is possible.
    I never said it wasn't; I have done so in the past in VB6 (on some fairly sizeable programs, though not of the scale Arty has in mind), or at least I tried to (and I will admit that if I failed to, it was my own failure, not the language's). I only said it's harder to teach novices how to do so than in a simpler language. In my experience, the entry threshold for VB6 looks lower than it actually is.

    Originally Posted by peenie
    But you have to understand the language you are using well enough that things like, for example, finding the "immediate window" in VB, or dealing with complex C++ constructs, is so natural to you that 100% of your effort goes into design.
    Again, I would argue that using a simpler language when starting out would help eliminate the 'noise' which distracts the beginner from developing good habits.

    Originally Posted by peenie
    Which is why this relates to [the contents of] that book, and why I made the comment originally. IMHO, having "good programming habits" means you are so fluent with the language that you can use it's constructs to express your problem so perfectly that merely by doing so, you have a good program. If you've actually mastered the language you are dealing with, and a lot of the more abstract theoretical stuff behind it, then everything will always fall into place correctly, without fail.
    Fair enough, as far as it goes. However, this implies that programming is mostly about coding, which isn't the case; design principles aren't tied to a given language. Tunnel vision can be deadly in programming, and for a professional programmer, being too dependent on a single given language - no matter what language it is - is hobbling.
    Last edited by Schol-R-LEA; June 12th, 2006 at 12:18 AM.
    Rev First Speaker Schol-R-LEA;2 JAM LCF ELF KoR KCO BiWM TGIF
    #define KINSEY (rand() % 7) λ Scheme is the Red Pill
    Scheme in ShortUnderstanding the C/C++ Preprocessor
    Taming PythonA Highly Opinionated Review of Programming Languages for the Novice, v1.1

    FOR SALE: One ShapeSystem 2300 CMD, extensively modified for human use. Includes s/w for anthro, transgender, sex-appeal enhance, & Gillian Anderson and Jason D. Poit clone forms. Some wear. $4500 obo. tverres@et.ins.gov
  20. #11
  21. Google Relay Server
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Oct 2003
    Location
    Oh christ I don't even know any more.
    Posts
    1,811
    Rep Power
    442
    Originally Posted by Schol-R-LEA
    However, this implies that programming is mostly about coding, which isn't the case; design principles aren't tied to a given language. Tunnel vision can be deadly in programming, and for a professional programmer, being too dependent on a single given language - no matter what language it is - is hobbling.
    That's wrong. I mean, that's right, that design principles aren't tied to a given language, but it's wrong that you inferred that from what I said. That's exactly the opposite of what I was trying to say. Maybe I didn't state it well (see what I mean about the English ). Design principles are not tied to a given language, which is precisely why you can't say that any one specific language is the cause of bad programming habits. What I said holds true for all languages.

    The stuff I said about things being "so natural that you could concentrate on design" means that when you have completely mastered the language you are dealing with, you can basically skip the thought process behind actually coding and concentrate entirely on design principles. It's like spoken languages; if you are extremely fluent in say, French, English, and Spanish, then when you are speaking in one of those languages you no longer need to think about the individual quirks those languages have, your idea just comes out, and it comes out correctly.

    Comments on this post

    • Schol-R-LEA agrees : Ah, I think I understand better now. I concede the point.
    Last edited by peenie; June 12th, 2006 at 02:02 AM.
    OMG RAVER CHICKS!!
    On a related note: C/C++ Programming Tutorials


    "Science is based on reality staying the same, and Nature ignores what humans vote upon." -- Bill Beaty
    "Three litres of sherry up the butt can only be described as astounding." -- Darwin Awards
  22. #12
  23. Commie Mutant Traitor
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Jun 2004
    Location
    Alpharetta, GA
    Posts
    1,809
    Rep Power
    1574
    OK, then. Anyone have anything to say about the book itself?
    Rev First Speaker Schol-R-LEA;2 JAM LCF ELF KoR KCO BiWM TGIF
    #define KINSEY (rand() % 7) λ Scheme is the Red Pill
    Scheme in ShortUnderstanding the C/C++ Preprocessor
    Taming PythonA Highly Opinionated Review of Programming Languages for the Novice, v1.1

    FOR SALE: One ShapeSystem 2300 CMD, extensively modified for human use. Includes s/w for anthro, transgender, sex-appeal enhance, & Gillian Anderson and Jason D. Poit clone forms. Some wear. $4500 obo. tverres@et.ins.gov
  24. #13
  25. No Profile Picture
    Contributing User
    Devshed God 1st Plane (5500 - 5999 posts)

    Join Date
    Oct 2000
    Location
    Back in the real world.
    Posts
    5,960
    Rep Power
    194
    Originally Posted by Schol-R-LEA
    OK, then. Anyone have anything to say about the book itself?
    I only had a short glance at it.
    Sounds pretty good. But I am not sure if "abstraction" should be the first thing to teach to newbs.

    If you(impersonally!) 're a bright mind, you'll automatically get the idea once you're into the business long enough.
    If you don't get it, find another job. Programming is not for you.

    About the article in question:
    Yes, it's good. Very good. But not for n00bs. N00bs need to understand the basics first. Abstraction on that level is for PhDs in statistics who would like to make their own "little stats" from something.

    Who are you? A "professional" in a different topic who wants to learn "about computers"? Or are you the hacker who can just apply these fact for his own advantage?
    Start with programming, and learn to apply statistics. Start with statistics, and learn how to write your own interpretation software.

    It does not matter which way you choose. Be a statistics hacker, or a hacking statistician. Just do it [TM]
    My 2ct.

    M.

    Comments on this post

    • B-Con agrees : On topic advice. And it only took 13 posts...
  26. #14
  27. Google Relay Server
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Oct 2003
    Location
    Oh christ I don't even know any more.
    Posts
    1,811
    Rep Power
    442
    Originally Posted by Schol-R-LEA
    OK, then. Anyone have anything to say about the book itself?
    Well I finally got a copy of it in my hands. I'll crack it open tonight, looks like it might be a good cure for insomnia...
    OMG RAVER CHICKS!!
    On a related note: C/C++ Programming Tutorials


    "Science is based on reality staying the same, and Nature ignores what humans vote upon." -- Bill Beaty
    "Three litres of sherry up the butt can only be described as astounding." -- Darwin Awards
  28. #15
  29. No Profile Picture
    Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    May 2006
    Location
    San Diego, USA
    Posts
    523
    Rep Power
    153
    It looks like you have started a great "Bash VB" thread here.

    If you find that you can somehow validate your own choices through this sort of argument then more power to you, to me
    it just looks like you are attempting to be inflammatory, and consequently you are actually diverting people from the original purpose of your topic.

    I have worked as a developer or "engineer" on numerous projects over the years, including some very large, and very successful enterprise systems written almost entirely in VB5 or 6 (not of my design, but I wish they would have been). On several of these projects I am pretty certain that if VB were not available the size and scope of the projects would have been severely limited. This is due to the ease VB provides in quickly accomplishing practical results. This is especially apparent in an agile development effort. To be fair, on the other hand I have also seen dismal failures with VB projects, as with projects in all other languages I have had the opportunity to work with.

    What it all comes down to in my opinion, is that bashing a language in such a general sense accomplishes little.

    I have taught programming topics at the university level, including enterprise development using Oracle PL/SQL and VB6 among other languages, and I’ve seen no evidence to your claim that VB6 is a poor language for teaching programming. I would argue that it is a limitation of the teacher, and not the language or the environment.

    Our personal prejudices in choice of environment, language, practices, and etc. are very likely natural to some degree... just as I might like one type of music and you another, and someone else might not care for music at all. It just depends on how much your parents beat you as a child. Or more likely, it is just our nature as humans to have our own preferences.

    If I find C# or Java or Ruby allow ME to work faster, better and smarter than if I am using Insert-Your-Most-Hated-Language-Here, then that is great for ME - but maybe not for you!!! And I would argue that it is very possible that this is the reason that so many languages exist: We are still discovering and inventing this world of programming. If we get stuck thinking that we have "found the ideal" (which I know you are not saying, so don't make a big deal out of this) we will limit ourselves and our progress.

    I remember in the early 1980s when I was writing a little app that needed a "menu" (in the old fashioned DOS meaning of the work) and thought that what I really needed was a "component" I could just "reference" by my code and set with some kind of configuration. Of course, when VB3 was first shown to me I recognized that the Menu that was available on the toolbar was exactly what I had envisioned, and I was REALLY PLEASED that someone had accomplished this sort of re-use.

    Anyway - can we get back to the topic of this thread, or perhaps start fresh without all the VB basning?
    Can't we all just get along?

    Comments on this post

    • peenie disagrees : um... we -were- back to the topic...
    • Arty Ziff agrees
Page 1 of 2 12 Last
  • Jump to page:

IMN logo majestic logo threadwatch logo seochat tools logo