Orada programlama hakkında birçok kitap var ve Kod Komple çoğu insanın "okunması gereken programlama kitapları" listesinin en üstünde, ama Bilgisayar Programlama Sanatı tarafından görünüyor Donald Knuth? Ben meşgul bir insanım, iş ve genç bir aile arasında bir ton boş vaktim yok, bu yüzden nasıl kullandığım konusunda seçici olmalıyım.
Merak ediyorum - burada kimse 'TAOCP' okudu mu? Eğer öyleyse, okumak için zaman ayırmaya değer mi yoksa evcil hayvan projeleri gibi başka bir kitap veya daha fazla yan programlama veya açık kaynağa katkıda bulunmak, zamanımı mesleki gelişim açısından daha iyi kullanmak mı?
YASAL UYARI - "Knuth benim homeboy" t-shirt spor olanlar için, beni yanlış anlamayın - okumak istiyorum, ama sadece öncelik listemin en üstünde olması gerekip gerekmediğini merak ediyorum önce başka bir şey gelmeli.
TAOCP, her gün kullandığımız veri yapılarının ve algoritmaların nasıl çalıştığını ve neden çalıştığını, ancak onu örtbas olarak okumayı taahhüt etmenin zamanınızın olağanüstü bir yatırımı olacağını anlamak için tamamen paha biçilmez bir referanstır.
Bir aile babası olarak diğerine, çocuklarınızla zaman geçirin.
TAOCP'ye yapılan her atıf için sorunuzda "ansiklopedi" kullanın ve cevabın açık olması gerektiğini düşünüyorum. Çünkü pek çok açıdan, TAOCP budur.
Steve Jobs'la Knuth'la tanışma hakkında (muhtemelen kıyamet) bir hikaye var. Jobs'un ona söylediği ilk şey, "Sizinle tanışmak bir zevkti Dr. Knuth. Tüm çalışmalarınızı okudum!" İdi. Knuth'un yanıtı "Bok dolusun" idi: http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt
Hayır, öncelik listenizin üstünde olmamalıdır. Tam bir setim var ve her şeyi okumadım. (Şimdiye kadar) bazı problemler için iyi bir referans olarak kullandım (örneğin, rasgelelik anlayışım ve rasgele jeneratörlerin test edilmesinde paha biçilmezdi). Ne zaman gerçekten iyi bir ele sahip olmadığım bir CS konusu ortaya çıkarsa, TAOCP'nin ilgili parçasını anlayışımda iyi bir adım olarak yakalama eğilimindeyim.
Eğer okumaya karar verirseniz, size daha fazla güç veririm ve kesinlikle küçük parçalar halinde almanızı tavsiye ederim. Önce atlamaktan ve en ilginç olana bakmaktan korkmayın.
TOACP önemli bir okuma - bir noktada. Günlük olarak ne yaptığınıza bağlı olarak, en acil olanınız olmayabilir.
Kariyerinizin başında okumak için iyi olan bu kitaplardan biri (kitap koleksiyonları), çünkü normalde daha sonraya kadar elde edemeyeceğiniz iyi bilgiler veriyor, ancak o bölüme geçene kadar hayatta kalmak şart değil sadece kodlamadığınız kariyerinizin araç kutusunu seçersiniz. Gerçekten algoritmaları incelemek, umarım zaten dil tasarımını biraz anlamak ve orada hangi araçların, dillerin ve sistemlerin olduğunu ve her birinin yapabileceğiniz şeylerin ekosistemine nasıl uyduğunu çok geniş bir şekilde anlamak istediğiniz nokta budur. belirli bir projeye devam etmek.
Başka bir deyişle: bu büyük resim öğrenme, bu yüzden şimdi okuduğum gibi takıntılıysanız, değilseniz, merdivenden yukarı çıkıp büyük bir resim adamı olmak için özlem duymaya başlayana kadar ertelemek uygundur.
Son zamanlarda bu görevi üstlendikten sonra, yazma tarzının çok eğlenceli olduğunu ve problemlerin (zorluğa göre) çok uygun bir şekilde etiketlendiğini söyleyebilirim. İlk cildi alın ve bölüm 1 ve 2'yi okuyun ve nasıl sevdiğinizi görün.
TAOCP harika bir çalışma, ancak bunu okumak pratik bir yazılım geliştiricisi için korkunç bir zaman yatırımı olacak. Bunu yaparsanız, çok az şey hakkında çok fazla bilgi edinmek için profesyonel kendini geliştirme bütçenizden birkaç yıl (bu ne kadar zaman alacaktır) feda edeceksiniz.
Algoritmalar hakkında bir veya birkaç "nihai" kitap üzerinde çalışmanızı tavsiye ederim, bu alandaki favorim Steven S. Skiena tarafından Algoritma Tasarım Kılavuz
O zaman Knuth'a daha fazla hareket etmek/ihtiyaç duymak istediğinizi düşünüyorsanız.
Aynı zamanda bir veya birkaç cilt TAOCP satın alabilir, Knuth'un hangi alanları kapladığını anlamak için araştırın ve günlük hayatınızda gerçekten bazı bilgilere ihtiyacınız olması durumunda kütüphanenizde saklayın. iş. Benim eğitimli tahminim, okumayacağınızı ve okumaya çalışmayı önermememin bir başka nedeni. Ancak, kendinizi yeterince sık referans alarak bulursanız, o zaman örtbas etmek için okumak için zaman ayırmaya değer olduğunu bileceksiniz.
Knuth'un seminal çalışması, programcıların okumayı veya okumayı bitirmesi için en popüler referanstır niyetinde. Bir gün.
Aile/çocuk yorumu +10. Müşterilere kırmızı göz uçuşları yaparken en çok okumaya çalışıyorum.
Ama ... evet, okumaya değer. Doğrusal okumak için bir neden yok, bunun yerine gözden geçirin ve birkaç ilgi konusu seçin.
Unutmayın, Knuth başlangıçta derleyicinin nasıl yazılacağı hakkında bir şeyler yazmak istedi.
Örneğin wikipedia ile internette çok fazla bilgi edinebilirsiniz, ancak bir çeşit araştırmacı değilseniz, sadece özeti okuyun, memnuniyet elde edersiniz.
Yine de sıkıldığınızda okuyabilmeniz için ilk tome'yi alabilirsiniz ...
Her geliştiricinin kitapları bir noktada almak için yatırım yapması gerektiğini hisseden millet kampındayım (ve şimdi basıyorlar gibi görünüyor artık kolaylaşıyor ciltsiz kitapta basılmış ) ama aynı şekilde, birinin oturup hepsinin kapaktan örtüye okuyacağına inanmak da zor olurdu.
Onlara en iyi yaklaşım - oturmak ve okumak için boş zamanınız olan bir işe gidip gelme noktanız yoksa - içinde bir şeyler nerede bulabileceklerini bilmeleri için yeterince okumak ve daha sonra hiç bir zaman tam bir bölüm okumaktır. belirli bir sorun için bunları referans kitapları olarak kullandığınızı bulun. Google ve Stack Overflow ile referans kitaplara ulaşmak yaygın değildir, ancak bazı durumlarda kitapların internette aramaya biraz zaman ayırmanız gerektiği konusunda bazı bilgiler sağladığını görebilirsiniz.
Muhtemelen kitaptaki problemleri okumanızdan daha önemlidir. Bu çok zaman alacak.
4 cilt ve 5 fasikülü (ne olursa olsun) beğenecek kadar tamamlanıyor kitaplar muhtemelen bilgisayar biliminin temellerindeki bir üniversite dersinden daha iyi olacak ve sizi neredeyse en iyi programcı yapacak.
Benim gibi genç bir aileniz olduğu için bana oldukça güzel bir fikir verdiniz. Kitapları teker teker alıp onlara çocuklarınıza öğretirdim.
Dünyayı değiştirmek istiyorsanız, o zaman okuyun. Yeni kesmek öğrenmek istiyorsanız, onu okumayın.
Merak ediyorsanız, yapın, ancak sindirmek oldukça zaman alır, bu yüzden acele etmeyin.
Okuyabileceğiniz bir işe gidip gelme noktanız var mı - bu mükemmel olurdu.
DÜZENLEME: Cilt 4'ün küçük bir bölümünün bu önizlemesini ilginç bulabilirsiniz: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz
(not: sıkıştırılmış postscript)
Çoğu insanın oturup kapaktan okumak isteyeceği bir şey değil, hayır. İnanılmaz derecede değerli bir referanstır ve kesinlikle almak, ilginç bir bölüm seçmek, okumak ve bazı alıştırmalar yapmak kesinlikle iyidir. Ancak yukarıda yapılan ansiklopedi karşılaştırmaları oldukça uygundur ... büyük, geniş ve ayrıntılıdır. Ve bazı "alıştırmalar" çözülmesi yıllar alabilen araştırma problemleridir.
Sadece düşük seviyeli algoritmalar hakkında daha iyi bir bilgi edinmek istiyorsanız, Robert Sedgewick kitapları ile başlamak daha iyi olabilir (örneğin, "C'de Algoritmalar", "Java'da Algoritmalar" vb.).
Knuth'un TAOCP bir başyapıtı. Ancak, tıpkı herhangi bir şaheser gibi ("İlliad", "Savaş ve Barış" veya Proust'un "Kayıp Zamanın Arayışı" gibi), bu herkes ya da ev zamanları için değildir.
Kitap çok iyi yazılmış ve çok iyi araştırılmış. Sorunlar harika ve algoritmaların açıklaması iyi yapılmış.
Kitabın en büyük sorunu, Knuth'un kurgusal bir bilgisayar için kurgusal bir Montaj dili için kod göstermesidir. Neden yaptığını anlıyorum, ama gerçek şu ki berbat.
Bu kitabı İncil olarak kullanmanızı tavsiye ederim. İhtiyaç duyduğunuzda arayın. Cevabı bulacaksınız. Bana bir kereden fazla oldu!