Mengapa Structure and Interpretation of Computer Programs itu penting
Inovasi SICP
- Meningkatkan taraf intelektual: SICP sangat meningkatkan taraf intelektual pendidikan ilmu komputer tingkat pemula. Jika mata kuliah CS pertama sebelumnya berfokus pada mempelajari detail bahasa pemrograman tertentu, SICP menekankan pemahaman gambaran besar dari proses pemrograman.
- Penekanan pada abstraksi: SICP menekankan pentingnya abstraksi: menemukan pola umum dari masalah yang konkret, lalu membuat alat perangkat lunak yang mengimplementasikan tiap pola tersebut.
- Memperlakukan fungsi sebagai data: SICP berfokus pada gagasan bahwa fungsi dapat digunakan sebagai data. Ini memang sulit dipelajari, tetapi setelah dipahami merupakan konsep yang sangat kuat.
- Beragam paradigma pemrograman: SICP mengintegrasikan tiga paradigma pemrograman—fungsional, berorientasi objek, dan deklaratif—ke dalam mata kuliah CS pertama.
Pemilihan bahasa Scheme
- Notasi yang sederhana dan konsisten: Scheme memiliki notasi yang sangat sederhana dan konsisten untuk segala hal. Bahasa lain memakai notasi yang berbeda-beda untuk penugasan variabel, eksekusi kondisional, perulangan, pemanggilan fungsi, dan sebagainya, sedangkan Scheme menangani semuanya dengan satu notasi.
- Memungkinkan pembelajaran beragam paradigma: Berkat kesederhanaan Scheme, berbagai paradigma pemrograman dapat dipelajari dengan mudah. Secara khusus, ini membantu memahami bagaimana pemrograman berorientasi objek diimplementasikan.
- Siap menghadapi masa depan: SICP membekali mahasiswa dengan kemampuan untuk mempelajari bahasa pemrograman baru. Filosofinya adalah bahwa “bahasa yang akan digunakan di masa depan belum ditemukan.”
Pendekatan optimistis SICP
- Ekspektasi yang tinggi: SICP memiliki ekspektasi yang optimistis terhadap apa yang dapat dicapai mahasiswa baru di perguruan tinggi. Mahasiswa biasanya menulis interpreter bahasa pemrograman, sesuatu yang umumnya ditangani mahasiswa tingkat atas.
- Pembelajaran yang mendalam: Teksnya sendiri tidak mudah dibaca, tetapi setiap kalimat penting, dan setiap latihan mengajarkan gagasan baru yang penting.
Pengaruh SICP
- Pengaruh yang berkelanjutan: Kursus berbasis SICP memang sedikit, tetapi pengaruhnya sangat besar. Banyak buku teks setelahnya berupaya mengikuti standar yang ditetapkan SICP.
- Perluasan penggunaan Scheme: Cakupan penggunaan Scheme sebagai bahasa pembelajaran meluas dari sekolah menengah pertama hingga program pascasarjana.
- Ilmu komputer yang berpusat pada ide: Gagasan bahwa ilmu komputer harus berpusat pada ide menyebar luas.
Kebertahanan SICP
- Umur panjang: SICP telah bertahan lebih dari 25 tahun dan masih terus dicetak. Lingkungan komputasi telah banyak berubah, tetapi gagasan-gagasan besarnya tidak berubah.
- Perubahan dalam kursus: Seiring waktu, kursus berbasis SICP menambahkan topik seperti paralelisme, kontrol konkurensi, desain antarmuka pengguna, dan paradigma client/server.
Perubahan kurikulum MIT
- Kurikulum yang berpusat pada aplikasi: MIT beralih dari kurikulum yang berpusat pada topik ke kurikulum yang berpusat pada aplikasi. Pilihan bahasa pemrograman hanyalah bagian terkecil dari keputusan tersebut.
- Tantangan pendekatan baru: Pendekatan baru ini lebih sulit untuk diajarkan, dan tiap mata kuliah membutuhkan kerja sama para dosen teknik elektro dan ilmu komputer.
Respons mahasiswa
- Popularitas belakangan: Saat mengikuti kelas, mahasiswa sering tidak menyadari seberapa banyak yang mereka pelajari, tetapi di kemudian hari kursus ini dinilai sebagai salah satu yang paling populer. Ada pula umpan balik bahwa apa yang dipelajari tetap digunakan dalam praktik kerja setelah lulus.
Pendapat GN⁺
- Filosofi pendidikan SICP: SICP menekankan pembelajaran gagasan besar alih-alih detail bahasa pemrograman, sehingga membantu mahasiswa membangun kemampuan untuk mempelajari bahasa baru dengan mudah.
- Keunggulan Scheme: Kesederhanaan dan notasi Scheme yang konsisten sangat bermanfaat bagi pemula. Ini memudahkan pemahaman berbagai paradigma pemrograman.
- Perubahan di MIT: Perubahan kurikulum MIT menekankan pembelajaran yang berpusat pada aplikasi, yang dapat memberikan pengalaman yang lebih dekat dengan praktik nyata.
- Kebertahanan pendidikan: Umur panjang SICP menunjukkan bahwa filosofi pendidikan dan isinya masih tetap relevan. Ini menegaskan nilai hakiki dari pendidikan.
- Keterkaitan dengan praktik kerja: Pendidikan berbasis SICP menumbuhkan kemampuan yang dapat langsung diterapkan di dunia kerja, dan ini sangat membantu bahkan setelah lulus.
1 komentar
Opini Hacker News
Kuliah Prof. Abelson bisa ditonton di YouTube dan layak untuk diinvestasikan waktunya: memberikan pemahaman ilmu komputer yang mendalam dan dapat membantu meredam hype belakangan ini.
Paruh pertama buku ini merupakan bacaan yang ringan dan menarik: mengalami kesulitan pada bagian berorientasi objek, dan secara pribadi merasa cara berpikir fungsional lebih cocok.
Kuliah dari awal 80-an bisa ditonton di YouTube: berisi humor, percobaan grafis awal, dan mode tahun 70-an, sehingga juga bersifat edukatif.
Bertanya-tanya apakah buku ini masih layak dibaca bahkan bagi programmer yang sudah sangat berpengalaman.
Mengira tujuan SICP adalah untuk menakut-nakuti orang yang tidak menikmati ilmu komputer: ternyata ini adalah kursus dasar yang sangat berharga, tetapi bagi sebagian orang justru membuat mereka beralih ke jurusan lain.
Tidak berhasil melewati beberapa halaman pertama: jika ini adalah mata kuliah wajib, mungkin sekarang akan mengerjakan hal lain.
Pernah bekerja sebagai asisten pengajar untuk kelas CS 61A di Berkeley: berpendapat bahwa notasi Scheme yang sederhana dan seragam membantu pengajaran, tetapi pada praktiknya justru membingungkan mahasiswa. Menganggap sifat semua hal di Scheme yang terlihat sama sebagai bug.
Pelajaran terbaik yang dipetik dari SICP adalah bahwa saat menulis fungsi pertama, kita sebenarnya sedang membuat DSL untuk menyelesaikan masalah domain: wawasan ini meningkatkan level kemampuan sebagai programmer.
Setiap kali membaca tentang SICP, muncul rasa frustrasi terhadap Javascript: jika Javascript adalah Scheme, pengembangan web mungkin akan menjadi lebih baik.
Permintaan untuk membandingkan SICP dan PAIP: SICP membahas pemrograman fungsional dan dasar-dasar ilmu komputer, sedangkan PAIP tampaknya lebih berfokus pada praktik pemrograman umum.