Bilgisayar Programlama Sanatı - Okumak veya Okumamak? [kapalı]


63

Dışarıda programlama hakkında birçok kitap var ve Kod Tamamlandı, çoğu insanın "okuması gereken programlama kitapları" listesinin başında geliyor ama peki Donald Knuth'un Bilgisayar Programcılığı Sanatı nedir? Yoğun bir insanım, iş ve genç bir aile arasında tonla boş vaktim yok, bu yüzden nasıl kullandığım konusunda seçici olmalıyım.

Merak ediyorum - burada 'TAOCP' yazan kimse var mı? Eğer öyleyse, okumak için zaman ayırmaya değer mi yoksa evde beslenen hayvan projeleri gibi başka bir kitapta ya da başka bir programda programlama yapmak veya açık kaynağa katkıda bulunmak zamanımı mesleki gelişim açısından daha iyi kullanıyor mu?

YASAL UYARI - Spor yapanlar için "Knuth benim hobim" tişörtü, yanlış anlamayın - Okumak istiyorum, ama sadece öncelikli listemin en üstünde mi olması gerektiğini merak ediyorum. önce başka bir şey gelmeli.


Okumak istiyorum ama cehennem kadar pahalı, bu yüzden üniversiteyi bitirip bir miktar para kazanmaya başladığımda alacağım. Ayrıca, büyük bir kitaplığa ihtiyacım var.
gablin

Sayfa 3'e yaptım ve köpeğe kulakladım. Seti 6 ay sonra Amazon'da sattı.
kirk.burleson

Yanıtlar:


72

TAOCP, her gün kullandığımız veri yapılarının ve algoritmaların nasıl çalıştığını ve çalışmanın neden işe yaradığını, ancak onu kapatacak şekilde okumayı üstlenmenin 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ğer çocuklar ile zaman geçirirsiniz.


34
Çocuklar için +1 - bilgisayarlar herkesin bildiği gibi beklemek için iyidir. Daha yaşlı olanları bekleyebilirler.

3
Çocuklar için +1, kitabı hayatınızın herhangi bir zamanında okuyabilecekken, 4 yaşında çocuğunuzla sadece 1 yıl oynayabileceksiniz. Ve 5 yaşındaki çocuğunuzla da sadece 1 yıl ...

3
Mükemmel cevap. Bizi daha iyi programcılar yapan bir sürü şey var ama zamanımızı nereye harcayacağımız konusunda akıllı olmalıyız ve aynı zamanda yaşam için harika bir programcı olmaktan daha fazlası olduğunu hatırlamalıyız.
Jon Hopkins,

5
Henüz çocuğum yok ve ölmeden önce okumayı bitirmek istiyorum. Çocuğum olmaz mı?
battı

1
@sank bir programcı gibi düşünüyorsun ... :)
Angelin Nadar

23

TAOCP'ye yapılan her referans için sorunuzdaki "ansiklopedi" yi değiştirin ve cevabın açık olması gerektiğini düşünüyorum. Çünkü birçok bakımdan, TAOCP budur.

Steve Jobs toplantısı Knuth ile ilgili (muhtemelen apocryphal) bir hikaye var. Jobs'un kendisine söylediği ilk şey "Sizinle tanıştığıma memnun oldum Dr. Knuth. Tüm çalışmalarınızı okudum!" Knuth'un cevabı "Sen tam bir bok dolusun" idi: http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt


1
Ansiklopedinin içinde çok fazla şey vardır, çoğunlukla ilgi çekici olmayan veya ilgi alanı geniş olan insanlarla alakalı değil. TAOCP'nin içeriği, en azından herhangi bir yazılım geliştiricisiyle ilgilidir.
David Thornley

4
Re: İşler hikaye: O olduğu bir uydurma hikaye. Knuth, Randall Munroe'nin Google teknoloji konuşmasında olduğu kadar çok şey söyledi.
greyfade,

4
Yine de “hikaye” beni gülümsettirdi. :)
MetalMikester

Knuth'un mizahını doğrulayabilirim. Yayınlanan adresine bir e-posta gönderdim. Cevap vermesine şaşırdım. Yanıtı, e-postamın işaretli bir kopyasıydı, kibarca TAOCP'daki bölümün kalanını okumamı istedi. E-posta imzam, aptal bir MO politikacısı hakkında bir açıklama yaptığı Missouri (göster bana) 'dan ibarettir. Daha sonra "Şaka yapıyorum, beni Schwarzenegger için suçlama" diyerek son buldu.
dbasnett

21

Hayır, öncelik listenizin başında olmamalı. Tam setim var ve hepsini okumadım. Bunu (şimdiye kadar) belirli sorunlara iyi bir referans olarak kullandım (örneğin, rastgelelik anlayışımı ve rastgele üreticilerin test edilmesinde paha biçilmezdi). GERÇEKTEN iyi bir tutuşa sahip olmadığım bir CS konusu ortaya çıktığında, anladığım kadarıyla TAOCP'un ilgili bitini yakalama eğilimindeyim.

Okumaya karar verirsen, sana daha fazla güç verir ve kesinlikle küçük parçalarla almanı öneririm. Atlamaktan ve ilk olarak en ilginç olana bakmaktan korkmayın.


1
Kafasına çiviyi çarptın.
kirk.burleson

9

TOACP önemli bir okumadır - bir noktada. Günlük ne yaptığınıza bağlı olarak, en acil olanınız olmayabilir.

Kariyerinizin başlarında okumak için iyi olan bu kitaplardan biri (kitap koleksiyonları), çünkü normalde daha sonraya kadar elde edemeyeceğinize dair gerçekten iyi bir fikir veriyor, ancak bu bölümden mezun olana kadar hayatta kalmak için gerekli değil. kariyerinizi sadece kodlamadığınız, araç kutusunu seçersiniz. Algoritmaları gerçekten incelemek, dil tasarımını biraz önceden anlamak ve umarım hangi araçların, dillerin ve sistemlerin orada olduğunu ve her birinin neler ekosistemine uyduğunu çok geniş bir anlayışa sahip olmak istediğiniz nokta budur. belirli bir proje için çizmek.

Başka bir deyişle: bu büyük resmi öğrenme, bu yüzden şimdi okuduğum gibi benim için takıntılıysanız, eğer değilseniz, merdiveni yukarı çekerek büyük bir resim adamı olmak için can atmaya başlayıncaya kadar ertelemek tamam olur.


6

Son zamanlarda bu görevi üstlendikten sonra, yazma biçiminin çok zevkli olduğunu ve sorunların (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 hoşunuza gittiğini görün.


6

TAOCP harika bir çalışmadır, ancak onu okumak, pratik bir yazılım geliştiricisi için korkunç bir zaman yatırımı olacaktır. Bunu yaparsanız, çok az şey hakkında çok fazla şey öğrenmek için mesleki gelişim bütçenizden birkaç yıl (bu ne kadar sürer) ödün vereceksiniz.

Algoritmalar hakkındaki bir veya daha az "nihai" kitap üzerinden çalışmanızı tavsiye ederim, bu alanda favorim Steven S. Skiena'nın Algoritma Tasarım El Kitabı.

O zaman daha fazla ihtiyaç duyduğunuzu / istediğinizi düşünüyorsanız, Knuth'a gidin.

Aynı zamanda bir veya birkaç birim TAOCP satın alabilir, Knuth'un hangi alanları kapsadığını anlamak için bir göz atabilir ve gerçekte gününüzden biraz bilgiye ihtiyaç duymanız durumunda kitaplığınızda saklayabilirsiniz. iş. Eğitimli tahminim, yapmamanız ve bu yüzden okumaya çalışmama tavsiyesinde bulunmamamın başka bir nedeni. Ancak, kendinizi yeterince sık atıfta bulursanız, o zaman kapak örtüsünü okumak için zamanınızın değeceğini anlarsınız.


6

Knuth'un dönemsel çalışması, programcıların okumayı veya okumayı bitirmeyi planladığı en popüler referanstır . Bir gün.


2
Programcılar için Hawking'in "Kısa Bir Tarihçesi" gibi.
Jon Hopkins,

1
Bit ben yaptım ABHIT okundu. Hawking radyasyonu bana tuhaf geliyor. Bir kara delik küçülür, çünkü içine daha fazla şey girer. Kütlenin korunmasını ve her biri sanal çiftin yapamayacağı bir araya gelebilecek şeylerin iki yarısını alıyorum, ama fikir hala çok garip.
Steve314

@ Steve314: daha da kötüsü, çok küçük kara deliklerin şiddetle patlaması. Teorik olarak.
Steven A. Lowe

2
ABHOT Kısa ve genel halk için tasarlanmıştır. TAOCP bunların hiçbiri değil.
Sean McMillan

3

Aile / çocuk hakkında +10 yorumu. Müşterilere yapılan kırmızı göz uçuşlarına dayanırken en çok okumaya çalışıyorum.

Ama ... evet, okunmaya çok değer. Doğrusal olarak okumak için bir sebep yok, bunun yerine kaybolarak birkaç ilgi konusu seçin.


3

Her geliştiricinin, kitapları bir noktada almak için yatırım yapması gerektiğini düşünen millet kampındayım (ve artık ciltsiz olarak yeniden basılıyormuş gibi göründüğü için artık daha kolay hale geliyor ), ancak aynı şekilde, Ayrıca birisinin oturup kapağından hepsini okuyacağına inanmak için baskı yapmak zor.

Onlara en iyi yaklaşım - oturup boş zamanınızın olduğu yerde çalışmak için işe gidip gelmediğiniz takdirde - içlerinde bir şeyler bulabileceklerini bilecek kadar okumak ve ne zaman isterseniz tam bir bölümü okumaktır. Kendinizi verilen bir problem için bunları referans kitapları olarak kullanırken bulabilirsiniz. Google ve Yığın Taşması ile referans kitaplara ulaşmak pek yaygın değildir, ancak bazı durumlarda kitapların internete bakmak için fazladan zaman ayırmanız gerektiğine dair bir fikir verdiğini görebilirsiniz.


1
Dolu bir bölüm okudunuz mu? Bu yaklaşık yarım birim ve küçük hacimler değil. Bence daha küçük bir metin birimi anlamına gelebilir.
David Thornley

3

Unutma, başlangıçta, Knuth nasıl derleyici yazılacağı hakkında bir şeyler yazmak istedi.

Örneğin, wikipedia ile internette birçok bilgi edinebilirsiniz, ancak bir tür araştırmacı değilseniz, sadece özeti okuyun, memnuniyet elde edersiniz.

Hala ilk tome alabilirsin, ama sıkıldığın zaman okuyabilirsin ...


2

Muhtemelen bu problemleri kitapta okumanızdan daha önemlidir. Bu çok zaman gerektirecek.

4 cilt ve 5 fasikülden (her ne olursa olsun) hoşlanır, bu yüzden kitapları tamamlamak bilgisayar bilimlerindeki temel bir üniversite dersinden daha iyi olur ve sizi neredeyse en iyi programcı yapar.

Benim gibi genç bir ailen olduğu için, bana çok güzel bir fikir verdin. Kitapları birer birer satın alır ve onlara çocuklarına öğretirdim.


1
"yani kitapları tamamlamak muhtemelen bir üniversite kursundan daha iyi olurdu" - 1-3 ünitelerinden bazıları CS derecemi aldığımda birkaç derste ders kitabı olarak kullanıldı ve bir dersin tamamını hacimlerin sadece yarısına harcayacağız. Örneğin, "Cilt 3 Sıralama ve Arama" iki ayrı ders olarak öğretildi.
tcrosley

2
Küçük nokta, ancak şu anda dördüncü olan sadece üç yayınlanmış cilt var. Fasiküller dördüncü cildin ne olacağının bir ön baskısıdır. www-cs-faculty.stanford.edu/~uno/taocp.html
rjzii

1

Merak ediyorsanız, o zaman yapın, ama hazmı biraz zaman alır, bu yüzden zamanınızı ayırmanız gerekir.

Okuyabileceğiniz bir yer var mı - mükemmel olurdu.


EDIT: Bu Cilt 4'ün küçük bir kısmının önizlemesini ilginç bulabilirsiniz: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz

(not: sıkıştırılmış postscript)


1
Ne yazık ki (bu durumda - aksi takdirde ÇOK şanslı) Telekomünikasyondayım, bu bir seçenek değil.
Zannjaminderson

1

Bu, çoğu insanın oturup baştan sona okumak isteyeceği bir şey değil, hayır. Bu inanılmaz derecede paha biçilemez bir referans ve kesinlikle almak, ilginç bir bölüm seçmek, okumak ve biraz alıştırma yapmak iyi. Ama yukarıda yapılan ansiklopedi karşılaştırmaları oldukça uygun ... büyük, kapsamlı ve ayrıntılı. Ve bazı "alıştırmalar" çözülmesi yıllar sürebilen araştırma problemleridir.

Sadece düşük seviyeli algoritmalar hakkında daha iyi bilgi edinmek istiyorsanız, Robert Sedgewick kitaplarına (örneğin, "C'deki Algoritmalar," "Java'daki Algoritmalar", vb.) Başlamak daha iyi olabilir.


1

Eğer dünyayı değiştirmek istiyorsan, oku. Yeni kesmek öğrenmek istiyorsan, okuma.


1

Knuth's TAOCP bir şaheserdir. Ancak, tıpkı herhangi bir şaheser ("İlliad", "Savaş ve Barış" veya Proust'un "Kayıp Zamanın Araştırılması" gibi) gibi, herkes için değil, kötü muamele için de.

Kitap çok iyi yazılmış ve çok iyi araştırılmış. Sorunlar harika ve algoritmaların açıklaması oldukça iyi.

Kitabın en büyük sorunu, Knuth'un kurgusal bir bilgisayar için kurgusal bir derleme 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. İhtiyacınız olduğunda, onu arayın. Cevabı bulacaksınız. Bana bir kereden fazla oldu!


3
Fiili assembler'ı IBM360 veya PDP8 için kullanmış olsaydı yardımcı olur mu?
Martin Beckett

1
Bu 50 yıla kurgusal olmayan bir meclis diliyle asla dayanamazdı. Herkesi eşit bir dezavantaja düşürür!
kullanıcı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.