>> SPEAKER: OK, så vil du ikke tro det, men i sidste uge, mandag, i Pierce, jeg
var nede i kælderen.
Jeg går aldrig til Pierce.
Og jeg kommer aldrig tilbage igen, fordi Jeg forlod mine ting alene,
gerne, fem minutter og nogen stjal min computer og min
telefon ud af min rygsæk.
Hvilket betyder, at jeg fik det tilbage, og så mindre end en uge senere
det fik stjålet igen.
>> Og så fik tændt -
Find min iPhone fortsætter at være uhensigtsmæssigt.
Så jeg fortsætter med at opmuntre du ikke at bruge det.
Det viste sig på én gang, og det var i MIT, ligesom 15 minutter senere, og den person,
kaldte dette telefonnummer, der viste op i min AT & T opkaldsloggen.
>> Så jeg gik på nettet, kaldet den telefon nummer, og det gik lige til dette
telefonsvarer på spansk.
Og jeg har ikke hørt om det siden.
Så jeg var nødt til at få en ny computer og telefon.
Jeg kender.
Ja.
Men hvis du fyre ønsker at chip i at min computer fond efter dette, det er derfor
Jeg har spurgt dig her.
Just kidding.
Men det var virkelig trist og traumatisk.
>> Men det er alle tilbage nu, og det var derfor p-sæt 8 tog så lang tid, fordi
Jeg havde ikke en computer.
Og nogen stjal det.
Og jeg mailede og spurgte, om de ville lønklasse din p-sæt 8.
Men de sagde nej.
Og jeg var ligesom, kan jeg have min computer tilbage?
Og de er ligesom, nej.
Just kidding.
>> OK.
Dette er vores sidste afsnit, og jeg har et par - vi har kun tre
ting på dagsordenen.
Vi kommer til at tale lidt om Q vejledning.
Så vi kommer til at tilbringe 15 minutter på et køligt demo.
Så vi vil alle sige farvel til hinanden.
Du behøver ikke virkelig har brug for dine computere eller en pen eller papir til at tage noter, eller
følge med.
Så jeg antager, hvis du har din computer op, så er du på Facebook.
Bare at sige.
Medmindre du udfylde Q vejledning, der er først.
>> Q-guide er åben.
Du har haft en e-mail om det.
Når alle de Q ting er blevet forelagt ved slutningen af ​​året, jeg får alle de
Q kommentarer i scoringer fra alle der vælger at give mig feedback.
Og så når du går i Q -
Jeg ved ikke, om du kan gøre dette, Jeff, fordi du er og udvidelse studerende.
Men når du går i Q, hvis du ikke har gjort det før, du vælger dit
lærer, der er David Malan.
Du er nødt til at gøre ham.
>> Og så kan du vælge TFs.
Og du kan vælge lige så mange TFs som du ønsker.
Men der er 60 af os.
Du behøver ikke at hente alle.
Du kan bare hente mig, eller bare vælge en par andre mennesker, hvis du ønsker, at
give dem tilbagemeldinger så godt.
Og så får du score på alle disse forskellige akser og så kan du lade
dem feedback.
>> Og, som en måned senere, Jeg får alt det feedback.
Og ligesom den feedback, du har været giver mig hele semestret, jeg
læse alt dette.
Og det er virkelig nyttige, og det hjælper mig vokse som lærer og som en
person.
Så please, tage lidt tid til at gøre det.
Vi kun vil være her i omkring 30 minutter.
Så hvis du ønsker, i slutningen af ​​dette, at tage fem minutter, og bare udfylde
Q, fordi den ikke tager mere tid end det.
Det ville være vidunderligt, og du også få dine karakterer tilbage hurtigere, hvis
du udfylde Q.
>> Så de fleste af jer har gjort det før -
eller nej, omkring halvdelen af ​​jer har gjort det før.
Men hvis du er en freshman, det er hvad det er.
Det vil være den samme for alle klasser.
Gør det.
Det tager fem minutter.
Men også, hvis du gør det en smule alvorligt, det er ikke det værste
i verden, fordi jeg helt sikkert tage det alvorligt.
>> Så hvis du forlader mig et smilende ansigt, Jeg vil sætte pris på det.
Men jeg vil også sætte pris på, hvis du efterlod mig mere end et smilende ansigt.
Men det er op til dig.
Jeg kan ikke fortælle dig - eller som en stor smiley ansigt, med en kapital D. Det ville
være endnu bedre.
>> OK, det er alt jeg har for den Q. Hvis du har spørgsmål, kan du spørge
mig, men temmelig selvforklarende.
Just, please, udfyld den.
Jeg ville virkelig sætte pris på det, og det betyder meget for mig.
>> OK, det er, hvad vi kommer til at tilbringe 15 minutter går igennem.
Jeg har tænkt mig at vise dig nogle koder.
Jeg tror, ​​det er virkelig cool, og dette fik mig mere
ophidset i datalogi.
Så jeg håber, at det vil gøre det samme for jer alle.
>> Vi kommer til at åbne op - og alt dette kode vil jeg sende til dig senere.
Men vi bare at åbne op -
Jeg er i min terminal -
vi kommer til at åbne op for dette program kaldet [? MySum. ?]
>> Kan alle læse det, eller skal jeg gøre det større?
Kan nogen fortælle mig, hvad denne kode vil gøre, når jeg kører det, eller hvad det
Programmet vil gøre, når jeg kører det?
>> [? Avi,?] Hvad tror du det kommer til at gøre?
Finish tygge.
Du bør ikke tale med munden åben.
>> PUBLIKUM: Er det tage en masse argumenter, find summen af ​​dem vender tilbage
sum, og derefter printe det ud?
Eller tager det i to argumenter, og så gør det [uhørligt].
Og så udskriver hvad resultaterne er.
>> SPEAKER: Luk, virkelig tæt.
Nogen ønsker at tilføje til [? hvad Avi?] sagt?
Har du nødt til at give dette program eventuelle kommandolinjeargumenter?
>> PUBLIKUM: Nej.
>> SPEAKER: Nej.
Hvad sker der, hvis du ikke giver det eventuelle kommandolinjeargumenter?
Jeg bare skrive dot skråstreg MySum.
>> PUBLIKUM: 1 plus 2 er lig med 3.
>> SPEAKER: 1 plus 2 er lig med 3.
Og det vil printe det ud.
Det er helt rigtigt.
Du vil se, at udskrive f nederst.
Det vil udskrive a, b, og så summen af ​​a og b.
Og jeg tror du antager, at sum fungerer korrekt.
Godt antagelse.
>> OK, og hvad sker der, hvis jeg give det hvad argument?
[? Manu? ?]
>> PUBLIKUM: Det vil tilføje uanset det første argument er at b..
Eller til 2, undskyld.
>> SPEAKER: Right, til 2..
Er der nogen vide, hvad strtol gør?
Det er dybest set Atoi.
Atoi er faktisk en dekorativ version af -
eller en enklere version af strtol.
Men det bruger faktisk strtol.
Og jeg fandt ud af, fordi jeg ønskede noget som atoi, og så når jeg
gjorde atoi, læste jeg herned.
Og jeg fandt "denne adfærd er det samme som "strtol.
Så det er dybest set atoi for alle henseender.
Og du ser jeg endda bruge nul og 10..
>> Dette faktisk lader dig tage en streng, og gøre det til et nummer, og vælg
hvad basen, du ønsker at gøre det i.
Så dette er basis 10 lige her.
Jeg kunne have gjort basen to til decimal basis 16 for hexadecimal.
Det er temmelig cool.
Men lang historie kort, det tager to numre og lægger dem sammen.
>> Så lad os køre den.
Og du vil også bemærke, at der er nogle ting -
så jeg har en Makefile lige her, og Hvis du åbner det op, nogle ting
du lægger mærke til er forskellige.
Især dette argument lige her, har du sandsynligvis
har ikke set det før.
Generelt vi kompilere ting med bindestreg nul, nul.
Dash nul, nul, betyder ikke gør nogen optimeringer, compiler.
Forsøg ikke at gøre noget fancy, eller gøre noget løbe hurtigere, eller få
slippe af variabler, der er nødvendige.
Må ikke optimere denne kode på alle,
>> Jeg beder om tredje niveau optimering.
Så jeg beder compiler til at gøre en masse af optimeringer.
Du kan ændre det i Makefile når du har denne kode, hvis du vil
at se forskellige ting.
Hvilket vi vil vise i en anden.
Så vi køre min sum 1 plus 2 plus 3.
Nogen give mig to argumenter.
>> PUBLIKUM: 4 og 5..
>> SPEAKER: 4 og 5..
Tak.
Store, det fungerer.
Hvad er nogle andre gode argumenter at prøve, for at sikre dette virker?
Nogen?
>> PUBLIKUM: 0.
>> SPEAKER: 0 og?
>> PUBLIKUM: Negativ 3..
>> SPEAKER: Det virker.
Men de var gode valg.
OK, så lad os gå tilbage her.
Dette er mysum.c.
Du vil bemærke, er der også noget kaldet sumfunction.c.
Og det siger, åh, der er noget defineret i sumfunction.c.
Jeg kan ikke medtage denne fil i her fordi jeg ikke behøver at.
Men jeg linke det i, når jeg kompilere, som du bemærket.
>> Lad os rulle op.
Vi så da vi kompileret mysum, højre der, vi er forbundet i det binære fra
sumfunction.o.
Og jeg har ikke brug for header fil fordi, selvfølgelig, der er den
funktion erklæring.
Så skarp omfatter normalt kun puts i en funktion erklæring.
Her har jeg bare sætte det lige i koden.
Og så jeg er nødt til at gøre, er at link i binær, som jeg gør.
>> Enhver gæt for hvad er i sumfunction.c?
Hvilken kode jeg har skrevet i sumfunction.c?
>> PUBLIKUM: [uhørligt].
>> SPEAKER: Enhver gæt?
Ja?
>> Publikum: Jeg tror, ​​definerer nogle [uhørligt].
>> SPEAKER: Ja.
Så jeg gør skrive int sum int en.
Jeg skriver denne linje, og så har jeg åbent klammeparentes, lukket klammeparentes.
Hvad tror du, jeg skriver inde dem krøllede parenteser, indenfor denne funktion?
Ja?
>> PUBLIKUM: Return lig en.
>> Processor: Det er en rigtig god gæt.
Hvem tænker [? Manu?] Er rigtigt?
Den siger returnere en plus b..
OK, ikke alle.
[? Akshar,?]
du gør det, også?
Er du sikker?
OK.
Hvad?
>> PUBLIKUM: Du stavet det forkert.
>> SPEAKER: Nej, det gjorde jeg ikke.
Ja, bare for sjov.
Du har ret.
Det er præcis, hvad det siger.
Det er returnere et plus b.
Det gør en masse forstand.
>> OK, lad os gå tilbage her.
Vi ser, hvordan overskriften -
det er den tilbagevenden type.
Husk, vi har set, at dag ét, de returnere typen af ​​funktionen, men går
før navnet på int-funktionen.
Her har jeg skrevet int.
Hvad tror du vil ske, hvis dette funktion, kan jeg ikke skrive int, men
Jeg skriver usigneret?
Forskellen, selvfølgelig, er, at usigneret udgør kun positive
heltal, og int kan være positiv eller negativ.
>> Så jeg har ændret afkastet type af denne funktion.
Denne kode svarer ikke denne tilbagevenden skriv her.
Hvad tror du, der vil ske når jeg kompilere?
Du bør råbe ad mig.
Ingen råben.
>> Hvad så når jeg kører programmet?
Lad os gøre før 0 negativ 3, eller negativ 1.
Det virker stadig, selvom jeg siger det returnere en usigneret heltal.
Det er klart det ikke vender tilbage en usigneret heltal.
Det er at vende tilbage en underskrevet heltal.
Det vender tilbage negativ 1.
OK, det er underligt.
>> Hvad hvis jeg går i her og gøre det?
Så jeg har ændret alt fra int til usigneret.
Det kan kun tage unsigned heltal.
Men har vi synes stadig det vil løbe?
>> PUBLIKUM: Ja.
>> SPEAKER: det vil.
Det er vanvittigt.
Og vi passere i et tydeligt tildelt heltal, kan vi passere to underskrevet
heltal, det virker stadig.
>> OK, nogen ideer om, hvorfor det stadig virker, eller hvad sker der?
Ja, Jeff.
>> PUBLIKUM: Det har noget at gøre med din optimering, som du
fremhævet.
>> SPEAKER: Nej.
Vi kunne ændre optimering, ville det stadig arbejde.
Jeg kan gøre det for dig, men -
>> PUBLIKUM: Jeg tager dit ord for det.
>> SPEAKER: Ja.
Hvis du åbner Makefile lige her, Jeg har ændret optimering.
Så du kan gøre Dash nul, nul.
Det vil stadig fungere.
Andre tanker?
>> Du fyre alle forventes at arbejde, så Hvorfor skulle du forventer det til at virke?
Nej?
Stilhed.
OK.
Jeg er nødt til at vente syv sekunder, fordi jeg stillede et spørgsmål.
>> Så cool ting om C, og du har sikkert oplevet før - du
måske ikke har, kan dette være første gang.
Men som alle ved, når jeg skriver noget i C, betyder det ikke gemme som
dette på computeren.
Det er gemt som ettaller og nuller.
Det går fra C-kode til samling kode.
>> Har nogen set forsamling kode før, maskine forsamling kode?
Vi vil se på i et sekund.
Det går fra C-kode til samling kode.
Og du fyre kender etaperne opgørelsestidspunktet.
Du var nødt til at huske, at for quiz én, og derefter skrive det ud på quiz nul.
De fleste mennesker fik det galt.
Jeg tror du fyre naglet det.
>> Men du fyre er bedst sektion for quizzer, ved den måde.
Hvilket er awesome.
Det vil ikke gøre dig fortræd.
Må ikke være bekymret.
Men det er virkelig cool.
Godt arbejde.
>> Så det går til assembler, og så det går til nuller og ettaller.
Og nuller og ettaller gemmes på computer, og det er hvad der er gemt i
den a.out, eller i dette tilfælde, den eksekverbare fil.
Og computeren kører nuller og ettaller.
Right?
Vi har lært det før.
>> Så cool ting er, dette signeret idé, ideen om typer Ints usigneret,
et cetera, et cetera, det er op her i C-sprog.
De eksisterer.
Men typer findes ikke på de nuller og ettaller.
Typer ikke engang eksisterer i virkeligheden på assembler niveau.
Så det er noget, der eksisterer i C verden, men findes ikke i computer
verden eller processor verden.
Det er nogle abstraktion, at C sprog har medtaget, at gøre vores
liv lettere.
>> Så i slutningen af ​​dagen, kan jeg skrive mange forskellige ting her, og det
ikke gør en forskel.
Fordi der kun eksisterer i C verden.
Det eksisterer ikke i nuller og ettaller verden.
Og vores programmets udførelse i de nuller og ettaller verden.
Så dit sind klart ikke blæst endnu.
Men jeg tror, ​​det er cool.
Ja, Jeff.
>> PUBLIKUM: Så hvis i stedet for gør int, du gør char.
Og du var -
>> SPEAKER: Lad os gøre det i et sek.
>> PUBLIKUM: Fordi så får du en unsigned går fra negativ 128 til
127 eller 0 til 255.
>> SPEAKER: Så char er problematisk.
Er der nogen vide, hvorfor char ville være problematisk, og det ville faktisk
ændre tingene i dem og nuller verden?
>> PUBLIKUM: På grund af størrelsen af ​​char.
>> SPEAKER: Størrelse af char er 1.
Så unsigned er også 4 byte.
Så char ville skrue tingene op.
Men hvad er 4 byte, der findes i relateret til en char?
Eller der tilføjer en ekstra -
du kan sætte en mere karakter efter char.
>> PUBLIKUM: Char stjerne.
>> SPEAKER: Char stjerne har 4 byte.
Så lad os gøre noget det er en char stjerne.
>> Så det ville nok fungere, men vi er kommer til at gøre noget selv
skør end dette.
Efter min mening, skør.
>> Jeg har nu skrevet en funktion, der returnerer en pointer, og det tager en
pointer og en usigneret værdi - vi vil ændre dette tilbage til int så vi ikke
lave for mange ændringer på én gang.
Og det har en matrix kaldes en, indekser ind i matrix og returnerer
adresse.
Vi har set disse operatører før.
Dette, hvad tror du det går at gøre gengæld, når jeg kører det?
Hvad tror du, det kommer til at gøre?
Enhver gæt?
>> PUBLIKUM: segfault.
>> SPEAKER: Hvad?
Segfault?
Det er et godt gæt.
Tom siger det samme.
Alle andre gæt?
>> Hvem tror det kommer til at gøre det samme?
Hvem tror det kommer til at segfault?
Det gør det samme.
Undskyld.
>> Men, selvfølgelig, vi sætter i 1 og 2..
Og de er begge gyldige, right?
Lad os se, kan vi gå til andenpladsen i et array.
Men hvad hvis vi gjorde b et negativt tal?
Det er nok et bedre gæt for noget segfaulting.
Det virker stadig.
>> OK, det er nu vanvittigt.
Dette er lige gyldige sum funktion.
Dette gør nøjagtig de samme ting som afkast a og b.
Kan nogen forklare, hvorfor dette er en god funktionen Sum, eller hvorfor det virker?
Hvad sker der her?
Hvorfor dette gøre præcis samme ting som vores gamle sum funktion?
[? Akshar,?]
hvad sker der?
>> PUBLIKUM: Fordi når du har en a, der er en adresse til
placering hukommelse -
og når du gør-tegnet, er det går til denne hukommelse adresse.
Og når du går til B, er du slags bevægelige skridt fra denne hukommelse adresse,
du returnere det.
Så du er faktisk i virkeligheden, tilsætning af a og b [uhørlig].
Hvor er standard operationer om at vende tilbage?
Ligesom, hvor skal parenteserne falde?
Er en tilbagevenden til adressen på et før eller efter [uhørligt]?
>> SPEAKER: Det kommer til at indekset i b -
eller indeks ind i en - og så returnere adresse.
OK, så gjorde alle forstår hvad [? Akshar?]
sagt, og forklarede, hvorfor det virker?
Jeg gjorde ikke, den første gang nogen forklarede dette til mig.
Ville nogen gerne et billede at forklare dette?
Vi kommer til at tegne et billede, med ingen markører, det er fantastisk.
Fundet nogle.
>> Så vi har et array, der er en række af bokse.
Den første er et indeks 0, indeks 1, 2, 3, 4, prik, prik, prik.
En typisk array.
Og ud over at have indekser de alle har hukommelse adresser.
Så lad os give denne hukommelse adresse 13, 14, 15, 16, 17, et cetera.
Alle er her hidtil.
>> Så et er en adresse.
Navnet på et array, en pointer gemmes der.
Det er en pointer, det er en hukommelsesplacering, til starten af ​​matrixen.
Så hvis dette var array, en ville være en værdi på 13.
Og selvfølgelig kan vi give en hvilken som helst værdi, vi ønsker.
Char stjerne en, kan vi give en hvilken som helst hukommelse adresse, vi ønsker.
Vi kan give det 0, kan vi give det negativ 1 - negativ 1 eksisterer ikke,
så det er nok problematisk, men du så, at det stadig arbejdede.
Så vi kan give et hvilket som helst antal, vi ønsker, nogen hukommelse adresse, vi ønsker.
>> Så, int b siger, OK, gå dette nummer skridt ind i array.
Så hvis b er lig med 2, og a er lig med 13, vi er på hukommelse adresse 13..
Og vi går to trin i, og så er vi her.
Og tegnet betyder tilbagevenden adressen på denne placering.
Og adressen er selvfølgelig, 15..
Så vi får 13 plus 2 eller et plus b, hvilket er 15.
>> Spørgsmålet er, men -
Undskyld.
Betyder at afklare tingene for hvorfor det virker?
>> PUBLIKUM: Hvorfor ville det arbejde går -
så du kan have en matrix og gå til en negativ indeks?
>> SPEAKER: Right.
Så vi gjorde negative tal, så det er det -
Giver det mening selv, første, [? Avi,?]
for dig?
>> PUBLIKUM: Ja, jeg er bare [Uhørligt], men -
>> SPEAKER: Ja, det ville vende tilbage 15.
Hvis en var 13, og b var 2, dette ville vende tilbage 15.
>> PUBLIKUM: Så nul indeksering ikke blive et problem, right?
Fordi du flytter fra 0.
>> SPEAKER: Right.
Så du er ved at flytte - så hvis b var 0, ville du ikke flytte overalt.
Og du ville blot returneres adressen -
hvis b var 0, det er hovedsageligt returnering, at adressen på en.
Passing i char stjerne en og returnere adressen på en bare returnere en,
væsentlige.
>> OK, spørgsmålet er hvorfor negative tal virker?
Og det er virkelig cool ting om dette, fordi dette burde segfault.
Og det ville segfault hvis vi gjorde noget som dette.
Lad os sige, int.
Så denne kode ser identisk og bør opføre sig ens.
Væsentlige, x er en skraldespand variabel, og så dette bør opføre sig ens.
>> Lad os gøre dette -
oops -
i stjerne.
OK, vi allerede få fejl her, fordi det allerede vil være vred
på mig, fordi det allerede ved, hvad der kommer.
Især den anden.
Adresse på stablet hukommelse forbundet med en lokal variabel.
>> Væsentlige, jeg ikke kommer til at kompilere dette, og så vil jeg fortryde gøre
hvad vi lige gjorde.
Men fordi vi er faktisk aldrig adgang til, hvad der er på hukommelsen
placering, er det ikke kommer til at segfault.
Vi faktisk aldrig at se på, hvad der er i den anden boks eller hvad der er i enhver kasse
af dette array.
Vi siger kun, her er adressen af de ting, vi leder efter, og
returnere den adresse.
Vi faktisk aldrig gå ind i array til at se på dette sted.
Og fordi vi rører aldrig hukommelsen, vi ikke komme i problemer.
Vi får ikke en segfault.
>> Hvis vi forsøgte at, igen, touch at hukommelse, skal du trykke, hvad der var på a eller b -
eller en konsol b og antager a var 0 og -
hvis en var 0, selv, det ville være temmelig dårligt, fordi vi ikke kan gå
ned hele vejen der.
Hvis A og B begge er 0, og vi prøvede at røre ved, hvad der var, så ville vi
komme i problemer.
Men hvis vi ikke røre ved, hvad er der, vi bare returnere adressen, er det
faktisk ikke kommer til at segfault fordi det kan du udføre disse operationer.
Det bliver kun vred på dig, og får super vred, når du prøver og røre
den faktiske hukommelse og vende tilbage, hvad der er på denne hukommelse.
>> Giver det mening?
Det er bare en vanvittig del af C. Så vi har en flere af disse.
>> Hvem mener, at dette er cool?
Flere mennesker.
Det er godt.
OK, det er vores sidste.
Og jeg vil gerne have dig til at fortælle mig, om eller du tror ikke det vil
til at gøre nøjagtig de samme ting.
>> Jeg har disse skrevet ned et eller andet sted.
Jeg er ikke huske dem.
>> Lad os se, 8, B 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4.
Så dette er et array, nu, ikke en funktion.
Og det er et array, fordi vi har firkantet beslag, ikke krøllede parenteser.
Og det er en bred vifte af hvilken type?
Enhver, hmm?
>> PUBLIKUM: Deres hexadecimale tal?
>> SPEAKER: Men hvad er C-type?
De har alle hexadecimale tal.
Hvad er C-type?
Det fortæller dig.
>> PUBLIKUM: Det er tegn usignerede.
>> SPEAKER: højre, unsigned chars.
Og to hexadecimale tal er en byte.
Så disse er 1, 2, 3, 4, 5, 6, 7, 8, 9 byte.
Det er en bred vifte af 9 byte.
>> OK, du sikkert allerede kender Svaret på dette spørgsmål.
Men hvad tror du ske, når jeg køre dette?
Jeg siger igen, i mysum.c, Jeg venter en funktion
der tager to heltal.
Og jeg i stedet sige, at summen er en vifte af tegn.
Hvad kommer til at ske, når Jeg køre. / Mysum og gøre?
>> Nå, det første, de fleste af jer vil formentlig enige om, at make - åh nej, bare for sjov.
Hvad sagde jeg gør forkert?
Uh oh.
Det burde være krøllede parenteser.
Det er hvordan du initialisere et array.
Min dårlige.
>> Så vi har allerede set før, at typer er en C-abstraktionsniveau, ikke en
computer niveau abstraktion.
Så de fleste af jer sikkert forventede, at det gøre, eller at antage, at det ville gøre.
Men hvad, når jeg kører. / Mysum?
Hvad kommer til at ske?
Enhver gæt?
>> PUBLIKUM: Det kommer til at udskrive et ord.
>> SPEAKER: Det kommer til at udskrive et ord.
Hvilket ord?
>> PUBLIKUM: [uhørligt].
>> SPEAKER: Alle andre gæt?
OK, udskrive en sætning.
Du kan have nogen sætning.
Det vil være din side.
Enhver, der har en anden gæt?
Anna, hvad er dit gæt?
>> PUBLIKUM: Det vil udskrive -
to bogstaver eller [uhørligt] ét bogstav.
>> SPEAKER: Et brev.
>> PUBLIKUM: Kan jeg tælle, hvor mange [uhørligt]?
>> SPEAKER: Ni.
Nå, jeg har tænkt mig at køre den.
Det gør nøjagtig de samme ting.
Det tilføjer to tal sammen.
Nå, lad os passere de to argumenter.
Det tager ikke argumenter.
Så jeg ved ikke, hvor det kunne muligvis få disse argumenter.
Men lad os gå på 100 og 0.
Og det tilføjer 100 og 0.
Det er sindssygt.
Jeg tror det.
>> Negativ 4, der virker også.
Du kan gøre hvad du vil.
Det er en lige så gyldig sum funktion.
Dette er en funktion sum.
Men, nej, du siger det er et array af bytes.
Så hvad der foregår her?
>> Så igen, lad os gå tilbage til denne idé at vi sagde i begyndelsen.
Du går fra C-niveau kode, til samling sprog til nuller og ettaller.
Dette er hexadecimal.
Men det er egentlig bare en masse af nuller og ettaller.
Det er 72 nuller og ettaller, right?
72 nuller og ettaller.
9 bytes.
Hver byte har 8 bit.
Hver bit er et ettal eller et nul.
Så 72 dem eller nuller.
Jeg har lige skrevet dem som dette - snarere end at skrive det ud som en masse
nuller og ettaller.
>> Men det vil gå fra C-niveau sprog samling
sprog, til koden.
Og det vil udskrive i kode, et sted, disse 72 nuller og ettaller
at jeg har skrevet her.
Så sted ved, at -
lad os gå her -
sted i mysum programmet, der er disse 72 nuller og ettaller, som jeg har
skrevet og fortalte det til at skrive.
>> Nu, eventuelle gæt, hvad de 72 nuller og ettaller betyde?
>> PUBLIKUM: Sandsynligvis den samme ting som returnere et plus b..
>> SPEAKER: Sandsynligvis den samme ting som returnere et plus b..
Lad os kontrollere, at.
Lad os finde ud af hvordan jeg gjorde det.
>> Så hvis du går tilbage her, jeg fortælle dig at køre denne kommando, objdump-S
sumfunction.o.
Lad os gå køre den. objdump -
obj, dump.
Dybest set kan give mig hvad jeg ønsker at se.
Det kan give mig assembler.
Det kan give mig de nuller og ettaller.
Det har et væld af flag.
Det er den, vi skal hen til brug for nu.
Dot -
som du kan se i dias -
dash hovedstad S siger intersperse, kildekode -
denne linje er fra C - med montage kode, og med nuller og ettaller.
Og vi kommer til at løbe det på sumfunction.o.
Fordi det vil være nemmere at se.
Igen - hmm?
>> PUBLIKUM: Du stavet det forkert.
>> SPEAKER: Men jeg faktisk går at klare det for en anden.
Jeg først kommer til at åbne bare sumfuntion.o.
>> PUBLIKUM: Du stavet det forkert første gang.
>> SPEAKER: Classic.
Sum -
der er et hårdt ord, selv om.
Du ville blive overrasket.
OK, så dette er sumfunction.o.
Jeg kunne ikke engang fortælle dig.
Der er en masse nuller, klart en masse af nuller, og der er nogle andre
ting, der ikke er nuller.
Men det meste nuller.
Ser ud som om der er nogle dem.
Så klart, det er svært at læse.
Det er den binære sprog.
>> Lad os nu åbne den -
hvad?
Hvad gør jeg forkert?
Har jeg stave det korrekt?
OK, det er akavet.
Jeg har brug for et sekund for at regne ud af, hvad jeg gør forkert.
Det er en fejl.
Det er underligt.
Åh, det er hvorfor.
>> Jeg har tænkt mig at gå tilbage til vores oprindelige en, så vi kan se på
objektkode af dette.
Fordi der er ikke rigtig kommer til at være noget, når vi bare sætte
ettaller og nuller i.
Der vi går.
OK, så alle kan se det.
Denne funktion, som jeg sagde, sat ud C-linjer -
linjer kildekode -
med nogle monteringsvejledning.
>> Her er vores kildekode linje.
Her er en, her er en anden.
Her er samlevejledning.
Det er, hvad de ser ud.
Monteringsvejledning -
du kan lære mere af disse, hvis du tager andre CS klasser, men de er
generelt en instruktion.
Og så en kilde og en destination.
>> Og så herovre er den binære kode , der svarer til samling
instruktion.
Så som du kan se, denne funktion sum, ved slutningen af ​​dagen, er tre
monteringsvejledning.
Kun tre.
Én mov -
m-o-v står for en Move.
Tilføj står for Add.
Og r-e-t står for Return.
Så en mov, en add, en tilbagevenden.
Og disse, herovre, er de nuller og dem, der svarer til denne kode.
>> Så dem nuller og ettaller, hvis du kender dem, kan du bare sætte
de lige i.
Og så det vil gøre samme nøjagtige ting.
Fordi ved slutningen af ​​dagen, alt du udfører, er en lang række af
nuller og ettaller.
Og det er, hvad din kode egentlig er.
>> Og årsagen -
lad os se på én ting.
Havde jeg Makefile åbent?
Så hvis vi gik tilbage til dash nul, nul op her -
undskyld, kapital o, kapital o nul, nul, nul.
Og vi gjorde, ville det arbejder stadig det samme.
Men nu er du bemærke, at der er en meget mere monteringsvejledning.
Det er fordi, igen, spurgte jeg compiler ikke at gøre noget optimering.
>> Så jeg kunne stadig tage alle disse nuller og ettaller, og smide dem i,
og det ville fungere.
Jeg gjorde bare de optimeringer, fordi det er lidt nemmere, da
at skrive, at array.
Men dette ville arbejde lige så godt.
>> OK, vi kommer til at gøre en sidste ting, fordi jeg mener er den fedeste del.
Selvom alle er klart allerede blæst og målløs.
Vores sind er blæst.
[Uhørligt]
>> Så disse er fra en anden CS klasse, som er super interessant,
at jeg har taget -
CS61.
Jeg stærkt opfordre dig til at tage det.
Men den kølige del om denne kendsgerning, at ting er bare nuller og ettaller,
er, at alt er nuller og ettaller.
>> Så du kan tage en fil, der har den korrekte nuller og dem, du ønsker
et eller andet sted i det, og bruge denne sektion af nuller og ettaller som en funktion sum.
>> Hvad mener jeg med det?
Jeg mener du kan tage en billedfil, der har den korrekte serie af nuller og
dem, der udskrives noget ud til et billede.
Og ét program kan fortolke en billede, men du kan fortolke det, hvis
du ønsker, som en funktion sum.
>> Så hvis vi ønskede at åbne for F.eks dette billede.
Lad os gå, Hello Kitty.
Vidunderlige lille billede.
Herinde er der denne streng af nuller og ettaller.
De 72 nuller og ettaller eksisterer i dette billede.
>> Så hvad jeg kan gøre, så er skrive -
Jeg er nødt til at huske, hvor de er.
Jeg finder, at der i et sekund.
Men vi gør -
lad mig finde ud af hvor de er.
Én sek.
Lad os gøre -
>> PUBLIKUM: [uhørligt].
>> SPEAKER: Thanks.
Så hvis vi udfører dette program, som i stedet læser i en fil, så går det
til dette indeks i filen.
Og så igen, bare gerne mysum, tager to numre.
Vi kan tilføje numre nøjagtig det samme som vi lavede før, som går til
vise dig, hvordan det faktum, at i slutningen af dagen, er alle disse ting
nuller og ettaller.
Og det er bare hvordan du vælger at fortolke dem.
>> Og hvis du rent faktisk ser på dette billede -
Lad os zoome ind lidt.
Kan alle se det?
Du vil opdage lige her, der er nogle underlige plamage.
Lad os gå - det er det originale billede.
Du vil bemærke her er der ingen plamage.
Det er den kode for funktionen summen er, at lille plamage lige der.
>> Og faktisk, igen, hvis du lærer mere om dette, vil du indse, at dette
Hello Kitty, der selv har en større tvære har kode, der kan overtage en
computer, hvis den er ikke beskyttet hensigtsmæssigt.
Så du kan faktisk køre dette.
Jeg har ikke tænkt mig at køre det lige nu.
Men du kan køre dette Hello Kitty billede, og det kan
overtage din computer.
>> Så det er alt for demoen.
Er der nogen har nogen spørgsmål, kommentarer, bekymringer?
Jeg tror, ​​denne ting er fascinerende.
Det inspirerede mig til at lære mere.
Jeg kan varmt anbefale, hvis du er interesseret overhovedet på CS, tale med mig.
Selvom jeg er en Samfundsfag Koncentrator, jeg er en CS, sekundære, så
Jeg ved stadig en lille smule.
Men jeg helt sikkert ved, hvad klasser, du bør tage.
Jeg synes det er alle virkelig interessant, og jeg vil opfordre dig, helt sikkert, at
lære mere, hvis du er interesseret.
>> OK, jeg har en sidste ting.
Undskyld.
Eventuelle spørgsmål?
Jeg havde ikke pause til at vente, hvis nogen havde spørgsmål om det.
>> Er der nogen kommer til at være en CS koncentrator?
Eller tænke over det?
En, to, tre, fire.
One - eneste.
Annas er den eneste hånd, der er rejst myndigt.
OK, det er cool.
Assam, hvad vil du gøre?
>> PUBLIKUM: [uhørligt].
>> SPEAKER: Constantine?
>> PUBLIKUM: fysik.
>> SPEAKER: Whoa, det var hurtigt.
Du havde en dårlig oplevelse i CS50?
[Uhørligt], hvad vil du gøre?
>> PUBLIKUM: Jeg har ingen idé.
>> SPEAKER: Curt?
>> PUBLIKUM: Econ eller CS.
>> SPEAKER: Econ eller CS.
Tom?
>> PUBLIKUM: Jeg gør Stat.
>> SPEAKER: Stat?
OK.
Hvad er du?
>> PUBLIKUM: Mig?
>> SPEAKER: Ja.
>> PUBLIKUM: Stat.
>> SPEAKER: Stat.
Åh, der du går.
Tom, tal med Alden.
Emily, hvad er du?
>> PUBLIKUM: Biomedical -
>> SPEAKER: Er du i dette afsnit?
>> PUBLIKUM: Nej.
>> SPEAKER: OK, det er Emily.
Hun er min ven.
Det er klart ikke så god en ven, fordi hun giver mig en hård tid.
Du kunne være pænere til mig foran af alle, min elev -
>> PUBLIKUM: Jeg gør dit Q-guide.
>> SPEAKER: Virkelig?
Uh oh.
OK, du er fantastisk.
Jeg elsker dig så meget.
Oh boy.
>> Anyway, jeg, i går aftes, ligesom alt -
Jeg er sikker på alle synes virkelig understregede lige nu.
Jeg ved det ikke, er freshman - er du fyre føler dig stresset?
Jeg føler stresset.
Det var ligesom, du går hjem til Thanksgiving.
Du er ligesom, jeg har tænkt mig at gøre alle disse ting.
>> PUBLIKUM: Det er så anderledes.
>> SPEAKER: Ja, og du kommer tilbage.
Jeff, du ikke føler, at vejen?
>> PUBLIKUM: Jeg troede bare Jeg ville gøre en lille smule.
>> SPEAKER: OK, godt.
Så jeg kommer tilbage, og jeg har ikke gjort noget.
Og det er alle super stressende.
Og jeg er bekymret, virkelig bekymret, om, hvorvidt jeg
kommer til at afslutte alt jeg nødt til.
Men i går aftes, var jeg ikke stresset, Jeg var bare en lille smule trist.
Så jeg skrev i min dagbog om hvad jeg var ked af.
Og jeg var ked af denne sektion i denne klasse kommer til en ende.
>> Så jeg skulle lige til at læse for jer et lille uddrag af min dagbog,
fra i aftes.
Kan jeg få nogle servietter nogle væv fra Tom?
Nej, jeg har tænkt mig at græde.
Jeg græder ikke.
Ikke at du ikke kan græde, Jeg kan bare ikke græde.
Jeg ved ikke engang, om min tåre kirtler arbejdede - tårekanalerne.
Jeg har ikke grædt i lang tid.
>> PUBLIKUM: [uhørligt].
>> SPEAKER: OK, thanks.
OK, der er en lille forord -
der er nogle andre dele af min dagbog indrejse, fordi jeg forsøger at dagbog hver
natten før jeg kom i seng.
Jeg kan varmt anbefale journal.
Det hjælper dig med at behandle tingene, og også være meget taknemmelige for din dag.
Og det gør det meget lettere at se tilbage på din dag og indse, at
der var en masse god ting, der skete.
Selv hvis du føler virkelig stresset natten eller virkelig ked af, eller
virkelig trist eller træt.
>> Åh, min gud.
Jeg ved ikke engang, om det er skrevet, at godt, fordi jeg ikke læse korrektur det.
Men vi vil læse det.
Jeg plejer ikke læse min tidsskrift, naturligvis.
>> "I morgen, jeg vil lære min endelige CS50 del af året.
Det er vanvittigt, hvor hurtigt tiden flyver.
Alligevel er jeg slået af, hvor anderledes min erfaring med undervisning i dette år var
end da jeg var en sophomore.
For startere, jeg absolut ved materialet bedre.
Men du behøver ikke fortælle min første kohorte af de studerende, der.
Endnu vigtigere er dog, jeg indså at den glæde, der kommer fra stående
op foran et rum af hvad der starter ud som fremmede, men ender som på
mindst, Facebook-venner, er ikke en første-års lykketræf.
Snarere er det at vide, at i nogle små måde, hjælper du
talentfuld, tankevækkende, dejlige, og passionerede mennesker lære lidt mere
om datalogi.
>> Du skifter at pære bare en bit i sin sokkel, så det er i stand
at skinne lysere end dig, eller de, kunne have forestillet sig ved semesterstart.
Du hjælper vende disse rynker brynene på hovedet ned og stille spørgsmål, der
yde støtte, men stadig tillade studerende til at stå op på egen hånd.
>> Det er bestemt ikke en overdrivelse at sige, at denne del er min favorit
del af ugen.
Eller endda, at jeg tøver med at sige, det er alle ved 5:30 hver uge, vel vidende
at det vil være alt for lang indtil vi mødes igen.
>> Men jeg er utrolig taknemmelig for alle, der har givet mig dette
mulighed for at give tilbage til andre.
Til David, for hans tålmodighed og tillid.
Til film og produktion besætning, for gør mig ser lidt respektabel.
Og vigtigst af alt, at mine elever, uden hvem jeg ville have nogen grund til at
tilbringe 10 timer at finde ud af den bedste måde at trække pegepinde, eller lægge en
bord af delfiner, via JavaScript.
Som altid har det været en velsignelse. "
>> Så med dette, tak gutter.
Jeg vil se jer alle på CS50 fair, og den hackathon, hvis du er der.
Og hvis du har spørgsmål, vil jeg holde rundt, indtil der ikke er flere.
Men jeg takker jer for en vidunderlig år.
>> [Applaus]
>> SPEAKER: jeg kunne græde.