it-swarm-eu.dev

Umění počítačového programování - číst nebo číst?

Existuje spousta knih o programování tam a zdá se, že Code Complete je do značné míry na vrcholu seznamu "povinných čtení programovacích knih" většiny lidí, ale co The Art of Computer Programming od Donald Knuth? Jsem zaneprázdněný člověk, mezi prací a mladou rodinou nemám spoustu volného času, takže musím být vybíravý, jak to využívám.

Zajímalo by mě - četl tu někdo 'TAOCP'? Pokud ano, stojí za to si čas přečíst, nebo by nějaká jiná kniha nebo více on-the-side programování, jako jsou pet projekty nebo přispívání k open source, byla lepším využitím mého času, pokud jde o profesní rozvoj?

ODMÍTNUTÍ - Pro ty z vás, kteří sportují trička "Knuth je můj domovský", se mi nedělejte špatně - chci si to přečíst, ale zajímalo by mě, jestli by to mělo být přímo na začátku mého seznamu priorit nebo pokud by něco jiného mělo být na prvním místě.

65
Zann Anderson

TAOCP je naprosto neocenitelným referenčním materiálem pro pochopení toho, jak datové struktury a algoritmy, které používáme každý den, a proč je práce, ale závazek si je přečíst, krytím, by byla mimořádná investice vašeho času.

Jako jeden rodinný muž k druhému strávte čas se svými dětmi.

72
Adam Crossland

Nahraďte ve své otázce „encyklopedii“ za každý odkaz na TAOCP a myslím si, že odpověď by měla být zřejmá. Protože v mnoha ohledech to je TAOCP.

Existuje příběh (možná apokryfní) o setkání Steva Jobse s Knuthem. První věc, kterou mu Jobs řekl, byla: „Je mi potěšením vás seznámit s doktorem Knuthem. Přečetl jsem všechny vaše práce!“. Knuth odpověděl: "Jste plný sraček": http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt

23
Jason Baker

Ne, neměla by být na začátku seznamu priorit. Mám celou sadu a NIKDY jsem nečetl celou věc. Použil jsem (zatím) jako dobrý odkaz na určité problémy (bylo to neocenitelné například v mém chápání náhodnosti a testování náhodných generátorů). Kdykoli přijde téma CS, které nemám opravdu dobře zvládnout, mám sklon chytit relevantní kousek TAOCP jako dobrý krok v mém porozumění.

Pokud se rozhodnete číst to, více síly pro vás, a rozhodně doporučuji vzít to v malých kouscích. Nebojte se přeskočit a nejprve se podívat na to, co je nejzajímavější.

22
Michael Kohne

TOACP je v některých případech nezbytným čtením. V závislosti na tom, co děláte denně, nemusí být váš nejnaléhavější.

Je to jedna z těch knih (dobře, sbírky knih), které je dobré si přečíst na začátku své kariéry, protože vám to opravdu dává dobré poznatky, k nimž byste se normálně nedostali až později, ale není důležité, aby přežití přešlo, dokud neprošlete na tuto část své kariéry, kde nemáte jen kód, si vyberete sadu nástrojů. To je místo, kde opravdu chcete studovat algoritmy, doufejme, že už trochu rozumíte designu jazyků a máte velmi široké pochopení toho, jaké nástroje, jazyky a systémy jsou tam, a jak každý zapadá do ekosystému věcí, které můžete čerpat pro konkrétní projekt.

Jinými slovy: je to učení ve velkém obrazu, takže pokud jste posedlí, jako jsem to četl nyní, pokud nejste, je v pořádku odložit to, dokud nezačnete toužit po žebříku a stát se velkým obrázkem.

9
HedgeMage

Po nedávném provedení tohoto úkolu mohu říci, že způsob, jakým píše, je velmi příjemný a problémy jsou označeny (podle obtížnosti) velmi vhodně. Získejte první svazek a přečtěte si kapitoly 1 a 2 a podívejte se, jak se vám líbí.

6
sova

TAOCP je skvělá práce, ale čtení by pro praktikujícího softwarového vývojáře bylo strašnou časovou investicí. Pokud tak učiníte, budete obětovat pár let (to je, jak dlouho to bude trvat) vašeho profesionálního rozpočtu na zlepšení sebe sama, abyste se toho naučili příliš málo.

Doporučil bych prohlédnout si jednu nebo několik méně „konečných“ knih o algoritmech, moje nejoblíbenější v této oblasti je The Algorithm Design Manual by Steven S. Skiena

Pak, pokud máte pocit, že potřebujete/chcete více přejít na Knuth.

Zároveň si můžete koupit jeden nebo několik svazků TAOCP, prohlédnout si je, abyste pochopili, v jakých oblastech Knuth pokrývá, a uchovat je ve své knihovně pro případ, že byste z nich skutečně potřebovali nějaké informace ve svém každodenním životě. práce. Můj vzdělaný odhad je, že byste to neudělali, a to je další důvod, proč nedoporučuji pokusit se číst. Ale pokud zjistíte, že na ni odkazujete dostatečně často, pak budete vědět, že je dobře stojí za to si jej přečíst.

6
kdubinets

Knuthova klíčová práce je nejoblíbenějším odkazem, který programátoři mají v úmysl číst, nebo číst. Někdy.

6
Steven A. Lowe

+10 k poznámce rodiny/dětí. Snažím se co nejvíce číst, zatímco vytrvám na letech červených očí k zákazníkům.

Ale ... ano, velmi stojí za přečtení. Není důvod číst lineárně, místo toho se sbírat a vybrat několik zajímavých témat.

3
Jé Queue

Nezapomeňte, že na začátku chtěl Knuth napsat něco o tom, jak napsat kompilátor.

Můžete například získat spoustu informací na internetu s wikipedií, ale pokud nejste výzkumník, přečtěte si shrnutí, dostanete spokojenost.

Stále můžete získat první tome, abyste si ho mohli přečíst, když se nudíte ...

3
jokoon

Jsem pevně v táboře lidí, kteří mají pocit, že každý vývojář by měl investovat do získání knih v určitém okamžiku (a nyní je to jednodušší, když to vypadá, že jsou dotisk v brožované brožuře ), ale ze stejného důvodu bych také těžce věřil, že si někdo sadne a přečte je všechny od obálky k obálce.

Nejlepší přístup k nim - pokud nemáte dojíždět do práce, kde máte volný čas na posezení a čtení - je přečíst si jich dost, aby věděli, kde v nich najít věci, a pak si přečíst celou kapitolu, kdykoli budete zjistíte, že je používáte jako referenční k danému problému. S Google a Stack Overflow není běžné hledat referenční knihy, ale v některých případech můžete zjistit, že knihy poskytují určitý náhled, že byste museli poslat nějaký čas navíc hledáním na internetu.

3
rjzii

Pravděpodobně je mnohem důležitější, abyste v knize dělali problémy, než jste si ji právě přečetli. To bude vyžadovat hodně času.

Má rád 4 svazky a 5 fasciklů (ať už jsou cokoli), takže vyplnění knihy by byly pravděpodobně lepší než univerzitní kurz v základech informatiky a udělaly z vás téměř nejlepšího programátora všech dob.

Protože máš mladou rodinu, jako jsem já, dal jsi mi docela dobrý nápad. Knihy bych kupoval jeden po druhém a učil je přes vaše děti.

2
Peter Turner

Pokud chcete změnit svět, přečtěte si jej. Pokud se chcete naučit nové hacky, pak si je nečtěte.

1
veryfoolish

Pokud jste zvědaví, udělejte to, ale trávení trvá nějakou dobu, takže si musíte vzít čas.

Máte dojíždět, kde si můžete přečíst - to by bylo perfektní.


ÚPRAVA: Tento náhled malé části svazku 4 může být zajímavý: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz

(poznámka: komprimovaný postscript)

1
user1249

Není to něco, co si většina lidí bude chtít sednout a přečíst si obálky, ne. Je to neuvěřitelně neocenitelný odkaz a určitě je dobré si ho vyzvednout, vybrat zajímavou sekci, přečíst si ji a udělat několik cvičení. Ale výše uvedená encyklopedická srovnání jsou docela vhodná ... je to velká, rozsáhlá a podrobná. A některé z „cvičení“ jsou výzkumné problémy, které mohou trvat roky, než se vyřeší.

Pokud chcete pouze lepší znalosti algoritmů nízké úrovně, může být lepší začít s knihami Roberta Sedgewicka (např. „Algoritmy v C“, „Algoritmy v Javě“ atd.).

1
mindcrime

Knuthův TAOCP je mistrovským dílem. Ale stejně jako jakékoli mistrovské dílo (jako „Illiad“, „Válka a mír“ nebo Proustovo „Hledání ztraceného času“), to není pro každého ani pro všechny.

Kniha je velmi dobře napsaná a velmi dobře prozkoumaná. Problémy jsou velké a vysvětlení algoritmů je dobře provedeno.

Velkým problémem knihy je skutečnost, že Knuth ukazuje kód pro smyšlený jazyk shromáždění pro smyšlený počítač. Chápu, proč to udělal, ale faktem je, že to naštve.

Doporučuji tuto knihu použít jako bible. Když to potřebujete, hledejte to. Odpověď najdete. Stalo se mi to více než jednou!

1
Eduardo