it-swarm-eu.dev

Jsem studentem CS a upřímně, nerozumím Knuthovým knihám

Narazil jsem na tento citát od Billa Gatese: „Měl bys mi určitě poslat životopis, pokud dokážeš celou věc přečíst.“ Mluvil o knihách The Art of Programming. Byl jsem docela zvědavý a chci to všechno přečíst. Ale upřímně, nerozumím tomu.

Opravdu nejsem tak intelektuální. Proto by to měl být důvod, proč tomu nerozumím, ale rád se učím. V současné době čtu svazek 1 o základních algoritmech. Existují nějaké knihy, které jsou přátelské pro nováčky/pomalé lidi, jako jsem já, které by pomohly vybudovat moje znalosti, abych mohl v budoucnu snadno přečíst Knuthovu knihu?

52
Rho

Dokonce si myslím, že Knuthova kniha je trochu pokročilá a těžko pochopitelná. Tyto knihy jsou rozhodně pro algoritmy na úrovni výzkumu IMHO.

Jsou tedy nějaké knihy, které jsou přátelské pro nováčky/pomalé lidi jako já?

Úvod do algoritmů CLRS je mnohem jednodušší.

[~ # ~] upravit [~ # ~] :

Přesto pokud chcete číst Knuthovu knihu, měli byste nejprve projít betonová matematika . Knuth chce, aby jeho studenti věděli o základní matematické části analýzy algoritmů.

39
Prasoon Saurav

Nezapomeňte si přečíst všechny Gatesovy nabídky včetně tohoto:

"Trvalo mi neuvěřitelnou disciplínu a několik měsíců, než jsem si ji přečetl. Studoval jsem 20 stránek, odložil je na týden a vrátil se na dalších 20 stránek. Pokud je někdo tak drzý, že si myslí, že vědí všechno, Knuth bude pomozte jim pochopit, že svět je hluboký a komplikovaný. ““

Nejedná se o snadné knihy a nejsou zamýšleny. Pamatujte, že jedním z Knuthových cílů bylo přinést matematickou přísnost do počítačové vědy . To je skvělé, pokud chcete prokázat něco o algoritmu, ale ne tak skvělé, pokud chcete vědět, jak to funguje.

Michael Dorfman má několik dobré tipy pro čtení knih ve své odpovědi na (nyní odstraněnou) otázku o Stackoverflow o tom, co mohu získat od čtení dávky? . Pokud nemáte opakování 10k, můžete si otázku a jeho odpověď stále prohlédnout na zpětný stroj .

Co získáte z četby? Vynikající základ v informatice. Pochopíte, jak počítače fungují, od logických bran až po kompilátory. Budete přemýšlet o problémech, které jste nikdy nepoznali, byly problémy (tj. Jaký je nejrychlejší způsob, jak se znásobit?) A uvidíte algoritmické souvislosti mezi věcmi, o kterých jste si nemysleli, že spolu souvisejí (například koryta řek, RNA a vnořené závorky).

Úplně nesouhlasím s lidmi, kteří říkají „stavět software místo čtení o vytváření softwaru“ - existuje rozdíl mezi disciplínami Softwarové inženýrství a Informatika. TAOCP je o druhém.

Pokud jste ještě nezačali, mám několik doporučení.

Za prvé, možná budete chtít začít s Svazem 4. Je to nějaký vzrušující materiál, velmi aktuální a Knuthův smysl pro humor prosvítá. Navíc jsou k dispozici videa (na webu Stanford SPCD nebo Stanford iTunes), kde Knuth diskutuje o různých sekcích. Tato videa jsou vysoce doporučena. Fascicles 0, 1, 2, 3 a 4 ze svazku 4 jsou k dispozici jako samostatné brožované vazby. Publikovaný materiál V4 je společně větší než kterýkoli z prvních 3 svazků, ale nakrájený na kousky velikosti kousnutí. (Zajímalo by mě, jestli by se zdálo, že by svazky 1-3 byly pro lidi méně děsivé, kdyby byl každý svazek publikován v brožuře s jednou kapitolou ...)

V závislosti na vašem matematickém pozadí bych doporučil první procházet první kapitolu a vrátit se k ní podle potřeby. Ve skutečnosti budete pravděpodobně chtít přečíst každou sekci (alespoň) dvakrát - rychle poprvé, jen abyste získali intuici a podstatu argumentů, a pak pomalu, opatrně, porozumění každému kroku.

Určitě si přečtěte svazek 1, Fascicle 1 v MMIX namísto starých oddílů na MIX. MMIX je v mnoha ohledech lepší a vy byste měli lépe převádět MIX v textu na MMIX, jak budete postupovat, než se pokusit rozkročit oba světy.

Obecné pravidlo: cvičení nevynechávejte. V otázkách je mnoho dobrého materiálu (a odpovědí). Proveďte co nejvíce cvičení; ale přečtěte si je všechny (a přečtěte si odpovědi, jakmile jste si udělali šanci vystřelit nebo jste se rozhodli to projít).

Nakonec, pokud chybu opravdu chytíte: přečtěte si index. Mnoho skrytých vtipů.

StackOverflow by přirozeně bylo dobrým místem pro zveřejnění konkrétních otázek k textu, pokud by k nim došlo.

Pokud jde o další zdroje, zjistil jsem, že je užitečné procházet osnovy uznávaných škol informatiky. Například učebnice pro začátek tříd algoritmů:

57
Corbin March

Knuth je nejuznávanější, citovaný, mluvený a vysoce respektovaný autor informatiky v historii. Jeho knihy zdobí knihovny všech vážných vývojářů softwaru a jsou označovány se stejnou mírou úcty, kterou lidé dávají Bibli a umění války.

Dokonce jsem slyšel, že někteří lidé skutečně četli části Knuthových knih.

Většina lidí jen zamýšlí.

Osobně je zachraňuji pro svůj odchod do důchodu

29
Steven A. Lowe

Knuthovy knihy navždy změnily pole algoritmů. Sám řekl, že „2 stránky v mé knize jsou něčí celou kariérní prací“ a že jeho knihy byly obtížně čitelné. Kniha obsahuje kondenzovaný materiál z let práce v informatice.

Neměli byste se cítit špatně, pokud tomu nerozumíte.

Jak Prasoon řekl, CLRS je jednodušší kniha ke čtení.

Máte také algoritmy Rajasekaran, Sahni et al, které jsou snadno pochopitelné.

20
Arjun J Rao

Když jsem poprvé promoval, vyzvedl jsem první tři svazky TAOCP jako dárek k maturitě a pokusil jsem se je přímo přečíst. Nikdy se mi to nepodařilo. V těchto dnech jsem to zvládl možná třetinou z prvních tří svazků (myšlenka v žádném zvláštním pořadí). Materiál je rozhodně hustý, ale existují tři tipy, které jsem se naučil a které hodně pomohly.

Nejprve se nesnažte číst od obálky k obálce. TAOCP je opravdu tolik referenční práce jako cokoli jiného a zjistil jsem, že je nejlepší si přečíst sekci, když je to relevantní pro problém, který se snažíte vyřešit. Stejně jako mnoho věcí na světě je pochopení řešení mnohem jednodušší, jakmile narazíte na problémy, které se snaží vyřešit.

Dále, tento vývojový diagram před knihou, to není jen trochu humoru, ale ve skutečnosti je to docela užitečný tip. Přečtěte si oddíly, na kterých pracujete iterativně, nejprve nejprve s zastřešujícími koncepty a poté jemně pronikněte hlouběji do matematiky.

Nakonec mějte po ruce dobrý staromódní papír a tužku pro práci s algoritmy, jak jsou popsány, a prohlédněte si několik jednoduchých problémů. Pomáhá znovu vynucovat to, co čtete.

12
Cercerilla

Nebojte se, většina lidí nerozumí umění počítačového programování (TAOCP). Takže si nemyslete, že jste pomalí nebo začátečníci, protože nerozumíte-- stejně jako ostatní 99,99% z nás, kteří to nedostanou.

Jste docela ambiciózní , pokud se chcete dostat na úroveň, kde si můžete snadno přečíst TAOCP . Já sám jsem procházel knihami, než je odložil. Na této planetě je pravděpodobně jen hrstka lidí, kteří rozumí TAOCP.

Podívejte se na příspěvek: Knihovní programátoři nečtou opravd od Bill The Lizard.

Je zde uvedeno spousta dalších knih , které jsou zcela čitelné , srozumitelné , a vy můžete získat okamžitou výhodu .

Já osobně mám rád:

10
spong

Narazil jsem na tento citát od Billa Gatese: „Měl bys mi určitě poslat životopis, pokud dokážeš přečíst celou věc.“ Mluvil o knihách The Art of Programming .. Takže jsem byl docela zvědavý a chci to všechno číst, ale upřímně, vůbec tomu nerozumím. I'm really not that highly intellectual being .. Takže to by měl být důvod, proč tomu nerozumím, ale dychtivě se učím .. V současné době čtím svazek 1 o zásadním algo .. Jsou tam také nějaké knihy, které jsou přátelské pro nováčky/pomalí lidé jako já? Takže si mohu vybudovat sebe a doufejme, že v budoucnu dokážu Knuthovu knihu snadno číst.

pokud se sami definujete jako not a highly intellectual being pak se nastavujete na nízká očekávání. Tuto mentalitu musíte porušit, pokud chcete udělat něco, co by stálo za to. Ve vaší mysli by nemělo být pochyb, že můžete něco dosáhnout. Také jeho dosažení neznamená, že toho snadno dosáhnete.

Věci, které stojí za to sledovat, jsou ty, které jsou obtížné ... a to není klišé. V softwaru, strojírenství, obecně v životě, pokud chcete dosáhnout něčeho, musíte jít za věcmi, které jsou těžké, věci, kterým se lidé vyhýbají, a neuspokojit se s nejnižšími společnými jmenovateli věcí.

Zaprvé není jasné, co je vaše pozadí CS. Knuthova kniha vyžaduje určitý stupeň vyspělosti. Jen málo lidí s titulem CS může jít snadno. Neočekával bych, že student CS, který právě dokončil svůj první kurz algoritmů, bude ve skutečnosti schopen projít i jednu Knuthovu knihu. Zralost potřebná k tomu, aby to bylo, tam prostě není, a to nemá nic společného s mentální schopností studenta.

Musíte mít základní algoritmy chlazené a jasné a musíte mít slušné množství programování (práce a/nebo scholastiky) pod pásem - řekl bych, alespoň 40 kreditů za programování. Musíte také mít svou matematiku CS na pevném podkladu.

Nemůžete jít daleko dopředu, aniž byste dobře rozuměli diskrétní matematice (a možná teorii výpočtu).

Nejde o to, že tyto znalosti budete potřebovat, abyste mohli pracovat na Knuthových problémech, ale potřebujete zralost, abyste mohli projít tímto typem materiálu.

Nejprve si vyberte jednu knihu a pouze jednu knihu (kniha CLRS, jak bylo navrženo dříve) a zpracovejte ji od začátku do konce. Pokud je to možné, provádějte programy implementující algoritmy. Nepoužívejte Java nebo C #, ani C++. Jděte na holé kosti C a získejte pocit ze stavebních věcí z kovových kousků holých kostí.

Získejte také Knuthovu knihu „Betonová matematika“, pokud jste neučinili kurz diskrétní matematiky a výpočetní teorie. Bylo by dobré, kdybyste tuto knihu prošli také.

Pak se vypořádejte s Knuthovou encyklopedií, jednou tome, jednou kapitolou po druhé. Nepřecházejte do jiné kapitoly, aniž byste dobře rozuměli té první.

Navrhoval bych nejprve projít svazek I (základní algoritmy), poté svazek III (vyhledávání a třídění). To by měly být vaše bezprostřední cíle. Poté, později (mnohem později), se zabýváme svazkem IV (kombinatorické algoritmy) a poté svazkem II (semi-numerické algoritmy).

Necítíte se špatně, pokud to nezískáte zpočátku. Snažil jsem se projít svazkem I a III let (nyní 10 let).

A neměli byste na to ani tolik vážit. Nedělejte to, abyste někomu nebo sobě něco dokázali. Udělejte to proto, že máte intelektuálně zájem o to. Algoritmy se můžete osvojit pouhým použitím knihy CLRS (nebo kterékoli z knih s jemným odstupňováním).

Buďte pragmatičtí a udělejte si přestávku. Procházejte Knuthovou knihou jako dlouhodobou osobní ambici, ne jako okamžitý důkaz, že jste CS materiál;)

Existují další důležitější věci (kariérní), pro které se zabijete;)

8
luis.espinal

Než jsem začal Knuth, musel jsem projít čtyřmi různými knihami. První dva jsou Sedgewickovy knihy Algoritmy. Tyto přehledy většiny algoritmů a datových struktur ve skutečné implementované formě, takže můžete vidět, co jsou a jak fungují. Tyto knihy přicházejí v různých jazykových verzích - ty jsem četl v jazyce C, ale iirc byly původně napsány v Pascalu, a tam jsou C++ a Java verze tam venku).

Poté jsem prošel velkou částí Cormenovy knihy o algoritmech a použil Sedgewick a Flajoletův Úvod do analýzy algoritmů jako doplňkový text, protože je více v žilě Knuthovy matematické přísnosti než Kniha Cormen. Stále ještě musím dokončit některou z těchto, většinou vybírat části, které cítím, že potřebuji.

Po přečtení a získání titulu z matematiky dokážu přečíst některé TAOCP, ale je to obtížné přečíst. To neznamená, že to není užitečné. TAOCP jsou některé z největších referenčních příruček pro algoritmy v okolí, ale domnívat se, že je můžete použít k „úplnému“ porozumění něčemu, je poněkud problematické.

4
Justin Hamilton