Seni Pemrograman Komputer - Membaca atau tidak membaca? [Tutup]


63

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.


Saya ingin membacanya, tapi itu mahal sekali, jadi saya akan mendapatkannya ketika saya sudah selesai dan mulai mendapatkan uang. Saya juga membutuhkan rak buku besar.
gablin

Saya berhasil sampai ke halaman 3 dan membukanya. Dijual set di Amazon 6 bulan kemudian.
kirk.burleson

Jawaban:


72

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.


34
+1 untuk anak-anak - komputer terkenal baik untuk menunggu. Mereka bisa menunggu anak-anak lebih besar.

3
+1 untuk anak-anak, sementara Anda akan dapat membaca buku kapan saja dalam hidup Anda, Anda akan dapat bermain dengan anak Anda yang berusia 4 tahun hanya selama 1 tahun. Dan dengan anak Anda yang berumur 5 tahun hanya 1 tahun juga ...

3
Jawaban yang bagus Ada banyak hal yang akan membuat kita programmer lebih baik tetapi kita harus pintar tentang di mana kita menginvestasikan waktu kita dan juga ingat ada lebih banyak kehidupan daripada menjadi programmer yang hebat.
Jon Hopkins

5
Saya belum punya anak dan saya benar-benar ingin selesai membacanya sebelum saya mati. Haruskah aku tidak punya anak?
tenggelam

1
@sank Anda berpikir seperti seorang programmer ... :)
Angelin Nadar

23

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


1
Ensiklopedia ini memiliki banyak hal di dalamnya, kebanyakan tidak semua yang menarik atau relevan bagi orang-orang dengan minat yang luas. Konten TAOCP setidaknya relevan dengan pengembang perangkat lunak apa pun.
David Thornley

4
Re: the Jobs story: Ini adalah kisah apokrif. Knuth mengatakan hal yang sama pada pembicaraan teknologi Google Randall Munroe.
greyfade

4
Namun "kisah" itu membuat saya tersenyum. :)
MetalMikester

Saya bisa membuktikan humor Dr. Knuth. Saya mengirim email ke alamatnya yang dipublikasikan. Saya terkejut bahwa dia merespons. Responsnya berupa salinan keras email saya, jika ia dengan sopan mengatakan kepada saya untuk membaca bagian selanjutnya dalam TAOCP. Tanda tangan email saya adalah tentang berasal dari Missouri (tunjukkan pada saya), di mana ia berkomentar tentang politisi MO yang bodoh. Dia kemudian menyimpulkan dengan mengatakan, "Hanya bercanda, jangan salahkan saya untuk Gubernur Schwarzenegger".
dbasnett

21

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.


1
Anda memukul paku di kepala.
kirk.burleson

9

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.


6

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.


6

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.


6

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


2
Ini seperti "Sejarah Singkat Waktu" Hawking untuk programmer.
Jon Hopkins

1
Bit saya memang membaca ABHIT. Radiasi Hawking tampak aneh bagi saya. Lubang hitam menyusut karena ada lebih banyak barang yang jatuh ke dalamnya? Saya mendapatkan konservasi massa dan dua-hal-dari-masing-masing-pasangan-virtual-tidak-pernah-bertemu-untuk-menghancurkan, tetapi idenya masih aneh.
Steve314

@ Steve314: Yang lebih aneh adalah lubang hitam yang sangat kecil itu meledak dengan keras. Secara teoretis.
Steven A. Lowe

2
ABHOT Singkat dan ditujukan untuk masyarakat umum. TAOCP bukanlah keduanya.
Sean McMillan

3

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


3

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.


1
Baca satu bab penuh? Itu sekitar setengah volume, dan itu bukan volume kecil. Saya pikir Anda mungkin berarti unit teks yang lebih kecil.
David Thornley

3

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


2

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.


1
"jadi menyelesaikan buku mungkin akan lebih baik daripada kursus universitas" - Volume 1-3 digunakan sebagai buku teks di beberapa kursus saat saya mendapatkan gelar CS, dan kami akan menghabiskan seluruh kursus hanya dengan setengah dari satu volume misalnya "Volume 3 Sorting and Searching" diajarkan sebagai dua kursus terpisah.
tcrosley

2
Poin minor, tetapi saat ini hanya ada tiga volume terbitan dengan yang keempat sedang berlangsung. Fascicles adalah pra-cetak dari apa yang akan menjadi jilid keempat. www-cs-faculty.stanford.edu/~uno/taocp.html
rjzii

1

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)


1
Sayangnya (dalam hal ini - SANGAT beruntung jika tidak) saya telecommute, jadi itu bukan pilihan.
Zannjaminderson

1

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

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


1

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!


3
Apakah akan membantu jika telah menggunakan assembler sebenarnya untuk IBM360 atau PDP8?
Martin Beckett

1
Itu tidak akan pernah bisa bertahan selama 50 tahun ini dengan bahasa majelis nonfiksi. Ini menempatkan semua orang pada kerugian yang sama!
luser droog
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.