it-swarm-id.com

Seni Pemrograman Komputer - Membaca atau tidak membaca?

Ada banyak buku tentang pemrograman di luar sana, dan sepertinya Code Complete cukup banyak di bagian atas daftar "buku pemrograman yang harus dibaca" kebanyakan orang, tetapi bagaimana dengan Seni Pemrograman Komputer 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 lebih baik menggunakan waktu saya 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.

65
Zann Anderson

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 dari awal hingga akhir akan menjadi investasi luar biasa waktu Anda.

Sebagai satu pria keluarga ke pria lain, habiskan waktu bersama anak-anak Anda.

72
Adam Crossland

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

23
Jason Baker

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.

22
Michael Kohne

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 (well, 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 alat, bahasa, dan sistem apa yang ada 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.

9
HedgeMage

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.

6
sova

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 kurang "ultimate" buku tentang algoritma, favorit saya di daerah ini adalah Manual Desain Algoritma 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.

6
kdubinets

Karya mani Knuth adalah referensi paling populer yang dibaca programmer bermaksud untuk dibaca, atau selesai membaca. Suatu hari nanti.

6
Steven A. Lowe

+10 pada komentar keluarga/anak-anak. Saya mencoba dan melakukan sebagian besar membaca sambil bertahan di 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.

3
Jé Queue

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 ...

3
jokoon

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 sedang dicetak ulang dalam paperback ) tetapi pada tanda yang sama, saya juga akan sulit sekali 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 yang harus Anda kirimi waktu ekstra untuk mencari di internet.

3
rjzii

Mungkin lebih penting bahwa Anda melakukan masalah itu di dalam buku daripada hanya membacanya. Itu akan membutuhkan banyak waktu.

Dia suka 4 jilid dan 5 jilid (apa pun itu) jadi menyelesaikan buku-buku mungkin akan lebih baik daripada kursus universitas di dasar-dasar ilmu komputer dan membuat Anda hampir sebagai programmer terbaik yang pernah ada.

Karena Anda punya keluarga muda, seperti saya, Anda memberi saya ide besar. Saya akan membeli buku-buku satu per satu dan mengajar mereka untuk anak-anak Anda.

2
Peter Turner

Jika Anda ingin mengubah dunia, maka bacalah. Jika Anda ingin mempelajari peretasan baru, maka jangan membacanya.

1
veryfoolish

Jika Anda penasaran, maka lakukanlah, tetapi perlu 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)

1
user1249

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.).

1
mindcrime

TAOCP Knuth adalah sebuah mahakarya. Tapi, sama seperti karya agung lainnya (seperti "Illiad", "War and Peace" atau Proust's "In Search of Lost Time"), itu 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 Majelis 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!

1
Eduardo