Istnieje wiele książek na temat programowania i wygląda na to, że Code Complete znajduje się na szczycie listy „obowiązkowych książek programistycznych” większości ludzi, ale co z The Art of Computer Programming Donalda Knutha? Jestem zajętą osobą, między pracą a młodą rodziną. Nie mam dużo wolnego czasu, więc muszę być wybredny, jeśli chodzi o sposób, w jaki go wykorzystuję.
Zastanawiam się - czy ktoś tu czyta „TAOCP”? Jeśli tak, to czy warto poświęcić czas na lekturę, czy może jakaś inna książka lub programowanie na boku, takie jak projekty dla zwierząt, czy wkład w otwarte oprogramowanie byłoby lepszym wykorzystaniem mojego czasu w zakresie rozwoju zawodowego?
OŚWIADCZENIE - Dla tych z was, którzy uprawiają koszulki „Knuth jest moim domowym chłopcem”, nie zrozumcie mnie źle - chcę to przeczytać, ale zastanawiam się, czy powinno znaleźć się na szczycie mojej listy priorytetów lub jeśli coś innego powinno być na pierwszym miejscu.
Odpowiedzi:
TAOCP jest absolutnie nieocenionym źródłem informacji dla zrozumienia, w jaki sposób struktury danych i algorytmy, których używamy na co dzień, i dlaczego praca, ale zobowiązanie się do przeczytania jej od początku do końca byłoby niezwykłą inwestycją twojego czasu.
Jako jeden człowiek w rodzinie spędzaj czas ze swoimi dziećmi.
źródło
Zastąp „encyklopedię” w swoim pytaniu każdym odniesieniem do TAOCP i myślę, że odpowiedź powinna być oczywista. Ponieważ pod wieloma względami taki właśnie jest TAOCP.
Jest historia (prawdopodobnie apokryficzna) o tym, jak Steve Jobs spotyka Knutha. Pierwszą rzeczą, którą powiedział mu Jobs, było: „Miło mi cię poznać, doktorze Knuth. Przeczytałem wszystkie twoje prace!”. Odpowiedź Knutha brzmiała: „Jesteś pełen gówna”: http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt
źródło
Nie, nie powinien znajdować się na szczycie listy priorytetów. Mam pełny zestaw i NIE przeczytałem całości. Użyłem go (jak dotąd) jako dobrego odniesienia do niektórych problemów (na przykład było to nieocenione w moim zrozumieniu losowości i testowaniu losowych generatorów). Za każdym razem, gdy pojawia się temat CS, na który nie mam NAPRAWDĘ dobrego rozumowania, staram się chwytać odpowiednią część TAOCP jako dobry krok w moim zrozumieniu.
Jeśli zdecydujesz się go przeczytać, zyskasz więcej mocy i zdecydowanie zalecam przyjmowanie go w małych kawałkach. Nie bój się przeskakiwać i patrzeć na to, co jest najbardziej interesujące.
źródło
TOACP jest niezbędną lekturą - w pewnym momencie. W zależności od tego, co robisz codziennie, może nie być to najpilniejsze.
Jest to jedna z tych książek (cóż, zbiory książek), którą warto czytać na początku swojej kariery, ponieważ naprawdę daje dobre spostrzeżenia, do których zwykle nie dotarłbyś później, ale przetrwanie do momentu ukończenia tej części nie jest konieczne. swojej kariery, w której nie tylko kodujesz, wybierasz zestaw narzędzi. To jest miejsce, w którym naprawdę chcesz studiować algorytmy, mam nadzieję, że już trochę rozumiesz projektowanie języka i masz bardzo szerokie zrozumienie, jakie narzędzia, języki i systemy są dostępne i jak każdy z nich pasuje do ekosystemu rzeczy, które możesz skorzystaj z konkretnego projektu.
Innymi słowy: uczenie się na dużym obrazie, więc jeśli masz obsesję, tak jak ja, przeczytaj ją teraz, jeśli nie, możesz odłożyć to na później, aż zaczniesz tęsknić za przejściem po drabinie i zostaniem facetem od dużych zdjęć.
źródło
Po podjęciu tego właśnie zadania mogę powiedzieć, że sposób, w jaki pisze, jest bardzo przyjemny, a problemy są odpowiednio (w zależności od trudności) oznaczane. Zdobądź pierwszy tom i przeczytaj rozdziały 1 i 2 i zobacz, jak ci się podoba.
źródło
TAOCP to świetna praca, ale czytanie jej byłoby straszną inwestycją czasową dla praktykującego programisty. Jeśli to zrobisz, poświęcisz kilka lat (tyle to zajmie) swojego budżetu na samodoskonalenie, aby dowiedzieć się zbyt wiele o zbyt małej ilości.
Poleciłbym przejrzeć jedną lub kilka mniej „ostatecznych” książek o algorytmach, moim ulubionym w tej dziedzinie jest Podręcznik projektowania algorytmów autorstwa Stevena S. Skieny
Jeśli czujesz, że potrzebujesz / chcesz więcej, przejdź do Knutha.
W tym samym czasie możesz kupić jeden lub kilka tomów TAOCP, przejrzyj je, aby zrozumieć, jakie obszary obejmuje Knuth, i przechowuj je w bibliotece na wypadek, gdybyś potrzebował z niego pewnych informacji w codziennym życiu praca. Moje wykształcone przypuszczenie jest takie, że nie zrobiłbyś tego i jest to kolejny powód, dla którego nie radzę próbować czytać. Ale jeśli będziesz odnosić się do niego wystarczająco często, będziesz wiedział, że warto poświęcić czas na przeczytanie go od deski do deski.
źródło
Przełomowa praca Knutha jest najpopularniejszym odniesieniem, które programiści zamierzają przeczytać lub zakończyć. Pewnego dnia.
źródło
+10 za komentarz rodziny / dzieci. Staram się czytać najczęściej, jednocześnie znosząc loty do czerwonych oczu do klientów.
Ale ... tak, bardzo warte przeczytania. Nie ma powodu, aby czytać liniowo, zamiast tego przejrzeć i wybrać kilka interesujących tematów.
źródło
Jestem mocno w obozie ludzi, którzy uważają, że każdy programista powinien w pewnym momencie zainwestować w zdobycie książek (a teraz staje się łatwiejsze, gdy wygląda na to, że są drukowane w miękkiej oprawie ), ale z tego samego powodu, chciałbym trudno też uwierzyć, że ktoś usiądzie i przeczyta je wszystkie od deski do deski.
Najlepszym podejściem do nich - jeśli nie masz dojazdów do pracy, gdzie masz wolny czas, aby usiąść i czytać - jest przeczytanie wystarczającej liczby z nich, aby wiedzieć, gdzie je znaleźć, a następnie przeczytanie pełnego rozdziału, gdy tylko będziesz znajdź je jako podręczniki dla danego problemu. W przypadku Google i Stack Overflow sięganie po książki referencyjne nie jest tak powszechne, ale w niektórych przypadkach może się okazać, że książki dają pewien wgląd, że trzeba będzie poświęcić więcej czasu na poszukiwanie w Internecie.
źródło
Nie zapominaj, że na początku Knuth chciał napisać coś o tym, jak napisać kompilator.
Na przykład możesz uzyskać wiele informacji w sieci na przykład z wikipedii, ale jeśli nie jesteś badaczem, po prostu przeczytaj podsumowanie, otrzymasz satysfakcję.
Pierwszy tom wciąż możesz zdobyć, żebyś mógł go przeczytać, gdy się nudzisz ...
źródło
Prawdopodobnie ważniejsze jest, abyś robił takie problemy w książce niż tylko ją czytał. To zajmie dużo czasu.
Ma nawet 4 tomy i 5 fascynujących (cokolwiek to jest), więc ukończenie książek byłoby prawdopodobnie lepsze niż kurs uniwersytecki z podstaw informatyki i uczyni cię prawie najlepszym programistą.
Ponieważ masz młodą rodzinę, taką jak ja, dałeś mi całkiem niezły pomysł. Kupowałbym książki pojedynczo i uczyłem je dzieciom.
źródło
Jeśli jesteś ciekawy, zrób to, ale trawienie zajmuje sporo czasu, więc nie spiesz się.
Czy masz dojazdy do pracy, w których możesz czytać - byłoby idealnie.
EDYCJA: Ten podgląd niewielkiej części tomu 4 może Cię zainteresować: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz
(uwaga: skompresowany PostScript)
źródło
To nie jest coś, co większość ludzi będzie chciała usiąść i czytać od deski do deski, nie. Jest to niezwykle nieocenione odniesienie iz pewnością dobrze jest go podnieść, wybrać interesującą sekcję, przeczytać ją i wykonać kilka ćwiczeń. Ale porównania encyklopedii wykonane powyżej są dość trafne ... są duże, obszerne i szczegółowe. Niektóre „ćwiczenia” to problemy badawcze, których rozwiązanie może zająć lata.
Jeśli chcesz tylko lepiej poznać algorytmy niskiego poziomu, lepiej zacząć od książek Roberta Sedgewicka (np. „Algorytmy w C”, „Algorytmy w Javie” itp.).
źródło
Jeśli chcesz zmienić świat, przeczytaj go. Jeśli chcesz nauczyć się nowych hacków, nie czytaj tego.
źródło
TAOCP Knutha to arcydzieło. Ale, podobnie jak każde arcydzieło (takie jak „Illiad”, „Wojna i pokój” lub „W poszukiwaniu straconego czasu” Prousta), nie jest ono przeznaczone dla wszystkich ani na cały czas.
Książka jest bardzo dobrze napisana i bardzo dobrze zbadana. Problemy są świetne, a wyjaśnienie algorytmów jest dobrze zrobione.
Ogromnym problemem tej książki jest to, że Knuth pokazuje kod fikcyjnego języka asemblerowego dla fikcyjnego komputera. Rozumiem, dlaczego to zrobił, ale faktem jest, że jest do bani.
Polecam używać tej książki jako Biblii. W razie potrzeby poszukaj. Znajdziesz odpowiedź. Zdarzyło mi się to nie raz!
źródło