Bilgisayar programlarının yapısı ve yorumlanması pdf. Bilgisayar Programlarının Yapısı ve Yorumlanması

Bilgisayar programlarının yapısı ve yorumlanması

Bilgisayar programlarının yapısı ve yorumlanması

Harold Abelson, Gerald Sussman

Orijinal dil:
Orijinal yayınlandı:
Seri:

MIT elektrik mühendisliği ve bilgisayar bilimi serisi

Yayımcı:
Sayfalar:
Taşıyıcı:
ISBN:

"Bilgisayar programlarının yapısı ve yorumlanması"(İngilizce) Bilgisayar Programlarının Yapısı ve Yorumlanması - SICP dinle)) Harold Abelson ve Gerald Sussman'ın programlama hakkında 1985 yılında yayıncı tarafından yayınlanan klasik bir kitabıdır. Enstitüde ilk programlama kursu için ders kitabı olarak kullanıldı. 6.001 aynı isimle ( 6.001 kursla değiştirildi 6.01 Python'u kullanarak). Ayrıca kitap, şu veya bu şekilde Program diliyle ilgili dersler veren birçok Amerikan eğitim kurumunda kullanılmaktadır.

Yazarlar Scheme'i (LISP dilinin bir lehçesi) kullanarak soyutlama (veri ve yürütme), özyineleme ve üstdilbilimsel soyutlama dahil olmak üzere temel programlama kavramlarını tanımladılar.

Kitap aynı zamanda kayıt makinesi ve metasiklik yorumlayıcı kavramlarının pratik uygulamasını da özetlemektedir.

Kitabın ikinci baskısının metni Creative Commons lisansı (CC-BY-NC sürüm 3.0) altında dağıtılmaktadır.

Notlar

Bağlantılar

  • MIT Press web sitesindeki resmi kitap sayfası (İngilizce)
  • SICP Wiki - kitaptaki görevlerin çözümleri ve tartışılması (İngilizce)
  • Kitabın yazarlarının SICP kursuna ilişkin dersleri (İngilizce)

Wikimedia Vakfı. 2010.

  • Ayrık kümeler için veri yapısı
  • Rus madeni paralarının katalog numarasının yapısı

Diğer sözlüklerde “Bilgisayar programlarının yapısı ve yorumlanması” nın ne olduğuna bakın:

    GOST R 54136-2010: Endüstriyel otomasyon sistemleri ve entegrasyonu. Standartlar Kılavuzu, Yapısı ve Kelime Bilgisi- Terminoloji GOST R 54136 2010: Endüstriyel otomasyon sistemleri ve entegrasyonu. Standartlar Yönergeleri, Yapısı ve Kelime Dağarcığı orijinal belge: 4.1 özet bölümü: Yalnızca kendi yapısıyla tanımlanan bir bölüm... ... Normatif ve teknik dokümantasyon açısından sözlük referans kitabı

    SICP

    Bilgisayar Programlarının Yapısı ve Yorumlanması- Bilgisayar Programlarının Yapısı ve Yorumlanması Yazar: Harold Abelson, Gerald Sussman Orijinal dil: İngilizce Orijinal yayınlanma tarihi: 1985 Seri: MIT elektrik mühendisliği ve bilgisayar bilimi ... Wikipedia

    Programlama dilleri- Programlama dili, program yazmak için tasarlanmış resmi bir işaret sistemidir. Bir program genellikle uygulayıcının (örneğin bir bilgisayarın) anlayabileceği bir biçimde bazı algoritmaları temsil eder. Programlama dili seti belirler... ... Vikipedi

    Lisp- Anlambilim: çoklu paradigma: nesne yönelimli, işlevsel, prosedürel programlama Ortaya çıktığı yer: 1958 Yazar(lar): John McCarthy Veri yazma ... Vikipedi

    Lisp- Lisp Anlambilimi: çoklu paradigma: nesne yönelimli, işlevsel, prosedürel programlama Sunuş tarihi: 1958 Yazar(lar): John McCarthy Veri yazma: güçlü, dinamik... Vikipedi

    LISP- Anlambilim: çoklu paradigma: nesne yönelimli, işlevsel, prosedürel programlama Ortaya çıktığı yer: 1958 Yazar(lar): John McCarthy Veri yazma: güçlü, dinamik Lehçeler: Ortak ... Vikipedi

    DTÖ uluslararası finans kuruluşudur DTÖ: DTÖ'ye katılım, DTÖ'de Rusya, DTÖ'nün bileşimi İçerikler >>>>>>>>>>>>>> ... Yatırımcı Ansiklopedisi

    Yapay zeka- "AI" isteği buraya yönlendirilir; diğer anlamlarına da bakınız. Yapay zeka (AI), akıllı makineler, özellikle de akıllı bilgisayar programları yaratma bilimi ve teknolojisidir. AI... ...Wikipedia

    SOSYAL AĞ ANALİZİ- Sosyal aktörler arasındaki bağlantıları incelemeye yönelik metodoloji ve yöntemler. Bu metodolojinin ortaya çıkışı, psikolojide sosyometrik yaklaşımın şekillendiği 1930 yılına ya da erken tanımlayıcı çalışmaların analizinin yapıldığı 1950 yılına atfedilmektedir. Sosyoloji: Ansiklopedi

Kitabın

  • Bilgisayar Programlarının Yapısı ve Yorumlanması, Harold Abelson, Gerald Jay Sussman. Kitap, çeşitli program sözdizimi sistemlerinin tanımına, bir dizi algoritmadan program koduna geçişin analizine ayrılmıştır. Bir dizi temel konuyu tartışmaya önemli bir yer ayrılmıştır ...
5 Mayıs 2016, 12:09

MIT neden artık SICP üzerinde çalışmıyor?

  • Programlama

Geçtiğimiz gün büyük ve kudretli SICP'nin yazarlarından ve aynı zamanda Scheme'in vaftiz babası olan Gerald Jay Sussman'ın yılın başındaki NYC Lisp buluşmasında yaptığı konuşma büyük ilgi gördü. Bütün bunlar, Sussman ve Abelson'un “Bilgisayar Programlarının Yapısı ve Yorumlanması” adlı kitabına dayanan (soru 59. dakikada soruldu) MIT'nin artık efsane olan 6.001 dersini öğretmeyi neden bıraktığı sorusunun cevabı yüzünden.

Sussman iki neden gösterdi; ancak ilkinde özel bir şey olmadığını hemen belirteyim. 1997'ye gelindiğinde Abelson ve Sussman, 80'lerden beri neredeyse aynı şeyleri anlatmaktan yorulmuştu, bu yüzden öğretmenliği bırakmaya karar verdiler ve bölüm başkanından kursla ne yapacaklarına bağımsız olarak karar vermesini istediler. Burada aslında şaşırtıcı olan hiçbir şey yok; yeterince uzun süre yaparsanız her şey sıkıcı hale gelebilir.

Ancak ikinci neden çok daha ciddidir. Sussman'a göre o ve Abelson, SICP müfredatının artık mühendisleri bugünkü "mühendislik" düzeyine hazırlayamayacağını fark ettiler. 80'li ve 90'lı yıllarda mühendisler, basit ve iyi anlaşılmış "parçaları" birleştirerek karmaşık sistemler inşa ettiler. SICP'nin amacı, bu tür sistemler hakkında akıl yürütmeye yönelik bir soyutlama dili sağlamaktı.

Bugün işler farklı. Günümüzde mühendisler genellikle tam olarak anlamadıkları karmaşık donanımlar için kod yazıyorlar (ve bu genellikle ticari sırlardan kaynaklanıyor ve tembellik veya zaman eksikliğinden değil - aynı Apple'ı ve teknolojilerini alın). Aynı ifade yazılım için de geçerlidir çünkü yazılım ortamları en geniş işlevselliğe sahip dev kitaplıklardan oluşur. Sussman'a göre, öğrencileri bugün zamanlarının çoğunu bu kütüphanelerin kılavuzlarını okuyarak, her şeyi çalışır hale getirmek ve ihtiyaç duydukları şeyi yapmak gibi basit bir hedefle bunları nasıl birbirine bağlayacaklarını bulmaya harcıyorlar.

Sussman'a göre, "Günümüzde programlama daha çok bilime benziyor: Kütüphanenin bir parçasını alıp onu karıştırıyorsunuz ve ne yaptığını görüyorsunuz. Sonra kendinize şu soruyu sorarsınız: "Bunu, yapmam gerekeni yapacak şekilde yapılandırabilir miyim?" Basit, küçük parçalardan büyük bir sistem oluşturduğunuz SICP'de kullanılan sentez yoluyla analiz yaklaşımı geçerliliğini yitirdi. Bugün rastgele programlıyoruz.

Sonuçta Python, MIT'de Lisp'e alternatif olarak seçildi. Öğretmenleri dil lehine ikna eden şey, Python için çok çeşitli proje türlerindeki alıştırmaları çözmek için kullanılmasına izin veren (örneğin, robotları kontrol etmek için yazılım yazmak) önemli sayıda kütüphanenin mevcut olmasıydı. .

Ancak Sussman, SICP eğitim planının yerine geçenden daha "tutarlı" olması nedeniyle Python kullanmanın "geç bağlayıcı" bir karar olduğunu söyleyerek şaka yaptı. Kendisinin ve meslektaşlarının en uygun eğitim planının ne olması gerektiği konusunda hâlâ bir fikrinin olmadığını itiraf etti.

Genel olarak modern eğitim ve gelecekteki yazılım mühendislerinin hala öğrenmesi gerekenler hakkındaki görüşler radikal biçimde farklılık gösteriyor; bu nedenle, yenilikten net bir sonuç çıkarmak mümkün değil. Bunlardan birine göre, CS öğrenmenin temel amacı bilgisayarların nasıl çalıştığını anlamaktır ve belirli programlama dillerini, hatta kütüphaneleri öğrenmek değil. Elbette ortak yazar Abelson'un MIT'deki SICP döneminin sonu hakkındaki görüşüne buradan ulaşabilirsiniz.

Modern ekonomi, piyasada çok sayıda uygulama programcısına şiddetle ihtiyaç duyuyor ve üniversiteler, öğrencileri geleceğe hazırlama konusundaki sorumluluklarını yerine getiriyor. Doğal olarak, özellikle kariyerin başlangıcında her şeyi öğrenmek imkansız görünüyor; ve aynı zamanda, CS'nin ciddi şekilde incelenmesi, kötü kod miktarını ve diğer geliştiricilerin sıkıntılarını azaltır.

MIT hikayelerinden biri her zaman şu olmuştur: "SICP ve Lisp'i öğrenmek, birinci sınıf öğrencilerinin problem çözme yeteneği ve işlerini yapma becerisi açısından dünyanın çoğunu geride bırakmaya başladıkları noktadır"; Dahası, birçok MIT mezunu başkasının kütüphanesini kullanmak yerine kütüphaneleri kendileri yazmaya devam ediyor. Öyle görünüyor ki, iş dünyasının sert gerçeklerine rağmen, aramızda (gizlice) sıfırdan programlamayı öğrenme, kaynakları verimli kullanma ve kendi bisikletlerini yapma sürecinden, diğer insanların API'leri ile günlük hesaplaşmalardan ve bağlantılardan çok daha fazla hoşlananlar var. gerekli olanı yapma çabasıyla hazır açık kaynak bileşenleri - Sussman'ın bahsettiği "işin yapılması" ile aynı (her ne kadar bu konudaki yeni yaklaşım gerçekten de üretim görevlerine daha yakın olsa da). Ancak öğrencilerin eğitimlerinin bir parçası olarak derleyici/yorumlayıcı geliştirmek zorunda kaldıkları günler sandığımızdan daha yakın bir zamanda geçmişte kalmış olabilir.

Elbette tüm bunlar SICP'yi tanımayı reddetmek için bir neden değil. Yerleşik geleneğe göre, bağlantılar

" adlı bir kitap Bilgisayar Programlarının Yapısı ve Yorumlanması"1979'da piyasaya sürüldü. Daha önce MIT öğrencileri arasında programlamaya giriş dersi vermek için kullanılıyordu. Artık kitap internette ücretsiz olarak mevcut ve herkes onu eğlenmek için indirip inceleyebilir. Kitaba ek olarak, aynı zamanda ağdaki bir video serisidir - yazarlardan dersler, MIT OpenCourseware kaynağında yer alıyorlar, bana öyle geliyor ki siz materyali incelerken birbirlerini iyi tamamlayabilirler.

Bu kitapta dikkat çekici olan şey nedir? Evet, en azından Amazon'daki incelemelerle :) Eleştirmenler arasında Peter Norvig ve Paul Graham gibi kişilikler var. Bu arada, kitabın şu anda 5 üzerinden 3,8 puanı var, bu yüzden bazı ünlü şahsiyetlerin kafası karışmış durumda. Ama cidden, bu programlama alanında temel bir klasik çalışmadır (D. Knuth'un kimsenin okumadığı ünlü The Art of Programming kitabından daha kötü değildir). Benim için anlaşılmaz olan tek nokta, bu kitabı kullanarak yeni başlayanlara programlama dersi vermenin gerçeğidir. İçeriğiyle yeni basılan öğrencileri nasıl korkutabileceğinizi hayal edebiliyorum. Bu "cehennem gibi" kursa katılan kaç kişinin gelecekte bölüm değiştirmeyi seçtiğini öğrenmek için kullanılabilecek çevrimiçi istatistikler olup olmadığını merak ediyorum :) Code.org'un organizatörleri bu kitabı kullanarak programlamayı teşvik etselerdi, bu olurdu. büyük bir epik başarısızlık.

Yani bence kitap programlamaya yeni başlayanlar için değil, çünkü içindeki kavramları barut kokusunu duymamış insanlar için anlamak zor; dahası, sonraki alıştırmalar nedeniyle kayda değer bir motivasyon ve sabır kaynağına ihtiyacınız olacak; her bölüm karmaşıktır ve okuyucunun biraz "terlemesini" gerektirir. Ama ödül buna değer. Bu kitabın yalnızca ilk bölümünü okudum (sadece 5 tane var), bazı alıştırmalar üzerinde çalıştım ve itiraf etmeliyim ki bazı şeyleri daha iyi anlamaya başladığımı hissettim (bir çeşit temel kazandım).

Genel olarak, tüm bunları neden bloga yazıyorum? Ayrıca kitabın tamamını okuyacağım ve mümkün olduğu kadar çok alıştırma (özellikle zor olanları) üzerinde çalışacağım.

Plan şu:

  • Kitap okumak.
  • Okurken dersleri de gözden geçirin, çünkü bir kitaptaki materyali 1. hatta 10. seferde anlamak bazen her zaman mümkün olmayabilir.
  • Her bölümde egzersizler yapın. Okumak elbette iyidir, ancak materyal en iyi şekilde yalnızca pratik yoluyla öğrenilir.

Rusça baskısını ("Dobrosvet") okuyacağım, basılı versiyonum var. Çeviride sorun olması durumunda kimse orijinale dönmeyi yasaklamadı. Deneyim ilerledikçe bu bloga notlar yazacağım. Tanıtımın biraz motivasyon sağlayacağını umuyorum (blogu günde ortalama 120 kişi ziyaret ediyor).

İkinci baskı. - M.: Dobrosvet, 2004. - 596 s. Bilgisayar programlarının yapısı ve yorumlanması, Massachusetts Teknoloji Enstitüsü'nde (MIT) bilgisayar bilimlerine giriş dersidir. Elektrik devreleri ve doğrusal sistemler üzerine iki ek dersin yanı sıra dijital sistem tasarımı dersini de içeren genel çekirdek müfredatın dört bölümünden biri olarak tüm MIT elektrik mühendisliği ve bilgisayar bilimleri dallarında zorunludur. 1978'den bu yana bu dersin geliştirilmesinde yer alıyoruz ve 1980 sonbaharından bu yana bu materyali şu anki haliyle yılda altı ila yedi yüz öğrenciye öğretiyoruz. Bu öğrencilerin çoğunun bilgisayar bilimi alanında çok az resmi eğitimi vardı veya hiç yoktu, ancak birçoğunun bilgisayarlarla teması vardı ve bazılarının programlama veya donanım tasarımı konusunda önemli deneyimleri vardı.
İkinci baskıya önsöz.
İlk baskının önsözü.
Teşekkür
Prosedürleri kullanarak soyutlamalar oluşturmak.
Programlamanın unsurları.
İfade.
İsimler ve çevre.
Kombinasyonların hesaplanması.
Bileşik prosedürler.
Prosedür uygulamasının ikame modeli.
Koşullu ifadeler ve yüklemler.
Örnek: Newton yöntemini kullanarak karekökün hesaplanması.
Kara kutu soyutlamaları olarak prosedürler.
Prosedürler ve bunların oluşturduğu süreçler.
Doğrusal yineleme ve yineleme.
Ağaç özyinelemesi.
Büyüme emirleri.
Üs alma.
En büyük ortak böleni bulma.
Örnek: asallık testi.
Yüksek dereceli prosedürleri kullanarak soyutlamaların formülasyonu.
Argüman olarak prosedürler.
Lambda kullanarak prosedür oluşturma.
Genelleştirilmiş yöntemler olarak prosedürler.
Dönüş değerleri olarak prosedürler.
Verileri kullanarak soyutlamalar oluşturmak.
Veri soyutlamasına giriş.
Örnek: rasyonel sayılarda aritmetik işlemler.
Soyutlamanın önündeki engeller.
"Veri" kelimesi ne anlama geliyor?
Genişletilmiş örnek: aralık aritmetiği.
Hiyerarşik veriler ve kapatma özelliği.
Dizilerin temsili.
Hiyerarşik yapılar.
Standart arayüzler olarak diziler.
Örnek: resim açıklama dili.
Karakter verileri.
Alıntılar.
Örnek: sembolik farklılaşma.
Örnek: kümelerin temsili.
Örnek: Huffman'ın ağaçları kodlaması.
Soyut veriler için çoklu gösterimler.
Karmaşık sayıların temsilleri.
Etiketli veriler.
Veriye dayalı programlama ve toplanabilirlik.
Genelleştirilmiş işlemlere sahip sistemler.
Genelleştirilmiş aritmetik işlemler.
Farklı veri türlerinin birleşimi.
Örnek: sembolik cebir.
Modülerlik, nesneler ve durum.
Nesnelerin atanması ve iç durumu.
İç durum değişkenleri.
Görevlendirmenin faydaları.
Görevin başlatılmasıyla ilgili maliyetler.
Ortamlarla bilgi işlem modeli.
Hesaplama kuralları.
Basit prosedürlerin uygulanması.
Dahili durum deposu olarak çerçeveler.
İç tanımlar.
Değişken verilerle modelleme.
Değiştirilebilir liste yapısı.
Kuyruk görünümü.
Tablo görünümü.
Dijital devrelerin simülasyonu.
Kısıtlamaların yayılması.
Eşzamanlılık: zaman önemlidir.
Paralel sistemlerde zamanın doğası.
Eşzamanlılık kontrol mekanizmaları.
Canlı Yayınlar.
Gecikmeli listeler halinde akışlar.
Sonsuz akışlar.
İş parçacığı paradigmasını kullanma.
Konular ve gecikmeli hesaplama.
İşlevsel programların modülerliği ve nesnelerin modülerliği.
Üstdilsel soyutlama.
Metasiklik yorumlayıcı.
Tercüman çekirdeği.
İfadelerin sunumu.
Yorumlayıcı veri yapıları.
Tercümanın bir program olarak çalıştırılması.
Programlar halinde veriler.
İç tanımlar.
Ayrıştırma işlemini yürütmeden ayırın.
Varyasyonlu şema: tembel bir tercüman.
Hesaplamaların normal sırası ve hesaplamaların uygulama sırası.
Tembel değerlendirmeli tercüman.
Konular tembel listeler gibidir.
Varyasyonları olan şema deterministik olmayan bir hesaplamadır.
Ambulans ve arama.
Deterministik olmayan program örnekleri.
Amb tercümanının uygulanması.
Mantık programlama.
Tümdengelimli bilgi arama.
Talep işleme sistemi nasıl çalışır?
Mantık programlama matematiksel mantık mıdır?
Sorgu sisteminin uygulanması.
Kayıt makinelerinde hesaplamalar.
Kayıt makinelerinin tasarımı.
Kayıt makinelerini tanımlamak için bir dil.
Makine tasarımında soyutlama.
Altprogramlar.
Bir yığın kullanarak özyinelemenin uygulanması.
Komuta sistemine genel bakış.
Kayıt makinelerinin modellenmesi için program.
Araba modeli.
Montajcı.
Ekipler için idari prosedürlerin oluşturulması.
Makine performansını izleyin.
Bellek tahsisi ve çöp toplama.
Vektörler olarak hafıza.
Sonsuz hafıza yanılsaması.
Açık kontrole sahip bilgisayar.
Açık kontrole sahip bilgisayar çekirdeği.
Sıra hesaplaması ve kuyruk özyinelemesi.
Koşullu ifadeler, atamalar ve tanımlar.
Bilgisayarı başlatma.
Derleme.
Derleyici yapısı.
İfadelerin derlenmesi.
Kombinasyonların derlenmesi.
Komut dizilerinin kombinasyonu.
Derlenmiş kod örneği.
Sözcüksel adresleme.
Derlenen kodun bilgisayarla iletişimi.
Edebiyat.
Konu dizini.



Makaleyi beğendin mi? Arkadaşlarınla ​​paylaş!