6 ms·
CS61A: The Structure and Interpretation of Computer Programs
- thisisauserid 3y agoI couldn't make head or tails of that link but the textbook his here: https://inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html https://inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html Looks awesome but I still wish there was a completed clojure version.
- Jtsummers 3y agohttp://composingprograms.com/ http://composingprograms.com/ <- This is the current textbook they use for the course (per the Summer 2023 course site).
- dingosity 3y agoyes. but that's the python book.
- Jtsummers 3y agoThere are three books involved, two of them are Python. The original SICP, the CS61A Python version of SICP (top poster in this thread linked to it, no longer in use), and the current version of the text (also Python) that I linked. (The title of the submission seems to have changed, earlier it mentioned both Scheme and Python.)
- dingosity 3y agoThe link you provided links to a series of pages about (mostly) Python, some SQL and a touch of scheme. Interestingly, it doesn't talk about using scheme as a programming language as much as using python to create interpreters which interpret a small subset of scheme. I think most people would look at that corpus and say "that's a Python text."
- Jtsummers 3y agoIt’s the current version of the textbook for the current version of the submitted course (CS61A). I don’t understand the point you are trying to make. It was an appropriate addition to the discussion.
- jmort253 3y agoCool! I was in the process of reading the JavaScript version. Converting the book to various languages will help spread the concepts in this book to a larger audience.
- azangru 3y agoOh wow! I didn't know js version existed! I'll go check it out.
- Jtsummers 3y agohttps://mitpress.mit.edu/9780262543231/structure-and-interpretation-of-computer-programs/ https://mitpress.mit.edu/9780262543231/structure-and-interpr... That's the JS version's page. Click "Open Access" to get to the online version.
- alkonaut 3y agoAre there "conversions" for other languages as well? I know it's almost required reading for any software developer worth their salt, but I have several failed starts with the original version and have sworn to never have to read Lisp code. I get the gist. I get that Lisp elegantly represents the close tie between data and programs in a way that procedural programs never will, which is probably why it is chosen for the book. But no matter how perfectly suited for the task it is, I won't squint at lines ending in ))))) to try to see that meaning.
- BeetleB 3y agoWere you merely reading, or were you doing the exercises as well? SICP was my first introduction to Scheme/Lisp - and not at a young age. Once I started doing the problems, reading it became trivial.
- alkonaut 3y agoI was trying to read it, without being at all comfortable with the language. But I have also tried and failed multiple times to accept it by e.g. doing Clojure before that. So I wasn't entirely new to the syntax when I tried to read the book.
- noelwelsh 3y agoReading Lisp isn't that onerous. For a start, the brackets (and particularly the closing brackets) are basically irrelevant. They help the computer parse the code but you can read it mostly based on indentation. Anyway, there is a version in Javascript and the linked page has a textbook in Python.
- tenebrisalietum 3y agoBut you are OK looking at this?: } } } } }
- sobellian 3y ago"...if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program."
- vasili111 3y agoAnyone have experience reading both LISP and Python version of SICP? Does the Python version as good as LISP version?
- gumby 3y agoPython isn’t as powerful as lisp so you end up standing on your head to do some of the things that are so straightforward in lisp. I suppose using python might make it easier for some people to translate what they learned in class into their work, at least if that is in python. Python has gobs of libraries so it’s easier to write complex programs that can benefit from that than it is to try the same in lisp.
- dingosity 3y agoKris Jenkins wrote this page about functional programming, which is the best quick explanation of why functional programming languages matter: http://blog.jenkster.com/2015/12/what-is-functional-programming.html http://blog.jenkster.com/2015/12/what-is-functional-programm... And then you mix that with Larry Wall's famous quote: "Computer languages differ not so much in what they make possible, but in what they make easy." So you mix these two references together and you get the idea that maybe Lisp and Scheme and ML make functional programming easy. Python, on the other hand, makes it easy to avoid the key feature of Lisp: separating concerns and managing complexity. This doesn't mean Python is a bad language, and it doesn't mean you can't use python to craft programs in a functional style. But it's A LOT easier in Python for an inexperienced programmer to do things that Lisp and Scheme are trying to force you to avoid (by exposing unnecessary state to a function, conflating concerns and avoiding abstractions for manipulating complexity.) I think this is why Scheme was originally chosen for SICP over contemporary languages like C or Modula-{2|3} or Bliss. It's simultaneously good for CS pedagogy and a small team can build decent, extendible, testable and debuggable programs with it.
- soegaard 3y agoJust in case: use an editor with support for Scheme. If you want something easy to install, try DrRacket. - tab indents the current line - cmd-I (or ctrl-I) will indent the entire buffer - Press ] to insert a matching closer (an parenthesis, bracket or brace) When you need it, install the `sicp` package to get the Henderson picture language (and more) used in the book.
- easeout 3y agoFor those interested in the original Scheme, here's that playlist of SICP lectures by the authors. I read and worked through the second edition book, but found these videos later. They added lots of value and emphasis beyond the written material. https://www.youtube.com/playlist?list=PLE18841CABEA24090 https://www.youtube.com/playlist?list=PLE18841CABEA24090
- cobaltoxide 3y agoFrom 1986 - wow!
- zackmorris 3y agoFunny story: I took Scheme around 1995 for my first college programming class at UIUC, and nobody told me that we could split our code up into separate lines of execution. So I turned in all of my assignments for the semester as a multi-page function composed of higher-order methods executed in one shot. My teacher must have stared at some of them dumfounded, because they all worked. Although remembering back, I don't think I was the only student doing that! In the end, it helped me see that all programming is basically a spreadsheet and analogous to the STDIN/STDOUT stream processing of Unix executables. All of the stuff we think of as programming, like objects and classes, is basically hand waving to make problems/solutions supposedly fit in the human mind.
- somewhat_drunk 3y ago>In the end, it helped me see that all programming is basically a spreadsheet and analogous to the STDIN/STDOUT stream processing of Unix executables. All of the stuff we think of as programming, like objects and classes, is basically hand waving to make problems/solutions supposedly fit in the human mind. Holy shit Zack, I thought you didn't pay attention at Bayside??? Mind-blowing thought for my mind at this place and this time. Something that I intuited at some point but never made concrete by putting it into words. Thanks for sharing!
- syngrog66 3y agoSICP is one of my favorite books on programming. Along with GEB and Levy's Hackers. When I want to give a young person a headstart "sneak preview" taster into "our" culture -- or what I think our culture should be, on the intellectual plane, as an ideal, then I'm confident that these in particular can be stimulating little gems. OK, fine fine: also HHGG as the 4th of my top 3. The first book (in its series) especially but the entire 5+ books of its increasingly misnamed trilogy. And... Neuromancer. And Snow Crash. And Cryptonomicon. And...