-
Pengenalan buku
- Ada sebuah buku yang dipinjamkan kepada mahasiswa untuk dibaca selama musim panas
- Buku ini merupakan salah satu karya terpenting dalam ilmu komputer, dan sangat memengaruhi karier serta penelitian seseorang
- Judul bukunya adalah Hal Abelson dan Jerry Sussman, Structure and Interpretation of Computer Programs (SICP)
-
Pentingnya buku ini
- Buku ini memberi pengaruh besar saat pertama kali mengenal ilmu komputer
- Buku ini memperkenalkan elemen-elemen dasar pemrograman dan mengeksplorasi berbagai topik
- Topiknya mencakup abstraksi lambda, komputasi tingkat tinggi, struktur data kompleks, modularitas, stream, evaluasi malas, pembangunan interpreter dan compiler, serta manajemen penyimpanan
-
Pendekatan desain bahasa
- Hal dan Jerry memandang segala sesuatu sebagai latihan dalam desain bahasa
- Buku ini memperkenalkan konsep menata sistem yang kompleks melalui desain berlapis
- Setiap lapisan dibangun dengan menggabungkan bagian-bagian yang dianggap primitif pada lapisan tersebut
-
Hakikat ilmu komputer
- Revolusi komputer adalah revolusi dalam cara berpikir dan cara berekspresi
- Buku ini memperkenalkan konsep epistemologi prosedural, yaitu kajian tentang struktur pengetahuan dari sudut pandang imperatif
- Ilmu komputer menyediakan kerangka kerja untuk pertanyaan "bagaimana"
-
Relevansi buku yang bertahan lama
- Buku yang dibeli pada tahun 1988 ini masih tetap relevan
- Buku ini adalah salah satu dari sedikit buku dalam ilmu komputer yang tetap bernilai seiring berjalannya waktu
- Mirip dengan Lectures on Physics karya Feynman, buku ini menangkap esensi ilmu komputer dengan sangat baik
-
Pembaruan
- Diperbarui pada 27 Januari 2024
- Buku ini juga disertakan dalam bibliografi Lisp beranotasi
1 komentar
Pendapat Hacker News
Isi buku ini bisa dipelajari dari video kuliah Abelson dan Sussman tahun 1986. Penjelasan mereka tentang pelapisan abstraksi menurut saya berguna, baik secara pribadi maupun sebagai mentor
Teks klasik seperti SICP membahas desain program, tetapi saya rasa sekarang desain sistem lebih penting. Saya tidak yakin apakah sistem terdistribusi termasuk bagian dari ilmu komputer, tetapi ini adalah masalah yang lebih umum untuk dipecahkan. Tulis sistem sesederhana mungkin dan gunakan alat observabilitas untuk menemukan cacat dalam desain, lalu selesaikan masalah dengan struktur data atau metode ilmu komputer lainnya. Dalam kebanyakan kasus, notasi Big O dan kompleksitas runtime tidak penting, dan array serta CPU yang cepat dapat menyelesaikan sebagian besar masalah. Saat ada masalah runtime, program perlu diprofilkan untuk menemukan hotspot. Ilmu komputer tidak mengajarkan cara kerja caching memori pada CPU. Algoritme graf yang keren mungkin punya kompleksitas runtime yang baik, tetapi bisa merusak cache CPU sepenuhnya, padahal array mungkin bisa memprosesnya lebih cepat. Masalah yang lebih umum adalah toleransi kesalahan, distributed locking dan ketepatan queue, serta skalabilitas sistem. Mungkin saya bias karena berlatar belakang teknik komputer/elektro
Tautan ke salinan gratisnya rusak. Sekitar tahun 2001, hanya versi HTML yang tersedia gratis, lalu seseorang mengubahnya ke TeXinfo. Jika ingin mempelajari SICP hari ini, Anda bisa menjalankan kodenya di MIT Scheme atau DrRacket
"The Elements of Programming Style" layak dibaca tiga kali, dan saya sudah membacanya lebih dari itu serta mendapat banyak manfaat. Anda bisa merujuk ke ulasan tahun 2010
Saya ingin menyukai SICP, tetapi Lisp terasa sulit. Saya suka Haskell dan Standard ML. Saya penasaran apakah orang lain punya pengalaman serupa. Menarik juga membaca buku dengan semangat yang mirip SICP tetapi dalam bahasa lain. Saya tidak ingin mempelajari SICP dalam JavaScript
Saya penasaran dengan pendapat tentang "Software Design for Flexibility: How to Avoid Programming Yourself into a Corner"
SICP membantu saya memahami bahwa ada berbagai model pemrograman. Buku ini membantu saat membaca dokumentasi bahasa, library, dan framework, lalu menentukan arah
Saya sudah memrogram selama 25 tahun dan memiliki buku ini sekitar 10 tahun. Baru-baru ini saya mulai dengan Dr. Racket. Kelebihan Dr. Racket adalah saat mengarahkan mouse ke atas variabel, kita bisa melihat secara visual keterkaitannya dengan lokasi lain di dalam kode. Namun saya agak terganggu karena ini bukan VS Code. Jadi saya menyiapkan lingkungan agar bisa mengerjakan soal latihan dengan VS Code, atau lebih tepatnya Cursor. Integrasi LLM sangat keren; saya bisa memberikan kode dan narasi yang saya tulis lalu meminta umpan balik. Saya sudah mengerjakan beberapa latihan, lalu membuat situs statis dari konversi kode, jawaban yang saya tulis, dan umpan balik yang saya terima dari LLM. Ini cara yang menyenangkan untuk menghabiskan waktu. Saya rasa saya tidak akan sepenuhnya memahami SICP tanpa bantuan LLM, tetapi menarik melihat bagaimana LLM bisa diintegrasikan ke dalam latihan
Pada pembacaan kedua, saya mulai menelusuri catatan kaki dan referensinya, lalu menyadari ada dunia yang indah di sana. Ada makalah tentang Sussman dan timnya yang merancang prosesor programmable khusus untuk menghitung sifat-sifat benda langit. Selalu mengejutkan
Memberikan tautan ke versi asli dan versi JavaScript