10 ms·
I still don't understand why after so many years people are still trying to write a "SICP, but with language X". "The language doesn't really matter", as such
by craigsmansion 8y ago
I still don't understand why after so many years people are still trying to write a "SICP, but with language X".
"The language doesn't really matter", as such it's imperative Scheme is used.
I strongly feel that if you've worked your way through SICP, and, once finished, you think "Neat. I'll rewrite this but with language X," you've really missed out on value of SICP.
It's challenging enough to follow for people who know a Lisp going in, but using a language more mainstream and familiar to make it easier is largely counter-productive.
- 40acres 8y agoI'd rather see a SICP rewrite that lowers the barriers of mathematical pre-requisites. SICP is a great book but I found myself having to research calculus equations more than I'd like.
- tashoecraft 8y agoAppreciate someone else mentioning it. As a self taught dev, with pretty poor Math skills, it was frustrating hitting parts refering to some equation you are just supposed to know. Totally derailed my learning having to understand some random equation that wasn’t fully relevant
- opnitro 8y agoHow To Design Programs covers some of the same ground. (It's also in a lisp)
- white-flame 8y agoAs somebody who's always been strong in math, I agree. For the MIT crowd it can be a reasonable expectation, but in general an introductory course in Topic A should not require advanced & unrelated Topic B knowledge.
- 3pt14159 8y agoMaybe I came to SICP too late in life, but I've always struggled to get the hype. It seems so... Basic. Making a linked list is trivial in lisp. Lisp itself is trivial. Why does everyone care about this book so much?
- deleted 8y ago[deleted]
- greenshackle2 8y agoI don't remember Lisp or linked lists being an important part of the book. Yeah, you'll deal with them a lot because it's using Scheme, but that's really not the main point. I used it to get started with CS as a programmer who didn't study CS in college. I thought it was pretty good. It assumes the reader is intelligent. A lot of books and tutorials do way too much hand-holding for my taste. It's an intro book. If you've already done CS in college I don't expect you'd find it very insightful.
- zimablue 8y agoIt doesn't just make a linked list, if I remember right it goes through a whole compiler along with using continuations to implement a type of programming where every possibility is followed until it succeeds, along with several other paradigms.
- sn41 8y agoI am not sure whether you're joking, or a programming wizard, no disrespect intended. I run courses in programming languages where very smart kids struggle with streams (Section 3.5). I find the code for the Hamming Problem and Eratosthenes' Sieve using streams truly mind-expanding. https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5 https://mitpress.mit.edu/sites/default/files/sicp/full-text/...
- craigsmansion 8y ago> Lisp itself is trivial. Anything about an actual programming language is trivial in the book. I think by design. In a way, the book isn't even really using the Scheme language. It uses a seemingly makeshift language to help decompose a thought-process into uniform and logical elements. Then, if you throw some syntax at it (using a bunch of parenthesis), you can actually make a computer execute your thought process, almost as a convenient coincidence (which is also why the actual language doesn't matter. It's just that all other languages are more cluttered when trying to capture the concepts of the thought-processes as presented). One of the stated goals in the book is to blur the line between procedures and data. I believe that if you do SICP well, it blurs the line between data, procedures, and conceptual thought. If you can express a thought well enough to give it a name, to "define" it, you can control it (or "them", depending on whether you are depending on a procedure or spirits to do your bidding). You don't walk away from SICP an expert Lisp programmer. You walk away from SICP wondering if yin-yang is a fun joke by the authors, some weird coincidence, or actually a governing principle of a Universe which itself is written in Lisp. You also walk away wondering why people insist on calling OO a "paradigm".
- simias 8y agoI think I fail to understand your somewhat poetic and evocative language, I'm afraid that I'm going to ask you to dumb it down for me: >"The language doesn't really matter", as such it's imperative Scheme is used. This is an obvious contradiction and clearly you meant it that way but what do you imply exactly? >I strongly feel that if you've worked your way through SICP, and, once finished, you think "Neat. I'll rewrite this but with language X," you've really missed out on value of SICP. >It's challenging enough to follow for people who know a Lisp going in, but using a language more mainstream and familiar to make it easier is largely counter-productive. You claim that using an other language for SICP is "[missing] out on value" and "largely counter-productive" but you don't produce any evidence or argument to support that. Going through SICP using a static and non-reflective language like C does seem very frustrating but using a very dynamic language like Python might indeed be a decent fit. At least I can't see what's so obviously wrong about it.
- omaranto 8y agoI am not craigsmansion, but I think I know what he or she meant. The lessons in SICP are about fundamental computing concepts and independent of any language. The authors simply chose Scheme because it is easy to learn and let them teach those lessons comfortably. This means that rewriting it using a different language is mostly a waste of time: it's not a very short book, so rewriting takes a while and what is gained? It seems to me that, at most, you learn that specific language in addition to the fundamental concepts. I personally, would not think that is worth the effort.
- kenjackson 8y ago> The lessons in SICP are about fundamental computing concepts and independent of any language. The authors simply chose Scheme because it is easy to learn and let them teach those lessons comfortably. Exactly, And for some of their audience they may already be more familiar with a different language -- so why not lower the barrier of entry?
- MrEldritch 8y ago
- vandekeiser 8y agoI even ported the "Simulator for digital circuits" from SICP in Java (which "slightly" differs from Scheme): https://github.com/vandekeiser/wires https://github.com/vandekeiser/wires (look at the wires-core module). What I like about this book and "The little schemer" is how it is possible to "program in your head" with the examples. Maybe it is due to the homoiconicity?
- olavk 8y agoI'm not sure if you are arguing that the language matters or not, but isn't one the exercises to implement a Lisp interpreter? Changing this to another language would make the task much harder if not practically impossible.
- QML 8y agoIn my opinion, Scheme is not a good first-language to learn for beginners or for anyone getting into programming. Why? Because if you take an introductory CS course taught in Scheme, and you decide the field isn't for you, then you have essentially wasted a semester learning something you'll never use. Compare this to Python, which is general enough to transfer to other domains (with its numerous libraries) and is way easier to pick up. In addition, its near resemblance to English is friendlier to approach. I'm sure there are some plots out there showing the number of companies which use Python versus Scheme. This was the intuition, I believe, of why Berkeley for its 61A course switched from using Scheme as its primary language to using mostly Python and Scheme as a secondary language. (You still learn enough Scheme in the course to be able to build a Python interpreter for it). TL;DR - the language does matter; the first one shapes how one views CS; save Scheme as a later language to be used to shape mental models.