Structure and Interpretation of Computer Programs Video Lectures (1986)
41–50 of 52 posts
Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#42Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#43If you want to work through SICP, you can use MIT Scheme, but another option is to use Racket or DrRacket, with this add-on package: https://docs.racket-lang.org/sicp-manual/
It is possible to use pretty much any decent Scheme system with SICP, but the language has changed since even the Second Edition, so I don't recommend it. That said, once you are working on your own projects, nothing stops you from using a different system, even though you might have to RTFM to see modern equivalents to ancient idioms.
Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#44Should I do the JS or Scheme SICP
I'll add another recommendation for Scheme. The concepts in SICP map very well into Scheme, whereas I can only imagine them being awkward and non-idiomatic in JS. There's lots of passing around first class functions and use of recursion. One of the two professors (Dr. Sussman) that give the lectures in this series is a co-creator of Scheme.
You don't have to imagine, you can look at the code used in the JS version and it goes through some fun contortions to get around the fact that JS is not expression oriented (like Scheme). This is from page 35 (PDF: https://sicp.sourceacademy.org/sicpjs.pdf):
function count_change(amount) {
return cc(amount, 5);
}
function cc(amount, kinds_of_coins) {
return amount === 0
? 1
: amount
}That certainly works, but it's awkward. Here's the Scheme code from the 2nd edition of SICP:
(define (count-change amount) (cc amount 5))
(define (cc amount kinds-of-coins)
(cond ((= amount 0) 1)
((or (
The JS code has to use the ternary ?: to get around the fact that it does not have a good equivalent to `cond`. You can see that they've gone through a literal translation of Scheme to JS that results in very unidiomatic JS code.Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#45If you want to work through SICP, you can use MIT Scheme, but another option is to use Racket or DrRacket, with this add-on package: https://docs.racket-lang.org/sicp-manual/
I think we should only be recommending MIT Scheme. Everything else has got too much going on and can become distracting, for the purposes of education.
Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#46If you want to work through SICP, you can use MIT Scheme, but another option is to use Racket or DrRacket, with this add-on package: https://docs.racket-lang.org/sicp-manual/
I second the recommmendation, for these two systems with a caveat. MIT Scheme has not been made to run on Apple Silicon, though with a few tricks, the amd64 version is usable on a modern Mac (this will presumably go away once Apple takes away Rosetta2). Racket might therefore be a better choice. It is possible to use pretty much any decent Scheme system with SICP, but the language has changed since even the Second Ed…
https://en.wikipedia.org/wiki/Macintosh_Common_Lisp
Rosetta wasn't a thing yet, so Connectix (who also made the famous QuickCam) filled that gap years earlier.
https://en.wikipedia.org/wiki/Connectix
> Connectix Corporation was a software and hardware company that released innovative products that were either made obsolete as Apple Computer incorporated the ideas into system software, or were sold to other companies once they became popular.
SpeedDoubler and RAMDoubler were great, and actually kinda delivered on their promises. But what I really needed during the reign of System 7 was BootDoubler: software that made every other reboot instantaneous.
Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#47If you want to work through SICP, you can use MIT Scheme, but another option is to use Racket or DrRacket, with this add-on package: https://docs.racket-lang.org/sicp-manual/
I think we should only be recommending MIT Scheme. Everything else has got too much going on and can become distracting, for the purposes of education.
https://bjc.berkeley.edu/team/snap/
Snap!Con 2025 - Brian Harvey - ACM Karlstrom Award Address
https://www.youtube.com/watch?v=pDK2PE_pkqQ
Brian calls SICP the actual best computer science course ever invented, which is quite a complement from the guy who wrote the second best computer science course ever invented. ;)
He has a lot of interesting thoughs about AI in education.
Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#48Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#49Re: Structure and Interpretation of Computer Programs Video Lectures (1986)
#50Earlier quoted context omitted.
I think we should only be recommending MIT Scheme. Everything else has got too much going on and can become distracting, for the purposes of education.
Everything you can do with Scheme you can also do with Snap! with a visual blocks programming user interface. Functional programming, recursion, higher order functions, closures, continuations, macros, metaprogramming, all described by Brian Harvey's curriculum, the Beauty and Joy of Computing: https://bjc.berkeley.edu/team/snap/ Snap!Con 2025 - Brian Harvey - ACM Karlstrom Award Address https://www.youtube.com/watch…
https://forum.snap.berkeley.edu/t/hygienic-macros/3258/6
>I admit that my slogan "Snap! is Scheme disguised as Scratch" would sort of push in the direction of hygienic macros. But historically we built Snap! more with the idea of Logo disguised as Scratch. It was just when we added lambda that we started thinking more in Scheme terms.