[HN Gopher] Why Structure and Interpretation of Computer Program...
       ___________________________________________________________________
        
       Why Structure and Interpretation of Computer Programs Matters
        
       Author : AlexeyBrin
       Score  : 62 points
       Date   : 2024-06-16 18:02 UTC (4 hours ago)
        
 (HTM) web link (people.eecs.berkeley.edu)
 (TXT) w3m dump (people.eecs.berkeley.edu)
        
       | MeteorMarc wrote:
       | I miss the structure in the layout of this read.
        
       | patrickmay wrote:
       | Every time I read about SICP, I get frustrated all over again
       | about Javascript. It could have been Scheme and all web
       | development would have benefited.
        
         | fire_lake wrote:
         | Hey, at least there's Clojurescript.
        
         | snek_case wrote:
         | JavaScript was originally developed in two weeks due to time
         | constraints from Brendan Eich's employer. It would probably
         | have just as many design mistakes if he had stuck with a
         | scheme-like syntax instead. It's just hard to create a well-
         | designed language in such a short amount of time.
        
         | ralphc wrote:
         | The only way it would have "benefited" would be that the web
         | would only be developed by lisp programmers.
         | 
         | To the vast majority of programmers, syntax matters. C-style
         | with brackets, or python whitespace, or Ruby do/end, these fit
         | better the brains of the majority of programmers. Perhaps not
         | the majority of HN readers but the majority of corporate devs.
         | 
         | Another example of this is Erlang and Elixir. Elixir adds a
         | couple of features over Erlang, macros and protocols, but
         | Erlang does everything else. What made Elixir take off where
         | Erlang didn't, after decades, is that Elixir has a syntax that
         | people are comfortable with. Erlang has a syntax that will
         | summon Cthulu.
        
           | sakras wrote:
           | Is it an innate property of humans that the curly-brace style
           | is more natural? I wonder if in an alternate universe where
           | Lisp took off as the browser language people would find it
           | more natural instead. It seems like somewhat of a chicken-egg
           | problem.
        
             | lmm wrote:
             | I think it's innate that having differentiated syntax for
             | different types of grouping is natural. Look at
             | mathematical papers where people will introduce new
             | brackets with new meanings. (Indeed look at the entirety of
             | QM for a clear, simple case)
        
             | lopatin wrote:
             | Does decades of empirical evidence not prove that people
             | are more comfortable with imperative, curly brace
             | programming over s-expressions? It's not a chicken and egg
             | problem. The egg has hatched and nested parentheses lost.
        
             | ralphc wrote:
             | I don't know if it's innate but it's what we have. Lisp has
             | been around about as long as programming, it's had plenty
             | of time to catch on, it hasn't.
             | 
             | Maybe innate, maybe it's an offshoot of teaching math in an
             | infix style, 1 + 2 vs. + 1 2.
        
           | zarathustreal wrote:
           | I agree with most of what you said here but I want to
           | emphasize that this is not necessarily a good outcome.
           | Fitting the brains of corporate devs is not a metric to
           | measure if your goal is to make the best tool for the job -
           | the majority of corporate devs are extremely mediocre at
           | their job even with a language that they're not scared of.
           | 
           | All that to say, I completely emphatically agree with the
           | original comment. The world would have been so much better
           | off with Scheme as the language of the web.
        
             | ralphc wrote:
             | If the "job" is to make lots and lots of software, even if
             | most of it is mediocre, then the best tool is what will
             | enable millions of mediocre developers to develop, not just
             | thousands of elite developers.
        
           | tejtm wrote:
           | "The only way it would have "benefited" would be that the web
           | would only be developed by lisp programmers."
           | 
           | Considering the state of the web I do not think this is
           | making the argument you intend.
        
         | odyssey7 wrote:
         | ECMAScript 2015: proper tail calls are now in the spec
         | 
         | Chromium: we're not doing proper tail calls
        
       | zeroCalories wrote:
       | I always see people gush over this book, but is it still worth
       | reading for someone that already has a ton of experience
       | programming?
        
         | lisper wrote:
         | Yes. But instead of taking my word for it why don't you just
         | start reading it and decide for yourself?
        
           | vsuperpower2020 wrote:
           | Do you really need this explained? It's a 600 page technical
           | book and people have a limited amount of time to sort through
           | everything that exists.
        
             | exe34 wrote:
             | > It's a 600 page technical book
             | 
             | > why don't you just start reading it and decide for
             | yourself?
             | 
             | A journey of a thousand miles....
        
             | lopatin wrote:
             | Agree but you are replying to a user named "lisper".
        
               | CoastalCoder wrote:
               | Maybe he struggles with a speech impediment, you
               | insensitive clod!
               | 
               | <Slashdot_nostalgia/>
        
             | Turing_Machine wrote:
             | > It's a 600 page technical book
             | 
             | You do understand that you don't have to read an entire
             | book before forming an opinion, right?
             | 
             | > sort through everything that exists
             | 
             | "Book that has been considered a classic for forty years
             | and was used as the intro text at MIT for decades" is a
             | long, long way from "everything that exists".
        
         | bowsamic wrote:
         | No
        
           | theshaper wrote:
           | Because...
        
         | Maxatar wrote:
         | Experience in software development isn't linear so depending on
         | which path your experience has taken it could be very
         | insightful and useful, or it could be stuff you already know.
         | 
         | I'd say for the vast majority of developers, experienced or
         | otherwise, it's a good read.
        
         | CuriousSkeptic wrote:
         | Haven't actually done the book. Can vouch for the lectures[1]
         | though. Very much worth it to get a different perspective on
         | various language structures I had just taken for granted.
         | 
         | Watching 2-3 of these will probably answer your question.
         | 
         | [1] https://groups.csail.mit.edu/mac/classes/6.001/abelson-
         | sussm...
        
         | kikimora wrote:
         | Yes, I bet it will give you new perspective on a number of
         | things.
        
         | omnicognate wrote:
         | Whether it's worth reading isn't a question others can answer
         | for you, but "a ton of experience programming" definitely
         | doesn't imply it _isn 't_ worth reading as it's perfectly
         | possible to get through an entire programming career without
         | encountering the ideas and ways of thinking that you'll find in
         | it.
        
         | sakras wrote:
         | I started reading it around a year ago with the personal goal
         | of doing every exercise. I'm not done yet (almost done with
         | chapter 4). It has definitely taken a lot of my time, but it
         | really has changed my thinking about a lot of language
         | constructs I find in other languages.
         | 
         | For instance, the part about tagging objects with their type
         | reshaped my thinking about static type systems in general.
         | Static typing, for example in C, is essentially just moving the
         | location of the type tag from existing at runtime within the
         | struct, to the "analysis" phase of the compiler. It's a pretty
         | simple idea, but it made the "degree of dynamism" tradeoff
         | click in my head. All the information _has_ to exist somewhere,
         | and the only question is where. And Scheme is just at an
         | extreme where the _everything_ is stored dynamically.
        
         | PheonixPharts wrote:
         | "Don't cast your pearls before swine".
         | 
         | When I was younger I used to passionately defend those things
         | I've seen as beautiful, but after years experience talking with
         | people passionate about their fields and learning and those who
         | never will be: If you lack the innate curiosity to explore
         | those things others have declared marvelous, then this book
         | will offer you no value.
         | 
         | Every time I crack this book open I get excited and I've read
         | it multiple time and one most of the exercises. I can think of
         | few other books that really expose the beauty and
         | simultaneously strong engineering foundations of software.
         | 
         | You have "tons of experience programming" and sound like you've
         | already decided you know what needs to be known (otherwise why
         | even ask rather than just read it _free_ online), I doubt this
         | will offer you anything you haven 't already seen before.
        
       | iungret wrote:
       | I want a searchable resource where I give my inputs and desired
       | output and brief description of the algorithm and it gives me the
       | algorithm and code.
       | 
       | Same with AOCP, but I greatly prefer scheme to MIX.
       | 
       | Otherwise these works just seem like a doomsday rebuilding
       | references rather than knowledge with any practical presentation.
        
         | omnicognate wrote:
         | SICP isn't an algorithms book or a reference. It's very unlike
         | The Art of Computer Programming.
        
       | dswilkerson wrote:
       | I used to be a teaching assistant for CS 61A (intro to
       | programming) at Berkeley teaching from this book with Brian as
       | the instructor.
       | 
       | One of Brian's primary points is the following:
       | 
       | > Scheme ... has a very simple, uniform notation for everything.
       | Other languages have one notation for variable assignment,
       | another notation for conditional execution, two or three more for
       | looping, and yet another for function calls. Courses that teach
       | those languages spend at least half their time just on learning
       | the notation. In my SICP-based course at Berkeley, we spend the
       | first hour on notation and that's all we need; for the rest of
       | the semester we're learning ideas, not syntax.
       | 
       | Bullshit. Again, I was a TA for this course. You do not spend the
       | rest of the semester on ideas, you spend the rest of the semester
       | on the students being very confused.
       | 
       | This "everything looks the same" property of Scheme and of all
       | LISP-like languages is a bug, not a feature. When the semantics
       | is different, humans need the syntax to be different. In
       | contrast, LISP/Scheme make everything look the same. It is quite
       | hard to even tell a noun from a verb. This makes learning it and
       | teaching it hard, not easy.
       | 
       | Brian is selling a fantasy here. If you think Scheme is so great,
       | look at this nightmare of examples showing the various ways to
       | implement the factorial function in Scheme:
       | https://erkin.party/blog/200715/evolution/
       | 
       | All of this "abstractions first, reality second" agenda is just a
       | special case of what I call "The Pathology of the Modern": the
       | pathological worship of the abstract over the concrete.
       | Everything modernism touches turns into shit. I am done with
       | living in modernist shit and I hope you are too.
        
         | Turing_Machine wrote:
         | > It is quite hard to even tell a noun from a verb
         | 
         | What?
         | 
         | Unless the list is quoted or something, the first item after
         | the opening paren is always the "verb", yes?
        
       | rscho wrote:
       | People who complain about parentheses have never tried structural
       | editing. Change my mind!
        
       ___________________________________________________________________
       (page generated 2024-06-16 23:00 UTC)