1 00:00:00,000 --> 00:00:04,410 >> [MUSIK SPELA] 2 00:00:04,410 --> 00:00:12,250 3 00:00:12,250 --> 00:00:15,770 >> TALARE 1: Detta är CS50 och detta är slutet av veckan sju. 4 00:00:15,770 --> 00:00:20,240 Idag är kanske där vi verkligen lära dig språk. 5 00:00:20,240 --> 00:00:24,100 Vi introducerade i det förflutna par veckor HTML och CSS, varken som 6 00:00:24,100 --> 00:00:25,240 är programmeringsspråk. 7 00:00:25,240 --> 00:00:28,600 Och faktiskt, även om vi inte titta på nästan alla av taggarna 8 00:00:28,600 --> 00:00:33,410 som HTML kommer med och nästan alla av de egenskaper som CSS kommer med, 9 00:00:33,410 --> 00:00:35,007 det är typ det för HTML och CSS. 10 00:00:35,007 --> 00:00:36,840 Vi ska bara allmänt börja förutsatt att du 11 00:00:36,840 --> 00:00:39,545 förstå de allmänna idéer taggar och attribut, 12 00:00:39,545 --> 00:00:41,850 och sidor som skickas från klient till server. 13 00:00:41,850 --> 00:00:45,280 >> För i dag börjar vi titta på annat programmeringsspråk, PHP. 14 00:00:45,280 --> 00:00:47,110 Vi kommer att göra detta supersnabb. 15 00:00:47,110 --> 00:00:50,910 Vi kommer inte att lära dig PHP per se, mycket som vi inte strävar efter att lära dig 16 00:00:50,910 --> 00:00:52,670 C, i sig, utan snarare programmering. 17 00:00:52,670 --> 00:00:55,088 Och faktiskt, en av de mål för denna kurs 18 00:00:55,088 --> 00:00:57,820 är inte att lära dig C, eller HTML eller CSS, eller PHP, 19 00:00:57,820 --> 00:01:00,370 eller valfritt antal andra modeord eller akronymer, 20 00:01:00,370 --> 00:01:03,097 utan snarare datavetenskap och hur man programmerar i grunden. 21 00:01:03,097 --> 00:01:05,930 Och faktiskt, i dag börjar vi ta dessa stödhjulen utanför alla 22 00:01:05,930 --> 00:01:10,600 ytterligare genom att flyga genom en språk som kallas PHP, enligt följande. 23 00:01:10,600 --> 00:01:13,640 >> Här är vad detta språk ser ut. 24 00:01:13,640 --> 00:01:17,790 Det visar sig att det inte finns något behov av en huvudfunktion i ett program skrivet 25 00:01:17,790 --> 00:01:19,470 på ett språk som heter PHP. 26 00:01:19,470 --> 00:01:22,585 Så det redan låter lite enklare än C, som vi är bekant. 27 00:01:22,585 --> 00:01:25,370 Det visar sig att om du vill deklarera en variabel, 28 00:01:25,370 --> 00:01:29,470 du gör det nästan identiskt med C. Men Det är helt klart en skillnad här 29 00:01:29,470 --> 00:01:31,850 när jag deklarera en sträng, eller kanske två skillnader. 30 00:01:31,850 --> 00:01:32,725 Vad ser annorlunda ut? 31 00:01:32,725 --> 00:01:35,810 32 00:01:35,810 --> 00:01:37,160 >> PUBLIK: Den dollartecken. 33 00:01:37,160 --> 00:01:39,951 >> TALARE 1: Ja, det finns dollar underteckna, som vi aldrig har sett förut. 34 00:01:39,951 --> 00:01:41,451 Och vad som saknas? 35 00:01:41,451 --> 00:01:41,950 Yeah? 36 00:01:41,950 --> 00:01:42,820 >> PUBLIK: [OHÖRBAR] 37 00:01:42,820 --> 00:01:44,403 >> TALARE 1: Ja, det finns ingen datatyp. 38 00:01:44,403 --> 00:01:48,410 Så visar det sig att PHP är vad vi ringa ett löst skrivit språk, där 39 00:01:48,410 --> 00:01:49,959 C starkt skrivit. 40 00:01:49,959 --> 00:01:52,500 Löst skrivit betyder bara att Det finns olika datatyper, 41 00:01:52,500 --> 00:01:54,470 det finns strängar, och ints, och flyter. 42 00:01:54,470 --> 00:01:56,330 Men datorn siffror ut det. 43 00:01:56,330 --> 00:01:58,664 Du människo programmerare behöver inte räkna ut. 44 00:01:58,664 --> 00:02:00,580 Så allt du behöver göra att deklarera en variabel är 45 00:02:00,580 --> 00:02:03,220 dollartecken, namnet på din variabel och sedan, till exempel, 46 00:02:03,220 --> 00:02:04,760 citationstecken unquote, hallå världen. 47 00:02:04,760 --> 00:02:07,662 >> Ja detta är vad en villkor ser ut i PHP. 48 00:02:07,662 --> 00:02:08,328 Eventuella skillnader? 49 00:02:08,328 --> 00:02:10,650 50 00:02:10,650 --> 00:02:11,150 Nej. 51 00:02:11,150 --> 00:02:12,540 Så visar det sig dessa är identiska. 52 00:02:12,540 --> 00:02:14,665 Och du kan ha färre filialer eller flera grenar, 53 00:02:14,665 --> 00:02:16,557 men syntaxen varv ut exakt samma. 54 00:02:16,557 --> 00:02:18,390 Booleska uttryck kan beställas tillsammans. 55 00:02:18,390 --> 00:02:20,400 Booleska uttryck kan anded tillsammans. 56 00:02:20,400 --> 00:02:21,430 Du har fortfarande växlar. 57 00:02:21,430 --> 00:02:23,790 Även om du inte har använt dessa, dessa existerar i C 58 00:02:23,790 --> 00:02:26,020 och de är funktionellt motsvarighet i PHP. 59 00:02:26,020 --> 00:02:28,260 >> Och i själva verket i PHP de är lite mer kraftfull. 60 00:02:28,260 --> 00:02:32,540 I C, kan du bara jämföra vissa datatyper som Ints och tecken, 61 00:02:32,540 --> 00:02:36,320 medan i PHP kan du faktiskt jämföra fullständig flygga strängar utan att 62 00:02:36,320 --> 00:02:38,460 att oroa pekare och liknande. 63 00:02:38,460 --> 00:02:39,430 Så här är en for-loop. 64 00:02:39,430 --> 00:02:41,270 Detta är bara pseudokod kod, om ni så vill. 65 00:02:41,270 --> 00:02:43,400 Men strukturellt är det identiskt med C. 66 00:02:43,400 --> 00:02:47,520 >> Här är en while-slinga, pseudo therefore-- identisk till C. 67 00:02:47,520 --> 00:02:49,390 Här är en gör när loop-- identiska. 68 00:02:49,390 --> 00:02:51,390 Och så det finns typ av detta mönster här, varigenom 69 00:02:51,390 --> 00:02:54,400 det finns några andra syntaktiskt funktioner vi verkligen kommer att se. 70 00:02:54,400 --> 00:02:57,340 I själva verket, här är en trevlig sätt i PHP där, 71 00:02:57,340 --> 00:02:59,350 Om du vill iterera över en matris, och du 72 00:02:59,350 --> 00:03:02,309 inte vill hoppa genom mentala och syntaktiska hoops att ha 73 00:03:02,309 --> 00:03:05,178 int i lika med 0, i mindre än n, i plus plus-- som 74 00:03:05,178 --> 00:03:07,040 är bara en massa irriterande syntax. 75 00:03:07,040 --> 00:03:10,654 Du kan säga lite mer fluidmässigt för varje nummer 76 00:03:10,654 --> 00:03:13,320 som nummer, var i detta fall dollar underteckna nummer, jag antar, 77 00:03:13,320 --> 00:03:15,400 är som en array med namnet siffror. 78 00:03:15,400 --> 00:03:18,810 Och då jag antar nummer, singular, kommer att vara en variabel. 79 00:03:18,810 --> 00:03:22,940 >> Och vad PHP kommer att göra för mig som jag upprepa över denna slinga är, på varje iteration, 80 00:03:22,940 --> 00:03:28,450 det kommer uppdatera varierande antal till vara te elementet i antal, plural. 81 00:03:28,450 --> 00:03:30,060 Så det bara hanterar allt detta för mig. 82 00:03:30,060 --> 00:03:32,750 Inga hakparenteser, nej dollartecken, inga semikolon. 83 00:03:32,750 --> 00:03:34,117 Det är bara lite enklare. 84 00:03:34,117 --> 00:03:35,950 Tja, om du vill ha en array, visar det sig att du 85 00:03:35,950 --> 00:03:38,908 kan göra något ganska lik C. Syntaxen är lite annorlunda. 86 00:03:38,908 --> 00:03:41,000 Men här är en array med namnet dollar tecknat nummer. 87 00:03:41,000 --> 00:03:44,261 Och jag använder, i PHP, fyrkant konsoler, visar det sig. 88 00:03:44,261 --> 00:03:47,260 Och vi kommer att se dessa igen i JavaScript-- ännu ett annat språk. 89 00:03:47,260 --> 00:03:49,968 Jag använder bara klammer notation att ha en kommaseparerad lista 90 00:03:49,968 --> 00:03:51,530 av heltal, i det här fallet. 91 00:03:51,530 --> 00:03:53,010 Men det ger mig en array. 92 00:03:53,010 --> 00:03:56,270 >> Men ännu mer kraftfull i PHP, Vi har också vad är i allmänhet 93 00:03:56,270 --> 00:03:57,640 kallas associativa arrayer. 94 00:03:57,640 --> 00:03:59,540 Och en hel del språk har dessa också. 95 00:03:59,540 --> 00:04:03,810 Men saken C arrayer är att indexen 96 00:04:03,810 --> 00:04:06,940 för en array, det som du användning i hakparenteser via vilken 97 00:04:06,940 --> 00:04:08,600 du tillgång till delar, måste vara det? 98 00:04:08,600 --> 00:04:10,620 >> PUBLIK: [OHÖRBAR] 99 00:04:10,620 --> 00:04:14,220 >> TALARE 1: De måste vara nummer eller heltal, särskilt från noll på upp. 100 00:04:14,220 --> 00:04:17,140 Tja, i PHP, och visar det påpekar i andra språk, 101 00:04:17,140 --> 00:04:20,820 du kan börja ha index som inte är numeriska. 102 00:04:20,820 --> 00:04:23,880 Men de är faktiskt ord eller fraser, så att i stället för 103 00:04:23,880 --> 00:04:27,070 försöka komma ihåg var något är, eller lagras i en variabel i, 104 00:04:27,070 --> 00:04:31,720 du kan faktiskt använda ett ord och säga that-- du kan säga ett ord som här. 105 00:04:31,720 --> 00:04:34,730 >> Så dollartecken citat är namnet på en variabel här. 106 00:04:34,730 --> 00:04:39,360 Detta är något funky syntax det är att associera två nyckelvärde 107 00:04:39,360 --> 00:04:41,250 par för denna variabel. 108 00:04:41,250 --> 00:04:45,490 Närmare bestämt är detta ger mig en uppsättning som är av längd 2. 109 00:04:45,490 --> 00:04:47,660 Men index är inte 0 och 1. 110 00:04:47,660 --> 00:04:51,250 Indexen är citat unquote symbol och citerar unquote pris. 111 00:04:51,250 --> 00:04:55,990 Och värdena för dessa index, respektive, är FB för Facebook 112 00:04:55,990 --> 00:05:00,360 och $ 79,53, när jag sist kontrolleras ett pris för detta. 113 00:05:00,360 --> 00:05:01,210 >> Vad betyder det? 114 00:05:01,210 --> 00:05:04,136 Tja, betyder det att i stället för att skriva kod 115 00:05:04,136 --> 00:05:09,612 så här, där jag brukade göra något som dollar sign-- eller snarare, i C 116 00:05:09,612 --> 00:05:11,070 Jag skulle inte ens ha ett dollartecken. 117 00:05:11,070 --> 00:05:13,490 Jag skulle göra något som citat och sedan 118 00:05:13,490 --> 00:05:18,410 Jag skulle göra fäste i för att komma åt vissa godtyckligt numeriskt indexvärde. 119 00:05:18,410 --> 00:05:21,430 Från och med idag i PHP, om du vill komma åt ett visst värde, 120 00:05:21,430 --> 00:05:24,742 vi sorts mer semantisk uttrycksfullhet. 121 00:05:24,742 --> 00:05:27,450 Bara ett fint sätt att säga att vi kan bara kalla saker vad de är. 122 00:05:27,450 --> 00:05:29,800 >> Och om du vill få på något symbol, 123 00:05:29,800 --> 00:05:32,180 nu du bokstavligen göra citera unquote symbolen 124 00:05:32,180 --> 00:05:34,910 inom hakparenteser i stället för enbart tal. 125 00:05:34,910 --> 00:05:36,450 Så det är en trevlig bekvämlighet. 126 00:05:36,450 --> 00:05:38,140 Och det blir liksom det för nu. 127 00:05:38,140 --> 00:05:40,240 Det finns knippen av andra funktioner i PHP. 128 00:05:40,240 --> 00:05:43,180 Och faktiskt, kommer med PHP den ökända diskbänken. 129 00:05:43,180 --> 00:05:48,640 Dussintals, hundratals funktioner kommer med PHP-- så många fler än kom med C. 130 00:05:48,640 --> 00:05:51,360 >> Och det är inte avsett att väldiga utan snarare hjälpa 131 00:05:51,360 --> 00:05:53,900 du inser att vi inte längre behöver skriva kod 132 00:05:53,900 --> 00:05:55,590 det är typ av här nere konceptuellt. 133 00:05:55,590 --> 00:05:58,465 Nu kan vi bara börja dra nytta av mycket mer avancerade funktioner 134 00:05:58,465 --> 00:05:59,920 att språk som PHP har. 135 00:05:59,920 --> 00:06:02,630 Så vi behöver inte oroa sig för flytta runt saker i minnet. 136 00:06:02,630 --> 00:06:05,338 Vi behöver inte oroa sig för malloc och alla dessa lägre nivå, 137 00:06:05,338 --> 00:06:09,390 kraftfulla detaljer som du kommer att brottas med, om inte kämpa med, pset5, 138 00:06:09,390 --> 00:06:13,380 men du kan börja snart tar för givet. 139 00:06:13,380 --> 00:06:17,770 >> I själva verket, låt oss skriva ett super enkelt program i PHP, enligt följande. 140 00:06:17,770 --> 00:06:21,550 Jag kommer att gå head i CS50 IDE här, och vad jag ska göra 141 00:06:21,550 --> 00:06:29,370 är att skapa en ny fil, som mycket enkelt kommer att kallas hello punkt PHP. 142 00:06:29,370 --> 00:06:31,860 Så istället för dot c, är det kommer att kallas dot PHP. 143 00:06:31,860 --> 00:06:34,260 Och sedan i den här filen, Jag kan börja skriva. 144 00:06:34,260 --> 00:06:36,960 Men det visar sig att en sak jag måste veta 145 00:06:36,960 --> 00:06:41,470 är att varje PHP-fil i allmänhet behöver att börja med någon speciell syntax. 146 00:06:41,470 --> 00:06:44,570 I samma anda som HTML, men återigen, PHP är ett programmeringsspråk, inte 147 00:06:44,570 --> 00:06:45,590 ett märkningsspråk. 148 00:06:45,590 --> 00:06:48,700 >> Så varje fil, och det är typ dumma tittar jag ska erkänna. 149 00:06:48,700 --> 00:06:50,480 Öppna konsol, frågetecken, PHP. 150 00:06:50,480 --> 00:06:53,060 Och det är bara språkets sätt att säga, 151 00:06:53,060 --> 00:06:58,400 Hej, här kommer dator någon kod skriven på ett språk som kallas PHP. 152 00:06:58,400 --> 00:07:01,900 Och sedan i slutet av filen, du slags typ av motsatsen. 153 00:07:01,900 --> 00:07:04,860 Du behöver inte skriva PHP igen, du bara göra frågetecken, vinkelparentes. 154 00:07:04,860 --> 00:07:08,500 Och sedan allt du sätta in av dessa två taggar, så att säga, 155 00:07:08,500 --> 00:07:11,490 kommer att bli, eller borde vara, PHP-kod. 156 00:07:11,490 --> 00:07:13,180 >> Så låt oss göra något super enkelt. 157 00:07:13,180 --> 00:07:19,370 Jag kommer att gå vidare och göra print def, hello world, bakstreck n, spara. 158 00:07:19,370 --> 00:07:27,310 Och nu på min prompt, jag ska gör, hello-- nej, jag ska göra, 159 00:07:27,310 --> 00:07:28,726 prick snedstreck Hej. 160 00:07:28,726 --> 00:07:31,250 Nej, pricka snedstreck, hm. 161 00:07:31,250 --> 00:07:32,990 Så något är annorlunda. 162 00:07:32,990 --> 00:07:36,920 Och faktiskt, det är en viktig skillnad mellan PHP och språk som C. C 163 00:07:36,920 --> 00:07:38,730 var en så kallad samman språk. 164 00:07:38,730 --> 00:07:40,929 Vad betydde det för C som skall sammanställas? 165 00:07:40,929 --> 00:07:41,970 Vad var innebörden? 166 00:07:41,970 --> 00:07:42,898 Yeah. 167 00:07:42,898 --> 00:07:45,220 >> PUBLIK: Skrev den i maskinkod så det kan köras av datorn. 168 00:07:45,220 --> 00:07:46,011 >> TALARE 1: Exakt. 169 00:07:46,011 --> 00:07:49,075 Vi måste först omvandla den till s.k. maskinkod nollor och ettor, 170 00:07:49,075 --> 00:07:51,950 innan det faktiskt blir körbar och förstås av datorn. 171 00:07:51,950 --> 00:07:52,840 Av Intel inuti. 172 00:07:52,840 --> 00:07:54,530 Av CPU inuti datorn. 173 00:07:54,530 --> 00:07:58,170 PHP, däremot, är vad som kallas ett tolkat språk, vilket 174 00:07:58,170 --> 00:08:02,230 innebär att du inte kompilera det i ettor och nollor, maskinkod, 175 00:08:02,230 --> 00:08:04,360 du istället lämna det som källkod. 176 00:08:04,360 --> 00:08:08,130 Och du istället skicka den som indata till ett program, en tolk 177 00:08:08,130 --> 00:08:11,960 att någon annan skrev år sedan som förstår det 178 00:08:11,960 --> 00:08:14,310 rad för rad, tecken för tecken. 179 00:08:14,310 --> 00:08:16,120 Så med andra ord, människor där ute skrev 180 00:08:16,120 --> 00:08:19,670 ett program som kommer att se på din kod rad för rad, 181 00:08:19,670 --> 00:08:21,680 och räkna ut vad datorn ska göra, 182 00:08:21,680 --> 00:08:25,960 utan att konvertera den direkt till nollor och ettor. 183 00:08:25,960 --> 00:08:28,370 >> Så om det ser en for-loop, Detta så kallade tolk 184 00:08:28,370 --> 00:08:30,630 kommer att se ut, okej, skulle jag göra något igen och igen och igen. 185 00:08:30,630 --> 00:08:31,150 Vad ska jag göra? 186 00:08:31,150 --> 00:08:32,159 Låt mig titta på nästa rad. 187 00:08:32,159 --> 00:08:33,367 Låt mig titta på nästa rad. 188 00:08:33,367 --> 00:08:35,350 Och det verkligen tolkar det rad för rad. 189 00:08:35,350 --> 00:08:37,220 Så för att verkställa det, jag använder inte göra. 190 00:08:37,220 --> 00:08:39,409 Jag använder inte punkt snedstreck i detta fall. 191 00:08:39,409 --> 00:08:43,530 Jag stället gör PHP, som är namnet på ett program, alias 192 00:08:43,530 --> 00:08:46,562 En tolk, det är förinstallerad i CS50 IDE, 193 00:08:46,562 --> 00:08:48,770 och nu behöver jag för att passera en kommandoraden argument, som 194 00:08:48,770 --> 00:08:52,290 är helt enkelt namnet på fil som jag vill tolka. 195 00:08:52,290 --> 00:08:54,740 Eller mer i förbigående, att jag vill köra. 196 00:08:54,740 --> 00:08:57,000 Och om jag slog Enter, där har vi det. 197 00:08:57,000 --> 00:08:57,825 Hej världen. 198 00:08:57,825 --> 00:08:59,950 Nu visar det sig att jag begagnade utskrifts def medvetet 199 00:08:59,950 --> 00:09:01,600 att överbrygga oss från C till PHP. 200 00:09:01,600 --> 00:09:05,150 De flesta PHP programmerare, som du ser, inte ens bry med hjälp av utskrifts def. 201 00:09:05,150 --> 00:09:08,290 De använder bara en funktion som kallas tryck, som C inte har. 202 00:09:08,290 --> 00:09:11,390 Och så om jag kör det nu, det faktiskt beter sig funktionellt densamma. 203 00:09:11,390 --> 00:09:13,730 Jag kan inte använda procent s och procent i och så vidare, 204 00:09:13,730 --> 00:09:16,250 men det finns andra sätt i PHP att göra det. 205 00:09:16,250 --> 00:09:18,100 Men detta är bara säga att syntaktiskt, 206 00:09:18,100 --> 00:09:21,850 annat än några konstiga saker upp topp, och några konstiga tecken ner 207 00:09:21,850 --> 00:09:25,960 nedtill, begreppen nu av programmering i detta andra språk 208 00:09:25,960 --> 00:09:27,860 kommer att vara exakt samma. 209 00:09:27,860 --> 00:09:30,120 >> I själva verket, låt oss göra ett annat exempel. 210 00:09:30,120 --> 00:09:32,520 Så jag kommer att gå vidare och stäng denna fil. 211 00:09:32,520 --> 00:09:37,740 Låt mig att skapa en annan som Jag ringer villkor 1 dot PHP. 212 00:09:37,740 --> 00:09:40,770 Så ingen noll, eftersom vad jag gjorde var jag tittade tillbaka några veckor sedan, 213 00:09:40,770 --> 00:09:43,490 Vi hade en fil som heter villkoren 1 dot C. Och vad 214 00:09:43,490 --> 00:09:47,590 Jag gjorde omvandlades det i min huvud, och här på papper, 215 00:09:47,590 --> 00:09:51,290 och snart på kursens webbplats, rad för rad i PHP. 216 00:09:51,290 --> 00:09:55,520 >> Så i C-versionen, vi gjorde något som sträng s får hämta sträng. 217 00:09:55,520 --> 00:09:58,200 Så det är lite annorlunda att göra det i PHP. 218 00:09:58,200 --> 00:10:01,390 Istället, jag ska bara att göra, eller rättare sagt, jag 219 00:10:01,390 --> 00:10:05,870 kunde ha gjort int n får få int, i detta exempel tidigare. 220 00:10:05,870 --> 00:10:12,600 Så i stället för att jag kommer att göra n blir läst linje, skulle jag vilja ett heltal, 221 00:10:12,600 --> 00:10:13,670 snälla. 222 00:10:13,670 --> 00:10:15,110 Så det här är bara min prompt. 223 00:10:15,110 --> 00:10:17,260 Och så visar det sig, och Jag skulle bara veta detta 224 00:10:17,260 --> 00:10:20,480 från att ha läst eller sett funktionen före, läs linjer funktion i PHP 225 00:10:20,480 --> 00:10:23,810 tar ett argument som är ett snabbt för människan, och dess syfte i livet 226 00:10:23,810 --> 00:10:26,220 är att läsa en textrad att han eller hon skriver in. 227 00:10:26,220 --> 00:10:29,160 Och då är det butiker som text i variabeln n. 228 00:10:29,160 --> 00:10:32,200 >> Och nu kanske jag vill göra något som jag gjorde veckor sedan, i likhet med vecka 229 00:10:32,200 --> 00:10:33,290 en av klassen. 230 00:10:33,290 --> 00:10:36,600 Om n är större än noll, då, jag kommer 231 00:10:36,600 --> 00:10:42,930 att låna att syntax vi såg bara, utskrifts def, plockade du ett positivt tal, 232 00:10:42,930 --> 00:10:44,360 snedstreck n. 233 00:10:44,360 --> 00:10:49,990 Else if n är lika med är lika med noll, jag kommer att gå vidare och säga, skriva ut def, 234 00:10:49,990 --> 00:10:54,090 du plockat noll bakstreck n. 235 00:10:54,090 --> 00:10:56,830 Annars fallet här bör naturligtvis, tryck def, 236 00:10:56,830 --> 00:10:58,620 du plockat ett negativt tal. 237 00:10:58,620 --> 00:11:00,970 >> Och vi kan säkert genomföra logiken i denna sak 238 00:11:00,970 --> 00:11:03,390 i en massa olika sätt, men poängen här 239 00:11:03,390 --> 00:11:07,210 är att syntaktiskt, knappt något som är nytt. 240 00:11:07,210 --> 00:11:09,830 Det är bara dollartecken och en ny funktion och läsa linje. 241 00:11:09,830 --> 00:11:12,090 Men i grund och botten, vad som är nytt nu är jag tolkar detta. 242 00:11:12,090 --> 00:11:13,910 Jag passerar den som ingående till ett annat program. 243 00:11:13,910 --> 00:11:16,620 Så om jag vill köra detta, om Jag ville inte göra några misstag, 244 00:11:16,620 --> 00:11:20,140 Jag kommer att köra PHP, av villkoren 1 dot PHP, Enter, 245 00:11:20,140 --> 00:11:23,440 Jag kommer att skriva in numret 50, och låt oss anta nu fungerar det. 246 00:11:23,440 --> 00:11:25,940 Eftersom logiken är samma saker som vecka ett. 247 00:11:25,940 --> 00:11:28,020 >> Okej, så det är ganska underwhelming, eller hur? 248 00:11:28,020 --> 00:11:30,240 Vi kunde göra detta i någon antal språk. 249 00:11:30,240 --> 00:11:33,200 Låt oss göra något sätt mer kraftfull. 250 00:11:33,200 --> 00:11:35,610 Låt oss avsluta problembild fem. 251 00:11:35,610 --> 00:11:37,370 Så jag kommer att gå vidare och göra det. 252 00:11:37,370 --> 00:11:42,920 Jag kommer att skapa en fil kallas lexikon dot PHP, 253 00:11:42,920 --> 00:11:45,424 och lutar som du kan vara att förvränga ned massor av anteckningar, 254 00:11:45,424 --> 00:11:47,340 tonerna kommer bara att hjälpa dig om du får 255 00:11:47,340 --> 00:11:48,923 att genomföra problem ställa fem i PHP. 256 00:11:48,923 --> 00:11:52,706 Men vi får se hur snabbt nu vi kan genomföra samma problem set. 257 00:11:52,706 --> 00:11:56,830 >> Så i ordboken prick PHP, kommer jag att anta att det redan finns 258 00:11:56,830 --> 00:11:58,514 en fil i världen kallas stava. 259 00:11:58,514 --> 00:12:01,430 Och faktiskt, jag gjorde detta i förväg, och vi kommer inte att gå igenom denna linje 260 00:12:01,430 --> 00:12:03,596 för rad, men om du är nyfikna senare och verkligen vill 261 00:12:03,596 --> 00:12:06,250 att linda ditt sinne kring skillnader mellan c och PHP, 262 00:12:06,250 --> 00:12:09,030 bokstavligen jämföra den här filen, stavnings, från dagens källkod 263 00:12:09,030 --> 00:12:11,190 att vi kommer lägga senare idag, mot p-set 264 00:12:11,190 --> 00:12:15,309 fem speller dot c som vi ger dig, och det är nästan samma rad för rad. 265 00:12:15,309 --> 00:12:16,600 Det finns några fler dollartecken. 266 00:12:16,600 --> 00:12:18,330 Ett par funktioner lite annorlunda. 267 00:12:18,330 --> 00:12:20,038 Men det är ett trevligt sätt av slags se hur 268 00:12:20,038 --> 00:12:22,740 du översätter ett språk till ett annat. 269 00:12:22,740 --> 00:12:24,812 Och det är nästan identisk rad för rad. 270 00:12:24,812 --> 00:12:27,770 Men jag kommer att anta att existerar, och vad jag ska göra här 271 00:12:27,770 --> 00:12:31,310 är att försöka blåsa sinne genom reimplementing 272 00:12:31,310 --> 00:12:36,210 helheten av problemet set fem sätt snabbare än du har gjort hittills. 273 00:12:36,210 --> 00:12:39,330 Så till exempel, jag ska först deklarera en global variabel som kallas storlek, 274 00:12:39,330 --> 00:12:40,444 och ställ in den lika med noll. 275 00:12:40,444 --> 00:12:41,610 Nu det är inte mycket besparingar. 276 00:12:41,610 --> 00:12:44,170 Odds är du förs storlek ungefär densamma, 277 00:12:44,170 --> 00:12:48,440 eller tips ledtråd, kommer ikväll eller i morgon, bara använda en global variabel som heter 278 00:12:48,440 --> 00:12:49,900 storlek, och ställer in det lika med noll. 279 00:12:49,900 --> 00:12:52,660 Det är inte en särskilt fantastiska spoiler. 280 00:12:52,660 --> 00:12:57,180 >> Så vad var dina data strukturer av val, de av er som har dök i 281 00:12:57,180 --> 00:13:02,170 och läsa spec, vilka datastrukturer har de flesta av er har använt? 282 00:13:02,170 --> 00:13:06,840 En hashtabell eller prova, kanske vissa varianter därav. 283 00:13:06,840 --> 00:13:10,490 Så genomföra en hashtabell åtminstone, är lite av en massa rader kod, 284 00:13:10,490 --> 00:13:10,990 höger? 285 00:13:10,990 --> 00:13:13,700 Och inte alla av dem kan vara funktionella vid denna punkt i veckan, 286 00:13:13,700 --> 00:13:14,366 men det är bra. 287 00:13:14,366 --> 00:13:19,300 För i PHP, om jag vill ha en hashtabell, gjort. 288 00:13:19,300 --> 00:13:20,260 Höger? 289 00:13:20,260 --> 00:13:22,610 Så att variabel som jag har just förklarat är naturligtvis 290 00:13:22,610 --> 00:13:26,180 kallas dollartecken bord, per introduktionen innan. 291 00:13:26,180 --> 00:13:28,902 >> Men jag vill egentligen bara på slutet av dagen, en array. 292 00:13:28,902 --> 00:13:31,610 Men inte ett numeriskt indexerad array, eftersom det är som vecka två 293 00:13:31,610 --> 00:13:33,440 grejer, när vi talade om matriser. 294 00:13:33,440 --> 00:13:34,850 Jag vill ha en hash-tabell. 295 00:13:34,850 --> 00:13:38,070 Men en hashtabell är verkligen bara ett konkret sätt att säga, 296 00:13:38,070 --> 00:13:40,190 du vill ha en associativ array. 297 00:13:40,190 --> 00:13:43,270 Du vill kunna associera nycklar med värden. 298 00:13:43,270 --> 00:13:44,200 Nycklar med värden. 299 00:13:44,200 --> 00:13:45,640 Vad är ett lexikon, egentligen? 300 00:13:45,640 --> 00:13:47,080 Jo det finns en hel nyckelknippa. 301 00:13:47,080 --> 00:13:50,320 Ord som äpple, päron och bananer, och alla dessa engelska ord 302 00:13:50,320 --> 00:13:51,490 att vi lämnar dig. 303 00:13:51,490 --> 00:13:54,820 >> Och de värden som du är effektivt införande i din ordlista 304 00:13:54,820 --> 00:13:57,790 är antingen sant eller frånvaron, falskt. 305 00:13:57,790 --> 00:14:00,540 Med andra ord du sätter en hel massa nyckelpar värde, 306 00:14:00,540 --> 00:14:03,720 äpple, sant, päron, sant, banan, sant. 307 00:14:03,720 --> 00:14:07,446 Så att när du hämtar eller titta upp dessa data i hashtabellen 308 00:14:07,446 --> 00:14:10,070 med funktionskontrollen, du är antingen få tillbaka ett svar, 309 00:14:10,070 --> 00:14:13,260 Ja, jag hittade den i min komplexa hash tabellen, eller nej, det är inte där, 310 00:14:13,260 --> 00:14:14,540 så du return false. 311 00:14:14,540 --> 00:14:19,440 >> Så för att göra det, är allt jag behöver data struktur som jag föreslog tidigare. 312 00:14:19,440 --> 00:14:22,050 Jag behöver bara kunna att associera ord 313 00:14:22,050 --> 00:14:25,570 som, citationstecken unquote, symbol, med ett värde som, true. 314 00:14:25,570 --> 00:14:27,090 Så det är min hash bord. 315 00:14:27,090 --> 00:14:28,180 Låt oss faktiskt använda den. 316 00:14:28,180 --> 00:14:30,310 Så det finns ett par funktioner Jag behöver för att genomföra. 317 00:14:30,310 --> 00:14:33,300 Jag kommer att gå vidare och bita utanför en funktion kallad storlek. 318 00:14:33,300 --> 00:14:34,390 Det tar inga argument. 319 00:14:34,390 --> 00:14:36,660 Jag behöver inte bry sig om ordet, tomrum, i PHP. 320 00:14:36,660 --> 00:14:38,770 Jag bara kommer att återvända storlek. 321 00:14:38,770 --> 00:14:41,287 >> Och som en sidoreplik, har PHP detta minorly irriterande detalj, 322 00:14:41,287 --> 00:14:44,620 där om något är global, måste du berätta den funktion som du använder 323 00:14:44,620 --> 00:14:46,220 det, hey, det är en global variabel. 324 00:14:46,220 --> 00:14:49,330 Så, mindre dumhet, men du måste göra det ändå. 325 00:14:49,330 --> 00:14:50,920 >> Så hur belastning? 326 00:14:50,920 --> 00:14:52,990 Jag kommer att genomföra en funktion som kallas last 327 00:14:52,990 --> 00:14:56,790 som tar i namn av ett lexikon, precis som i problembild fem. 328 00:14:56,790 --> 00:14:59,554 Och innan jag fortsätter, märker att jag har inte 329 00:14:59,554 --> 00:15:00,970 varit att skriva riktigt samma saker. 330 00:15:00,970 --> 00:15:06,060 Vad är uppenbarligen annorlunda i PHP om hur du deklarerar en funktion kontra C? 331 00:15:06,060 --> 00:15:06,616 Yeah. 332 00:15:06,616 --> 00:15:07,490 PUBLIK: [OHÖRBAR] 333 00:15:07,490 --> 00:15:08,573 TALARE 1: Ingen returtyp. 334 00:15:08,573 --> 00:15:12,350 Och faktiskt, det är fallet, PHP i den mån det är löst skrivit, 335 00:15:12,350 --> 00:15:14,190 är också lite slarvigt i den meningen. 336 00:15:14,190 --> 00:15:17,680 Du behöver inte ange som programmeraren Vad den här funktionen returnerar. 337 00:15:17,680 --> 00:15:20,490 Du skulle behöva faktiskt ser på koden för att ta reda. 338 00:15:20,490 --> 00:15:22,670 Eller läsa kommentarer eller dokumentation. 339 00:15:22,670 --> 00:15:24,870 Så plus och minus av dessa typer av beslut. 340 00:15:24,870 --> 00:15:26,750 Men jag måste säga nyckelordet, funktion. 341 00:15:26,750 --> 00:15:28,360 Och när vi lär oss JavaScript i ett par veckor 342 00:15:28,360 --> 00:15:31,026 vi kommer att se samma sak igen, men det är samma idé. 343 00:15:31,026 --> 00:15:34,220 Namnet på funktionen, dess argument eller argument eller brist på sådan, och nu 344 00:15:34,220 --> 00:15:35,630 här är genomförandet. 345 00:15:35,630 --> 00:15:38,860 >> Så jag ska klippa vissa hörn bara att vara dramatisk för bara ett ögonblick. 346 00:15:38,860 --> 00:15:40,485 Men jag ska gå vidare och säga detta. 347 00:15:40,485 --> 00:15:44,890 Detta är hur jag kan ladda en fil i en matris. 348 00:15:44,890 --> 00:15:47,580 Det finns en funktion i PHP som kallas fil. 349 00:15:47,580 --> 00:15:49,300 Du lämnar det namnet på en fil. 350 00:15:49,300 --> 00:15:53,950 Det räcker dig tillbaka en array, insida vars varje rad från filen. 351 00:15:53,950 --> 00:15:56,480 Från noll, en, på upp till n minus 1 linjer. 352 00:15:56,480 --> 00:15:57,210 Det är det, eller hur? 353 00:15:57,210 --> 00:15:57,990 Det finns ingen f läsa. 354 00:15:57,990 --> 00:15:58,826 Det finns ingen f get s. 355 00:15:58,826 --> 00:15:59,700 Det finns inget procent s. 356 00:15:59,700 --> 00:16:00,420 Det finns ingen huvudvärk. 357 00:16:00,420 --> 00:16:01,220 Det finns ingen feof. 358 00:16:01,220 --> 00:16:03,950 Allt det där som du har brottats kanske, 359 00:16:03,950 --> 00:16:06,550 med p set fyra och fem, försvinner. 360 00:16:06,550 --> 00:16:09,450 >> Så jag läste dessa linjer till filen, och då vet du vad? 361 00:16:09,450 --> 00:16:15,510 Om jag vill iterera över dessa ord, Jag kan göra, för varje linjer som linje. 362 00:16:15,510 --> 00:16:19,992 Kom ihåg att detta var typ av en smart sätt av iteration över en array, index 363 00:16:19,992 --> 00:16:25,090 av index, och på varje iteration samtal den nuvarande raden, dollartecken linje. 364 00:16:25,090 --> 00:16:31,560 Och just här jag ska gå och säger bord, fäste, linje, blir sann. 365 00:16:31,560 --> 00:16:35,880 >> Med andra ord, det är hur jag infoga i min hash tabellen i PHP. 366 00:16:35,880 --> 00:16:38,740 Jag säger dollartecken bord, som är min associativ array som var 367 00:16:38,740 --> 00:16:40,690 tom per kodraden ovanför. 368 00:16:40,690 --> 00:16:42,790 Jag sedan index till det inte, användning av ett antal, 369 00:16:42,790 --> 00:16:45,300 men bokstavligen använder sökord som jag bryr mig om. 370 00:16:45,300 --> 00:16:47,730 Kanske är det äpple eller päron eller banan eller vad som helst, 371 00:16:47,730 --> 00:16:51,645 men specifikt jag indexerar i det som jag föreslog tidigare. 372 00:16:51,645 --> 00:16:53,770 Jag tar namnet på min associativ array, och sedan jag 373 00:16:53,770 --> 00:16:56,450 använda citat unquote i hakparenteser med ett snöre, 374 00:16:56,450 --> 00:16:58,490 i stället för en faktisk nummer. 375 00:16:58,490 --> 00:17:00,250 >> Och så är det. 376 00:17:00,250 --> 00:17:01,720 Last Funktionen är klar. 377 00:17:01,720 --> 00:17:05,119 När denna slinga itererar, har jag lagt allt i hashtabellen. 378 00:17:05,119 --> 00:17:07,810 Nu liten disclaimer, det finns en par saker som jag behöver för att fixa. 379 00:17:07,810 --> 00:17:10,030 Och den version jag kommer lägga upp på nätet kommer att ha alla nyanser, 380 00:17:10,030 --> 00:17:12,670 men det är oftast bara kommer att bli en del felkontroll och några mindre tweaks. 381 00:17:12,670 --> 00:17:14,044 Men det är verkligen kontentan av det. 382 00:17:14,044 --> 00:17:16,750 Om jag vill nu genomföra funktionen som kallas 383 00:17:16,750 --> 00:17:19,869 kontrollera, som räknar med en ord som dess argument, 384 00:17:19,869 --> 00:17:22,099 Hur kan jag gå om att göra det? 385 00:17:22,099 --> 00:17:30,020 Tja, jag bara kommer att säga, om insidan av mitt bord, på plats ord, 386 00:17:30,020 --> 00:17:30,652 om är inställd. 387 00:17:30,652 --> 00:17:32,360 Så om det är-- faktiskt, vet du vad? 388 00:17:32,360 --> 00:17:34,830 Jag kommer att göra det i en bit av pseudokod. 389 00:17:34,830 --> 00:17:36,020 Men idén är densamma. 390 00:17:36,020 --> 00:17:41,640 Om det är lika sant, return true. 391 00:17:41,640 --> 00:17:43,890 Okej. 392 00:17:43,890 --> 00:17:46,851 Else-- du typ av kan se var detta going-- att returnera false. 393 00:17:46,851 --> 00:17:47,350 Klar. 394 00:17:47,350 --> 00:17:49,640 Kontrollen görs. 395 00:17:49,640 --> 00:17:50,940 >> Ganska trevligt, eller hur? 396 00:17:50,940 --> 00:17:52,560 Så vad är det egentligen komma? 397 00:17:52,560 --> 00:17:53,680 Och även detta, skär jag några hörn. 398 00:17:53,680 --> 00:17:56,020 Titta på version på nätet för alla de små nyanser. 399 00:17:56,020 --> 00:17:57,103 Men det är kontentan av det. 400 00:17:57,103 --> 00:17:59,080 Index i din associativ array, alias 401 00:17:59,080 --> 00:18:02,910 Hashtabell, se om det finns ett värde där, om den är inställd på true, och i så fall 402 00:18:02,910 --> 00:18:03,930 return true. 403 00:18:03,930 --> 00:18:05,819 Så vi har reducerats alla av komplexitet. 404 00:18:05,819 --> 00:18:07,110 Så typ av sinne blåser, eller hur? 405 00:18:07,110 --> 00:18:09,680 Jag kommer inte bry avslutar det med lasta, eftersom fact-- åh, vet du vad? 406 00:18:09,680 --> 00:18:11,620 Ja, låt oss avsluta det med avlastnings. 407 00:18:11,620 --> 00:18:18,940 >> Lasta i en hashtabell kan se som funktion lasta tillbaka. 408 00:18:18,940 --> 00:18:19,930 OK så det är lasta. 409 00:18:19,930 --> 00:18:21,350 Eftersom det finns inget att lasta, eller hur? 410 00:18:21,350 --> 00:18:22,170 Det finns ingen malloc. 411 00:18:22,170 --> 00:18:24,280 Jag har inte uttryckligen be operativsystem för någonting. 412 00:18:24,280 --> 00:18:25,571 Jag har precis börjat med hjälp av variabler. 413 00:18:25,571 --> 00:18:30,510 Och så detta är också ett uttryck för funktioner språk högre nivå. 414 00:18:30,510 --> 00:18:32,940 Så återigen, de flesta av denna term Vi har arbetat här nere 415 00:18:32,940 --> 00:18:34,280 med C. Super låg nivå. 416 00:18:34,280 --> 00:18:35,980 Du kan se datorns minne. 417 00:18:35,980 --> 00:18:38,440 Du kan röra någonting du vill ha i din dators RAM-minne, 418 00:18:38,440 --> 00:18:39,440 på gott och ont. 419 00:18:39,440 --> 00:18:41,760 >> Här uppe, kommer vi att ge upp den makt. 420 00:18:41,760 --> 00:18:44,730 Men min gud, ser hur mycket mindre kod jag skrev. 421 00:18:44,730 --> 00:18:47,660 I själva verket om jag inte talade och talar över min maskinskrivning, 422 00:18:47,660 --> 00:18:50,190 vi skulle ha gjorts med detta exempel fem minuter sedan. 423 00:18:50,190 --> 00:18:52,150 Så vad är det pris som betalas? 424 00:18:52,150 --> 00:18:54,100 Nåväl låt oss ta en titt. 425 00:18:54,100 --> 00:18:55,340 Låt oss ta en titt. 426 00:18:55,340 --> 00:18:59,340 Jag kommer att gå vidare och köra CS50. 427 00:18:59,340 --> 00:19:02,160 Låt mig först gå in dagens exempel där 428 00:19:02,160 --> 00:19:03,970 Jag har texter katalog som tidigare. 429 00:19:03,970 --> 00:19:08,520 Jag kommer att köra den lösning som det kommer med problem set fem kallas 430 00:19:08,520 --> 00:19:11,190 stava, som är i CS50: s konto. 431 00:19:11,190 --> 00:19:14,040 >> Och jag kommer att köra det på något stora som King James Bible, 432 00:19:14,040 --> 00:19:16,547 bara så att vi verkligen sätter personallösningar på prov. 433 00:19:16,547 --> 00:19:19,130 Nu ibland Internet är en lite långsammare, lite snabbare, 434 00:19:19,130 --> 00:19:20,338 kan ta ett tag att rulla. 435 00:19:20,338 --> 00:19:23,730 Men det tog totalt .56 sekunder att stava kontrollera King James 436 00:19:23,730 --> 00:19:25,150 Bible använder personalen lösningen. 437 00:19:25,150 --> 00:19:25,620 Så ganska bra. 438 00:19:25,620 --> 00:19:27,786 Din kan vara mycket långsammare, och det är helt bra. 439 00:19:27,786 --> 00:19:30,090 Men det är korrekt här. 440 00:19:30,090 --> 00:19:32,440 Så det är personalen lösningen. 441 00:19:32,440 --> 00:19:34,785 Om jag går in och städa upp PHP-version. 442 00:19:34,785 --> 00:19:36,990 Och jag kommer att göra lite som bakning show sak. 443 00:19:36,990 --> 00:19:39,720 Vi kommer att ta koden jag skrev tidigare, så det är helt rätt. 444 00:19:39,720 --> 00:19:42,678 Eftersom koden jag skrev inte kommer att vara helt korrekt nyss. 445 00:19:42,678 --> 00:19:47,310 Men om jag kör PHP-version, vad har jag att ge dig idag? 446 00:19:47,310 --> 00:19:49,980 Tog mig fem minuter till genomföra p set fem, jag påstår. 447 00:19:49,980 --> 00:19:51,770 Vilket pris har jag betalt? 448 00:19:51,770 --> 00:19:52,270 Yeah. 449 00:19:52,270 --> 00:19:52,937 >> PUBLIK: Hastighet. 450 00:19:52,937 --> 00:19:53,645 TALARE 1: Hastighet. 451 00:19:53,645 --> 00:19:54,380 Vad menar du? 452 00:19:54,380 --> 00:19:55,230 >> PUBLIK: Det kommer att ta längre tid. 453 00:19:55,230 --> 00:19:55,660 >> TALARE 1: Okej. 454 00:19:55,660 --> 00:19:56,160 Låt oss se. 455 00:19:56,160 --> 00:19:59,590 Det kommer att ta längre tid, inte att skriva, men att köra den. 456 00:19:59,590 --> 00:20:00,090 Yeah. 457 00:20:00,090 --> 00:20:00,960 Så låt oss prova det här. 458 00:20:00,960 --> 00:20:05,720 Så här jag ska gå vidare och göra PHP av stava, och eftersom filens 459 00:20:05,720 --> 00:20:06,360 kallad stavnings. 460 00:20:06,360 --> 00:20:07,580 Så jag inte kör ordbok, återkallelse, 461 00:20:07,580 --> 00:20:09,204 Jag kör program som heter stava. 462 00:20:09,204 --> 00:20:12,450 Jag kommer att passera på samma fil, King James den femte. 463 00:20:12,450 --> 00:20:14,377 Det flyger förbi. 464 00:20:14,377 --> 00:20:17,210 Detta kan bara vara internethastigheten, så att inte läsa in för mycket i det. 465 00:20:17,210 --> 00:20:21,680 Men det känns längre säker. 466 00:20:21,680 --> 00:20:23,280 1.26 sekunder. 467 00:20:23,280 --> 00:20:25,150 >> Nu är fortfarande ganska jävla fort, eller hur? 468 00:20:25,150 --> 00:20:28,140 Och den enda anledningen som kändes som mer som tre eller fyra, eller fem 469 00:20:28,140 --> 00:20:30,515 sekunder, det är bara för att Internet var som långsam. 470 00:20:30,515 --> 00:20:33,980 Datorn tid var 1,26 sekunder, jämfört jag tror 0,56. 471 00:20:33,980 --> 00:20:35,880 Så mer än dubbelt så långsam. 472 00:20:35,880 --> 00:20:39,170 Nu är fortfarande ganska snabbt, men det är en manifestation 473 00:20:39,170 --> 00:20:40,860 av, ja, det exakta priset. 474 00:20:40,860 --> 00:20:43,460 >> Eftersom vi tolkar i koden rad för rad, 475 00:20:43,460 --> 00:20:46,740 och det programmet PHP läser min kod uppifrån och ned, från vänster till höger, 476 00:20:46,740 --> 00:20:47,940 det har att göra mer tänkande. 477 00:20:47,940 --> 00:20:50,430 Det måste slags konvertera det inne i sig 478 00:20:50,430 --> 00:20:53,464 till motsvarande maskin kod i farten, så att säga, 479 00:20:53,464 --> 00:20:55,380 även om mekaniken är lite annorlunda. 480 00:20:55,380 --> 00:20:59,430 Istället för att bara matning till Intel CPU rå nollor och ettor 481 00:20:59,430 --> 00:21:00,930 att det förstår inbyggt. 482 00:21:00,930 --> 00:21:04,110 >> Så absolut, händer ned vi har betalat ett pris. 483 00:21:04,110 --> 00:21:09,120 Och kod skriven på ett språk som PHP tenderar att vara långsammare. 484 00:21:09,120 --> 00:21:10,050 Men min gud. 485 00:21:10,050 --> 00:21:12,740 Så nu när jag stavnings kolla min fil, jag tillbringar en extra 0,7 486 00:21:12,740 --> 00:21:17,280 eller så sekunder vs 20 timmar för att genomföra en snabbare stavningskontroll, eller hur? 487 00:21:17,280 --> 00:21:18,397 Det är lite av en kompromiss. 488 00:21:18,397 --> 00:21:20,980 Och om du just har börjat p set fem, kanske inte 20 timmar. 489 00:21:20,980 --> 00:21:22,188 Kan vara mycket färre än så. 490 00:21:22,188 --> 00:21:23,600 Men det är en avvägning, på riktigt. 491 00:21:23,600 --> 00:21:27,820 Och om du kör kod på riktigt stora dataset, eller ännu äldre hårdvara, 492 00:21:27,820 --> 00:21:32,650 dessa typer av skillnader kan verkligen lägga upp. 493 00:21:32,650 --> 00:21:34,880 >> Eventuella frågor hittills? 494 00:21:34,880 --> 00:21:35,617 Yeah. 495 00:21:35,617 --> 00:21:36,492 >> PUBLIK: [OHÖRBAR] 496 00:21:36,492 --> 00:21:38,187 497 00:21:38,187 --> 00:21:39,978 TALARE 1: Tyvärr, kan du säger det en gång till? 498 00:21:39,978 --> 00:21:40,853 PUBLIK: [OHÖRBAR] 499 00:21:40,853 --> 00:21:43,326 500 00:21:43,326 --> 00:21:44,700 TALARE 1: Du ger upp tid. 501 00:21:44,700 --> 00:21:45,283 Tja, så ja. 502 00:21:45,283 --> 00:21:47,322 Du sparar tid genom inte behöva kompilera den, 503 00:21:47,322 --> 00:21:48,530 om det är vad du frågar. 504 00:21:48,530 --> 00:21:50,710 Och faktiskt, i CS50, de flesta av programmen, 505 00:21:50,710 --> 00:21:53,668 även om de kan ta ett tag att skriva, de är relativt kort. 506 00:21:53,668 --> 00:21:56,860 Några dussin, några hundra rader kod, och så de sammanställa ganska snabbt. 507 00:21:56,860 --> 00:21:58,470 Men när du börjar skriver större program, 508 00:21:58,470 --> 00:22:01,511 som om du är Microsoft eller om du är Google och skriva riktigt stora program 509 00:22:01,511 --> 00:22:05,360 i C eller C ++, eller på liknande sätt samman språk, kan ta många sekunder, 510 00:22:05,360 --> 00:22:08,577 eller till och med minuter eller längre för att sammanställa miljontals rader kod. 511 00:22:08,577 --> 00:22:10,660 Och det också att Skillnaden kommer att lägga upp. 512 00:22:10,660 --> 00:22:12,840 >> Och faktiskt, när vi övergång i dag, samma dag 513 00:22:12,840 --> 00:22:15,910 idag, till webbprogrammering med PHP, du är 514 00:22:15,910 --> 00:22:18,460 kommer att hitta det bara så mycket mer lustfyllt att skriva kod 515 00:22:18,460 --> 00:22:21,501 när du inte behöver göra dessa dumma steg som förändring till din terminal 516 00:22:21,501 --> 00:22:24,202 fönster, typ gör hej, re köra den, ladda fönstret. 517 00:22:24,202 --> 00:22:25,910 Bara så många dumma mekaniska steg som 518 00:22:25,910 --> 00:22:28,480 bara komma i vägen för att göra intressant, roligt arbete. 519 00:22:28,480 --> 00:22:31,450 Och faktiskt kastar vi bort det med PHP. 520 00:22:31,450 --> 00:22:34,960 Och vi kan interagera med det snabbare. 521 00:22:34,960 --> 00:22:35,495 Yeah. 522 00:22:35,495 --> 00:22:36,370 PUBLIK: [OHÖRBAR] 523 00:22:36,370 --> 00:22:40,294 524 00:22:40,294 --> 00:22:40,960 TALARE 1: Visst. 525 00:22:40,960 --> 00:22:42,876 Kan jag klargöra vad det organ tolkas? 526 00:22:42,876 --> 00:22:45,870 När du kompilerar ett språk som C, går det ner 527 00:22:45,870 --> 00:22:48,140 som vi sagt att bearbeta kod, nollor och ettor. 528 00:22:48,140 --> 00:22:51,860 Och Intel beslutade år sedan som vissa mönster av ettor och nollor 529 00:22:51,860 --> 00:22:56,220 representera tillägg eller subtraktion, eller skriva ut, eller andra grundläggande funktioner. 530 00:22:56,220 --> 00:23:00,250 I en värld av ett tolkat språk som PHP, eller JavaScript, eller Python, 531 00:23:00,250 --> 00:23:03,120 eller Ruby, eller knippen av andra, i stället någon 532 00:23:03,120 --> 00:23:05,120 har skrivit ett interpreter-- i detta fall, 533 00:23:05,120 --> 00:23:09,770 det också kallas PHP, identisk med den namnet på den language-- som i huvudsak 534 00:23:09,770 --> 00:23:13,840 har en stor slinga i det som upprepar över alla rader i koden 535 00:23:13,840 --> 00:23:18,170 att jag mata den som indata, som hello dot PHP, eller ordbok prick PHP. 536 00:23:18,170 --> 00:23:21,760 >> Och då kan du tänka på deras stora slinga som har en hel del villkor. 537 00:23:21,760 --> 00:23:26,340 Och dessa villkor säger, om människa har skrivit sökord för, 538 00:23:26,340 --> 00:23:28,470 börja göra hans eller hennes koden igen och igen. 539 00:23:28,470 --> 00:23:31,360 Eller om den humana har skrivit kodrad, 540 00:23:31,360 --> 00:23:34,880 om, endast exekvera sina nästa rad villkorligt. 541 00:23:34,880 --> 00:23:37,740 Så det är verkligen som att tolka det i en mänsklig mening, rad 542 00:23:37,740 --> 00:23:39,660 rad, och som bara tar tid. 543 00:23:39,660 --> 00:23:41,340 Det tar ovanför. 544 00:23:41,340 --> 00:23:44,189 Och så det är en price-- bra question-- vi betalar. 545 00:23:44,189 --> 00:23:46,480 Så låt oss göra en annan demo som är lite mer dramatisk. 546 00:23:46,480 --> 00:23:51,160 Det finns, skulle jag säga, en ungefärlig detta på en 90% sannolikhet för att misslyckas fruktansvärt, 547 00:23:51,160 --> 00:23:53,869 men du kommer att bli förvånad med 10% sannolikhet. 548 00:23:53,869 --> 00:23:55,660 Så varje år försöker vi att göra detta, där vi 549 00:23:55,660 --> 00:23:59,061 försök att skriva ett program som går igenom problem set noll, som du har 550 00:23:59,061 --> 00:24:02,060 inlämnade ditt telefonnummer och en mycket annan demografisk information 551 00:24:02,060 --> 00:24:06,030 och vi programmässigt skicka ett textmeddelande. 552 00:24:06,030 --> 00:24:08,540 Och sedan allas telefon börjar pipa eller vibrera, 553 00:24:08,540 --> 00:24:11,460 och det är bara fantastiskt, eftersom Tja, titta på vad datorer kan göra. 554 00:24:11,460 --> 00:24:13,840 >> Detta fungerar sällan korrekt det verkar, till stor del 555 00:24:13,840 --> 00:24:16,800 eftersom jag vanligtvis få svartlistad av Gmail eller någon annan tjänst 556 00:24:16,800 --> 00:24:19,630 för att faktiskt försöker göra detta på skalan. 557 00:24:19,630 --> 00:24:24,940 Men rolig sak är också, eftersom vi har inte alla här i dag, 558 00:24:24,940 --> 00:24:27,690 kul faktum förra gången vi försökte detta två år sedan, 559 00:24:27,690 --> 00:24:30,870 Jag tror att jag skrev ett program som satt i en slinga iteration 560 00:24:30,870 --> 00:24:34,040 över alla elever i klassen, och var och en av dem ett textmeddelande, 561 00:24:34,040 --> 00:24:37,534 och det sa något i stil, Varför är du inte i föreläsning? 562 00:24:37,534 --> 00:24:39,170 Kärlek, CS50 bot. 563 00:24:39,170 --> 00:24:42,580 >> Du har ingen aning om hur många ursäkt och typ av smärtsamma e-post 564 00:24:42,580 --> 00:24:46,970 Jag har fått ett svar från n minus 100 personer som inte var här 565 00:24:46,970 --> 00:24:47,960 den dagen. 566 00:24:47,960 --> 00:24:52,116 Och även mer rolig, mer skam story-- du vet, låt oss uttrycka det ute. 567 00:24:52,116 --> 00:24:53,740 Det är redan på video ett par år tillbaka. 568 00:24:53,740 --> 00:24:56,810 Så du kommer snart att se mig skriva en for-loop, varvid 569 00:24:56,810 --> 00:25:00,640 det är mycket lätt att skriva en bugg i det for-slingan, så att det första gången 570 00:25:00,640 --> 00:25:02,800 genom öglan, du skicka ett textmeddelande. 571 00:25:02,800 --> 00:25:06,190 >> Den andra gången genom slingan jag borde ha skickat en mer textmeddelande, 572 00:25:06,190 --> 00:25:08,250 och sedan en text meddelande, och en till. 573 00:25:08,250 --> 00:25:11,490 Men det visar sig om du gör ett stavfel vid programmering, ibland 574 00:25:11,490 --> 00:25:14,460 kan skriva program som skickar en textmeddelande, sedan två textmeddelanden, 575 00:25:14,460 --> 00:25:18,742 sedan tre textmeddelanden till alla som är redan fått ett textmeddelande. 576 00:25:18,742 --> 00:25:21,450 Och som ni vet, göra något, plus något, plus något, 577 00:25:21,450 --> 00:25:25,910 plus något är stort O för ett parti textmeddelanden, eller n kvadrat, 578 00:25:25,910 --> 00:25:29,830 eller $ 0,10 ett textmeddelande, $ 20.000. 579 00:25:29,830 --> 00:25:33,700 >> Tack och lov jag slog Ctrl-C innan hände, men jag var skyldig åtminstone en 580 00:25:33,700 --> 00:25:37,550 av era föregångare $ 20 för 200 några udda textmeddelanden som, 581 00:25:37,550 --> 00:25:40,450 inte bara gick till sin telefon, men också det var en äldre flip-telefon 582 00:25:40,450 --> 00:25:43,520 så känns det skjuts ut ur hans minne varannan personlig text 583 00:25:43,520 --> 00:25:45,930 meddelande han hade faktiskt fått. 584 00:25:45,930 --> 00:25:49,250 Så vi har ett mål idag, att inte göra det. 585 00:25:49,250 --> 00:25:50,620 Kanske slå på flygplansläge. 586 00:25:50,620 --> 00:25:51,120 Okej. 587 00:25:51,120 --> 00:25:56,590 Så låt oss gå in i en programmet här callled-- 588 00:25:56,590 --> 00:25:59,060 att jag kommer att kalla text dot PHP. 589 00:25:59,060 --> 00:26:01,074 Och i förväg, jag har två filer här. 590 00:26:01,074 --> 00:26:06,030 Jag gjorde en fil för bara personal, har som fick alla personalens info, alla namn 591 00:26:06,030 --> 00:26:07,260 från kursens hemsida. 592 00:26:07,260 --> 00:26:09,756 Och då nu jag bara sätta några falska nummer 555-1212. 593 00:26:09,756 --> 00:26:11,380 Så dessa skulle faktiskt inte gå någonstans. 594 00:26:11,380 --> 00:26:15,140 Men märker insidan av denna CSV-fil, som vi talade om en kort stund innan 595 00:26:15,140 --> 00:26:16,540 i samband med filen IO. 596 00:26:16,540 --> 00:26:18,730 >> Vad är en CSV-fil? 597 00:26:18,730 --> 00:26:19,970 Kommaseparerade variabler. 598 00:26:19,970 --> 00:26:24,400 Och det är ungefär som en mycket lätt databas, om ni så vill. 599 00:26:24,400 --> 00:26:28,650 Det finns en slags typ av fyra kolumner i den här filen, och det taggiga, 600 00:26:28,650 --> 00:26:32,400 men kommatecken väsentligen representera kolumner i filen. 601 00:26:32,400 --> 00:26:35,400 Den första kolumnen är TF eller CA: s namn. 602 00:26:35,400 --> 00:26:37,800 Andra kolumnen är deras efternamn. 603 00:26:37,800 --> 00:26:39,820 Tredje kolumnen är deras telefonnummer. 604 00:26:39,820 --> 00:26:44,760 Och fjärde kolumnen tydligen är-- fjärde kolumnen är tydligen vad? 605 00:26:44,760 --> 00:26:45,870 OK, så det är deras bärare. 606 00:26:45,870 --> 00:26:47,180 Så Verizon eller Sprint, eller vad inte. 607 00:26:47,180 --> 00:26:48,620 Och om jag misspoke tidigare, CSV. 608 00:26:48,620 --> 00:26:51,800 Kommaseparerade värden är CSV här. 609 00:26:51,800 --> 00:26:54,260 >> Så vad kan jag göra med detta? 610 00:26:54,260 --> 00:26:56,940 Ja detta är bara en stor textfil, och det är ganska länge, eller hur? 611 00:26:56,940 --> 00:26:58,690 Gillar du kommer att vara typ av irriterande. 612 00:26:58,690 --> 00:27:03,510 Och det visar sig dock att om jag vill skicka ett textmeddelande till, låt oss 613 00:27:03,510 --> 00:27:05,180 säga Alex här. 614 00:27:05,180 --> 00:27:09,690 Låt mig gå in i min webbläsare och avsluta fullskärmsläge 615 00:27:09,690 --> 00:27:11,660 bara så att jag kan växla fram och tillbaka. 616 00:27:11,660 --> 00:27:20,280 Det visar sig, låt oss se om jag går i här, och logga in på Gmail, okej. 617 00:27:20,280 --> 00:27:22,950 Titta inte på denna del. 618 00:27:22,950 --> 00:27:23,880 Bara jag får se. 619 00:27:23,880 --> 00:27:26,551 620 00:27:26,551 --> 00:27:28,800 naturligtvis Live kan fortfarande se vad jag gör. 621 00:27:28,800 --> 00:27:29,360 Okej. 622 00:27:29,360 --> 00:27:31,850 >> Så här är bara Gmail med John Harvard konto. 623 00:27:31,850 --> 00:27:34,000 Så om jag vill skicka en textmeddelande till Alex, 624 00:27:34,000 --> 00:27:35,530 Jag kan givetvis komponera ett meddelande. 625 00:27:35,530 --> 00:27:38,410 Och det visar sig, och jag har testat det med Alex tidigare här, 626 00:27:38,410 --> 00:27:42,260 så att du kan lägga till en viss domän namn till folks telefonnummer, 627 00:27:42,260 --> 00:27:45,850 eftersom det finns i världen saker kallade SMS till e-post gateways. 628 00:27:45,850 --> 00:27:50,000 Vilket är ett fint sätt att säga alla av oss som har mobiltelefoner som 629 00:27:50,000 --> 00:27:53,200 har telefonnummer, naturligtvis, det antagligen för din operatör, 630 00:27:53,200 --> 00:27:56,840 en viss suffix liknande vid Vtext.com för Verizon textmeddelande 631 00:27:56,840 --> 00:28:00,320 dot com, som du kan lägga till din egen personliga telefonnummer, och sedan 632 00:28:00,320 --> 00:28:03,540 dig eller vänner, eller dina föräldrar kan texten du på just adress. 633 00:28:03,540 --> 00:28:07,380 >> Och Verizon har en server, en e- server, att vid mottagandet av detta e-post, 634 00:28:07,380 --> 00:28:11,180 ser på det numeriska delen och sedan använder vad speciell industri magiska 635 00:28:11,180 --> 00:28:14,540 de måste faktiskt skicka ut det över etern till just din cell 636 00:28:14,540 --> 00:28:15,040 telefon. 637 00:28:15,040 --> 00:28:18,030 Nu är trevligt eftersom jag inte verkligen vet hur man skickar ett textmeddelande 638 00:28:18,030 --> 00:28:20,460 eller att skriva kod ännu för min mobiltelefon, 639 00:28:20,460 --> 00:28:23,580 och du kan göra just detta för ett slutprojekt, men nu alla 640 00:28:23,580 --> 00:28:24,770 Jag har min laptop här. 641 00:28:24,770 --> 00:28:29,830 Så jag vill iterera över den CSV fil, linje, rad, rad, rad, 642 00:28:29,830 --> 00:28:35,160 ta vart och ett av personalens telefonnummer, och deras bärare och programmatiskt, 643 00:28:35,160 --> 00:28:39,770 sammanfoga, det vill säga ansluta telefonen nummer med lämpligt domännamn 644 00:28:39,770 --> 00:28:40,820 och sedan skicka ett e-postmeddelande. 645 00:28:40,820 --> 00:28:41,940 >> Så det är en hel del åtgärder. 646 00:28:41,940 --> 00:28:45,530 Och lycka till att göra det i C. Det är en mardröm av en situation 647 00:28:45,530 --> 00:28:48,350 att öppna en fil, att läsa det linje, rad, rad, som ni 648 00:28:48,350 --> 00:28:51,100 ser eller kan snart se med problem set fem, om inte 649 00:28:51,100 --> 00:28:53,560 problem set fyra, och sedan att dynamiskt sammanlänka 650 00:28:53,560 --> 00:28:57,020 två strängar tillsammans, eftersom i C, att ta två strängar och kombinera dem, 651 00:28:57,020 --> 00:29:00,900 vad gör du minimalt behöver göra mest troligt? 652 00:29:00,900 --> 00:29:03,020 Du måste deklarera mer minne, eller hur? 653 00:29:03,020 --> 00:29:04,710 Och fråga, malloc, kan jag få mer minne? 654 00:29:04,710 --> 00:29:07,060 Så jag kan sätta hälften av detta här, halv av denna här. 655 00:29:07,060 --> 00:29:08,150 Det är bara så många steg. 656 00:29:08,150 --> 00:29:10,310 Och genom den punkt där du har förlorat intresse för dumma lilla demo 657 00:29:10,310 --> 00:29:11,851 där du gör allas telefon pip. 658 00:29:11,851 --> 00:29:14,590 Låt oss göra denna typ av PHP stil, där vi bara 659 00:29:14,590 --> 00:29:16,210 börja använda mer av den diskbänk. 660 00:29:16,210 --> 00:29:18,050 >> Och idéer är i grunden densamma, 661 00:29:18,050 --> 00:29:20,710 men vi behöver inte oroa sig alltför mycket om den lägre nivån. 662 00:29:20,710 --> 00:29:22,950 Så låt oss se hur jag kan gå om att göra detta. 663 00:29:22,950 --> 00:29:26,664 Och bara så att jag inte upprepa tidigare misstag, 664 00:29:26,664 --> 00:29:28,330 Jag har skrivit några anteckningar för mig själv här. 665 00:29:28,330 --> 00:29:31,070 Och låt oss se om jag kan gå oss genom några av de grundläggande stegen, 666 00:29:31,070 --> 00:29:33,861 och sedan för tiden skull vi ska kanske klippa vissa hörn i slutet. 667 00:29:33,861 --> 00:29:38,007 Jag kommer att gå vidare och göra öppna fäste PHP att starta den här filen. 668 00:29:38,007 --> 00:29:39,590 Och jag kommer att gå vidare och göra det. 669 00:29:39,590 --> 00:29:41,490 Fil handtag, som du kommer snart se, faktiskt 670 00:29:41,490 --> 00:29:44,790 anropar en funktion som kallas f öppen. 671 00:29:44,790 --> 00:29:46,280 Och kom ihåg detta öppnar en fil. 672 00:29:46,280 --> 00:29:48,800 Och citatet, unquote, r menar vad igen? 673 00:29:48,800 --> 00:29:49,800 Bara öppna den för läsning. 674 00:29:49,800 --> 00:29:51,210 Nu i p set för, du gjorde det här. 675 00:29:51,210 --> 00:29:54,500 Och hantera kan vara vad som helst, fu, bar, bas, något variabelnamn. 676 00:29:54,500 --> 00:29:57,470 Men i allmänhet en dator vetenskapsman skulle kalla en öppen fil, 677 00:29:57,470 --> 00:30:00,962 vilket ger dig en fil handtag, något att hålla fast så att säga. 678 00:30:00,962 --> 00:30:02,670 Jag kommer bara att göra viss felkontroll. 679 00:30:02,670 --> 00:30:07,260 Så om handtaget är falskt, precis som i C, kommer jag att göra något liknande, 680 00:30:07,260 --> 00:30:09,545 kunde inte öppna filen, bakstreck n. 681 00:30:09,545 --> 00:30:11,420 Och då jag bara gå att gå vidare och avsluta. 682 00:30:11,420 --> 00:30:14,340 Och det visar sig, i PHP, Jag är inte inne i en funktion. 683 00:30:14,340 --> 00:30:16,160 Det finns ingen huvuduppgift här. 684 00:30:16,160 --> 00:30:17,450 Så jag inte tillbaka i sig. 685 00:30:17,450 --> 00:30:18,120 Jag avsluta. 686 00:30:18,120 --> 00:30:19,619 Vilket är i stort sett samma sak. 687 00:30:19,619 --> 00:30:22,510 Och jag lämnar med en y förmodligen. 688 00:30:22,510 --> 00:30:24,220 Ett sätt bara ett fel av något slag. 689 00:30:24,220 --> 00:30:25,580 Det är icke-noll, så det är ett fel. 690 00:30:25,580 --> 00:30:30,220 >> Okej, så om jag här nere nu i mitt program har jag öppnade filen. 691 00:30:30,220 --> 00:30:34,250 Jag kommer att gå vidare och förklara en array med namnet adresser, 692 00:30:34,250 --> 00:30:38,610 och C skulle jag måste känna till storleken på matrisen i förväg, eller hur? 693 00:30:38,610 --> 00:30:41,910 Eller jag skulle behöva deklarera detta är en pekare, och sedan använda malloc. 694 00:30:41,910 --> 00:30:44,720 Och sedan varje gång jag läser genom en annan rad i filen, 695 00:30:44,720 --> 00:30:46,620 Jag kommer att behöva malloc mer minne, malloc mer minne. 696 00:30:46,620 --> 00:30:47,703 Det är en smärta i nacken. 697 00:30:47,703 --> 00:30:50,950 Och tack och lov, PHP och Ruby, och Python och JavaScript, de 698 00:30:50,950 --> 00:30:53,880 kommer att växa dina arrayer åt dig automatiskt. 699 00:30:53,880 --> 00:30:54,830 Inga fler malloc. 700 00:30:54,830 --> 00:30:56,227 Inga fler minneshantering. 701 00:30:56,227 --> 00:30:57,560 Datorn tar hand om det. 702 00:30:57,560 --> 00:31:00,330 Men det pris du betalar. 703 00:31:00,330 --> 00:31:01,350 Det är en lite långsammare. 704 00:31:01,350 --> 00:31:03,190 Och för ett program som detta Vi kommer inte att märka. 705 00:31:03,190 --> 00:31:04,720 Vi kommer att skicka 100 textmeddelanden. 706 00:31:04,720 --> 00:31:06,136 Till exempel kommer inte att känna det. 707 00:31:06,136 --> 00:31:08,430 IT egentligen bara börjar materia ditt språk val 708 00:31:08,430 --> 00:31:11,490 när dina data eller dina program bli riktigt, riktigt betydande, 709 00:31:11,490 --> 00:31:14,120 som kommer att vara fallet mer med vår webbaserade grejer. 710 00:31:14,120 --> 00:31:15,450 >> Men nu ska vi gå framåt. 711 00:31:15,450 --> 00:31:20,120 Även om det visar sig att det finns en funktion i C kallas f få CSV. 712 00:31:20,120 --> 00:31:24,570 Fil får CSV, tar det en fil handtag som dess argument, 713 00:31:24,570 --> 00:31:28,810 och det fortsätter sedan, rad, med rad, för rad, att läsa i rad. 714 00:31:28,810 --> 00:31:30,964 Så det bara läser en linje text från filen. 715 00:31:30,964 --> 00:31:34,130 Men vad är trevligt om denna funktion, det inte bara lämna mig en textrad. 716 00:31:34,130 --> 00:31:37,320 Det ser ut för dessa kommatecken och tolkar linjen. 717 00:31:37,320 --> 00:31:41,740 Och för att tolka raden betyder att dela det på vissa värden i det här sammanhanget. 718 00:31:41,740 --> 00:31:45,510 >> Med andra ord, dollartecken rad är en variabel som är 719 00:31:45,510 --> 00:31:47,010 kommer att ge mig en massa index. 720 00:31:47,010 --> 00:31:49,635 Detta kommer att vara första kolumnen i min CSV. 721 00:31:49,635 --> 00:31:52,510 Detta kommer att bli den andra kolumn, kommer detta att bli den tredje, 722 00:31:52,510 --> 00:31:53,968 och detta kommer att bli den fjärde. 723 00:31:53,968 --> 00:31:57,440 Eftersom återkallande och Excel inte samarbeta sista gången vi gjorde detta, 724 00:31:57,440 --> 00:32:03,350 men om jag hämta personal dot CSV. 725 00:32:03,350 --> 00:32:04,940 Hoppsan, inte byta namn på. 726 00:32:04,940 --> 00:32:09,120 Om jag hämta personal dot CSV, och försöka öppna det, 727 00:32:09,120 --> 00:32:12,510 Jag har redan registered-- åh jag inte uppdatera Excel sedan sist. 728 00:32:12,510 --> 00:32:15,880 Du ser att personal dot CSV, jag har fyra kolumner. 729 00:32:15,880 --> 00:32:18,720 Så när jag läste i första raden för Abby här, 730 00:32:18,720 --> 00:32:23,582 dollartecken rad 0 är Abby, dollartecken rad en är Lyons, 731 00:32:23,582 --> 00:32:27,740 dollartecken rad två är hennes nummer, och sedan hennes telefon transportör. 732 00:32:27,740 --> 00:32:28,410 >> Så det är allt. 733 00:32:28,410 --> 00:32:30,740 Och det är trevligt, eftersom jag behöver inte nu räkna ut 734 00:32:30,740 --> 00:32:32,800 där alla dessa kommatecken egentligen är. 735 00:32:32,800 --> 00:32:35,300 Så jag kommer att gå vidare och gör det, med tanke på att definitionen, 736 00:32:35,300 --> 00:32:38,960 Jag kommer att säga att hennes namn är i rad konsol noll, som utlovat. 737 00:32:38,960 --> 00:32:41,150 Och jag kommer att grab-- och faktiskt, vet du vad? 738 00:32:41,150 --> 00:32:42,780 Jag tänker inte oroa sig hennes namn, i det här fallet. 739 00:32:42,780 --> 00:32:43,988 Jag kommer att hålla det enklare. 740 00:32:43,988 --> 00:32:48,610 Jag kommer att göra sitt nummer är i rad fäste två, tror jag. 741 00:32:48,610 --> 00:32:50,510 Och hennes bärare var där? 742 00:32:50,510 --> 00:32:53,405 Rad tre, en över. 743 00:32:53,405 --> 00:32:54,280 Så inget nytt där. 744 00:32:54,280 --> 00:32:56,770 Det är bara noll indexering i en matris. 745 00:32:56,770 --> 00:32:58,760 >> Och nu, jag kommer att göra följande. 746 00:32:58,760 --> 00:33:03,930 Om transportören är lika lika AT & T-- Jag kommer bara att ha en loop-- 747 00:33:03,930 --> 00:33:06,790 Jag vill skapa ett e-postmeddelande adress som ser ut så här. 748 00:33:06,790 --> 00:33:12,320 Det kommer att bli 617-555-1212 på, vad är det, text.ATT.net, 749 00:33:12,320 --> 00:33:13,490 är vad jag vill göra. 750 00:33:13,490 --> 00:33:15,260 Så hur gör jag detta? 751 00:33:15,260 --> 00:33:16,730 Jag kommer att göra följande. 752 00:33:16,730 --> 00:33:22,460 Hennes adress kommer att bli hennes nummer, och nu, låt mig gå vidare och göra det. 753 00:33:22,460 --> 00:33:23,760 Detta är några skraj syntax. 754 00:33:23,760 --> 00:33:27,250 Jag kunde göra procent s trick, men jag kan faktiskt bara göra detta. 755 00:33:27,250 --> 00:33:29,900 >> Så det här är en PHP sak, men låt oss fundera på vad jag gör. 756 00:33:29,900 --> 00:33:31,630 Dollar underteckna adressen på vänster, bara en variabel. 757 00:33:31,630 --> 00:33:32,300 Ge mig en variabel. 758 00:33:32,300 --> 00:33:33,390 Jag behöver inte ange vilken typ. 759 00:33:33,390 --> 00:33:34,570 PHP kommer att räkna ut det. 760 00:33:34,570 --> 00:33:36,580 På höger sida, vad datatyp 761 00:33:36,580 --> 00:33:38,399 av det hela på höger sida? 762 00:33:38,399 --> 00:33:40,190 Ser ut som en sträng, eftersom det finns dubbel 763 00:33:40,190 --> 00:33:42,280 citerar längst till vänster och längst till höger. 764 00:33:42,280 --> 00:33:44,210 Nu finns det vissa funky ny syntax här. 765 00:33:44,210 --> 00:33:47,550 Det finns klammerparenteserna, och dollartecken nummer. 766 00:33:47,550 --> 00:33:52,860 Men ta en gissa vad är det syntax förmodligen berättar PHP att göra för mig? 767 00:33:52,860 --> 00:33:53,360 Yeah. 768 00:33:53,360 --> 00:33:54,630 Bara in värdet där. 769 00:33:54,630 --> 00:33:55,530 Så ingen procent s. 770 00:33:55,530 --> 00:33:58,160 Vi skulle kunna använda utskrifts f, eller s utskrifts f eller något liknande, 771 00:33:58,160 --> 00:34:00,070 men PHP och en hel del språk högre nivå, 772 00:34:00,070 --> 00:34:03,070 du kommer att se att du kan göra samma sak funktionellt, kanske 773 00:34:03,070 --> 00:34:04,019 sex olika sätt. 774 00:34:04,019 --> 00:34:06,310 Och så det börjar bli en fråga om design eller stil. 775 00:34:06,310 --> 00:34:09,902 Så det här är bara ett kryptiskt sätt ser att säga, ge mig en e-postadress, 776 00:34:09,902 --> 00:34:12,110 men plug-in numret i mellan dessa klammerparenteserna. 777 00:34:12,110 --> 00:34:15,440 Och klammerparenteserna kommer inte hamna i den slutliga adressen. 778 00:34:15,440 --> 00:34:18,010 >> Nu kan vi hoppa över en del av dessa linjer för tiden skull. 779 00:34:18,010 --> 00:34:21,210 Så om en bärare lika lika verHorizon-- hoppsan, 780 00:34:21,210 --> 00:34:24,989 Verizon-- jag vill göra något mycket lika, när adressen blir, 781 00:34:24,989 --> 00:34:27,569 citationstecken, unquote, antal på text.ATT.net. 782 00:34:27,569 --> 00:34:30,380 783 00:34:30,380 --> 00:34:35,050 Och då kan jag göra samma typ av sak för resten av bärarna. 784 00:34:35,050 --> 00:34:37,090 Men jag ska bara göra prick, pricka, punkt för nu. 785 00:34:37,090 --> 00:34:43,050 Och nu ska vi anta att Jag vill lägga till array, tryck. 786 00:34:43,050 --> 00:34:45,969 Jag vill lägga till matris, som kallas adresser. 787 00:34:45,969 --> 00:34:50,409 >> Denna adress, det är hur du lägga till något till en rad i PHP. 788 00:34:50,409 --> 00:34:51,610 Du behöver inte göra malloc. 789 00:34:51,610 --> 00:34:53,068 Du behöver inte ändra storlek på matrisen. 790 00:34:53,068 --> 00:34:54,259 Du säger bara array, push. 791 00:34:54,259 --> 00:34:57,300 Vad vill du push-- vad array vill du driva något på? 792 00:34:57,300 --> 00:34:58,000 Adresser. 793 00:34:58,000 --> 00:34:59,550 Vad du vill driva på adresser? 794 00:34:59,550 --> 00:35:00,350 Adress. 795 00:35:00,350 --> 00:35:02,430 Och i själva verket om du verkligen vill vara smart, 796 00:35:02,430 --> 00:35:05,610 några syntaktisk socker för detta, så att säga, 797 00:35:05,610 --> 00:35:10,230 vilket betyder bara hur kan du göra detta i det snyggare sätt skulle vara att göra detta. 798 00:35:10,230 --> 00:35:14,060 Som har för effekten av att odla adresserna arrayen genom storlek ett, 799 00:35:14,060 --> 00:35:17,130 och sedan plopp att ytterligare e-postadress i det. 800 00:35:17,130 --> 00:35:17,630 Yeah. 801 00:35:17,630 --> 00:35:19,730 >> PUBLIK: [OHÖRBAR] 802 00:35:19,730 --> 00:35:22,520 >> TALARE 1: En stavfel på annars if-- oh, bärare. 803 00:35:22,520 --> 00:35:23,070 Det är ok. 804 00:35:23,070 --> 00:35:26,971 Det är också inte kommer att gilla min underlåtenhet att genomföra en del av detta program 805 00:35:26,971 --> 00:35:27,470 senare. 806 00:35:27,470 --> 00:35:28,810 Men tack för att fånga. 807 00:35:28,810 --> 00:35:30,671 Ytterligare en bugg. 808 00:35:30,671 --> 00:35:31,170 Tack. 809 00:35:31,170 --> 00:35:33,746 Vi vill att detta skall vara Vtext.com. 810 00:35:33,746 --> 00:35:34,340 Ja. 811 00:35:34,340 --> 00:35:34,839 Okej. 812 00:35:34,839 --> 00:35:36,330 Så varifrån kommer denna lämna oss? 813 00:35:36,330 --> 00:35:38,224 Vi har skrivit koden för att öppna filen. 814 00:35:38,224 --> 00:35:40,390 Vi har en slinga för att iterera över raderna i filen. 815 00:35:40,390 --> 00:35:43,650 Vi har kod som lägger till min matris, ett åt gången, då den korrekt 816 00:35:43,650 --> 00:35:44,790 formaterad e-postadress. 817 00:35:44,790 --> 00:35:48,480 Så allt som verkligen återstår är att skicka e-post till var och en av dessa människor. 818 00:35:48,480 --> 00:35:52,830 >> Så jag har gått vidare och readied mig på följande sätt. 819 00:35:52,830 --> 00:35:59,580 Vad jag ska göra här är-- och låt oss gå vidare och hoppa till några faktiska koden, 820 00:35:59,580 --> 00:36:00,620 som ser ut så här. 821 00:36:00,620 --> 00:36:02,950 Så här är det pre-bakade version jag skrev tidigare. 822 00:36:02,950 --> 00:36:04,700 Och märker jag slutade genomförande Sprint. 823 00:36:04,700 --> 00:36:06,130 Jag slutade att genomföra T-Mobile. 824 00:36:06,130 --> 00:36:08,020 Jag slutade att genomföra Virgin Mobile. 825 00:36:08,020 --> 00:36:09,622 Och jag kommer att be om ursäkt i förväg. 826 00:36:09,622 --> 00:36:12,080 Det finns några bärare som vissa elever i klassen har 827 00:36:12,080 --> 00:36:14,640 att jag inte brydde sig räkna i om tillståndet här. 828 00:36:14,640 --> 00:36:16,015 Så inte alla texterna kommer att gå ut. 829 00:36:16,015 --> 00:36:17,556 Men låt oss se vad jag behöver göra. 830 00:36:17,556 --> 00:36:19,660 Jag stänger filen, bara som i p set fyra. 831 00:36:19,660 --> 00:36:20,835 >> Och detta är ny syntax. 832 00:36:20,835 --> 00:36:22,710 Och vi kommer att se en liten bit av denna med tiden, 833 00:36:22,710 --> 00:36:24,450 särskilt med p set sju och åtta. 834 00:36:24,450 --> 00:36:28,140 Men detta är syntax för att skapa en speciell typ av struktur. 835 00:36:28,140 --> 00:36:31,490 Det visar sig att det finns ett bibliotek som levereras med PHP, som kallas PHP mailer. 836 00:36:31,490 --> 00:36:33,840 Dess syfte i livet är att programmatiskt skicka e-post. 837 00:36:33,840 --> 00:36:36,840 Det är kod någon annan skrev att gör det lättare för oss att skicka e-post, 838 00:36:36,840 --> 00:36:39,131 så att vi inte behöver hålla gå fram och tillbaka till Gmail, 839 00:36:39,131 --> 00:36:41,151 och klistra in i folks e-postadresser. 840 00:36:41,151 --> 00:36:44,150 Det finns en hel massa rader här som ärligt, jag bara typ av kopierade 841 00:36:44,150 --> 00:36:45,660 och klistras in från dokumentationen. 842 00:36:45,660 --> 00:36:47,409 Och faktiskt, om du är nyfiken, jag lämnade alla 843 00:36:47,409 --> 00:36:50,550 av webbadresserna i dokumentationen i koden som vi kommer lägga senare. 844 00:36:50,550 --> 00:36:52,360 Och märker att bland de saker jag gör 845 00:36:52,360 --> 00:36:55,710 är, jag säger detta bibliotek, använda Gmails server, eller hur? 846 00:36:55,710 --> 00:36:59,360 SMTP talade vi kort om när vi var vid Yale om att vara enkel post 847 00:36:59,360 --> 00:37:00,110 överföringsprotokoll. 848 00:37:00,110 --> 00:37:02,920 Det är det protokoll som servrar som används för att skicka e-post, 849 00:37:02,920 --> 00:37:05,150 och that's-- Gmail har en av dem. 850 00:37:05,150 --> 00:37:07,290 En port är detta TCP-portnumret. 851 00:37:07,290 --> 00:37:09,630 Det är bra om du har inte sett 587 förut. 852 00:37:09,630 --> 00:37:11,420 Bara vet att från dokumentationen. 853 00:37:11,420 --> 00:37:12,250 Här är mitt användarnamn. 854 00:37:12,250 --> 00:37:13,670 Jag kommer att använda CF50 bot. 855 00:37:13,670 --> 00:37:16,690 Och i ett ögonblick, jag kommer bara att Skriv in bot faktiska lösenord. 856 00:37:16,690 --> 00:37:18,690 Och sedan ner här, märker vad som återstår. 857 00:37:18,690 --> 00:37:22,840 >> Jag sätter min från adress som skall bot på CS50.net. 858 00:37:22,840 --> 00:37:26,240 Jag tror att jag inte kommer att ångra att skicka en textmeddelande till 800 personer som 859 00:37:26,240 --> 00:37:30,590 säger, saknar dig, kärlek CS50 bot, kanske för dem som inte kunde göra det i dag. 860 00:37:30,590 --> 00:37:33,160 Och sedan i ledningen 76, vad ska jag göra? 861 00:37:33,160 --> 00:37:39,010 Denna typ av ser ut som C. Så för i är lika med 0, n equals-- nu räkna är ny. 862 00:37:39,010 --> 00:37:42,077 Det visar sig att om du vill få antalet saker i en matris, 863 00:37:42,077 --> 00:37:43,660 du behöver inte komma ihåg det längre. 864 00:37:43,660 --> 00:37:45,370 Du kan bara ställa en Funktionen kallas räkna, 865 00:37:45,370 --> 00:37:48,320 och det kommer att berätta hur många adresser är i den arrayen. 866 00:37:48,320 --> 00:37:53,210 >> Och sedan kommer jag att lägga adressen till e-postmeddelandet. 867 00:37:53,210 --> 00:37:55,090 Och jag vet detta från med hjälp av dokumentationen. 868 00:37:55,090 --> 00:37:56,900 Det finns ett tillägg adressfunktion. 869 00:37:56,900 --> 00:37:58,980 Och nu märker det är en bit av syntax. 870 00:37:58,980 --> 00:38:01,470 Vi har sett det här förut i C. Liknande i anden. 871 00:38:01,470 --> 00:38:04,100 Du kan tänka på dollartecken post som en variabel, vilket det är. 872 00:38:04,100 --> 00:38:08,100 Men det är en struct insida som inte bara fastigheter, 873 00:38:08,100 --> 00:38:09,400 variabler om du kommer. 874 00:38:09,400 --> 00:38:13,480 Men det visar sig att i PHP, som är ett objektorienterat programmeringsspråk 875 00:38:13,480 --> 00:38:16,520 språk, som Java om du tog APC. 876 00:38:16,520 --> 00:38:21,420 >> Dollartecken post, om du vill att-- det har också funktioner inne i det, 877 00:38:21,420 --> 00:38:22,380 eller metoder. 878 00:38:22,380 --> 00:38:24,720 Så detta är att säga att särskild PHP mailer 879 00:38:24,720 --> 00:38:29,280 bibliotek, om jag har en variabel därav, om jag vill kalla en funktion som 880 00:38:29,280 --> 00:38:31,559 kommer med det biblioteket, för dagens ändamål, 881 00:38:31,559 --> 00:38:33,100 bara vet du använder pilen notation. 882 00:38:33,100 --> 00:38:34,150 Det finns ingen punktnotation. 883 00:38:34,150 --> 00:38:35,220 Det är bara på pilen. 884 00:38:35,220 --> 00:38:36,380 Men det är inte en pekare. 885 00:38:36,380 --> 00:38:38,680 Det är bara lånat från C: s syntax. 886 00:38:38,680 --> 00:38:43,620 Så kallar till adress insida detta bibliotekets objekt eller variabel. 887 00:38:43,620 --> 00:38:44,440 >> Okej. 888 00:38:44,440 --> 00:38:45,570 Detta är den magiska linjen. 889 00:38:45,570 --> 00:38:46,740 Det är hur jag skicka ett mail. 890 00:38:46,740 --> 00:38:50,040 Det motsvarar att öppna Gmail, skriva ut, och slå skicka. 891 00:38:50,040 --> 00:38:54,870 Men det kommer att i stället skicka en e-post till den här adressen med detta organ, 892 00:38:54,870 --> 00:38:57,120 från CS50 bot. 893 00:38:57,120 --> 00:38:58,710 Och nu nyckel linje. 894 00:38:58,710 --> 00:39:03,130 Denna linje var frånvarande i likhet med 2011 när jag tänker jag senast försökte detta. 895 00:39:03,130 --> 00:39:05,640 Den linjen där, naturligtvis, rensar adresserna. 896 00:39:05,640 --> 00:39:07,920 Så logiskt, om jag inte rensa adress 897 00:39:07,920 --> 00:39:11,740 efter varje iteration, varvid den första e-post eller textmeddelande går till Alice, 898 00:39:11,740 --> 00:39:14,320 den andra går till Alice och Bob, den tredje 899 00:39:14,320 --> 00:39:17,870 går till Alice och Bob och Charlie, därmed mycket dyra misstag 900 00:39:17,870 --> 00:39:18,760 Jag gjorde det året. 901 00:39:18,760 --> 00:39:21,080 >> Så låt oss se. 902 00:39:21,080 --> 00:39:24,200 Finns det några frågor innan vi skickar er alla en text 903 00:39:24,200 --> 00:39:28,210 meddelande med 10 procents sannolikhet? 904 00:39:28,210 --> 00:39:28,940 Några frågor? 905 00:39:28,940 --> 00:39:30,330 Okej. 906 00:39:30,330 --> 00:39:36,100 Låt mig gå in här och förändring lösenordet till vad som borde fungera, 907 00:39:36,100 --> 00:39:37,780 kommer sannolikt att få svartlistad av Gmail. 908 00:39:37,780 --> 00:39:39,821 Så de kanske inte alla gå ut, eftersom de förmodligen 909 00:39:39,821 --> 00:39:42,960 inte att vi skickar 800 e-postmeddelanden i en for-slinga på en gång. 910 00:39:42,960 --> 00:39:45,140 Eftersom det är inte särskilt mänskligt beteende. 911 00:39:45,140 --> 00:39:47,460 >> Åh, jag kommer att ändra en annan sak. 912 00:39:47,460 --> 00:39:50,850 Upp på toppen, jag ska sent-- ändra filen till studenter dot CSV. 913 00:39:50,850 --> 00:39:55,420 Och jag kommer inte att öppna den här, men detta är en identisk CSV-fil med inte 100 anställda, 914 00:39:55,420 --> 00:39:58,970 men 800 studenter, bara från Harvard, eftersom Yale 915 00:39:58,970 --> 00:40:00,207 har oktober fördjupning i veckan. 916 00:40:00,207 --> 00:40:03,290 Och det verkar som typ av en jerk sak att göra till text dem om varför 917 00:40:03,290 --> 00:40:04,750 de är inte i klassen på semester. 918 00:40:04,750 --> 00:40:05,250 Det är ok. 919 00:40:05,250 --> 00:40:08,310 Just Harvard studenter idag inne i den filen. 920 00:40:08,310 --> 00:40:12,320 Och nu ska vi gå tillbaka till min terminalfönster. 921 00:40:12,320 --> 00:40:13,710 Jag är lite nervös. 922 00:40:13,710 --> 00:40:22,000 >> OK så nu ska jag gå in i katalog, och PHP textpunkt PHP. 923 00:40:22,000 --> 00:40:24,950 Vad sägs om en modig volontär? 924 00:40:24,950 --> 00:40:26,690 Så jag vill inte detta på mig. 925 00:40:26,690 --> 00:40:28,410 OK, kom upp. 926 00:40:28,410 --> 00:40:29,162 Vad heter du? 927 00:40:29,162 --> 00:40:29,662 MAYA: Maya. 928 00:40:29,662 --> 00:40:30,328 TALARE 1: Maya. 929 00:40:30,328 --> 00:40:31,610 Kom upp, Maya. 930 00:40:31,610 --> 00:40:34,120 Okej. 931 00:40:34,120 --> 00:40:35,389 Låt oss se om det fungerar. 932 00:40:35,389 --> 00:40:38,430 Jag lägger min egen e-postadress i file-- mitt eget telefonnummer i filen, 933 00:40:38,430 --> 00:40:40,110 så som förhoppningsvis får jag en också. 934 00:40:40,110 --> 00:40:40,819 Trevligt att träffas. 935 00:40:40,819 --> 00:40:41,443 MAYA: Likaså. 936 00:40:41,443 --> 00:40:44,510 TALARE 1: Så allt du behöver göra är tryck Enter för att skicka 800 textmeddelanden, 937 00:40:44,510 --> 00:40:45,466 om jag inte skruva upp. 938 00:40:45,466 --> 00:40:51,106 939 00:40:51,106 --> 00:40:51,606 Fin. 940 00:40:51,606 --> 00:40:55,556 941 00:40:55,556 --> 00:40:58,430 Kan ta ett tag, statistiskt, tills vi kommer till ett e-post address-- 942 00:40:58,430 --> 00:41:00,573 ett textmeddelande som är i rummet just nu. 943 00:41:00,573 --> 00:41:03,880 944 00:41:03,880 --> 00:41:05,390 Låt oss dröja kvar och se. 945 00:41:05,390 --> 00:41:06,940 >> PUBLIK: [Whistling] 946 00:41:06,940 --> 00:41:08,270 >> TALARE 1: Oh, ja. 947 00:41:08,270 --> 00:41:09,230 >> Målgrupp: Åh, gotcha. 948 00:41:09,230 --> 00:41:16,720 949 00:41:16,720 --> 00:41:19,180 >> TALARE 1: För loopar är-- detta är inte långsam på grund av PHP. 950 00:41:19,180 --> 00:41:21,810 Detta är långsam eftersom Gmail är stryper oss och inte 951 00:41:21,810 --> 00:41:25,170 låter oss skicka mer än som ett e-post per sekund. 952 00:41:25,170 --> 00:41:26,300 Något? 953 00:41:26,300 --> 00:41:29,990 Detta var en svår sak för mig att testa på hem med bara mig och min en telefon, så. 954 00:41:29,990 --> 00:41:37,630 955 00:41:37,630 --> 00:41:41,111 Är det förhoppningsvis från bot? 956 00:41:41,111 --> 00:41:41,610 Ja? 957 00:41:41,610 --> 00:41:42,110 Nej? 958 00:41:42,110 --> 00:41:44,760 959 00:41:44,760 --> 00:41:46,620 Säg ja. 960 00:41:46,620 --> 00:41:47,479 Nej? 961 00:41:47,479 --> 00:41:49,374 Det är från en vän? 962 00:41:49,374 --> 00:41:49,874 Awkward. 963 00:41:49,874 --> 00:41:50,374 OK. 964 00:41:50,374 --> 00:41:56,580 965 00:41:56,580 --> 00:42:00,090 Ganska säker på att det fungerar ändå. 966 00:42:00,090 --> 00:42:00,910 Hoppsan. 967 00:42:00,910 --> 00:42:03,190 De black-- oh, vänta en minut. 968 00:42:03,190 --> 00:42:04,280 Åh, vet du vad? 969 00:42:04,280 --> 00:42:06,100 Ett ögonblick tack. 970 00:42:06,100 --> 00:42:07,802 Endast Maya och Jag-- Mia, var det? 971 00:42:07,802 --> 00:42:08,301 MAYA: Maya. 972 00:42:08,301 --> 00:42:12,110 TALARE 1: Maya, kommer att Vet du vad jag gjorde fel här. 973 00:42:12,110 --> 00:42:14,890 Åh, vänta en minut. 974 00:42:14,890 --> 00:42:23,320 Jag tror jag skickade bara 100 textmeddelanden till 555-1212. 975 00:42:23,320 --> 00:42:24,346 Stand by. 976 00:42:24,346 --> 00:42:28,080 977 00:42:28,080 --> 00:42:29,270 Jag kan inte vinna något år. 978 00:42:29,270 --> 00:42:30,180 OK. 979 00:42:30,180 --> 00:42:30,680 Maya? 980 00:42:30,680 --> 00:42:33,530 981 00:42:33,530 --> 00:42:36,219 Fixa det i efterproduktionen. 982 00:42:36,219 --> 00:42:36,718 Helvete! 983 00:42:36,718 --> 00:42:39,430 984 00:42:39,430 --> 00:42:40,390 Efter från adressen. 985 00:42:40,390 --> 00:42:41,301 OK, stand by. 986 00:42:41,301 --> 00:42:41,800 Förlåt. 987 00:42:41,800 --> 00:42:44,550 988 00:42:44,550 --> 00:42:47,080 Det är smärtsamt varje år. 989 00:42:47,080 --> 00:42:48,640 OK, ett ögonblick. 990 00:42:48,640 --> 00:42:50,530 Detta är bra. 991 00:42:50,530 --> 00:42:54,010 Jag stället kommer att göra detta. 992 00:42:54,010 --> 00:42:55,470 Skriv adress. 993 00:42:55,470 --> 00:42:56,030 OK, stand by. 994 00:42:56,030 --> 00:43:01,340 Skriv ut adresser, fäste i. 995 00:43:01,340 --> 00:43:02,710 Ja, jag gillar det. 996 00:43:02,710 --> 00:43:10,220 Dollar sign-- OK jag ska förklara vad jag gör i ett ögonblick, efter att jag har kört det här. 997 00:43:10,220 --> 00:43:11,670 Varje år. 998 00:43:11,670 --> 00:43:13,125 OK, nu kör vi. 999 00:43:13,125 --> 00:43:15,750 Jag har bara-- och jag vill inte att visa allas telefonnummer, 1000 00:43:15,750 --> 00:43:17,740 men Maya kan bekräfta med en nick av huvudet, 1001 00:43:17,740 --> 00:43:20,800 att hon ser allas telefonnummer i klassen 1002 00:43:20,800 --> 00:43:26,750 att jag kommer att kopiera in ett program som heter Gmail. 1003 00:43:26,750 --> 00:43:30,860 Och om i Gmail, vad vill vi säga? 1004 00:43:30,860 --> 00:43:32,137 Saknar dig. 1005 00:43:32,137 --> 00:43:33,220 Love-- det är inte från mig. 1006 00:43:33,220 --> 00:43:35,230 Jag har inte ens slå skicka ännu. 1007 00:43:35,230 --> 00:43:39,450 Så låt oss gå vidare och göra detta, om jag kan zooma in. 1008 00:43:39,450 --> 00:43:40,300 OK. 1009 00:43:40,300 --> 00:43:42,480 Så jag använder ett program som heter Gmail nu. 1010 00:43:42,480 --> 00:43:44,490 Om Maya, skulle du vilja klicka på knappen Skicka 1011 00:43:44,490 --> 00:43:46,970 kommer vi att simulera vad som kod borde ha gjort. 1012 00:43:46,970 --> 00:43:54,630 1013 00:43:54,630 --> 00:43:55,254 >> Något? 1014 00:43:55,254 --> 00:43:56,062 >> [PIP] 1015 00:43:56,062 --> 00:43:56,870 >> PUBLIK: Japp. 1016 00:43:56,870 --> 00:43:58,030 >> TALARE 1: Ja? 1017 00:43:58,030 --> 00:43:59,210 Frälsning? 1018 00:43:59,210 --> 00:44:00,427 >> PUBLIK: Japp. 1019 00:44:00,427 --> 00:44:01,260 TALARE 1: Saknar dig. 1020 00:44:01,260 --> 00:44:02,718 Och jag kommer att skicka ut resten. 1021 00:44:02,718 --> 00:44:06,060 Jag skickade ut hälften eftersom jag inte tror Gmail skulle låta dem gå igenom. 1022 00:44:06,060 --> 00:44:12,410 Så kom ihåg, idag är dagen att du lärde mig att jag kan använda Gmail. 1023 00:44:12,410 --> 00:44:14,977 1024 00:44:14,977 --> 00:44:15,810 Det var skrämmande. 1025 00:44:15,810 --> 00:44:17,140 En stor applåd till Maya. 1026 00:44:17,140 --> 00:44:18,980 Tack. 1027 00:44:18,980 --> 00:44:21,280 Okej, så. 1028 00:44:21,280 --> 00:44:22,210 va 1029 00:44:22,210 --> 00:44:23,140 >> [PIP] 1030 00:44:23,140 --> 00:44:25,010 1031 00:44:25,010 --> 00:44:26,580 >> Vi fick några pip, ja? 1032 00:44:26,580 --> 00:44:27,080 Okej. 1033 00:44:27,080 --> 00:44:30,590 Nu ska jag få 700 verkligen olyckliga e-post tillbaka från klasskamrater. 1034 00:44:30,590 --> 00:44:32,400 Så åtminstone vi får se om det var värt det. 1035 00:44:32,400 --> 00:44:33,300 Så vad som gick fel? 1036 00:44:33,300 --> 00:44:35,300 Jag ska räkna ut vad som gick fel i efterhand, 1037 00:44:35,300 --> 00:44:38,340 men titta bara hur lätt det var att göra det i PHP. 1038 00:44:38,340 --> 00:44:44,598 Så vad kan vi faktiskt göra nu Vi har denna uttrycksfullhet av PHP. 1039 00:44:44,598 --> 00:44:45,970 Det was-- som var hemskt. 1040 00:44:45,970 --> 00:44:46,480 Okej. 1041 00:44:46,480 --> 00:44:48,430 Så det var vad som borde ha gått ut. 1042 00:44:48,430 --> 00:44:52,770 Detta var mig testa i morse på min telefon, faktiska skärmdump av min telefon. 1043 00:44:52,770 --> 00:44:56,180 >> Men nu ska vi fundera över varför vi faktiskt införa 1044 00:44:56,180 --> 00:44:57,840 allt det här i första hand. 1045 00:44:57,840 --> 00:45:01,625 Så målet är att inte skriver dessa program som 1046 00:45:01,625 --> 00:45:03,250 skrivs på kommandoraden, eller hur? 1047 00:45:03,250 --> 00:45:05,000 Så jag skrev en enkel hello program, skrev jag 1048 00:45:05,000 --> 00:45:09,155 ett litet program som gör villkors, och använde en läs linje och så vidare. 1049 00:45:09,155 --> 00:45:11,530 Och i teorin, jag skrev bara ett program som sänds ut 1050 00:45:11,530 --> 00:45:14,290 800 textmeddelanden, ge eller ta 800. 1051 00:45:14,290 --> 00:45:16,830 Och det programmet var alla fortfarande kör på kommandoraden. 1052 00:45:16,830 --> 00:45:18,538 Och det är naturligtvis inte på webben, eller hur? 1053 00:45:18,538 --> 00:45:22,160 Målet är nu att börja använda vad jag påstår är en enklare att använda 1054 00:45:22,160 --> 00:45:24,720 språket, daresay en mer kraftfullt språk i termer 1055 00:45:24,720 --> 00:45:27,104 av de funktioner som komma med det, att starta 1056 00:45:27,104 --> 00:45:29,850 skriva kod som genererar webbsidor. 1057 00:45:29,850 --> 00:45:33,248 >> Så förra gången och i förra veckan, Vi pratade om HTTP och HTML. 1058 00:45:33,248 --> 00:45:36,350 Och vad är trevligt om HTML är att det är bara ren text. 1059 00:45:36,350 --> 00:45:38,220 Och text är säkert något som du kan 1060 00:45:38,220 --> 00:45:42,040 ut genom att bokstavligen ringa print f funktion, eller utskriftsfunktionen. 1061 00:45:42,040 --> 00:45:46,160 Och faktiskt, det är vad PHP är nu kommer att tillåta oss att göra. 1062 00:45:46,160 --> 00:45:48,610 Så bland de exempel vi har i dagens källkod, 1063 00:45:48,610 --> 00:45:51,610 förutom några av koden att jag satte upp det för en stund sedan, 1064 00:45:51,610 --> 00:45:55,440 Vi har program som detta till exempel. 1065 00:45:55,440 --> 00:45:58,760 Froshims eller Freshman Intramural Sport, var faktiskt 1066 00:45:58,760 --> 00:46:01,500 ett av de första extracurriculars Jag fick med år sedan. 1067 00:46:01,500 --> 00:46:03,750 Och min rumskompis och jag, med vissa andra barnen på campus, 1068 00:46:03,750 --> 00:46:05,280 används för att köra froshims programmet. 1069 00:46:05,280 --> 00:46:07,420 Jag får mina textmeddelanden nu. 1070 00:46:07,420 --> 00:46:14,030 >> Nu så vi tillbaka i dag, så detta var 1996 eller så, det var en internet, 1071 00:46:14,030 --> 00:46:17,395 men det fanns ingen process-- där var ingen webbplats för froshims. 1072 00:46:17,395 --> 00:46:20,270 Och så om du ville registrera dig för fotboll eller volleyboll eller vad som helst, 1073 00:46:20,270 --> 00:46:22,240 du skulle fylla ut denna sak kallas en bit papper, 1074 00:46:22,240 --> 00:46:25,060 och du skulle gå över Harvard gård, och du skulle dra det 1075 00:46:25,060 --> 00:46:29,230 in brevinkastet av Proctor, som var i Wigglesworth, en av campingplatser. 1076 00:46:29,230 --> 00:46:31,270 Och detta var du registrerat. 1077 00:46:31,270 --> 00:46:33,570 Och han eller hon skulle då komponera ett mail till dig 1078 00:46:33,570 --> 00:46:36,514 manuellt, ungefär som jag bara gjorde här med Maya, 1079 00:46:36,514 --> 00:46:38,930 och då skulle du bekräftas ha varit registrerade. 1080 00:46:38,930 --> 00:46:40,840 >> Så det här var som låg hängande frukt, så att säga. 1081 00:46:40,840 --> 00:46:42,930 Det var typ av dum att vi använder papper för detta. 1082 00:46:42,930 --> 00:46:45,024 Jag ville att vi skulle kunna att bara gå på en webbplats, 1083 00:46:45,024 --> 00:46:47,440 eller har freshmen gå på en webbplats, registrera för sport, 1084 00:46:47,440 --> 00:46:50,398 och bara automatisera en hel del av det här genom att sätta sina namn och e-post 1085 00:46:50,398 --> 00:46:51,850 och så vidare i en databas. 1086 00:46:51,850 --> 00:46:56,510 Och i själva verket den allra första versionen av webbplatsen, med hjälp av super ful HTML, 1087 00:46:56,510 --> 00:46:58,195 kan ha sett ut ungefär så här. 1088 00:46:58,195 --> 00:47:01,070 Det var faktiskt, ironiskt nog, mer pinsamt ut än detta tillbaka 1089 00:47:01,070 --> 00:47:01,460 då. 1090 00:47:01,460 --> 00:47:02,890 Men jag använde ett programmeringsspråk. 1091 00:47:02,890 --> 00:47:06,060 Inte PHP, utan snarare kallas Perl, som är en äldre språk, 1092 00:47:06,060 --> 00:47:07,251 men mycket i samma anda. 1093 00:47:07,251 --> 00:47:09,000 Och jag bara helt lärde det till mig själv. 1094 00:47:09,000 --> 00:47:12,208 Och det tog mig ett tag att räkna ut, frågar massor av frågor av vänner. 1095 00:47:12,208 --> 00:47:14,080 Men idéerna där var exakt desamma. 1096 00:47:14,080 --> 00:47:18,050 För vad PHP verkligen design finns inte kommandoraden grejer 1097 00:47:18,050 --> 00:47:20,450 vi spelade bara med, men för webbprogrammering. 1098 00:47:20,450 --> 00:47:24,960 >> Det är verkligen bundna i dess funktion inställd på banan, på följande sätt. 1099 00:47:24,960 --> 00:47:26,370 Detta är froshims. 1100 00:47:26,370 --> 00:47:28,720 Och om jag ville registrera i denna form, 1101 00:47:28,720 --> 00:47:30,930 Detta är ganska ful, förvisso, men låt mig gå vidare 1102 00:47:30,930 --> 00:47:34,440 och vara en mindre bekväm student, och vad idrott för Matthews, 1103 00:47:34,440 --> 00:47:35,630 klickar du på Registrera. 1104 00:47:35,630 --> 00:47:39,780 Vad jag vill kunna göra är lämna uppgifter från ett formulär, 1105 00:47:39,780 --> 00:47:42,400 inte Googles server som vi gjorde förra gången, helt 1106 00:47:42,400 --> 00:47:47,100 fusk genom att använda sin backend, jag vill genomföra min egen backend kod. 1107 00:47:47,100 --> 00:47:51,410 Vilket betyder skriv PHP kod som bor på en URL 1108 00:47:51,410 --> 00:47:54,180 att formulärdata kan lämnas till. 1109 00:47:54,180 --> 00:47:57,510 >> Och sedan din kod, skriven i PHP på en server, 1110 00:47:57,510 --> 00:47:59,400 kan då svara på den användaren input. 1111 00:47:59,400 --> 00:48:03,287 Liksom hans eller hennes namn, eller komfort nivå, eller studentrum, och sedan göra något med det. 1112 00:48:03,287 --> 00:48:05,120 I det här fallet, jag bara dumt skrivs ut 1113 00:48:05,120 --> 00:48:06,750 som text, vilket inte är så söt. 1114 00:48:06,750 --> 00:48:09,590 Men du kan säkert föreställa sig, om du vet HTML, 1115 00:48:09,590 --> 00:48:13,010 och du kommer snart att veta hur man skapar HTML med tryck f, och skriva ut, 1116 00:48:13,010 --> 00:48:16,500 och liknande funktioner, kan du säkert generera en vackrare webbsida som säger, 1117 00:48:16,500 --> 00:48:17,929 hey David, du är nu registrerad. 1118 00:48:17,929 --> 00:48:20,220 Du är en mindre bekväm student från Matthews, eller hur? 1119 00:48:20,220 --> 00:48:23,880 >> Du kan bara använda en hel massa% ses, eller klammerparenteserna och dollartecken 1120 00:48:23,880 --> 00:48:27,750 notation Jag använde en stund sedan, generera text som är mer användarvänliga 1121 00:48:27,750 --> 00:48:28,567 än detta. 1122 00:48:28,567 --> 00:48:30,150 Så låt oss ta en titt på denna fil. 1123 00:48:30,150 --> 00:48:34,666 Froshim noll dot PHP ser ut så här. 1124 00:48:34,666 --> 00:48:37,860 1125 00:48:37,860 --> 00:48:43,500 När jag laddar CS50 IDE, froshim nolla ser ut så här. 1126 00:48:43,500 --> 00:48:45,700 Detta är froshim noll prick PHP. 1127 00:48:45,700 --> 00:48:47,730 Och vad gör du märker om den här filen? 1128 00:48:47,730 --> 00:48:49,506 >> PUBLIK: [OHÖRBAR] 1129 00:48:49,506 --> 00:48:50,922 TALARE 1: Ledsen, lite högre? 1130 00:48:50,922 --> 00:48:53,250 PUBLIK: [OHÖRBAR] Det handlar i HTML. 1131 00:48:53,250 --> 00:48:57,130 Och i själva verket är det, eftersom vad som är intressant om PHP 1132 00:48:57,130 --> 00:48:58,880 är att den är konstruerad att vara, för bättre 1133 00:48:58,880 --> 00:49:02,110 eller värre, blandade med HTML-kod. 1134 00:49:02,110 --> 00:49:05,850 Och faktiskt, även om detta fil, froshim noll prick PHP, 1135 00:49:05,850 --> 00:49:11,470 har en PHP kommentar på toppen av det, det är allt bara HTML. 1136 00:49:11,470 --> 00:49:17,655 Men däremot om jag öppnar upp, låt oss säg, registrera noll dot PHP, som 1137 00:49:17,655 --> 00:49:19,550 bara har en stor kommentar på toppen. 1138 00:49:19,550 --> 00:49:26,500 Det här ser nästan alldeles för som HTML, med undantag för vad? 1139 00:49:26,500 --> 00:49:29,350 Line, vad, 21 ser lite konstig. 1140 00:49:29,350 --> 00:49:32,739 >> Men märker jag in PHP-läge med öppen fäste frågetecken PHP. 1141 00:49:32,739 --> 00:49:33,780 Sen har jag en del saker. 1142 00:49:33,780 --> 00:49:36,724 Och sedan vid slutet av den linjen nästan har jag, frågetecken PHP. 1143 00:49:36,724 --> 00:49:38,390 Och detta är vad jag menar med blandade. 1144 00:49:38,390 --> 00:49:41,910 Du kan skriva HTML som du bara vill att servern ska spotta ut. 1145 00:49:41,910 --> 00:49:45,090 Men om du vill göra något dynamisk halvvägs genom sida, 1146 00:49:45,090 --> 00:49:47,699 som sätter mitt namn eller dorm eller komfort nivå, 1147 00:49:47,699 --> 00:49:49,490 Jag kan använda en funktion som tryck r, som är 1148 00:49:49,490 --> 00:49:52,492 ut rekursiv, vilket betyder bara skriva ut denna variabel, formatera det 1149 00:49:52,492 --> 00:49:53,200 hur du vill. 1150 00:49:53,200 --> 00:49:55,880 Det är verkligen inte för mänskliga syften, det är bara 1151 00:49:55,880 --> 00:49:58,290 för felsökning eller diagnostiska ändamål. 1152 00:49:58,290 --> 00:49:59,460 Så det är hur jag gjorde det. 1153 00:49:59,460 --> 00:50:06,100 >> Om jag istället gå froshims två dot PHP, märker att effekten av detta formulär 1154 00:50:06,100 --> 00:50:09,680 är inte registrerad noll dot PHP som old-- den tidigare var faktiskt. 1155 00:50:09,680 --> 00:50:11,222 Men det är registrerat två dot PHP. 1156 00:50:11,222 --> 00:50:13,680 Så låt oss titta på hur detta beter sig lite annorlunda. 1157 00:50:13,680 --> 00:50:15,140 Om jag går in version två. 1158 00:50:15,140 --> 00:50:20,430 Om här, om jag registrera sig som David, mindre bekväm, från studentrummet av Mathews, 1159 00:50:20,430 --> 00:50:21,480 registrera. 1160 00:50:21,480 --> 00:50:23,770 Så den här gången det sagt, du registreras, inte riktigt. 1161 00:50:23,770 --> 00:50:25,370 Låt oss se vad jag gjorde här. 1162 00:50:25,370 --> 00:50:29,760 Om jag tittar på registret två dot PHP, har detta lite mer PHP-kod. 1163 00:50:29,760 --> 00:50:35,410 Det är en lite renare, även om det fortfarande sveper lite länge på denna linje. 1164 00:50:35,410 --> 00:50:36,260 Lägg märke till här. 1165 00:50:36,260 --> 00:50:40,300 Jag skriva ut min HTML-tagg, mitt huvud tag, min rubriktaggen, huvudet, kroppen. 1166 00:50:40,300 --> 00:50:45,410 >> Och då jag börjar säga saker som anger PHP läge. 1167 00:50:45,410 --> 00:50:48,540 Och så den taggen, öppna fäste PHP-- frågetecken PHP säger, 1168 00:50:48,540 --> 00:50:53,460 hey, server, execute-- tolka Följande saker som PHP 1169 00:50:53,460 --> 00:50:55,030 tills du ser sluttagg. 1170 00:50:55,030 --> 00:50:58,590 Och även om du kanske inte vet något andra PHP än du har sett hittills, 1171 00:50:58,590 --> 00:51:01,290 du kan typ av läsa det ganska intuitivt. 1172 00:51:01,290 --> 00:51:10,670 Om namnet är tom, eller komfort är tom, eller studentrummet är tomt, vad ska jag göra? 1173 00:51:10,670 --> 00:51:12,830 Vad ska jag säga till användaren? 1174 00:51:12,830 --> 00:51:15,330 Du måste ange ditt namn, komfort, och studentrummet, och så vidare. 1175 00:51:15,330 --> 00:51:17,750 Annars, jag säger att du är registrerade, väl inte riktigt. 1176 00:51:17,750 --> 00:51:19,190 >> Och jag säger inte riktigt eftersom det inte finns någon databas. 1177 00:51:19,190 --> 00:51:20,200 Jag tänker inte göra någonting med data. 1178 00:51:20,200 --> 00:51:22,408 Jag bara kasta bort i demonstrationssyfte. 1179 00:51:22,408 --> 00:51:24,320 Nu har jag typ av snävt över linjen 22. 1180 00:51:24,320 --> 00:51:26,400 Det finns mer syntax där, men dollartecken 1181 00:51:26,400 --> 00:51:28,320 streck inlägg är ganska intressant. 1182 00:51:28,320 --> 00:51:30,300 Och detta är vad är trevligt om PHP. 1183 00:51:30,300 --> 00:51:35,610 I PHP, har du vad som kallas några super globala variabler. 1184 00:51:35,610 --> 00:51:38,430 De är typ av ännu mer viktigare än globala variabler. 1185 00:51:38,430 --> 00:51:41,370 Och dessa, alla aktiverade som sådan, kom med PHP. 1186 00:51:41,370 --> 00:51:44,550 Så om du har en server som har en webbserver installerad, som Apache, 1187 00:51:44,550 --> 00:51:49,390 och du installerar språk stöd för PHP, helt plötsligt du 1188 00:51:49,390 --> 00:51:52,250 kan börja använda dessa super globala variabler i koden. 1189 00:51:52,250 --> 00:51:54,330 >> Och vad är trevligt om PHP är att om du bara 1190 00:51:54,330 --> 00:51:57,540 skriva en fil som slutar i prick PHP, satte den på en webbserver, 1191 00:51:57,540 --> 00:52:01,260 och sedan skicka ett formulär för det via denna åtgärd taggen och ett formulär etikett, 1192 00:52:01,260 --> 00:52:05,110 att åtgärder attribut i formulär tag, PHP och webben 1193 00:52:05,110 --> 00:52:09,360 helt räknar ut hur att ta alla dessa nyckelpar värde ut 1194 00:52:09,360 --> 00:52:11,633 av URL som ifråga märke q lika katter, 1195 00:52:11,633 --> 00:52:14,782 det kommer att räkna ut hur man q och katter. 1196 00:52:14,782 --> 00:52:17,710 Om du skickar ett foto eller ett användarnamn, eller ett lösenord för att vilja Facebook, 1197 00:52:17,710 --> 00:52:21,360 PHP kommer att räkna ut för dig där alla dessa data är. 1198 00:52:21,360 --> 00:52:23,821 Och det kommer bara lämna du en associativ array 1199 00:52:23,821 --> 00:52:27,560 kallas dollartecken streck post, eller dollartecken streck få, 1200 00:52:27,560 --> 00:52:30,590 beroende på om du är med hjälp av GET eller POST inlagor. 1201 00:52:30,590 --> 00:52:32,950 Och det kommer bara lämna dig en super global variabel, 1202 00:52:32,950 --> 00:52:37,254 så att om du vill komma åt namnet att användaren in via den webbsidan 1203 00:52:37,254 --> 00:52:41,894 formulär, du bokstavligen bara säga namnet av super globala variabeln, citationstecken, 1204 00:52:41,894 --> 00:52:43,380 unquote, namn. 1205 00:52:43,380 --> 00:52:46,144 Och citationstecken, unquote komfort, och citerar, unquote sovsal. 1206 00:52:46,144 --> 00:52:48,810 Och vi kommer att kunna göra detta och så mycket mer med PHP. 1207 00:52:48,810 --> 00:52:50,540 Och även om det var en virvelvind blick på det, 1208 00:52:50,540 --> 00:52:51,980 vi ska dyka mycket mer nästa vecka. 1209 00:52:51,980 --> 00:52:54,247 Vi ska presentera en databas så att du faktiskt 1210 00:52:54,247 --> 00:52:56,816 kommer att börja genomföra din egen e-handel based-- 1211 00:52:56,816 --> 00:52:59,150 som hemsida på bara en veckas tid. 1212 00:52:59,150 --> 00:53:02,750 Så vi ser du nästa gång, och hoppas att ni fick textmeddelanden. 1213 00:53:02,750 --> 00:53:05,450 Bye. 1214 00:53:05,450 --> 00:53:06,950 >> [MUSIK SPELA] 1215 00:53:06,950 --> 00:53:11,450 1216 00:53:11,450 --> 00:53:12,950 >> [DÖRRÖPPNING] 1217 00:53:12,950 --> 00:53:14,475 >> TALARE 2: Hej. 1218 00:53:14,475 --> 00:53:15,350 TALARE 3: Vad händer? 1219 00:53:15,350 --> 00:53:17,750 TALARE 2: Vad gör du? 1220 00:53:17,750 --> 00:53:19,850 TALARE 3: Arbeta på ett problem set. 1221 00:53:19,850 --> 00:53:21,050 TALARE 2: Nice. 1222 00:53:21,050 --> 00:53:22,550 High five. 1223 00:53:22,550 --> 00:53:23,150 >> [HIGH FIVE] 1224 00:53:23,150 --> 00:53:25,584 >> Vad är-- uh, vad gör du här? 1225 00:53:25,584 --> 00:53:26,750 TALARE 3: Bara umgås. 1226 00:53:26,750 --> 00:53:28,134 Precis kommit tillbaka från gymmet. 1227 00:53:28,134 --> 00:53:30,050 Jag kunde inte låta bli märker när vi hög fived, 1228 00:53:30,050 --> 00:53:32,450 att du har ganska grov händer. 1229 00:53:32,450 --> 00:53:33,950 Vill du gå till gymmet? 1230 00:53:33,950 --> 00:53:35,150 >> TALARE 2: Nej. 1231 00:53:35,150 --> 00:53:36,650 Nej. 1232 00:53:36,650 --> 00:53:38,450 >> TALARE 3: Dude, du ser ganska stor. 1233 00:53:38,450 --> 00:53:45,950 Som är dåligt, eftersom alla vet 8-ball är den stora mannen på campus. 1234 00:53:45,950 --> 00:53:48,050 High five. 1235 00:53:48,050 --> 00:53:49,550 >> TALARE 2: Öh, nej. 1236 00:53:49,550 --> 00:53:50,450 Nej, jag tror jag är bra. 1237 00:53:50,450 --> 00:53:52,300 Jag tror jag är bra. 1238 00:53:52,300 --> 00:53:54,097