Struktur dan interpretasi program komputer pdf. Struktur dan Interpretasi Program Komputer

Struktur dan interpretasi program komputer

Struktur dan interpretasi program komputer

Harold Abelson, Gerald Sussman

Bahasa asli:
Asli diterbitkan:
Seri:

Seri teknik elektro dan ilmu komputer MIT

Penerbit:
Halaman:
Pembawa:
ISBN:

"Struktur dan interpretasi program komputer"(Bahasa inggris) Struktur dan Interpretasi Program Komputer - SICP mendengarkan)) adalah buku klasik tentang pemrograman karya Harold Abelson dan Gerald Sussman, diterbitkan oleh penerbit pada tahun 1985. Di institut itu digunakan sebagai buku teks untuk kursus pemrograman awal. 6.001 dengan nama yang sama ( 6.001 digantikan oleh kursus 6.01 menggunakan Python). Selain itu, buku ini digunakan di banyak institusi pendidikan Amerika yang memiliki kursus yang terkait dengan bahasa Skema.

Dengan menggunakan Skema (dialek bahasa LISP), penulis mendeskripsikan konsep dasar pemrograman, termasuk abstraksi (data dan eksekusi), rekursi, dan abstraksi metalinguistik.

Buku ini juga menguraikan implementasi praktis dari konsep mesin register dan juru bahasa metasiklik.

Teks edisi kedua buku ini didistribusikan di bawah lisensi Creative Commons (CC-BY-NC versi 3.0).

Catatan

Tautan

  • Halaman buku resmi di situs MIT Press (Bahasa Inggris)
  • SICP Wiki - solusi dan diskusi tugas dari buku (Bahasa Inggris)
  • Ceramah oleh penulis buku pada mata kuliah SICP (Bahasa Inggris)

Yayasan Wikimedia.

  • 2010.
  • Struktur data untuk himpunan disjoint

Struktur nomor katalog koin Rusia

    Lihat apa itu "Struktur dan interpretasi program komputer" di kamus lain: GOST R 54136-2010: Sistem otomasi industri dan integrasi. Panduan Standar, Struktur dan Kosakata - Terminologi GOST R 54136 2010: Sistem otomasi industri dan integrasi. Pedoman Standar, Struktur dan Kosakata dokumen asli: 4.1 bagian abstrak: Bagian yang hanya didefinisikan oleh... ...

    Buku referensi kamus istilah dokumentasi normatif dan teknis

    Struktur dan Interpretasi Program Komputer- Struktur dan Interpretasi Program Komputer Penulis: Harold Abelson, Gerald Sussman Bahasa asli: Bahasa Inggris Asli diterbitkan: 1985 Seri: Teknik elektro dan ilmu komputer MIT ... Wikipedia

    Bahasa pemrograman- Bahasa pemrograman adalah sistem tanda formal yang dirancang untuk menulis program. Suatu program biasanya mewakili suatu algoritma dalam bentuk yang dapat dimengerti oleh pelaksana (misalnya komputer). Bahasa pemrograman menentukan himpunan... ... Wikipedia

    Pelat- Semantik: multi-paradigma: pemrograman berorientasi objek, fungsional, prosedural Muncul di: 1958 Penulis: John McCarthy Pengetikan data ... Wikipedia

    Pelat- Semantik Cadel: multi-paradigma: pemrograman berorientasi objek, fungsional, prosedural Diperkenalkan pada: 1958 Penulis: John McCarthy Pengetikan data: kuat, dinamis... Wikipedia

    PELAT- Semantik: multi-paradigma: pemrograman berorientasi objek, fungsional, prosedural Muncul di: 1958 Penulis: John McCarthy Pengetikan data: kuat, dinamis Dialek: Umum ... Wikipedia

    WTO adalah organisasi keuangan internasional WTO: aksesi ke WTO, Rusia di WTO, komposisi WTO Isi >>>>>>>>>>>>>>> ... Ensiklopedia Investor

    Kecerdasan buatan- Permintaan "AI" dialihkan ke sini; lihat juga arti lainnya. Kecerdasan buatan (AI) adalah ilmu dan teknologi untuk menciptakan mesin cerdas, khususnya program komputer cerdas. AI... ...Wikipedia

    ANALISIS JARINGAN SOSIAL- metodologi dan metode untuk mempelajari hubungan antar aktor sosial. Munculnya metodologi ini dikaitkan dengan tahun 1930, ketika pendekatan sosiometri mulai terbentuk dalam psikologi, atau pada tahun 1950, ketika analisis studi deskriptif awal... ... Sosiologi: Ensiklopedia

Buku

  • Struktur dan Interpretasi Program Komputer, Harold Abelson, Gerald Jay Sussman. Buku ini dikhususkan untuk deskripsi berbagai sistem sintaksis program, analisis transisi dari sekumpulan algoritma ke kode program. Ruang yang cukup luas dikhususkan untuk membahas serangkaian dasar...
5 Mei 2016 pukul 12:09 siang

Mengapa mereka tidak belajar SICP lagi di MIT

  • Pemrograman

Suatu hari, pidato Gerald Jay Sussman, salah satu penulis SICP yang hebat dan perkasa, serta bapak baptis Skema, yang berlangsung pada pertemuan NYC Lisp di awal tahun, menarik perhatian luas. Itu semua karena jawaban atas pertanyaan mengapa MIT berhenti mengajarkan mata kuliah legendaris 6.001, berdasarkan buku karya Sussman dan Abelson “The Structure and Interpretation of Computer Programs” (pertanyaan diajukan pada menit ke-59).

Sussman memberikan dua alasan; namun, saya akan segera mencatat bahwa tidak ada yang istimewa dari yang pertama. Pada tahun 1997, Abelson dan Sussman sudah bosan menceritakan hal yang hampir sama sejak tahun 80an, sehingga mereka memutuskan untuk berhenti mengajar dan meminta kepala departemen untuk secara mandiri memutuskan apa yang harus dilakukan dengan kursus itu sendiri. Sebenarnya tidak ada yang mengejutkan di sini - apa pun bisa menjadi membosankan jika Anda melakukannya cukup lama.

Namun, alasan kedua jauh lebih serius. Menurut Sussman, ia dan Abelson menyadari bahwa kurikulum SICP tidak lagi dapat mempersiapkan para insinyur untuk menghadapi apa yang disebut dengan “engineering” saat ini. Pada tahun 80an dan 90an, para insinyur membangun sistem yang kompleks dengan menggabungkan “bagian-bagian” yang sederhana dan mudah dipahami. Tujuan SICP adalah untuk menyediakan bahasa abstraksi untuk berpikir tentang sistem tersebut.

Hari ini segalanya berbeda. Saat ini, para insinyur biasanya menulis kode untuk perangkat keras kompleks yang tidak sepenuhnya mereka pahami (dan ini sering kali disebabkan oleh rahasia dagang, dan bukan karena kemalasan atau kurangnya waktu - misalnya Apple dan teknologinya). Pernyataan yang sama juga berlaku untuk perangkat lunak, karena lingkungan perangkat lunak terdiri dari perpustakaan raksasa dengan fungsionalitas terluas. Menurut Sussman, murid-muridnya saat ini menghabiskan sebagian besar waktu mereka membaca manual perpustakaan-perpustakaan tersebut untuk mengetahui bagaimana menghubungkannya dengan tujuan sederhana untuk membuat semuanya berfungsi dan melakukan apa yang mereka perlukan.

Menurut Sussman, “Pemrograman saat ini lebih seperti sains: Anda mengambil sebagian dari perpustakaan dan melihatnya - lihat apa fungsinya. Lalu Anda bertanya pada diri sendiri, "Dapatkah saya mengonfigurasinya agar melakukan apa yang saya perlukan?" Pendekatan analisis demi sintesis yang digunakan dalam SICP, di mana Anda membangun sistem besar dari bagian-bagian kecil dan sederhana, sudah ketinggalan zaman. Hari ini kami memprogram secara acak.

Pada akhirnya, Python dipilih sebagai alternatif Lisp di MIT. Apa yang meyakinkan para guru untuk memilih bahasa ini adalah kenyataan bahwa sejumlah besar perpustakaan tersedia untuk Python, yang memungkinkannya digunakan untuk menyelesaikan latihan dalam berbagai jenis proyek (misalnya, untuk menulis perangkat lunak untuk mengendalikan robot) .

Namun, Sussman sendiri bercanda bahwa penggunaan Python adalah keputusan yang "terlambat mengikat" - karena rencana pelatihan SICP lebih "koheren" daripada apa yang terjadi. Diakuinya, dirinya dan rekan-rekannya masih belum mengetahui rencana latihan yang optimal.

Pendapat tentang pendidikan modern secara umum dan apa yang masih harus dipelajari oleh para insinyur perangkat lunak di masa depan sangat berbeda - sehingga tidak mungkin untuk menawarkan kesimpulan yang jelas dari inovasi tersebut. Menurut salah satu dari mereka, tujuan mendasar mempelajari Ilmu Komputer adalah untuk memahami cara kerja komputer, dan bukan mempelajari bahasa pemrograman tertentu, apalagi perpustakaan. Pendapat rekan penulis Abelson tentang berakhirnya era SICP di MIT dapat ditemukan di sini.

Perekonomian modern sangat membutuhkan sejumlah besar pemrogram aplikasi di pasar dan universitas memenuhi tanggung jawab mereka dalam mempersiapkan siswanya untuk masa depan. Tentu saja, tampaknya mustahil untuk mempelajari segalanya, terutama di awal karir; dan pada saat yang sama, studi serius tentang CS mengurangi jumlah kode buruk dan penderitaan sesama pengembang.

Salah satu cerita tentang MIT adalah bahwa "mempelajari SICP dan Lisp adalah titik di mana mahasiswa baru mulai meninggalkan sebagian besar dunia dalam hal kemampuan pemecahan masalah dan kemampuan untuk melakukan pekerjaan mereka"; Selain itu, banyak lulusan MIT yang terus menulis perpustakaan sendiri, dibandingkan menggunakan perpustakaan orang lain. Tampaknya terlepas dari kenyataan pahit dalam bisnis, ada di antara kita yang (diam-diam) menikmati proses belajar membuat program dari awal, menggunakan sumber daya secara efisien, dan membuat sepeda sendiri lebih dari sekadar pertarungan sehari-hari dengan API orang lain dan menghubungkan yang sudah siap. -membuat komponen open source dalam upaya melakukan apa yang diperlukan - “menyelesaikan pekerjaan” yang dibicarakan Sussman (walaupun pendekatan baru dalam hal ini memang lebih dekat dengan tugas produksi). Namun, masa ketika siswa harus membuat compiler/interpreter sebagai bagian dari pendidikan mereka mungkin akan berlalu lebih cepat dari yang kita kira.

Tentu saja, semua itu bukan menjadi alasan untuk menolak mengenal SICP. Menurut tradisi yang ada, tautan ke

Sebuah buku berjudul " Struktur dan Interpretasi Program Komputer"dirilis pada tahun 1979. Sebelumnya digunakan untuk mengajarkan mata kuliah pengantar pemrograman di kalangan mahasiswa MIT. Sekarang buku tersebut tersedia secara gratis di Internet, dan siapa pun dapat mengunduh dan mempelajarinya untuk bersenang-senang. Selain buku tersebut, ada juga merupakan serial video di jaringan - ceramah dari penulis, mereka berada di sumber daya MIT OpenCourseware, menurut saya mereka dapat saling melengkapi sebaik Anda mempelajari materinya.

Apa yang luar biasa dari buku ini? Ya, setidaknya dengan ulasan di Amazon :) Di antara pengulas ada tokoh seperti Peter Norvig dan Paul Graham. Omong-omong, buku tersebut sekarang mendapat peringkat 3,8 dari 5, itulah sebabnya beberapa tokoh terkenal merasa bingung. Tapi serius, ini adalah karya klasik fundamental di bidang pemrograman (tidak lebih buruk dari buku terkenal The Art of Programming karya D. Knuth, yang belum pernah dibaca siapa pun). Satu-satunya hal yang tidak dapat saya pahami adalah fakta mengajarkan kursus pemrograman untuk pemula menggunakan buku ini. Saya bisa membayangkan bagaimana Anda bisa menakut-nakuti siswa baru dengan isinya. Saya ingin tahu apakah ada statistik online yang dapat digunakan untuk mengetahui berapa banyak orang yang mengikuti kursus “neraka” ini yang memilih untuk mengubah jurusan mereka di masa depan :) Jika penyelenggara Code.org mempromosikan pemrograman menggunakan buku ini, itu akan menjadi sebuah kegagalan besar.

Jadi, menurut saya, buku ini jelas bukan untuk pemula dalam pemrograman, karena konsep-konsep di dalamnya sulit dipahami oleh orang yang belum pernah mencium bau mesiu, terlebih lagi, Anda memerlukan bekal motivasi dan kesabaran yang luar biasa, sejak latihan setelahnya setiap bagian rumit dan mengharuskan pembaca "berkeringat" sedikit. Tapi imbalannya sepadan. Saya baru membaca bab pertama buku ini (hanya ada 5), ​​mengerjakan beberapa latihan dan, saya akui, saya merasa mulai lebih memahami beberapa hal (saya memperoleh semacam landasan).

Secara umum, mengapa saya menulis semua ini di blog? Selain itu, saya akan membaca keseluruhan buku dan mengerjakan sebanyak mungkin latihan (terutama yang sulit).

Rencananya adalah:

  • Membaca buku.
  • Sambil membaca, ulas juga perkuliahannya, karena dalam sebuah buku terkadang tidak selalu mungkin untuk memahami materi dari yang pertama atau bahkan yang ke 10 kalinya.
  • Lakukan latihan di setiap bagian. Tentu saja membaca itu baik, tetapi materi paling baik dipelajari hanya melalui latihan.

Saya akan membaca edisi Rusia ("Dobrosvet"), saya punya versi kertas. Jika terjadi masalah dengan terjemahan, tidak ada yang melarang untuk beralih ke aslinya. Seiring kemajuan percobaan saya, saya akan menulis catatan di blog ini. Saya berharap publisitas akan memberikan motivasi (rata-rata 120 orang mengunjungi blog per hari).

Edisi kedua. - M.: Dobrosvet, 2004. - 596 hal. Struktur dan Interpretasi Program Komputer merupakan mata kuliah pengantar ilmu komputer di Massachusetts Institute of Technology (MIT). Hal ini diwajibkan bagi semua jurusan teknik elektro dan ilmu komputer MIT sebagai salah satu dari empat bagian dari keseluruhan kurikulum inti, yang mencakup dua mata kuliah lagi dalam rangkaian listrik dan sistem linier, serta mata kuliah dalam desain sistem digital. Kami telah terlibat dalam pengembangan kursus ini sejak tahun 1978 dan telah mengajarkan materi ini dalam bentuknya yang sekarang kepada enam hingga tujuh ratus siswa per tahun sejak musim gugur tahun 1980. Sebagian besar siswa ini hanya memiliki sedikit atau tidak sama sekali pelatihan formal dalam ilmu komputer, meskipun banyak dari mereka yang memiliki pengalaman dalam bidang komputer dan beberapa memiliki pengalaman yang cukup dalam pemrograman atau desain perangkat keras.
Kata Pengantar edisi kedua.
Kata pengantar untuk edisi pertama.
Ucapan Terima Kasih
Membangun abstraksi menggunakan prosedur.
Elemen pemrograman.
Ekspresi.
Nama dan lingkungan sekitar.
Perhitungan kombinasi.
Prosedur gabungan.
Model penerapan prosedur substitusi.
Ekspresi dan predikat bersyarat.
Contoh: menghitung akar kuadrat menggunakan metode Newton.
Prosedur sebagai abstraksi kotak hitam.
Prosedur dan proses yang dihasilkannya.
Rekursi dan iterasi linier.
Rekursi pohon.
Urutan pertumbuhan.
Eksponensial.
Menemukan pembagi persekutuan terbesar.
Contoh: tes primalitas.
Perumusan abstraksi menggunakan prosedur tingkat tinggi.
Prosedur sebagai argumen.
Membangun prosedur menggunakan lambda.
Prosedur sebagai metode umum.
Prosedur sebagai nilai kembalian.
Membangun abstraksi menggunakan data.
Pengantar abstraksi data.
Contoh: operasi aritmatika pada bilangan rasional.
Hambatan abstraksi.
Apa arti kata "data"?
Contoh tambahan: aritmatika interval.
Data hierarki dan properti penutupan.
Representasi urutan.
Struktur hierarki.
Urutan sebagai antarmuka standar.
Contoh: bahasa deskripsi gambar.
Data karakter.
Kutipan.
Contoh: diferensiasi simbolik.
Contoh: representasi himpunan.
Contoh: Huffman mengkode pohon.
Berbagai representasi untuk data abstrak.
Representasi bilangan kompleks.
Data berlabel.
Pemrograman dan aditif berbasis data.
Sistem dengan operasi umum.
Operasi aritmatika umum.
Kombinasi berbagai jenis data.
Contoh: aljabar simbolik.
Modularitas, objek dan keadaan.
Penugasan dan keadaan internal objek.
Variabel keadaan internal.
Manfaat penugasan.
Biaya yang terkait dengan pengenalan penugasan.
Model komputasi dengan lingkungan.
Aturan perhitungan.
Penerapan prosedur sederhana.
Bingkai sebagai tempat penyimpanan keadaan internal.
Definisi dalaman.
Pemodelan dengan data variabel.
Struktur daftar yang dapat dimodifikasi.
Tampilan antrian.
Tampilan tabel.
Simulasi rangkaian digital.
Penyebaran pembatasan.
Konkurensi: waktu itu penting.
Sifat waktu dalam sistem paralel.
Mekanisme kontrol konkurensi.
Aliran.
Streaming sebagai daftar tertunda.
Aliran tak berujung.
Menggunakan paradigma threading.
Utas dan komputasi tertunda.
Modularitas program fungsional dan modularitas objek.
Abstraksi metalinguistik.
Penerjemah metasiklik.
Inti penerjemah.
Presentasi ekspresi.
Struktur data juru bahasa.
Mengeksekusi penerjemah sebagai sebuah program.
Data sebagai program.
Definisi dalaman.
Memisahkan parsing dari eksekusi.
Skema dengan variasi: penerjemah yang malas.
Urutan perhitungan normal dan urutan perhitungan aplikatif.
Penerjemah dengan evaluasi malas.
Utas itu seperti daftar malas.
Skema dengan variasi merupakan perhitungan non-deterministik.
Amb dan cari.
Contoh program non-deterministik.
Implementasi juru bahasa amb.
Pemrograman logika.
Pencarian informasi deduktif.
Cara kerja sistem pemrosesan permintaan.
Apakah logika pemrograman logika matematika?
Implementasi sistem kueri.
Perhitungan pada mesin register.
Desain mesin register.
Sebuah bahasa untuk menggambarkan mesin register.
Abstraksi dalam desain mesin.
Subrutin.
Menerapkan rekursi menggunakan tumpukan.
Ikhtisar sistem komando.
Program untuk memodelkan mesin register.
model mobil.
Perakit.
Menghasilkan prosedur eksekutif untuk tim.
Memantau kinerja mesin.
Alokasi memori dan pengumpulan sampah.
Memori sebagai vektor.
Ilusi ingatan yang tak ada habisnya.
Komputer dengan kontrol eksplisit.
Kernel komputer dengan kontrol eksplisit.
Komputasi urutan dan rekursi ekor.
Ekspresi kondisional, tugas dan definisi.
Memulai komputer.
Kompilasi.
Struktur penyusun.
Menyusun ekspresi.
Kompilasi kombinasi.
Kombinasi urutan perintah.
Contoh kode yang dikompilasi.
Pengalamatan leksikal.
Komunikasi kode yang dikompilasi dengan komputer.
Literatur.
Indeks subjek.



Apakah Anda menyukai artikelnya? Bagikan dengan teman Anda!