Saya menemukan kutipan dari Bill Gates ini: "Anda harus mengirimi saya resume jika Anda bisa membaca semuanya." Dia berbicara tentang buku-buku Seni Pemrograman . Jadi saya cukup penasaran dan ingin membaca semuanya. Tapi jujur, saya tidak mengerti.
Saya benar-benar tidak intelektual. Jadi ini seharusnya menjadi alasan mengapa saya tidak bisa memahaminya, tetapi saya ingin sekali mempelajarinya. Saya sedang membaca Volume 1 tentang algoritma mendasar. Apakah ada buku di luar sana yang ramah untuk pemula / orang lambat seperti saya, yang akan membantu membangun pengetahuan saya sehingga saya bisa membaca buku Knuth dengan mudah di masa depan?
algorithms
books
taocp
Rho
sumber
sumber
Jawaban:
Bahkan saya pikir buku Knuth agak maju dan sulit dimengerti. Buku-buku itu pasti untuk para ahli algoritma tingkat penelitian IMHO.
Pengantar Algoritma oleh CLRS jauh lebih sederhana.
EDIT :
Namun jika Anda ingin membaca buku Knuth, Anda harus membaca Matematika Beton terlebih dahulu . Knuth ingin murid-muridnya menyadari bagian matematika dasar dari analisis algoritma.
sumber
Pastikan untuk membaca semua kutipan Gates termasuk ini:
Itu bukan buku yang mudah dan tidak dimaksudkan untuk itu. Ingatlah bahwa salah satu tujuan Knuth adalah membawa ketelitian matematika pada ilmu komputer . Itu bagus jika Anda ingin membuktikan sesuatu tentang suatu algoritma, tetapi tidak terlalu bagus jika Anda hanya ingin tahu cara kerjanya.
Michael Dorfman memiliki beberapa tips bagus untuk membaca buku-buku dalam jawabannya atas pertanyaan (sekarang dihapus) di Stackoverflow tentang Apa yang Dapat Saya Dapatkan Dari Membaca Lot? . Jika Anda tidak memiliki perwakilan 10k, Anda masih dapat melihat pertanyaan dan jawabannya di mesin wayback .
Untuk sumber daya lain, saya telah menemukan bahwa menjelajah silabus dari sekolah sains komputer yang terkenal itu bermanfaat. Misalnya, buku teks untuk memulai kelas algoritma:
sumber
Knuth adalah penulis ilmu komputer yang paling dihormati, dikutip, dibicarakan, dan sangat dihormati dalam sejarah. Buku-bukunya menghiasi rak buku semua pengembang perangkat lunak yang serius, dan dirujuk dengan tingkat penghormatan yang sama dengan yang diberikan orang kepada Alkitab dan Seni Perang.
Saya bahkan pernah mendengar bahwa beberapa orang sebenarnya telah membaca sebagian dari buku-buku Knuth.
Kebanyakan orang hanya berniat melakukannya.
Secara pribadi, saya menyimpannya untuk masa pensiun saya
sumber
Buku-buku Knuth mengubah bidang algoritma selamanya. Dia sendiri mengatakan bahwa '2 halaman di buku saya adalah seluruh pekerjaan karier seseorang' dan bahwa buku-bukunya sulit dibaca. Buku ini berisi bahan kental dari tahun bekerja di Ilmu Komputer.
Anda seharusnya tidak merasa buruk jika Anda tidak bisa memahaminya.
Seperti yang dikatakan Prasoon, CLRS adalah buku yang lebih sederhana untuk dibaca.
Anda juga memiliki Algoritma oleh Rajasekaran, Sahni et al yang mudah dimengerti.
sumber
Ketika saya pertama kali lulus, saya mengambil tiga jilid pertama TAOCP sebagai hadiah kelulusan untuk diri saya sendiri dan berusaha membacanya langsung. Tidak pernah berhasil. Hari-hari ini saya telah berhasil melewati 1/3 dari tiga volume pertama (dipikirkan tanpa urutan tertentu). Bahannya pasti padat, tapi ada tiga tips yang saya pelajari yang banyak membantu.
Pertama, jangan mencoba membaca dari depan ke belakang. TAOCP benar-benar merupakan karya referensi sebanyak apa pun, dan saya telah menemukan yang terbaik untuk membaca bagian ketika itu relevan dengan masalah yang Anda coba selesaikan. Seperti banyak hal di dunia ini, memahami solusinya jauh lebih mudah setelah Anda menemui masalah yang mereka coba selesaikan.
Selanjutnya, bagan alur di depan buku itu, itu bukan hanya sedikit humor tetapi sebenarnya tip yang cukup berguna. Bacalah bagian yang sedang Anda kerjakan secara iteratif, mulailah dengan hanya dengan konsep menyeluruh dan kemudian secara perlahan masuk lebih dalam ke matematika.
Akhirnya, simpan beberapa kertas kuno yang bagus dan sebuah pensil untuk bekerja melalui algoritme seperti yang dijelaskan, dan selesaikan beberapa masalah mudah. Ini sangat membantu untuk menegakkan kembali apa yang Anda baca.
sumber
Jangan khawatir, kebanyakan orang tidak mengerti Seni Pemrograman Komputer (TAOCP). Jadi, jangan menganggap diri Anda lamban atau pemula karena tidak mengerti - Anda sama seperti 99,99% dari kita yang tidak mengerti.
Anda cukup ambisius jika ingin mencapai tingkat di mana Anda dapat membaca TAOCP dengan mudah . Saya sendiri hanya melihat-lihat buku sebelum menyimpannya. Mungkin hanya ada segelintir orang di planet ini yang memahami TAOCP.
Lihatlah posnya: Pemrogram Buku yang Tidak Benar-Benar Membaca oleh Bill the Lizard.
Ada banyak buku lain yang terdaftar di sana yang cukup mudah dibaca , dimengerti , dan Anda bisa mendapat manfaat langsung .
Saya pribadi suka:
sumber
jika Anda mendefinisikan diri
not a highly intellectual being
Anda maka Anda menetapkan harapan rendah. Anda harus menghancurkan mentalitas itu jika Anda ingin melakukan sesuatu yang sepadan dengan masalahnya. Seharusnya tidak ada keraguan dalam pikiran Anda bahwa Anda dapat mencapai sesuatu. Juga, mencapainya tidak berarti bahwa Anda akan mencapainya dengan mudah.Hal-hal yang layak dikejar adalah hal-hal yang sulit ... dan itu bukan klise. Dalam peranti lunak, teknik, kehidupan sehari-hari secara umum, jika Anda ingin mencapai sesuatu, Anda harus pergi untuk hal-hal yang sulit, hal-hal yang dihindari orang, dan tidak puas dengan hal-hal umum yang paling rendah.
Pertama, tidak jelas apa latar belakang CS Anda. Buku Knuth membutuhkan tingkat kedewasaan. Hanya sedikit orang dengan gelar CS yang bisa melewatinya dengan mudah. Saya tidak akan mengharapkan seorang siswa CS yang baru saja menyelesaikan kursus pertamanya dalam algoritma untuk benar-benar dapat melewati satu pun buku Knuth. Kedewasaan yang diperlukan untuk mendapatkannya tidak ada di sana, dan itu tidak ada hubungannya dengan kapasitas mental siswa.
Anda harus memiliki dasar algoritma yang dingin dan jelas, dan Anda perlu memiliki jumlah pemrograman yang cukup (bekerja dan / atau skolastik) di bawah ikat pinggang Anda - saya akan mengatakan, setidaknya 40 kredit pada pemrograman. Anda juga perlu memiliki matematika CS di tanah yang kokoh.
Anda tidak dapat melangkah jauh ke depan tanpa memiliki pemahaman yang baik tentang matematika diskrit (dan mungkin teori perhitungan.)
Bukannya Anda membutuhkan pengetahuan itu untuk mengatasi masalah Knuth, tetapi Anda membutuhkan kedewasaan untuk bisa melalui jenis materi itu.
Pertama-tama pilih satu buku dan satu buku saja (buku CLRS seperti yang disarankan sebelumnya), dan kerjakan dari awal hingga selesai. Jika memungkinkan, lakukan program yang mengimplementasikan algoritme. Jangan gunakan Java atau C #, bahkan C ++. Pergi ke tulang telanjang C dan rasakan membangun sesuatu dari sisa logam tulang kosong.
Juga dapatkan buku Knuth tentang "Matematika Beton" jika Anda belum menyelesaikan kursus matematika dan teori perhitungan diskrit. Akan baik bagi Anda untuk membaca buku itu juga.
Kemudian pegang ensiklopedia Knuth, satu buku tebal, satu bab sekaligus. Jangan pergi ke bab lain tanpa memiliki pemahaman yang baik tentang bab pertama.
Saya akan menyarankan Anda melalui volume I (algoritma dasar) terlebih dahulu, kemudian volume III (mencari dan menyortir). Itu harus menjadi tujuan langsung Anda. Kemudian, nanti (jauh kemudian), atasi volume IV (Algoritma Kombinatorial) dan kemudian Volume II (Algoritma Semi-Numerik.)
Jangan merasa buruk jika Anda tidak mendapatkannya pada awalnya. Saya sudah mencoba untuk melewati volume I dan III selama bertahun-tahun (10 tahun sekarang).
Dan Anda juga tidak perlu terlalu membebani. Jangan lakukan itu untuk membuktikan sesuatu kepada seseorang atau diri Anda sendiri. Lakukan karena Anda tertarik secara intelektual untuk melakukannya. Anda dapat menjadi mahir dalam algoritma dengan hanya menggunakan buku CLRS '(atau buku-buku tingkat pas yang bagus di luar sana.)
Jadilah pragmatis dan beri diri Anda istirahat. Perlakukan membaca buku Knuth sebagai ambisi pribadi jangka panjang, bukan sebagai bukti langsung bahwa Anda adalah materi CS;)
Ada hal lain yang lebih penting (karir-bijaksana) untuk bunuh diri;)
sumber
Bahkan sebelum mulai dengan Knuth, saya harus menelusuri empat buku yang berbeda. Dua yang pertama adalah buku Sedgewick tentang Algoritma. Gambaran umum ini sebagian besar algoritme dan struktur data dalam bentuk aktual yang diimplementasikan, sehingga Anda dapat melihat apa itu dan bagaimana kerjanya. Buku-buku ini datang dalam versi bahasa yang berbeda - saya membaca yang di C, tetapi iirc mereka awalnya ditulis dalam Pascal, dan ada versi C ++ dan Java di luar sana.
Setelah itu saya mengerjakan bagian yang baik dari buku Cormen tentang Algoritma dan menggunakan Pengantar Sedgewick dan Flajolet untuk Analisis Algoritma sebagai teks pelengkap , karena lebih sesuai dengan kekakuan matematika Knuth daripada buku Cormen. Saya masih harus menyelesaikan salah satu dari ini, sebagian besar memetik ceri bagian yang saya rasa saya butuhkan.
Setelah membaca itu, dan mendapatkan gelar dalam bidang Matematika saya dapat membaca beberapa TAOCP, tetapi sulit dibaca. Itu tidak berarti itu tidak berguna. TAOCP adalah beberapa manual referensi algoritma terbaik yang ada, tetapi berpikir Anda dapat menggunakannya untuk "sepenuhnya" memahami segala sesuatu yang agak bermasalah.
sumber