Cours vidéo SICP (1986)
(ocw.mit.edu)- Permettant de suivre l’ensemble du parcours de MIT 6.001
Structure and Interpretation of Computer Programsen 20 cours vidéo, cette ressource est idéale pour réviser SICP de manière structurée - Les cours ont été donnés en juillet 1986 à des employés de Hewlett-Packard, et produits professionnellement par Hewlett-Packard Television
- Les vidéos sont disponibles sur MIT OCW ainsi que sur un site de diffusion séparé, sous une licence Creative Commons compatible avec un usage commercial
- Le contenu des cours est basé sur la 1re édition de SICP publiée en 1985 ; dans la 2e édition de 1996, certains programmes ont été réécrits et de nouveaux contenus ajoutés
- Les thèmes et l’ordre général de présentation ayant été conservés, ces vidéos restent une référence utile même pour les apprenants travaillant avec la 2e édition
Structure des cours et mode de diffusion
- Les 20 cours de Hal Abelson et Gerald Jay Sussman couvrent dans son intégralité le cours MIT 6.001
Structure and Interpretation of Computer Programs - Les cours ont été donnés en juillet 1986 à des employés de Hewlett-Packard, et produits professionnellement par Hewlett-Packard Television
- Les vidéos proviennent de documents fournis par Hal Abelson et Gerald Jay Sussman et sont utilisées avec autorisation
- Les mêmes vidéos sont disponibles, en plus de MIT OCW, sur un site de diffusion séparé et sont soumises à une licence Creative Commons compatible avec un usage commercial
Remarques sur les éditions du manuel
- Ces cours s’appuient sur la 1re édition de Structure and Interpretation of Computer Programs, publiée en 1985
- Dans la 2e édition de 1996, plusieurs programmes abordés dans les cours ont été réécrits et de nouveaux contenus ont été ajoutés
- Les thèmes et l’ordre général de présentation n’ayant pas changé, ces cours vidéo restent utiles aux étudiants qui utilisent la 2e édition
Liste des cours
-
Lisp et abstraction procédurale
- 1A: Overview and Introduction to Lisp : aperçu et introduction à Lisp
- 1B: Procedures and Processes; Substitution Model : procédures, processus et modèle de substitution
- 2A: Higher-order Procedures : procédures d’ordre supérieur
-
Données et traitement symbolique
- 2B: Compound Data : données composées
- 3A: Henderson Escher Example : exemple Henderson Escher
- 3B: Symbolic Differentiation; Quotation : différentiation symbolique et citation
- 4A: Pattern Matching and Rule-based Substitution : pattern matching et substitution fondée sur des règles
- 4B: Generic Operators : opérateurs génériques
-
État, objets, streams
- 5A: Assignment, State, and Side-effects : affectation, état et effets de bord
- 5B: Computational Objects : objets computationnels
- 6A: Streams, Part 1 : streams, partie 1
- 6B: Streams, Part 2 : streams, partie 2
-
Évaluateurs et programmation logique
- 7A: Metacircular Evaluator, Part 1 : évaluateur métacirculaire, partie 1
- 7B: Metacircular Evaluator, Part 2 : évaluateur métacirculaire, partie 2
- 8A: Logic Programming, Part 1 : programmation logique, partie 1
- 8B: Logic Programming, Part 2 : programmation logique, partie 2
-
Modèles de machine et compilation
- 9A: Register Machines : machines à registres
- 9B: Explicit-control Evaluator : évaluateur à contrôle explicite
- 10A: Compilation : compilation
- 10B: Storage Allocation and Garbage Collection : allocation de stockage et garbage collection
1 commentaires
Avis sur Hacker News
Pour étudier SICP, on peut utiliser MIT Scheme ; autre option, utiliser Racket ou DrRacket avec ce paquet additionnel : https://docs.racket-lang.org/sicp-manual/
Les autres offrent trop de fonctionnalités autour, ce qui peut distraire
MIT Scheme n’est pas fait pour fonctionner sur Apple Silicon ; avec quelques astuces, on peut utiliser la version amd64 sur les Mac récents, mais elle risque de disparaître si Apple supprime Rosetta2
Racket peut donc être un meilleur choix
Presque n’importe quelle implémentation correcte de Scheme peut servir pour SICP, mais je ne le recommanderais pas, car le langage a changé depuis la 2e édition
Cela dit, une fois que l’on a lancé ses propres projets, on peut utiliser d’autres systèmes, et il faudra peut-être lire la documentation pour trouver les équivalents modernes d’anciens idiomes
Tous les programmeurs devraient apprendre LISP, ou au moins l’étudier sérieusement
La plupart des programmeurs applicatifs ne savent penser que de manière procédurale, comme des programmeurs C
LISP est un « beau » langage qui traite des concepts plutôt que du matériel, et quand je l’ai utilisé pendant plusieurs années sur un projet de troisième cycle dans mon ancienne université, vers 1990, cela a complètement changé ma façon de penser
J’avais autrefois essayé SICP uniquement avec le livre, et je trouve que les cours sont bien meilleurs, le livre servant plutôt de référence d’appoint
Il n’est pas nécessaire de faire les exercices ni de suivre le livre pas à pas
Que l’on débute dans le domaine ou que l’on ait des décennies d’expérience, si l’on n’a pas encore vu ces vidéos ou suivi un cours SICP, cela peut être utile à presque tout le monde
J’ai étudié ces vidéos et tout le livre jusqu’au bout, et j’ai aussi monté un groupe d’étude hors ligne via les newsgroups
C’était vraiment agréable et cela a été un grand déclic, mais vers le milieu du livre, le nombre de participants a commencé à diminuer
Le conseil de lire SICP a été le meilleur que j’aie reçu sur /g/
C’est avec ça que j’ai appris Lisp, puis j’ai appris Clojure et construit ma carrière autour de ce langage
C’est un langage que j’aime beaucoup
Je recommande vraiment très fortement
Il suffit de regarder le premier cours pour être immédiatement accroché
Qu’est-ce qu’une personne intéressée par la programmation système peut en retirer ?
Donc, dans la mesure où la programmation système consiste surtout à gérer l’état et l’abstraction, je pense que c’est très profondément pertinent
En revanche, si par « programmation système » on entend surtout rafistoler des systèmes existants et désordonnés, ou développer un instinct pour les bibliothèques tierces, cela peut être moins pertinent
Il y a tout de même des enseignements à en tirer. J’ai vu une vidéo où Sussman explique pourquoi il a mis SICP de côté et demandé la création d’un nouveau cours d’introduction au MIT ; on y voyait quelqu’un ranger avec respect et réflexion le joyau qu’il avait poli
Cela signifiait que l’époque où l’on pouvait espérer voir à travers toutes les couches d’abstraction était révolue
La qualité audio est vraiment mauvaise dans ces cours
Existe-t-il un moyen de la nettoyer correctement ?