RTFM #5: Bilgisayar Programlarının Yapısı ve Yorumu (SICP)
RTFM serisi zamansız kitaplar sunar ve geliştiriciler için düzensiz aralıklarla önerilir. Bunlar esas olarak uzman kitaplardır, ancak bazen aralarında romanlar da vardır. Bugün Hal Abelson'ın “Bilgisayar Programlarının Yapısı ve Yorumu”, Gerald Jay Sugimman ve Julie Suguper ile ilgili.
Bu format düzenli olarak genellikle daha iyi bir geliştirici veya genel olarak daha iyi bir geliştirici olmaya yardımcı olabilecek kitaplarla ilgilenir. Kavram ve metodoloji ile ilgilenen zamansız kitaplara dikkat edilir. Bu bilgi, güncel diller ve sürümlerdeki kitaplardan çok daha yüksek bir ömre sahiptir.
Zamansız olarak kabul edilen kitaplardan biri, Hal Abelson, Gerald Jay Susband ve Julie Suguper'ın “Bilgisayar Programlarının Yapısı ve Yorumu” (kısa “SICP”). 1979'a kadar uzanır ve kapsamı için genellikle “Maghi Kitabı” olarak adlandırılır. Kitap ne hakkında?
Plana Giriş
Bu sorunun cevabı şaşırtıcı derecede karmaşık. İlk bakışta, şemaya bir giriş, bir Lisp lehçesi. Bununla birlikte, temel programlama kavramlarına dikkat edilir ve bu konular her şeye sahiptir.
İlk bölüm, programlamada üç seviye ile karşılaşmanız gereken tez ile başlar: birinci seviye bireysel küçük yapı taşlarıdır, ikinci seviye bu yapı bloklarının ve üçüncüsü nihayet soyutlamanın birleşimidir – bu da tabanı daha yüksek bir seviyeye kadar oluşturur. Bu model kitabı bir iş parçacığı olarak geçer ve farklı perspektiflerle tekrarlanır.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
RTFM #5: SICP
İfadeler ilk kez işlevlerde birleştirilebilen ve özetlenebilen kurucu öğeler olarak tanıtılır. Fonksiyonlar sadece matematiksel fonksiyonel perspektifle ele alınır, bu da sonunda özyineleme, yineleme ve karmaşıklık yoluyla daha yüksek dereceli fonksiyonlar yoluyla soyutlamaya yol açar.
Bu ilk bölümde yaklaşık 100 sayfa hakkında tartışılan konular, son derece yüksek bir bilgi yoğunluğu nedeniyle belirgindir: diğer kitaplar, daha az ayrıntı ile aynı içerik için daha fazla sayfaya ihtiyaç duyar. SICP, dengenin nispeten kompakt ve aynı zamanda ayrıntılı olarak mükemmel bir şekilde başarılı olmayı başarır.
Kod … ve veriler
İlk bölüm işlevlerle ilgilenirken, ikincisi yapılar ve veri türleri ile ilgilidir. Bu amaçla, bu nedenle aritmetik işlemlerin tanımlandığı rasyonel sayılar için ayrı bir veri türü tanıtılır. Bu işlevler başlangıçta verilerden ayrılır ve henüz birlikte kapsüllenmez.
Burada da yapı, veriler nihayet soyut olana kadar daha karmaşık yapılar olarak birleştirilen basit inşaat blokları (yani veri değerleri çiftleri) ile tekrar başlar: SICP, “verilerden doğrudan programlama”, “etiketli veriler” terimi tartışılır ve tartışılır ve operasyonların farklı türlerin ayrı ayrı kullanılabileceği gösterilebileceği gösterilir.
Değişkenler, ödevler ve eyalet
Üçüncü bölüm nihayetinde ilişkili değişkenler ve ödevler getirir, ancak aynı zamanda ilişkili sorunu doğrudan ele alır, yani ifadelerin değerlendirilmesinin çok daha karmaşık hale gelmesi, çünkü zaman içindeki değişiklikler dikkate alınması gerektiğinden. İlk bölümdeki basit değerlendirme artık yeterli değildir, ancak şemanın sözcüksel kapsamı ile yakından ilişkili olan çerçeveye dayalı yeni bir çerçeve gereklidir.
Bu, listeler, kuyruklar ve tablolar gibi daha karmaşık veri türleri ve durumları için temel oluşturur. Tüm bu yapılar, paralel yazmaya erişimin çatışmalara yol açabileceği değişken veriler olarak görülmektedir. Bu nedenle, bölüm aynı zamanda veri yarışmaları, kilitlenmeler & co.
Gecikmeli listeler olarak uygulanan akışlar bölümü tamamlar. Değerlendirme türü nedeniyle, JavaScript'teki jeneratörün işlevlerini veya Haskell'in tembel değerlendirmesini şiddetle hatırlıyorlar.
Şema için bir tercüman …
Dördüncü bölüm, metalbilimsel soyutlama ile ilgilidir ve neredeyse şemada yazılmış bir tercüman olan metacirküler değerlendiriciyi tanıtmaktadır. Şemada yazılan kod, en yüksek soyutlama seviyesi için veri yolundadır, bu da sonunda kod ve verilerin bir olduğunu çok iyi gösterir – bir şey sadece ilgili perspektife bağlıdır.
Yol boyunca, şema bu nedenle, bölümün geri kalanında da gerçekleşen neredeyse küçük alanların belirli dillerini, belirli dilleri içerecek şekilde genişletilebilir. Tembel bir değerlendirme için, tanımlayıcı olmayan davranışlar için ve son fakat daha az önemli olmayan, prolog'a benzer şekilde mantıksal programlama için bir genişleme geliştirilmiştir.
Tüm bu konular kesinlikle “plana giriş” amacının çok ötesine geçiyor. Oldukça karmaşık ve zorlu, ama son derece ilginç ve eğitici.
… ve bir derleyici
Beşinci ve son bölüm nihayet tacı her şeye koyar: burada, derleyiciyi içeren bir kayıt makinesi, kendi montaj lehçesini içeren ve bu sanal makinede kodu gerçekleştiren şemada geliştirilmiştir. Beşinci bölüm, tercümandan derleyiciye dördüncü sırada yer alıyor.
Derleyicinin yapımında, sanal makinelerin geliştirilmesi, bellek yönetimi ve benzer konular üzerinde, temelde hemen hemen her dille iletişim kurmak için kullanabileceğiniz herhangi bir programlama dilinin temeli olan.
Gerçek içeriğe ek olarak, kitap binlerce alıştırma olmasa da yüzlerce egzersiz içerir. SICP aracılığıyla çalışmak istiyorsanız, çok zamana ihtiyacınız var, ancak çaba buna değer, çünkü çok şey öğreniyorsunuz. Bir programlama dili olarak şema neredeyse küçük bir soru haline gelir: kitabın gerçek değeri daha derindir.
Çözüm
SICP kesinlikle programlama üzerine yazılmış en iyi kitaplardan biridir. Her geliştirici, kişisel olarak tercih edilen programlama dilinden en azından kısmen bağımsız olarak okumalıdır, özellikle ilk üç bölüm kompakt bir biçimde çok sayıda önemli konunun derinlemesine bir görünümünü sunar.
Ancak kitabı bir kereden fazla okumak zorunda olduğunuz için, gerçekten yakalamak için, doğrudan pratik egzersizler yapmadan önce okumanız tavsiye edilir, böylece ne bekleyebileceğinize dair bir izlenim ve genel bir bakış ve bu nedenle sadece ikinci sıcağdaki egzersizler üzerinde çalışabilirsiniz.
Genel olarak, SICP çok açık bir satın alma ve okuma önerisidir: satın alma işlemine alternatif olarak, HTML formatında ücretsiz bir okuma için yayıncının web sitesinde de bulabilirsiniz.
()