SPEAKER: OK, dus je zult het niet geloven, maar vorige week, op maandag, in Pierce, I was in de kelder. Ik heb nooit naar Pierce. En ik ben nooit meer terug te gaan, omdat Ik liet mijn spullen alleen voor, zoals, vijf minuten en iemand stal mijn computer en mijn telefoon uit mijn rugzak. Wat betekent dat ik kreeg het terug, en dan minder dan een week later het werd weer gestolen. En toen het werd aangezet - Zoek mijn iPhone blijft te zijn nutteloos. Dus ik blijven aanmoedigen niet te gebruiken. Het ingeschakeld keer en het was in MIT, als 15 minuten later, en de persoon noemde dit telefoonnummer dat aantoonde in mijn AT & T bellijst. Dus ik online ging, belde die telefoon nummer, en ging recht op deze antwoordapparaat in het Spaans. En ik heb sindsdien niet van gehoord. Dus moest ik een nieuwe krijgen computer en telefoon. Ik weet het. Yeah. Maar als jullie willen chip in mijn computer fonds na deze, dat is waarom Ik heb je hier gevraagd. Grapje. Maar dat was echt triest en traumatisch. Maar het is nu allemaal terug, en dat was de reden waarom de p-set 8 duurde zo lang, omdat Ik heb geen computer. En iemand heeft hem gestolen. En ik gemaild met de vraag of zij zou graad uw-p set 8. Maar ze zei nee. En ik was als, kan ik mijn computer terug? En ze zijn als, nee. Grapje. OK. Dit is onze laatste deel, en ik heb een paar - we hebben maar drie dingen op de agenda. We gaan een beetje praten over de Q-gids. Dan gaan we besteden 15 minuten op een koele demo. Dan gaan we allemaal zeggen afscheid van elkaar. Je hoeft niet echt uw computers nodig of een pen of papier om aantekeningen te maken, of volgen langs. Dus ik neem aan dat als u uw computer up, dan ben je op Facebook. Gewoon zeggen. Tenzij je het invullen van de Q gids, die voor het eerst is. De Q gids is geopend. Je hebt een e-mail over het had. Zodra alle Q spullen bij de wordt ingediend einde van het jaar, krijg ik alle Q commentaren in de scores van iedereen die ervoor kiest om mij feedback te geven. En dus als je in de Q - Ik weet niet of je dit kunt doen, Jeff, want je bent en uitbreiding student. Maar als je in de Q, als je niet het al eerder gedaan, u kiest uw leraar, dat is David Malan. Je moet hem doen. En dan kun je kiezen TFS. En u kunt kiezen zo veel TFs als u wilt. Maar er zijn 60 van ons. Je hoeft niet iedereen te plukken. Je kunt me gewoon kiezen, of kies gewoon een paar andere mensen, als je wilt, om geef ze feedback ook. En dan krijg je scores op al deze verschillende assen, en dan kun je vertrekken hen feedback. En dan, net als een maand later, Ik zal alles wat feedback te krijgen. En net als de feedback die je bent geweest geeft me het hele semester, ik lezen dat alles. En het is erg behulpzaam, en het helpt me groeien als leerkracht en als een individu. Dus, alstublieft, neem de tijd om het te doen. We gaan alleen om hier te zijn voor, zoals, 30 minuten. Dus als je wilt, aan het einde van deze, tot nemen vijf minuten, en vul gewoon Q, omdat het geen rekening meer tijd dan dat. Dat zou ook geweldig zijn, en u krijg je cijfers terug sneller als u vult het Q. Dus de meeste van jullie hebben dat gedaan - of geen, ongeveer de helft van je al eerder gedaan. Maar als je een eerstejaars, dat is wat dat is. Het zal hetzelfde zijn voor alle klassen. Doe het. Het duurt vijf minuten. Maar ook, als je het een beetje serieus, dat is niet het ergste in de wereld, omdat ik zeker serieus te nemen. Dus als u mij een smiley gezicht, Ik zal waarderen dat. Maar ik zou ook op prijs stellen als u liet me meer dan een smiley. Maar het is aan jou. Ik kan je niet vertellen - of als een grote smiley geconfronteerd, met een hoofdletter D. Dat zou nog beter. OK, dat is alles wat ik heb voor de Q. Als je vragen hebt, kunt u vragen me, maar vrij vanzelfsprekend. Gewoon, alsjeblieft, vul het in. Ik zou het werkelijk waarderen, en het betekent veel voor me. OK, dit is wat we gaan besteden 15 minuten gaan door. Ik ga je laten zien wat code. Ik denk dat dit is echt cool, en dit heeft me meer opgewonden in de informatica. Dus ik hoop dat het zal doen de hetzelfde voor jullie allemaal. We gaan openen - en dit alles code ik je later te verzenden. Maar we gaan gewoon open te stellen - Ik ben in mijn terminal - we gaan dit programma open genaamd [? MySum. ?] Kan iedereen lezen dat, of moet ik het groter maken? Kan iemand mij vertellen wat deze code wil doen wanneer ik het, of wat dit programma zal doen wanneer ik het? [? Avi,?] Wat denk je het gaat doen? Finish kauwen. Je moet niet met praten je mond open. PUBLIEK: Duurt het een stelletje argumenten, vinden som van hen terug te keren sum, en print het dan uit? Of duurt het in twee argumenten, en dan doet het [onverstaanbaar]. En dan drukt wat de resultaten zijn. SPEAKER: Close, heel dichtbij. Iemand wilt toevoegen aan [? wat Avi?] gezegd heeft? Heb je nodig om dit programma te geven elke command-line argumenten? PUBLIEK: Nee SPEAKER: Nee. Wat gebeurt er als je het niet geven elke command-line argumenten? Ik schrijf gewoon dot slash MySum. Publiek: 1 plus 2 is gelijk aan 3. SPEAKER: 1 plus 2 is gelijk aan 3. En het zal drukken dat uit. Zo is het precies. Je zult zien dat de afdruk f lijn aan de onderkant. Het zal uitprinten a, b, en dan de som van a en b. En ik denk dat je ervan uit dat som correct werkt. Goede aanname. OK, en wat gebeurt er als ik geef het wat argument? [? Manu? ?] PUBLIEK: Het zal toevoegen wat het eerste argument is om b. Of 2, sorry. SPEAKER: Rechts, 2. Weet iemand wat strtol doet? Het is eigenlijk atoi. Atoi is eigenlijk een mooie versie van - of een eenvoudiger versie van strtol. Maar het daadwerkelijk gebruikt strtol. En ik vond dat omdat ik wilde iets als atoi, en toen ik heeft atoi, hier lees ik beneden. En ik vond 'dit gedrag is hetzelfde als "strtol. Dus het is eigenlijk atoi voor alle doeleinden. En ik zie je zelfs nul en 10 gebruiken. Hiermee kunt u eigenlijk een string te nemen, en zet hem in een nummer en kies wat basis wilt u het erin doen Dus dit is basis 10 hier. Ik kon base twee hebben gedaan voor decimaal, basis 16 voor hexadecimaal. Het is wel cool. Maar lang verhaal kort, dit duurt twee nummers en voegt ze samen. Dus laten draaien. En je zult ook merken, is er zijn een aantal dingen - dus ik heb een makefile hier, en als je die open te stellen, sommige dingen u zult merken zijn verschillend. Met name dit argument hier, je waarschijnlijk nog niet eerder gezien dat. In het algemeen, dingen verzamelen we met streepje nul, nul. Dash nul, nul, betekent dat niet doen eventuele optimalisaties, compiler. Probeer niet en maken iets bijzonders, of maken iets sneller lopen, of krijgen ontdoen van variabelen die nodig zijn. Gebruik deze code niet te optimaliseren op alle, Ik vraag voor het derde niveau optimalisatie. Dus ik vraag compiler te doen veel optimalisaties. Je kan dat veranderen in de makefile wanneer je moet deze code, als je wilt om verschillende dingen te zien. Die we zullen laten zien in een tweede. Dus lopen we mijn som 1 plus 2 plus 3. Iemand mij twee argumenten. PUBLIEK: 4 en 5. SPEAKER: 4 en 5. Dank u. Geweldig, het werkt. Wat zijn enkele andere goede argumenten om te proberen, om ervoor te zorgen dat dit werkt? Iedereen? PUBLIEK: 0. SPEAKER: 0 en? PUBLIEK: Negatief 3. SPEAKER: Het werkt. Maar dat waren goede keuzes. OK, dus laten we hier terug te gaan. Dit is mysum.c. U zult merken dat er ook iets genoemd sumfunction.c. En dit zegt, oh, er is iets gedefinieerd in sumfunction.c. Ik denk niet dit bestand opnemen in hier omdat ik het niet nodig is. Maar ik koppelen in toen ik compileren, die je opgevallen. Laten we omhoog. We zagen toen we samengesteld mysum, rechts daar wij verbonden in het binaire van sumfunction.o. En ik wil niet de header bestand nodig omdat, natuurlijk, is er de functie verklaring. Zo scherp omvatten normaal gesproken gewoon puts in een functie verklaring. Hier heb ik zet ze gewoon rechtdoor in de code. En dus ik moet doen is link in de binaire, dat doe ik. Elke gissingen voor wat in sumfunction.c? Welke code die ik heb geschreven in sumfunction.c? PUBLIEK: [onverstaanbaar]. SPEAKER: Elke gissingen? Yeah? Publiek: Ik denk, definieert sommige [onverstaanbaar]. SPEAKER: Ja. Dus ik doe schrijven int som int a. Ik schrijf deze lijn, en dan heb ik geopend accolade, gesloten accolade. Wat denk je dat ik schrijf binnen die accolades, in die functie? Yeah? PUBLIEK: Return gelijk aan een. Processor: Dat is echt een goede gok. Wie denkt [? Manu?] Heeft er gelijk? Het zegt weer een plus b. OK, niet iedereen. [? Akshar,?] jij ook? Weet je het zeker? OK. Wat? PUBLIEK: U het verkeerd gespeld. SPEAKER: Nee, dat deed ik niet. Yeah, just kidding. Je hebt gelijk. Dat is precies wat het zegt. Het is weer een plus b. Dat maakt veel zin. OK, laten we hier terug te gaan. We zien hoe de header - dat is de return type. Vergeet niet, we hebben die dag een gezien, de terug type van de functie, maar gaat voor de naam van de functie int. Hier heb ik geschreven int. Wat denk je dat er zal gebeuren als in deze functie, ik schrijf niet int, maar Ik schrijf niet ondertekend? Het verschil is natuurlijk, is dat unsigned vertegenwoordigt alleen positieve getallen en int kan positief of negatief. Dus ik heb de terugkeer veranderd type van deze functie. Deze code komt niet overeen deze terugkeer te typen hier. Wat denk je dat er zal gebeuren toen ik compileren? Je moet tegen me schreeuwen. Geen geschreeuw. Hoe zit het wanneer ik het programma? Laten we het doen voordat 0 negatief 3, of negatief 1. Het werkt nog steeds, hoewel ik zeg het is terug een unsigned integer. Het is duidelijk dat het niet terugkeren een unsigned integer. Het stuurt een integer. Het terugkerende negatieve 1. OK, dat is raar. Hoe zit het als ik ga in hier en dat doen? Dus ik heb alles veranderd van int naar unsigned. Het kan alleen gehele getallen zonder teken. Maar denken we nog steeds dat het zal lopen? PUBLIEK: Ja. SPEAKER: Het zal. Dat is te gek. En we gaan in een duidelijk toegewezen integer, kunnen we twee passeren ondertekend integer, het werkt nog steeds. OK, geen ideeën waarom het nog steeds werkt, of wat gebeurt er? Ja, Jeff. Publiek: Het heeft iets te maken met uw optimalisatie die u gemarkeerd. SPEAKER: Nee. We konden de optimalisatie veranderen, het zou nog steeds werken. Ik kan dat voor je doen, maar - Publiek: Ik zal uw woord te geloven. SPEAKER: Ja. Als je de makefile hier te openen, Ik veranderde de optimalisatie. Dus je kunt dash nul, nul doen. Het werkt nog steeds. Andere gedachten? Jullie allemaal verwacht om te werken, zodat Waarom heb je verwacht dat het werkt? Nee? Stilte. OK. Ik moet zeven seconden te wachten, omdat ik een vraag. Zodat de koele ding over C, en je hebt waarschijnlijk meegemaakt - u misschien niet, deze macht de eerste keer zijn. Maar zoals u allen weet, als ik schrijf iets in C, is het niet op te slaan als deze op de computer. Het is opgeslagen als enen en nullen. Het gaat van C-code naar assembly code. Heeft iemand gezien montagecode voor, machineassemblage code? We kijken naar een tweede. Het gaat van C-code naar assembly code. En jullie weten de fasen van compilatie. Je moest onthouden dat voor een quiz, en dan schrijf het op quiz nul. De meeste mensen hebben het mis. Ik denk dat jullie vastgespijkerd. Maar, jullie zijn de beste sectie voor quizzen, trouwens. Wat geweldig is. Het zal je geen kwaad doen. Wees niet ongerust. Maar het is echt cool. Goed gedaan. Dus het gaat om assembler, en dan gaat enen en nullen. En de enen en nullen worden opgeslagen op de computer, en dat is wat opgeslagen in de a.out, of in dit geval, het uitvoerbare bestand. En de computer draait enen en nullen. Rechts? We hebben dit eerder geleerd. Zodat de koele ding is, deze niet ondertekend idee, het idee van de soorten ints unsigned, et cetera, et cetera, dat is hier in de C taal. Deze bestaan. Maar types niet bestaan de enen en nullen. Types niet eens echt bestaan de assemblage taalniveau. Dus dat is iets dat bestaat in C wereld, maar bestaat niet in de computer wereld of processor wereld. Dat is een abstractie die de C taal heeft opgenomen, om onze leven gemakkelijker. Dus aan het eind van de dag, kan ik schrijven veel verschillende dingen hier, en het maakt niet het verschil maken. Want dat alleen bestaat in de C wereld. Het bestaat niet in de enen en nullen wereld. En onze programma's uitvoeren in de enen en nullen wereld. Dus je geest duidelijk nog niet geblazen. Maar ik denk dat dat is cool. Ja, Jeff. PUBLIEK: Dus, als in plaats van doen int, je char doen. En je was - SPEAKER: Laten we het doen in een sec. PUBLIEK: Want dan krijg je een unsigned gaande van negatieve 128 tot 127 of 0 tot 255. SPEAKER: Dus char is problematisch. Weet iemand waarom char zou zijn problematisch, en het zou eigenlijk dingen veranderen in degene en nullen wereld? PUBLIEK: Vanwege de omvang van de char. SPEAKER: Grootte van char is 1. Dus unsigned is 4 bytes. Dus zou char dingen verpesten. Maar wat is 4 bytes dat is gerelateerd aan een char? Of op dat voegt een extra - kunt u een meer karakter zetten na char. PUBLIEK: Char ster. SPEAKER: Char ster heeft 4 bytes. Dus laten we iets doen dat is een char ster. Dus dit zou waarschijnlijk werken, maar we zijn gaat nog iets te doen gekker dan dit. In mijn mening, gekker. Ik heb nu geschreven een functie die terugkeert een pointer, en het duurt een pointer en een unsigned waarde - we zullen Wijzig deze terug naar int dus we zijn niet het maken van te veel veranderingen tegelijk. En het heeft een array genoemd, indexen in de array, en keert de adres van. We hebben deze operatoren eerder gezien. Dit, wat denk je dat dit gaat te doen, in ruil daarvoor, wanneer ik het? Wat denk je dat het gaat doen? Elke gissingen? PUBLIEK: Segfault. SPEAKER: Wat? Segfault? Dat is een goede gok. Tom zegt hetzelfde. Eventuele andere gissingen? Wie denkt dat het gaat om hetzelfde doen? Wie denkt dat het gaat om segfault? Het doet hetzelfde. Sorry. Maar natuurlijk hebben we in 1 en 2. En die zijn beide geldig, toch? Laten we eens kijken, kunnen we naar de tweede plaats van een array. Maar wat als we b een negatief getal? Dat is waarschijnlijk een betere schatting voor iets segfaulting. Het werkt nog steeds. OK, dit is nu gek. Dit is even geldig som functie. Dit doet precies hetzelfde als return a en b. Kan iemand uitleggen waarom dit een goede Kortom functie, of waarom dit werkt? Wat hier gebeurt? Waarom heeft deze doen precies hetzelfde zoiets als onze oude som functie? [? Akshar,?] wat er aan de hand? PUBLIEK: Want als je een een dat is een adres aan de locatie geheugen - en wanneer je de ampersand doen, gaat naar dat geheugen adres. En als je naar B, je bent een soort van bewegende stappen uit dat het geheugen adres, je terug bent dat. Dus je bent eigenlijk, in feite, het toevoegen van a en b [onverstaanbaar]. Waar zijn standaard bewerkingen op die terugkeer? Zoals, waar komen de haakjes vallen? Is de terugkeer van het adres op een voor of na [onverstaanbaar]? SPEAKER: Het gaat om index in b - of index in een - en dan terug het adres. OK, dus is iedereen begrijpen Wat [? Akshar?] zei, en legde uit, waarom dit werkt? Dat deed ik niet, de eerste keer dat iemand verklaarde dit voor mij. Zou iemand graag een foto om dit te verklaren? We gaan een tekening, met geen markers, dat is geweldig. Vond een aantal. Dus we hebben een scala dat is een reeks dozen. De eerste is een index 0, index 1, 2, 3, 4, punt, punt, punt. Een typische array. En naast het hebben indices, ze hebben allemaal geheugenadressen. Dus laten we dit geheugen adres 13, 14, 15, 16, 17 et cetera. Iedereen is hier zo ver. Dus een is een adres. De naam van een array, een pointer wordt daar opgeslagen. Het is een pointer, het is een geheugenlocatie het begin van de matrix. Als dit het array een zou een waarde van 13 zijn. En natuurlijk, we kunnen geven een willekeurige waarde die we willen. Char ster een, kunnen we een geven elke geheugenadres we willen. We kunnen het geven 0, kunnen we het geven negatieve 1 - negatief 1 bestaat niet, dus dat is waarschijnlijk problematisch, maar je zag dat het nog werkte. Dus we kunnen een willekeurig aantal die we willen geven, alle vormen van geheugen adres dat we willen. Dan, int b zegt: OK, ga dit nummer van stappen in de array. Als b gelijk is aan 2, en gelijk aan 13, we zijn op geheugenadres 13. En we gaan twee stappen, en zo zijn we hier. En de ampersand betekent terugkeer het adres van deze locatie. En dit adres is uiteraard 15. Dus krijgen we 13 plus 2, of a plus b, die 15. De vraag is echter - Het spijt me. Betekent dat de dingen verduidelijken waarom dit werkt? PUBLIEK: Waarom zou het werk gaan - dus je kunt een array en hebben naar een negatieve index? SPEAKER: Juist. Dus deden we negatieve getallen, dus dat is het - maakt dit gevoel wel, eerste, [? Avi,?] voor u? Publiek: Ja, ik ben gewoon [Onverstaanbaar], maar - SPEAKER: Ja, dit zou 15 terugkeren. Als een was 13, en b is 2, Dit zou 15 terugkeren. PUBLIEK: Dus de nul indexering niet uitgegroeid tot een probleem, toch? Omdat je beweegt van 0. SPEAKER: Juist. Dus je beweegt - dus als b is 0, je zou nergens bewegen. En je zou net terug het adres - als b is 0, dat is in wezen terug dat adres van een. Passeren in char ster een en terugzending van het adres van een is net terug van een, wezen. OK, de vraag is waarom doen negatieve getallen werken? En dat is het leuke aan dit, want dit moet segfault. En het zou een segmentatie fout geeft als we zoiets deed. Laten we zeggen, int. Dus deze code ziet er identiek en moet identiek gedragen. Wezen, x is een vuilnis variabel, en dus moet deze identiek gedragen. Laten we dit - oops - in ster. OK, we zijn al fouten krijgt hier, omdat het al gaat om boos te zijn bij mij, omdat het al weet wat er gaat komen. Vooral de tweede. Adres van gestapelde geheugen geassocieerd een lokale variabele. Wezen, ik ga niet te compileren dit, en dan ga ik om ongedaan te maken doen wat we net deden. Maar omdat we eigenlijk nooit toegang tot wat er op het geheugen locatie, het gaat niet om segfault. We zijn nooit eigenlijk op zoek naar wat er in de tweede doos of wat zit er in elke doos van deze array. We zeggen alleen, hier is het adres van het ding die we zoeken en terug dat adres. We zijn eigenlijk nooit in te gaan op de array om te kijken naar die locatie. En omdat we nooit het geheugen aanraakt, krijgen we niet in de problemen. We hebben geen een segfault krijgen. Als we geprobeerd om, opnieuw, raakt dat geheugen, raakt wat er op a of b - of een beugel B en uitgaande a is 0 en - als er een is 0, zelfs, dat zou mooi zijn slecht, omdat we niet kunnen gaan helemaal naar beneden daar. Indien a en b zijn beide 0, en we probeerden raken wat er was, dan zouden we krijgen in de problemen. Maar als we niet aan wat er is, we hebben net weer het adres, het is eigenlijk niet van plan om segfault omdat het laat je die handelingen uitvoeren. Het wordt alleen maar boos op je, en krijgt super boos, wanneer u probeert en raak de werkelijke geheugen en terug wat op die geheugenplaats. Is dat logisch? Dat is gewoon een gek deel van C. Dus, we hebben nog een van deze. Wie denkt dat dit cool? Meer mensen. Dat is goed. OK, dit is onze laatste. En ik zou graag willen dat u mij zeggen of of je niet dat dit gaat om precies dezelfde dingen doen. Ik heb deze opgeschreven ergens. Ik ga ze niet onthouden. Laten we eens kijken, 8, 4 b, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. Dus dit is een array nu, geen functie. En het is een array omdat we vierkant haakjes, niet accolades. En het is een array van welk type? Iedereen, hmm? PUBLIEK: Hun hexadecimale getallen? SPEAKER: Maar wat is het type C? Ze hebben allemaal hexadecimale getallen. Wat is het type C? Het vertelt u. PUBLIEK: Het is unsigned chars. SPEAKER: Rechts, unsigned chars. En twee hexadecimale getallen een byte. Dit zijn 1, 2, 3, 4, 5, 6, 7, 8, 9 bytes. Het is een array van bytes 9. OK, u waarschijnlijk al weet het antwoord op deze vraag. Maar, wat denk je zal gebeuren als ik dit uitvoeren? Ik zeg nogmaals, in mysum.c, Ik verwacht een functie dat duurt twee gehele getallen. En ik plaats zeggen dat som is een array van karakters. Wat gaat er gebeuren wanneer Ik run. / Mysum en maken? Nou, ten eerste, de meeste van jullie zullen waarschijnlijk het erover eens dat make - oh nee, just kidding. Wat heb ik verkeerd gedaan? Uh oh. Dat moet accolades. Dat is hoe je een array initialiseren. My bad. Dus we al eerder dat types zag zijn een C-niveau abstractie, geen computer niveau abstractie. Dus de meeste van u verwacht dat het waarschijnlijk om maken, of de veronderstelling dat het zou maken. Maar wat als ik run. / Mysum? Wat gaat er gebeuren? Elke gissingen? PUBLIEK: Het gaat om afdrukken van een woord. SPEAKER: Het gaat om afdrukken van een woord. Welk woord? PUBLIEK: [onverstaanbaar]. SPEAKER: Alle andere gissingen? OK, afdrukken van een frase. U kunt elke zin hebben. Dat zal uw zijde. Iedereen die een andere schatting heeft? Anna, wat is je gok? PUBLIEK: Het zal afdrukken - twee letters, of [onverstaanbaar] een letter. SPEAKER: Een brief. PUBLIEK: Kan ik tellen hoe veel [onverstaanbaar]? SPEAKER: Nine. Nou, ik ga het uit te voeren. Het doet precies hetzelfde. Het voegt twee getallen met elkaar. Nou, laten we passeren de twee argumenten. Het heeft geen argumenten hebben. Dus ik weet niet waar het zou kunnen eventueel je deze argumenten. Maar laten we overgaan op 100 en 0. En het voegt 100 en 0. Dat is krankzinnig. Ik denk het wel. Negatieve 4, dat ook werkt. Je kunt doen wat je wilt. Dit is een even geldig som functie. Dit is een bedrag functie. Maar nee, je zegt het is een array van bytes. Dus wat is hier aan de hand? Dus nogmaals, laten we teruggaan naar dit idee dat we zeiden aan het begin. Je gaat van C-level code, om de montage taal, om enen en nullen. Dit is hexadecimaal. Maar dit is eigenlijk gewoon een veel enen en nullen. Dit is 72 enen en nullen, toch? 72 enen en nullen. 9 bytes. Elke byte is 8 bits. Elke bit is een of nul. Dus 72 degenen of nullen. Ik heb ze net geschreven als dit - in plaats van het uit te schrijven als veel enen en nullen. Maar dit zal gaan van C-niveau taal, montage taal, naar code. En dit zal uit te printen in de code, ergens, deze 72 enen en nullen dat ik hier heb geschreven. Zo ergens, dat - laten we gaan hier - ergens in mysum het programma er zijn deze 72 enen en nullen die ik heb geschreven en vertelde het aan te schrijven. Nu, elke gissingen voor wat die 72 enen en nullen betekenen? PUBLIEK: Waarschijnlijk hetzelfde zoiets als terug een plus b. SPEAKER: Waarschijnlijk hetzelfde zoiets als terug een plus b. Laten we controleren dat. Laten we eens uitzoeken hoe ik dit deed. Dus als je hier terug gaan, ik zeg je om deze opdracht uit te voeren, objdump-S sumfunction.o. Laten we gaan draaien. objdump - obj, dumpen. In principe kan mij wat ik wil zien. Het kan mij de assembler. Het kan mij de enen en nullen. Het heeft een ton van de vlaggen. Dit is degene die we gaan om voor nu. Dot - zoals je ziet in de dia's - dash hoofdletter S zegt intersperse, broncode - deze lijn is uit C - met de montage code en met de enen en nullen. En we gaan lopen het op sumfunction.o. Want het zal makkelijker zijn om te zien. Again - hmm? PUBLIEK: U het verkeerd gespeld. SPEAKER: Maar ik ben eigenlijk aan de hand om het vrij te maken voor een tweede. Ik ga eerst naar openen gewoon sumfuntion.o. Publiek: Je verwoord het de eerste keer fout. SPEAKER: Classic. Som - dat is een moeilijk woord, dat wel. Je zou verbaasd zijn. OK, dus dit is sumfunction.o. Ik kon niet eens vertellen. Er is een heleboel nullen, duidelijk veel nullen, en er is een aantal andere spul dat niet nullen. Maar meestal nullen. Lijkt alsof er wat degenen. Zo duidelijk, dit is moeilijk te lezen. Dat is de binaire taal. Laten we nu open - wat? Wat doe ik verkeerd? Heb ik correct te spellen het? OK, dit is onhandig. Ik moet een seconde te achterhalen wat ik verkeerd doe. Dat is een fout. Dat is raar. Oh, dat is waarom. Ik ga terug naar onze eerste een, dus kunnen we kijken naar de objectcode van dit. Omdat er niet echt van plan om van alles zijn als we gewoon de enen en nullen in Daar gaan we. OK, dus iedereen kan dit zien. Deze functie, zoals ik al zei, het blussen van de C lijnen - broncode lijnen - met enkele montage-instructies. Hier is onze broncode lijn. Hier is er een, hier is een andere. Hier is de handleidingen. Dat is hoe ze eruit zien. Montagevoorschrift - U kunt meer van deze leren als je nemen andere CS klassen, maar ze zijn over het algemeen een instructie. En dan een bron en een bestemming. En dan hier is de binaire code die overeenkomt met het verzamelcentrum instructie. Dus zoals je kunt zien, dit bedrag functie, aan het eind van de dag, drie montage-instructies. Slechts drie. Een mov - Dit m-o-v staat voor een verhuizing. Staat voor Toevoeg. En r-e-t staat voor Return. Dus een mov, een add, een terugkeer. En deze, hier, zijn de nullen en degenen die overeenkomen met die code. Dus die nullen en enen, als je ken die, kunt u gewoon die recht naar binnen En dan zal het op de precies hetzelfde. Omdat aan het einde van de dag, alle je bent het uitvoeren van een lange reeks van nullen en enen. En dat is wat de code echt is. En de reden - laten we eens kijken naar een ding. Had ik de makefile geopend? Dus als we gingen terug naar dash nul, nul hier - sorry, kapitaal o, hoofdstad o nul niet nul nul. En we hebben te maken, het zou werken nog steeds hetzelfde. Maar nu merk je dat er een veel meer montage-instructies. Dat komt omdat, nogmaals, vroeg ik de compiler elke optimalisatie niet te doen. Dus kon ik nog steeds al deze nemen nullen en enen, en gooi ze in, en dat zou werken. Ik deed gewoon de optimalisaties, omdat het is een beetje makkelijker, dan, die matrix te schrijven. Maar dit zou net zo goed werken. OK, we gaan nog een laatste ding te doen, omdat ik denk dat is de coolste onderdeel. Ook al is iedereen duidelijk reeds geblazen en sprakeloos. Onze geest wordt geblazen. [Onverstaanbaar] Dus, dit zijn uit een andere CS klasse, die super interessant, die ik heb genomen - CS61. Ik je ten zeerste aan te moedigen om het te nemen. Maar het leuke gedeelte over dit feit, dat dingen zijn gewoon nullen en enen, zijn dat alles nullen en enen. Zo kunt u een dossier waarvan nemen de juiste nullen en enen die u wilt ergens in, en gebruik dat deel van nullen en enen als een som functie. Wat bedoel ik daarmee? Ik bedoel, je kan een image-bestand te nemen dat de juiste reeks nullen en degenen, die iets af te drukken naar een beeld. En een programma zou kunnen interpreteren is een afbeelding, maar je kunt het interpreteren als je wilt, als som-functie. Dus als we wilden openen, Bijvoorbeeld, deze afbeelding. Laten we gaan, Hello Kitty. Prachtige kleine afbeelding. Hier is die string van nullen en enen. Die 72 nullen en enen bestaan ​​in deze afbeelding. Dus wat ik kan doen, is dus te schrijven - Ik moet niet vergeten waar ze zijn. Ik vind dat in een tweede. Maar we doen - laat me weten waar ze zijn. Een sec. Laten we het doen - PUBLIEK: [onverstaanbaar]. SPEAKER: Thanks. Dus als we dit programma uit te voeren, die in plaats daarvan leest in een bestand, dan gaat het om deze index in het bestand. En dan, nogmaals, net als mysum, neemt twee getallen. We kunnen nummers dezelfde als commentaar we eerder deden, die gaat naar laten zien hoe het feit dat, op het einde van de dag, al deze dingen zijn nullen en enen. En het is maar hoe je ervoor kiest te interpreteren. En als je er eigenlijk uit bij deze afbeelding - laten we inzoomen in een beetje. Kan iedereen het zien? U zult hier opmerken, is er wat rare vlekken. Laten we gaan - dit is het originele beeld. U zult merken hier dat er geen vlekken. Dat is de code voor de functie sum, is dat vlekje daar. En eigenlijk, nogmaals, als je meer informatie over dit, zult u beseffen dat dit Hello Kitty, die nog groter is smudge, heeft code die meer dan een kan nemen computer als het niet beschermd gepast. Dus je kunt eigenlijk dit uitvoeren. Ik ben niet van plan om het nu uit te voeren. Maar je kunt dit uitvoeren Hallo Afbeelding Kitty, en het kan nemen over uw computer. Dus dat is allemaal voor de demo. Heeft iemand nog vragen hebben, commentaar, zorgen? Ik denk dat dit spul is fascinerend. Het inspireerde mij om meer te leren. Ik beveel, als je geïnteresseerd bent op alle op CS, praat tegen me. Ook al ben ik een Social Studies Concentrator, ik ben een CS, secundaire, dus Ik weet nog steeds een beetje. Maar ik weet zeker wat klassen die u moet nemen. Ik vind het allemaal erg interessant, en ik moedig u, zeker, om Meer informatie Indien u geïnteresseerd bent. OK, ik heb nog een laatste ding. Sorry. Heeft u nog vragen? Ik heb geen pauze te wachten als iemand vragen hadden over. Is er iemand gaat worden een CS Concentrator? Of over te denken? Een, twee, drie, vier. Een - slechts een. Anna's is de enige hand die is autoritair opgevoed. OK, dat is cool. Assam, wat ga je doen? PUBLIEK: [onverstaanbaar]. SPEAKER: Constantine? PUBLIEK: Physics. SPEAKER: Whoa, dat was snel. Je had een slechte ervaring in CS50? [Onverstaanbaar], wat ga je doen? Publiek: Ik heb geen idee. SPEAKER: Curt? PUBLIEK: Econ of CS. SPEAKER: Econ of CS. Tom? Publiek: Ik doe Stat. SPEAKER: Stat? OK. Wat ben je? PUBLIEK: Me? SPEAKER: Ja. PUBLIEK: Stat. SPEAKER: Stat. Oh, daar ga je. Tom, praat met Alden. Emily, wat ben je? PUBLIEK: Biomedische - SPEAKER: Bent u in dit gedeelte? PUBLIEK: Nee SPEAKER: OK, dat is Emily. Ze is mijn vriendin. Duidelijk niet zo goed van een vriend, want ze geeft me een harde tijd. Je zou aardiger tegen me in front van iedereen, mijn student - Publiek: Ik doe uw Q gids. SPEAKER: Echt? Uh oh. OK, je bent geweldig. Ik hou zoveel van je. Oh boy. Anyway, ik, gisteravond, zoals alles - Ik weet zeker dat iedereen lijkt echt nu benadrukt. Ik weet het niet, zijn eerstejaars - zijn jullie gevoel gestrest? Ik voel me gestrest. Het was alsof je naar huis voor Thanksgiving. Je bent als, ik ga doe al deze dingen. Publiek: Het is zo anders. SPEAKER: Ja, en je komt terug. Jeff, je voelt je niet op die manier? Publiek: Ik dacht Ik zou een beetje te doen. SPEAKER: OK, geweldig. Dus ik kom terug, en ik heb niet iets gedaan. En het is allemaal super stressvol. En ik ben bezorgd, oprecht betrokken, over het wel of niet ik ben gaat alles wat ik moet afmaken. Maar gisteravond, ik was niet gestrest, Ik was gewoon een beetje triest. Dus schreef ik in mijn dagboek over wat ik was verdrietig over. En ik was verdrietig over dit gedeelte in deze klasse komt een einde. Dus ik was net gaan om te lezen voor jullie een klein stukje van mijn dagboek, van gisteravond. Kan ik wat servetten, sommige weefsels van Tom? Nee, ik ga huilen. Ik huil niet. Niet dat je niet kunt huilen, Ik huil niet. Ik weet niet eens of mijn traan klieren werkte - traanbuisjes. Ik heb niet gehuild in een lange tijd. PUBLIEK: [onverstaanbaar]. SPEAKER: OK, bedankt. OK, er is een klein voorwoord - is er een aantal andere delen van mijn dagboek binnenkomst, want ik probeer tijdschrift elke avond voordat ik naar bed. Ik beveel journaling. Het helpt je dingen te verwerken, en ook zijn zeer dankbaar voor uw dag. En het maakt het een stuk makkelijker om te kijken terug op de dag en beseffen dat er waren veel goede dingen die gebeurden. Zelfs als je het gevoel echt gestresst 's nachts of echt boos, of echt verdrietig of moe. O, mijn god. Ik weet niet eens of het is geschreven dat goed omdat ik niet nagelezen. Maar we zullen het lezen. Meestal doe ik niet lees mijn tijdschrift, natuurlijk. "Morgen zal ik mijn laatste les CS50 deel van het jaar. Het is gek hoe snel de tijd vliegt. Toch ben ik getroffen door hoe verschillend mijn ervaring in het lesgeven van dit jaar was dan toen ik was een tweedejaars. Om te beginnen, ik zeker weten het materiaal beter. Maar niet mijn eerste cohort vertellen studenten dat. Belangrijker is echter, realiseerde ik me dat de vreugde die uit staan aan de voorkant van een kamer van wat begint als vreemden, maar eindigt als bij Tenminste, Facebook vrienden, is geen eerste jaar toevalstreffer. Integendeel, het is uit de wetenschap dat, in een bescheiden manier, je helpt talentvolle, nadenkend, verrukkelijk, en gepassioneerde mensen leren een beetje meer over informatica. Je verschuift dat gloeilamp slechts een bit in zijn voetje, zodat het in staat te schijnen helderder dan u, of zij, had kunnen voorstellen bij semester start. Je helpt draai die fronsen ondersteboven naar beneden en vragen te stellen die ondersteuning bieden, maar nog steeds mogelijk studenten om op te staan ​​op hun eigen. Het is zeker niet overdreven om te zeggen dat dit gedeelte is mijn favoriet deel van de week. Of zelfs dat ik aarzel om te zeggen, dat is alle, op 5:30 per week, wetende dat het veel te lang zal zijn totdat we elkaar weer ontmoeten. Maar toch, ik ben ongelooflijk dankbaar iedereen die mij dit heeft gegeven gelegenheid om terug te geven aan anderen. David, voor zijn geduld en vertrouwen. Om de film en de productie bemanning, voor maakt me er enigszins respectabel. En, belangrijker nog, aan mijn studenten, zonder wie ik geen reden om zou moeten besteden 10 uur het uitzoeken van de beste manier om pointers te tekenen, of leg een tafel van dolfijnen, via JavaScript. Zoals altijd, het is een zegen. " Dus met dat, dank jullie. Ik zie jullie bij de CS50 beurs, en de Hackathon, als je er bent. En als u vragen hebt, zal ik vasthouden rond totdat er niet meer. Maar ik dank jullie voor een prachtig jaar. [Applaus] SPEAKER: ik zou kunnen huilen.