SPEAKER: OK, takže nebudete věřit, ale minulý týden, v pondělí, v Pierce, I byl dole v suterénu. Nikdy jsem jít na Pierce. A já nikdy nebudu vracet, protože Nechala jsem si věci sám, jako pět minut a někdo ukradl počítač a moje telefon z batohu. Což znamená, že jsem se dostal zpátky, a pak méně než o týden později se dostal opět ukradl. A pak se dostal zapnutí - Find My iPhone pokračuje být neužitečné. Tak jsem i nadále podporovat nebudete používat. Je zapnuté jednou, a to bylo v MIT, stejně jako 15 minut později, a osoba, volal toto telefonní číslo, které ukázaly, v mém AT & T volání. Tak jsem šel on-line, volal, že telefon číslo, a šel rovnou na to záznamník ve španělštině. A já jsem o tom slyšel od. Takže jsem se musel dostat nový počítač a telefon. Já vím. Jo. Ale pokud vy chcete čip do mého Počítač fondu po tomto, to je důvod, proč Ptal jsem se tě tady. Jen si dělám srandu. Ale to bylo opravdu smutné a traumatizující. Ale je to všechno zpátky, a to byl důvod, proč p-set 8 trvalo tak dlouho, protože Jsem neměl počítač. A někdo ho ukradl. A já jsem e-mailem, s dotazem, zda se by grade vaše p-sada 8. Ale řekl, že ne. A byl jsem rád, mohu mít můj počítač zpět? A oni to jako, no. Jen si dělám srandu. OK. To je naše poslední část, a mám pár - máme jen tři věci na pořadu jednání. Budeme mluvit trochu o průvodci Q. Pak budeme trávit 15 minut na chladném demo. Pak budeme všichni říkají, Zapomeňte na sobě. Nemáte opravdu potřebujete počítačů nebo pero, nebo papír na poznámky, nebo sledovat spolu. Takže předpokládám, že pokud máte počítač up, pak jste na Facebooku. Jen říkám. Pokud jste vyplňování Q průvodce, který je jako první. Průvodce Q je otevřená. Měli jste e-mail o tom. Jakmile jsou všechny Q věci se podává na konec roku, jsem si všechny Q připomínky skóre ze všech stran který se rozhodne dát mi zpětnou vazbu. A tak, když jdete do Q - Já nevím, jestli to dokážeš, Jeff, protože jsi a rozšíření studenta. Ale když jdete do Q, pokud nemáte to udělal předtím, si vyberete svůj učitel, který je David Malan. Musíte ho udělat. A pak si můžete vybrat TFS. A můžete si vybrat, jak mnoho TFS, jak chcete. Ale existuje 60 z nás. Nemusíte vybírat každého. Můžeš mě jen vybrat, nebo jen vybrat pár dalších lidí, pokud chcete, aby dát jim zpětnou vazbu, jak dobře. A pak dostanete skóre na všech těchto různé osy, a pak si můžete nechat je zpětná vazba. A pak, stejně jako o měsíc později, Dostanu všechno, že zpětná vazba. A stejně jako zpětná vazba jste byli že mi v průběhu semestru, jsem číst všechno. A je to opravdu užitečné, a to pomáhá mi rostou jako učitel a jako individuální. Takže, prosím, vzít nějaký čas na to. Jsme jen bude zde pro, jako, 30 minut. Takže pokud chcete, na konci tohoto, na pět minut, a stačí vyplnit Q, protože to nebere víc času než to. To by bylo skvělé, a také dostat své třídy zpět mnohem rychleji, pokud můžete vyplnit Q. Takže většina z vás udělal, že před - nebo ne, asi polovina z vás udělal, že před. Ale pokud jste nováček, to je to, co to je. Bude to stejné pro všechny třídy. Udělej to. Trvá to pět minut. Ale také, pokud si to trochu vážně, že to není to nejhorší, co na světě, protože jsem určitě brát vážně. Takže pokud jste mě nechat smajlíka, I ocení, že. Ale já bych také ocenil, pokud vám mě opustil více než smajlíka. Ale je to jen na vás. Nemůžu říct - nebo jako velký smajlík tvář, s velkým D. To by být ještě lepší. OK, to je vše, co mám na Q. Pokud máte nějaké dotazy, můžete se zeptat mi, ale docela samo-vysvětlující. Jen, prosím, vyplňte ji. Já bych ve skutečnosti ocenit ono, a to znamená pro mě hodně. OK, to je to, co se chystáte utratit 15 minut prochází. Chystám se vám ukázat nějaký kód. Myslím, že to je opravdu cool, a to mě dostal více vzrušená v informatice. Takže doufám, že to bude dělat Totéž pro vás všechny. Chystáme se otevřít - a to vše Kód pošlu vám později. Ale my jsme jen tak otevřít - Já jsem ve svém terminálu - budeme otevírat tento program s názvem [? MySum. ?] Každý může přečíst, že, nebo Měl bych dělat to větší? Může mi někdo říct, co tento kód bude dělat, když jsem jej spustit, nebo co to Program bude dělat, když jsem jej spustit? [? Avi,?] Co si myslíte to bude dělat? Dokončit žvýkání. Neměli byste mluvit s vaše ústa otevřená. DIVÁKŮ: Má to trvat spoustu argumenty, najít součet jejich návratu součet, a pak ho vytisknout? Nebo to trvá dva argumenty, a pak to dělá [neslyšitelné]. A pak se to vytiskne cokoliv výsledky jsou. SPEAKER: Close, opravdu blízko. Někdo chcete přidat do [? co Avi?] řekl? Potřebujete, aby tento program žádné argumenty příkazového řádku? Diváků: Ne SPEAKER: Ne Co se stane, pokud nechcete, aby to žádné argumenty příkazového řádku? Jen jsem napsat tečka lomítko MySum. DIVÁKŮ: 1 plus 2 se rovná 3. SPEAKER: 1 plus 2 se rovná 3. A to bude tisknout, že ven. To je přesně to pravé. Uvidíte, že tiskové f řádku v dolní části. Je to vytisknout a, b, a pak součet A a B. A myslím, že se domníváte, že Součet funguje správně. Dobrý předpoklad. OK, a co se stane, když dát to, co hádka? [? Manu? ?] DIVÁKŮ: Bude přidat cokoliv První argument je b.. Nebo 2, je mi líto. SPEAKER: Jasně, na 2. Ví někdo, co strtol dělá? Je to v podstatě atoi. Atoi je vlastně vymyšlené verze - nebo jednodušší verze strtol. Ale to vlastně používá strtol. A já jsem zjistil, že, protože jsem chtěl, něco jako atoi, a pak, když jsem se se atoi, četl jsem tady dole. A já jsem našel "toto chování je stejné jako "strtol. Takže je to v podstatě atoi pro všechny záměry a účely. A vidíte, ještě jsem použít null a 10. To skutečně umožňuje pořizovat řetězec, a přeměnit ji na číslo, a zvolte jaký základní chcete udělat palců Tak to je základ 10 tady. Mohl jsem udělat základní dva na jedno desetinné místo, základna 16 pro hexadecimální. Je to docela v pohodě. Ale dlouhý příběh krátký, to trvá dva čísla a sečte je. Takže pojďme spusťte jej. A budete také všimnout, že jsou některé věci - takže mám makefile tady, a Pokud otevřete že se některé věci si všimnete, jsou různé. Konkrétně, tento argument tady, jste pravděpodobně Neviděl, že před. Obecně platí, že jsme se sestavit co pomlčkou nula, nula. Dash nula, nula, znamená, že nemusíte dělat jakékoliv optimalizace, kompilátor. Nesnažte se dělat nic chuť, nebo dělat cokoliv spustit rychleji, nebo se zbavit proměnných, které jsou nezbytné. Nepoužívejte optimalizovat tento kód vůbec, Ptám se na třetí úrovni optimalizace. Takže se ptám kompilátor dělat Mnoho optimalizací. Můžete změnit v makefile, kdy Máte tento kód, pokud chcete vidět různé věci. Což my vám ukážeme, ve vteřině. Takže jsme se spustit svůj částku 1 plus 2 plus 3. Někdo mi dejte dva argumenty. DIVÁKŮ: 4 a 5. SPEAKER: 4 a 5. Děkuju. Skvělé, funguje to. Jaké jsou některé další dobré argumenty pokusit, aby se ujistil to funguje? Každý, kdo? DIVÁKŮ: 0. SPEAKER: 0 a? DIVÁKŮ: Negativní 3. SPEAKER: Funguje to. Ale to bylo dobré rozhodnutí. OK, takže pojďme zpátky. To je mysum.c. Všimnete si, že je to také něco volal sumfunction.c. A to říká, ach, je tu něco, jsou definovány v sumfunction.c. Nechci tento soubor zahrnout sem protože nemusíte. Ale já propojit ji, když jsem kompilaci, který jste si všimli. Pojďme se posunout nahoru. Viděli jsme, když jsme sestavili mysum, právo tam, co jsme propojili v binárním od sumfunction.o. A nepotřebuju hlavičkový soubor protože, samozřejmě, je tu Deklarace funkce. Tak ostré jsou normálně jen vezme v deklaraci funkce. Tady jsem jen dát to rovnou v kódu. A tak musím udělat, je odkaz v binární, které dělám. Jakékoli odhady pro to, co je v sumfunction.c? Jaký kód jsem napsal v sumfunction.c? DIVÁKŮ: [neslyšitelné]. SPEAKER: Jakékoli odhady? Jo? Diváků: Myslím, že definuje některé [neslyšitelný]. SPEAKER: Ano. Tak jsem to zápis int součet int. Píšu tento řádek, a pak mám otevřeno složená závorka, uzavřená složená závorka. Co si myslíš, že píšu v těch složené závorky, uvnitř této funkce? Jo? DIVÁKŮ: Návrat rovná. Procesor: To je opravdu dobrý odhad. Kdo si myslí, že [? Manu?] Má pravdu? To říká, že vrátit a navíc b.. OK, ne všichni. [? Akshar,?] ty taky? Jsi si jistý? OK. Co je? DIVÁKŮ: hláskoval jsi to špatně. SPEAKER: Ne, já ne. Jo, dělám si srandu. Máš pravdu. To je přesně to, co říká. Je to vrátit a navíc b.. To dělá hodně smysl. OK, pojďme zpátky. Vidíme, jak se hlavička - to je návratový typ. Pamatujte si, že jsme viděli, že první den, návratový typ funkce, ale jde před názvem funkce int. Tady jsem napsal int. Co si myslíte, že se stane, pokud v tomto funkce, nepíšu int, ale Píšu unsigned? Rozdíl, samozřejmě, je, že unsigned představuje pouze pozitivní celá čísla, a int mohou být pozitivní nebo negativní. Tak jsem změnil návrat typ této funkce. Tento kód se neshoduje opište tento návrat. Co si myslíte, že se stane když jsem kompilaci? Měli byste na mě křičet. Žádný křik. Co když jsem spuštění programu? Pojďme udělat před 0 Negativní 3, nebo negativní 1.. Je to stále funguje, i když říkám, je to vrácením celé číslo bez znaménka. Je jasné, že to není návratu celé číslo bez znaménka. Je to vrácením celé číslo se znaménkem. Je to vrací negativní 1. OK, to je divné. Co když půjdu do tady a dělat, že? Tak jsem se všechno změnilo z int na unsigned. To může trvat pouze nepodepsané celá čísla. Ale stále si myslím, že to běží? DIVÁKŮ: Ano. SPEAKER: to bude. To je šílené. A míjíme v jednoznačně přiřadit celé číslo, můžeme projít dva podepsali celé číslo, to ještě funguje. OK, nějaké nápady, proč je stále funguje, nebo to, co se děje? Jo, Jeff. DIVÁKŮ: To má co do činění s optimalizací, které zvýrazní. SPEAKER: Ne Mohli bychom změnit optimalizace, to by ještě fungovat. Můžu to udělat pro vás, ale - Diváků: Vezmu vás za slovo. SPEAKER: Jo. Pokud otevřete makefile tady, Změnil jsem optimalizaci. Takže si můžete udělat pomlčka nula, nula. To bude ještě pracovat. Jiné myšlenky? Vy všichni Očekává se, že práce, tak Proč jste očekávat, že to funguje? Ne? Ticho. OK. Musím čekat sedm sekund, proto, že jsem se ptal. Takže super věc o C, a vy jste pravděpodobně nezažili - vámi nemusí mít, mohlo by to být poprvé. Ale jak všichni víte, když píšu něco v C, to neukládá jako to na počítači. Je uložen jako jedniček a nul. Jde z kódu C do assembleru. Viděl někdo assembleru dříve, Stroj montážní kód? Podíváme se na vteřinku. Jde z kódu C do assembleru. A vy víte fáze kompilace. Vy jste měli na paměti, že pro jeden kvíz, a pak ho vypsat na testu nulové. Většina lidí to špatně. Myslím, že vy ho přibil. Ale, vy jste nejlepší část pro kvízy, mimochodem. Což je úžasné. Nebude vás bolet. Nedělejte si starosti. Ale je to opravdu cool. Dobrá práce. Tak to jde do assembleru, a pak to jde do jedniček a nul. A ty jedničky a nuly jsou uloženy na počítače, a to je to, co uloží do a.out, nebo v tomto případě, spustitelný soubor. A počítač běží jedniček a nul. Je to tak? Máme před naučili to. Takže super věc je, že tato znaménka idea, myšlenka typů ints nesignováno, et cetera, et cetera, že je tady v jazyce C. Ti, kteří existují. Ale typy neexistují v ty jedničky a nuly. Typy ani opravdu existují na assembleru úroveň. Tak to je něco, co existuje v C svět, ale neexistuje v počítači svět nebo svět procesoru. To je nějaký abstrakce, že C jazyk je součástí, aby se naše život jednodušší. Takže na konci dne, mohu napsat mnoho různých věcí, tady, a to nedělá rozdíl. Vzhledem k tomu, že existuje pouze v C světě. To neexistuje v ty a nuly svět. A náš program je prováděn v ty a nuly svět. Takže zjevně není spálená ale vaše mysl je. Ale myslím, že je to v pohodě. Jo, Jeff. DIVÁKŮ: Takže, je-li místo dělat int, vy char. A vy jste byli - SPEAKER: Pojďme to udělat v sec. DIVÁKŮ: Protože pak dostanete unsigned bude z negativního 128 až 127, nebo od 0 do 255.. SPEAKER: Tak char je problematické. Ví někdo, proč by char se problematické, a to by ve skutečnosti změnit věci v těch a nuly svět? DIVÁKŮ: Vzhledem k velikosti char. SPEAKER: Velikost znaku je 1. Takže unsigned je 4 bajty. Takže char by šroub věci do pořádku. Ale to, co se 4 byty, který je vztahující se k char? Nebo, že přidá jeden další - můžete si dát ještě jednu postavu po char. DIVÁKŮ: Char hvězda. SPEAKER: Char hvězda má 4 bajty. Takže pojďme něco udělat to je char hvězda. Tak by to asi fungovat, ale my jsme dělat něco ještě šílenější než tohle. Podle mého názoru, bláznivější. Já jsem teď napsal funkci, která vrací ukazatel, a to trvá ukazatel a hodnota bez znaménka - budeme změnit zpátky na int, takže nejsme dělat příliš mnoho změn najednou. A to má řadu nazvanou a, indexy do pole, a vrátí se adresa. My jsme tyto operátory neviděl. To, co si myslíš, že to bude k tomu, na oplátku, když jsem jej spustit? Co si myslíte, že to bude dělat? Jakékoli odhady? DIVÁKŮ: segfault. SPEAKER: Co? Segfault? To je dobrý odhad. Tom říká to samé. Jakékoliv jiné odhady? Kdo si myslí, že to bude dělat to samé? Kdo si myslí, že to bude segfault? To dělá totéž. Promiňte. Ale, samozřejmě, jsme dali v 1. a 2.. A to jsou oba platné, že jo? Pojďme se podívat, můžeme jít na druhé místo z pole. Ale co když jsme b záporné číslo? To je asi lepší odhad na něco segfaulting. Je to stále funguje. OK, to je teď šílený. To je stejně platné funkci SUMA. To dělá přesně stejnou věc jak vrátit a b.. Může mi někdo vysvětlit, proč je to dobré součet funkce, nebo proč to funguje? Co se tu děje? Proč to dělat přesně stejný něco jako naše stará funkce sum? [? Akshar,?] co se děje? DIVÁKŮ: Vzhledem k tomu, když máte to je adresa, na místo v paměti - a když to uděláte ampersand, je jde do této paměti adresu. A když jdete na b, jsi trochu pohybující se kroky z této adresy paměti, vracíte, že. Takže jste vlastně, ve skutečnosti, Přidání a b [neslyšitelné]. Tam, kde jsou standardní operace Na tomto návratu? Stejně jako, kde závorky podzim? Je návrat na adresu uvedenou na před nebo po [neslyšitelné]? SPEAKER: Bude to index do b - nebo index do - a pak zpáteční adresu. OK, takže to všichni pochopili co [? Akshar?] řekl a vysvětlil, proč to funguje? Nechtěl jsem, poprvé, když někdo vysvětlil mi to. By někdo chtěl obrázek to vysvětlit? Chystáme se nakreslit obrázek s žádné značky, to je skvělé. Nalezeno některé z nich. Takže máme celou řadu, který je série krabic. První z nich je index 0, index 1, 2, 3, 4, tečka, tečka, tečka. Typický pole. A kromě toho, že indexy, všichni mají adresy paměti. Takže pojďme dát tuto adresu paměti 13, 14, 15, 16, 17, a tak dále. Všichni to tady tak daleko. Takže je adresa. Název pole, ukazatel je uložen tam. Je to ukazatel, že je to místo v paměti, na začátek pole. Takže pokud to bylo pole, by se hodnota 13. A, samozřejmě, můžeme dát všechny hodnoty chceme. Char hvězda, můžeme dát jakýkoli adresa paměti chceme. Můžeme dát 0, můžeme dát Negativní 1 - 1 negativní neexistuje, tak to je asi problematické, ale jste viděli, že to ještě fungovalo. Takže můžeme dát libovolný počet chceme, každá adresa paměti chceme. Poté, int b říká, OK, přejděte toto číslo z kroků do pole. Takže v případě, b se rovná 2, a se rovná 13, Jsme na adresu paměti 13. A jdeme dva kroky, a proto jsme tady. A ampersand znamená návrat adresu tohoto místa. A adresa, samozřejmě, 15. Tak jsme si 13 plus 2, nebo a b, což je 15. Otázkou je, i když - Je mi to líto. Znamená to, že objasnění věci, proč to funguje? DIVÁKŮ: Proč by to fungovat bude - takže můžete mít celou řadu a jít na negativní index? SPEAKER: Správně. Takže jsme udělali záporná čísla, tak to je - to smysl i když, první, [? Avi,?] pro vás? DIVÁKŮ: Jo, já jsem jen [Neslyšitelné], ale - SPEAKER: Jo, to by se vrátit 15. Pokud byl 13, a b je 2, To by se vrátit 15. DIVÁKŮ: Tak indexování nula není se stal problém, ne? Vzhledem k tomu, že jste v pohybu od 0. SPEAKER: Správně. Takže jste v pohybu - takže pokud b je 0, byste se pohybovat kdekoli. A vy byste se právě vrátili adresu - pokud b je 0, to je v podstatě vrací, aby adresu. Předávání v char hvězdy A a vrácení Adresa je jen vrací, v podstatě. OK, otázkou je, proč záporná čísla fungují? A to je opravdu super věc, o to, protože to by mělo segfault. A to by segfault kdybychom udělal něco takového. Řekněme, int. Takže tento kód vypadá stejně a by se měli chovat stejně. V podstatě, x je proměnná odpadky, a tak by to mělo chovat stejně. Pojďme udělat tohle - oops - v zapojení do hvězdy. OK, jsme už dostat chyby tady, , protože to už bude zlobit na mě, protože již ví, co přijde. Zejména druhý. Adresa naskládaných paměti spojené s lokální proměnné. V podstatě, nehodlám kompilovat to, a pak jdu vrátit dělat to, co jsme právě udělali. Ale protože jsme vlastně nikdy přístupu, co je v paměti umístění, to nebude segfault. Jsme vlastně nikdy při pohledu na to, co je V druhém boxu nebo to, co je v každé krabice tohoto pole. Jsme jen řekl, tady je adresa o věc hledáme a vrátit tuto adresu. Jsme vlastně nikdy jít do pole, aby se na tomto místě. A protože jsme se nikdy nedotýkejte paměti, nemáme dostat do problémů. Nemáme si segfault. Pokud bychom se snažili znovu, dotkněte se, že paměť, dotkněte se to, co bylo na a nebo b - nebo držák b, a za předpokladu, že byla 0 a - pokud byla 0, i, že by bylo docela špatné, protože nemůžeme jít se všemi tam cestě. Je-li A a B jsou oba 0, a my jsme se snažili dotknout se, co tam bylo, pak bychom dostat do problémů. Ale pokud se nedotýkejte, co je tam, prostě zpáteční adresu, je ve skutečnosti nebude segfault, protože To vám umožní provádět tyto operace. To dostane jen na tebe naštvaná, a dostane Super zlobit, když se pokusíte a dotknout se skutečné paměti a vrátí to, co je v této paměti. Má to smysl? To je prostě šílené a část C. Takže, máme jeden z nich. Kdo si myslí, že je to v pohodě? Stále více lidí. To je dobře. OK, tohle je naše poslední. A rád bych, abyste mi říci, zda nebo ne si myslíte, že toto se děje dělat přesně stejný věc. Jsem to napsal někam. Nebudu je zapamatování. Pojďme se podívat, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. Tak to je pole, teď, není funkce. A je to pole, protože máme náměstí držáky, ne složené závorky. A je to pole, jaký typ? Každý, hmm? DIVÁKŮ: Jejich hexadecimální čísla? SPEAKER: Ale co je to typ C? Ti všichni mají hexadecimální čísla. Co je to typ C? To vám řekne. DIVÁKŮ: Je to nepodepsané znaků. SPEAKER: vpravo, bez znaménka znaků. A dvě hexadecimální čísla je jeden bajt. To jsou 1, 2, 3, 4, 5, 6, 7, 8, 9 bytů. Je to řada z 9 bytů. OK, jste si pravděpodobně již víte, odpověď na tuto otázku. Ale, co si myslíte, že bude stane, když jsem spustit tento? Říkám znovu, v mysum.c, Čekám funkci že trvá dvě celá čísla. A já místo toho říká, že tato částka je pole znaků. Co se stane, když I spusťte. / Mysum a dělat? No, za prvé, většina z vás bude pravděpodobně Souhlasíte s tím, že make - ach ne, dělám si srandu. Co jsem udělal špatně? Uh oh. To by mělo být složené závorky. To je, jak inicializovat pole. Moje chyba. Takže jsme již viděli dříve, než že typy jsou abstrakce C-úrovni, a to Úroveň počítačové abstrakce. Takže většina z vás pravděpodobně očekává, že se dělat, nebo za předpokladu, že by bylo. Ale co když jsem běžet. / Mysum? Co se bude dít? Jakékoli odhady? DIVÁKŮ: Bude to vytisknout slovo. SPEAKER: Bude to vytisknout slovo. Jaké slovo? DIVÁKŮ: [neslyšitelné]. SPEAKER: Jakékoliv jiné odhady? OK, vytisknout frázi. Můžete mít jakýkoliv výraz. To bude vaše strana. Každý, kdo má jiný hádat? Anna, jaký je váš odhad? DIVÁKŮ: Bude vytisknout - dva dopisy, nebo [neslyšitelný] jedno písmeno. SPEAKER: Jeden dopis. DIVÁKŮ: Mohu počítat jak mnoho [neslyšitelný]? SPEAKER: Nine. No, budu se jej spustit. To dělá přesně stejný věc. Dodává dvě čísla dohromady. Dobře, pojďme projít dva argumenty. Neznamená to však trvat argumenty. Takže nevím, kde by to mohlo možná si tyto argumenty. Ale pojďme se projít na 100 a 0. A dodává 100 a 0. To je šílené. Myslím, že ano. Negativní 4, který funguje taky. Můžete dělat, co chcete. To je stejně platný funkce sum. To je funkce sum. Ale ne, vy říkáte, že je to pole bajtů. Takže, co se to tu děje? Takže, ještě jednou, vraťme se k této myšlence že jsme si řekli na začátku. Jdete z kódu C-úrovni, až po montáž jazyk, do jedniček a nul. To je hexadecimální. Ale to je opravdu jen Hodně jedniček a nul. To je 72 jedničky a nuly, ne? 72 z nich a nuly. 9 bajtů. Každý byte je 8 bitů. Každý bit je jedna nebo nula. Takže 72 z nich nebo nuly. Já jsem právě napsal je takhle - spíše než psát to jako hodně jedničky a nuly. Ale to půjde z C-úrovně jazyk, až po montáž jazyka, kódu. A to se bude tisknout v kódu, Někde v těchto 72 jedničky a nuly že jsem napsal tu jsem. Takže někde v tom, že - pojďme zde - někde v mysum, program, tam jsou tyto 72 jedničky a nuly, které jsem napsal a řekl ji psát. Nyní, žádné odhady pro to, co ty, 72 z nich a nuly znamenají? DIVÁKŮ: Pravděpodobně stejný věc, jako vrátit a navíc b.. SPEAKER: Pravděpodobně stejný věc, jako vrátit a navíc b.. Pojďme ověřit, že. Pojďme zjistit, jak jsem to udělal. Takže pokud jste se vrátit sem, řeknu vám Ke spuštění tohoto příkazu, objdump-S sumfunction.o. Pojďme spusťte jej. objdump - obj, dump. V podstatě mi to může dát co chci vidět. To mi může dát assembleru. To mi může dát jedničky a nuly. To má spoustu příznaků. To je jeden jedeme použít pro teď. Dot - jak vidíte na snímcích - pomlčka kapitál S říká, intersperse, Zdrojový kód - tento řádek je od C - s montáží kód a s jedniček a nul. A jdeme na běh to na sumfunction.o. Vzhledem k tomu, že to bude lépe vidět. Opět - hmm? DIVÁKŮ: hláskoval jsi to špatně. SPEAKER: Ale já jsem vlastně děje aby si ji pročistil za sekundu. Já jsem první otevřu jen sumfuntion.o. DIVÁKŮ: hláskoval Můžete jej špatný poprvé. SPEAKER: Classic. Sum - že je těžké slovo, ačkoli. To byste se divila. OK, takže to je sumfunction.o. Nemohl jsem ani říct. Je tu spousta nul, jasně hodně nul, a tam je nějaký jiný věci, to není nuly. Ale většinou nuly. Vypadá to, že některé z nich. Tak jasně, je to těžké číst. To je binární jazyk. Pojďme nyní otevřít - co? Co dělám špatně? Už jsem to píše správně? OK, je to trapné. Musím jednu sekundu přijít z toho, co dělám špatně. To je jedna chyba. To je divné. Oh, to je důvod, proč. Chystám se vrátit k naší počáteční jeden, takže se můžeme podívat na strojového kódu to. Vzhledem k tomu, že to opravdu bude být něco, když jsme jen dát ty a nuly v. Tam jdeme. OK, takže každý může vidět. Tato funkce, jak už jsem řekl, uhasit linky C - řádky kódu zdroj - s některými montážními pokyny. Zde je náš zdrojový kód řádek. Tady je jeden, tady je další. Zde je návod montáže. To je to, jak vypadají. Montážní návod - se můžete dozvědět více z nich, pokud budete mít jiných tříd CS, ale jsou obecně instrukce. A pak zdroj a cíl. A pak tady je binární kód , která odpovídá této sestavě instrukce. Takže jak vidíte, tato funkce sum, Na konci dne, je tři návod na montáž. Pouze tři. Jeden mov - Tento m-o-v znamená tahu. Přidat stojany na Přidat. A r-e-t znamená návrat. Takže jeden mov, jeden doplněk, jedna zpáteční. A tohle, tady, jsou nuly a ty, které odpovídají tomuto kódu. Takže ty nuly a ty, pokud jste vím, ty, stačí dát ty rovně dovnitř A pak to udělám Totéž přesně věc. Vzhledem k tomu,, na konci dne, vše jste provedení je dlouhá série nuly a ty. A to je to, co skutečně je váš kód. A důvod - Pojďme se podívat na jednu věc. Už jsem si Makefile otevřená? Takže když jsme se vrátili do pomlčka nula, nula sem - Omlouvám se, kapitál o kapitál o nulu, není nula, nula. A my to dělat, by to stále fungují stejně. Ale teď, zjistíte, že existují mnohem více montážní návod. To je proto, že opět, zeptal jsem se kompilátor nemůže dělat žádné optimalizace. Takže jsem mohl ještě vzít všechny tyto nuly a ty, a házet je do, a to by mohlo fungovat. Jen jsem udělal, že optimalizace, protože je to trochu jednodušší, pak, napsat, že pole. Ale to by fungovat stejně dobře. OK, jdeme udělat jednu poslední věc, protože si myslím, je nejlepší část. I když každý je jasně již foukané a němý. Naše mysl je spálená. [Neslyšitelný] Tak, to je z jiné třídy CS, což je velmi zajímavé, že jsem se - CS61. Vřele doporučuji udělat si jej. Ale v pohodě část o této skutečnosti, že věci jsou jen nuly a ty, je, že vše, co je nuly a ty. Takže si můžete vzít soubor, který má správné nuly a ty, které chcete někde v něm, a použít tuto část nuly a ty jako funkce sum. Co tím chci říct, že? Myslím si můžete vzít obrazový soubor, který má správnou řadu nul a ty, které tisknou něco se na obrázek. A jeden program může interpretovat je obrázek, ale můžete interpretovat jej, pokud Chcete-jako funkci SUMA. Takže pokud bychom chtěli otevřít, pro Například tento obrázek. Pojďme, Hello Kitty. Úžasný malý obrázek. V tady je to, že řetězec nul a ty. Tyto 72 nul a ty existují v tomto snímku. Takže co se dá dělat, pak je napsat - Musím si vzpomenout, kde jsou. Najdu, že ve vteřině. Ale my - dovolte mi, abych zjistil, kde jsou. Jeden sec. Pojďme udělat - DIVÁKŮ: [neslyšitelné]. SPEAKER: Díky. Takže pokud bychom spustit tento program, který místo toho přečte v souboru, pak to jde tohoto indexu v souboru. A pak znovu, stejně jako mysum, vezme dvě čísla. Můžeme přidat čísla přesně stejné jako jsme dělali předtím, což vede k ukázat vám, jak to, že na konci dne, všechny tyto věci jsou nuly a ty. A to je to, jak si vybrat je interpretovat. A pokud jste skutečně vypadat na tomto obrázku - pojďme přiblížit trochu. Může to všichni vidět? Všimnete si tady, je tu nějaký divný rozmazání. Pojďme - to je původní obrázek. Všimnete si, zde není šmouha. To je kód pro funkci sum, je to trochu šmouha právě tam. A skutečně, opět, pokud jste se dozvědět více o tom, budete si uvědomit, že tento Hello Kitty, který má ještě větší šmouha, má kód, který může převzít počítač, pokud to není chráněn přiměřeně. Takže můžete ve skutečnosti spustit to. Nebudu jej spustit hned. Ale můžete spustit tento Hello Kitty obraz, a to může převzít počítači. Tak to je vše pro demo. Má někdo nějaké otázky, komentáře, obavy? Myslím, že tohle je fascinující. To mě inspirovalo dozvědět se více. Vřele doporučuji, pokud máte zájem vůbec na CS, mluv se mnou. I když jsem si a sociálních studií Koncentrátor, jsem CS, sekundární, tak Pořád vím, trochu. Ale já určitě vím, co třídy, měli byste vzít. Myslím, že je to opravdu zajímavé, a vyzývám vás, samozřejmě, na dozvědět se více, pokud máte zájem. OK, mám jednu poslední věc. Promiňte. Jakékoliv dotazy? Nechtěl jsem pauzu čekat, jestli někdo měl nějaké otázky o tom. Je někdo bude Koncentrátor CS? Nebo o tom přemýšlet? Jedna, dvě, tři, čtyři. One - pouze jeden. Anna to je jen ruka, která je zvedl autoritativně. OK, to je v pohodě. Assam, co budeš dělat? DIVÁKŮ: [neslyšitelné]. SPEAKER: Constantine? DIVÁKŮ: Fyzika. SPEAKER: Páni, to bylo rychlé. Vy jste měli špatnou zkušenost v CS50? [Neslyšitelné], co budeš dělat? DIVÁKŮ: Nemám tušení. SPEAKER: Curt? DIVÁKŮ: Econ nebo CS. SPEAKER: Econ nebo CS. Tom? DIVÁKŮ: Dělám Stat. SPEAKER: Stat? OK. Co jsi zač? DIVÁKŮ: Me? SPEAKER: Jo. DIVÁKŮ: Stat. SPEAKER: Stat. Ach, tady jsi. Tome, mluvit s Alden. Emily, co jste? DIVÁKŮ: Biomedicínské - SPEAKER: Jste v této sekci? Diváků: Ne SPEAKER: OK, to je Emily. Je to můj přítel. Samozřejmě, že ne, že dobro přátel protože ona mi dává zabrat. Ty by mohly být hezčí se mi před každého, můj student - DIVÁKŮ: Dělám svou Q průvodce. SPEAKER: Opravdu? Uh oh. OK, ty jsi úžasná. Miluju tě tak moc. Ach jo. Každopádně jsem včera v noci, jako všechno - Jsem si jist, všichni se zdá opravdu zdůraznil právě teď. Nevím, je nováček - jsou vy jste ve stresu? Mám pocit, zdůraznil. Bylo to jako, jdete domů na Den díkůvzdání. Jsi rád, budu dělat všechny tyto věci. DIVÁKŮ: Je to tak odlišné. SPEAKER: Jo, a vrátíš. Jeff, nemáte pocit, že způsob, jakým? DIVÁKŮ: Jen jsem si myslel, Já bych to trochu. SPEAKER: OK, dobře. Tak jsem se vrátil, a nemám nic neudělal. A to vše velmi stresující. A já jsem obavy, skutečně týká, o tom, zda jsem nebo nejsem bude až do konce vše, co musím. Ale včera v noci, nebyl jsem ve stresu, Byl jsem trochu smutný. Tak jsem napsal ve svém deníku o co jsem byl smutný. A byl jsem smutný o této sekci v této třídě chýlí ke konci. Tak jsem jen tak číst pro vás malý úryvek z mého deníku, z minulé noci. Mohu dostat nějaké ubrousky, Některé tkáně z Toma? Ne, budu plakat. Nechci plakat. Ne, že nemůžete plakat, Já jen neplač. Já ani nevím, jestli moje slza žlázy pracoval - slzné kanálky. Jsem křičel po dlouhé době. DIVÁKŮ: [neslyšitelné]. SPEAKER: OK, díky. OK, je tu trochu předmluva - tam je nějaké jiné části mého deníku vstup, protože se snažím deníku každý noc předtím, než jsem se dostal do postele. Vřele doporučuji deníku. To vám pomůže zpracovat věci, a také být velmi vděčný z vašeho dne. A to dělá to mnohem jednodušší se podívat zpět na svůj den, a uvědomit si, že tam bylo hodně dobrý věci, které se stalo. I když se cítíte opravdu zdůraznit, v noci nebo opravdu naštvaná, nebo Opravdu smutný nebo unavený. Oh, můj bože. Já ani nevím, jestli je to napsáno, že dobře, protože jsem neměl zkorigovat to. Ale my si to přečíst. I obvykle nemají číst mé časopis, samozřejmě. "Zítra budu učit mé poslední CS50 část roku. Je to šílené, jak rychle ten čas letí. Přesto, jsem ohromen tím, jak různé moje zkušenost učí v letošním roce byl než když jsem byl ve druháku. Pro začátek, určitě vím, materiál lépe. Ale neříkejte to mé první kohortu studentů, které. Ještě důležitější je, nicméně, jsem si uvědomil, že radost, která přichází z postavení v přední části místnosti, co začíná jako cizinci, ale skončí jako v alespoň, přátelé na Facebooku, je není první rok náhoda. Spíše je to z vědomí, že v některé malé způsob, pomáháte talentovaný, přemýšlivý, nádherný, a vášniví lidé dozvědět něco více o informatice. Jste přesouvá že žárovku jen bit v zásuvce, tak, že je schopna zářit jasněji než vy, nebo oni, by si mohl představit na začátku semestru. Ty pomáhají zase ty mračí vzhůru dolů a klást otázky, které poskytnout podporu, ale stále umožňují Studenti se postavit na vlastní pěst. Je to rozhodně není přehnané říci, že tato část je moje oblíbená část týdne. Nebo dokonce, že jsem neváhal říci, že je to vše, na 17:30 každý týden, protože věděl, že to bude příliš dlouho dokud se znovu setkáme. Přesto, že jsem neuvěřitelně vděčný každý, kdo mi dal to možnost vrátit k ostatním. Davidovi za jeho trpělivost a důvěru. K filmové a produkční posádkou, pro takže vypadám trochu slušný. A co je nejdůležitější, aby svým studentům, bez nichž bych mít žádný důvod k strávit 10 hodin přijít na to nejlepší způsob, jak kreslit odkazy, nebo vyložit Tabulka delfínů, přes JavaScript. Jako vždy, to bylo požehnání. " Takže s tím, děkuji kluci. Uvidíme se všichni na CS50 veletrhu, a Hackathon, jestli tam jsi. A pokud máte nějaké dotazy, budu se držet kolem, dokud nejsou k dispozici žádné další. Ale děkuji vám kluci za skvělý rok. [APPLAUSE] SPEAKER: bych mohl plakat.