Live data from Hacker News

Structure and Interpretation of Computer Programs Video Lectures (1986)

ocw.mit.edu

41–50 of 52 posts

Re: Structure and Interpretation of Computer Programs Video Lectures (1986)

#41
Every programmer should learn LISP. or at least give an earnest attempt to study it. The vast majority of applied programmers only know how to think like C programmers (procedural). LISP is a “beautiful” language in that it is about concepts, not hardware. Totally changed my brain when I worked on a graduate project for a few years at my Alma mater in 1990.

Re: Structure and Interpretation of Computer Programs Video Lectures (1986)

#43
post #5

If 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 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)

#44
post #23

Should 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.

> I can only imagine them being awkward and non-idiomatic in JS

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)

#45
post #5

If 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.

I don't think it is necessary to avoid Racket since "The language #lang sicp provides you with a version of R5RS (the fifth revision of Scheme) changed slightly in order for programs in SICP to run as is." DrScheme is great for this and probably the easiest way to start.

Re: Structure and Interpretation of Computer Programs Video Lectures (1986)

#46
post #5

If 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…

I used to love using Macintosh Common Lisp, which was a glorious Lisp development environment that originally compiled to native 68K code, and had full access to native APIs like QuickTime. On the PowerPC Mac, I used Connectix SpeedDoubler to dynamically translate MCL's compiled 68K code into PowerPC code. It worked surprisingly well, so we didn't have to hold our breath waiting for MCL's native PowerPC port.

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)

#47
post #5

If 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.

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?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)

#48
You don't have to do the exercises or follow along with the book. No matter if you are new to the field or have decades of experience: almost everyone would benefit from watching these videos if they haven't already (or done an SICP course).

Re: Structure and Interpretation of Computer Programs Video Lectures (1986)

#50

Earlier 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…

"Snap! is Scheme disguised as Scratch" -Brian Harvey

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.

Post reply on HN