Apakah buku "Struktur dan Interpretasi Program Komputer" merupakan bacaan yang baik untuk programmer Java? [Tutup]

14

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?

ashishjmeshram
sumber
32
Sebagai permulaan, cobalah untuk tidak memposisikan diri Anda sebagai "programmer java". Atau sebagai "programmer bahasa apa pun". Jalan buntu. Jadilah seorang programmer saja. Dan kemudian, SICP akan sangat berguna. Mungkin, bacaan paling bermanfaat di luar sana.
SK-logic
3
Ini sangat sulit, itu sebabnya Anda membacanya.
Jonathan Henson
4
Mulai dari Bab satu, buka halaman demi halaman, kerjakan semua contoh, jangan maju sampai Anda memahami setiap halaman dan setiap contoh. Kunci jawabannya online.
Jonathan Henson
2
@ JonathanHenson dan ketika Anda sampai pada akhirnya, berhenti
jk.
3
Ya, Anda perlu mempelajari Skema. Namun, salah satu alasan buku ini menggunakan Skema adalah karena Anda dapat mempelajari keseluruhan Skema dalam waktu sekitar satu hari jika Anda belum pernah memprogram sebelumnya atau sekitar 10 menit jika Anda memilikinya. Lagi pula, SICP adalah buku untuk pemula yang lengkap, sama sekali tidak mengasumsikan pengetahuan pemrograman.
Jörg W Mittag

Jawaban:

23

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

Doc Brown
sumber
+1 Jawaban terbaik untuk jumlah yang hampir sama dengan pertanyaan rekomendasi buku.
Joshua Drake
13

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.

Jörg W Mittag
sumber
Mungkin saya menyarankan alternatif untuk SICP: Konsep, Teknik, dan Model Pemrograman Komputer
Eden
@ Eden: CTM sangat bagus, saya setuju. Saya tidak menganggapnya sebagai buku untuk pengajaran pemrograman, seperti SICP, HtDP, dan Abstraksi Beton. Tapi itu pasti milik daftar "buku yang membuat Anda programmer lebih baik"!
Jörg W Mittag
5

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:

  • Kode Lengkap 2 - berfokus pada proses rekayasa perangkat lunak.
  • Clean Code - berfokus pada pengkodean dalam kode kecil. Cara menulis kelas dan fungsi.
  • Pragmatic Programmer - berfokus pada bekerja di dalam tim yang memproduksi perangkat lunak.

Penjelasan lebih rinci dari buku-buku yang disebutkan di atas dan lainnya sekali dapat ditemukan dari referensi berikut:

  1. Bagaimana menjadi Programmer dengan 10 Buku Sederhana
  2. Buku terbaik untuk pemrogram pemula

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.

Yusubov
sumber
7
Saya setuju dengan saran dalam konteks (tersirat) - tetapi jawaban Anda akan lebih baik jika itu benar-benar menyebutkan apa yang tidak Anda sukai (atau sukai) tentang SICP.
Joris Timmermans
4
Perbandingan apel dan jeruk - semua buku yang Anda sebutkan adalah buku-buku bagus tentang rekayasa perangkat lunak. SICP lebih tentang ilmu komputer - apa pemrograman komputer secara konseptual.
Nate
1
Jawaban ini terasa seperti jawaban untuk pertanyaan daftar bacaan yang direkomendasikan. Yang saya tidak percaya cocok dengan tujuan dari situs Stack Exchange: meta.stackexchange.com/questions/113678/…
Joshua Drake
@Nate, ini bukan apel dan jeruk untuk dibandingkan, ini semua tentang CS. Meski begitu, masing-masing buku berbagi beberapa topik umum.
Yusubov
2
@ MadKeithV, saya setuju dengan komentar Anda. Saya telah menaruh pikiran saya pada SICP di baris pertama.
Yusubov
4

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.

Martin Beckett
sumber
Ada buku-buku lain di daftar keinginan saya seperti Code Complete 2, Clean code, programmer Pragamatic, Refactoring dll. Tapi ini lebih pada java atau setidaknya OOP centric tidak seperti SICP.
ashishjmeshram
5
Itu sebabnya saya akan membacanya dulu
Martin Beckett
7
Saya berdebat untuk memilih jawaban ini, tetapi memutuskan hanya komentar yang lebih baik: Saya setuju bahwa SICP bukan bacaan yang baik untuk kebanyakan orang, terutama sejak awal, tetapi saya percaya bahwa pengembang yang hebat harus dapat menangani buku ini, dan akan belajar banyak dari itu. Pengembang hebat bukan "kebanyakan orang". Ini buku filter yang bagus.
Joris Timmermans
4
Saya tidak setuju (to the point) - seorang pengembang yang memiliki SICP di bawah ikat pinggangnya selalu dapat selalu belajar tentang lingkungan Unix dll. Saya lebih suka menyewa seorang pengembang tanpa pengalaman platform selain SICP dan melatihnya, daripada seseorang yang tidak dapat SICP.
Joris Timmermans
1
@MadKeithV - Ya dan untuk alasan yang sama saya menyewa Matematika / Phds fisika tanpa pengalaman pengkodean. Tetapi jika Anda bekerja penuh waktu sebagai programmer, dan terutama pemula, ada buku-buku sederhana yang mungkin lebih baik (nilai / waktu) daripada Knuth atau SICP atau membaca karya-karya Turing.
Martin Beckett
1

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.

Jonathan Henson
sumber