3 ms·
Is there a modern SICP book? I tried to go through it once, but immediately got stuck because my math/physics was so rusty that I would have to spend more time
by 0cf8612b2e1e 2y ago
Is there a modern SICP book? I tried to go through it once, but immediately got stuck because my math/physics was so rusty that I would have to spend more time researching the background than actually solving the CS puzzle
- noelwelsh 2y agohttps://cs.brown.edu/people/sk/ https://cs.brown.edu/people/sk/ and search for books. Maybe reading this will help: https://cseducators.stackexchange.com/questions/7478/which-book-should-i-choose-to-get-into-the-lisp-world/7481#7481 https://cseducators.stackexchange.com/questions/7478/which-b...
- hinkley 2y agoI'm still trying to decide of Fowler porting Refactoring to Javascript from Java is a good thing or a bad thing, but I'd kind of like to see someone port SICP to Python or maybe Elixir and see how it goes.
- ljlolel 2y agoHate to do this but https://chatgpt.com/share/67c78ef6-2418-8000-a40a-59d5b708bacb https://chatgpt.com/share/67c78ef6-2418-8000-a40a-59d5b708ba...
- -__---____-ZXyw 2y agoYes, I'm sure given 729 hours it'd come up with something useful.
- ForOldHack 2y agoThink of 1 1/2 hour commute. That is almost 2 years. It's a graduate level text. Way advanced. I would mention Knuth, but many problems in his books are still yealding PhDs. Way above my grade. There is a lot of problems I would like to look at hints. Kudos to your achievement.
- hinkley 2y agoIs 'It is' here referring to SICP? SICP is a graduate level text? That was literally the first CS book I had to buy as an undergrad.
- Jtsummers 2y agoYeah, it was written for first year students at MIT. Those are definitely more advanced students than at many other universities, but it is written for 1st-2nd year college students in a technical (math, science, engineering) discipline.
- hinkley 2y agoThere were places that were all too happy to copy MIT as well.
- -__---____-ZXyw 2y agoSICP modified for Python exists (I haven't looked at it, so not vouching or commenting) https://wizardforcel.gitbooks.io/sicp-in-python/content/ https://wizardforcel.gitbooks.io/sicp-in-python/content/
- Jtsummers 2y agoSICP was ported to JS though I'm not particularly keen on the result. https://sourceacademy.org/sicpjs/ https://sourceacademy.org/sicpjs/ The code is convoluted, in my opinion, because it tries to hue too closely to the Scheme code in the original giving some unnatural looking JS code as a result. For example: function member(item, x) { return is_null(x) ? null : item === head(x) ? x : member(item, tail(x)); } There are examples which have even more but that was the first one I came across clicking the TOC randomly. In Scheme it would be expressed something like this: (define (member? item set) (cond ((null? set) #f) ((equal? item (car set)) #t) (else (member item (cdr set))))) While the parens cause some brains to segfault, the structure of this (how each condition ties to each result) is clearer than that JS mess.
- shawn_w 2y agoI'm convinced someone wrote a (bad) Scheme to JavaScript transpiler to convert the code. It looks like nothing anyone would actually write.
- nvlled 2y agoI've seen code like that in production, it's not as strange as you think (pretty common in reactjs codebase). After a while, you just get used to it and read past the weird syntax. It's not really that different from a switch-case or if-else block: function member(item, x) { return /* if */ is_null(x) ? /* then */ null : /* elif */ item === head(x) ? /* then */ x : /* else */ member(item, tail(x)); }
- xiaoyu2006 2y agoIt’s not the language to blame in SICP, if any. Scheme is totally find (and cool).
- neilv 2y agoExtra whitespace to put the `cond` clauses in columns can make it even more clear, for "visual" looking at code, rather than only "verbal": (define (member? item set) (cond ((null? set) #f) ((equal? item (car set)) #t) (else (member? item (cdr set))))) For bonus points, line up the key variable in the clauses, and it's easier to see visually that the `cond` is about that one variable: (define (member? item set) (cond ((null? set) #f) ((equal? (car set) item) #t) (else (member? item (cdr set))))) Which accidentally also lines up with one of the procedure's arguments, though I didn't intend that one, but you could double down on that: (define (member? item set) (cond ((null? set) #f) ((equal? item (car set)) #t) (else (member? item (cdr set))))) This isn't some deep thing; just a little example of how sometimes whitespace, other than just indenting at the beginning of the line, helps to exposure some of the structure visually.
- aboardRat4 2y agohttps://sourceacademy.org/sicpjs/ https://sourceacademy.org/sicpjs/
- magpi3 2y agohttps://htdp.org/ https://htdp.org/ How to design programs (mentioned in the article).
- tmtvl 2y agoThat depends on what you mean by a 'modern SICP book', if you mean a newer book for learning Computer Science (CS), then of course there are many. 'How to Design Programs (HtDP)' would be an example. If you mean 'SICP but in a language that's more popular nowadays', there's SICP in JavaScript. If you mean a newer book which teaches CS in Scheme, I don't really know. HtDP uses Racket, which is a spin-off of Scheme, but outside of that I'm not really aware of any books which could be called 'modern'. There's Concrete Abstractions, which I would call 'SICP-lite' as it's a fair bit lighter on the maths, so that would be my first go-to if the maths are a bit intimidating.
- somethingsome 2y agoI already posted this another time, but I think this book deserve to be more known. Peter Van Roy, Concepts, Techniques, and Models of Computer Programming, 2004 It uses the language developed in this book (Oz). The book constructs many of the current programming paradigms, starting from almost nothing, with an emphasis on software design. See the paradigms poster built http://www.info.ucl.ac.be/people/PVR/paradigmsDIAGRAMeng201.pdf http://www.info.ucl.ac.be/people/PVR/paradigmsDIAGRAMeng201....