1 00:00:00,000 --> 00:00:07,700 2 00:00:07,700 --> 00:00:15,180 >> Speak: OK, så, du kommer inte tro det, men förra veckan, på måndagen, i Pierce, jag 3 00:00:15,180 --> 00:00:16,090 var nere i källaren. 4 00:00:16,090 --> 00:00:17,010 Jag går aldrig till Pierce. 5 00:00:17,010 --> 00:00:20,530 Och jag kommer aldrig tillbaka igen, eftersom Jag lämnade mina saker ensam, 6 00:00:20,530 --> 00:00:23,950 gillar, fem minuter och någon stal min dator och min 7 00:00:23,950 --> 00:00:26,050 telefon ur min ryggsäck. 8 00:00:26,050 --> 00:00:28,780 Vilket betyder att jag fick den tillbaka, och då mindre än en vecka senare 9 00:00:28,780 --> 00:00:30,220 den blev stulen igen. 10 00:00:30,220 --> 00:00:31,570 >> Och sedan fick påslagen - 11 00:00:31,570 --> 00:00:34,540 Hitta min iPhone fortsätter att vara till föga hjälp. 12 00:00:34,540 --> 00:00:37,340 Så jag fortsätter att uppmuntra du inte använda det. 13 00:00:37,340 --> 00:00:42,270 Det visade på en gång, och det var på MIT, som 15 minuter senare, och den som 14 00:00:42,270 --> 00:00:45,770 kallas detta telefonnummer som visade upp i min AT & T samtalsloggen. 15 00:00:45,770 --> 00:00:48,830 >> Så jag gick ut på nätet, som kallas den telefonen nummer, och det gick direkt till detta 16 00:00:48,830 --> 00:00:50,540 svarare på spanska. 17 00:00:50,540 --> 00:00:52,520 Och jag har inte hört talas om det sedan. 18 00:00:52,520 --> 00:00:54,800 Så jag var tvungen att få en ny dator och telefon. 19 00:00:54,800 --> 00:00:55,150 Jag vet. 20 00:00:55,150 --> 00:00:56,326 Yeah. 21 00:00:56,326 --> 00:01:00,110 Men om ni vill chip i min dator fonden efter detta, det är därför 22 00:01:00,110 --> 00:01:01,030 Jag har bett dig här. 23 00:01:01,030 --> 00:01:02,280 Skojar bara. 24 00:01:02,280 --> 00:01:04,239 25 00:01:04,239 --> 00:01:07,420 Men det var verkligen sorgligt och traumatiskt. 26 00:01:07,420 --> 00:01:10,700 >> Men det är tillbaka nu, och det var därför p-set 8 tog så lång tid, eftersom 27 00:01:10,700 --> 00:01:12,480 Jag hade inte en dator. 28 00:01:12,480 --> 00:01:13,730 Och någon stal den. 29 00:01:13,730 --> 00:01:16,940 Och jag mailade och frågade om de skulle grade din p-set 8. 30 00:01:16,940 --> 00:01:18,790 Men de sade nej. 31 00:01:18,790 --> 00:01:20,000 Och jag var som, kan jag ha min dator tillbaka? 32 00:01:20,000 --> 00:01:21,270 Och de är som, nej. 33 00:01:21,270 --> 00:01:22,130 Skojar bara. 34 00:01:22,130 --> 00:01:22,930 >> OK. 35 00:01:22,930 --> 00:01:28,140 Detta är vår sista avsnittet, och jag har ett par - vi har bara tre 36 00:01:28,140 --> 00:01:29,790 saker på dagordningen. 37 00:01:29,790 --> 00:01:31,330 Vi kommer att prata lite om Q guide. 38 00:01:31,330 --> 00:01:33,900 Sen ska vi spendera 15 minuter på en sval demo. 39 00:01:33,900 --> 00:01:36,890 Sen ska vi alla säga adjö till en annan. 40 00:01:36,890 --> 00:01:41,460 Du behöver egentligen inte dina datorer eller en penna eller papper för att göra anteckningar, eller 41 00:01:41,460 --> 00:01:42,410 följa med. 42 00:01:42,410 --> 00:01:45,620 Så jag antar att om du har din dator upp, då du är på Facebook. 43 00:01:45,620 --> 00:01:46,530 Bara att säga. 44 00:01:46,530 --> 00:01:49,650 Såvida du fyller i Q-Guide, som är först. 45 00:01:49,650 --> 00:01:50,690 >> Q guide är öppen. 46 00:01:50,690 --> 00:01:53,520 Du har haft ett mail om det. 47 00:01:53,520 --> 00:01:56,930 När alla Q grejer avser det slutet av året, jag får alla 48 00:01:56,930 --> 00:02:03,710 Q kommentarer i poäng från alla som väljer att ge mig feedback. 49 00:02:03,710 --> 00:02:04,810 Och så när du går i Q - 50 00:02:04,810 --> 00:02:07,440 Jag vet inte om du kan göra detta, Jeff, eftersom du är och förlängnings elev. 51 00:02:07,440 --> 00:02:12,730 Men när du går i Q, om du inte har gjort det tidigare, du väljer din 52 00:02:12,730 --> 00:02:14,020 lärare, som är David Malan. 53 00:02:14,020 --> 00:02:14,970 Du måste göra honom. 54 00:02:14,970 --> 00:02:15,690 >> Och då kan du plocka TF. 55 00:02:15,690 --> 00:02:17,750 Och du kan plocka så många TF som du vill. 56 00:02:17,750 --> 00:02:18,990 Men det finns 60 av oss. 57 00:02:18,990 --> 00:02:20,350 Du behöver inte plocka alla. 58 00:02:20,350 --> 00:02:23,090 Du kan bara hämta mig, eller bara plocka en par andra människor, om du vill, till 59 00:02:23,090 --> 00:02:24,470 ge dem feedback också. 60 00:02:24,470 --> 00:02:27,595 Och då får du poäng på alla dessa olika axlar, och sedan kan du lämna 61 00:02:27,595 --> 00:02:28,570 dem feedback. 62 00:02:28,570 --> 00:02:31,520 >> Och sedan, som en månad senare, Jag tar allt som återkoppling. 63 00:02:31,520 --> 00:02:34,570 Och precis som den feedback du har varit ger mig hela terminen, jag 64 00:02:34,570 --> 00:02:35,790 Läs allt om det. 65 00:02:35,790 --> 00:02:39,620 Och det är riktigt bra, och det hjälper mig att växa som lärare och som en 66 00:02:39,620 --> 00:02:40,680 individ. 67 00:02:40,680 --> 00:02:43,360 Så snälla, ta lite tid att göra det. 68 00:02:43,360 --> 00:02:45,020 Vi ska bara vara här för, typ, 30 minuter. 69 00:02:45,020 --> 00:02:48,090 Så om du vill, i slutet av detta, till ta fem minuter, och bara fylla i 70 00:02:48,090 --> 00:02:49,960 Q, eftersom den inte tar mer tid än så. 71 00:02:49,960 --> 00:02:53,410 Det skulle vara underbart, och du också få dina betyg tillbaka snabbare om 72 00:02:53,410 --> 00:02:54,620 du fyller i Q. 73 00:02:54,620 --> 00:02:56,580 >> Så de flesta av er har gjort det förut - 74 00:02:56,580 --> 00:02:58,240 eller nej, ungefär hälften av er har gjort det förut. 75 00:02:58,240 --> 00:03:00,060 Men om du är en nybörjare, det är vad det är. 76 00:03:00,060 --> 00:03:01,910 Det ska vara lika för alla klasser. 77 00:03:01,910 --> 00:03:02,270 Gör det. 78 00:03:02,270 --> 00:03:02,900 Det tar fem minuter. 79 00:03:02,900 --> 00:03:07,610 Men också, om du gör det lite på allvar, det är inte det värsta 80 00:03:07,610 --> 00:03:10,270 i världen, eftersom jag verkligen ta det på allvar. 81 00:03:10,270 --> 00:03:13,000 >> Så om du lämnar mig en smiley, Jag kommer att uppskatta det. 82 00:03:13,000 --> 00:03:17,550 Men jag skulle också uppskatta om du lämnade mig mer än en smiley. 83 00:03:17,550 --> 00:03:18,270 Men det är upp till dig. 84 00:03:18,270 --> 00:03:21,540 Jag kan inte berätta för dig - eller som en stor smiley ansikte, med stort D. Det skulle 85 00:03:21,540 --> 00:03:23,060 bli ännu bättre. 86 00:03:23,060 --> 00:03:27,860 >> OK, det är allt jag har för F. Om du har frågor, kan du be 87 00:03:27,860 --> 00:03:29,370 mig, men ganska självförklarande. 88 00:03:29,370 --> 00:03:31,090 Precis, snälla, fyll ut det. 89 00:03:31,090 --> 00:03:34,390 Jag skulle verkligen uppskatta det, och det betyder mycket för mig. 90 00:03:34,390 --> 00:03:38,910 >> OK, det är vad vi kommer att spendera 15 minuter att gå igenom. 91 00:03:38,910 --> 00:03:39,800 Jag ska visa er lite kod. 92 00:03:39,800 --> 00:03:42,080 Jag tror att det är riktigt coolt, och detta fick mig mer 93 00:03:42,080 --> 00:03:43,810 upphetsad i datavetenskap. 94 00:03:43,810 --> 00:03:46,480 Så jag hoppas att det kommer att göra det samma för er alla. 95 00:03:46,480 --> 00:03:51,760 >> Vi kommer att öppna upp - och allt detta kod jag skickar till dig senare. 96 00:03:51,760 --> 00:03:52,680 Men vi kommer bara att öppna upp - 97 00:03:52,680 --> 00:03:54,310 Jag är i min terminal - 98 00:03:54,310 --> 00:03:56,810 vi kommer att öppna upp programmet heter [? MySum. ?] 99 00:03:56,810 --> 00:04:01,290 100 00:04:01,290 --> 00:04:02,540 >> Kan alla läsa det, eller ska jag göra det större? 101 00:04:02,540 --> 00:04:07,670 102 00:04:07,670 --> 00:04:13,040 Kan någon berätta för mig vad den här koden kommer göra när jag kör den, eller vad det 103 00:04:13,040 --> 00:04:14,320 Programmet kommer att göra när jag kör den? 104 00:04:14,320 --> 00:04:30,710 105 00:04:30,710 --> 00:04:32,400 >> [? Avi,?] Vad tror du det kommer att göra? 106 00:04:32,400 --> 00:04:33,335 Slutför tugga. 107 00:04:33,335 --> 00:04:35,033 Du ska inte prata med munnen öppen. 108 00:04:35,033 --> 00:04:38,330 109 00:04:38,330 --> 00:04:42,860 >> PUBLIK: Tar det ett gäng argument, hitta summan av dem återvänder 110 00:04:42,860 --> 00:04:45,285 summa, och sedan skriva ut den? 111 00:04:45,285 --> 00:04:53,045 Eller det tar två argument, och då gör det [OHÖRBAR]. 112 00:04:53,045 --> 00:04:56,460 Och sedan skriver ut vad resultaten är. 113 00:04:56,460 --> 00:04:58,100 >> Speak: Nära, riktigt nära. 114 00:04:58,100 --> 00:04:59,840 Någon som vill lägga till [? vad Avi?] sa? 115 00:04:59,840 --> 00:05:04,830 116 00:05:04,830 --> 00:05:07,293 Behöver du ge det här programmet alla kommandoradsargument? 117 00:05:07,293 --> 00:05:09,145 >> PUBLIK: Nej. 118 00:05:09,145 --> 00:05:09,610 >> Speak: Nej. 119 00:05:09,610 --> 00:05:11,250 Vad händer om du inte ger det alla kommandoradsargument? 120 00:05:11,250 --> 00:05:12,500 Jag skriver bara punkt snedstreck MySum. 121 00:05:12,500 --> 00:05:15,145 122 00:05:15,145 --> 00:05:16,630 >> PUBLIK: 1 plus 2 är lika med 3. 123 00:05:16,630 --> 00:05:17,250 >> Speak: 1 plus 2 är lika med 3. 124 00:05:17,250 --> 00:05:18,570 Och det kommer att skriva ut det. 125 00:05:18,570 --> 00:05:19,450 Det är precis rätt. 126 00:05:19,450 --> 00:05:21,370 Du ser att utskrifts f Raden längst ner. 127 00:05:21,370 --> 00:05:23,450 Det kommer skriva ut a, b, och då summan av a och b. 128 00:05:23,450 --> 00:05:26,360 Och jag antar att du utgår från att Summan fungerar korrekt. 129 00:05:26,360 --> 00:05:28,120 Bra antagande. 130 00:05:28,120 --> 00:05:32,250 >> OK, och vad händer om jag ge den vad argument? 131 00:05:32,250 --> 00:05:33,010 [? Manu? ?] 132 00:05:33,010 --> 00:05:36,230 >> PUBLIK: Det kommer att lägga till vad det första argumentet är att b.. 133 00:05:36,230 --> 00:05:37,150 Eller till 2, sorry. 134 00:05:37,150 --> 00:05:38,480 >> Speak: Rätt, till 2. 135 00:05:38,480 --> 00:05:42,470 Är det någon som vet vad strtol gör? 136 00:05:42,470 --> 00:05:43,960 Det är i grunden atoi. 137 00:05:43,960 --> 00:05:47,240 Atoi är faktiskt en prydlig version av - 138 00:05:47,240 --> 00:05:49,600 eller en enklare version av strtol. 139 00:05:49,600 --> 00:05:51,790 Men det faktiskt använder strtol. 140 00:05:51,790 --> 00:05:54,610 141 00:05:54,610 --> 00:05:58,010 Och jag fann att eftersom jag ville något som atoi, och sedan när jag 142 00:05:58,010 --> 00:06:01,110 gjorde atoi, jag läste här nere. 143 00:06:01,110 --> 00:06:04,380 Och jag hittade "detta beteende är densamma som "strtol. 144 00:06:04,380 --> 00:06:06,850 Så det är i princip atoi för alla avseenden. 145 00:06:06,850 --> 00:06:09,320 Och ni ser använder jag även noll och 10. 146 00:06:09,320 --> 00:06:14,390 >> Det låter faktiskt du tar en sträng, och förvandla det till ett nummer och väljer 147 00:06:14,390 --> 00:06:15,970 vilken bas du vill göra det i. 148 00:06:15,970 --> 00:06:17,370 Så detta är basen 10 här. 149 00:06:17,370 --> 00:06:20,455 Jag kunde ha gjort basen två för decimal, bas 16 för hexadecimal. 150 00:06:20,455 --> 00:06:22,090 Det är ganska coolt. 151 00:06:22,090 --> 00:06:25,860 Men lång historia kort, tar det två siffror och lägger ihop dem. 152 00:06:25,860 --> 00:06:29,260 >> Så låt oss köra den. 153 00:06:29,260 --> 00:06:32,560 Och du kommer också att märka det är några saker - 154 00:06:32,560 --> 00:06:37,830 så jag har en makefile just här, och om du öppnar upp det, vissa saker 155 00:06:37,830 --> 00:06:39,270 du kommer att märka är olika. 156 00:06:39,270 --> 00:06:42,370 Särskilt detta argument här har du förmodligen 157 00:06:42,370 --> 00:06:43,010 har inte sett det förut. 158 00:06:43,010 --> 00:06:45,770 Generellt vi sammanställa saker med streck noll, noll. 159 00:06:45,770 --> 00:06:51,500 Dash noll, noll, betyder inte göra alla optimeringar, kompilator. 160 00:06:51,500 --> 00:06:54,950 Inte försöka göra något fint, eller göra vad som helst springa snabbare, eller få 161 00:06:54,950 --> 00:06:56,530 rid av variabler som är nödvändiga. 162 00:06:56,530 --> 00:06:58,080 Inte optimera denna kod alls, 163 00:06:58,080 --> 00:07:00,110 >> Jag ber om tredje-nivå optimering. 164 00:07:00,110 --> 00:07:02,580 Så jag ber kompilatorn att göra många optimeringar. 165 00:07:02,580 --> 00:07:05,870 Du kan ändra på det i makefile när du har denna kod, om du vill 166 00:07:05,870 --> 00:07:07,190 att se olika saker. 167 00:07:07,190 --> 00:07:08,660 Som vi ska visa på en sekund. 168 00:07:08,660 --> 00:07:12,080 Så vi kör min summa 1 plus 2 plus 3. 169 00:07:12,080 --> 00:07:13,445 Någon ge mig två argument. 170 00:07:13,445 --> 00:07:17,221 171 00:07:17,221 --> 00:07:18,210 >> Publik: 4 och 5. 172 00:07:18,210 --> 00:07:18,966 >> SPEAK: 4 och 5. 173 00:07:18,966 --> 00:07:19,900 Tack. 174 00:07:19,900 --> 00:07:20,860 Bra, det fungerar. 175 00:07:20,860 --> 00:07:25,700 Vilka är några andra bra argument att försöka, att se till att detta fungerar? 176 00:07:25,700 --> 00:07:27,050 Någon? 177 00:07:27,050 --> 00:07:27,430 >> Publik: 0. 178 00:07:27,430 --> 00:07:29,210 >> Speak: 0 och? 179 00:07:29,210 --> 00:07:31,010 >> PUBLIK: Negativ 3. 180 00:07:31,010 --> 00:07:32,040 >> Speak: Det fungerar. 181 00:07:32,040 --> 00:07:33,670 Men de var bra val. 182 00:07:33,670 --> 00:07:36,600 OK, så låt oss gå tillbaka hit. 183 00:07:36,600 --> 00:07:38,540 Detta är mysum.c. 184 00:07:38,540 --> 00:07:42,440 Du kommer att märka det finns också något kallas sumfunction.c. 185 00:07:42,440 --> 00:07:48,110 Och detta säger, åh, det är något definieras i sumfunction.c. 186 00:07:48,110 --> 00:07:51,480 Jag inkluderar inte den här filen här eftersom jag inte behöver. 187 00:07:51,480 --> 00:07:54,840 Men jag länka den i när jag kompilera, som ni märkt. 188 00:07:54,840 --> 00:07:57,380 >> Låt oss bläddra uppåt. 189 00:07:57,380 --> 00:08:02,880 Vi såg när vi sammanställt mysum, höger där, vi kopplade in den binära från 190 00:08:02,880 --> 00:08:04,130 sumfunction.o. 191 00:08:04,130 --> 00:08:05,780 192 00:08:05,780 --> 00:08:08,470 Och jag behöver inte sidhuvudfilen eftersom, naturligtvis, det är 193 00:08:08,470 --> 00:08:09,240 funktionsdeklarationen. 194 00:08:09,240 --> 00:08:12,200 Så skarp omfattar normalt bara sätter i en funktionsdeklaration. 195 00:08:12,200 --> 00:08:13,730 Här har jag bara uttrycka det rakt i koden. 196 00:08:13,730 --> 00:08:16,370 Och så jag behöver göra är länk i binärt, vilket jag gör. 197 00:08:16,370 --> 00:08:19,950 >> Alla gissningar om vad som är i sumfunction.c? 198 00:08:19,950 --> 00:08:21,950 Vilken kod jag skrivit i sumfunction.c? 199 00:08:21,950 --> 00:08:25,445 200 00:08:25,445 --> 00:08:26,695 >> PUBLIK: [OHÖRBAR]. 201 00:08:26,695 --> 00:08:29,460 202 00:08:29,460 --> 00:08:30,630 >> Speak: Några gissningar? 203 00:08:30,630 --> 00:08:30,940 Yeah? 204 00:08:30,940 --> 00:08:33,710 >> Publik: Jag tror, ​​definierar några [OHÖRBAR]. 205 00:08:33,710 --> 00:08:33,975 >> Speak: Ja. 206 00:08:33,975 --> 00:08:37,650 Så jag skriver int sum int en. 207 00:08:37,650 --> 00:08:41,120 Jag skriver denna linje, och sedan har jag öppet klammerparentes, stängt klammer. 208 00:08:41,120 --> 00:08:46,160 Vad tror du att jag skriver inuti dem krullparenteser, inuti som fungerar? 209 00:08:46,160 --> 00:08:46,600 Yeah? 210 00:08:46,600 --> 00:08:48,150 >> PUBLIK: Return lika med en. 211 00:08:48,150 --> 00:08:50,010 >> PROCESSOR: Det är en riktigt bra gissning. 212 00:08:50,010 --> 00:08:51,720 Vem tänker [? Manu?] Är rätt? 213 00:08:51,720 --> 00:08:54,122 Den säger returnera ett plus b.. 214 00:08:54,122 --> 00:08:55,860 OK, inte alla. 215 00:08:55,860 --> 00:08:56,520 [? Akshar,?] 216 00:08:56,520 --> 00:08:57,390 du också? 217 00:08:57,390 --> 00:09:00,430 Är du säker? 218 00:09:00,430 --> 00:09:01,680 OK. 219 00:09:01,680 --> 00:09:09,551 220 00:09:09,551 --> 00:09:10,050 Vad? 221 00:09:10,050 --> 00:09:11,662 >> PUBLIK: Du stavade det fel. 222 00:09:11,662 --> 00:09:13,000 >> Speak: Nej, det gjorde jag inte. 223 00:09:13,000 --> 00:09:13,966 Ja, bara skojar. 224 00:09:13,966 --> 00:09:15,300 Du har rätt. 225 00:09:15,300 --> 00:09:15,930 Det är precis vad den säger. 226 00:09:15,930 --> 00:09:17,110 Det är åter ett plus b.. 227 00:09:17,110 --> 00:09:18,570 Det gör mycket vettigt. 228 00:09:18,570 --> 00:09:20,240 >> OK, låt oss gå tillbaka hit. 229 00:09:20,240 --> 00:09:21,490 Vi ser hur huvudet - 230 00:09:21,490 --> 00:09:24,540 231 00:09:24,540 --> 00:09:25,660 det är returtypen. 232 00:09:25,660 --> 00:09:29,100 Kom ihåg, har vi sett att dag ett, de tillbaka typ av funktionen, men går 233 00:09:29,100 --> 00:09:30,160 innan namnet på int-funktionen. 234 00:09:30,160 --> 00:09:31,560 Här har jag skrivit int. 235 00:09:31,560 --> 00:09:35,680 Vad tror du kommer att hända om detta funktion, kan jag inte skriva int, men 236 00:09:35,680 --> 00:09:38,270 Jag skriver osignerad? 237 00:09:38,270 --> 00:09:41,050 Skillnaden, naturligtvis, är att osignerade representerar endast positiva 238 00:09:41,050 --> 00:09:43,620 heltal, och int kan vara positivt eller negativt. 239 00:09:43,620 --> 00:09:45,450 >> Så jag har ändrat returen typ av denna funktion. 240 00:09:45,450 --> 00:09:49,370 Denna kod stämmer inte denna avkastning skriver här. 241 00:09:49,370 --> 00:09:50,925 Vad tror du kommer att hända när jag sammanställa? 242 00:09:50,925 --> 00:09:53,840 243 00:09:53,840 --> 00:09:56,240 Du skulle skrika på mig. 244 00:09:56,240 --> 00:09:57,700 Ingen skriker. 245 00:09:57,700 --> 00:10:00,050 >> Vad händer när jag kör programmet? 246 00:10:00,050 --> 00:10:05,810 Låt oss göra före 0 negativ 3, eller negativ 1. 247 00:10:05,810 --> 00:10:10,180 Den fungerar fortfarande, även om jag säger det åter ett heltal utan tecken. 248 00:10:10,180 --> 00:10:12,060 Klart det inte återvänder ett heltal utan tecken. 249 00:10:12,060 --> 00:10:13,520 Det åter ett heltal. 250 00:10:13,520 --> 00:10:16,130 Det åter negativ 1. 251 00:10:16,130 --> 00:10:17,830 OK, det är konstigt. 252 00:10:17,830 --> 00:10:27,030 >> Vad händer om jag går in här och göra det? 253 00:10:27,030 --> 00:10:29,700 Så jag har ändrat allt från int till osignerade. 254 00:10:29,700 --> 00:10:31,590 Det kan bara ta osignerade heltal. 255 00:10:31,590 --> 00:10:33,840 Men vi tycker fortfarande att det ska köras? 256 00:10:33,840 --> 00:10:35,652 >> PUBLIK: Ja. 257 00:10:35,652 --> 00:10:37,270 >> Speak: Det kommer. 258 00:10:37,270 --> 00:10:39,410 Det är galet. 259 00:10:39,410 --> 00:10:43,140 Och vi passerar i en tydligt tilldelad heltal, kan vi passera två undertecknade 260 00:10:43,140 --> 00:10:46,280 heltal, det fungerar ändå. 261 00:10:46,280 --> 00:10:52,150 >> OK, några idéer om varför det fortfarande fungerar, eller vad som händer? 262 00:10:52,150 --> 00:10:53,368 Ja, Jeff. 263 00:10:53,368 --> 00:10:56,296 >> PUBLIK: Det har något att göra med din optimering som du 264 00:10:56,296 --> 00:10:57,760 markeras. 265 00:10:57,760 --> 00:10:58,210 >> Speak: Nej. 266 00:10:58,210 --> 00:11:00,570 Vi skulle kunna ändra optimering, det skulle fortfarande fungera. 267 00:11:00,570 --> 00:11:02,240 Jag kan göra det för dig, men - 268 00:11:02,240 --> 00:11:02,930 >> PUBLIK: Jag tar ditt ord för det. 269 00:11:02,930 --> 00:11:03,690 >> Speak: Ja. 270 00:11:03,690 --> 00:11:09,690 Om du öppnar makefile just här, Jag ändrade optimering. 271 00:11:09,690 --> 00:11:11,570 Så du kan göra streck noll, noll. 272 00:11:11,570 --> 00:11:12,820 Det kommer fortfarande att fungera. 273 00:11:12,820 --> 00:11:16,839 274 00:11:16,839 --> 00:11:20,280 Andra tankar? 275 00:11:20,280 --> 00:11:22,600 >> Ni alla förväntas arbeta, så Varför gjorde du förväntar dig att det ska fungera? 276 00:11:22,600 --> 00:11:31,210 277 00:11:31,210 --> 00:11:32,150 Nej? 278 00:11:32,150 --> 00:11:33,660 Tystnad. 279 00:11:33,660 --> 00:11:34,910 OK. 280 00:11:34,910 --> 00:11:39,271 281 00:11:39,271 --> 00:11:41,650 Jag måste vänta sju sekunder, för att jag ställde en fråga. 282 00:11:41,650 --> 00:11:44,190 283 00:11:44,190 --> 00:11:48,660 >> Så det häftiga med C, och du har förmodligen upplevt tidigare - du 284 00:11:48,660 --> 00:11:50,260 kanske inte har, detta kan vara första gången. 285 00:11:50,260 --> 00:11:57,030 Men som ni alla vet, när jag skriver något i C, inte spara som 286 00:11:57,030 --> 00:11:57,760 detta på datorn. 287 00:11:57,760 --> 00:11:59,440 Det sparas som ettor och nollor. 288 00:11:59,440 --> 00:12:02,970 Den går från C-kod till assemblerkod. 289 00:12:02,970 --> 00:12:09,460 >> Har någon sett assemblerkod innan, maskin assemblerkod? 290 00:12:09,460 --> 00:12:10,630 Vi kommer att titta på i en sekund. 291 00:12:10,630 --> 00:12:12,040 Den går från C-kod till assemblerkod. 292 00:12:12,040 --> 00:12:13,755 Och ni vet de stadier för sammanställning. 293 00:12:13,755 --> 00:12:17,410 Du var tvungen att memorera det för frågesport en, och sedan skriva ut det på quiz noll. 294 00:12:17,410 --> 00:12:18,240 De flesta fick det fel. 295 00:12:18,240 --> 00:12:19,760 Jag tycker att ni spikade det. 296 00:12:19,760 --> 00:12:22,880 >> Men, ni är den bästa delen för frågesporter, förresten. 297 00:12:22,880 --> 00:12:25,210 Vilket är awesome. 298 00:12:25,210 --> 00:12:25,910 Det kommer inte att skada dig. 299 00:12:25,910 --> 00:12:26,900 Var inte orolig. 300 00:12:26,900 --> 00:12:28,800 Men det är riktigt coolt. 301 00:12:28,800 --> 00:12:29,660 Bra jobbat. 302 00:12:29,660 --> 00:12:32,870 >> Så det går att assembler, och sedan går till ettor och nollor. 303 00:12:32,870 --> 00:12:35,500 Och de ettor och nollor sparas på dator, och det är det som sparats i 304 00:12:35,500 --> 00:12:38,340 den a.out, eller i det här fallet, den körbara filen. 305 00:12:38,340 --> 00:12:41,040 Och datorn kör ettor och nollor. 306 00:12:41,040 --> 00:12:41,670 Rätt? 307 00:12:41,670 --> 00:12:43,890 Vi har lärt oss det här förut. 308 00:12:43,890 --> 00:12:47,490 >> Så det häftiga är, denna osignerade idé, idén om typerna Ints osignerad, 309 00:12:47,490 --> 00:12:50,490 et cetera, är et cetera som här uppe i C-språket. 310 00:12:50,490 --> 00:12:51,110 De existerar. 311 00:12:51,110 --> 00:12:53,770 Men typer som inte existerar på ettor och nollor. 312 00:12:53,770 --> 00:12:57,110 Typer inte ens egentligen existerar på nivå i assembler. 313 00:12:57,110 --> 00:13:00,075 Så det är något som finns i C värld, men finns inte i datorn 314 00:13:00,075 --> 00:13:01,640 värld eller processor värld. 315 00:13:01,640 --> 00:13:04,660 Det är några abstraktion att C språk har inkluderat, för att göra vår 316 00:13:04,660 --> 00:13:06,240 liv enklare. 317 00:13:06,240 --> 00:13:09,990 >> Så i slutet av dagen, kan jag skriva många olika saker här, och det 318 00:13:09,990 --> 00:13:10,700 inte göra skillnad. 319 00:13:10,700 --> 00:13:12,060 Eftersom det bara finns i C-världen. 320 00:13:12,060 --> 00:13:14,100 Det finns inte i ettor och nollor världen. 321 00:13:14,100 --> 00:13:17,310 Och vår programmets körs i ettor och nollor världen. 322 00:13:17,310 --> 00:13:21,170 Så ditt sinne klart inte blåst än. 323 00:13:21,170 --> 00:13:22,740 Men jag tror att det är coolt. 324 00:13:22,740 --> 00:13:23,530 Ja, Jeff. 325 00:13:23,530 --> 00:13:27,298 >> PUBLIK: Så, om i stället för gör int, gör du röding. 326 00:13:27,298 --> 00:13:27,770 Och du var - 327 00:13:27,770 --> 00:13:29,311 >> Speak: Låt oss göra det på en sekund. 328 00:13:29,311 --> 00:13:32,583 >> PUBLIK: För då får du en osignerad går från negativt 128 till 329 00:13:32,583 --> 00:13:34,720 127 eller 0 till 255. 330 00:13:34,720 --> 00:13:36,760 >> Speak: röding är problematisk. 331 00:13:36,760 --> 00:13:39,460 Är det någon som vet varför röding skulle vara problematiskt, och det skulle faktiskt 332 00:13:39,460 --> 00:13:42,930 förändra saker i dem och nollställer världen? 333 00:13:42,930 --> 00:13:44,370 >> Publik: På grund av storleken av röding. 334 00:13:44,370 --> 00:13:46,200 >> Speak: Storlek på röding är 1. 335 00:13:46,200 --> 00:13:48,260 Så osignerade är också 4 byte. 336 00:13:48,260 --> 00:13:50,080 Så röding skulle skruva upp saker. 337 00:13:50,080 --> 00:13:55,660 Men vad är 4 byte som finns relaterade till en röding? 338 00:13:55,660 --> 00:13:57,820 Eller som lägger ytterligare en - 339 00:13:57,820 --> 00:13:59,760 du kan sätta en mer karaktär efter röding. 340 00:13:59,760 --> 00:14:00,200 >> PUBLIK: Char stjärna. 341 00:14:00,200 --> 00:14:01,220 >> Speak: Char stjärnan har 4 byte. 342 00:14:01,220 --> 00:14:02,490 Så låt oss göra något det är en röding stjärna. 343 00:14:02,490 --> 00:14:05,470 344 00:14:05,470 --> 00:14:07,240 >> Så här skulle nog fungera, men vi är kommer att göra något ännu 345 00:14:07,240 --> 00:14:09,710 galen än detta. 346 00:14:09,710 --> 00:14:10,960 Enligt min mening, galnare. 347 00:14:10,960 --> 00:14:21,060 348 00:14:21,060 --> 00:14:24,570 >> Jag har nu skrivit en funktion som returnerar en pekare, och det tar en 349 00:14:24,570 --> 00:14:29,480 pekare och en osignerad värde - vi kommer ändra detta tillbaka till int så vi är inte 350 00:14:29,480 --> 00:14:31,250 göra för många förändringar på en gång. 351 00:14:31,250 --> 00:14:35,370 Och den har en array kallas en, index in i matrisen och returnerar 352 00:14:35,370 --> 00:14:35,850 adress. 353 00:14:35,850 --> 00:14:37,470 Vi har sett dessa operatörer innan. 354 00:14:37,470 --> 00:14:43,340 Detta, vad tror du det går att göra, i gengäld, när jag kör den? 355 00:14:43,340 --> 00:14:48,280 356 00:14:48,280 --> 00:14:49,070 Vad tror du att det kommer att göra? 357 00:14:49,070 --> 00:14:50,320 Några gissningar? 358 00:14:50,320 --> 00:14:54,220 359 00:14:54,220 --> 00:14:55,320 >> PUBLIK: segfault. 360 00:14:55,320 --> 00:14:55,600 >> Speak: Vad? 361 00:14:55,600 --> 00:14:56,660 Segfault? 362 00:14:56,660 --> 00:14:58,520 Det är en bra gissning. 363 00:14:58,520 --> 00:14:59,430 Tom säger samma sak. 364 00:14:59,430 --> 00:15:02,240 Några andra gissningar? 365 00:15:02,240 --> 00:15:05,260 >> Vem tror att det kommer att göra samma sak? 366 00:15:05,260 --> 00:15:06,510 Vem tror att det kommer att segfault? 367 00:15:06,510 --> 00:15:09,350 368 00:15:09,350 --> 00:15:10,230 Den gör samma sak. 369 00:15:10,230 --> 00:15:11,880 Ursäkta. 370 00:15:11,880 --> 00:15:13,860 >> Men, naturligtvis, sätter vi in ​​1 och 2. 371 00:15:13,860 --> 00:15:16,470 Och de är båda giltiga, eller hur? 372 00:15:16,470 --> 00:15:19,420 Låt oss se, kan vi gå till andra plats i en matris. 373 00:15:19,420 --> 00:15:24,010 Men tänk om vi gjorde b ett negativt tal? 374 00:15:24,010 --> 00:15:26,380 Det är förmodligen en bättre gissning för något segfaulting. 375 00:15:26,380 --> 00:15:30,310 376 00:15:30,310 --> 00:15:32,260 Det fungerar fortfarande. 377 00:15:32,260 --> 00:15:35,020 >> OK, det är nu galet. 378 00:15:35,020 --> 00:15:38,350 Detta är av lika giltig summa funktion. 379 00:15:38,350 --> 00:15:40,470 Detta gör exakt samma sak som avkastning a och b. 380 00:15:40,470 --> 00:15:44,600 Kan någon förklara varför detta är ett bra Sammanfattningsvis funktion eller varför detta fungerar? 381 00:15:44,600 --> 00:15:45,850 Vad händer här? 382 00:15:45,850 --> 00:15:49,360 383 00:15:49,360 --> 00:15:55,750 Varför detta gör exakt samma sak som vår gamla summa funktion? 384 00:15:55,750 --> 00:15:56,890 [? Akshar,?] 385 00:15:56,890 --> 00:15:58,155 vad händer? 386 00:15:58,155 --> 00:16:01,540 >> PUBLIK: För när du har en en som är en adress till 387 00:16:01,540 --> 00:16:03,950 platsen minne - 388 00:16:03,950 --> 00:16:07,910 och när du gör et-tecknet, det går till den minnesadress. 389 00:16:07,910 --> 00:16:13,610 Och när du går till b, du slags rörliga steg från den minnesadress, 390 00:16:13,610 --> 00:16:15,550 du returnera det. 391 00:16:15,550 --> 00:16:20,083 Så du är faktiskt i själva verket tillsats av a och b [OHÖRBAR]. 392 00:16:20,083 --> 00:16:23,300 393 00:16:23,300 --> 00:16:26,222 Var är vanliga operationer på att avkastningen? 394 00:16:26,222 --> 00:16:27,683 Liksom, var ska parentes faller? 395 00:16:27,683 --> 00:16:30,610 Är återkomsten av den adress på en före eller efter [OHÖRBAR]? 396 00:16:30,610 --> 00:16:32,380 >> Speak: Det kommer att index till b - 397 00:16:32,380 --> 00:16:34,430 eller indexet till en - och sedan returnera adressen. 398 00:16:34,430 --> 00:16:38,800 399 00:16:38,800 --> 00:16:41,340 OK, så gjorde alla förstår vad [? Akshar?] 400 00:16:41,340 --> 00:16:45,830 sade, och förklarade varför det här fungerar? 401 00:16:45,830 --> 00:16:49,430 Det gjorde jag inte, den första gången någon förklarade detta för mig. 402 00:16:49,430 --> 00:16:51,900 Skulle någon vilja ha en bild att förklara detta? 403 00:16:51,900 --> 00:16:55,320 Vi ska rita en bild, med inga markörer, det är bra. 404 00:16:55,320 --> 00:16:57,920 Hittade några. 405 00:16:57,920 --> 00:17:03,390 >> Så vi har en array som är en serie av kartonger. 406 00:17:03,390 --> 00:17:07,160 407 00:17:07,160 --> 00:17:13,710 Den första är ett index 0, index 1, 2, 3, 4, punkt, punkt, punkt. 408 00:17:13,710 --> 00:17:15,609 En typisk matris. 409 00:17:15,609 --> 00:17:19,540 Och förutom att ha index, de har alla minnesadresser. 410 00:17:19,540 --> 00:17:30,190 Så låt oss ge denna minnesadress 13, 14, 15, 16, 17, et cetera. 411 00:17:30,190 --> 00:17:32,490 Alla är här så långt. 412 00:17:32,490 --> 00:17:35,810 >> Så en är en adress. 413 00:17:35,810 --> 00:17:38,850 Namnet på en matris, en pekare sparas där. 414 00:17:38,850 --> 00:17:42,730 Det är en pekare, det är en minnesplats, till början av arrayen. 415 00:17:42,730 --> 00:17:45,910 Så om detta var arrayen, en skulle vara ett värde på 13. 416 00:17:45,910 --> 00:17:49,110 Och, naturligtvis, kan vi ge ett valfritt värde som vi vill. 417 00:17:49,110 --> 00:17:52,450 Char stjärna en, kan vi ge en något minnesadress som vi vill ha. 418 00:17:52,450 --> 00:17:55,940 Vi kan ge den 0, kan vi ge den -1 - negativt 1 existerar inte, 419 00:17:55,940 --> 00:17:58,820 så det är förmodligen problematiskt, men du såg att den fortfarande fungerade. 420 00:17:58,820 --> 00:18:03,070 Så vi kan ge ett valfritt antal vi vill ha, varje minnesadress som vi vill ha. 421 00:18:03,070 --> 00:18:08,720 >> Sedan, int b säger, OK, går detta nummer av steg i arrayen. 422 00:18:08,720 --> 00:18:13,150 Så om b är lika med 2, och a är lika med 13, vi är på minnesadress 13. 423 00:18:13,150 --> 00:18:17,330 Och vi går två steg i, och så vi är här. 424 00:18:17,330 --> 00:18:21,150 Och et-tecknet betyder avkastning adressen till den här platsen. 425 00:18:21,150 --> 00:18:23,990 Och adressen är, naturligtvis, 15. 426 00:18:23,990 --> 00:18:28,710 Så vi får 13 plus 2, eller a plus b, vilket är 15. 427 00:18:28,710 --> 00:18:29,590 >> Frågan är dock - 428 00:18:29,590 --> 00:18:30,250 Jag är ledsen. 429 00:18:30,250 --> 00:18:34,324 Innebär att klargöra saker om varför detta fungerar? 430 00:18:34,324 --> 00:18:36,300 >> PUBLIK: Varför skulle det fungera att gå - 431 00:18:36,300 --> 00:18:38,770 så du kan ha en matris och gå till en negativ index? 432 00:18:38,770 --> 00:18:39,050 >> Speak: Rätt. 433 00:18:39,050 --> 00:18:40,870 Så vi gjorde negativa tal, så det är det - 434 00:18:40,870 --> 00:18:42,770 gör denna mening men, första, [? Avi,?] 435 00:18:42,770 --> 00:18:43,120 för dig? 436 00:18:43,120 --> 00:18:48,840 >> PUBLIK: Ja jag är bara [OHÖRBAR], men - 437 00:18:48,840 --> 00:18:50,440 >> Speak: Ja, det skulle återvända 15. 438 00:18:50,440 --> 00:18:53,523 Om en var 13, och b var 2, detta skulle återvända 15. 439 00:18:53,523 --> 00:18:58,160 >> PUBLIK: Så noll indexering inte bli ett problem, eller hur? 440 00:18:58,160 --> 00:19:00,160 För att du ska flytta från 0. 441 00:19:00,160 --> 00:19:00,470 >> Speak: Rätt. 442 00:19:00,470 --> 00:19:05,000 Så du ska flytta - så om b var 0, skulle du inte flytta någonstans. 443 00:19:05,000 --> 00:19:06,330 Och du hade just återvänt till adressen - 444 00:19:06,330 --> 00:19:10,830 om b var 0, det är i huvudsak returnera den adressen för en. 445 00:19:10,830 --> 00:19:13,960 Passerar i röding stjärn a och returnera adressen för en är bara tillbaka en, 446 00:19:13,960 --> 00:19:15,860 väsentligt. 447 00:19:15,860 --> 00:19:18,280 >> OK, är frågan varför negativa tal fungerar? 448 00:19:18,280 --> 00:19:21,670 Och det är det riktigt häftiga med detta, eftersom detta skulle segfault. 449 00:19:21,670 --> 00:19:25,110 Och det skulle segfault om vi gjorde något liknande. 450 00:19:25,110 --> 00:19:28,050 451 00:19:28,050 --> 00:19:29,300 Låt oss säga, int. 452 00:19:29,300 --> 00:19:34,390 453 00:19:34,390 --> 00:19:39,810 Så här koden ser identiska och bör bete sig på samma sätt. 454 00:19:39,810 --> 00:19:44,550 I huvudsak, x är ett skräp variabel, och så detta bör bete sig på samma sätt. 455 00:19:44,550 --> 00:19:46,370 >> Låt oss göra det här - 456 00:19:46,370 --> 00:19:47,620 oops - 457 00:19:47,620 --> 00:19:54,790 458 00:19:54,790 --> 00:19:56,040 i stjärnan. 459 00:19:56,040 --> 00:19:59,160 460 00:19:59,160 --> 00:20:02,733 OK, vi är redan få fel här, eftersom det redan kommer att bli arg 461 00:20:02,733 --> 00:20:04,610 på mig, eftersom det redan vet vad som kommer. 462 00:20:04,610 --> 00:20:07,060 I synnerhet den andra. 463 00:20:07,060 --> 00:20:09,800 Adress staplat minne associerat med en lokal variabel. 464 00:20:09,800 --> 00:20:14,220 >> I huvudsak, jag kommer inte att kompilera detta, och sedan kommer jag att ångra göra 465 00:20:14,220 --> 00:20:14,920 vad vi gjorde just. 466 00:20:14,920 --> 00:20:19,130 Men eftersom vi är aldrig komma åt vad som finns i minnet 467 00:20:19,130 --> 00:20:21,930 plats, det kommer inte att segfault. 468 00:20:21,930 --> 00:20:26,450 Vi är aldrig tittar på vad som finns i den andra rutan, eller vad som finns i varje låda 469 00:20:26,450 --> 00:20:28,340 i denna matris. 470 00:20:28,340 --> 00:20:30,980 Vi säger bara, här är adressen av det vi letar efter och 471 00:20:30,980 --> 00:20:32,410 returnera den adressen. 472 00:20:32,410 --> 00:20:35,700 Vi ska aldrig gå in i array för att titta på den platsen. 473 00:20:35,700 --> 00:20:39,140 Och eftersom vi rör aldrig minnet, vi inte hamna i problem. 474 00:20:39,140 --> 00:20:40,760 Vi får inte en segfault. 475 00:20:40,760 --> 00:20:46,225 >> Om vi ​​försökte igen, tryck att minne trycker du vad som var på a eller b - 476 00:20:46,225 --> 00:20:49,940 eller en konsol b, och förutsatt a var 0 och - 477 00:20:49,940 --> 00:20:53,040 Om en var 0, och med, det skulle vara ganska dålig, eftersom vi inte kan gå 478 00:20:53,040 --> 00:20:54,090 ner hela vägen dit. 479 00:20:54,090 --> 00:20:58,250 Om A och B var både 0, och vi försökte beröra det som var där, då skulle vi 480 00:20:58,250 --> 00:20:59,110 hamnar i trubbel. 481 00:20:59,110 --> 00:21:02,160 Men om vi inte röra vad som finns där, vi tillbaka bara adressen så är det 482 00:21:02,160 --> 00:21:08,300 faktiskt inte att segfault eftersom det kan du utföra dessa operationer. 483 00:21:08,300 --> 00:21:11,920 Det blir bara arg på dig, och blir super arg, när du försöker och röra 484 00:21:11,920 --> 00:21:15,740 själva minnet och återgå vad vid denna minnesplats. 485 00:21:15,740 --> 00:21:17,690 >> Låter det vettigt? 486 00:21:17,690 --> 00:21:24,820 Det är bara en galen del av C. Så, vi har ett flera av dessa. 487 00:21:24,820 --> 00:21:27,760 488 00:21:27,760 --> 00:21:29,700 >> Vem tycker det är coolt? 489 00:21:29,700 --> 00:21:30,280 Fler människor. 490 00:21:30,280 --> 00:21:31,070 Det är bra. 491 00:21:31,070 --> 00:21:34,860 OK, det här är vår sista. 492 00:21:34,860 --> 00:21:37,314 Och jag skulle vilja att du berättar om eller du tror inte detta kommer 493 00:21:37,314 --> 00:21:38,564 att göra exakt samma sak. 494 00:21:38,564 --> 00:22:06,050 495 00:22:06,050 --> 00:22:07,390 >> Jag har dem nedskrivna någonstans. 496 00:22:07,390 --> 00:22:08,640 Jag är inte memorera dem. 497 00:22:08,640 --> 00:22:33,350 498 00:22:33,350 --> 00:22:42,900 >> Låt oss se, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. 499 00:22:42,900 --> 00:22:46,670 Så detta är en array, nu, inte en funktion. 500 00:22:46,670 --> 00:22:49,640 Och det är en array eftersom vi har kvadratisk konsoler, inte klammerparenteserna. 501 00:22:49,640 --> 00:22:52,360 Och det är en samling av vilken typ? 502 00:22:52,360 --> 00:22:55,540 503 00:22:55,540 --> 00:22:56,862 Vem som helst, hmm? 504 00:22:56,862 --> 00:22:57,694 >> PUBLIK: Deras hexadecimala tal? 505 00:22:57,694 --> 00:22:59,650 >> Speak: Men vad är det för typ C? 506 00:22:59,650 --> 00:23:00,710 De har alla hexadecimala tal. 507 00:23:00,710 --> 00:23:01,960 Vad är det för typ C? 508 00:23:01,960 --> 00:23:04,730 509 00:23:04,730 --> 00:23:05,480 Den talar om. 510 00:23:05,480 --> 00:23:07,350 >> PUBLIK: Det är osignerade tecken. 511 00:23:07,350 --> 00:23:09,170 >> Speak: Höger, osignerade tecken. 512 00:23:09,170 --> 00:23:13,050 Och två hexadecimala tal är en byte. 513 00:23:13,050 --> 00:23:18,540 Så dessa är 1, 2, 3, 4, 5, 6, 7, 8, 9 bitgrupper. 514 00:23:18,540 --> 00:23:21,360 Det är en matris med 9 bitgrupper. 515 00:23:21,360 --> 00:23:25,530 >> OK, du förmodligen redan vet svaret på den frågan. 516 00:23:25,530 --> 00:23:29,840 Men, vad tror du kommer hända när jag kör det här? 517 00:23:29,840 --> 00:23:34,110 Jag säger återigen, i mysum.c, Jag väntar en funktion 518 00:23:34,110 --> 00:23:36,280 som tar två heltal. 519 00:23:36,280 --> 00:23:40,265 Och jag istället säga att summan är en grupp av tecken. 520 00:23:40,265 --> 00:23:42,780 521 00:23:42,780 --> 00:23:48,070 Vad kommer att hända när Jag kör. / Mysum och göra? 522 00:23:48,070 --> 00:23:53,230 >> Tja, först, de flesta av er kommer förmodligen överens om att göra - åh nej, bara skojar. 523 00:23:53,230 --> 00:23:54,746 Vad gjorde jag för fel? 524 00:23:54,746 --> 00:23:55,996 Uh oh. 525 00:23:55,996 --> 00:23:59,220 526 00:23:59,220 --> 00:24:01,160 Det borde vara klammerparenteser. 527 00:24:01,160 --> 00:24:02,790 Det är hur du initierar en array. 528 00:24:02,790 --> 00:24:04,040 Min dåliga. 529 00:24:04,040 --> 00:24:07,530 530 00:24:07,530 --> 00:24:11,670 >> Så såg vi redan innan dess typer är en C-nivå abstraktion, inte en 531 00:24:11,670 --> 00:24:12,610 datornivå abstraktion. 532 00:24:12,610 --> 00:24:16,360 Så de flesta av er förmodligen trodde att den skulle gör, eller om man antar att det skulle göra. 533 00:24:16,360 --> 00:24:18,680 Men vad, när jag kör. / Mysum? 534 00:24:18,680 --> 00:24:19,930 Vad kommer att hända? 535 00:24:19,930 --> 00:24:21,790 536 00:24:21,790 --> 00:24:23,422 Några gissningar? 537 00:24:23,422 --> 00:24:25,270 >> PUBLIK: Det kommer att skriva ut ett ord. 538 00:24:25,270 --> 00:24:26,310 >> Speak: Det kommer att skriva ut ett ord. 539 00:24:26,310 --> 00:24:29,335 Vilket ord? 540 00:24:29,335 --> 00:24:32,200 >> PUBLIK: [OHÖRBAR]. 541 00:24:32,200 --> 00:24:33,240 >> Speak: Några andra gissningar? 542 00:24:33,240 --> 00:24:34,000 OK, skriva ut en fras. 543 00:24:34,000 --> 00:24:35,130 Du kan ha någon fras. 544 00:24:35,130 --> 00:24:36,240 Det kommer att vara din sida. 545 00:24:36,240 --> 00:24:38,480 Alla som har en annan gissning? 546 00:24:38,480 --> 00:24:39,730 Anna, vad är din gissning? 547 00:24:39,730 --> 00:24:42,675 548 00:24:42,675 --> 00:24:44,615 >> PUBLIK: Det kommer att skriva ut - 549 00:24:44,615 --> 00:24:47,525 550 00:24:47,525 --> 00:24:49,480 två bokstäver, eller [OHÖRBAR] en bokstav. 551 00:24:49,480 --> 00:24:51,460 >> Speak: En bokstav. 552 00:24:51,460 --> 00:24:53,260 >> PUBLIK: Kan jag räkna hur många [OHÖRBAR]? 553 00:24:53,260 --> 00:24:55,426 >> Speak: Nio. 554 00:24:55,426 --> 00:24:56,640 Tja, jag ska köra den. 555 00:24:56,640 --> 00:24:58,650 Den gör exakt samma sak. 556 00:24:58,650 --> 00:25:00,190 Den lägger två nummer tillsammans. 557 00:25:00,190 --> 00:25:02,740 Nåväl, låt oss passera de två argumenten. 558 00:25:02,740 --> 00:25:03,710 Det tar inte argument. 559 00:25:03,710 --> 00:25:06,080 Så jag vet inte var det kunde möjligen få dessa argument. 560 00:25:06,080 --> 00:25:07,710 Men låt oss gå på 100 och 0. 561 00:25:07,710 --> 00:25:09,200 Och det tillför 100 och 0. 562 00:25:09,200 --> 00:25:10,220 Det är galet. 563 00:25:10,220 --> 00:25:12,280 Jag tror det. 564 00:25:12,280 --> 00:25:14,480 >> Negativt 4, som fungerar också. 565 00:25:14,480 --> 00:25:15,650 Du kan göra vad du vill. 566 00:25:15,650 --> 00:25:17,920 Detta är en lika giltig summa funktion. 567 00:25:17,920 --> 00:25:19,640 Detta är en summa funktion. 568 00:25:19,640 --> 00:25:21,510 Men, nej, du säger att det är en array av bytes. 569 00:25:21,510 --> 00:25:23,570 Så vad är det som händer här? 570 00:25:23,570 --> 00:25:27,240 >> Så, återigen, låt oss gå tillbaka till den här idén som vi sade i början. 571 00:25:27,240 --> 00:25:32,050 Du går från C-nivå-kod, för montering språk, till ettor och nollor. 572 00:25:32,050 --> 00:25:33,050 Detta är hexadecimalt. 573 00:25:33,050 --> 00:25:35,780 Men det är egentligen bara en massa av ettor och nollor. 574 00:25:35,780 --> 00:25:39,230 Detta är 72 ettor och nollor, eller hur? 575 00:25:39,230 --> 00:25:40,550 72 ettor och nollor. 576 00:25:40,550 --> 00:25:42,160 9 bitgrupper. 577 00:25:42,160 --> 00:25:43,740 Varje byte har åtta bitar. 578 00:25:43,740 --> 00:25:44,760 Varje bit är en etta eller en nolla. 579 00:25:44,760 --> 00:25:45,920 Så 72 ettor eller nollor. 580 00:25:45,920 --> 00:25:48,780 Jag har precis skrivit dem så här - stället för att skriva ut den som en hel del 581 00:25:48,780 --> 00:25:49,730 ettor och nollor. 582 00:25:49,730 --> 00:25:53,560 >> Men detta kommer att gå från C-nivå språk, för montering 583 00:25:53,560 --> 00:25:54,620 språk, till kod. 584 00:25:54,620 --> 00:25:59,020 Och detta kommer att skriva ut i kod, någonstans, dessa 72 ettor och nollor 585 00:25:59,020 --> 00:26:00,910 att jag har skrivit här. 586 00:26:00,910 --> 00:26:03,610 Så någonstans i det - 587 00:26:03,610 --> 00:26:04,850 låt oss gå här - 588 00:26:04,850 --> 00:26:11,240 någonstans i mysum, programmet, där är dessa 72 ettor och nollor som jag har 589 00:26:11,240 --> 00:26:14,930 skrivit och berättat den för att skriva. 590 00:26:14,930 --> 00:26:19,331 >> Nu, några gissningar om vad de 72 ettor och nollor detta? 591 00:26:19,331 --> 00:26:21,240 >> PUBLIK: Förmodligen samma sak som åter ett plus b.. 592 00:26:21,240 --> 00:26:22,890 >> Speak: Förmodligen samma sak som åter ett plus b.. 593 00:26:22,890 --> 00:26:23,730 Låt oss kontrollera det. 594 00:26:23,730 --> 00:26:25,210 Låt oss räkna ut hur jag gjorde det. 595 00:26:25,210 --> 00:26:31,840 >> Så om du går tillbaka hit, jag berätta att köra det här kommandot, objdump-S 596 00:26:31,840 --> 00:26:34,290 sumfunction.o. 597 00:26:34,290 --> 00:26:36,230 Låt oss gå köra den. objdump - 598 00:26:36,230 --> 00:26:37,990 obj, dumpa. 599 00:26:37,990 --> 00:26:39,840 I grunden är det kan ge mig vad jag vill se. 600 00:26:39,840 --> 00:26:40,840 Det kan ge mig assembler. 601 00:26:40,840 --> 00:26:42,730 Det kan ge mig de ettor och nollor. 602 00:26:42,730 --> 00:26:43,840 Den har massor av flaggor. 603 00:26:43,840 --> 00:26:45,860 Det är den vi ska att använda för nu. 604 00:26:45,860 --> 00:26:46,980 Dot - 605 00:26:46,980 --> 00:26:48,810 som ni ser på bilderna - 606 00:26:48,810 --> 00:26:53,840 dash huvudstad S säger intersperse, källkod - 607 00:26:53,840 --> 00:26:58,410 denna linje är från C - med montering kod och med ettor och nollor. 608 00:26:58,410 --> 00:27:00,350 Och vi kommer att köra det på sumfunction.o. 609 00:27:00,350 --> 00:27:01,410 Därför att det ska bli lättare att se. 610 00:27:01,410 --> 00:27:02,670 Igen - hmm? 611 00:27:02,670 --> 00:27:04,700 >> PUBLIK: Du stavade det fel. 612 00:27:04,700 --> 00:27:05,930 >> Speak: Men jag är faktiskt går att klara det för en sekund. 613 00:27:05,930 --> 00:27:09,160 Jag först ska öppna bara sumfuntion.o. 614 00:27:09,160 --> 00:27:11,170 >> PUBLIK: Du stavade det fel första gången. 615 00:27:11,170 --> 00:27:12,420 >> Speak: Classic. 616 00:27:12,420 --> 00:27:14,790 617 00:27:14,790 --> 00:27:15,480 Sum - 618 00:27:15,480 --> 00:27:16,680 det är ett hårt ord, men. 619 00:27:16,680 --> 00:27:19,050 Du skulle bli förvånad. 620 00:27:19,050 --> 00:27:21,560 OK, så detta är sumfunction.o. 621 00:27:21,560 --> 00:27:24,494 622 00:27:24,494 --> 00:27:26,220 Jag kunde inte ens berätta. 623 00:27:26,220 --> 00:27:30,250 Det finns en massa nollor, helt klart en hel del nollor, och det finns något annat 624 00:27:30,250 --> 00:27:31,930 saker som inte är nollor. 625 00:27:31,930 --> 00:27:33,220 Men mest nollor. 626 00:27:33,220 --> 00:27:35,120 Ser ut som det finns några sådana. 627 00:27:35,120 --> 00:27:36,810 Så klart, det är svårt att läsa. 628 00:27:36,810 --> 00:27:39,320 Det är den binära språket. 629 00:27:39,320 --> 00:27:40,710 >> Låt oss nu öppna den - 630 00:27:40,710 --> 00:27:50,190 631 00:27:50,190 --> 00:27:52,350 vad? 632 00:27:52,350 --> 00:27:53,600 Vad gör jag för fel? 633 00:27:53,600 --> 00:27:56,955 634 00:27:56,955 --> 00:27:58,434 Har jag stava det rätt? 635 00:27:58,434 --> 00:28:09,865 636 00:28:09,865 --> 00:28:11,120 OK, det här är pinsamt. 637 00:28:11,120 --> 00:28:37,560 638 00:28:37,560 --> 00:28:40,158 Jag behöver en sekund att räkna vad jag gör fel. 639 00:28:40,158 --> 00:28:46,030 640 00:28:46,030 --> 00:28:49,310 Det är ett misstag. 641 00:28:49,310 --> 00:28:50,560 Det är konstigt. 642 00:28:50,560 --> 00:28:58,080 643 00:28:58,080 --> 00:29:01,800 Åh, det är därför. 644 00:29:01,800 --> 00:29:09,880 >> Jag kommer att gå tillbaka till vår ursprungliga en, så att vi kan titta på 645 00:29:09,880 --> 00:29:10,560 objektkod av detta. 646 00:29:10,560 --> 00:29:13,390 Eftersom det inte går egentligen att vara vad som helst, när vi bara sätta 647 00:29:13,390 --> 00:29:14,640 ettor och nollor i. 648 00:29:14,640 --> 00:29:29,000 649 00:29:29,000 --> 00:29:30,200 Så där. 650 00:29:30,200 --> 00:29:32,425 OK, så att alla kan se det. 651 00:29:32,425 --> 00:29:38,130 Denna funktion, som jag sa, släcka C-linjerna - 652 00:29:38,130 --> 00:29:39,060 rader källkod - 653 00:29:39,060 --> 00:29:41,000 med några monteringsanvisningar. 654 00:29:41,000 --> 00:29:42,760 >> Här är vår källkod linje. 655 00:29:42,760 --> 00:29:44,910 Här är en, här är en annan. 656 00:29:44,910 --> 00:29:46,540 Här är monteringsanvisning. 657 00:29:46,540 --> 00:29:47,820 Det är vad de ser ut. 658 00:29:47,820 --> 00:29:49,010 Monteringsanvisningar - 659 00:29:49,010 --> 00:29:51,530 du kan läsa mer om dessa om du tar andra CS klasser, men de är 660 00:29:51,530 --> 00:29:53,500 i allmänhet en instruktion. 661 00:29:53,500 --> 00:29:57,940 Och sedan en källa och en destination. 662 00:29:57,940 --> 00:30:02,740 >> Och sedan över här är den binära koden som motsvarar denna församling 663 00:30:02,740 --> 00:30:04,940 instruktion. 664 00:30:04,940 --> 00:30:09,760 Så som ni kan se, denna summa funktion, i slutet av dagen, är tre 665 00:30:09,760 --> 00:30:10,950 monteringsanvisningar. 666 00:30:10,950 --> 00:30:12,870 Endast tre. 667 00:30:12,870 --> 00:30:14,180 En mov - 668 00:30:14,180 --> 00:30:16,740 denna m-o-v står för en Move. 669 00:30:16,740 --> 00:30:17,780 Lägg står för Lägg till. 670 00:30:17,780 --> 00:30:20,440 Och r-e-t står för Return. 671 00:30:20,440 --> 00:30:22,540 Så en mov, en add, en retur. 672 00:30:22,540 --> 00:30:27,970 Och dessa, här borta, är de nollor och de som motsvarar den koden. 673 00:30:27,970 --> 00:30:31,100 >> Så dessa nollor och ettor, om du känna dem, kan du bara sätta 674 00:30:31,100 --> 00:30:32,140 de rakt i. 675 00:30:32,140 --> 00:30:34,130 Och så kommer det att göra det exakt samma sak. 676 00:30:34,130 --> 00:30:37,260 Jo, i slutet av dagen, allt du exekvera är en lång rad 677 00:30:37,260 --> 00:30:38,480 nollor och ettor. 678 00:30:38,480 --> 00:30:40,700 Och det är vad koden egentligen är. 679 00:30:40,700 --> 00:30:41,770 >> Och anledningen - 680 00:30:41,770 --> 00:30:43,680 låt oss titta på en sak. 681 00:30:43,680 --> 00:30:45,440 Har jag har makefile öppna? 682 00:30:45,440 --> 00:30:48,510 Så om vi gick tillbaka till dash noll, noll här uppe - 683 00:30:48,510 --> 00:30:52,220 684 00:30:52,220 --> 00:30:57,300 ledsen, huvudstad o, kapital o noll, inte noll, noll. 685 00:30:57,300 --> 00:31:01,810 Och vi gjorde, skulle det fortfarande fungerar på samma sätt. 686 00:31:01,810 --> 00:31:05,420 Men nu märker man att det finns en mycket mer monteringsanvisningar. 687 00:31:05,420 --> 00:31:09,090 Det beror på, igen, frågade jag kompilatorn inte att göra någon optimering. 688 00:31:09,090 --> 00:31:12,800 >> Så jag kan fortfarande ta alla dessa nollor och ettor, och kasta dem in, 689 00:31:12,800 --> 00:31:13,390 och det skulle fungera. 690 00:31:13,390 --> 00:31:15,850 Jag gjorde precis de optimeringar, eftersom det är lite lättare, då, 691 00:31:15,850 --> 00:31:17,310 att skriva matrisen. 692 00:31:17,310 --> 00:31:19,730 Men det skulle fungera lika bra. 693 00:31:19,730 --> 00:31:24,460 >> OK, vi ska göra en sista sak, eftersom jag tror är den coolaste delen. 694 00:31:24,460 --> 00:31:27,410 Även om alla är helt klart redan är blåst och stum. 695 00:31:27,410 --> 00:31:30,520 696 00:31:30,520 --> 00:31:31,670 Våra sinnen är blåst. 697 00:31:31,670 --> 00:31:32,920 [OHÖRBAR] 698 00:31:32,920 --> 00:31:47,580 699 00:31:47,580 --> 00:31:51,520 >> Så dessa är från en annan CS klass, som är super intressant, 700 00:31:51,520 --> 00:31:52,970 att jag har tagit - 701 00:31:52,970 --> 00:31:54,140 CS61. 702 00:31:54,140 --> 00:31:55,910 Jag rekommenderar varmt att du tar den. 703 00:31:55,910 --> 00:31:58,990 Men den svala delen om detta faktum, att saker är bara nollor och ettor, 704 00:31:58,990 --> 00:32:01,270 är att allt är nollor och ettor. 705 00:32:01,270 --> 00:32:05,330 >> Så du kan ta en fil med riktiga nollor och de du vill 706 00:32:05,330 --> 00:32:10,390 någonstans i den och använda den del av nollor och ettor som en summa funktion. 707 00:32:10,390 --> 00:32:11,480 >> Vad menar jag med det? 708 00:32:11,480 --> 00:32:15,755 Jag menar att du kan ta en bildfil som har korrekt serie nollor och 709 00:32:15,755 --> 00:32:17,120 sådana, som skriver ut något ut till en bild. 710 00:32:17,120 --> 00:32:20,070 Och ett program tolkar är en bild, men man kan tolka det, om 711 00:32:20,070 --> 00:32:22,040 du vill, som en summa funktion. 712 00:32:22,040 --> 00:32:27,010 >> Så om vi ville öppna, för Exempelvis denna bild. 713 00:32:27,010 --> 00:32:37,440 Låt oss gå, Hello Kitty. 714 00:32:37,440 --> 00:32:38,810 Underbar liten bild. 715 00:32:38,810 --> 00:32:42,260 Här inne finns det att strängen av nollor och ettor. 716 00:32:42,260 --> 00:32:45,500 De 72 nollor och ettor förekommer i den här bilden. 717 00:32:45,500 --> 00:32:47,695 >> Så vad jag kan göra, då, är att skriva - 718 00:32:47,695 --> 00:32:50,510 719 00:32:50,510 --> 00:32:51,760 Jag måste komma ihåg var de är. 720 00:32:51,760 --> 00:32:54,550 721 00:32:54,550 --> 00:32:55,720 Jag hittar det på en sekund. 722 00:32:55,720 --> 00:32:57,840 Men vi gör - 723 00:32:57,840 --> 00:32:59,440 Låt mig ta reda på var de är. 724 00:32:59,440 --> 00:33:00,020 En sek. 725 00:33:00,020 --> 00:33:01,270 Låt oss göra - 726 00:33:01,270 --> 00:33:05,800 727 00:33:05,800 --> 00:33:07,240 >> PUBLIK: [OHÖRBAR]. 728 00:33:07,240 --> 00:33:08,490 >> Speak: Tack. 729 00:33:08,490 --> 00:33:24,240 730 00:33:24,240 --> 00:33:28,740 Så om vi kör det här programmet, som istället läser in en fil, sedan går 731 00:33:28,740 --> 00:33:33,160 till detta index i filen. 732 00:33:33,160 --> 00:33:35,500 Och sedan, återigen, precis som mysum, tar två tal. 733 00:33:35,500 --> 00:33:41,410 Vi kan lägga till nummer exakt samma som vi gjorde innan, som går till 734 00:33:41,410 --> 00:33:44,850 visa dig hur det faktum att, i slutet av dagen, alla dessa saker är 735 00:33:44,850 --> 00:33:45,350 nollor och ettor. 736 00:33:45,350 --> 00:33:48,170 Och det är precis hur du väljer att tolka dem. 737 00:33:48,170 --> 00:33:50,770 >> Och om du ser faktiskt på denna bild - 738 00:33:50,770 --> 00:33:52,930 låt oss zooma in lite. 739 00:33:52,930 --> 00:33:53,720 Kan alla se den? 740 00:33:53,720 --> 00:33:57,570 Du kommer att märka här, det finns några konstiga smetar. 741 00:33:57,570 --> 00:34:00,130 742 00:34:00,130 --> 00:34:02,290 Låt oss gå - det är den ursprungliga bilden. 743 00:34:02,290 --> 00:34:04,540 Du kommer att märka här finns det ingen smetar. 744 00:34:04,540 --> 00:34:08,420 Det är koden för summan funktionen, är den lilla smetar där. 745 00:34:08,420 --> 00:34:13,449 >> Och faktiskt, återigen, om du lär dig mer om det här, kommer du att inse att detta 746 00:34:13,449 --> 00:34:18,270 Hello Kitty, som har till och med en större Smeta ut, har kod som kan ta över en 747 00:34:18,270 --> 00:34:21,800 dator om det inte är skyddat lämpligt sätt. 748 00:34:21,800 --> 00:34:23,920 Så du kan faktiskt köra. 749 00:34:23,920 --> 00:34:25,380 Jag kommer inte att köra det just nu. 750 00:34:25,380 --> 00:34:30,600 Men du kan köra det här Hej Pott bild, och det kan 751 00:34:30,600 --> 00:34:32,429 ta över din dator. 752 00:34:32,429 --> 00:34:35,159 >> Så det är allt för demo. 753 00:34:35,159 --> 00:34:38,560 Är det någon som har några frågor, kommentarer, frågor? 754 00:34:38,560 --> 00:34:39,515 Jag tror att det här är fascinerande. 755 00:34:39,515 --> 00:34:41,500 Det inspirerade mig att lära mig mer. 756 00:34:41,500 --> 00:34:44,980 Jag rekommenderar starkt, om du är intresserad alls på CS, prata med mig. 757 00:34:44,980 --> 00:34:50,250 Även om jag är en Samhällskunskap Koncentrator, jag är en CS, sekundär, så 758 00:34:50,250 --> 00:34:52,340 Jag vet fortfarande lite. 759 00:34:52,340 --> 00:34:53,810 Men jag vet verkligen vad klasser du bör ta. 760 00:34:53,810 --> 00:34:57,940 Jag tycker det är alla verkligen intressant, och jag uppmuntrar dig, verkligen, att 761 00:34:57,940 --> 00:35:00,330 lär dig mer om du är intresserad. 762 00:35:00,330 --> 00:35:02,090 >> OK, jag har en sista sak. 763 00:35:02,090 --> 00:35:05,530 764 00:35:05,530 --> 00:35:05,870 Ursäkta. 765 00:35:05,870 --> 00:35:06,460 Några frågor? 766 00:35:06,460 --> 00:35:10,010 Jag ville inte göra en paus för att vänta om någon hade några frågor om det. 767 00:35:10,010 --> 00:35:13,220 768 00:35:13,220 --> 00:35:16,900 >> Är det någon som kommer att bli en CS Concentrator? 769 00:35:16,900 --> 00:35:18,580 Eller tänka på det? 770 00:35:18,580 --> 00:35:20,730 Ett, två, tre, fyra. 771 00:35:20,730 --> 00:35:21,620 One - bara en. 772 00:35:21,620 --> 00:35:24,680 Annas är den enda sidan som är raised authoritatively. 773 00:35:24,680 --> 00:35:27,640 774 00:35:27,640 --> 00:35:29,390 OK, det är coolt. 775 00:35:29,390 --> 00:35:30,110 Assam, vad ska du göra? 776 00:35:30,110 --> 00:35:33,220 >> PUBLIK: [OHÖRBAR]. 777 00:35:33,220 --> 00:35:33,910 >> Speak: Constantine? 778 00:35:33,910 --> 00:35:34,990 >> PUBLIK: Fysik. 779 00:35:34,990 --> 00:35:36,720 >> Speak: Whoa, det var snabbt. 780 00:35:36,720 --> 00:35:40,770 Du hade en dålig erfarenhet av CS50? 781 00:35:40,770 --> 00:35:42,015 [OHÖRBAR], vad ska du göra? 782 00:35:42,015 --> 00:35:42,980 >> PUBLIK: Jag har ingen aning. 783 00:35:42,980 --> 00:35:43,924 >> Speak: Curt? 784 00:35:43,924 --> 00:35:45,900 >> PUBLIK: Econ eller CS. 785 00:35:45,900 --> 00:35:46,910 >> Speak: Econ eller CS. 786 00:35:46,910 --> 00:35:47,840 Tom? 787 00:35:47,840 --> 00:35:48,385 >> PUBLIK: Jag gör Stat. 788 00:35:48,385 --> 00:35:48,950 >> Speak: Stat? 789 00:35:48,950 --> 00:35:50,100 OK. 790 00:35:50,100 --> 00:35:51,000 Vad är du? 791 00:35:51,000 --> 00:35:51,310 >> PUBLIK: mig? 792 00:35:51,310 --> 00:35:51,750 >> Speak: Ja. 793 00:35:51,750 --> 00:35:52,190 >> PUBLIK: Stat. 794 00:35:52,190 --> 00:35:52,520 >> Speak: Stat. 795 00:35:52,520 --> 00:35:53,500 Åh, det du går. 796 00:35:53,500 --> 00:35:55,200 Tom, prata med Alden. 797 00:35:55,200 --> 00:35:56,932 Emily, vad är du? 798 00:35:56,932 --> 00:35:57,396 >> PUBLIK: Biomedicinsk - 799 00:35:57,396 --> 00:36:00,178 >> Speak: Är du i det här avsnittet? 800 00:36:00,178 --> 00:36:03,040 >> PUBLIK: Nej. 801 00:36:03,040 --> 00:36:04,530 >> Speak: OK, det är Emily. 802 00:36:04,530 --> 00:36:05,670 Hon är min vän. 803 00:36:05,670 --> 00:36:10,080 Uppenbarligen inte så bra av en vän, för att hon ger mig en hård tid. 804 00:36:10,080 --> 00:36:13,223 Du kan vara trevligare mot mig framför av alla, min student - 805 00:36:13,223 --> 00:36:14,580 >> PUBLIK: Jag gör din Q guide. 806 00:36:14,580 --> 00:36:14,870 >> Speak: Verkligen? 807 00:36:14,870 --> 00:36:15,510 Uh oh. 808 00:36:15,510 --> 00:36:17,224 OK, du är fantastisk. 809 00:36:17,224 --> 00:36:19,380 Jag älskar dig så mycket. 810 00:36:19,380 --> 00:36:20,600 Oh boy. 811 00:36:20,600 --> 00:36:28,320 >> Hur som helst, jag, igår kväll, liksom allt - 812 00:36:28,320 --> 00:36:32,220 Jag är säker på att alla verkar verkligen stressad just nu. 813 00:36:32,220 --> 00:36:35,970 Jag vet inte, är förstaårselev - är ni känner dig stressad? 814 00:36:35,970 --> 00:36:36,855 Jag känner mig stressad. 815 00:36:36,855 --> 00:36:37,980 Det var som, du går hem för Thanksgiving. 816 00:36:37,980 --> 00:36:40,660 Du är som, jag ska göra alla dessa saker. 817 00:36:40,660 --> 00:36:41,530 >> PUBLIK: Det är så annorlunda. 818 00:36:41,530 --> 00:36:42,560 >> Speak: Ja, och du kommer tillbaka. 819 00:36:42,560 --> 00:36:45,290 Jeff, du behöver inte känna så? 820 00:36:45,290 --> 00:36:46,610 >> PUBLIK: Jag tänkte bara Jag skulle göra en liten bit. 821 00:36:46,610 --> 00:36:48,660 >> Speak: OK, bra. 822 00:36:48,660 --> 00:36:51,650 Så jag kommer tillbaka, och jag har inte gjort något. 823 00:36:51,650 --> 00:36:53,260 Och det är alla super stressigt. 824 00:36:53,260 --> 00:36:55,640 Och jag är orolig, genuint berörd, om huruvida jag är 825 00:36:55,640 --> 00:36:57,380 kommer att avsluta allt jag måste. 826 00:36:57,380 --> 00:37:01,750 Men i natt, blev jag inte stressad, Jag var bara lite tråkigt. 827 00:37:01,750 --> 00:37:04,520 Så jag skrev i min dagbok om vad jag var ledsen. 828 00:37:04,520 --> 00:37:08,020 Och jag var ledsen över det här avsnittet i den här klassen går mot sitt slut. 829 00:37:08,020 --> 00:37:11,100 >> Så jag tänkte bara att läsa för er en liten snutt av min dagbok, 830 00:37:11,100 --> 00:37:12,950 från i går kväll. 831 00:37:12,950 --> 00:37:17,400 Kan jag få några servetter, vissa vävnader från Tom? 832 00:37:17,400 --> 00:37:18,040 Nej, jag kommer att gråta. 833 00:37:18,040 --> 00:37:19,720 Jag gråter inte. 834 00:37:19,720 --> 00:37:22,030 Inte för att du inte kan gråta, Jag bara inte gråta. 835 00:37:22,030 --> 00:37:24,040 Jag vet inte ens om min tår körtlar arbetade - tårkanalerna. 836 00:37:24,040 --> 00:37:25,630 Jag har inte gråtit på länge. 837 00:37:25,630 --> 00:37:26,510 >> PUBLIK: [OHÖRBAR]. 838 00:37:26,510 --> 00:37:28,920 >> Speak: OK, tack. 839 00:37:28,920 --> 00:37:30,070 OK, det finns en liten förord ​​- 840 00:37:30,070 --> 00:37:32,480 det finns vissa andra delar av min dagbok inresa, eftersom jag försöker journal varje 841 00:37:32,480 --> 00:37:33,600 Kvällen innan jag kom i säng. 842 00:37:33,600 --> 00:37:34,900 Jag rekommenderar journalföring. 843 00:37:34,900 --> 00:37:38,600 Det hjälper dig att bearbeta saker, och även vara mycket uppskattande av din dag. 844 00:37:38,600 --> 00:37:43,063 Och det gör det mycket lättare att se tillbaka på din dag och inse att 845 00:37:43,063 --> 00:37:44,240 Det fanns en hel del bra saker som hänt. 846 00:37:44,240 --> 00:37:47,240 Även om du känner dig stressad på natten eller verkligen upprörd, eller 847 00:37:47,240 --> 00:37:49,022 riktigt ledsen eller trött. 848 00:37:49,022 --> 00:37:50,272 >> Herregud. 849 00:37:50,272 --> 00:37:52,546 850 00:37:52,546 --> 00:37:54,400 Jag vet inte ens om det är skrivet att bra eftersom jag inte korrekturläsa det. 851 00:37:54,400 --> 00:37:55,780 Men vi kommer att läsa den. 852 00:37:55,780 --> 00:37:59,950 Jag brukar inte läsa min journal, tydligen. 853 00:37:59,950 --> 00:38:03,720 >> "I morgon, jag ska lära mitt sista CS50 delen av året. 854 00:38:03,720 --> 00:38:05,860 Det är galet hur fort tiden går. 855 00:38:05,860 --> 00:38:09,900 Men jag slås av hur olika min erfarenhet av att undervisa i år var 856 00:38:09,900 --> 00:38:11,365 än när jag var en sophomore. 857 00:38:11,365 --> 00:38:14,120 Till att börja med, jag definitivt vet materialet bättre. 858 00:38:14,120 --> 00:38:16,820 Men inte berätta för min första kohorten studenter som. 859 00:38:16,820 --> 00:38:20,030 Men kanske ännu viktigare, insåg jag att den glädje som kommer från stående 860 00:38:20,030 --> 00:38:23,160 upp framför ett rum av det som börjar som främlingar, men slutar som, vid 861 00:38:23,160 --> 00:38:27,150 Stone, Facebook-vänner, är inte en första året flyet. 862 00:38:27,150 --> 00:38:29,970 Snarare är det att veta att, i något litet sätt hjälper du 863 00:38:29,970 --> 00:38:32,980 begåvad, omtänksam, härlig, och passionerade människor lär sig lite mer 864 00:38:32,980 --> 00:38:34,750 om datavetenskap. 865 00:38:34,750 --> 00:38:37,480 >> Du skiftande att glödlampan bara en bit i sin sockel, så att det ska kunna 866 00:38:37,480 --> 00:38:42,120 att lysa klarare än du, eller de, kunde föreställa sig vid terminsstart. 867 00:38:42,120 --> 00:38:45,390 Du hjälper vända dem frowns upp ner och ställa frågor som 868 00:38:45,390 --> 00:38:49,240 ge stöd, men ändå tillåta eleverna att stå upp på egen hand. 869 00:38:49,240 --> 00:38:52,190 >> Det är verkligen inte en överdrift att säger att detta avsnitt är min favorit 870 00:38:52,190 --> 00:38:53,190 del av veckan. 871 00:38:53,190 --> 00:38:57,930 Eller till och med att jag tvekar att säga, det är allt, vid 05:30 varje vecka, att veta 872 00:38:57,930 --> 00:39:00,640 att det blir alldeles för lång tills vi möts igen. 873 00:39:00,640 --> 00:39:02,740 >> Ändå, jag är otroligt tacksam för alla som har gett mig det här 874 00:39:02,740 --> 00:39:05,010 möjlighet att ge tillbaka till andra. 875 00:39:05,010 --> 00:39:07,340 Till David för hans tålamod och förtroende. 876 00:39:07,340 --> 00:39:11,040 För film-och produktionspersonal, för gör mig ser något respektabel. 877 00:39:11,040 --> 00:39:15,380 Och, viktigast av allt, till mina elever, utan som jag skulle ha någon anledning att 878 00:39:15,380 --> 00:39:17,890 spenderar 10 timmar att räkna ut det bästa sätt att dra pekare, eller lägga ut en 879 00:39:17,890 --> 00:39:20,330 bord av delfiner, via JavaScript. 880 00:39:20,330 --> 00:39:22,620 Som alltid, det har varit en välsignelse. " 881 00:39:22,620 --> 00:39:25,420 >> Så med det, tack grabbar. 882 00:39:25,420 --> 00:39:29,000 Vi ses alla på CS50 mässan, och den hackathon, om du är där. 883 00:39:29,000 --> 00:39:32,020 Och om du har frågor, jag ska sticka runt tills det inte finns fler. 884 00:39:32,020 --> 00:39:33,760 Men jag tackar er för ett underbart år. 885 00:39:33,760 --> 00:39:37,290 >> [Applåder] 886 00:39:37,290 --> 00:39:38,540 >> Speak: Jag skulle kunna gråta. 887 00:39:38,540 --> 00:39:40,800