SICP video dersleri (1986)
(ocw.mit.edu)- MIT 6.001
Structure and Interpretation of Computer Programsdersinin tüm akışını 20 video ders üzerinden takip etmek mümkün; bu da SICP’yi sistemli biçimde gözden geçirmek için iyi bir kaynak olmasını sağlıyor - Dersler Temmuz 1986'da Hewlett-Packard çalışanlarına yönelik olarak verildi ve Hewlett-Packard Television tarafından profesyonel şekilde üretildi
- Videolar MIT OCW ve ayrı bir sunum sitesinde izlenebiliyor; ayrıca ticari kullanımla uyumlu bir Creative Commons lisansı ile sunuluyor
- Ders içeriği, 1985 tarihli SICP 1. baskıyı temel alıyor; 1996'daki 2. baskıda bazı programlar yeniden yazıldı ve yeni materyaller eklendi
- Genel konu başlıkları ve sunum sırası korunduğu için, 2. baskıyla çalışan öğrenciler için de hâlâ değerli bir başvuru kaynağı
Ders yapısı ve sunum biçimi
- Hal Abelson ve Gerald Jay Sussman tarafından verilen 20 ders, MIT 6.001
Structure and Interpretation of Computer Programsdersini eksiksiz biçimde kapsıyor - Dersler Temmuz 1986'da Hewlett-Packard çalışanlarına yönelik olarak verildi ve Hewlett-Packard Television tarafından profesyonel şekilde üretildi
- Videolar, Hal Abelson ve Gerald Jay Sussman tarafından sağlanan materyallerden oluşuyor ve izinli olarak kullanılıyor
- Aynı videolar MIT OCW dışında ayrı bir sunum sitesinde de yer alıyor ve ticari kullanımla uyumlu bir Creative Commons lisansına tabi
Ders kitabı baskılarıyla ilgili notlar
- Bu dersler, 1985'te yayımlanan Structure and Interpretation of Computer Programs 1. baskı temel alınarak verildi
- 1996'daki 2. baskıda, derslerde ele alınan çeşitli programlar yeniden yazıldı ve yeni materyaller eklendi
- Genel konu başlıkları ve sunum sırası değişmediği için, 2. baskıyı kullanan öğrenciler için de bu video dersler yararlı olmaya devam ediyor
Ders listesi
-
Lisp ve prosedür soyutlaması
- 1A: Overview and Introduction to Lisp: Lisp'e genel bakış ve giriş
- 1B: Procedures and Processes; Substitution Model: Prosedürler, süreçler ve yerine koyma modeli
- 2A: Higher-order Procedures: Yüksek dereceli prosedürler
-
Veri ve sembolik işleme
- 2B: Compound Data: Bileşik veri
- 3A: Henderson Escher Example: Henderson Escher örneği
- 3B: Symbolic Differentiation; Quotation: Sembolik türev ve alıntılama
- 4A: Pattern Matching and Rule-based Substitution: Pattern matching ve kural tabanlı yerine koyma
- 4B: Generic Operators: Generic operatörler
-
Durum, nesneler, stream'ler
- 5A: Assignment, State, and Side-effects: Atama, durum ve yan etkiler
- 5B: Computational Objects: Hesaplama nesneleri
- 6A: Streams, Part 1: Stream'ler, 1. bölüm
- 6B: Streams, Part 2: Stream'ler, 2. bölüm
-
Değerlendirici ve mantık programlama
- 7A: Metacircular Evaluator, Part 1: Metadöngüsel değerlendirici, 1. bölüm
- 7B: Metacircular Evaluator, Part 2: Metadöngüsel değerlendirici, 2. bölüm
- 8A: Logic Programming, Part 1: Mantık programlama, 1. bölüm
- 8B: Logic Programming, Part 2: Mantık programlama, 2. bölüm
-
Makine modelleri ve derleme
- 9A: Register Machines: Register machine'ler
- 9B: Explicit-control Evaluator: Açık denetimli değerlendirici
- 10A: Compilation: Derleme
- 10B: Storage Allocation and Garbage Collection: Bellek tahsisi ve garbage collection
1 yorum
Hacker News yorumları
SICP çalışmak için MIT Scheme kullanabilirsiniz; alternatif olarak Racket ya da DrRacket’e şu eklenti paketini ekleyerek de kullanabilirsiniz: https://docs.racket-lang.org/sicp-manual/
Diğerlerinde dikkati dağıtabilecek çok fazla çevresel özellik var
MIT Scheme Apple Silicon’da çalışacak şekilde yapılmadı; biraz uğraşla amd64 sürümü güncel Mac’lerde kullanılabiliyor ama Apple Rosetta2’yi kaldırırsa muhtemelen ortadan kalkacak
Bu yüzden Racket daha iyi bir seçenek olabilir
Makul herhangi bir Scheme uygulaması SICP için kullanılabilir ama 2. baskıdan sonra dil değiştiği için önermem
Ancak kendi projenize başladıktan sonra başka sistemler kullanabilirsiniz; eski deyimlerin modern karşılıklarını bulmak için belgeleri okumanız gerekebilir
Her programcı LISP öğrenmeli ya da en azından ciddi biçimde çalışmalı
Uygulama programcılarının çoğu, C programcıları gibi yalnızca prosedürel düşünmeyi biliyor
LISP donanımı değil kavramları ele alan “güzel” bir dil; 1990’da mezun olduğum okulda birkaç yıl lisansüstü projelerde kullandığımda düşünme biçimim tamamen değişmişti
Eskiden yalnızca kitaptan SICP yapmayı denemiştim; bence dersler çok daha iyi ve kitap yardımcı referans görevi görüyor
Alıştırmaları çözmeniz ya da kitabı takip etmeniz gerekmiyor
Bu alana yeni girmiş olun ya da onlarca yıllık deneyiminiz olsun, bu videoları henüz izlemediyseniz veya SICP dersini almadıysanız neredeyse herkes için faydalı olabilir
Bu videoları ve kitabın tamamını sonuna kadar çalıştım; haber grubu üzerinden çevrimdışı bir çalışma grubu da kurduk
Gerçekten keyifliydi ve büyük bir sıçrama sağladı ama kitabın ortalarına doğru çalışma grubundaki kişi sayısı azalmaya başladı
SICP oku tavsiyesi /g/’de aldığım en iyi tavsiyeydi
Bununla Lisp öğrendim; ardından Clojure öğrendim ve kariyerimi onun etrafında kurdum
Oldukça sevdiğim bir dil
Gerçekten şiddetle tavsiye ederim
Daha ilk dersi izleyince hemen içine çekiliyorsunuz
Sistem programlama ile ilgilenen biri buradan ne elde edebilir?
Bu yüzden sistem programlama büyük ölçüde durum yönetimi ve soyutlamayla ilgili olduğu sürece, bunun çok derinden ilgili olduğunu düşünüyorum
Ama “sistem programlama” ile zaten var olan dağınık sistemleri zorla birbirine bağlamayı ya da üçüncü taraf kütüphaneler konusunda sezgi geliştirmeyi kastediyorsanız pek ilgili olmayabilir
Yine de burada da içgörü var. Sussman’ın SICP’yi bir kenara bırakıp MIT’de yeni bir giriş dersi oluşturulmasını neden istediğini anlattığı bir video izlemiştim; kendi cilaladığı mücevheri saygılı ve düşünceli bir şekilde kenara koyuyordu
Bu, artık tüm soyutlama katmanlarını baştan sona görebileceğimizi bekleyebileceğimiz dönemin bittiği anlamına geliyordu
Bu derslerin ses kalitesi çok kötü
Temiz biçimde düzeltmenin bir yolu var mı?