9 ms·
Beautiful Online SICP
- Dangeranger 10y agoDownloadable PDF version here: https://github.com/sarabander/sicp-pdf/raw/master/sicp.pdf https://github.com/sarabander/sicp-pdf/raw/master/sicp.pdf
- irfansharif 10y agoperhaps only tangentially related but recently I began noting down beautiful typefaces I come across, the two used here are Inconsolata LGC and Linux Libertine O. do you guys have favorites?
- alxndr 10y agoInconsolata has been my favorite monospace font for working in terminals and editors for a couple years now. It's pretty subtly-serifed for a monospace, punctuation doesn't seem to distract me like it can in other fonts, and I find it easy to distinguish close characters like "1" "l" "I".
- throwaway7645 10y agoVery pretty...is it just a nicer version of the one MIT's SICP page links to?
- userbinator 10y agoI actually prefer the square corners of the original link-structure diagrams to the rounded ones in this version; compare: https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-15.html#%_sec_2.2.2 https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-15.htm... http://sarabander.github.io/sicp/html/2_002e2.xhtml#g_t2_002e2_002e2 http://sarabander.github.io/sicp/html/2_002e2.xhtml#g_t2_002... However, the fact that they're not tiny and pixelated is definitely an improvement. As for the content of SICP itself, it's extremely interesting and enlightening but perhaps encourages a little too much "abstraction-worship" --- not surprising given that computers were still getting faster exponentially when the book was first written.
- gravypod 10y agoHow would one compile this with higher contrast text? This is a wonderful refresh to an eternal programming classic.
- guhsnamih 10y agoA lot more readable on the computer. I hope MIT Press doesn't complain.
- 0xcde4c3db 10y agoI'm not sure why they would, considering: > Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License by the MIT Press. [1] That's not an "ND" (no derivative works) license, and this version also says it's licensed under CC-BY-SA 4.0 International, which should cover the "ShareAlike" part. [1] https://mitpress.mit.edu/sicp/ https://mitpress.mit.edu/sicp/
- deleted 10y ago[deleted]
- ZephyrP 10y agoSarabander's edition is definitely a huge credit to it's author: It isn't just a reprint of SICP; The text and it's font has been updated, many of the diagrams have been redone for clarity and the document and footnotes are hyperlinked. If it's your ambition to follow in the footsteps of others or otherwise just prefer the classic Lisp-haqr experience, you can use a TexInfo version of SICP and have both the text and your REPL in Emacs: http://zv.github.io/note/sicp-in-texinfo http://zv.github.io/note/sicp-in-texinfo Also, just to pimp my own ride: I put together a SICP guide for new explorers of this great text: https://github.com/zv/SICP-guile https://github.com/zv/SICP-guile It contains both meta-information about which dialects of Lisps and languages are most suited to SICP, overviews of subchapters, helpful hints for those who are following along at home as well as answers to the exercises in Elisp, Guile scheme & Racket.
- Dangeranger 10y agoYes, I love this idea as well. Did a little research and found the TextInfo format from Neil Van Dyke here: http://www.neilvandyke.org/sicp-texi/ http://www.neilvandyke.org/sicp-texi/
- cies 10y ago> you can use a TexInfo version of SICP and have both the text and your REPL in Emacs Or have it all in your browser (every code block is a REPL; CTRL-Enter to run): https://xuanji.appspot.com/isicp https://xuanji.appspot.com/isicp
- znpy 10y agoInfo is an awesome format but sadly is very well underappreciated.
- SnowingXIV 10y agoWoah, yeah I think this is a solid approach. You can remove all distractions and just work on the one page and focus on only the task at hand rather than worrying about dealing with your own setup and can be accessed anywhere.
- 10y ago
- mike986 10y agoabsolutely beautiful. i have the dead tree version and i've grown tired of the times new roman font. anyone know how `Figure 1.5: The tree-recursive process' is generated? it's not an image. http://sarabander.github.io/sicp/html/1_002e2.xhtml#g_t1_002e2_002e2 http://sarabander.github.io/sicp/html/1_002e2.xhtml#g_t1_002...
- zellyn 10y agoIt appears to be an svg. It could have been drawn using any number of tools, or by hand: svg is remarkably understandable. In this case, it was drawn with Inkscape: view source on http://sarabander.github.io/sicp/html/fig/chap1/Fig1.5d.std.svg http://sarabander.github.io/sicp/html/fig/chap1/Fig1.5d.std....
- xiaq 10y agoNow that we're seeing WASM being supported, it would be awesome if code in the textbook runs in the browser.
- rjeli 10y agoSee https://news.ycombinator.com/item?id=4860370 https://news.ycombinator.com/item?id=4860370 from 4 years ago, it's fantastic
- tjohns 10y agoLooks really nice. Maybe I'll finally get around to reading SICP, given how often it seems to come up in discussions here. :) That said, it seems that the font in this version is insanely large. I know large fonts are trendy right now, but 27pt text is just too much for long-form content like a book. (Compare with printed material at 10-12pt.) If the author's trying to improve readability, I'd recommend a higher-contrast font color instead. On the other hand, the PDF version looks fantastic and addresses both concerns.
- 40acres 10y agoI just started SICP today and am using this source. I have no idea what I'm getting myself into but am looking forward to it.
- Dangeranger 10y agoIt's one of those books you will come back to every three to four years and appreciate with new eyes each time.
- ldjb 10y agoSICP is the one text I wish I'd known about when studying computer science at uni. When I finally discovered and read it, it was a truly eye-opening experience and revolutionised the way I thought about tackling problems and designing software. It may have been around for a while, but the ideas presented still hold water today. As others have mentioned, the linked version has some definite improvements over the web version provided by MIT Press [0], which doesn't have particularly clear diagrams. In fact, MIT Press does have an alternative version with larger diagrams [1], but the footnote links don't work. Do also check out the 1986 Abelson and Sussman lectures [2] that accompany the text. Those two present the course in such an interesting and (dare I say it) fun way. And for those who have already watched that and are curious, I've recently uploaded a 2004 version of the lectures to YouTube [3]. They're sourced from the SICP iCampus site [4], which is another fantastic resource, though I find the way that site presents the lectures to be a bit annoying. Completing the problem sets is a good way to check your understanding, though! [0] http://mitpress.mit.edu/sicp/full-text/book/book.html http://mitpress.mit.edu/sicp/full-text/book/book.html [1] https://mitpress.mit.edu/sicp/full-text/sicp/book/ https://mitpress.mit.edu/sicp/full-text/sicp/book/ [2] http://www.youtube.com/playlist?list=PLE18841CABEA24090 http://www.youtube.com/playlist?list=PLE18841CABEA24090 [3] http://www.youtube.com/playlist?list=PL7BcsI5ueSNFPCEisbaoQ0kXIDX9rR5FF http://www.youtube.com/playlist?list=PL7BcsI5ueSNFPCEisbaoQ0... [4] http://icampustutor.csail.mit.edu/6.001-public/ http://icampustutor.csail.mit.edu/6.001-public/
- babyrainbow 10y ago>it was a truly eye-opening experience and revolutionised the way I thought about tackling problems and designing software. Really curious. Can you share a bit more details about this. Like specific instances of how it changed your thinking..
- ldjb 10y agoFor example, I previously tended to use a bottom-up approach to development. However, SICP showed me the benefits of what it calls "wishful thinking" with a more top-down approach. It also helped me finally 'get' functional programming. Even in situations where other programming paradigms make more sense, I'll still opt for a functional style a lot of the time and avoid state. I'm also a lot more confident with higher-order functions and closures after SICP help me understand them better. Seeing how cons pairs can be implemented as functions was simply mind-blowing. I think being able to use some of these techniques have improved the way I code. There are a lot of other topics, such as the meta-circular evaluator, that I haven't had the opportunity to put into practice, but are nonetheless absolutely fascinating.
- git-pull 10y agoIt would be beautiful if there was a Sphinx Theme for that book layout / structure. It looks positively fantastic. Imagine reading through SQLAlchemy's documentation [1] in that format. Quick link to the repo: https://github.com/sarabander/sicp https://github.com/sarabander/sicp The format this book is made out of seems to be Texinfo: https://en.wikipedia.org/wiki/Texinfo https://en.wikipedia.org/wiki/Texinfo [1] http://docs.sqlalchemy.org/en/latest/ http://docs.sqlalchemy.org/en/latest/
- bertr4nd 10y agoThis is incredibly beautiful. I wish all technical writing online could be so well presented - I'm tired of trying to read two-column journal-formatted PDFs on my phone.
- Dangeranger 10y agoThere is an excellent 'pocket' format for compact E-readers in the parent's Github repo as well, which should be nice for smaller screen sizes.
- throwaway7645 10y agoYou would like the "beautifulracket" site.
- macintux 10y agoAnxiously awaiting an iPad Pro (the big 'un) refresh and a bit of time to save up so I can use it for reading PDFs.
- hitlin37 10y agois there a beautiful epub version?
- hitlin37 10y agofound it.
- provemewrong 10y agoHere's a direct link, if anyone else is looking for it. https://github.com/sarabander/sicp-epub/blob/master/sicp.epub?raw=true https://github.com/sarabander/sicp-epub/blob/master/sicp.epu...
- banachtarski 10y agoUnpopular opinion but having read this book, I think it's a "good" text that is a bit blown out of proportion in terms of how good it is. I'm curious for people that endorse to such a magnanimous degree what other literature they've read and what aspects of SICP in particular they find so superior.
- gumby 10y agoFirst of all, it's an introductory text that provides a practical whirlwind tour of introductory computer science. Second starts from a straightforward place (when the first edition was written it was quite reasonable to assume that a student arriving at university, even MIT, might never have programmed a computer before) and after one lecture on the scheme language, dives in to practical details. Third, unlike, say, your average introductory programming class it doesn't get hung up on syntax; unlike an average introductory algorithm class the algorithm examples are typically on stuff a student would already know (numerical methods, etc) rather than super-abstract "consider a graph..." Finally it's an engineering text: if you do the problems you end up writing an interpreter for the thing that seemed so amazing on the first day and you discover you know how all the bits fit together.
- banachtarski 10y agoRight I always wondered if my opinion of it stemmed from the fact that I read it relatively late in my career. Never having fresh eyes on it, I suppose it's easy to take things like syntax and such for granted. That said, is Scheme really a good language for "not getting hung up on syntax?" It has an admittedly simple grammar but I can't help but feel that with the prevalence of ALGOL style languages, an intro student is better off just just biting the bullet and learning something more traditional. If I was going to teach things like type systems and such and was ok with exotic syntax, I might teach Haskell or something.
- yoz-y 10y agoAt my university the introductory programming was taught using scheme and I found it weird at first as I knew the more traditional approaches (personally I have taught myself programming first in Basic and Pascal). Later I have been assisting a professor during python classes and I have come to appreciate the benefits of a purely functional language for introductions (our teachers have strategically chosen not to talk about the `begin` keyword in Scheme). Many students have had really hard time grasping the idea of variables and scopes.
- martin1975 10y agoawesome. I'd also do Cormen & Leiserson's book as well as Aho's dragon book if I had the copyrights :). True epics in CS. Maybe even add Don Knuth's multi-volumes.
- keithnz 10y agoyou all with your fancy pants "reading". Nothing beats the movie, not only showing the height of computing power, but the awesome fashion of uber geeks. https://www.youtube.com/watch?v=2Op3QLzMgSY https://www.youtube.com/watch?v=2Op3QLzMgSY
- jankoprowski 10y agoNice interactive, online explanation of SICP is under http://www.composingprograms.com/ http://www.composingprograms.com/. Examples are in Python3
- laxentasken 10y agoI've just skimmed through the first couple of pages, but didnt find anything about which lisp to use/howto. Any ideas?
- closeneough 10y agoIt's a lisp dialect form the MIT called scheme. You can find more information here: https://www.gnu.org/software/mit-scheme/ https://www.gnu.org/software/mit-scheme/
- pimeys 10y agoI guess racket is where the development continues for the scheme language. http://racket-lang.org/ http://racket-lang.org/
- throwaway7645 10y agoThere are a few: Gambit, Chicken-Scheme, Chez-Scheme, and Racket. Racket is starting to purposely diverge though like Pharo is to Smalltalk.
- gus_massa 10y agoRacket has official support for R5RS and R6RS, and unofficial support for R7RS-S. So you can program in scheme in with the Racket environment too.
- josteink 10y agoYou also have GNU Guile, if you for whatever reason prefer the GNU stack. https://www.gnu.org/software/guile/ https://www.gnu.org/software/guile/
- sillysaurus3 10y agoYou're in for a treat. Keep digging.
- rhizome31 10y ago
- cies 10y agoAnother online version of SICP that is (slightly) less good looking, but interactive (CTRL-Enter to run any code block) by a LISP interpreter that runs in your browser. https://xuanji.appspot.com/isicp https://xuanji.appspot.com/isicp
- apenney 10y agoMy biggest issue with SICP was the lack of available unit tests for the exercises. I'd often "get it wrong" and have no recourse but to read a solution to see that I'd failed to account for some aspect of the problem. Without an easily verifiable way to test your solutions as you go I think these kinds of books really do themselves a disservice as you lose the ability to struggle and think hard about the problem if you can't immediately solve it.
- afarrell 10y agoIdeally, it would actually include guidance on a good way to write the automated tests yourself after the first few.
- torrent-of-ions 10y agoIt is more beautiful (IMO) with "text-align: justify" on the paragraphs.
- rcarmo 10y agoLoved the Third Addendum bit: "Third Addendum: Things go in spirals. We explored the powers of Texinfo and LaTeX at typesetting the PDF book. Now it’s time to come back to HTML. This turn it shall be HTML5. “It can be a dangerous place, but it’s our last, best hope for peace.” (Sinclair, Babylon 5.)"
- die2code 10y agoWas reading the Neil Van Dyke version yesterday.. And now this gift. Thanks Sarabender & Neil Van Dyke..
- Nekorosu 10y agoTry reading SICP not for the sake of becoming a better programmer or learning some applicable skills. Do it for the sake of having fun. You'll get everything else as a bonus.
- Thoreandan 10y agoDoes anyone know of a better way to navigate the document structure here? I see this on the GNU website and in the HTML versions of their manuals, so am assuming it's from a design choice made there ... Making the empty side margins Clickable to indicate "next page" / "continue" or binding the arrow keys, or spacebar-if-scrolled-to-bottom would make this much more tolerable to navigate, I surmise that the emacs / info readers must have more usable controls. Are there nav controls I'm missing?
- ldjb 10y agoThere are access keys set that are supposed to work as follows: t: top of page b: bottom of page n: next page p: previous page u: up one level c: table of contents Unfortunately, they seem to be a bit iffy (partly because some of them are set on multiple elements).
- mrcactu5 10y agothis must have been so much work. SICP is an intricate masterpiece. So many projects like this fail mid-way. Even if all you do is change the CSS style, that's an accomplishment in itself.
- makaed 10y agoAny advice from the community on what environment is best for SICP/Scheme? I'm currently using Dr.Racket as I've heard to avoid Emacs at this point, any other suggestions/thoughts?
- westurner 10y agoThanks! https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs https://en.wikipedia.org/wiki/Structure_and_Interpretation_o...