1 00:00:00,000 --> 00:00:04,410 >> [MUSIC SPILLE] 2 00:00:04,410 --> 00:00:12,250 3 00:00:12,250 --> 00:00:15,770 >> SPEAKER 1: Dette er CS50 og Dette er slutten av uken syv. 4 00:00:15,770 --> 00:00:20,240 I dag er kanskje der vi virkelig lærer deg språk. 5 00:00:20,240 --> 00:00:24,100 Vi introduserte i de siste par uker HTML og CSS, verken som 6 00:00:24,100 --> 00:00:25,240 er programmeringsspråk. 7 00:00:25,240 --> 00:00:28,600 Og ja, selv om vi ikke se på nesten alle kodene 8 00:00:28,600 --> 00:00:33,410 som HTML kommer med og nesten alle av eiendommene som CSS kommer med, 9 00:00:33,410 --> 00:00:35,007 det er slags det for HTML og CSS. 10 00:00:35,007 --> 00:00:36,840 Vi vil bare generelt starte forutsatt at du 11 00:00:36,840 --> 00:00:39,545 forstå de generelle ideer av koder og attributter, 12 00:00:39,545 --> 00:00:41,850 og sider som sendes fra klient til server. 13 00:00:41,850 --> 00:00:45,280 >> Fordi i dag begynner vi å se på et annet programmeringsspråk, PHP. 14 00:00:45,280 --> 00:00:47,110 Vi kommer til å gjøre dette super rask. 15 00:00:47,110 --> 00:00:50,910 Vi kommer ikke til å lære deg PHP per se, mye som vi ikke strebe etter å lære deg 16 00:00:50,910 --> 00:00:52,670 C, per se, men heller programmering. 17 00:00:52,670 --> 00:00:55,088 Og ja, en av de mål for dette kurset 18 00:00:55,088 --> 00:00:57,820 er ikke å lære deg C, eller HTML eller CSS, eller PHP, 19 00:00:57,820 --> 00:01:00,370 eller hvilket som helst antall annen buzz ord eller akronymer, 20 00:01:00,370 --> 00:01:03,097 men heller informatikk og hvordan du kan programmere fundamentalt. 21 00:01:03,097 --> 00:01:05,930 Og ja, i dag skal vi begynne å ta disse støttehjulene av alle 22 00:01:05,930 --> 00:01:10,600 ytterligere ved å fly gjennom en språket heter PHP, som følger. 23 00:01:10,600 --> 00:01:13,640 >> Her er hva dette språket ser ut. 24 00:01:13,640 --> 00:01:17,790 Det viser seg at det ikke er behov for en hovedfunksjon i et program som er skrevet 25 00:01:17,790 --> 00:01:19,470 på et språk som heter PHP. 26 00:01:19,470 --> 00:01:22,585 Så det allerede høres litt enklere enn C, som vi er kjent. 27 00:01:22,585 --> 00:01:25,370 Det viser seg at hvis du ønsker å erklære en variabel, 28 00:01:25,370 --> 00:01:29,470 du gjør det nesten identisk til C. Men det er helt klart en forskjell her 29 00:01:29,470 --> 00:01:31,850 når jeg erklære en streng, eller kanskje to forskjeller. 30 00:01:31,850 --> 00:01:32,725 Hva ser annerledes? 31 00:01:32,725 --> 00:01:35,810 32 00:01:35,810 --> 00:01:37,160 >> PUBLIKUM: Dollartegnet. 33 00:01:37,160 --> 00:01:39,951 >> SPEAKER 1: Ja, det er dollar signere, som vi aldri har sett før. 34 00:01:39,951 --> 00:01:41,451 Og hva som mangler? 35 00:01:41,451 --> 00:01:41,950 Yeah? 36 00:01:41,950 --> 00:01:42,820 >> PUBLIKUM: [uhørbart] 37 00:01:42,820 --> 00:01:44,403 >> SPEAKER 1: Ja, det er ingen datatype. 38 00:01:44,403 --> 00:01:48,410 Så det viser seg at PHP er hva vi kalle en løst skrevet språk, der 39 00:01:48,410 --> 00:01:49,959 C er sterkt skrevet. 40 00:01:49,959 --> 00:01:52,500 Løst skrevet betyr bare at det er forskjellige datatyper, 41 00:01:52,500 --> 00:01:54,470 det er strenger, og ints, og flyter. 42 00:01:54,470 --> 00:01:56,330 Men datamaskinen tall som ut. 43 00:01:56,330 --> 00:01:58,664 Du menneske programmerer trenger ikke å finne ut av det. 44 00:01:58,664 --> 00:02:00,580 Så alt du trenger å gjøre å erklære en variabel er 45 00:02:00,580 --> 00:02:03,220 dollartegn, navnet på variabel, og deretter, for eksempel, 46 00:02:03,220 --> 00:02:04,760 quote unquote, hallo verden. 47 00:02:04,760 --> 00:02:07,662 >> Vel, dette er hva en tilstand ser ut i PHP. 48 00:02:07,662 --> 00:02:08,328 Eventuelle forskjeller? 49 00:02:08,328 --> 00:02:10,650 50 00:02:10,650 --> 00:02:11,150 Nei. 51 00:02:11,150 --> 00:02:12,540 Så det viser seg disse er identiske. 52 00:02:12,540 --> 00:02:14,665 Og du kan ha færre grener eller flere grener, 53 00:02:14,665 --> 00:02:16,557 men syntaks svingene ut nøyaktig den samme. 54 00:02:16,557 --> 00:02:18,390 Boolske uttrykk kan bestilles sammen. 55 00:02:18,390 --> 00:02:20,400 Boolske uttrykk kan-koblet sammen. 56 00:02:20,400 --> 00:02:21,430 Du har fortsatt brytere. 57 00:02:21,430 --> 00:02:23,790 Selv om du ikke har brukt disse, disse finnes i C 58 00:02:23,790 --> 00:02:26,020 og de er funksjonelt tilsvarende i PHP. 59 00:02:26,020 --> 00:02:28,260 >> Og faktisk, i PHP de er litt kraftigere. 60 00:02:28,260 --> 00:02:32,540 I C, kan du bare sammenligne viss datatyper som ints og tegn, 61 00:02:32,540 --> 00:02:36,320 mens i PHP kan du faktisk sammenligne full flygedyktige strenger uten å ha 62 00:02:36,320 --> 00:02:38,460 å bekymre seg for pekere og lignende. 63 00:02:38,460 --> 00:02:39,430 Så her er en for loop. 64 00:02:39,430 --> 00:02:41,270 Dette er bare pseudo kode, hvis du vil. 65 00:02:41,270 --> 00:02:43,400 Men strukturelt det er identisk med C. 66 00:02:43,400 --> 00:02:47,520 >> Her er en stund loop, pseudo therefore-- identisk med C. 67 00:02:47,520 --> 00:02:49,390 Her er en gjør mens loop-- identiske. 68 00:02:49,390 --> 00:02:51,390 Og så det er slags dette mønsteret her hvor 69 00:02:51,390 --> 00:02:54,400 det er noen annen syntaktisk funksjonene vi faktisk kommer til å se. 70 00:02:54,400 --> 00:02:57,340 Faktisk er her en fin måte i PHP der, 71 00:02:57,340 --> 00:02:59,350 Hvis du ønsker å reagere over en tabell, og du 72 00:02:59,350 --> 00:03:02,309 ønsker ikke å hoppe gjennom mentale og syntaktiske hoops å ha 73 00:03:02,309 --> 00:03:05,178 int i lik 0, i mindre enn n, jeg pluss plus-- som 74 00:03:05,178 --> 00:03:07,040 er bare en masse irriterende syntaks. 75 00:03:07,040 --> 00:03:10,654 Du kan si litt mer flyter bedre for hver tall 76 00:03:10,654 --> 00:03:13,320 som nummer, hvor i dette tilfellet dollar sign tall, jeg antar, 77 00:03:13,320 --> 00:03:15,400 er som en matrise kalles tall. 78 00:03:15,400 --> 00:03:18,810 Og så jeg antar nummer, entall, kommer til å være en variabel. 79 00:03:18,810 --> 00:03:22,940 >> Og hva PHP vil gjøre for meg som jeg iterere over denne sløyfe er, på hver iterasjon, 80 00:03:22,940 --> 00:03:28,450 det kommer oppdatere variabelt antall til være ith element i antall, flertall. 81 00:03:28,450 --> 00:03:30,060 Så det bare håndterer alt dette for meg. 82 00:03:30,060 --> 00:03:32,750 Ingen hakeparentes, ingen dollartegn, ingen semikolon. 83 00:03:32,750 --> 00:03:34,117 Det er bare litt enklere. 84 00:03:34,117 --> 00:03:35,950 Vel, hvis du ønsker en array, viser det seg at du 85 00:03:35,950 --> 00:03:38,908 kan gjøre noe ganske lik C. Syntaksen er litt annerledes. 86 00:03:38,908 --> 00:03:41,000 Men her er et utvalg kalt dollar signert tall. 87 00:03:41,000 --> 00:03:44,261 Og jeg bruker, i PHP, firkantet braketter, viser det seg. 88 00:03:44,261 --> 00:03:47,260 Og vi kommer til å se disse igjen i JavaScript-- enda et språk. 89 00:03:47,260 --> 00:03:49,968 Jeg bare bruke hakeparentes notasjon å ha en kommaseparert liste 90 00:03:49,968 --> 00:03:51,530 av heltall, i dette tilfellet. 91 00:03:51,530 --> 00:03:53,010 Men det gir meg en matrise. 92 00:03:53,010 --> 00:03:56,270 >> Men enda kraftigere i PHP, vi har også det er generelt 93 00:03:56,270 --> 00:03:57,640 kalles assosiative arrays. 94 00:03:57,640 --> 00:03:59,540 Og mange språk har disse også. 95 00:03:59,540 --> 00:04:03,810 Saken om C arrays er at indeksene 96 00:04:03,810 --> 00:04:06,940 for en matrise, ting som du bruker i hakeparentes via som 97 00:04:06,940 --> 00:04:08,600 du tilgang elementer, må være hva? 98 00:04:08,600 --> 00:04:10,620 >> PUBLIKUM: [uhørbart] 99 00:04:10,620 --> 00:04:14,220 >> SPEAKER 1: De må være tall eller heltall, spesielt fra null på opp. 100 00:04:14,220 --> 00:04:17,140 Vel, i PHP, og viser det ut, i andre språk, 101 00:04:17,140 --> 00:04:20,820 du kan begynne å ha indekser som ikke er numerisk. 102 00:04:20,820 --> 00:04:23,880 Men de er faktisk ord eller setninger, slik at i stedet 103 00:04:23,880 --> 00:04:27,070 prøver å huske hvor noe er, eller lagres i en variabel i, 104 00:04:27,070 --> 00:04:31,720 du kan faktisk bruke et ord og si at-- du kan si et ord som dette. 105 00:04:31,720 --> 00:04:34,730 >> Så dollartegn sitat er navnet på en variabel her. 106 00:04:34,730 --> 00:04:39,360 Dette er noe funky syntaks det er å knytte to viktige verdi 107 00:04:39,360 --> 00:04:41,250 par for denne variabelen. 108 00:04:41,250 --> 00:04:45,490 Spesielt er dette gir meg en matrise som er av lengde 2. 109 00:04:45,490 --> 00:04:47,660 Men indeksene ikke er 0 og 1. 110 00:04:47,660 --> 00:04:51,250 Indeksene er sitat unquote symbol og quote unquote pris. 111 00:04:51,250 --> 00:04:55,990 Og verdiene av disse indekser henholdsvis er FB for Facebook 112 00:04:55,990 --> 00:05:00,360 og $ 79,53, da jeg vare sjekket en pris for dette. 113 00:05:00,360 --> 00:05:01,210 >> Hva betyr det? 114 00:05:01,210 --> 00:05:04,136 Vel, betyr det at i stedet for å skrive kode 115 00:05:04,136 --> 00:05:09,612 som dette, hvor jeg pleide å gjøre noe som dollar sign-- eller rettere sagt, i C 116 00:05:09,612 --> 00:05:11,070 Jeg ville ikke engang ha et dollartegn. 117 00:05:11,070 --> 00:05:13,490 Jeg ville gjøre noe som sitater og deretter 118 00:05:13,490 --> 00:05:18,410 Jeg ville gjøre braketten jeg å komme på noen vilkårlig numerisk indeksert verdi. 119 00:05:18,410 --> 00:05:21,430 Starter i dag i PHP, hvis du ønsker å komme på noen verdi, 120 00:05:21,430 --> 00:05:24,742 vi liksom har mer semantisk uttrykksfullhet. 121 00:05:24,742 --> 00:05:27,450 Bare en fancy måte å si vi kan bare kalle ting hva de er. 122 00:05:27,450 --> 00:05:29,800 >> Og hvis du ønsker å få på noe symbol, 123 00:05:29,800 --> 00:05:32,180 nå er du bokstavelig talt gjøre sitere unquote symbol 124 00:05:32,180 --> 00:05:34,910 i hakeparentes i stedet for bare en rekke. 125 00:05:34,910 --> 00:05:36,450 Så det er en fin bekvemmelighet. 126 00:05:36,450 --> 00:05:38,140 Og det er liksom det for nå. 127 00:05:38,140 --> 00:05:40,240 Det er bunter av andre funksjoner i PHP. 128 00:05:40,240 --> 00:05:43,180 Og ja, kommer PHP med den velkjente kjøkkenbenken. 129 00:05:43,180 --> 00:05:48,640 Dusinvis, hundrevis av funksjoner kommer med PHP-- så mange flere enn kom med C. 130 00:05:48,640 --> 00:05:51,360 >> Og det er ikke ment å velde men heller hjelpe 131 00:05:51,360 --> 00:05:53,900 du skjønner at vi ikke lenger trenger å skrive kode 132 00:05:53,900 --> 00:05:55,590 det er liksom her nede konseptuelt. 133 00:05:55,590 --> 00:05:58,465 Nå kan vi bare begynne å dra nytte av mye mer avanserte funksjoner 134 00:05:58,465 --> 00:05:59,920 at språk som PHP har. 135 00:05:59,920 --> 00:06:02,630 Så vi trenger ikke å bekymre deg for flytte ting rundt i minnet. 136 00:06:02,630 --> 00:06:05,338 Vi trenger ikke å bekymre deg for malloc og alle disse lavere nivå, 137 00:06:05,338 --> 00:06:09,390 kraftige detaljer som du vil bakse med, hvis ikke sliter med, pset5, 138 00:06:09,390 --> 00:06:13,380 men du kan begynne å snart tar for gitt. 139 00:06:13,380 --> 00:06:17,770 >> Faktisk, la oss skrive et super enkelt program i PHP, som følger. 140 00:06:17,770 --> 00:06:21,550 Jeg kommer til å gå mann inn CS50 IDE her, og hva jeg skal gjøre 141 00:06:21,550 --> 00:06:29,370 er å opprette en ny fil, som veldig enkelt kommer til å bli kalt hallo dot PHP. 142 00:06:29,370 --> 00:06:31,860 Så i stedet for dot c, er det kommer til å bli kalt dot PHP. 143 00:06:31,860 --> 00:06:34,260 Og så i denne filen, Jeg kan begynne å skrive. 144 00:06:34,260 --> 00:06:36,960 Men det viser seg at en ting jeg må vite 145 00:06:36,960 --> 00:06:41,470 er at enhver PHP fil generelt, trenger å starte med noen spesiell syntaks. 146 00:06:41,470 --> 00:06:44,570 Ligner i ånden til HTML, men igjen, PHP er et programmeringsspråk, ikke 147 00:06:44,570 --> 00:06:45,590 et kodespråk. 148 00:06:45,590 --> 00:06:48,700 >> Så hver fil, og det er liksom dum ser jeg skal innrømme. 149 00:06:48,700 --> 00:06:50,480 Åpen brakett, spørsmålstegn, PHP. 150 00:06:50,480 --> 00:06:53,060 Og det er bare språkets måte å si: 151 00:06:53,060 --> 00:06:58,400 hei, datamaskin her kommer noen kode skrevet i et språk som heter PHP. 152 00:06:58,400 --> 00:07:01,900 Og så helt på slutten av filen, du gjør slags form for det motsatte. 153 00:07:01,900 --> 00:07:04,860 Du trenger ikke skrive PHP igjen, kun gjøre spørsmålstegn, vinkeljern. 154 00:07:04,860 --> 00:07:08,500 Og så alt du putter inni av disse to kodene, så å si, 155 00:07:08,500 --> 00:07:11,490 vil bli, eller bør være, PHP-kode. 156 00:07:11,490 --> 00:07:13,180 >> Så la oss gjøre noe super enkelt. 157 00:07:13,180 --> 00:07:19,370 Jeg kommer til å gå videre og gjøre print def, hei verden, backslash n, lagre. 158 00:07:19,370 --> 00:07:27,310 Og nå på mitt spørsmål, jeg kommer til å gjør, gjør hello-- nei, jeg kommer til å gjøre, 159 00:07:27,310 --> 00:07:28,726 dot slash hei. 160 00:07:28,726 --> 00:07:31,250 Nei, dot slash, hm. 161 00:07:31,250 --> 00:07:32,990 Så noe er annerledes. 162 00:07:32,990 --> 00:07:36,920 Og ja, dette er en viktig forskjell mellom PHP og språk som C C 163 00:07:36,920 --> 00:07:38,730 var et såkalt kompilert språk. 164 00:07:38,730 --> 00:07:40,929 Hva betydde det for C må kompileres? 165 00:07:40,929 --> 00:07:41,970 Hva var konsekvensen? 166 00:07:41,970 --> 00:07:42,898 Yeah. 167 00:07:42,898 --> 00:07:45,220 >> PUBLIKUM: Skrev det til maskinkode så det kan være drevet av datamaskinen. 168 00:07:45,220 --> 00:07:46,011 >> SPEAKER 1: Nettopp. 169 00:07:46,011 --> 00:07:49,075 Vi må først konvertere den til såkalt maskinkode, nuller og enere, 170 00:07:49,075 --> 00:07:51,950 før det faktisk vil være kjørbar og forstått av datamaskinen. 171 00:07:51,950 --> 00:07:52,840 Av Intel inne. 172 00:07:52,840 --> 00:07:54,530 Av CPU innsiden av maskinen. 173 00:07:54,530 --> 00:07:58,170 PHP, derimot, er det som kalles et tolket språk, hvilken 174 00:07:58,170 --> 00:08:02,230 betyr at du ikke kompilere den inn nuller og enere, maskinkode, 175 00:08:02,230 --> 00:08:04,360 du i stedet la det som kildekoden. 176 00:08:04,360 --> 00:08:08,130 Og du i stedet sende den som input til et program, en tolk 177 00:08:08,130 --> 00:08:11,960 at noen andre skrev år siden som forstår det 178 00:08:11,960 --> 00:08:14,310 linje for linje, karakter for karakter. 179 00:08:14,310 --> 00:08:16,120 Så med andre ord, mennesker der ute skrev 180 00:08:16,120 --> 00:08:19,670 et program som vil se på koden linje for linje, 181 00:08:19,670 --> 00:08:21,680 og finne ut hva datamaskinen skal gjøre, 182 00:08:21,680 --> 00:08:25,960 uten å konvertere den direkte til nuller og enere. 183 00:08:25,960 --> 00:08:28,370 >> Så hvis den ser en for loop, denne såkalte tolk 184 00:08:28,370 --> 00:08:30,630 kommer til å være som, greit, skal jeg gjøre noe igjen og igjen og igjen. 185 00:08:30,630 --> 00:08:31,150 Hva burde jeg gjøre? 186 00:08:31,150 --> 00:08:32,159 La meg se på neste linje. 187 00:08:32,159 --> 00:08:33,367 La meg se på neste linje. 188 00:08:33,367 --> 00:08:35,350 Og det virkelig tolker det linje for linje. 189 00:08:35,350 --> 00:08:37,220 Så for å kjøre den, jeg bruker ikke sminke. 190 00:08:37,220 --> 00:08:39,409 Jeg bruker ikke dot slash i dette tilfellet. 191 00:08:39,409 --> 00:08:43,530 I stedet gjør PHP, som er navnet på et program, a.k.a. 192 00:08:43,530 --> 00:08:46,562 Tolk, det er pre-installert i CS50 IDE, 193 00:08:46,562 --> 00:08:48,770 og nå trenger jeg å passere en kommandolinje argument, som 194 00:08:48,770 --> 00:08:52,290 er ganske enkelt navn fil som jeg ønsker å tolke. 195 00:08:52,290 --> 00:08:54,740 Eller mer tilfeldig, at jeg ønsker å kjøre. 196 00:08:54,740 --> 00:08:57,000 Og hvis jeg trykker Enter, der har vi det. 197 00:08:57,000 --> 00:08:57,825 Hallo verden. 198 00:08:57,825 --> 00:08:59,950 Nå viser det seg at jeg brukte print def bevisst 199 00:08:59,950 --> 00:09:01,600 å bygge bro oss fra C til PHP. 200 00:09:01,600 --> 00:09:05,150 De fleste PHP programmerere, som du vil se, ikke engang gidder å bruke print def. 201 00:09:05,150 --> 00:09:08,290 De bare bruke en funksjon som heter print, som C ikke har. 202 00:09:08,290 --> 00:09:11,390 Og så hvis jeg kjøre det nå, det faktisk oppfører seg funksjonelt det samme. 203 00:09:11,390 --> 00:09:13,730 Jeg kan ikke bruke prosent s og i prosent, og så videre, 204 00:09:13,730 --> 00:09:16,250 men det er andre måter i PHP for å gjøre det. 205 00:09:16,250 --> 00:09:18,100 Men dette er bare å si at syntaktisk, 206 00:09:18,100 --> 00:09:21,850 annet enn noen rare ting opp toppen, og noen rare tegn ned 207 00:09:21,850 --> 00:09:25,960 ved bunnen, begrepene nå av programmering i denne andre språk 208 00:09:25,960 --> 00:09:27,860 kommer til å være akkurat det samme. 209 00:09:27,860 --> 00:09:30,120 >> Faktisk, la oss gjøre ett annet eksempel. 210 00:09:30,120 --> 00:09:32,520 Så jeg kommer til å gå videre og lukke denne filen. 211 00:09:32,520 --> 00:09:37,740 La meg skape en annen som Jeg ringer forhold 1 prikk PHP. 212 00:09:37,740 --> 00:09:40,770 Så ingen null, fordi det jeg gjorde var jeg så tilbake et par uker siden, 213 00:09:40,770 --> 00:09:43,490 vi hadde en fil som heter forhold en prikk C. Og hva 214 00:09:43,490 --> 00:09:47,590 Jeg ble omgjort det i min hode, og her på papir, 215 00:09:47,590 --> 00:09:51,290 og snart på kursets nettside, linje for linje i PHP. 216 00:09:51,290 --> 00:09:55,520 >> Så i C-versjonen, gjorde vi noe like streng s får få streng. 217 00:09:55,520 --> 00:09:58,200 Så det er litt annerledes å gjøre det i PHP. 218 00:09:58,200 --> 00:10:01,390 I stedet, jeg bare går for å gjøre, eller rettere sagt, I 219 00:10:01,390 --> 00:10:05,870 kan ha gjort int n får komme int, i dette eksempelet tidligere. 220 00:10:05,870 --> 00:10:12,600 Så i stedet for at jeg kommer til å gjøre n blir lest linje, vil jeg gjerne et heltall, 221 00:10:12,600 --> 00:10:13,670 please. 222 00:10:13,670 --> 00:10:15,110 Så dette er bare min rask. 223 00:10:15,110 --> 00:10:17,260 Og så viser det seg, og Jeg ville bare vite dette 224 00:10:17,260 --> 00:10:20,480 fra å ha lest eller sett funksjonen før, lese linjer av funksjon i PHP 225 00:10:20,480 --> 00:10:23,810 tar et argument som er en rask for det menneskelige, og dens formål i livet 226 00:10:23,810 --> 00:10:26,220 er å lese et tekstlinje at han eller hun typer i. 227 00:10:26,220 --> 00:10:29,160 Og så den lagrer det tekst i variabelen n. 228 00:10:29,160 --> 00:10:32,200 >> Og nå kan jeg ønsker å gjøre noe som jeg gjorde uker siden, på samme uke 229 00:10:32,200 --> 00:10:33,290 en av klassen. 230 00:10:33,290 --> 00:10:36,600 Dersom n er større enn null, så skal jeg 231 00:10:36,600 --> 00:10:42,930 å låne som syntaks vi nettopp så, print def, plukket du et positivt tall, 232 00:10:42,930 --> 00:10:44,360 backslash n. 233 00:10:44,360 --> 00:10:49,990 Annet hvis n er lik lik null, jeg er kommer til å gå videre og si, print def, 234 00:10:49,990 --> 00:10:54,090 du plukket null backslash n. 235 00:10:54,090 --> 00:10:56,830 Else, saken her bør selvsagt, print def, 236 00:10:56,830 --> 00:10:58,620 du plukket et negativt tall. 237 00:10:58,620 --> 00:11:00,970 >> Og vi kan sikkert gjennomføre logikken i denne saken 238 00:11:00,970 --> 00:11:03,390 i en haug med forskjellige måter, men poenget her 239 00:11:03,390 --> 00:11:07,210 er at syntaktisk, knapt noe er nytt. 240 00:11:07,210 --> 00:11:09,830 Det er bare dollartegn og en ny funksjon og lese linje. 241 00:11:09,830 --> 00:11:12,090 Men fundamentalt, hva som er nytt nå er jeg tolke dette. 242 00:11:12,090 --> 00:11:13,910 Jeg passerer det som input til et annet program. 243 00:11:13,910 --> 00:11:16,620 Så hvis jeg ønsker å kjøre dette, hvis Jeg gjorde ikke gjøre noen feil, 244 00:11:16,620 --> 00:11:20,140 Jeg kommer til å kjøre PHP, av forhold en prikk PHP, Enter, 245 00:11:20,140 --> 00:11:23,440 Jeg kommer til å skrive inn nummeret 50, og la oss anta for nå det fungerer. 246 00:11:23,440 --> 00:11:25,940 Fordi logikk er samme tingene som i uke én. 247 00:11:25,940 --> 00:11:28,020 >> Greit, så det er ganske uimponerende, ikke sant? 248 00:11:28,020 --> 00:11:30,240 Vi kan gjøre dette i noen antall språk. 249 00:11:30,240 --> 00:11:33,200 La oss gjøre noe måte kraftigere. 250 00:11:33,200 --> 00:11:35,610 La oss ferdig problem satt fem. 251 00:11:35,610 --> 00:11:37,370 Så jeg kommer til å gå videre og gjøre dette. 252 00:11:37,370 --> 00:11:42,920 Jeg kommer til å lage en fil kalt ordboken dot PHP, 253 00:11:42,920 --> 00:11:45,424 og tilbøyelig som du kan være å rykke ned masse notater, 254 00:11:45,424 --> 00:11:47,340 notatene vil bare hjelpe deg hvis du har lov 255 00:11:47,340 --> 00:11:48,923 å implementere problemer satt fem i PHP. 256 00:11:48,923 --> 00:11:52,706 Men vi får se hvor raskt nå vi kan implementere det samme problemet sett. 257 00:11:52,706 --> 00:11:56,830 >> Så i ordboken dot PHP, jeg kommer å anta at det allerede 258 00:11:56,830 --> 00:11:58,514 en fil i verden som heter stavekontroll. 259 00:11:58,514 --> 00:12:01,430 Og ja, jeg gjorde dette på forhånd, og vi vil ikke gå gjennom denne linjen 260 00:12:01,430 --> 00:12:03,596 for linje, men hvis du er nysgjerrig senere og virkelig ønsker 261 00:12:03,596 --> 00:12:06,250 å vikle hjernen din rundt Forskjellene mellom c og PHP, 262 00:12:06,250 --> 00:12:09,030 bokstavelig sammenligne denne filen, stavekontroll, fra dagens kildekode 263 00:12:09,030 --> 00:12:11,190 at vi skal legge inn senere i dag, mot p sett 264 00:12:11,190 --> 00:12:15,309 five stavekontroll dot c at vi gir deg, og det er nesten samme linje for linje. 265 00:12:15,309 --> 00:12:16,600 Det er noen flere dollartegn. 266 00:12:16,600 --> 00:12:18,330 Et par funksjoner er litt annerledes. 267 00:12:18,330 --> 00:12:20,038 Men det er en fin måte sortering av å se hvordan 268 00:12:20,038 --> 00:12:22,740 du oversette ett språk til et annet. 269 00:12:22,740 --> 00:12:24,812 Og det er nesten identisk linje for linje. 270 00:12:24,812 --> 00:12:27,770 Men jeg kommer til å anta at det eksisterer, og hva jeg skal gjøre her 271 00:12:27,770 --> 00:12:31,310 er å prøve å blåse tankene ved reimplementing 272 00:12:31,310 --> 00:12:36,210 helheten av problemet satt fem måte raskere enn du har gjort så langt. 273 00:12:36,210 --> 00:12:39,330 Så for eksempel, kommer jeg til å først erklære en global variabel kalt størrelse, 274 00:12:39,330 --> 00:12:40,444 og sette den lik null. 275 00:12:40,444 --> 00:12:41,610 Nå det er ikke mye sparing. 276 00:12:41,610 --> 00:12:44,170 Odds er du implementert størrelse ganske mye det samme, 277 00:12:44,170 --> 00:12:48,440 eller hint hint, vil i kveld eller i morgen, bare å bruke en global variabel kalt 278 00:12:48,440 --> 00:12:49,900 størrelse, og sette den lik null. 279 00:12:49,900 --> 00:12:52,660 Det er ikke en spesielt utrolig spoiler. 280 00:12:52,660 --> 00:12:57,180 >> Så hva var dine data strukturer valg, de av dere som har dykket i 281 00:12:57,180 --> 00:13:02,170 og lese spec, hva datastrukturer har de fleste av dere har brukt? 282 00:13:02,170 --> 00:13:06,840 En hash table eller prøve, kanskje noen varianter av disse. 283 00:13:06,840 --> 00:13:10,490 Så implementere en hash table minst, er slag av en masse linjer med kode, 284 00:13:10,490 --> 00:13:10,990 ikke sant? 285 00:13:10,990 --> 00:13:13,700 Og ikke alle av dem kan være funksjonell på dette punktet i uken, 286 00:13:13,700 --> 00:13:14,366 men det er fint. 287 00:13:14,366 --> 00:13:19,300 Fordi i PHP, hvis jeg ønsker en hash table, gjort. 288 00:13:19,300 --> 00:13:20,260 Høyre? 289 00:13:20,260 --> 00:13:22,610 Slik at variabel som jeg har bare erklært er åpenbart 290 00:13:22,610 --> 00:13:26,180 kalt dollartegn bord, per innledningen før. 291 00:13:26,180 --> 00:13:28,902 >> Men jeg egentlig bare vil, på slutten av dagen, en matrise. 292 00:13:28,902 --> 00:13:31,610 Men ikke en numerisk indeksert array, fordi det er som uke to 293 00:13:31,610 --> 00:13:33,440 ting, når vi snakket om arrays. 294 00:13:33,440 --> 00:13:34,850 Jeg vil ha en hash table. 295 00:13:34,850 --> 00:13:38,070 Men en hash table er virkelig bare en konkret måte å si: 296 00:13:38,070 --> 00:13:40,190 du vil ha en assosiativ array. 297 00:13:40,190 --> 00:13:43,270 Du ønsker å være i stand til å knytte taster med verdier. 298 00:13:43,270 --> 00:13:44,200 Taster med verdier. 299 00:13:44,200 --> 00:13:45,640 Hva er en ordbok, egentlig? 300 00:13:45,640 --> 00:13:47,080 Vel det er en hel haug med nøkler. 301 00:13:47,080 --> 00:13:50,320 Ord som eple, pære og banan, og alle disse engelske ord 302 00:13:50,320 --> 00:13:51,490 at vi hånd du. 303 00:13:51,490 --> 00:13:54,820 >> Og de verdiene som du er effektivt sette inn i ordlisten 304 00:13:54,820 --> 00:13:57,790 er enten sant, eller fravær, falske. 305 00:13:57,790 --> 00:14:00,540 Med andre ord er du setter inn en hel haug av viktige verdi-par, 306 00:14:00,540 --> 00:14:03,720 eple, sant, pære, sant, banan, sant. 307 00:14:03,720 --> 00:14:07,446 Slik at når du henter eller se opp at data i hash table 308 00:14:07,446 --> 00:14:10,070 med sjekken funksjon, er du enten å få tilbake et svar, 309 00:14:10,070 --> 00:14:13,260 ja, jeg fant det i min kompleks hash table, eller nei, det er ikke der, 310 00:14:13,260 --> 00:14:14,540 så du returnerer false. 311 00:14:14,540 --> 00:14:19,440 >> Så for å gjøre det, er alt jeg trenger data struktur som jeg foreslått før. 312 00:14:19,440 --> 00:14:22,050 Jeg trenger bare å være i stand å assosiere ord 313 00:14:22,050 --> 00:14:25,570 som, sitat unquote, symbol, med en verdi som, sant. 314 00:14:25,570 --> 00:14:27,090 Så det er min hash table. 315 00:14:27,090 --> 00:14:28,180 La oss faktisk bruker det. 316 00:14:28,180 --> 00:14:30,310 Så det er noen funksjoner Jeg trenger å implementere. 317 00:14:30,310 --> 00:14:33,300 Jeg kommer til å gå videre og bite av en funksjon som heter størrelse. 318 00:14:33,300 --> 00:14:34,390 Det tar ingen argumenter. 319 00:14:34,390 --> 00:14:36,660 Jeg trenger ikke å bry deg med ordet, ugyldig i PHP. 320 00:14:36,660 --> 00:14:38,770 Jeg bare kommer til å returnere størrelse. 321 00:14:38,770 --> 00:14:41,287 >> Og som en digresjon, har PHP dette minorly irriterende detalj, 322 00:14:41,287 --> 00:14:44,620 der hvis noe er global, må du fortelle funksjon der du bruker 323 00:14:44,620 --> 00:14:46,220 det, hei, dette er en global variabel. 324 00:14:46,220 --> 00:14:49,330 Så, mindre dumhet, men du nødt til å gjøre det likevel. 325 00:14:49,330 --> 00:14:50,920 >> Så hva med last? 326 00:14:50,920 --> 00:14:52,990 Jeg kommer til å implementere en funksjon som heter last 327 00:14:52,990 --> 00:14:56,790 som tar i navnet til en ordbok, akkurat som i oppgavesettet fem. 328 00:14:56,790 --> 00:14:59,554 Og før jeg går videre, Legg merke til at jeg ikke har 329 00:14:59,554 --> 00:15:00,970 vært å skrive helt de samme tingene. 330 00:15:00,970 --> 00:15:06,060 Hva er åpenbart annerledes i PHP om hvordan du deklarerer en funksjon versus C? 331 00:15:06,060 --> 00:15:06,616 Yeah. 332 00:15:06,616 --> 00:15:07,490 PUBLIKUM: [uhørbart] 333 00:15:07,490 --> 00:15:08,573 SPEAKER 1: Nei returtype. 334 00:15:08,573 --> 00:15:12,350 Og ja, det er tilfelle, PHP i den utstrekning det er løst skrevet, 335 00:15:12,350 --> 00:15:14,190 er også litt slurvete i den forstand. 336 00:15:14,190 --> 00:15:17,680 Du trenger ikke spesifisere så programmerer hva denne funksjonen returnerer. 337 00:15:17,680 --> 00:15:20,490 Du må faktisk se på koden for å finne ut av. 338 00:15:20,490 --> 00:15:22,670 Eller lese kommentarene eller dokumentasjonen. 339 00:15:22,670 --> 00:15:24,870 Så plusser og minuser av slike beslutninger. 340 00:15:24,870 --> 00:15:26,750 Men jeg har å si stikkordet, funksjon. 341 00:15:26,750 --> 00:15:28,360 Når og vi lærer Java i et par uker 342 00:15:28,360 --> 00:15:31,026 vi kommer til å se det samme igjen, men det er den samme ideen. 343 00:15:31,026 --> 00:15:34,220 Navnet på funksjon, dens argument eller argumenter eller mangelen på dem, og nå 344 00:15:34,220 --> 00:15:35,630 her er gjennomføringen. 345 00:15:35,630 --> 00:15:38,860 >> Så jeg kommer til å kutte noen hjørner bare å være dramatisk for bare et øyeblikk. 346 00:15:38,860 --> 00:15:40,485 Men jeg kommer til å gå foran og si dette. 347 00:15:40,485 --> 00:15:44,890 Dette er hvordan jeg kan laste en fil inn i en matrise. 348 00:15:44,890 --> 00:15:47,580 Det er en funksjon i PHP kalte fil. 349 00:15:47,580 --> 00:15:49,300 Du lever det navnet på en fil. 350 00:15:49,300 --> 00:15:53,950 Det hender du tilbake en matrise, inne som er hver linje fra filen. 351 00:15:53,950 --> 00:15:56,480 Fra null, en, på opptil til n minus 1 linjer. 352 00:15:56,480 --> 00:15:57,210 Det er det, ikke sant? 353 00:15:57,210 --> 00:15:57,990 Det er ingen f lese. 354 00:15:57,990 --> 00:15:58,826 Det er ingen f get s. 355 00:15:58,826 --> 00:15:59,700 Det er ingen prosent s. 356 00:15:59,700 --> 00:16:00,420 Det finnes ingen hodepine. 357 00:16:00,420 --> 00:16:01,220 Det er ingen feof. 358 00:16:01,220 --> 00:16:03,950 Alt av at ting som du har vært bryting kanskje, 359 00:16:03,950 --> 00:16:06,550 med p satt fire og fem, går bort. 360 00:16:06,550 --> 00:16:09,450 >> Så jeg bare lese disse linjene inn filen, og så vet du hva? 361 00:16:09,450 --> 00:16:15,510 Hvis jeg ønsker å iterere over disse ordene, Jeg kan gjøre, for hver linje med linjen. 362 00:16:15,510 --> 00:16:19,992 Husk at dette var slags en smart måte itera over en matrise, indeks 363 00:16:19,992 --> 00:16:25,090 av indeksen, og på hver iterasjon kall gjeldende linje, dollartegn linje. 364 00:16:25,090 --> 00:16:31,560 Og akkurat her jeg kommer til å gå og si tabellen, brakett, linje, blir sant. 365 00:16:31,560 --> 00:16:35,880 >> Med andre ord, dette er hvordan jeg sette inn i min hash table i PHP. 366 00:16:35,880 --> 00:16:38,740 Jeg sier dollartegn tabellen, som er min assosiativ array som var 367 00:16:38,740 --> 00:16:40,690 tom per linje med kode opp ovenfor. 368 00:16:40,690 --> 00:16:42,790 Jeg deretter indeksen inn det ikke, ved bruk av et nummer, 369 00:16:42,790 --> 00:16:45,300 men bokstavelig talt bruker søkeord som jeg bryr meg om. 370 00:16:45,300 --> 00:16:47,730 Kanskje det er eple eller pære eller banan eller hva, 371 00:16:47,730 --> 00:16:51,645 men spesielt jeg indeksering inn i det som jeg foreslo tidligere. 372 00:16:51,645 --> 00:16:53,770 Jeg tar navnet mitt assosiativ array, og da jeg 373 00:16:53,770 --> 00:16:56,450 bruke quote unquote i hakeparenteser med en streng, 374 00:16:56,450 --> 00:16:58,490 i stedet for en faktisk nummer. 375 00:16:58,490 --> 00:17:00,250 >> Og så det er det. 376 00:17:00,250 --> 00:17:01,720 Lasten funksjonen er ferdig. 377 00:17:01,720 --> 00:17:05,119 Når det sløyfe gjentas, har jeg satt alt inn i hash table. 378 00:17:05,119 --> 00:17:07,810 Nå liten disclaimer, det er en par ting jeg trenger å fikse. 379 00:17:07,810 --> 00:17:10,030 Og den versjonen jeg skal legge inn online vil ha alle nyansene, 380 00:17:10,030 --> 00:17:12,670 men det er stort sett bare kommer til å være noen feilsjekking og noen mindre tilpasninger. 381 00:17:12,670 --> 00:17:14,044 Men det er faktisk den kjerne av det. 382 00:17:14,044 --> 00:17:16,750 Hvis jeg nå ønsker å implementere funksjonen kalles 383 00:17:16,750 --> 00:17:19,869 sjekk, som forventer en ord som sitt argument, 384 00:17:19,869 --> 00:17:22,099 hvordan kan jeg gå om du gjør det? 385 00:17:22,099 --> 00:17:30,020 Vel, jeg bare kommer til å si, hvis innsiden av mitt bord, i stedet ord, 386 00:17:30,020 --> 00:17:30,652 om er angitt. 387 00:17:30,652 --> 00:17:32,360 Så hvis det er-- faktisk, vet du hva? 388 00:17:32,360 --> 00:17:34,830 Jeg kommer til å gjøre det i litt av pseudokode. 389 00:17:34,830 --> 00:17:36,020 Men ideen er den samme. 390 00:17:36,020 --> 00:17:41,640 Hvis det er lik sant, returnere true. 391 00:17:41,640 --> 00:17:43,890 Greit. 392 00:17:43,890 --> 00:17:46,851 Else-- du kan slags se hvor dette er going-- å returnere false. 393 00:17:46,851 --> 00:17:47,350 Ferdig. 394 00:17:47,350 --> 00:17:49,640 Sjekk er gjort. 395 00:17:49,640 --> 00:17:50,940 >> Ganske fin, ikke sant? 396 00:17:50,940 --> 00:17:52,560 Og så hva er dette egentlig vil? 397 00:17:52,560 --> 00:17:53,680 Og dette også, jeg kuttet noen hjørner. 398 00:17:53,680 --> 00:17:56,020 Se på den versjonen online for alle de små nyanser. 399 00:17:56,020 --> 00:17:57,103 Men det er hovedinnholdet i det. 400 00:17:57,103 --> 00:17:59,080 Index inn assosiativ array, a.k.a. 401 00:17:59,080 --> 00:18:02,910 Hash table, se om det er en verdi der, hvis det er satt til sann, og hvis så, 402 00:18:02,910 --> 00:18:03,930 return true. 403 00:18:03,930 --> 00:18:05,819 Så vi har whittled alle av kompleksitet. 404 00:18:05,819 --> 00:18:07,110 Så snilt av tankene blåser, ikke sant? 405 00:18:07,110 --> 00:18:09,680 Jeg vil ikke bry sluttplasseringen det med losse, fordi i fact-- oh, vet du hva? 406 00:18:09,680 --> 00:18:11,620 Ja, la oss avslutte den med losse. 407 00:18:11,620 --> 00:18:18,940 >> Losse i en hash tabell kan se som funksjon losse, tilbake. 408 00:18:18,940 --> 00:18:19,930 OK så det er losse. 409 00:18:19,930 --> 00:18:21,350 Fordi det er ingenting å losse, ikke sant? 410 00:18:21,350 --> 00:18:22,170 Det er ingen malloc. 411 00:18:22,170 --> 00:18:24,280 Jeg visste ikke eksplisitt be operativsystem for noe. 412 00:18:24,280 --> 00:18:25,571 Jeg har nettopp begynt å bruke variabler. 413 00:18:25,571 --> 00:18:30,510 Og så dette også er en manifestasjon av funksjonene til høyere nivå språk. 414 00:18:30,510 --> 00:18:32,940 Så igjen, det meste av dette begrepet vi har vært å gjøre her nede 415 00:18:32,940 --> 00:18:34,280 med C. Super lavt nivå. 416 00:18:34,280 --> 00:18:35,980 Du kan se datamaskinens minne. 417 00:18:35,980 --> 00:18:38,440 Du kan røre noe du vil i datamaskinens RAM, 418 00:18:38,440 --> 00:18:39,440 for bedre eller verre. 419 00:18:39,440 --> 00:18:41,760 >> Opp her, vi skal å gi opp den makten. 420 00:18:41,760 --> 00:18:44,730 Men herregud, se hvordan mye mindre kode jeg skrev. 421 00:18:44,730 --> 00:18:47,660 Faktisk hvis jeg ikke snakket og snakker over min skrive, 422 00:18:47,660 --> 00:18:50,190 vi ville ha blitt gjort med dette eksempelet for fem minutter siden. 423 00:18:50,190 --> 00:18:52,150 Så hva er prisen som blir betalt? 424 00:18:52,150 --> 00:18:54,100 Vel la oss ta en titt. 425 00:18:54,100 --> 00:18:55,340 La oss ta en titt. 426 00:18:55,340 --> 00:18:59,340 Jeg kommer til å gå videre og kjøre CS50. 427 00:18:59,340 --> 00:19:02,160 La meg først gå inn dagens eksempler der 428 00:19:02,160 --> 00:19:03,970 Jeg har tekster katalogen som før. 429 00:19:03,970 --> 00:19:08,520 Jeg kommer til å kjøre den løsningen som den kommer med oppgavesettet five kalt 430 00:19:08,520 --> 00:19:11,190 stavekontrollen, som er i CS50 konto. 431 00:19:11,190 --> 00:19:14,040 >> Og jeg kommer til å kjøre den på noe stor som King James Bible, 432 00:19:14,040 --> 00:19:16,547 bare slik at vi virkelig sette stabs løsninger til test. 433 00:19:16,547 --> 00:19:19,130 Nå noen ganger internett er en litt tregere, litt raskere, 434 00:19:19,130 --> 00:19:20,338 kan ta en stund å rulle. 435 00:19:20,338 --> 00:19:23,730 Men det tok totalt .56 sekunder å stave sjekke King James 436 00:19:23,730 --> 00:19:25,150 Bibelen bruker de ansatte løsning. 437 00:19:25,150 --> 00:19:25,620 Så ganske bra. 438 00:19:25,620 --> 00:19:27,786 Yours kan være mye tregere, og det er helt greit. 439 00:19:27,786 --> 00:19:30,090 Men det er riktig her. 440 00:19:30,090 --> 00:19:32,440 Så det er de ansatte løsning. 441 00:19:32,440 --> 00:19:34,785 Hvis jeg går inn og rydde opp i PHP versjon. 442 00:19:34,785 --> 00:19:36,990 Og jeg kommer til å gjøre litt som baking showet ting. 443 00:19:36,990 --> 00:19:39,720 Vi kommer til å ta koden jeg skrev tidligere, så det er helt riktig. 444 00:19:39,720 --> 00:19:42,678 Fordi koden jeg skrev ikke kommer for å være helt korrekt nettopp nå. 445 00:19:42,678 --> 00:19:47,310 Men hvis jeg kjører PHP versjon, hva har jeg å gi opp i dag? 446 00:19:47,310 --> 00:19:49,980 Tok meg fem minutter å implementere p satt fem, hevder jeg. 447 00:19:49,980 --> 00:19:51,770 Hvilken pris har jeg betalt? 448 00:19:51,770 --> 00:19:52,270 Yeah. 449 00:19:52,270 --> 00:19:52,937 >> PUBLIKUM: Speed. 450 00:19:52,937 --> 00:19:53,645 SPEAKER 1: Speed. 451 00:19:53,645 --> 00:19:54,380 Hva mener du? 452 00:19:54,380 --> 00:19:55,230 >> PUBLIKUM: Det kommer til å ta lengre tid. 453 00:19:55,230 --> 00:19:55,660 >> SPEAKER 1: All right. 454 00:19:55,660 --> 00:19:56,160 La oss se. 455 00:19:56,160 --> 00:19:59,590 Det kommer til å ta lengre tid, ikke å skrive, men å kjøre den. 456 00:19:59,590 --> 00:20:00,090 Yeah. 457 00:20:00,090 --> 00:20:00,960 Så la oss prøve dette. 458 00:20:00,960 --> 00:20:05,720 Så her kommer jeg til å gå videre og gjøre PHP av stavekontrollen, og fordi filens 459 00:20:05,720 --> 00:20:06,360 heter stavekontroll. 460 00:20:06,360 --> 00:20:07,580 Så jeg ikke kjører ordbok, husker, 461 00:20:07,580 --> 00:20:09,204 Jeg kjører programmet heter stavekontroll. 462 00:20:09,204 --> 00:20:12,450 Jeg kommer til å passere i samme fil, King James femte. 463 00:20:12,450 --> 00:20:14,377 Det flyr forbi. 464 00:20:14,377 --> 00:20:17,210 Dette kan bare være internett hastighet, så ikke lese for mye inn i det. 465 00:20:17,210 --> 00:20:21,680 Men det føles lenger sikkert. 466 00:20:21,680 --> 00:20:23,280 1,26 sekunder. 467 00:20:23,280 --> 00:20:25,150 >> Nå det er fortsatt ganske jævla fort, ikke sant? 468 00:20:25,150 --> 00:20:28,140 Og den eneste grunnen til at føltes som mer som tre, eller fire eller fem 469 00:20:28,140 --> 00:20:30,515 sekunder, er bare fordi at Internett var å være treg. 470 00:20:30,515 --> 00:20:33,980 Datamaskinen tidsbruk var 1,26 sekunder, versus jeg tror 0,56. 471 00:20:33,980 --> 00:20:35,880 Så mer enn dobbelt så sakte. 472 00:20:35,880 --> 00:20:39,170 Nå det er fortsatt ganske darn fort, men det er en manifestasjon 473 00:20:39,170 --> 00:20:40,860 av, ja, at eksakt pris. 474 00:20:40,860 --> 00:20:43,460 >> Fordi vi tolke i koden linje for linje, 475 00:20:43,460 --> 00:20:46,740 og at programmet PHP leser min kode øverst til nederst, venstre til høyre, 476 00:20:46,740 --> 00:20:47,940 det har å gjøre mer tenkning. 477 00:20:47,940 --> 00:20:50,430 Den har til slags konvertere det inne i seg selv 478 00:20:50,430 --> 00:20:53,464 til den tilsvarende maskin kode på fly, så å si, 479 00:20:53,464 --> 00:20:55,380 Selv om mekanikken er litt annerledes. 480 00:20:55,380 --> 00:20:59,430 I stedet for bare å fôre til Intel CPU rå nuller og enere 481 00:20:59,430 --> 00:21:00,930 at den forstår innfødt. 482 00:21:00,930 --> 00:21:04,110 >> Så absolutt, hendene ned, Vi har betalt en pris. 483 00:21:04,110 --> 00:21:09,120 Og koden er skrevet i et språk som PHP har en tendens til å være tregere. 484 00:21:09,120 --> 00:21:10,050 Men min gud. 485 00:21:10,050 --> 00:21:12,740 Så nå når jeg stavekontroll min fil, bruker jeg en ekstra 0,7 486 00:21:12,740 --> 00:21:17,280 eller så sekunder vs 20 timer å gjennomføre en raskere stavekontroll, ikke sant? 487 00:21:17,280 --> 00:21:18,397 Det er litt av en trade off. 488 00:21:18,397 --> 00:21:20,980 Og hvis du akkurat har begynt p satt fem, kan ikke være 20 timer. 489 00:21:20,980 --> 00:21:22,188 Kan være langt færre enn det. 490 00:21:22,188 --> 00:21:23,600 Men det er en trade off, for real. 491 00:21:23,600 --> 00:21:27,820 Og hvis du kjører kode på virkelig store datasett, eller på enda eldre maskinvare, 492 00:21:27,820 --> 00:21:32,650 slike forskjeller kan sikkert legge opp. 493 00:21:32,650 --> 00:21:34,880 >> Eventuelle spørsmål så langt? 494 00:21:34,880 --> 00:21:35,617 Yeah. 495 00:21:35,617 --> 00:21:36,492 >> PUBLIKUM: [uhørbart] 496 00:21:36,492 --> 00:21:38,187 497 00:21:38,187 --> 00:21:39,978 SPEAKER 1: Beklager, kan du si det en gang til? 498 00:21:39,978 --> 00:21:40,853 PUBLIKUM: [uhørbart] 499 00:21:40,853 --> 00:21:43,326 500 00:21:43,326 --> 00:21:44,700 SPEAKER 1: Du gir opp tid. 501 00:21:44,700 --> 00:21:45,283 Vel, så ja. 502 00:21:45,283 --> 00:21:47,322 Du sparer tid ved ikke å måtte kompilere den, 503 00:21:47,322 --> 00:21:48,530 hvis det er det du spør. 504 00:21:48,530 --> 00:21:50,710 Og ja, i CS50, de fleste av programmene, 505 00:21:50,710 --> 00:21:53,668 selv om de kan ta en stund å skrive, de er relativt kort. 506 00:21:53,668 --> 00:21:56,860 Par dusin, noen hundre linjer med kode, og så de kompilere ganske raskt. 507 00:21:56,860 --> 00:21:58,470 Men når du begynner skrive større programmer, 508 00:21:58,470 --> 00:22:01,511 som om du er Microsoft eller du er Google og skriver virkelig store programmer 509 00:22:01,511 --> 00:22:05,360 i C, eller C ++, eller lignende kompilert språk, kan ta mange sekunder, 510 00:22:05,360 --> 00:22:08,577 eller til og med minutter eller mer til kompilere millioner av linjer med kode. 511 00:22:08,577 --> 00:22:10,660 Og der også, som Forskjellen kommer til å legge opp. 512 00:22:10,660 --> 00:22:12,840 >> Og faktisk, når vi Overgangen i dag, samme dag 513 00:22:12,840 --> 00:22:15,910 i dag, til web-programmering ved hjelp av PHP, er du 514 00:22:15,910 --> 00:22:18,460 kommer til å finne det bare så mye mer behagelige å skrive kode 515 00:22:18,460 --> 00:22:21,501 når du ikke trenger å gjøre disse dumme trinn som endring i terminal 516 00:22:21,501 --> 00:22:24,202 vindu, type make hallo, re kjøre den, legger du i vinduet. 517 00:22:24,202 --> 00:22:25,910 Bare så mange dumme mekaniske trinn som 518 00:22:25,910 --> 00:22:28,480 bare komme i veien for å gjøre det interessant, morsomt arbeid. 519 00:22:28,480 --> 00:22:31,450 Og faktisk vi kaste det bort med PHP. 520 00:22:31,450 --> 00:22:34,960 Og vi kan samhandle med den raskere. 521 00:22:34,960 --> 00:22:35,495 Yeah. 522 00:22:35,495 --> 00:22:36,370 PUBLIKUM: [uhørbart] 523 00:22:36,370 --> 00:22:40,294 524 00:22:40,294 --> 00:22:40,960 SPEAKER 1: Jada. 525 00:22:40,960 --> 00:22:42,876 Kan jeg avklare hva det betyr tolkes? 526 00:22:42,876 --> 00:22:45,870 Når du kompilerer et språk som C, det går ned 527 00:22:45,870 --> 00:22:48,140 som vi sa til maskin kode, nuller og enere. 528 00:22:48,140 --> 00:22:51,860 Og Intel besluttet år siden at visse mønstre av nuller og enere 529 00:22:51,860 --> 00:22:56,220 representere tillegg eller subtraksjon, eller skrive ut eller andre grunnleggende operasjoner. 530 00:22:56,220 --> 00:23:00,250 I en verden av et tolket språk som PHP eller Javascript, eller Python, 531 00:23:00,250 --> 00:23:03,120 eller Ruby, eller bunter av andre, i stedet noen 532 00:23:03,120 --> 00:23:05,120 har skrevet en interpreter-- i dette tilfellet 533 00:23:05,120 --> 00:23:09,770 det er også kalt PHP, identisk med navn på language-- som i hovedsak 534 00:23:09,770 --> 00:23:13,840 har en stor sløyfe i det som gjentar i løpet av alle linjer med kode 535 00:23:13,840 --> 00:23:18,170 at jeg mate den som input, som hallo dot PHP, eller ordbok dot PHP. 536 00:23:18,170 --> 00:23:21,760 >> Og så kan du tenke på deres store sløyfe som å ha en masse forhold. 537 00:23:21,760 --> 00:23:26,340 Og disse betingelsene si, hvis human har skrevet søkeordet for, 538 00:23:26,340 --> 00:23:28,470 begynne å gjøre hans eller hennes koden igjen og igjen. 539 00:23:28,470 --> 00:23:31,360 Eller hvis mennesket har skrevet linje med kode, 540 00:23:31,360 --> 00:23:34,880 hvis, bare utføre sin neste linje betinget. 541 00:23:34,880 --> 00:23:37,740 Så det er virkelig som å tolke det i en human måte, linje 542 00:23:37,740 --> 00:23:39,660 ved ledning, og som bare tar tid. 543 00:23:39,660 --> 00:23:41,340 Det tar overhead. 544 00:23:41,340 --> 00:23:44,189 Og så det er en price-- god question-- vi betaler. 545 00:23:44,189 --> 00:23:46,480 Så la oss gjøre en annen demo som er litt mer dramatisk. 546 00:23:46,480 --> 00:23:51,160 Det er, vil jeg si, en omtrentlig dette på en 90% sannsynlighet for å mislykkes forferdelig, 547 00:23:51,160 --> 00:23:53,869 men du vil bli overrasket med 10% sannsynlighet. 548 00:23:53,869 --> 00:23:55,660 Så hvert år prøver vi å gjøre dette, hvor vi 549 00:23:55,660 --> 00:23:59,061 prøver å skrive et program som går gjennom Problemet satt null, for som du har 550 00:23:59,061 --> 00:24:02,060 innsendte dine telefonnumre og en mye annen demografisk informasjon, 551 00:24:02,060 --> 00:24:06,030 og vi programma sende deg en tekstmelding. 552 00:24:06,030 --> 00:24:08,540 Og så alles telefon begynner å pipe eller vibrerer, 553 00:24:08,540 --> 00:24:11,460 og det er bare helt fantastisk, fordi vel, se på hva datamaskiner kan gjøre. 554 00:24:11,460 --> 00:24:13,840 >> Dette fungerer sjelden korrekt det virker, i stor grad 555 00:24:13,840 --> 00:24:16,800 fordi jeg vanligvis blir svartelistet av Gmail eller en annen tjeneste 556 00:24:16,800 --> 00:24:19,630 for faktisk prøver å gjøre dette på skalaen. 557 00:24:19,630 --> 00:24:24,940 Men morsomme er også, siden vi har ikke alle her i dag, 558 00:24:24,940 --> 00:24:27,690 Fun Fact siste gang vi prøvde dette for to år siden, 559 00:24:27,690 --> 00:24:30,870 Jeg tror jeg skrev et program som satt i en sløyfe itera 560 00:24:30,870 --> 00:24:34,040 i løpet av alle elevene i klassen, og hver av dem en tekstmelding, 561 00:24:34,040 --> 00:24:37,534 og det sa noe sånt som: hvorfor er du ikke på forelesning? 562 00:24:37,534 --> 00:24:39,170 Kjærlighet, CS50 bot. 563 00:24:39,170 --> 00:24:42,580 >> Du aner ikke hvor mange unnskyld og slags smertefulle e-poster 564 00:24:42,580 --> 00:24:46,970 Jeg har fått svar fra n minus 100 personer som ikke var her 565 00:24:46,970 --> 00:24:47,960 den dagen. 566 00:24:47,960 --> 00:24:52,116 Og enda morsommere, mer skammelig story-- du vet, la oss sette det der ute. 567 00:24:52,116 --> 00:24:53,740 Det er allerede på video for noen år tilbake. 568 00:24:53,740 --> 00:24:56,810 Så vil du snart se meg skrive en for loop, der 569 00:24:56,810 --> 00:25:00,640 det er veldig lett å skrive en bug i at for løkke, slik at den første gang 570 00:25:00,640 --> 00:25:02,800 gjennom løkken, du sende en tekstmelding. 571 00:25:02,800 --> 00:25:06,190 >> Den andre gangen gjennom løkken jeg burde ha sendt enda en tekstmelding, 572 00:25:06,190 --> 00:25:08,250 og deretter enda en tekst budskap, og en til. 573 00:25:08,250 --> 00:25:11,490 Men det viser seg hvis du gjør en skrivefeil når du programmerer, noen ganger 574 00:25:11,490 --> 00:25:14,460 kan skrive programmer som sender én tekstmelding, så to tekstmeldinger, 575 00:25:14,460 --> 00:25:18,742 deretter tre tekstmeldinger til alle hvem har allerede mottatt en tekstmelding. 576 00:25:18,742 --> 00:25:21,450 Og som du vet, gjør noe, pluss noe, pluss noe, 577 00:25:21,450 --> 00:25:25,910 pluss noe, er stor O for mye tekstmeldinger, eller n squared, 578 00:25:25,910 --> 00:25:29,830 eller på $ 0,10 en tekstmelding, $ 20.000. 579 00:25:29,830 --> 00:25:33,700 >> Heldigvis traff jeg Ctrl-C før det som skjedde, men jeg skylder minst én 580 00:25:33,700 --> 00:25:37,550 av dine forgjengere $ 20 for 200 noen merkelige tekstmeldinger som, 581 00:25:37,550 --> 00:25:40,450 ikke bare gikk til sin telefon, men også det var som en eldre flip telefon 582 00:25:40,450 --> 00:25:43,520 slik at den vil skyves ut av sin minne hver annen personlig tekst 583 00:25:43,520 --> 00:25:45,930 budskapet han hadde faktisk fått. 584 00:25:45,930 --> 00:25:49,250 Så vi har ett mål i dag, for ikke å gjøre det. 585 00:25:49,250 --> 00:25:50,620 Kanskje slå på flymodus. 586 00:25:50,620 --> 00:25:51,120 Greit. 587 00:25:51,120 --> 00:25:56,590 Så la oss gå inn i en programmet her callled-- 588 00:25:56,590 --> 00:25:59,060 at jeg vil kalle teksten dot PHP. 589 00:25:59,060 --> 00:26:01,074 Og på forhånd, jeg har to filer her. 590 00:26:01,074 --> 00:26:06,030 Jeg gjorde en fil for bare stab, som fikk alle ansatte er info, alle navnene 591 00:26:06,030 --> 00:26:07,260 fra kursets hjemmeside. 592 00:26:07,260 --> 00:26:09,756 Og så for nå er jeg bare sette noen falske tall 555-1212. 593 00:26:09,756 --> 00:26:11,380 Så disse vil faktisk ikke gå noen steder. 594 00:26:11,380 --> 00:26:15,140 Men legg merke til innsiden av dette CSV-fil, som vi snakket om en kort stund før 595 00:26:15,140 --> 00:26:16,540 i sammenheng med filen IO. 596 00:26:16,540 --> 00:26:18,730 >> Hva er en CSV-fil? 597 00:26:18,730 --> 00:26:19,970 Kommaseparert variabler. 598 00:26:19,970 --> 00:26:24,400 Og dette er typen som en veldig lette database, hvis du vil. 599 00:26:24,400 --> 00:26:28,650 Det er en slags form for fire kolonner i denne filen, og det rufsete, 600 00:26:28,650 --> 00:26:32,400 men komma hovedsak representerer kolonnene i filen. 601 00:26:32,400 --> 00:26:35,400 Den første kolonnen er TF eller CA navn. 602 00:26:35,400 --> 00:26:37,800 Andre kolonnen er deres etternavn. 603 00:26:37,800 --> 00:26:39,820 Tredje kolonne er telefonnummeret sitt. 604 00:26:39,820 --> 00:26:44,760 Og fjerde kolonnen tilsynelatende er-- fjerde kolonnen er tydeligvis hva? 605 00:26:44,760 --> 00:26:45,870 OK, så det er karrieren. 606 00:26:45,870 --> 00:26:47,180 Så Verizon eller Sprint, eller hva ikke. 607 00:26:47,180 --> 00:26:48,620 Og hvis jeg misspoke tidligere, CSV. 608 00:26:48,620 --> 00:26:51,800 Kommaseparert verdier er CSV her. 609 00:26:51,800 --> 00:26:54,260 >> Så hva kan jeg gjøre med dette? 610 00:26:54,260 --> 00:26:56,940 Vel, dette er bare en stor tekstfil, og det er litt lang, ikke sant? 611 00:26:56,940 --> 00:26:58,690 Liker du dette kommer til å være litt irriterende. 612 00:26:58,690 --> 00:27:03,510 Og det viser seg imidlertid at hvis jeg ønsker å sende en tekstmelding til, la oss 613 00:27:03,510 --> 00:27:05,180 sier Alex her. 614 00:27:05,180 --> 00:27:09,690 La meg gå inn i nettleseren min og gå ut av fullskjermmodus 615 00:27:09,690 --> 00:27:11,660 bare så jeg kan veksle frem og tilbake. 616 00:27:11,660 --> 00:27:20,280 Det viser seg, la oss se, hvis jeg går i her, og logg inn Gmail, all right. 617 00:27:20,280 --> 00:27:22,950 Ikke se på denne delen. 618 00:27:22,950 --> 00:27:23,880 Bare jeg får se. 619 00:27:23,880 --> 00:27:26,551 620 00:27:26,551 --> 00:27:28,800 selvfølgelig livestream kan fortsatt se hva jeg gjør. 621 00:27:28,800 --> 00:27:29,360 Greit. 622 00:27:29,360 --> 00:27:31,850 >> Så her er bare Gmail med John Harvard konto. 623 00:27:31,850 --> 00:27:34,000 Så hvis jeg ønsker å sende en tekstmelding til Alex, 624 00:27:34,000 --> 00:27:35,530 Jeg kan selvfølgelig skrive en melding. 625 00:27:35,530 --> 00:27:38,410 Og det viser seg, og jeg har testet den med Alex før her, 626 00:27:38,410 --> 00:27:42,260 slik at du kan legge en viss domene navngi til folks telefonnumre, 627 00:27:42,260 --> 00:27:45,850 fordi det eksisterer i verden ting kalt SMS til e-post-gatewayer. 628 00:27:45,850 --> 00:27:50,000 Som er en fancy måte å si alt av oss som har mobiltelefoner som 629 00:27:50,000 --> 00:27:53,200 har telefonnumre, selvfølgelig, det er trolig for din operatør, 630 00:27:53,200 --> 00:27:56,840 en viss suffiks ut på Vtext.com for Verizon tekstmelding 631 00:27:56,840 --> 00:28:00,320 dot com, som du kan legge til din egen personlige telefonnummer, og deretter 632 00:28:00,320 --> 00:28:03,540 du eller venner, eller foreldrene dine kan tekst du på det aktuelle adressen. 633 00:28:03,540 --> 00:28:07,380 >> Og Verizon har en server, en e-post server, som ved mottak av denne e-posten, 634 00:28:07,380 --> 00:28:11,180 ser på den numeriske delen, og deretter bruker uansett spesiell industri magi 635 00:28:11,180 --> 00:28:14,540 de har til å faktisk sende det ut over eteren til din bestemt celle 636 00:28:14,540 --> 00:28:15,040 telefon. 637 00:28:15,040 --> 00:28:18,030 Nå er dette fint fordi jeg ikke virkelig vet hvordan du sender en tekstmelding 638 00:28:18,030 --> 00:28:20,460 eller å skrive kode ennå for min mobiltelefon, 639 00:28:20,460 --> 00:28:23,580 og du kan gjøre akkurat det for et avsluttende prosjekt, men for nå er alt 640 00:28:23,580 --> 00:28:24,770 Jeg har er min laptop her. 641 00:28:24,770 --> 00:28:29,830 Så jeg ønsker å iterere over at CSV fil, linje, linje, linje, linje, 642 00:28:29,830 --> 00:28:35,160 grip hver av de ansatte telefonnumre, og deres transportør og auto, 643 00:28:35,160 --> 00:28:39,770 sette sammen, det vil si, koble telefonen nummer med passende domenenavn 644 00:28:39,770 --> 00:28:40,820 og så sende en e-post. 645 00:28:40,820 --> 00:28:41,940 >> Så det er mange trinn. 646 00:28:41,940 --> 00:28:45,530 Og lykke å gjøre det i C. Det er et mareritt av en situasjon 647 00:28:45,530 --> 00:28:48,350 å åpne en fil, for å lese den linje, for linje for linje, som du 648 00:28:48,350 --> 00:28:51,100 ser, eller kan snart se Problemet med satt fem, hvis ikke 649 00:28:51,100 --> 00:28:53,560 Problemet satt fire, og deretter å dynamisk sette sammen 650 00:28:53,560 --> 00:28:57,020 to strenger sammen, fordi i C, å ta to strenger og kombinere dem, 651 00:28:57,020 --> 00:29:00,900 hva gjør du minimalt trenger å gjøre mest sannsynlig? 652 00:29:00,900 --> 00:29:03,020 Du må erklære mer minne, ikke sant? 653 00:29:03,020 --> 00:29:04,710 Og spør, malloc, kan jeg ha mer minne? 654 00:29:04,710 --> 00:29:07,060 Så jeg kan sette halvparten av dette her, halvparten av dette her. 655 00:29:07,060 --> 00:29:08,150 Det er bare så mange trinn. 656 00:29:08,150 --> 00:29:10,310 Og ved det punktet du har mistet interesse i den dumme lille demo 657 00:29:10,310 --> 00:29:11,851 hvor du gjør alles telefon pip. 658 00:29:11,851 --> 00:29:14,590 La oss gjøre denne typen PHP stil, hvor vi bare 659 00:29:14,590 --> 00:29:16,210 begynne å bruke mer av det kjøkkenbenken. 660 00:29:16,210 --> 00:29:18,050 >> Og ideene er fundamentalt den samme, 661 00:29:18,050 --> 00:29:20,710 men vi trenger ikke å bekymre deg for mye om at lavere nivå. 662 00:29:20,710 --> 00:29:22,950 Så la oss se hvordan jeg kan gå om du gjør dette. 663 00:29:22,950 --> 00:29:26,664 Og bare slik at jeg ikke gjenta tidligere feil, 664 00:29:26,664 --> 00:29:28,330 Jeg har skrevet noen notater for meg selv her. 665 00:29:28,330 --> 00:29:31,070 Og la oss se om jeg kan gå oss gjennom noen av de grunnleggende trinnene, 666 00:29:31,070 --> 00:29:33,861 og deretter for tiden skyld vi vil kanskje kutte noen hjørner i slutten. 667 00:29:33,861 --> 00:29:38,007 Jeg kommer til å gå videre og gjøre åpent brakett PHP å starte denne filen. 668 00:29:38,007 --> 00:29:39,590 Og jeg kommer til å gå videre og gjøre dette. 669 00:29:39,590 --> 00:29:41,490 Fil håndtak, som du vil snart se, faktisk 670 00:29:41,490 --> 00:29:44,790 kaller en funksjon kalt f åpen. 671 00:29:44,790 --> 00:29:46,280 Og husk dette åpner en fil. 672 00:29:46,280 --> 00:29:48,800 Og sitatet, unquote, r betyr hva, igjen? 673 00:29:48,800 --> 00:29:49,800 Bare åpne den for lese. 674 00:29:49,800 --> 00:29:51,210 Nå i p sett for, gjorde du dette. 675 00:29:51,210 --> 00:29:54,500 Og håndtere kan være hva som helst, fu, bar, bas, eventuell variabel navn. 676 00:29:54,500 --> 00:29:57,470 Men generelt en datamaskin vitenskapsmann vil kalle en åpen fil, 677 00:29:57,470 --> 00:30:00,962 noe som gir deg en fil håndtak, noe å holde på så å si. 678 00:30:00,962 --> 00:30:02,670 Jeg bare kommer til å gjøre noen feilsjekking. 679 00:30:02,670 --> 00:30:07,260 Så hvis håndtaket er falsk, akkurat som i C, kommer jeg til å gjøre noe sånt, 680 00:30:07,260 --> 00:30:09,545 kunne ikke åpne filen, backslash n. 681 00:30:09,545 --> 00:30:11,420 Og så skal jeg bare å gå videre og avslutte. 682 00:30:11,420 --> 00:30:14,340 Og det viser seg, i PHP, Jeg er ikke inne i en funksjon. 683 00:30:14,340 --> 00:30:16,160 Det er ingen hovedfunksjon her. 684 00:30:16,160 --> 00:30:17,450 Slik at jeg ikke kommer tilbake, per se. 685 00:30:17,450 --> 00:30:18,120 Jeg avslutte. 686 00:30:18,120 --> 00:30:19,619 Som er egentlig det samme. 687 00:30:19,619 --> 00:30:22,510 Og jeg avslutter med ett y sannsynligvis. 688 00:30:22,510 --> 00:30:24,220 Ett betyr bare en feil av noe slag. 689 00:30:24,220 --> 00:30:25,580 Det er ikke-null, så det er en feil. 690 00:30:25,580 --> 00:30:30,220 >> All right, så hvis jeg er her nede nå i mitt program har jeg åpnet filen. 691 00:30:30,220 --> 00:30:34,250 Jeg kommer til å gå foran og erklære en rekke kalt adresser, 692 00:30:34,250 --> 00:30:38,610 og i C ville jeg vite det størrelsen på matrisen på forhånd, ikke sant? 693 00:30:38,610 --> 00:30:41,910 Eller jeg trenger å erklære dette er en peker, og deretter bruke malloc. 694 00:30:41,910 --> 00:30:44,720 Og så hver gang jeg leser gjennom en annen rad i filen, 695 00:30:44,720 --> 00:30:46,620 Jeg kommer til å trenge å malloc mer minne, malloc mer minne. 696 00:30:46,620 --> 00:30:47,703 Det er en smerte i nakken. 697 00:30:47,703 --> 00:30:50,950 Og heldigvis, PHP og Ruby, og Python, og Javascript, de 698 00:30:50,950 --> 00:30:53,880 vil vokse dine arrays for deg automatisk. 699 00:30:53,880 --> 00:30:54,830 Ingen flere malloc. 700 00:30:54,830 --> 00:30:56,227 Ingen flere minnehåndtering. 701 00:30:56,227 --> 00:30:57,560 Datamaskinen tar seg av det. 702 00:30:57,560 --> 00:31:00,330 Men prisen du betaler. 703 00:31:00,330 --> 00:31:01,350 Det er litt tregere. 704 00:31:01,350 --> 00:31:03,190 Og for et program som dette Vi kommer ikke til å legge merke til. 705 00:31:03,190 --> 00:31:04,720 Vi kommer til å sende 100 tekstmeldinger. 706 00:31:04,720 --> 00:31:06,136 For eksempel ikke kommer til å føle det. 707 00:31:06,136 --> 00:31:08,430 IT egentlig bare begynner å rolle språket ditt valg 708 00:31:08,430 --> 00:31:11,490 når dine data eller programmer bli virkelig, virkelig betydelig, 709 00:31:11,490 --> 00:31:14,120 slik det vil være tilfelle mer så med vår web baserte ting. 710 00:31:14,120 --> 00:31:15,450 >> Men for nå la oss videre. 711 00:31:15,450 --> 00:31:20,120 Mens det viser seg at det er en funksjon i C kalles f få CSV. 712 00:31:20,120 --> 00:31:24,570 File få CSV, tar som en fil håndtak som sitt argument, 713 00:31:24,570 --> 00:31:28,810 og det fortsetter så, rad, etter rad for rad, for å lese inn en rad. 714 00:31:28,810 --> 00:31:30,964 Så det er bare leser en linje av tekst fra filen. 715 00:31:30,964 --> 00:31:34,130 Men hva er fint om denne funksjonen, det ikke bare gi meg en tekstlinje. 716 00:31:34,130 --> 00:31:37,320 Det ser ut for disse komma, og analyserer linjen. 717 00:31:37,320 --> 00:31:41,740 Og for å analysere linjen betyr å splitte det på visse verdier i denne sammenheng. 718 00:31:41,740 --> 00:31:45,510 >> Med andre ord, dollartegn rad er en variabel som er 719 00:31:45,510 --> 00:31:47,010 kommer til å gi meg en haug med indekser. 720 00:31:47,010 --> 00:31:49,635 Dette kommer til å være det Første kolonne i min CSV. 721 00:31:49,635 --> 00:31:52,510 Dette kommer til å bli den andre kolonne, dette kommer til å bli den tredje, 722 00:31:52,510 --> 00:31:53,968 og dette kommer til å bli den fjerde. 723 00:31:53,968 --> 00:31:57,440 Fordi husker, og Excel den ikke samarbeide sist gang vi gjorde dette, 724 00:31:57,440 --> 00:32:03,350 men hvis jeg laster ned ansatte dot CSV. 725 00:32:03,350 --> 00:32:04,940 Whoops, ikke gi nytt navn. 726 00:32:04,940 --> 00:32:09,120 Hvis jeg laster ned ansatte dot CSV, og forsøk å åpne det, 727 00:32:09,120 --> 00:32:12,510 Jeg har allerede registered-- oh jeg ikke oppdaterer Excel siden sist. 728 00:32:12,510 --> 00:32:15,880 Du vil se at i staben dot CSV, jeg har fire kolonner. 729 00:32:15,880 --> 00:32:18,720 Så når jeg leser i første rad for Abby her, 730 00:32:18,720 --> 00:32:23,582 sign rad dollar 0 er Abby, dollartegn rad én er Lyons, 731 00:32:23,582 --> 00:32:27,740 sign rad dollar to er nummeret hennes, og deretter hennes telefonens operatør. 732 00:32:27,740 --> 00:32:28,410 >> Så det er alt. 733 00:32:28,410 --> 00:32:30,740 Og det er fint, fordi jeg trenger ikke å nå finne ut 734 00:32:30,740 --> 00:32:32,800 hvor alle disse komma faktisk er. 735 00:32:32,800 --> 00:32:35,300 Så jeg kommer til å gå videre og gjøre dette, gitt at definisjonen, 736 00:32:35,300 --> 00:32:38,960 Jeg kommer til å si at hun heter i rad brakett null, som lovet. 737 00:32:38,960 --> 00:32:41,150 Og jeg kommer til å grab-- og faktisk, vet du hva? 738 00:32:41,150 --> 00:32:42,780 Jeg kommer ikke til å bekymre seg sitt navn, i dette tilfellet. 739 00:32:42,780 --> 00:32:43,988 Jeg kommer til å holde det enklere. 740 00:32:43,988 --> 00:32:48,610 Jeg kommer til å gjøre henne nummeret er i rad brakett to, tror jeg. 741 00:32:48,610 --> 00:32:50,510 Og hennes carrier var der? 742 00:32:50,510 --> 00:32:53,405 Rad tre, en over. 743 00:32:53,405 --> 00:32:54,280 Så ikke noe nytt der. 744 00:32:54,280 --> 00:32:56,770 Det er bare null indeksering i en matrise. 745 00:32:56,770 --> 00:32:58,760 >> Og nå, jeg kommer til å gjøre følgende. 746 00:32:58,760 --> 00:33:03,930 Dersom transportøren lik lik AT & T-- Jeg skal bare ha en loop-- 747 00:33:03,930 --> 00:33:06,790 Jeg ønsker å opprette en e-post adresse som ser slik ut. 748 00:33:06,790 --> 00:33:12,320 Det kommer til å være 617-555-1212 på, hva er det, text.ATT.net, 749 00:33:12,320 --> 00:33:13,490 er det jeg ønsker å gjøre. 750 00:33:13,490 --> 00:33:15,260 Så hvordan gjør jeg dette? 751 00:33:15,260 --> 00:33:16,730 Jeg kommer til å gjøre følgende. 752 00:33:16,730 --> 00:33:22,460 Hennes adresse kommer til å være hennes nummer, og nå, la meg gå videre og gjøre dette. 753 00:33:22,460 --> 00:33:23,760 Dette er noen funky syntaks. 754 00:33:23,760 --> 00:33:27,250 Jeg kunne gjøre prosent s trick, men jeg kan faktisk bare gjøre dette. 755 00:33:27,250 --> 00:33:29,900 >> Så dette er et PHP ting, men la oss vurdere hva jeg gjør. 756 00:33:29,900 --> 00:33:31,630 Dollar signere adresse på venstre, bare en variabel. 757 00:33:31,630 --> 00:33:32,300 Gi meg en variabel. 758 00:33:32,300 --> 00:33:33,390 Jeg trenger ikke å spesifisere type. 759 00:33:33,390 --> 00:33:34,570 PHP vil finne det ut. 760 00:33:34,570 --> 00:33:36,580 På høyre side, hva er datatype 761 00:33:36,580 --> 00:33:38,399 av det hele på høyre side? 762 00:33:38,399 --> 00:33:40,190 Ser ut som en streng, fordi det er dobbel 763 00:33:40,190 --> 00:33:42,280 siterer helt til venstre og helt til høyre. 764 00:33:42,280 --> 00:33:44,210 Nå er det noen funky ny syntaks her. 765 00:33:44,210 --> 00:33:47,550 Det er klammeparentes, og dollartegn nummeret. 766 00:33:47,550 --> 00:33:52,860 Men ta en gjette hva er det syntaks trolig fortelle PHP å gjøre for meg? 767 00:33:52,860 --> 00:33:53,360 Yeah. 768 00:33:53,360 --> 00:33:54,630 Bare sette verdien der. 769 00:33:54,630 --> 00:33:55,530 Så ingen prosent s. 770 00:33:55,530 --> 00:33:58,160 Vi kunne bruke print f, eller s print f eller noe sånt som det, 771 00:33:58,160 --> 00:34:00,070 men PHP og mye høyere nivå språk, 772 00:34:00,070 --> 00:34:03,070 du kommer til å se at du kan gjøre det samme funksjonelt, kanskje 773 00:34:03,070 --> 00:34:04,019 seks forskjellige måter. 774 00:34:04,019 --> 00:34:06,310 Og så det begynner å bli et spørsmål om design eller stil. 775 00:34:06,310 --> 00:34:09,902 Så dette er bare en kryptisk jakt måte si, gi meg en e-postadresse, 776 00:34:09,902 --> 00:34:12,110 men plug-in nummeret i mellom disse klammeparentes. 777 00:34:12,110 --> 00:34:15,440 Og klammeparentes vil ikke ender opp i den endelige adressen. 778 00:34:15,440 --> 00:34:18,010 >> Nå kan vi hoppe over noen av disse linjene for tiden skyld. 779 00:34:18,010 --> 00:34:21,210 Så hvis en bærer lik lik verHorizon-- Uff, 780 00:34:21,210 --> 00:34:24,989 Verizon-- jeg ønsker å gjøre noe svært lik, hvor adressen blir, 781 00:34:24,989 --> 00:34:27,569 sitat, unquote, nummer på text.ATT.net. 782 00:34:27,569 --> 00:34:30,380 783 00:34:30,380 --> 00:34:35,050 Og så kan jeg gjøre det samme type ting for resten av bærerne. 784 00:34:35,050 --> 00:34:37,090 Men jeg vil bare gjøre prikk, prikk, prikk for nå. 785 00:34:37,090 --> 00:34:43,050 Og nå la oss anta at Jeg vil legge til array, presse. 786 00:34:43,050 --> 00:34:45,969 Jeg ønsker å legge til array, kalt adresser. 787 00:34:45,969 --> 00:34:50,409 >> Denne adressen, dette er hvordan du legge noe til en array i PHP. 788 00:34:50,409 --> 00:34:51,610 Du trenger ikke å gjøre malloc. 789 00:34:51,610 --> 00:34:53,068 Du trenger ikke å endre størrelsen på tabellen. 790 00:34:53,068 --> 00:34:54,259 Du bare si array, push. 791 00:34:54,259 --> 00:34:57,300 Hva ønsker du å push-- hva matrise ønsker du å presse noe på? 792 00:34:57,300 --> 00:34:58,000 Adresser. 793 00:34:58,000 --> 00:34:59,550 Hva du ønsker å presse på adresser? 794 00:34:59,550 --> 00:35:00,350 Adresse. 795 00:35:00,350 --> 00:35:02,430 Og faktisk, hvis du virkelig ønsker å være flink, 796 00:35:02,430 --> 00:35:05,610 noen syntaktisk sukker for dette, så å si, 797 00:35:05,610 --> 00:35:10,230 som bare betyr at hvordan kan du gjøre dette i penere måte, ville være å gjøre dette. 798 00:35:10,230 --> 00:35:14,060 Som også har effekten av å vokse den adresser matrise av størrelse ett, 799 00:35:14,060 --> 00:35:17,130 og deretter plop at ytterligere e-postadresse i det. 800 00:35:17,130 --> 00:35:17,630 Yeah. 801 00:35:17,630 --> 00:35:19,730 >> PUBLIKUM: [uhørbart] 802 00:35:19,730 --> 00:35:22,520 >> SPEAKER 1: En skrivefeil på annet if-- oh, carrier. 803 00:35:22,520 --> 00:35:23,070 Det er greit. 804 00:35:23,070 --> 00:35:26,971 Det vil heller ikke liker min manglende evne til gjennomføre en del av dette programmet 805 00:35:26,971 --> 00:35:27,470 senere. 806 00:35:27,470 --> 00:35:28,810 Men takk for fanger. 807 00:35:28,810 --> 00:35:30,671 One more bug. 808 00:35:30,671 --> 00:35:31,170 Takk. 809 00:35:31,170 --> 00:35:33,746 Vi vil at dette skal være Vtext.com. 810 00:35:33,746 --> 00:35:34,340 Ja. 811 00:35:34,340 --> 00:35:34,839 Greit. 812 00:35:34,839 --> 00:35:36,330 Så hvor kommer denne forlate oss? 813 00:35:36,330 --> 00:35:38,224 Vi har skrevet koden for å åpne filen. 814 00:35:38,224 --> 00:35:40,390 Vi har en løkke for å iterere over radene i filen. 815 00:35:40,390 --> 00:35:43,650 Vi har kode som legger til min array, en om gangen, i riktig 816 00:35:43,650 --> 00:35:44,790 formatert e-postadresse. 817 00:35:44,790 --> 00:35:48,480 Så alt som virkelig gjenstår er å sende en e-post til hver av disse menneskene. 818 00:35:48,480 --> 00:35:52,830 >> Så jeg har gått foran og klargjøring meg selv som følger. 819 00:35:52,830 --> 00:35:59,580 Hva jeg skal gjøre her er-- og la oss gå videre og hoppe til noen faktiske koden, 820 00:35:59,580 --> 00:36:00,620 som ser ut som dette. 821 00:36:00,620 --> 00:36:02,950 Så her er det pre-bakt versjonen jeg skrev tidligere. 822 00:36:02,950 --> 00:36:04,700 Og legg merke til jeg er ferdig implementere Sprint. 823 00:36:04,700 --> 00:36:06,130 Jeg er ferdig å implementere T-Mobile. 824 00:36:06,130 --> 00:36:08,020 Jeg er ferdig å implementere Virgin Mobile. 825 00:36:08,020 --> 00:36:09,622 Og jeg vil be om unnskyldning på forhånd. 826 00:36:09,622 --> 00:36:12,080 Det er et par operatører som noen elever i klassen har 827 00:36:12,080 --> 00:36:14,640 at jeg ikke bry opplisting i hvis tilstanden her. 828 00:36:14,640 --> 00:36:16,015 Så ikke alle tekstene vil gå ut. 829 00:36:16,015 --> 00:36:17,556 Men la oss se hva annet jeg trenger å gjøre. 830 00:36:17,556 --> 00:36:19,660 Jeg lukker filen, bare som i p satt fire. 831 00:36:19,660 --> 00:36:20,835 >> Og dette er nytt syntaks. 832 00:36:20,835 --> 00:36:22,710 Og vi får se litt bit av denne over tid, 833 00:36:22,710 --> 00:36:24,450 spesielt med p sette sju og åtte. 834 00:36:24,450 --> 00:36:28,140 Men dette er syntaksen for å skape en spesiell type struktur. 835 00:36:28,140 --> 00:36:31,490 Det viser seg at det er et bibliotek som kommer med PHP, kalt PHP mailer. 836 00:36:31,490 --> 00:36:33,840 Dens formål i livet er å programma sende e-post. 837 00:36:33,840 --> 00:36:36,840 Det er kode noen andre skrev at gjør det lettere for oss å sende e-post, 838 00:36:36,840 --> 00:36:39,131 slik at vi ikke trenger å holde går frem og tilbake til Gmail, 839 00:36:39,131 --> 00:36:41,151 og lime inn i folks e-postadresser. 840 00:36:41,151 --> 00:36:44,150 Det er en hel haug med linjer her som ærlig, jeg bare slags kopiert 841 00:36:44,150 --> 00:36:45,660 og limt fra dokumentasjonen. 842 00:36:45,660 --> 00:36:47,409 Og faktisk, hvis du er nysgjerrig, forlot jeg alle 843 00:36:47,409 --> 00:36:50,550 av nettadressene av dokumentasjonen i koden som vi vil legge ut senere. 844 00:36:50,550 --> 00:36:52,360 Og legg merke til at blant de tingene jeg gjør 845 00:36:52,360 --> 00:36:55,710 er, jeg sier dette biblioteket, bruke Gmail server, ikke sant? 846 00:36:55,710 --> 00:36:59,360 SMTP vi snakket kort om når vi var på Yale om å være enkel mail 847 00:36:59,360 --> 00:37:00,110 overføringsprotokoll. 848 00:37:00,110 --> 00:37:02,920 Det er den protokollen som servere som brukes til å sende e-post, 849 00:37:02,920 --> 00:37:05,150 og that's-- Gmail har en av disse. 850 00:37:05,150 --> 00:37:07,290 En port er dette TCP-portnummeret. 851 00:37:07,290 --> 00:37:09,630 Det er greit hvis du har ikke sett 587 før. 852 00:37:09,630 --> 00:37:11,420 Bare vet at fra dokumentasjonen. 853 00:37:11,420 --> 00:37:12,250 Her er mitt brukernavn. 854 00:37:12,250 --> 00:37:13,670 Jeg kommer til å bruke CF50 bot. 855 00:37:13,670 --> 00:37:16,690 Og i et øyeblikk, jeg bare kommer til å skriver i bot faktiske passord. 856 00:37:16,690 --> 00:37:18,690 Og deretter ned her, merke hva som gjenstår. 857 00:37:18,690 --> 00:37:22,840 >> Jeg satt min fra adresse å bli bot på CS50.net. 858 00:37:22,840 --> 00:37:26,240 Jeg tror jeg vil ikke angre på å sende en tekstmelding til 800 mennesker som 859 00:37:26,240 --> 00:37:30,590 sier, savner deg, elsker CS50 bot, kanskje for de som ikke kunne gjøre det i dag. 860 00:37:30,590 --> 00:37:33,160 Og så i linje 76, hva gjør jeg? 861 00:37:33,160 --> 00:37:39,010 Denne typen ser ut som C. Så for jeg lik 0, n equals-- nå teller er nytt. 862 00:37:39,010 --> 00:37:42,077 Det viser seg at hvis du ønsker å få hvor mange ting i en matrise, 863 00:37:42,077 --> 00:37:43,660 du trenger ikke å huske det lenger. 864 00:37:43,660 --> 00:37:45,370 Du kan bare spørre en Funksjonen kalles teller, 865 00:37:45,370 --> 00:37:48,320 og det vil fortelle deg hvor mange adresser er i denne matrisen. 866 00:37:48,320 --> 00:37:53,210 >> Og så kommer jeg til å legge adressen til e-posten. 867 00:37:53,210 --> 00:37:55,090 Og jeg vet dette fra Bruke dokumentasjonen. 868 00:37:55,090 --> 00:37:56,900 Det er en add-adresse funksjon. 869 00:37:56,900 --> 00:37:58,980 Og nå merker det er en del av syntaksen. 870 00:37:58,980 --> 00:38:01,470 Vi har sett dette før i C. Ligner i ånden. 871 00:38:01,470 --> 00:38:04,100 Du kan tenke på dollartegn post som en variabel, som det er. 872 00:38:04,100 --> 00:38:08,100 Men det er en struct innsiden av som ikke bare egenskaper, 873 00:38:08,100 --> 00:38:09,400 variabler hvis du vil. 874 00:38:09,400 --> 00:38:13,480 Men det viser seg at i PHP, som er et objektorientert programmerings 875 00:38:13,480 --> 00:38:16,520 språk, som Java hvis du tok APCS. 876 00:38:16,520 --> 00:38:21,420 >> Dollartegn mail, hvis du ønsker to-- det har også fungerer innsiden av den, 877 00:38:21,420 --> 00:38:22,380 eller metoder. 878 00:38:22,380 --> 00:38:24,720 Så dette er å si at spesiell PHP mailer 879 00:38:24,720 --> 00:38:29,280 bibliotek, hvis jeg har en variabel av denne, hvis jeg vil kalle en funksjon som 880 00:38:29,280 --> 00:38:31,559 kommer med det biblioteket, for dagens formål, 881 00:38:31,559 --> 00:38:33,100 bare vet du bruke pilen notasjon. 882 00:38:33,100 --> 00:38:34,150 Det er ingen dot notasjon. 883 00:38:34,150 --> 00:38:35,220 Det er bare på pilen. 884 00:38:35,220 --> 00:38:36,380 Men det er ikke en peker. 885 00:38:36,380 --> 00:38:38,680 Det er bare lånt fra C sin syntaks. 886 00:38:38,680 --> 00:38:43,620 Så ring legge adressen innsiden av dette biblioteket formål eller variabel. 887 00:38:43,620 --> 00:38:44,440 >> Greit. 888 00:38:44,440 --> 00:38:45,570 Dette er den magiske linjen. 889 00:38:45,570 --> 00:38:46,740 Det er hvordan jeg sender en e-post. 890 00:38:46,740 --> 00:38:50,040 Det er det samme som å åpne opp Gmail, skrive det ut, og trykket send. 891 00:38:50,040 --> 00:38:54,870 Men det kommer til å i stedet sende en e-post til denne adressen, med denne kroppen, 892 00:38:54,870 --> 00:38:57,120 fra CS50 bot. 893 00:38:57,120 --> 00:38:58,710 Og nå nøkkelen linje. 894 00:38:58,710 --> 00:39:03,130 Denne linjen ble fraværende i som 2 011 når jeg tenker sist jeg prøvde dette. 895 00:39:03,130 --> 00:39:05,640 Den linjen der, selvfølgelig, klarner adressene. 896 00:39:05,640 --> 00:39:07,920 Så logisk, hvis jeg ikke fjerne adresse 897 00:39:07,920 --> 00:39:11,740 etter hver iterasjon, først e-post eller tekstmelding går til Alice, 898 00:39:11,740 --> 00:39:14,320 den andre går til Alice og Bob, den tredje 899 00:39:14,320 --> 00:39:17,870 går til Alice og Bob og Charlie, dermed svært kostbare feil 900 00:39:17,870 --> 00:39:18,760 Jeg gjorde det året. 901 00:39:18,760 --> 00:39:21,080 >> Så la oss se. 902 00:39:21,080 --> 00:39:24,200 Er det noen spørsmål før vi sender dere alle en tekst 903 00:39:24,200 --> 00:39:28,210 Meldingen med 10 prosent sannsynlighet? 904 00:39:28,210 --> 00:39:28,940 Noen spørsmål? 905 00:39:28,940 --> 00:39:30,330 Greit. 906 00:39:30,330 --> 00:39:36,100 La oss meg gå inn her og endring passordet til hva som bør fungere, 907 00:39:36,100 --> 00:39:37,780 vil trolig bli svartelistet av Gmail. 908 00:39:37,780 --> 00:39:39,821 Så de kan ikke alle gå ut, siden de sannsynligvis 909 00:39:39,821 --> 00:39:42,960 liker ikke oss å sende 800 e-poster i en sløyfe for alle på en gang. 910 00:39:42,960 --> 00:39:45,140 Siden det ikke er særlig menneskelig atferd. 911 00:39:45,140 --> 00:39:47,460 >> Åh, jeg kommer til å endre en annen ting. 912 00:39:47,460 --> 00:39:50,850 Opp på toppen, kommer jeg til å sent-- endre filen til studenter dot CSV. 913 00:39:50,850 --> 00:39:55,420 Og jeg vil ikke åpne denne, men dette er en identisk CSV-fil med ikke 100 ansatte, 914 00:39:55,420 --> 00:39:58,970 men 800 studenter, bare fra Harvard, fordi Yale 915 00:39:58,970 --> 00:40:00,207 har oktober fordypningen denne uken. 916 00:40:00,207 --> 00:40:03,290 Og det virker som en slags dust ting å gjøre til tekst alle av dem om hvorfor 917 00:40:03,290 --> 00:40:04,750 de er ikke i klassen på ferie. 918 00:40:04,750 --> 00:40:05,250 Det er greit. 919 00:40:05,250 --> 00:40:08,310 Bare Harvard studenter i dag inne i den filen. 920 00:40:08,310 --> 00:40:12,320 Og nå la oss gå tilbake til min terminal-vinduet. 921 00:40:12,320 --> 00:40:13,710 Jeg er litt nervøs. 922 00:40:13,710 --> 00:40:22,000 >> OK, så nå kommer jeg til å gå inn i katalog, og PHP tekst dot PHP. 923 00:40:22,000 --> 00:40:24,950 Hva med en modig frivillig? 924 00:40:24,950 --> 00:40:26,690 Så jeg vil ikke at dette på meg. 925 00:40:26,690 --> 00:40:28,410 OK, kom opp. 926 00:40:28,410 --> 00:40:29,162 Hva er navnet ditt? 927 00:40:29,162 --> 00:40:29,662 MAYA: Maya. 928 00:40:29,662 --> 00:40:30,328 SPEAKER 1: Maya. 929 00:40:30,328 --> 00:40:31,610 Kom opp, Maya. 930 00:40:31,610 --> 00:40:34,120 Greit. 931 00:40:34,120 --> 00:40:35,389 La oss se om dette fungerer. 932 00:40:35,389 --> 00:40:38,430 Jeg setter min egen e-postadresse i file-- mitt eget telefonnummer i filen, 933 00:40:38,430 --> 00:40:40,110 slik at forhåpentligvis vil jeg få en også. 934 00:40:40,110 --> 00:40:40,819 Hyggelig å møte deg. 935 00:40:40,819 --> 00:40:41,443 MAYA: Likeså. 936 00:40:41,443 --> 00:40:44,510 SPEAKER 1: Så alt du trenger å gjøre er trykk enter for å sende 800 tekstmeldinger, 937 00:40:44,510 --> 00:40:45,466 hvis jeg ikke skru opp. 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 en stund, statistisk, før vi kommer til en e address-- 942 00:40:58,430 --> 00:41:00,573 en tekstmelding som er i rommet akkurat nå. 943 00:41:00,573 --> 00:41:03,880 944 00:41:03,880 --> 00:41:05,390 La oss dvele og se. 945 00:41:05,390 --> 00:41:06,940 >> PUBLIKUM: [HYLE] 946 00:41:06,940 --> 00:41:08,270 >> SPEAKER 1: Å, ja. 947 00:41:08,270 --> 00:41:09,230 >> PUBLIKUM: Å, fikser. 948 00:41:09,230 --> 00:41:16,720 949 00:41:16,720 --> 00:41:19,180 >> SPEAKER 1: For looper are-- dette er ikke treg på grunn av PHP. 950 00:41:19,180 --> 00:41:21,810 Dette er treg fordi Gmail er å strupe oss og ikke 951 00:41:21,810 --> 00:41:25,170 la oss sende mer enn som en e-post per sekund. 952 00:41:25,170 --> 00:41:26,300 Hva som helst? 953 00:41:26,300 --> 00:41:29,990 Dette var en vanskelig ting for meg å teste på hjem med bare meg og min en telefon, så. 954 00:41:29,990 --> 00:41:37,630 955 00:41:37,630 --> 00:41:41,111 Er det forhåpentligvis fra bot? 956 00:41:41,111 --> 00:41:41,610 Ja? 957 00:41:41,610 --> 00:41:42,110 Nei? 958 00:41:42,110 --> 00:41:44,760 959 00:41:44,760 --> 00:41:46,620 Si ja. 960 00:41:46,620 --> 00:41:47,479 Nei? 961 00:41:47,479 --> 00:41:49,374 Det er fra en venn? 962 00:41:49,374 --> 00:41:49,874 Pinlig. 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 Ganske sikker på at det fungerer selv. 966 00:42:00,090 --> 00:42:00,910 UH oh. 967 00:42:00,910 --> 00:42:03,190 De black-- oh, vent litt. 968 00:42:03,190 --> 00:42:04,280 Åh, vet du hva? 969 00:42:04,280 --> 00:42:06,100 Et øyeblikk. 970 00:42:06,100 --> 00:42:07,802 Bare Maya og I-- Mia, var det? 971 00:42:07,802 --> 00:42:08,301 MAYA: Maya. 972 00:42:08,301 --> 00:42:12,110 SPEAKER 1: Maya, kommer til å Vet du hva jeg gjorde galt her. 973 00:42:12,110 --> 00:42:14,890 Oh, vent litt. 974 00:42:14,890 --> 00:42:23,320 Jeg tror jeg bare sendte 100 tekstmeldinger til 555-1212. 975 00:42:23,320 --> 00:42:24,346 Vent litt. 976 00:42:24,346 --> 00:42:28,080 977 00:42:28,080 --> 00:42:29,270 Jeg kan ikke vinne noe i å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 Fikse det i post produksjon. 982 00:42:36,219 --> 00:42:36,718 For faen! 983 00:42:36,718 --> 00:42:39,430 984 00:42:39,430 --> 00:42:40,390 Følgende fra adressen. 985 00:42:40,390 --> 00:42:41,301 OK, stå ved. 986 00:42:41,301 --> 00:42:41,800 Unnskyld. 987 00:42:41,800 --> 00:42:44,550 988 00:42:44,550 --> 00:42:47,080 Det er smertefullt hvert år. 989 00:42:47,080 --> 00:42:48,640 OK, det ene øyeblikket. 990 00:42:48,640 --> 00:42:50,530 Dette er bra. 991 00:42:50,530 --> 00:42:54,010 Jeg i stedet kommer til å gjøre dette. 992 00:42:54,010 --> 00:42:55,470 Print adresse. 993 00:42:55,470 --> 00:42:56,030 OK, stå ved. 994 00:42:56,030 --> 00:43:01,340 Skriv ut adresser, brakett i. 995 00:43:01,340 --> 00:43:02,710 Ja, jeg liker det. 996 00:43:02,710 --> 00:43:10,220 Dollar sign-- OK jeg skal forklare hva jeg er gjør i et øyeblikk, etter at jeg har kjørt dette. 997 00:43:10,220 --> 00:43:11,670 Hvert år. 998 00:43:11,670 --> 00:43:13,125 OK, here we go. 999 00:43:13,125 --> 00:43:15,750 Jeg har just-- og jeg ønsker ikke vise alles telefonnummer, 1000 00:43:15,750 --> 00:43:17,740 men Maya kan bekrefte med et nikk av hodet, 1001 00:43:17,740 --> 00:43:20,800 at hun ser alles telefonnummer i klassen 1002 00:43:20,800 --> 00:43:26,750 at jeg kommer til å kopiere inn et program som heter Gmail. 1003 00:43:26,750 --> 00:43:30,860 Og hvis du er i Gmail, hva vi ønsker å si? 1004 00:43:30,860 --> 00:43:32,137 Savner deg. 1005 00:43:32,137 --> 00:43:33,220 Love-- det er ikke fra meg. 1006 00:43:33,220 --> 00:43:35,230 Jeg har ikke engang truffet sende enda. 1007 00:43:35,230 --> 00:43:39,450 Så la oss gå videre og gjøre dette, hvis jeg kan zoome inn. 1008 00:43:39,450 --> 00:43:40,300 OK. 1009 00:43:40,300 --> 00:43:42,480 Så jeg bruker et program kalt Gmail nå. 1010 00:43:42,480 --> 00:43:44,490 Hvis Maya, vil du liker å klikk Send, 1011 00:43:44,490 --> 00:43:46,970 vi vil simulere hva som koden skal ha gjort. 1012 00:43:46,970 --> 00:43:54,630 1013 00:43:54,630 --> 00:43:55,254 >> Hva som helst? 1014 00:43:55,254 --> 00:43:56,062 >> [PIPELYDER] 1015 00:43:56,062 --> 00:43:56,870 >> PUBLIKUM: Jepp. 1016 00:43:56,870 --> 00:43:58,030 >> SPEAKER 1: Ja? 1017 00:43:58,030 --> 00:43:59,210 Frelse? 1018 00:43:59,210 --> 00:44:00,427 >> PUBLIKUM: Jepp. 1019 00:44:00,427 --> 00:44:01,260 SPEAKER 1: Miss deg. 1020 00:44:01,260 --> 00:44:02,718 Og jeg kommer til å sende ut resten. 1021 00:44:02,718 --> 00:44:06,060 Jeg sendte ut halvparten fordi jeg ikke tror Gmail ville la dem gå gjennom. 1022 00:44:06,060 --> 00:44:12,410 Så bare husk at i dag er dagen at du har lært at jeg kan bruke Gmail. 1023 00:44:12,410 --> 00:44:14,977 1024 00:44:14,977 --> 00:44:15,810 Det var forferdelig. 1025 00:44:15,810 --> 00:44:17,140 En stor applaus til Maya. 1026 00:44:17,140 --> 00:44:18,980 Takk. 1027 00:44:18,980 --> 00:44:21,280 Greit, det. 1028 00:44:21,280 --> 00:44:22,210 hva 1029 00:44:22,210 --> 00:44:23,140 >> [PIPELYDER] 1030 00:44:23,140 --> 00:44:25,010 1031 00:44:25,010 --> 00:44:26,580 >> Vi fikk noen piper, ja? 1032 00:44:26,580 --> 00:44:27,080 Greit. 1033 00:44:27,080 --> 00:44:30,590 Nå kommer jeg til å få 700 virkelig ulykkelige e-poster fra klassekamerater. 1034 00:44:30,590 --> 00:44:32,400 Så minst vil vi se om det var verdt det. 1035 00:44:32,400 --> 00:44:33,300 Så hva gikk galt? 1036 00:44:33,300 --> 00:44:35,300 Jeg skal finne ut hva som gikk feil i ettertid, 1037 00:44:35,300 --> 00:44:38,340 men bare se hvor enkelt det var å gjøre det i PHP. 1038 00:44:38,340 --> 00:44:44,598 Så hva kan vi egentlig gjøre nå som vi har denne ekspressivitet av PHP. 1039 00:44:44,598 --> 00:44:45,970 Det var-- det var fryktelig. 1040 00:44:45,970 --> 00:44:46,480 Greit. 1041 00:44:46,480 --> 00:44:48,430 Så det var det som skulle ha gått ut. 1042 00:44:48,430 --> 00:44:52,770 Dette ble meg å teste denne morgenen på min telefon, selve skjermdump av telefonen min. 1043 00:44:52,770 --> 00:44:56,180 >> Men nå la oss vurdere hvorfor vi faktisk introdusere 1044 00:44:56,180 --> 00:44:57,840 alt dette ting i første omgang. 1045 00:44:57,840 --> 00:45:01,625 Så målet er ikke å skrive disse programmene som 1046 00:45:01,625 --> 00:45:03,250 er skrevet på kommandolinjen, ikke sant? 1047 00:45:03,250 --> 00:45:05,000 Så jeg skrev en enkel hei program, skrev jeg 1048 00:45:05,000 --> 00:45:09,155 et lite program som gjør conditionals, og brukt en leselinje og så videre. 1049 00:45:09,155 --> 00:45:11,530 Og i teorien, jeg bare skrev et program som sendes ut 1050 00:45:11,530 --> 00:45:14,290 800 tekstmeldinger, gi eller ta 800. 1051 00:45:14,290 --> 00:45:16,830 Og at programmet var alt fortsatt kjøre på kommandolinjen. 1052 00:45:16,830 --> 00:45:18,538 Og det er selvfølgelig ikke på nettet, ikke sant? 1053 00:45:18,538 --> 00:45:22,160 Målet nå er å begynne å bruke det jeg hevder er en enklere å bruke 1054 00:45:22,160 --> 00:45:24,720 språk, daresay en mer kraftig språk i form 1055 00:45:24,720 --> 00:45:27,104 av funksjonene som kommer med det, for å starte 1056 00:45:27,104 --> 00:45:29,850 skrive kode som genererer nettsider. 1057 00:45:29,850 --> 00:45:33,248 >> Så forrige gang, og i forrige uke, vi snakket om HTTP og HTML. 1058 00:45:33,248 --> 00:45:36,350 Og hva er fint om HTML er at det er bare ren tekst. 1059 00:45:36,350 --> 00:45:38,220 Og teksten er sikkert noe som du kan 1060 00:45:38,220 --> 00:45:42,040 skrive ut ved bokstavelig talt å ringe print f-funksjonen eller utskriftsfunksjonen. 1061 00:45:42,040 --> 00:45:46,160 Og ja, det er hva PHP er nå kommer til å tillate oss å gjøre. 1062 00:45:46,160 --> 00:45:48,610 Så blant eksemplene vi ha i dagens kildekode, 1063 00:45:48,610 --> 00:45:51,610 I tillegg til noen av koden at jeg satt oppe en stund siden, 1064 00:45:51,610 --> 00:45:55,440 vi har programmer som dette for eksempel. 1065 00:45:55,440 --> 00:45:58,760 Froshims, eller Freshman Utført Sport, var faktisk 1066 00:45:58,760 --> 00:46:01,500 en av de første extracurriculars Jeg ble involvert med år siden. 1067 00:46:01,500 --> 00:46:03,750 Og min samboer og jeg, med noen andre barn på campus, 1068 00:46:03,750 --> 00:46:05,280 brukes til å kjøre froshims program. 1069 00:46:05,280 --> 00:46:07,420 Jeg får mine tekstmeldinger nå. 1070 00:46:07,420 --> 00:46:14,030 >> Nå så vi, tilbake i dag, så dette var 1 996 eller så, det var en Internett, 1071 00:46:14,030 --> 00:46:17,395 men det var ingen process-- det var ingen nettsted for froshims. 1072 00:46:17,395 --> 00:46:20,270 Og så hvis du ønsker å melde deg på fotball eller volleyball eller hva, 1073 00:46:20,270 --> 00:46:22,240 du ville fylle ut denne tingen kalles et stykke papir, 1074 00:46:22,240 --> 00:46:25,060 og du ville gå over Harvard verksted, og du ville skyve det 1075 00:46:25,060 --> 00:46:29,230 inn i post sporet av Proctor, som var i Wigglesworth, en av sovesalene. 1076 00:46:29,230 --> 00:46:31,270 Og dette var du registrert. 1077 00:46:31,270 --> 00:46:33,570 Og han eller hun ville da komponere en e-post til deg 1078 00:46:33,570 --> 00:46:36,514 manuelt, mye som jeg bare gjorde her med Maya, 1079 00:46:36,514 --> 00:46:38,930 og så ville du bli bekreftet som har vært registrert. 1080 00:46:38,930 --> 00:46:40,840 >> Så dette var som lav hengende frukt, så å si. 1081 00:46:40,840 --> 00:46:42,930 Det var litt dumt at vi brukte papir for dette. 1082 00:46:42,930 --> 00:46:45,024 Jeg ville ha oss til å kunne å bare gå på en nettside, 1083 00:46:45,024 --> 00:46:47,440 eller har de freshmen gå på en nettside, registrere for idrett, 1084 00:46:47,440 --> 00:46:50,398 og bare automatisere mye av dette ting ved å sette deres navn og e-post 1085 00:46:50,398 --> 00:46:51,850 og så videre inn i en database. 1086 00:46:51,850 --> 00:46:56,510 Og faktisk, den aller første versjonen på nettsiden, ved hjelp av super stygg HTML, 1087 00:46:56,510 --> 00:46:58,195 kan ha sett noe som dette. 1088 00:46:58,195 --> 00:47:01,070 Det var faktisk ironisk nok mer pinlig ute enn dette tilbake 1089 00:47:01,070 --> 00:47:01,460 da. 1090 00:47:01,460 --> 00:47:02,890 Men jeg brukte et programmeringsspråk. 1091 00:47:02,890 --> 00:47:06,060 Ikke PHP, men heller kalt Perl, som er en eldre språk, 1092 00:47:06,060 --> 00:47:07,251 men veldig like i ånden. 1093 00:47:07,251 --> 00:47:09,000 Og jeg bare helt lært det for meg selv. 1094 00:47:09,000 --> 00:47:12,208 Og det tok meg en stund å finne ut av det, spør mange spørsmål av venner. 1095 00:47:12,208 --> 00:47:14,080 Men ideene der var nøyaktig de samme. 1096 00:47:14,080 --> 00:47:18,050 Fordi hva PHP er egentlig designet for er ikke kommandolinjen stuff 1097 00:47:18,050 --> 00:47:20,450 vi bare spilte med, men for web-programmering. 1098 00:47:20,450 --> 00:47:24,960 >> Det er virkelig bundet i sin funksjon satt til nettet, som følger. 1099 00:47:24,960 --> 00:47:26,370 Dette er froshims. 1100 00:47:26,370 --> 00:47:28,720 Og hvis jeg ønsket å registrere seg i denne formen, 1101 00:47:28,720 --> 00:47:30,930 dette er ganske stygg, sikkert, men la meg gå videre 1102 00:47:30,930 --> 00:47:34,440 og være en mindre komfortabel student, og hva sport for Matthews, 1103 00:47:34,440 --> 00:47:35,630 Klikk på Register. 1104 00:47:35,630 --> 00:47:39,780 Hva jeg ønsker å være i stand til å gjøre er sende inn informasjon fra et skjema, 1105 00:47:39,780 --> 00:47:42,400 ikke til Googles server som vi gjorde sist gang, helt 1106 00:47:42,400 --> 00:47:47,100 juks ved hjelp av sin backend, jeg ønsker å implementere min egen backend-kode. 1107 00:47:47,100 --> 00:47:51,410 Hvilket betyr skrive PHP kode som bor på en URL 1108 00:47:51,410 --> 00:47:54,180 at skjemadata kan sendes til. 1109 00:47:54,180 --> 00:47:57,510 >> Og deretter koden din, skrevet i PHP på serveren, 1110 00:47:57,510 --> 00:47:59,400 Deretter kan du svare på det brukerundersøkelser. 1111 00:47:59,400 --> 00:48:03,287 Som hans eller hennes navn, eller komfort nivå, eller dorm, og deretter gjøre noe med det. 1112 00:48:03,287 --> 00:48:05,120 I dette tilfellet, jeg bare idiotisk skrevet det ut 1113 00:48:05,120 --> 00:48:06,750 som tekst, som ikke er alt som pen. 1114 00:48:06,750 --> 00:48:09,590 Men du kan sikkert Tenk, hvis du vet HTML, 1115 00:48:09,590 --> 00:48:13,010 og du vil snart vite hvordan å generere HTML med print f, og print, 1116 00:48:13,010 --> 00:48:16,500 og lignende funksjoner, kan du sikkert generere en penere nettside som sier: 1117 00:48:16,500 --> 00:48:17,929 Hei David, du er nå registrert. 1118 00:48:17,929 --> 00:48:20,220 Du er en mindre behagelig student fra Matthews, ikke sant? 1119 00:48:20,220 --> 00:48:23,880 >> Du kan bare bruke en hel haug av% ses, eller klammeparentes og dollartegn 1120 00:48:23,880 --> 00:48:27,750 notasjon Jeg brukte en stund siden, til genererer tekst som er mer brukervennlig 1121 00:48:27,750 --> 00:48:28,567 enn dette. 1122 00:48:28,567 --> 00:48:30,150 Så la oss ta en titt på denne filen. 1123 00:48:30,150 --> 00:48:34,666 Froshim null dot PHP ser slik ut. 1124 00:48:34,666 --> 00:48:37,860 1125 00:48:37,860 --> 00:48:43,500 Når jeg laster CS50 IDE, froshim null ser slik ut. 1126 00:48:43,500 --> 00:48:45,700 Dette er froshim null dot PHP. 1127 00:48:45,700 --> 00:48:47,730 Og hva legger du merke til om denne filen? 1128 00:48:47,730 --> 00:48:49,506 >> PUBLIKUM: [uhørbart] 1129 00:48:49,506 --> 00:48:50,922 SPEAKER 1: Sorry, litt høyere? 1130 00:48:50,922 --> 00:48:53,250 PUBLIKUM: [uhørbart] Det er alt i HTML. 1131 00:48:53,250 --> 00:48:57,130 Og faktisk er det, fordi hva er interessant om PHP 1132 00:48:57,130 --> 00:48:58,880 er at den er designet å være, for bedre 1133 00:48:58,880 --> 00:49:02,110 eller verre, blandet med HTML-kode. 1134 00:49:02,110 --> 00:49:05,850 Og i virkeligheten, selv om denne fil, froshim null dot PHP, 1135 00:49:05,850 --> 00:49:11,470 har en PHP kommentar på toppen av det, det er alt bare HTML. 1136 00:49:11,470 --> 00:49:17,655 Men derimot, hvis jeg åpner opp, la oss si, registrere null dot PHP, som 1137 00:49:17,655 --> 00:49:19,550 bare har en stor kommentar på toppen. 1138 00:49:19,550 --> 00:49:26,500 Dette ser også nesten utelukkende som HTML, med unntak for hva? 1139 00:49:26,500 --> 00:49:29,350 Line, hva, 21 ser litt rart. 1140 00:49:29,350 --> 00:49:32,739 >> Men merker jeg går inn PHP-modus med åpen brakett spørsmålstegn PHP. 1141 00:49:32,739 --> 00:49:33,780 Så jeg har fått noen ting. 1142 00:49:33,780 --> 00:49:36,724 Og deretter ved slutten av denne linje nesten jeg har, spørsmålstegn PHP. 1143 00:49:36,724 --> 00:49:38,390 Og dette er hva jeg mener med intermingled. 1144 00:49:38,390 --> 00:49:41,910 Du kan skrive HTML som du nettopp vil at serveren skal spytte ut. 1145 00:49:41,910 --> 00:49:45,090 Men hvis du ønsker å gjøre noe dynamisk stykke ut på siden, 1146 00:49:45,090 --> 00:49:47,699 som setter navnet mitt eller dorm eller komfort nivå, 1147 00:49:47,699 --> 00:49:49,490 Jeg kan bruke en funksjon som print r, som er 1148 00:49:49,490 --> 00:49:52,492 skrive ut rekursiv, noe som betyr bare skrive ut denne variabelen, formatering det 1149 00:49:52,492 --> 00:49:53,200 slik du vil. 1150 00:49:53,200 --> 00:49:55,880 Det er egentlig ikke for menneskelige formål, det er bare 1151 00:49:55,880 --> 00:49:58,290 for debugging eller diagnostiske formål. 1152 00:49:58,290 --> 00:49:59,460 Så det er hvordan jeg gjorde det. 1153 00:49:59,460 --> 00:50:06,100 >> Hvis jeg i stedet gå froshims to prikk PHP, merker at virkningen av dette skjemaet 1154 00:50:06,100 --> 00:50:09,680 er ikke registrert null dot PHP som old-- den forrige faktisk var. 1155 00:50:09,680 --> 00:50:11,222 Men det er registrert to prikk PHP. 1156 00:50:11,222 --> 00:50:13,680 Så la oss se på hvordan dette oppfører seg litt annerledes. 1157 00:50:13,680 --> 00:50:15,140 Hvis jeg går inn i versjon to. 1158 00:50:15,140 --> 00:50:20,430 Hvis her, hvis jeg registrere som David, mindre komfortabel, fra dorm av Mathews, 1159 00:50:20,430 --> 00:50:21,480 registrere. 1160 00:50:21,480 --> 00:50:23,770 Så denne gangen det er sagt, du er registrert, ikke egentlig. 1161 00:50:23,770 --> 00:50:25,370 La oss se hva jeg gjorde her. 1162 00:50:25,370 --> 00:50:29,760 Hvis jeg ser på register to prikk PHP, har dette noen flere PHP-kode. 1163 00:50:29,760 --> 00:50:35,410 Det er litt renere, selv om det fortsatt brytes litt lenge på denne linjen. 1164 00:50:35,410 --> 00:50:36,260 Legg merke til her. 1165 00:50:36,260 --> 00:50:40,300 Jeg skrive ut min HTML-kode, hodet mitt tag, min tittel tag, hodet, kroppen. 1166 00:50:40,300 --> 00:50:45,410 >> Og så begynner jeg å si ting som angir PHP-modus. 1167 00:50:45,410 --> 00:50:48,540 Og så den koden, åpen brakett PHP-- spørsmålstegn PHP sier: 1168 00:50:48,540 --> 00:50:53,460 hei, server, execute-- tolke følgende ting som PHP 1169 00:50:53,460 --> 00:50:55,030 til du ser slutten tag. 1170 00:50:55,030 --> 00:50:58,590 Og selv om du kanskje ikke kjenner noen annet PHP enn du har sett så langt, 1171 00:50:58,590 --> 00:51:01,290 du kan slags lese det ganske intuitivt. 1172 00:51:01,290 --> 00:51:10,670 Hvis navn er tom, eller komfort er tom, eller dorm er tom, hva gjør jeg? 1173 00:51:10,670 --> 00:51:12,830 Hva skal jeg si til brukeren? 1174 00:51:12,830 --> 00:51:15,330 Du må oppgi navn, komfort, og dorm, og så videre. 1175 00:51:15,330 --> 00:51:17,750 Else, jeg sier du er registrert, vel egentlig ikke. 1176 00:51:17,750 --> 00:51:19,190 >> Og jeg sier ikke egentlig fordi det er ingen database. 1177 00:51:19,190 --> 00:51:20,200 Jeg gjør ikke noe med dataene. 1178 00:51:20,200 --> 00:51:22,408 Jeg bare kaster den bort for demonstrasjonsformål. 1179 00:51:22,408 --> 00:51:24,320 Nå har jeg slags skimped løpet linje 22. 1180 00:51:24,320 --> 00:51:26,400 Det er mer syntaks der, men dollartegn 1181 00:51:26,400 --> 00:51:28,320 underst innlegget er like interessant. 1182 00:51:28,320 --> 00:51:30,300 Og dette er hva som er fint om PHP. 1183 00:51:30,300 --> 00:51:35,610 I PHP, har du det som kalles noen super globale variabler. 1184 00:51:35,610 --> 00:51:38,430 De er liksom enda mer viktigere enn globale variabler. 1185 00:51:38,430 --> 00:51:41,370 Og disse, all kapitalisert som sådan, kommer med PHP. 1186 00:51:41,370 --> 00:51:44,550 Så hvis du har en server som har en webserver installert, som Apache, 1187 00:51:44,550 --> 00:51:49,390 og du installerer språk støtte for PHP, plutselig du 1188 00:51:49,390 --> 00:51:52,250 kan begynne å bruke disse super globale variabler i koden din. 1189 00:51:52,250 --> 00:51:54,330 >> Og hva er fint om PHP er at hvis du bare 1190 00:51:54,330 --> 00:51:57,540 skrive en fil som ender i dot PHP, satte den på en web server, 1191 00:51:57,540 --> 00:52:01,260 og deretter sende inn et skjema til det via den handlingen tag og en form tag, 1192 00:52:01,260 --> 00:52:05,110 den handlingen attributt i skjemaet tag, PHP og web 1193 00:52:05,110 --> 00:52:09,360 helt finner ut hvordan de skal gripe alle de viktige verdi par ut 1194 00:52:09,360 --> 00:52:11,633 av URL som spørsmålet mark q lik katter, 1195 00:52:11,633 --> 00:52:14,782 det vil finne ut hvordan du q og katter. 1196 00:52:14,782 --> 00:52:17,710 Hvis du sender et bilde, eller et brukernavn, eller et passord til å like Facebook, 1197 00:52:17,710 --> 00:52:21,360 PHP vil finne ut for deg hvor alle disse dataene er. 1198 00:52:21,360 --> 00:52:23,821 Og det vil bare hånden du en assosiativ array 1199 00:52:23,821 --> 00:52:27,560 kalt dollartegn strek post, eller dollartegn underst får, 1200 00:52:27,560 --> 00:52:30,590 avhengig av om du er bruker få eller legg innleveringer. 1201 00:52:30,590 --> 00:52:32,950 Og det vil bare hånd du en super global variabel, 1202 00:52:32,950 --> 00:52:37,254 slik at hvis du ønsker å få på navnet at brukeren sendes via denne nettsiden 1203 00:52:37,254 --> 00:52:41,894 form, du bokstavelig talt bare si navnet av super global variabel, sitat, 1204 00:52:41,894 --> 00:52:43,380 unquote, navn. 1205 00:52:43,380 --> 00:52:46,144 Og sitat, unquote komfort, og sitat, unquote dorm. 1206 00:52:46,144 --> 00:52:48,810 Og vi kommer til å være i stand til å gjøre dette og mye mer med PHP. 1207 00:52:48,810 --> 00:52:50,540 Og selv om dette var en virvelvind blikk på det, 1208 00:52:50,540 --> 00:52:51,980 vi vil dykke i mye mer neste uke. 1209 00:52:51,980 --> 00:52:54,247 Vi vil innføre en database slik at du faktisk 1210 00:52:54,247 --> 00:52:56,816 kommer til å begynne å implementere din egen e-handel based-- 1211 00:52:56,816 --> 00:52:59,150 som nettsted i bare en ukes tid. 1212 00:52:59,150 --> 00:53:02,750 Så vi får se deg neste gang, og håper du fikk tekstmeldinger. 1213 00:53:02,750 --> 00:53:05,450 Ha det. 1214 00:53:05,450 --> 00:53:06,950 >> [MUSIC SPILLE] 1215 00:53:06,950 --> 00:53:11,450 1216 00:53:11,450 --> 00:53:12,950 >> [Døråpningen] 1217 00:53:12,950 --> 00:53:14,475 >> SPEAKER 2: Hei. 1218 00:53:14,475 --> 00:53:15,350 SPEAKER 3: Hva skjer? 1219 00:53:15,350 --> 00:53:17,750 SPEAKER 2: Hva er det du gjør? 1220 00:53:17,750 --> 00:53:19,850 SPEAKER 3: Arbeide på et problem sett. 1221 00:53:19,850 --> 00:53:21,050 SPEAKER 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 >> Hva are-- uh, hva gjør du her? 1225 00:53:25,584 --> 00:53:26,750 SPEAKER 3: Just hanging out. 1226 00:53:26,750 --> 00:53:28,134 Kom akkurat tilbake fra gym. 1227 00:53:28,134 --> 00:53:30,050 Jeg kunne ikke hjelpe, men legge merke til når vi høy fived, 1228 00:53:30,050 --> 00:53:32,450 at du har ganske grove hender. 1229 00:53:32,450 --> 00:53:33,950 Går du til gym? 1230 00:53:33,950 --> 00:53:35,150 >> SPEAKER 2: Nei. 1231 00:53:35,150 --> 00:53:36,650 Nei. 1232 00:53:36,650 --> 00:53:38,450 >> SPEAKER 3: Dude, du ser ganske stor. 1233 00:53:38,450 --> 00:53:45,950 Som er dårlig, fordi alle vet 8-ball er den store mannen på campus. 1234 00:53:45,950 --> 00:53:48,050 High five. 1235 00:53:48,050 --> 00:53:49,550 >> SPEAKER 2: Eh, nei. 1236 00:53:49,550 --> 00:53:50,450 Nei, jeg tror jeg er bra. 1237 00:53:50,450 --> 00:53:52,300 Jeg tror jeg er bra. 1238 00:53:52,300 --> 00:53:54,097