it-swarm-tr.com

Ben CS öğrencisiyim ve dürüst olmak gerekirse Knuth'un kitaplarını anlamıyorum

Bill Gates'in bu sözüne tökezledim: "Her şeyi okuyabiliyorsan kesinlikle bana bir özgeçmiş göndermelisin." Programlama Sanatı kitaplar hakkında konuşuyordu. Bu yüzden oldukça meraklıydım ve hepsini okumak istiyorum. Ama dürüst olmak gerekirse, anlamıyorum.

Gerçekten o kadar entelektüel değilim. Bu yüzden anlayamamanın nedeni bu olmalı, ama öğrenmeye hevesliyim. Şu anda temel algoritmalar hakkında Cilt 1'i okuyorum. Orada, benim gibi acemiler/yavaş insanlar için uygun olan ve gelecekte Knuth'un kitabını kolaylıkla okuyabilmem için bilgimi geliştirmeye yardımcı olacak herhangi bir kitap var mı?

52
Rho

Bence Knuth'un kitabı biraz ileri ve anlaşılması zor. Bu kitaplar kesinlikle araştırma düzeyinde algoritmacılar IMHO içindir.

Peki acemiler/benim gibi yavaş insanlar için uygun olan kitaplar var mı?

CLRS ile Algoritmalara Giriş çok daha basittir.

[~ # ~] düzenle [~ # ~] :

Yine de istiyorum Knuth'un kitabını okumak için önce Somut Matematik . Knuth, öğrencilerinin algoritma analizinin temel matematiksel bölümünün farkında olmalarını ister.

39
Prasoon Saurav

Knuth, tarihin en saygın, alıntılanmış, hakkında konuşulmuş ve en saygın bilgisayar bilimi yazarıdır. Kitapları, tüm ciddi yazılım geliştiricilerinin kitap raflarını süslüyor ve insanların İncil ve Savaş Sanatı ile aynı düzeyde saygı gösteriliyor.

Hatta Knuth'un kitaplarının bazı insanların aslında okuma bölümlerinin olduğunu duydum.

Çoğu insan sadece niyetinde için.

Şahsen, onları emekliliğim için saklıyorum

29
Steven A. Lowe

Knuth'un kitapları algoritma alanını sonsuza dek değiştirdi. Kendisi 'kitabımdaki 2 sayfanın birisinin tüm kariyer işi olduğunu' ve kitaplarının okunmasının zor olduğunu söyledi. Kitap, Bilgisayar Bilimi yıllarca süren çalışmalardan yoğunlaştırılmış materyal içeriyor.

Eğer anlayamıyorsan kendini kötü hissetmemelisin.

Prasoon'un dediği gibi, CLRS daha basit bir kitaptır.

Ayrıca, anlaşılması kolay olan Rajasekaran, Sahni ve arkadaşlarına ait Algoritmalar da vardır.

20
Arjun J Rao

İlk mezun olduğumda TAOCP'nin ilk üç cildini mezuniyet hediyesi olarak aldım ve doğrudan okumaya çalıştım. Asla yönetemedim. Bugünlerde bunu ilk üç cildin 1/3'ü ile yaptım (belirli bir sırada düşünülmedi). Malzeme kesinlikle yoğun, ama çok yardımcı olan öğrendiğim üç ipucu var.

İlk olarak, baştan sona okumaya çalışmayın. TAOCP gerçekten her şey kadar bir referans çalışmasıdır ve çözmeye çalıştığınız bir sorunla ilgili olduğunda bir bölümü okumak en iyisidir. Dünyadaki pek çok şey gibi, çözmeye çalıştıkları sorunlarla karşılaştığınızda çözümleri anlamak çok daha kolaydır.

Daha sonra, kitabın önündeki akış şeması, sadece biraz mizah değil, aslında oldukça yararlı bir ipucu. İlk önce sadece kapsayıcı kavramlarla başlayıp daha sonra yavaşça matematiğin derinliklerine inerek üzerinde çalıştığınız bölümleri tekrarlayın.

Son olarak, bazı eski moda kağıt ve kalem tarif edildiği gibi algoritmalar üzerinde çalışmak için kullanışlı tutun ve birkaç kolay sorun üzerinde çalışmak. Okuduklarınızı yeniden güçlendirmek için uzun bir yol kat ediyor.

12
Cercerilla

Endişelenme, çoğu insan Bilgisayar Programlama Sanatı'nı (TAOCP) anlamıyor. Öyleyse kendinizi yavaş hissetmeyin ya da anlamadığınız için acemi düşünmeyin - tıpkı diğeri gibisiniz % 99.99'unu alamadık.

TAOCP kolaylıkla okuyabileceğiniz seviyeye ulaşmak istiyorsanız oldukça iddialı. Ben sadece kitapları kaldırmadan önce sayfalara girdim. Muhtemelen bu gezegende TAOCP'yi anlayan sadece bir avuç insan var.

Gönderiyi kontrol et: Kitap Programcıları Gerçekten Okumuyor Bill the Lizard.

Orada başka kitaplar listelenen oldukça okunabilir , anlaşılabilir ve hemen faydalanın.

Şahsen beğendim:

10
spong

Bu alıntıyı Bill Gates'ten tökezledim: "Her şeyi okuyabiliyorsan kesinlikle bana bir özgeçmiş göndermelisin." Programlama Sanatı kitaplarından bahsediyordu. Bu yüzden oldukça meraklıydım ve dürüst olmak gerekirse hepsini okumak istiyorum, hiç anlamıyorum .. I'm really not that highly intellectual being .. Anlayamamanın nedeni bu olmalı, ama öğrenmek için sabırsızlanıyorum .. Şu anda temel algo hakkında 1. cilt okuyorum .. Yani orada acemi dostu olan kitaplar var mı?/benim gibi insanları yavaşlatıyor mu? Böylece kendimi kurabilirim ve umarım gelecekte Knuth'un kitabını rahatlıkla okuyabilirim.

kendinizi not a highly intellectual being o zaman kendinizi düşük beklentilere ayarlıyorsunuz. Eğer zahmete değecek bir şey yapmak istiyorsanız, bu zihniyeti kırmalısınız. Aklınızda bir şey başarabileceğinizden şüphe olmamalıdır. Ayrıca, bunu başarmak, kolayca başaracağınız anlamına gelmez.

Takip etmeye değer şeyler zor olanlardır ... ve bu klişe değildir. Yazılımda, mühendislikte, genel olarak hayatta, bir şey elde etmek istiyorsanız, zor olan şeyleri, insanların kaçındıkları şeyleri ve şeylerin en düşük ortak paydalarına razı olmamanız gerekir.

İlk olarak, CS geçmişinizin ne olduğu açık değildir. Knuth'un kitabı bir dereceye kadar olgunluk gerektiriyor. CS derecesine sahip çok az kişi kolaylıkla geçebilir. Algoritmalardaki ilk dersini yeni bitirmiş bir CS öğrencisinin Knuth'un kitabından bir tanesini bile geçebilmesini beklemezdim. Bunu elde etmek için gereken olgunluk sadece orada değildir ve bunun öğrencinin zihinsel kapasitesi ile ilgisi yoktur.

Algoritma temelinizi soğuk ve net bir şekilde almanız gerekir ve kemerinizin altında adil bir miktarda programlama (iş ve/veya skolastik) olması gerekir - söyleyebilirim, en az 40 kredi programlama. Ayrıca CS matematiğinizin sağlam bir zemine sahip olması gerekir.

Ayrık matematik (ve muhtemelen hesaplama teorisi) hakkında iyi bir kavrayışa sahip olmadan ileri gidemezsiniz.

Knuth'un sorunları üzerinde çalışmak için bu bilgiye ihtiyacınız olmayacak, ancak bu tür bir malzemeden geçebilmek için bir olgunluğa ihtiyacınız var.

Önce bir kitap ve sadece bir kitap seçin (daha önce önerildiği gibi CLRS 'kitabı) ve baştan sona çalışın. Mümkünse algoritmaları uygulayan programlar yapın. Java veya C #, hatta C++ kullanmayın. Çıplak kemik C'ye gidin ve çıplak kemik metal hurdalarından bir şeyler inşa etme hissi alın.

Ayrık matematik ve hesaplama teorisinde bir ders yapmadıysanız Knuth'un "Somut Matematik" kitabını da edinin. Bu kitaptan da geçmen iyi olur.

Sonra Knuth ansiklopedisini, bir tome, birer birer bölüm ele alın. Birincisini iyi kavramadan başka bir bölüme gitme.

Önce hacim I'den (temel algoritmalar), daha sonra hacim III'ten (arama ve sıralama) geçmenizi öneririm. Bunlar sizin acil hedefleriniz olmalı. Sonra, daha sonra (çok daha sonra), hacim IV (Kombinatoryal Algoritmalar) ve sonra Cilt II (Yarı Sayısal Algoritmalar) ile mücadele edin.

İlk başta anlamazsan kendini kötü hissetme. Yıllar boyunca (10 yıl) I ve III. Ciltlerden geçmeye çalışıyorum.

Ve ona da çok fazla ağırlık vermemelisin. Birine veya kendinize bir şey kanıtlamak için bunu yapmayın. Bunu yapın çünkü entelektüel olarak bunu yapmakla ilgileniyorsunuz. Sadece CLRS'nin kitabını (veya orada bulunan iyi dereceli kitaplardan herhangi birini) kullanarak algoritmalarda yetkin olabilirsiniz.

Pragmatik ol ve kendine bir mola ver. Knuth'un kitabından geçerek CS materyali olduğunuzu anlamanın bir kanıtı olarak değil, uzun vadeli bir kişisel hırs olarak düşünün;)

Kendinizi öldürmek için başka daha önemli şeyler (kariyer açısından);)

8
luis.espinal

Knuth'a başlamadan önce dört farklı kitapta ilerlemem gerekiyordu. İlk ikisi Algoritmalar hakkında Sedgewick kitapları . Bunlar algoritmaların ve veri yapılarının çoğunu gerçek bir uygulanmış biçimde gözden geçirir, böylece ne olduklarını ve nasıl çalıştıklarını görebilirsiniz. Bu kitaplar farklı dil sürümlerinde gelir - C'deki kitapları okudum, ancak aslında Pascal'da yazılmışlar ve C++ ve Java sürümleri var.

Bundan sonra Cormen kitabının Algoritmalar üzerine iyi bir bölümünü inceledim ve Sedgewick ve Flajolet'in Algoritma Analizine Giriş , Knuth'un matematiksel titizliğinin damarında daha fazla olduğu için ücretsiz bir metin olarak kullandım. Cormen kitabı. Bunlardan herhangi birini henüz bitirmedim, çoğunlukla ihtiyacım olduğunu düşündüğüm parçaları kiraz alıyorum.

Bunları okuduktan ve Matematik bölümünden mezun olduktan sonra bazı TAOCP'yi okuyabilirim, ancak bu zor bir okuma. Bu yararlı olmadığı anlamına gelmez. TAOCP, en büyük algoritma referans kılavuzlarından bazılarıdır, ancak bunları bir şeyi "tamamen" anlamak için kullanabileceğinizi düşünmek biraz sorunludur.

4
Justin Hamilton