Ada banyak buku tentang pemrograman di luar sana, dan tampaknya Code Complete cukup banyak di bagian atas daftar "buku pemrograman yang harus dibaca" kebanyakan orang, tetapi bagaimana dengan The Art of Computer Programming oleh Donald Knuth? Saya orang yang sibuk, antara bekerja dan keluarga muda. Saya tidak punya banyak waktu luang, jadi saya harus pilih-pilih tentang bagaimana saya menggunakannya.
Saya bertanya-tanya - apakah ada orang di sini yang membaca 'TAOCP'? Jika demikian, apakah ada gunanya meluangkan waktu untuk membaca atau akankah buku lain atau lebih pemrograman di sisi lain seperti proyek kesayangan atau berkontribusi pada open source menjadi penggunaan waktu saya yang lebih baik dalam hal pengembangan profesional?
DISCLAIMER - Bagi Anda yang memakai kaos "Knuth is my homeboy", jangan salah paham - Saya ingin membacanya, tetapi saya hanya ingin tahu apakah itu harus tepat di bagian atas daftar prioritas saya atau jika sesuatu yang lain harus didahulukan.
Jawaban:
TAOCP adalah referensi yang sangat berharga untuk memahami bagaimana struktur data dan algoritme yang kami gunakan setiap hari berfungsi dan mengapa pekerjaan itu dilakukan, tetapi berusaha untuk membacanya secara langsung akan menjadi investasi luar biasa waktu Anda.
Sebagai satu pria keluarga ke pria lain, habiskan waktu bersama anak-anak Anda.
sumber
Ganti "ensiklopedia" dalam pertanyaan Anda untuk setiap referensi ke TAOCP, dan saya pikir jawabannya harus jelas. Karena dalam banyak hal, itulah TAOCP.
Ada (mungkin apokrip) cerita tentang Steve Jobs bertemu dengan Knuth. Hal pertama yang dikatakan Jobs kepadanya adalah "Senang bertemu Anda, Dr. Knuth. Saya sudah membaca semua karya Anda!". Tanggapan Knuth adalah "Anda penuh omong kosong": http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt
sumber
Tidak, itu tidak boleh di bagian atas daftar prioritas Anda. Saya punya satu set lengkap dan saya belum membaca semuanya. Saya telah menggunakannya (sejauh ini) sebagai referensi yang baik untuk masalah-masalah tertentu (itu sangat berharga dalam pemahaman saya tentang keacakan dan pengujian generator acak, misalnya). Setiap kali sebuah topik CS muncul bahwa saya tidak memiliki pegangan yang BENAR-BENAR aktif, saya cenderung mengambil sedikit TAOCP yang relevan sebagai langkah yang baik dalam pemahaman saya.
Jika Anda memutuskan untuk membacanya, lebih banyak kekuatan untuk Anda, dan saya merekomendasikan untuk membawanya dalam potongan kecil. Jangan takut untuk melompat-lompat dan melihat apa pun yang paling menarik terlebih dahulu.
sumber
TOACP adalah bacaan penting - di beberapa titik. Tergantung pada apa yang Anda lakukan setiap hari, itu mungkin bukan yang paling mendesak.
Ini salah satu dari buku-buku itu (baik, koleksi buku) yang baik untuk dibaca di awal karir Anda karena itu benar-benar memberi Anda wawasan yang baik yang biasanya tidak akan Anda dapatkan sampai nanti, tetapi tidak penting untuk bertahan hidup sampai Anda lulus ke bagian itu karier Anda di mana Anda tidak hanya kode, Anda memilih kotak alat. Ini adalah titik di mana Anda benar-benar ingin mempelajari algoritma, semoga sudah sedikit memahami desain bahasa, dan memiliki pemahaman yang sangat luas tentang apa alat, bahasa, dan sistem di luar sana, dan bagaimana masing-masing cocok dengan ekosistem dari hal-hal yang Anda bisa menarik untuk proyek tertentu.
Dengan kata lain: ini pembelajaran besar, jadi jika Anda obsesif seperti saya membacanya sekarang, jika Anda tidak, tidak apa-apa untuk menunda sampai Anda mulai mendambakan untuk naik tangga dan menjadi seorang pria besar gambar.
sumber
Setelah baru-baru ini melakukan tugas ini, saya dapat mengatakan bahwa cara dia menulis sangat menyenangkan dan masalahnya dilabeli (menurut kesulitan) dengan sangat tepat. Dapatkan volume pertama dan baca bab 1 dan 2 dan lihat bagaimana Anda menyukainya.
sumber
TAOCP adalah pekerjaan yang hebat, tetapi membacanya akan menjadi investasi waktu yang mengerikan bagi pengembang perangkat lunak yang berpraktik. Jika Anda melakukannya, Anda akan mengorbankan beberapa tahun (yaitu berapa lama waktu yang dibutuhkan) dari anggaran pengembangan diri profesional Anda untuk belajar terlalu banyak tentang terlalu sedikit.
Saya akan merekomendasikan untuk bekerja melalui satu atau beberapa buku "algoritma" yang kurang tentang favorit, favorit saya di bidang ini adalah The Algorithm Design Manual oleh Steven S. Skiena
Kemudian jika Anda merasa bahwa Anda perlu / ingin lebih banyak bergerak ke Knuth.
Pada saat yang sama Anda dapat membeli satu atau beberapa volume TAOCP, periksa untuk memahami area apa saja yang dicakup Knuth di dalamnya, dan simpan di perpustakaan Anda jika Anda benar-benar memerlukan beberapa informasi darinya dalam sehari-hari Anda kerja. Dugaan saya yang berpendidikan adalah bahwa Anda tidak akan melakukannya dan itu adalah alasan lain mengapa saya tidak menyarankan Anda untuk membaca. Tetapi jika Anda akan menemukan diri Anda cukup sering merujuknya, maka Anda akan tahu bahwa ada baiknya Anda membacanya dari depan ke belakang.
sumber
Karya mani Knuth adalah referensi paling populer yang ingin dibaca oleh programmer , atau selesai membaca. Suatu hari nanti.
sumber
+10 pada komentar keluarga / anak-anak. Saya mencoba dan melakukan sebagian besar membaca sambil bertahan dalam penerbangan mata-merah ke pelanggan.
Tapi ... ya, sangat layak dibaca. Tidak ada alasan untuk membaca secara linear, sebagai gantinya skim dan pilih beberapa topik yang menarik.
sumber
Saya benar-benar di perkemahan orang-orang yang merasa bahwa setiap pengembang harus melakukan investasi dalam mendapatkan buku di beberapa titik (dan itu semakin mudah sekarang sepertinya mereka dicetak ulang dalam paperback ) tetapi pada token yang sama, saya akan juga sulit ditekan untuk percaya bahwa seseorang akan duduk dan membaca semuanya dari depan ke belakang.
Pendekatan terbaik untuk mereka - jika Anda tidak memiliki perjalanan ke tempat kerja di mana Anda memiliki waktu luang untuk duduk dan membaca - adalah membaca cukup banyak dari mereka untuk mengetahui di mana menemukan barang-barang di dalamnya dan kemudian membaca bab penuh kapan pun Anda temukan diri Anda menggunakannya sebagai buku referensi untuk masalah tertentu. Dengan Google dan Stack Overflow, meraih buku referensi tidak biasa dilakukan, tetapi dalam beberapa kasus Anda mungkin menemukan bahwa buku-buku tersebut memberikan wawasan bahwa Anda harus mengirim waktu ekstra untuk mencari di internet.
sumber
Jangan lupa bahwa pada awalnya, Knuth ingin menulis sesuatu tentang cara menulis kompiler.
Anda bisa mendapatkan banyak informasi di internet dengan wikipedia misalnya, tetapi jika Anda bukan semacam peneliti, cukup baca ringkasannya, Anda akan mendapatkan kepuasan.
Anda masih bisa mendapatkan buku tebal pertama sehingga Anda bisa membacanya saat Anda bosan ...
sumber
Mungkin lebih penting bahwa Anda melakukan masalah itu di dalam buku daripada hanya membacanya. Itu akan membutuhkan banyak waktu.
Ia menyukai 4 volume dan 5 fasik (apa pun itu) sehingga menyelesaikan buku-buku mungkin lebih baik daripada kursus universitas dalam dasar-dasar ilmu komputer dan menjadikan Anda hampir pemrogram terbaik.
Karena Anda punya keluarga muda, seperti saya, Anda memberi saya ide besar. Saya akan membeli buku-buku satu per satu dan mengajarkannya kepada anak-anak Anda.
sumber
Jika Anda penasaran, maka lakukanlah, tetapi perlu beberapa waktu untuk dicerna sehingga Anda perlu meluangkan waktu.
Apakah Anda memiliki perjalanan di mana Anda dapat membaca - itu akan menjadi sempurna.
EDIT: Anda mungkin menemukan pratinjau sebagian kecil dari Volume 4 ini menarik: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz
(catatan: postscript terkompresi)
sumber
Itu bukan sesuatu yang kebanyakan orang ingin duduk dan membaca secara langsung, tidak. Ini adalah referensi yang sangat berharga, dan tentu saja baik untuk mengambilnya, memilih bagian yang menarik, membacanya, dan melakukan beberapa latihan. Tetapi perbandingan ensiklopedia yang dibuat di atas cukup tepat ... besar, luas, dan terperinci. Dan beberapa "latihan" adalah masalah penelitian yang mungkin membutuhkan waktu bertahun-tahun untuk dipecahkan.
Jika Anda hanya ingin pengetahuan yang lebih baik tentang algoritma tingkat rendah, mungkin lebih baik untuk memulai dengan buku Robert Sedgewick (misalnya, "Algoritma dalam C," "Algoritma di Jawa," dll.).
sumber
Jika Anda ingin mengubah dunia, maka bacalah. Jika Anda ingin mempelajari peretasan baru, maka jangan membacanya.
sumber
TAOCP Knuth adalah sebuah mahakarya. Tetapi, sama seperti karya agung lainnya (seperti "Illiad", "War and Peace" atau Proust's "In Search of Lost Time"), ini bukan untuk semua orang atau waktu tambahan.
Buku ini ditulis dengan sangat baik dan diteliti dengan sangat baik. Masalahnya hebat dan penjelasan tentang algoritma dilakukan dengan baik.
Masalah besar buku ini adalah fakta bahwa Knuth menunjukkan kode untuk bahasa rakitan fiksi untuk komputer fiksi. Saya mengerti mengapa dia melakukannya, tetapi kenyataannya itu menyebalkan.
Saya merekomendasikan untuk menggunakan buku ini sebagai Alkitab. Saat membutuhkan, cari itu. Anda akan menemukan jawabannya. Itu terjadi pada saya lebih dari sekali!
sumber