Ini mungkin subyektif dan kemungkinan akan ditutup tetapi saya masih ingin tahu apakah itu benar-benar membantu untuk membaca Struktur dan Interpretasi program Komputer.
Struktur dan Interpretasi Program Komputer
Buku ini tidak menggunakan Java. Bukannya aku ingin belajar Java. Saya hanya ingin tahu apakah akan bermanfaat jika dibaca menjadi programmer yang lebih baik dan hal-hal apa yang dapat saya peroleh dari buku ini atau apakah ada alternatif lain selain buku ini yang lebih cocok untuk programmer Java?
Jawaban:
Yah, saya tidak tahu apakah buku ini akan membantu Anda, tetapi ketika saya mengerjakan sendiri buku itu sekitar 20 tahun yang lalu, buku itu pasti meningkatkan keterampilan pemrograman saya (terlepas dari bahasa pemrograman apa pun). Dan saya kira terutama seorang programmer Java akan mendapatkan beberapa wawasan baru yang tidak akan didapatnya dengan tetap berpegang pada Java.
Joel Spolsky 2005 menulis artikel yang bagus tentang Java dan SICP yang mungkin menarik bagi Anda:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
sumber
Saya pikir Struktur dan Interpretasi Program Komputer adalah buku yang bagus untuk dibaca. Namun, ada beberapa masalah dengan itu.
Masalah terbesar dalam pengalaman saya adalah bahwa, sementara buku membutuhkan sekali tidak memiliki pengetahuan pemrograman, dan diarahkan untuk pemula lengkap, yang diarahkan untuk pemula lengkap yang studi di MIT . Dan, sementara itu tidak menganggap pengetahuan pemrograman, tidak menganggap sedikit domain pengetahuan, misalnya di bidang teknik elektro, fisika dan matematika. Catatan: ini tidak ada hubungannya dengan konsep yang diajarkan, mereka hanya perlu memahami latihan dan contoh .
Orang-orang yang lebih besar daripada saya telah menjelaskannya dengan lebih baik, dalam makalah yang berjudul cerdik The Structure and Interpretation of the Computer Science Kurikulum . Untungnya, mereka tidak hanya merengek, mereka malah menulis buku sendiri : Cara Mendesain Program . Jika Anda berpikir tentang membaca SICP, Anda mungkin ingin membaca HtDP terlebih dahulu: mencakup hampir sama dengan SICP, tetapi hanya mengasumsikan rata-rata pengetahuan domain tingkat sekolah menengah. (Bahkan, ada tertulis untuk diajarkan kepada anak-anak sekolah menengah.)
Setelah menyelesaikan HtDP, Anda masih dapat kembali dan membaca SICP, karena sekarang sedikit pengetahuan domain yang hilang tidak akan berbahaya lagi karena Anda telah melihat konsep sebelumnya.
Catatan: ada konsep untuk HtDP edisi kedua , yang mungkin ingin Anda baca daripada edisi pertama. Materi tentang pemrograman imperatif telah dihapus, dan akan dibahas dalam volume kedua yang belum ditulis Bagaimana Cara Merancang Komponen , tetapi Anda dapat mengambilnya baik dari edisi pertama atau dari SICP atau keduanya.
sumber
Dari pemahaman saya SICP , itu lebih fokus di bidang pemrograman fungsional, termasuk pemrograman rekursif, dan pengantar yang kuat untuk CS - yang agak sulit untuk dipahami oleh programmer baru. Poin lain, buku ini dipersiapkan dan diinstruksikan untuk MIT, dan beberapa dasar yang bagus di bidang teknik, matematika, fisika juga diperlukan untuk menemukan buku ini berguna.
Saya akan menyarankan satu set buku yang bagus di mana masing-masing fokus pada berbagai aspek rekayasa perangkat lunak:
Penjelasan lebih rinci dari buku-buku yang disebutkan di atas dan lainnya sekali dapat ditemukan dari referensi berikut:
Tolong, jangan ragu menambahkan ke daftar karena itu bukan yang ideal :)
Sunting: Dalam memilih buku-buku yang disebutkan di atas, dan menentukan prioritas cara membacanya, itu benar-benar mengarah pada tujuan yang ingin Anda lakukan atau pelajari.
sumber
Saya akan mengambil risiko di sini dan mengatakan - mungkin bukan bacaan yang baik untuk kebanyakan orang - bahasa apa pun.
Seperti Knuth, itu buku yang bagus untuk dibaca. Namun, bahkan dengan anggapan Anda adalah ugrad MIT yang hebat, masih perlu bagian terbaik dalam setahun untuk membaca dengan benar, dan itu dengan bantuan dosen dan TA.
Apakah ada buku lain tentang rekayasa perangkat lunak yang dapat Anda baca pada waktu itu yang lebih bernilai? Apakah ada bahasa lain yang bisa Anda pelajari saat itu?
sunting Hanya untuk memperluas sedikit:
Rekayasa perangkat lunak adalah rekayasa, ini semua tentang pengoptimalan. Tugas Anda adalah memaksimalkan pengetahuan Anda untuk anggaran waktu + biaya tertentu.
SICP adalah pengantar tingkat tinggi untuk pemrograman melalui bahasa fungsional. Alasan menggunakan bahasa fungsional adalah karena lebih mudah untuk menggambarkan banyak konsep matematika pemrograman dalam bahasa fungsional daripada dalam bahasa prosedural dan jauh lebih mudah dibaca daripada logika formal.
Ada juga sejumlah postur yaitu. "Anda bukan benar-benar seorang programmer kecuali jika Anda membaca SICP", atau Knuth, atau dapat memprogram dalam Lisp, atau C, atau assembler x86. Itu biasanya mudah disangkal; yaitu. Anda tidak bisa menjadi programmer sejati kecuali Anda tahu pekerjaan Cantor tentang teori himpunan dan persamaan Maxwell dan terbiasa dengan mobilitas lubang di semikonduktor.
sumber
Apakah Anda berencana untuk menjadi "programmer JAVA" selama sisa hidup Anda? Maka mungkin ada buku yang lebih baik untuk dibaca. Jika Anda ingin menjadi programmer yang baik secara umum maka itu adalah bacaan yang sangat baik. Inilah sebabnya. Ada beberapa alat tertentu yang dibutuhkan oleh setiap programmer yang baik dalam kotak alat mereka. Salah satunya adalah pengetahuan yang mendalam tentang struktur data dan algoritma (jika Anda tidak percaya saya, wawancara di Microsoft, Google, Amazon dll ...), algoritma yang menyertainya adalah analisis kompleksitas, rekursi, dan pemahaman yang baik tentang pointer tidak menyakiti. Ketika datang ke analisis algoritma, proses rekursif, dan paradigma fungsional secara umum, saya tidak bisa memikirkan buku yang lebih baik atau lebih menantang daripada SICP.
sumber