Pro nejnovější verzi této knihy a doplňkové materiály viziVersion: 19. srpna, 20ca creativeIonsAttribution-Nonkomerční-Share Alike 3
0 Licence pro Spojené státy
Počítačová historie lidstvaEdsger Dijkstra, 1972 Turing Award Lectureit harder Vyvinuli jsme nástroje, které zesilují fyzickou sílu o biliony vyvinutých nástrojů pro zesílení jejich fyzických schopností, pouze lidé vyvinuli intelektuální schopnosti, které lidem umožnily ovládnout planetu První klíčový zesilovač intelektu byl jazyk Jazyk poskytoval schopnost přenášet naše myšlenky zubaté, stejně jako efektivněji používat naši vlastní mysl
Další klíčový intelekt a vzdálenostPočítačové systémy jsou hlavní věcí Počítačové systémy změnily svět více než jakýkoli jiný vynález za posledních sto let a prostoupily téměř všechny hiYewe, kteří jsou teprve na začátku počítačové revoluce; dnešní letmý pohled na potenciál Existují dva důvody, proč by měl každý studovat výpočetní techniku Téměř všechny ty nejzajímavější a nejdůležitější technologie, umění a sci-Ag formy ve světě Porozumění výpočetní technice osvětluje hluboké poznatky a otázky o přírodní kultuře a Iverseeye sur, který odeslal dotaz Googlu, sledoval Tooy Story , kdyby je LASIK naučil readurgii, používali chytrý telefon, viděli představení Cirque Du Soleil, nakupovali s kartou nebo si dali pizzu v mikrovlnné troubě, měli by se přesvědčit o prvním důvodu, proč by to bylo možné bez obrovského pokroku ve výpočetní technice za půl století, ačkoli Lockhart tato kniha se dotkne některých vzrušujících aplikací výpočetní techniky, naše hlavní zaměření je na sezónu, která se může zdát překvapivější
Procesy, procedury a počítačeVýpočetní technika mění způsob, jakým přemýšlíme o problémech a jak chápeme Theof of this book is1 Process, Procedures and Computersnformation Informatika je studium informačních procesů Proces je posloupnostprocesy kroků Každý krok mění stav svět nějakým malým způsobem a výsledek všech kroků vytváří určitý cílový stav Například upečení dortu, napsání dopisu a zasazení stromu jsou procesy, protože zahrnují fyscomprgy jako cukr a špína, ale nejsou čisté. informační procesy jsou spíše abstraktní informace než fyzické věci Hranice mezi fyzickým světem a čistě informačními procesy jsou však často nejasné Skutečné počítače fungují ve fyzickém světě: tyto (např. uživatel stiskne klávesu na klávesnici zobrazené na obrazovce) zaměření na abstraktní fyzikální způsoby reprezentace a manipulace s informatikou lépe umožnit porozumění a uvažovánípostup Postup je popis procesu
Jednoduchý proces lze popsat výčtem kroků Seznam kroků je postup: akt jejich následování je proces Palgoritmus, který lze sledovat bez jakéhokoli opakování, což je mechanický postup, algoritmus je mechanický postup, který je nutný totally finishNapříklad zde je postup pro přípravu kávy, převzatý z aktuálních pokynů, které jsou coErdosZavřete víkoPrázdnou karafu umístěte na tlačítko Stiskněte tlačítko on BiPopis procesů pouhým vyjmenováním kroků, jako je tento, má mnohá omezení. například třetí krok operátor chápe rozdíl mezi kávou a hotovou kávou a může z toho vyvodit, že toto použití kávy"se vztahuje k tomu, že konečným cílem tohoto procesu je připravit pitnou kávu Další kroky asaker je zapojený a sedícíJe možné samozřejmě přidat spoustu více podrobností o našem postupu a udělejte jazyk přesnějším, než je toto, i když je vynaloženo velké úsilí na psaní nejednoznačné Proto je daňový zákoník Spojených států dlouhý 3 4 milionů slov, ale Weyers se může roky dohadovat o tom, co znamená jiný problém s tímto způsobem popisu postupu je, že velikost
Popis C3 je úměrný počtu kroků v procesu To je pravda, kterou lze provést člověkem, ale teze, které chceme provádět na počítačích, zahrnují biliony eps. Potřebujeme efektivnější způsoby, jak je popsat, než jen výpis nástrojů, které nám umožňují popisně Vzhledem k tomu, že procesy provádí stroj, každý musí být popsán smysluplně" (například vědět, jak naplnit kávovar vodou, aniž byste vysvětlovali, že voda pochází z kohoutku, a jak kohoutek zapnout) Místo toho potřebujeme mechanické procedury, které lze sledovat bez jakéhokoli přemýšlení, které mohou být zadány člověkem psaním na klávesnici, přijímány přes síť nebo zajišťovány automaticky senzory připojenými k Provádění mechanické procedury, tj. procedury, při které je každý stroj proveden s výstupem Produkovat Výstup by mohl být data zobrazovaná člověku, ale mohla by způsobit takové astrické signály, které řídí, jak zařízení funguje Počítače existují v široké škále podob a tisíce počítačů jsou zařízení, ale nemyslete na telefony, televizory, mikrovlnné trouby a přístupové karty Naše primární důraz je kladen na univerzální počítače, které provádějí všechny možné výpočty na diskrétních vstupech s výjimkou praktických omezení prostoru a mysli a "chetime"
další část „jezte to“ diskrétní vstupy znamená: Prozkoumejte hlouběji, co to pro počítač znamená být universální2 Měření Výkonné výpočetní stroje, můžeme porovnávat výkon různých strojů a měřit množství mechanické práce, kterou mohou vykonat za daný čas Tento výkon lze zachytit pomocí jednotek, jako je hwatt Fyzický výkon není příliš užitečným měřítkem výpočetní techniky, který je výrazně spotřebován při provozu korpočítače, ale obsahuje dvě vlastnosti, které měří výkon výpočetního stroje Kolik informací Jak rychle se odkládá s ohledem na druhou vlastnost až do části II, ale zvažte první121 Informace Neformálně používáme informace jako znalosti Ale abychom kvantitativně porozuměli informacím-informacím, jako něčemu, co můžeme měřit, potřebujeme přesnější způsob, jak o tom přemýšlet.
1 2 Měření výpočetního výkonu Způsob, jakým počítačoví vědci měří informace, je založen na tom, jak je to, co je známo, získávání informací trochu málo Jeden kousek informace snižuje množství nejistoty na polovinu Je to ekvivalentní odpověď, existuje dvojznačná otázka
Vzhledem k tomu, že kousnutí provede fatoss, ale neodhalí výsledek Polovinu času, kdy mince dopadne „hlavy“, a druhou polovinu času ocasy“ bez správné odpovědi jsou Jeden bit informací, buď hlavy“ nebo „ocasy“, my caPodobně jeden bit dokáže rozlišit mezi hodnotami 0 a YthTam identifikujte skutečné číslo, protože jeden bit dokáže rozlišit pouze dostačující použití fivTo je však docela neefektivní, protože k identifikaci hodnoty potřebujeme až pět otázek (a v průměru očekáváme, že budeme potřebovat 33 otázek ) Můžeme identifikovat
Naším cílem je identifikovat otázky, kde jsou odpovědi „ano“ a „ne“ stejně nejinformovanější, pokud začneme s: „Je hodnota 6?“, protože se očekává, že tato odpověď bude mít časovou hodnotu alespoň 42 Zde očekávejte stejnou pravděpodobnost Pokud je odpověď „ano“, víme, že je 4, 5 nebo 6 S dalšími dvěma bity můžeme rozlišovat mezi tečkami (všimněte si, že dva bity jsou ve skutečnosti dostačující k rozlišení mezi čtyřmi informacemi, zde se plýtvá) Podobně, pokud první otázka zní ne, víme, že výsledek je 1, 2 nebo 3 Potřebujeme dva další bity, abychom rozlišili, která ze tří hodnot to je. Se třemi bity tedy rozlišíme všech šest možných výsledků5Tři bity mohou zprostředkovat více informací než pouhých šest binárních strom otázek, existují některé otázky, kde je stejně pravděpodobné, že odpověď bude „ano“ a „ne“ (například očekáváme odpověď na hodnotu 3be „ano ze tří časů“) Z toho důvodu nezískáváme plný počet bitů, které můžeme rozlišovat mezi 2* 2*2-8 možnostmi
Obecně platí, že můžeme rozlišovat mezi 2 možnostmi. Naopak, rozlišování mezi kssiblemi hodnotami vyžaduje, aby byl logogaritmus definován tak, že pokud a= b logaritmus pak loghVzhledem k tomu, že každý bit má vlastnosti, použijeme k určení počtu bitů, abychom rozlišili mezi sadou odlišných binárních otázek. , otázky jsou diskrétní: nemůžeme položit 058 otázku, soinary queStromy Obrázek 11 znázorňuje strukturu binárních otázek s osmi hodnotami Tuto strukturu nazýváme binární strom Uvidíme mnoho užitečných binárních stromů stromu - Počítačoví vědci kreslí stromy vzhůru nohama dolů, Kořen je vrchol stromu a listy jsou čísla dole (o) Ke každému listu existuje jedinečná cesta stromu. Můžeme tedy popsat každý z Eigl
1 2 Měření Výpočetní hodnoty Povisible pomocí thers k otázkám ve stromu fNo","No"a"Neaf 5 Vzhledem k tomu, že je to všechno binární stromMůžeme popsat jakýkoli nezáporný způsob, pouhým přidáním dalších úrovní stromu Foed k rozlišení mezi 6 možnostmi přidat nová čísla mezi 0 a 7, pokud je odpověď „Ano podobné theath Hloubka stromu je délka theth od tematu Ukázkový strom má hloubku tři
Binární strom hloubky d dokáže rozlišit až 2ere0357Obrázek ll Usin
g tři bity pro rozlišení osmi možných hodnotJednotky informací Jeden bajt je definován jako osm bitů Jeden bajt informace tedy odpovídá osmi binárním dotazům a dokáže rozlišit mezi 28(256) různými hodnotami Pro větší množství informací používáme metrické předpony, ale místo škálování faktorem 1000 onif20 (1024lence, jeden kilobajt je 1024 bajtů; jeden megabajt je 24 (přibližně on) bajtů; jeden gigabajt je 2 (přibližně jedna miliarda) bajtů; a jeden ter-bajt je 240 (přibližně jeden bilion Draw1 bilionů) bajtů binární strom s minimální možnou hloubkou v tisícinách rokuCvičení 12 Kolik bitů je potřebahumd K jednoznačné identifikaci jakéhokoli atomu v pozorovatelném vesmíru?Cvičení 13 Všechny příklady používají binární otázky, na které existují dvě odpovědi Předpokládejme místo toho, že se rozhodujeme na bitech zakládáme trity, kde jeden trit dokáže rozlišit mezi třemi stejně pravděpodobnými hodnotami Foach trit můžeme položit otázku qu (otázka se třemi možnými odpověďmi, k rozlišení je potřeba jakékoli trity, přesvědčivá odpověď by ukázala ternární strom s otázkami a odpověďmiIsb* Vytvořte obecný vzorec pro převod mezi bity a trity
Kolik Průzkum 11: GuesTheer (vybírající) vybírá mezi I a 100 (včetně) a tajně si to zapisuje Další hádající hráč) se pokouší uhodnout číslo Po každém uhodnutí vybírající odpoví „správně“ (hádající uhodl číslo a hra je u konce)vyšší"(skutečné číslo je vyšší než theower"(Vysvětlete, proč ten malý kousek informatib Za předpokladu, že je volič vybere náhodně (to znamená, že všechny hodnoty mezi I a 100 jsou stejně pravděpodobné), jaké jsou nejlepší první odhady? Vysvětlete, proč jsou tyto odhady lepší než jakékoli jiné odhady (Nápověda: jsou dva stejněc Jaký je maximální počet odhadů, které by měl druhý hráč potřebovat, zjistěte, kolik je průměrný počet potřebných odhadů (za předpokladu, že výběr tipuje* Předpokládejme, že místo vybírá náhodně, vybírající si vybírá číslo s cílem určit počet tipů, které bude muset vybrat druhý hráč? fJak by měl tipující upravit svou strategii, pokud se staví nepřátelsky? kde cílem voličů je vybrat počáteční číslo, které maximalizuje počet tipů, které hádač potřebuje, a cílem tipujícího je
Obsah22 Reprezentující data23 Růst Computing Powerg a liberální Arts22 Language Constructio990223 Rekurzivní přechodové sítě3 1 Problémy s přirozenými jazyky32 Programovací jazyky33 Schéma341 Primitives3
42 Aplikační výrazy4 Problémy a procedury41 Řešení problémůPostup21 Procedury jako vstupy a výstupy43 Rekurzivní řešení problémů44 Vyhodnocení rekurzivních aplikací45 Vývoj komplexního programu451Pri
452 Tracing46Si5 Data52 Páry521 Vytváření seznamů párů43 Postupy, které vytvářejí seznamy5
6 Abstrakce datČást II: Postupy analýzyHistorie výpočetních strojů62 Mechanizace logických operací622Cg Operace1163 Režim64 Souhrn7 1 Empirická měření222n3311222233336674444dratický růst než exponenciální růst33364444třídění a433644443
813 Rychlejší třídění588 1 4 Binární stromy815 Rychlé tříděníNestrukturované vyhledávání6788dexované vyhledáváníČást Ill: Zlepšení expresivity9 Mutace2 Dopad názvů mutací, míst, rámců a prostředí922 Pravidla hodnocení se stavem93 proměnlivé páry a seznamy proměnných objektů 94 I04 I04 I0
1 Procedury balení a stav66668688980 1 1 Zapouzdření10 1, 2 Zprávy0 2 1 Implementace podtříd Přepisovací metody03 Objektově orientované programování Programy v Pythonu Je a vyvolání4 Řídicí příkazy3 Hodnotitel33 Definice a názvy aplikací36Přehled44 Lazyati vyhodnocení15 Lazyati 2 Líné programování
5 SummaPart IV: The Limits of Computing2C2 1 Mechanizace uvažovánídels teorie neúplnosti24022 Problém zastavení2
4 Prokazování nevyčíslitelnosti4525 SouhrnIne53253Seznam průzkumůSíla jazykových systémůrecepty pro 丌3 rekurzivní definice a hry5skládačkyWebDetSeznam číselsíťová přechodová síť s podsítěmi5 RTNting“ Alice provozuje26 Vztahy napájení systémuroduce8 Převod produkce na více číslic
3 1 Spuštění programu Schéma4e mapuje vstupy na výstup42 Kompozice43 Kruhová kompozice44 Rekurzivní kompozice5 Corneri5 1 Hádanka na hrací descePočítání a s wine62 Comig logické nebo ne s wine63 Počítání a3 složením dvou a funkcí65 Pravidla pro kontrolu vyvážených závorek Turingův stroj766 Kontrola
1 Vyhodnocení fibo7 2 Vizualizace množin O(), Q() a O()73 Pořadí růstu91 Sarenvironments92 Envirbigger 3 493 Prostředí po vyhodnocení (define inc(make- adder 1))9 4 Envirent for ee body of (inc 149)95 Proměnný pár vytvořený vyhodnocováním(set-mcdr! pair pair9 6 Mutablelistby vyhodnocováním(mlist 1 2 3)6770 1 Prostředí vytvořené vyhodnocováním02 Dědičnost hierarch103 Counter class hierar21 Incote a nekonzistentní axiomatika23 Dvoustavový Busy Beaver Machine
Počet obrázků v knize, včetně dlaždic na obálce, byly vygenerovány Některé obrázky dlaždic na obálce pocházejí z licencí Creative Commons na flickr, Dunechaser, MichaelFitz, Wolfie Fox, glingl, jurvetson, KayVee INC, michaeldThe Van Obrázek Gogh Starry Night ze sekce 122 je z oogle ArtProject Obrázek počítače Apollo Guidance v sekci 1 23 byl vydán NASA a je ve veřejné doméně Semafor v sekci 2
1 je z iStockPhoto a rotační dopravní signál je z wikimedia Commons Obrázek Grace Hopper v kapitole 3 je z Historie počítače Obrázky karet Museplaying v kapitole 4 jsou z iStockPhoto Obrázky GaussHeron a Grace HoppKapitola 4 je licencováno od United Feature Syndicate, Inc Pascalův trianglof Ada Lovelace v kapitole 6 pochází z Wikimedia Commons, malba od Obraz počítadla kilometrů v kapitole 7 je od iStockPhethe obrázek frustrovaného studenta Zaklínač hadů Python v sekci 111 ism iStockPhoto Obrázky Dynabook na konci kapitoly lz Alanayho papíru Komiks xked na konci kapitoly 1l se používá pod kreativním Randall mi
Předmluva Tato kniha začala premisou, že informatika by se měla vyučovat jako liberální umění, nikoli průmyslová dovednost. Měl jsem tu čest vzít 6001 od GerrySussmana, když jsem byl studentem prvního ročníku na MIT, a tento kurz probudil sílu a krásug a inspiroval mě k tomu, abych se věnoval výzkumu v oblasti informatiky. Když jsem přišel jako nová fakulta, zjistil jsem, že úvodní počítačové kurzy se zaměřují na výuku průmyslových dovedností a čas věnovaný vysvětlování technických složitostí, zbývá čas na to, abych se dostal k udělení grantu Fellowship a National Sdation nový úvodní kurz informatiky, poprvé nabízený na jaře 2002, s pomocí mimořádné skupiny asistentů koučů
kvůli nějaké první polovině kurzu, ale malé, neohrožené díky jejich úsilí, že tato kniha existuje, kurz, a několik dalších nabídek, použil abelson Sussmans vynikající učebnici Struktura a interpretace počítačových programů (SICP) spolu s Douglasem Hofstadtersem Godlem, Escher, Bach: Věčný zlatý cop - Hargaictor Clay Yountront: Grace Deng, Rachel Dada, Jon Erdman (Asistent Coachalone v myšlení SICP je možná největší učebnice, kterou kdy byla napsána, s velkým znepokojením jsem se snažil vyvinout novou naději, kterou výsledná kniha zachycuje spirimutinyifikovaná SICP, ale vhodnější pro úvodní kurz pro studenty, obrázky nezahrnuté v SICPanalýza, objekty a schopnosti, I když je kniha navržena kolem jednosemestrálního úvodního kurzu, měla by být vhodná i pro studenty samostudia a pro lidi s podstatnou zkušeností s programem, ale bez podobných znalostí informatiky
Jsem zavázán mnoha lidem, kteří pomohli vyvinout tento kurz a knihu Wesey je prvním člověkem, který tuto knihu naučil, a jeho důkladná a bystrá zpětná vazba vedla ke zlepšení
GregHumphreys, Paul Reynolds a Mark Sherriff také v průběhu let vyučovali všechny asistenty trenérů, zejména Sarah Bergkuist (2004), Andrew Connors (2004), Rachel Dada (2003), Paul DiOrio (2an (2002) , Ethan Fast (2009), David Faulkner (2005), Jacques Fournier (2003) chard Hsu (2007), Rachel Lathbury (2009), Michael Lew (2009), Stephen Lia2002), Dan Marcus (2007), Rachel Rater (2009) ), Spencer Stockdale (2003), DanUpton (2005), Portman Wills (2002), Katie Winstanley (2003 a 2004) a Rebecca Zapfel (2009) William Aiello, Anna Chefter, Chris Frost, Jonathan grierThad Hughes, Alan Kay, Tim Koogle, Jerry McGann, Gary McGraw, Radhika NagShawn O'Hargan, Mike Peck a Judith Shatin také učinili důležité věci, nejhlubší díky patří mé ženě Noře, která neustále, můj dík patří celé minulosti, přítomnosti a budoucnosti. studenti, kteří tuto knihu používají, srpen 201