SICP-Videovorlesungen (1986)
(ocw.mit.edu)- Man kann dem vollständigen Ablauf von MIT 6.001
Structure and Interpretation of Computer Programsin 20 Videovorlesungen folgen; damit eignet sich das Material gut, um SICP systematisch zu wiederholen. - Die Vorlesungen wurden im Juli 1986 für Mitarbeiter von Hewlett-Packard gehalten und professionell von Hewlett-Packard Television produziert.
- Die Videos sind sowohl über MIT OCW als auch über eine separate Bereitstellungsseite verfügbar und stehen unter einer mit kommerzieller Nutzung kompatiblen Creative-Commons-Lizenz.
- Der Vorlesungsinhalt basiert auf der 1. Auflage von SICP aus dem Jahr 1985; in der 2. Auflage von 1996 wurden einige Programme neu geschrieben und neues Material ergänzt.
- Die Gesamtthemen und die Reihenfolge der Präsentation bleiben gleich, daher sind die Vorlesungen auch für Lernende mit der 2. Auflage weiterhin wertvoll.
Aufbau der Vorlesungen und Bereitstellung
- Hal Abelson und Gerald Jay Sussman behandeln in 20 Vorlesungen den MIT-6.001-Kurs
Structure and Interpretation of Computer Programsin vollständiger Form. - Die Vorlesungen wurden im Juli 1986 für Mitarbeiter von Hewlett-Packard gehalten und professionell von Hewlett-Packard Television produziert.
- Die Videos wurden von Hal Abelson und Gerald Jay Sussman bereitgestellt und mit Genehmigung verwendet.
- Dieselben Videos werden neben MIT OCW auch auf einer separaten Bereitstellungsseite angeboten und folgen einer mit kommerzieller Nutzung kompatiblen Creative-Commons-Lizenz.
Hinweise zu den Buchauflagen
- Diese Vorlesungen basieren auf der 1. Auflage von Structure and Interpretation of Computer Programs, erschienen 1985.
- In der 2. Auflage von 1996 wurden mehrere in den Vorlesungen behandelte Programme neu geschrieben und neues Material hinzugefügt.
- Da sich die Gesamtthemen und die Reihenfolge der Präsentation nicht geändert haben, sind diese Videovorlesungen auch für Studierende mit der 2. Auflage nützlich.
Vorlesungsliste
-
Lisp und Prozedurabstraktion
- 1A: Overview and Introduction to Lisp: Überblick und Einführung in Lisp
- 1B: Procedures and Processes; Substitution Model: Prozeduren, Prozesse und Substitutionsmodell
- 2A: Higher-order Procedures: Höhere Prozeduren
-
Daten und Symbolverarbeitung
- 2B: Compound Data: Zusammengesetzte Daten
- 3A: Henderson Escher Example: Henderson-Escher-Beispiel
- 3B: Symbolic Differentiation; Quotation: Symbolische Differentiation und Quotation
- 4A: Pattern Matching and Rule-based Substitution: Pattern Matching und regelbasierte Substitution
- 4B: Generic Operators: Generische Operatoren
-
Zustand, Objekte und Streams
- 5A: Assignment, State, and Side-effects: Zuweisung, Zustand und Seiteneffekte
- 5B: Computational Objects: Berechnungsobjekte
- 6A: Streams, Part 1: Streams, Teil 1
- 6B: Streams, Part 2: Streams, Teil 2
-
Evaluator und Logikprogrammierung
- 7A: Metacircular Evaluator, Part 1: Metazirkulärer Evaluator, Teil 1
- 7B: Metacircular Evaluator, Part 2: Metazirkulärer Evaluator, Teil 2
- 8A: Logic Programming, Part 1: Logikprogrammierung, Teil 1
- 8B: Logic Programming, Part 2: Logikprogrammierung, Teil 2
-
Maschinenmodelle und Kompilierung
- 9A: Register Machines: Registermaschinen
- 9B: Explicit-control Evaluator: Evaluator mit expliziter Steuerung
- 10A: Compilation: Kompilierung
- 10B: Storage Allocation and Garbage Collection: Speicherzuweisung und Garbage Collection
1 Kommentare
Meinungen auf Hacker News
Wer SICP durcharbeiten möchte, kann MIT Scheme verwenden; alternativ kann man Racket oder DrRacket mit diesem Add-on-Paket nutzen: https://docs.racket-lang.org/sicp-manual/
Die anderen haben zu viele Zusatzfunktionen und können ablenken.
MIT Scheme wurde nicht dafür gebaut, auf Apple Silicon zu laufen. Mit ein paar Tricks kann man zwar die amd64-Version auf aktuellen Macs nutzen, aber wenn Apple Rosetta 2 abschafft, dürfte das verschwinden.
Deshalb könnte Racket die bessere Wahl sein.
Fast jede ordentliche Scheme-Implementierung lässt sich für SICP verwenden, aber ich würde es nicht empfehlen, weil sich die Sprache auch nach der 2. Auflage noch verändert hat.
Sobald man jedoch eigene Projekte startet, kann man auch andere Systeme verwenden; um moderne Entsprechungen alter Idiome zu finden, muss man eventuell die Dokumentation lesen.
Alle Programmierer sollten LISP lernen oder es zumindest ernsthaft studieren.
Die meisten Anwendungsprogrammierer können nur prozedural denken, wie C-Programmierer.
LISP ist eine „schöne“ Sprache, die nicht Hardware, sondern Konzepte behandelt; als ich sie 1990 an meiner Alma Mater einige Jahre lang in Graduiertenprojekten verwendet habe, hat sie meine Denkweise völlig verändert.
Ich habe SICP früher nur mit dem Buch ausprobiert; meiner Meinung nach sind die Vorlesungen viel besser, und das Buch dient eher als ergänzendes Nachschlagewerk.
Man muss weder die Übungen lösen noch dem Buch folgen.
Egal, ob man neu in diesem Feld ist oder jahrzehntelange Erfahrung hat: Wenn man diese Videos noch nicht gesehen oder den SICP-Kurs noch nie besucht hat, dürfte er fast jedem etwas bringen.
Ich habe diese Videos und das gesamte Buch bis zum Ende durchgearbeitet und über Newsgroups auch eine Offline-Study-Group organisiert.
Es hat wirklich Spaß gemacht und war ein großer Durchbruch, aber ungefähr ab der Mitte des Buchs begann die Teilnehmerzahl der Study-Group zu sinken.
Der Rat, SICP zu lesen, war der beste Rat, den ich auf /g/ bekommen habe.
Damit habe ich Lisp gelernt, danach Clojure, und anschließend meine Karriere darum aufgebaut.
Ich mag die Sprache ziemlich gern.
Absolut dringend zu empfehlen.
Schon die erste Vorlesung zieht einen sofort hinein.
Was kann jemand, der sich für Systemprogrammierung interessiert, daraus mitnehmen?
Insofern Systemprogrammierung hauptsächlich Zustandsverwaltung und Abstraktion betrifft, halte ich das für sehr tiefgehend relevant.
Wenn man unter „Systemprogrammierung“ allerdings eher versteht, bereits existierende, unordentliche Systeme irgendwie zusammenzukleben oder ein Gefühl für Third-Party-Libraries zu entwickeln, ist es vielleicht weniger relevant.
Trotzdem steckt auch hier Einsicht drin. Ich habe ein Video gesehen, in dem Sussman erklärt, warum er SICP beiseitegelegt und gefordert hat, am MIT einen neuen Einführungskurs zu schaffen; es wirkte, als würde er das Juwel, das er über Jahre geschliffen hatte, respektvoll und bedacht zur Seite legen.
Gemeint war, dass die Zeit vorbei ist, in der wir erwarten konnten, über alle Abstraktionsschichten hinweg den Durchblick zu behalten.
Bei diesen Vorlesungen ist die Tonqualität sehr schlecht.
Gibt es eine Möglichkeit, sie sauber zu verbessern?