[Speel van musiek] Spreker 1: Dit is CS50 en dit is die einde van die week sewe. Vandag is miskien waar ons regtig leer jou tale. Ons wat in die afgelope paar weke HTML en CSS, wat nie is programmeertale. En inderdaad, selfs al is ons het nie kyk na byna al die tags dat HTML kom met en byna al van die eienskappe wat CSS kom met, dit is soort van dit vir HTML en CSS. Ons sal net die algemeen begin die veronderstelling dat jy verstaan ​​die algemene idees van etikette, en eienskappe, en bladsye gestuur van die kliënt te bediener. Want vandag het ons begin om te kyk na 'n ander programmeertaal, PHP. Ons gaan hierdie super vinnige doen. Ons gaan nie om jou te leer PHP per se, baie soos ons nie streef om jou te leer C, per se nie, maar eerder programmering. En inderdaad, een van die doelwitte vir hierdie kursus is nie om jou te leer C, of HTML, CSS of, of PHP, of enige aantal ander buzz woorde of akronieme, maar eerder die rekenaarwetenskap en hoe om fundamenteel program. En inderdaad, vandag het ons begin om te neem diegene opleiding wiele af al die verder deur die wat deur 'n taal, die sogenaamde PHP, soos volg. Hier is wat hierdie taal lyk. Dit blyk dat daar is geen behoefte vir 'n hoof funksie in 'n program wat geskryf is in 'n taal, die sogenaamde PHP. So wat reeds 'n bietjie eenvoudiger klink as C, waarmee ons bekend is. Dit blyk dat as jy wil 'n veranderlike te verklaar, jy doen dit byna identies aan C. Maar daar is duidelik een verskil hier wanneer ek verklaar 'n string, of miskien twee verskille. Wat lyk anders? GEHOOR: Die dollar teken. Spreker 1: Ja, daar is dollar teken, wat ons nog nooit gesien het. En wat ontbreek? Ja? GEHOOR: [onhoorbaar] Spreker 1: Ja, daar is geen data tipe. Dit blyk dat PHP is wat ons noem 'n losweg getik taal, waar C is sterk getik. Losweg getik net beteken dat daar is verskillende tipes data, daar is stringe, en SY, en dryf. Maar die rekenaar syfers wat uit. Jy die menslike programmeerder nie om dit uit te vind. So al wat jy hoef te doen om te verklaar 'n veranderlike is dollar teken die naam van jou veranderlike, en dan, byvoorbeeld, quote unquote, hello wêreld. Wel, dit is wat 'n toestand lyk soos in PHP. Enige verskille? Geen. So dit blyk dit is identies. En jy kan minder het takke of meer takke, maar die sintaksis beurte presies dieselfde. Boolse uitdrukkings kan saam bestel. Boolse uitdrukkings kan saam anded. Jy het nog steeds skakelaars. Selfs as jy nie gebruik het Hiervan hierdie nie bestaan ​​nie in C en hulle is funksioneel ekwivalent in PHP. En in die feit, in PHP hulle is 'n bietjie meer kragtig. In C, jy kan net vergelyk sekere data tipes soos SY en karakters, terwyl in PHP kan jy eintlik vergelyk volle fledge snare sonder te bekommer oor wysers en dies meer. So hier is 'n lus vir. Dit is net pseudokode kode, as jy wil. Maar dit is struktureel identies aan C. Hier is 'n while lus, pseudokode therefore-- identies aan C. Hier is 'n doen terwyl loop-- identies. En so is daar is soort van Hierdie patroon hier waardeur daar is 'n paar ander sintaktiese funksies ons inderdaad gaan om te sien. Trouens, hier is 'n lekker manier in PHP waardeur, as jy wil om Itereer oor 'n skikking, en jy wil nie spring deur die geestelike en sintaktiese hoepels van ' int i gelyk 0, i minder as n, i plus plus-- wat is net 'n baie irriterende sintaksis. Jy kan 'n bietjie meer sê publiek aankom vir elke nommers as nommer, waar in hierdie geval dollar teken nommers, ek neem, is soos 'n skikking met die naam getalle. En dan Ek neem nommer, enkelvoud, gaan 'n veranderlike wees. En wat PHP vir my wil doen as ek Itereer oor hierdie lus is, op elke iterasie, dit gaan werk die veranderlike nommer wees die ith element in getalle, meervoud. So is dit net hanteer al van daardie vir my. Geen vierkantige hakies, geen dollar teken geen semi-dubbelpunte. Dit is net 'n bietjie makliker. Wel, as jy wil 'n skikking, dit blyk jy kan iets redelik soortgelyk te doen C. Die sintaksis is 'n bietjie anders. Maar hier is 'n skikking met die naam dollar onderteken nommers. En ek gebruik, in PHP, vierkante hakies, dit blyk. En ons gaan hierdie weer sien in JavaScript-- nog 'n ander taal. Ek gebruik net vierkante hakienotasie 'n komma geskei lys het heelgetalle, in hierdie geval. Maar dit gee my 'n skikking. Maar selfs meer kragtig in PHP, ons het ook wat is oor die algemeen genoem assosiatiewe skikkings. En 'n baie tale het hierdie so goed. Die ding oor C skikkings is dat die indekse vir 'n skikking, die ding wat jy gebruik in vierkantige hakies via wat jy toegang elemente, wat moet wees? GEHOOR: [onhoorbaar] Spreker 1: Hulle moet getalle wees of heelgetalle, spesifiek van nul op up. Wel, in PHP, en dit blyk uit in ander tale, jy kan begin om indekse wat nie numeriese is. Maar hulle is eintlik woorde of frases, sodat eerder as Probeer om te onthou waar iets is, of gestoor word in 'n veranderlike i, jy kan eintlik gebruik 'n woord en sê that-- kan jy 'n woord soos dit sê. So dollar teken aanhaling is die naam van 'n veranderlike hier. Dit is 'n bietjie funky sintaksis dit is assosieer twee sleutel waarde pare vir hierdie veranderlike. Spesifiek, is dit gee my 'n skikking wat 'n lengte van 2. Maar die indekse is nie 0 en 1. Die indekse is quote unquote simbool en quote unquote prys. En die waardes van die indekse, onderskeidelik, is FB vir Facebook en $ 79,53, toe ek die laaste nagegaan 'n prys vir hierdie. Wat beteken dit? Wel, dit beteken dat in plaas van die skryf-kode soos hierdie, waar ek gebruik om iets te doen soos dollar sign-- of eerder, in C Ek sou nie eens 'n dollar teken. Ek sou iets te doen soos aanhalings en dan Ek sou bracket i na sommige te kry nie arbitrêr numeries geïndekseer waarde. Begin vandag in PHP, as jy wil op 'n sekere waarde te kry, ons het soort van meer semantiese uitdrukking. Net 'n fancy manier om te sê ons kan net dinge noem wat hulle is. En as jy wil te kry iets simbool, nou is jy letterlik doen haal unquote simbool in vierkantige hakies in plaas van 'n blote nommer. So dit is 'n mooi gerief. En dit is soort van dit vir nou. Daar is trosse van ander funksies in PHP. En inderdaad, PHP kom met die spreekwoordelike kombuis wasbak. Dosyne, honderde funksies kom met PHP-- soveel meer as gekom met C. En dit is nie bedoel om oorweldig nie, maar eerder te help jy besef dat ons nie langer kode te skryf dit is soort van hier af konseptueel. Nou kan ons net begin om voordeel te trek veel meer gevorderde funksies dat tale soos PHP het. Sodat ons nie hoef te bekommer oor beweeg dinge rondom in die geheue. Ons hoef nie te bekommerd wees oor die malloc en al hierdie laer vlak, kragtige besonderhede wat jy sal stoei met, indien nie sukkel met, pset5, maar jy kan begin om gou as vanselfsprekend aanvaar. In werklikheid, laat ons skryf 'n super eenvoudige program in PHP, soos volg. Ek gaan kop gaan in CS50 IDE hier, en wat ek gaan doen is 'n nuwe lêer, wat baie eenvoudig gaan hallo dot PHP genoem te word. So in plaas van dot c, dit is gaan word genoem dot PHP. En dan in hierdie lêer, Ek kan begin tik. Maar dit blyk dat die een ding wat ek het om te weet is dat enige PHP lêer in die algemeen, moet om te begin met 'n paar spesiale sintaksis. Soortgelyk in die gees aan HTML, maar weer, PHP is 'n programmeertaal, nie 'n opmaak taal. So elke lêer, en dit is soort dom soek ek sal erken. Open bracket, vraagteken, PHP. En dit is net die manier om te sê taal se hey, rekenaar hier kom 'n paar kode geskryf in 'n taal, die sogenaamde PHP. En dan aan die einde van jou lêer jy doen soort soort van die teenoorgestelde. Jy hoef nie weer net skryf PHP, jy doen vraagteken, hoek bracket. En dan iets wat jy binne-in sit van hierdie twee etikette, so te sê, sal wees, of behoort te wees, PHP-kode. So laat iets super eenvoudige doen. Ek gaan om voort te gaan en te doen druk def, hello wêreld, backslash n, te red. En nou op my vinnige, ek gaan te doen, maak hello-- nee, ek gaan om dit te doen, dot streep hallo. Nee, dot streep, hm. So iets is anders. En inderdaad, dit is 'n belangrike verskil tussen PHP en tale soos C. C was 'n sogenaamde saamgestel taal. Wat het dit vir C word saamgestel? Wat was die implikasie? Ja. GEHOOR: Skryf dit in masjienkode sodat dit kan bestuur word deur die rekenaar. Spreker 1: Presies. Ons moet eers omskep dit in sogenaamde masjien kode, nulle en ene, voordat dit eintlik uitvoerbare sal en verstaan ​​word deur die rekenaar. Deur Intel binnekant. Deur die SVE binnekant van die rekenaar. PHP, daarenteen, is wat genoem 'n geïnterpreteer taal, wat beteken dat jy nie stel dit saam in nulle en ene, masjien-kode, jy plaas dit laat soos bronkode. En jy plaas dit slaag as insette om 'n program, 'n tolk dat iemand anders geskryf jaar gelede dat dit verstaan reël vir reël, karakter vir karakter. So met ander woorde, mense daar buite het 'n program wat sal kyk op jou kode reël vir reël, en uit te vind wat die rekenaar behoort te doen, sonder die omskakeling dit direk aan nulle en ene. So as dit sien 'n lus, hierdie sogenaamde tolk gaan wees, alles reg, sou ek iets te doen weer en weer en weer. Wat moet ek doen? Laat my kyk na die volgende lyn. Laat my kyk na die volgende lyn. En dit is werklik interpreteer dit reël vir reël. So om dit uit te voer, kan ek nie gebruik te maak. Ek het nie dot streep gebruik in hierdie geval. Ek plaas doen PHP, wat die naam van 'n program, a.k.a. 'N tolk, dit is pre-geïnstalleer in CS50 IDE, en nou het ek nodig om 'n slaag command line argument, wat is eenvoudig die naam van die lêer wat ek wil om te interpreteer. Of meer terloops, wat ek wil om te hardloop. En as ek druk Enter daar het ons dit. Hello Wêreld. Nou is dit blyk dat ek gebruikte druk def doelbewus om ons te oorbrug van C na PHP. Die meeste PHP programmeerders, soos u sal sien, nie eens die moeite met druk def. Hulle gebruik net 'n funksie genoem druk, wat C het nie. En so as ek eintlik tik dit nou, dit optree funksioneel dieselfde. Ek kan nie die persent s en persent i en so meer, maar daar is ander maniere in PHP om dit te doen. Maar dit is net om sê dat sintakties, anders as 'n paar weird dinge top, en 'n paar vreemde karakters af aan die onderkant, die konsepte van nou ontwikkeling in hierdie ander taal gaan presies dieselfde wees. In werklikheid, kom ons doen een ander voorbeeld. So ek gaan om voort te gaan en sluit hierdie lêer. Laat my 'n ander een te skep wat Ek sal voorwaardes 1 dot PHP noem. Sodat daar geen zero, want wat ek gedoen het Ek was teruggekyk 'n paar weke gelede, ons 'n lêer genaamd gehad voorwaardes 1 dot C. En wat Ek het dit was omskep in my kop, en hier op papier, en binnekort op die kursus se webwerf, reël vir reël in PHP. So in die C-weergawe, ons het iets soos string s kry kry string. So dit is 'n bietjie anders om dit te doen in PHP. In plaas daarvan, is ek net gaan om te doen, of eerder, ek kan gedoen int N kry kry int, in hierdie vroeëre voorbeeld. So in plaas van dat, ek gaan doen n kry gelees lyn, wil ek graag 'n heelgetal, asseblief. So dit is net my vinnige. En so dit blyk, en Ek sou dit net weet uit gelees of gesien die funksie voor, lees lyne funksie in PHP neem 'n argument wat 'n vinnige vir die mens, en sy doel in die lewe is om 'n lyn van die teks lees dat hy of sy tipes in. En dan is dit winkels wat teks in die veranderlike n. En nou wil ek dalk om iets te doen soos ek gedoen het weke gelede in soos week een van die klas. Indien n groter is as zero, dan, ek gaan dat die sintaksis sien ons net leen, Druk def, jy opgetel 'n positiewe getal, backslash n. Anders as n gelyk is gelyk aan nul, ek is gaan om voort te gaan en sê, druk def, jy opgetel nul backslash n. Anders, hier die geval sou natuurlik, druk def, jy 'n negatiewe getal opgetel. En ons kan seker implementeer die logika van hierdie ding in 'n klomp van die verskillende maniere, maar die punt hier is dat sintakties, skaars enigiets nuuts nie. Dis net die dollar teken en 'n nuwe funksie en lees lyn. Maar fundamenteel, wat is nuut nou is ek interpretasie van hierdie. Ek is om dit as insette na 'n ander program. So as ek wil hierdie, hardloop as Ek het nie enige foute maak, Ek gaan PHP hardloop, van voorwaardes 1 dot PHP, Tik, Ek gaan om te tik in die nommer 50, en laat ons veronderstel vir nou dit werk. Omdat die logika is die dieselfde dinge as een week. Alle reg, so dit is redelik underwhelming, reg? Ons kan dit doen in enige aantal tale. Kom ons doen iets baie meer kragtig. Kom ons afwerking probleem stel vyf. So ek gaan om voort te gaan en doen dit. Ek gaan 'n lêer te skep genoem woordeboek dot PHP, en geneig as jy kan wees skarrel af baie van notas, die notas sal net help jy as jy toegelaat te implementeer probleme stel vyf in PHP. Maar ons sal sien hoe vinnig ons nou kan dieselfde probleem stel implementeer. So in woordeboek dot PHP, gaan ek om te aanvaar dat daar reeds 'n lêer in die wêreld genoem speller. En inderdaad, ek het dit in advance, en ons sal nie loop deur hierdie lyn deur die lyn, maar as jy nuuskierig later en regtig wil om jou gedagtes te draai om die verskille tussen c en PHP, letterlik vergelyk hierdie lêer, speller, van vandag se bronkode dat ons later sal plaas vandag teen p stel vyf speller dot c dat ons julle gee, en dit is byna dieselfde lyn deur die lyn. Daar is 'n paar meer dollar tekens. 'N Paar funksies 'n bietjie anders. Maar dit is 'n mooi manier van soort sien hoe jy een taal na 'n ander te vertaal. En dit is byna identies lyn vir lyn. Maar ek gaan om te aanvaar dat bestaan, en wat ek gaan om hier te doen is probeer om te blaas jou omgee deur reimplementing die geheel van die probleem stel vyf manier vinniger as wat jy het tot dusver te doen. So byvoorbeeld, ek gaan eerste verklaar 'n globale veranderlike genoem grootte, en stel dit gelyk aan nul. Nou is dit nie veel spaar. Kans is jy geïmplementeer grootte pretty much dieselfde, of hint hint, sal vanaand of môre, net die gebruik van 'n globale veranderlike genoem grootte, en die opstel van dit gelyk is aan nul. Dit is nie 'n besonder ongelooflike verwoester. So, wat was jou data strukture van keuse, dié van julle wat het geduik in en lees die spec, wat datastrukture het die meeste van julle het al met behulp van? A hash tafel of probeer, miskien sommige variante daarvan. So implementering van 'n hash tafel ten minste, is 'n soort van 'n baie reëls van die kode, reg? En nie almal van hulle kan wees funksionele op hierdie punt in die week, maar dit is goed. Want in PHP, as ek wil 'n hash tafel, gedoen. Reg? Sodat veranderlike wat ek net verklaar is natuurlik genoem dollar teken tafel, per die bekendstelling tevore. Maar ek regtig wil net op die einde van die dag, 'n skikking. Maar dit is nie 'n numeries geïndekseer skikking, want dit is soos twee week dinge, wanneer ons gepraat oor skikkings. Ek wil 'n hash tafel. Maar 'n hash tafel is regtig net 'n konkrete manier om te sê, jy wil 'n assosiatiewe skikking. Jy wil in staat wees om assosieer sleutels waardes. Keys met waardes. Wat is 'n woordeboek, regtig? Wel dit is 'n hele klomp van die sleutels. Woorde soos appel, peer, en piesang, en al hierdie Engelse woorde dat ons hand jou. En die waardes wat jy effektief is invoeging in jou woordeboek is óf waar, of die afwesigheid, vals is. Met ander woorde jy invoeging 'n hele klomp van die sleutel waarde pare appel, waar, peer, waar, piesang, waar is. Sodat wanneer jy haal of kyk up wat data in jou hash tafel met 'n tjek funksie, jy is óf om terug 'n antwoord, ja, ek het dit gevind in my kompleks hash tafel, of nee, dit is nie daar nie, sodat jy valse terugkeer. So om dit te doen, al wat ek nodig het, is die data struktuur soos ek voorgestel het nie. Ek het net nodig om in staat wees om woorde te assosieer soos, quote unquote, simbool, met 'n waarde soos, waar is. So daar is my hash tafel. Kom ons eintlik dit gebruik. So is daar 'n paar funksies Ek nodig het om te implementeer. Ek gaan om voort te gaan en byt af 'n funksie genoem grootte. Dit neem nie argumente. Ek hoef nie te pla met die woord, nietig, in PHP. Ek is net gaan om terug te keer grootte. En as 'n eenkant, PHP het hierdie minorly irriterende detail, waar as iets is globale, moet jy vertel die funksie in wat jy gebruik dit hey, dit is 'n globale veranderlike. So, klein onnoselheid, maar jy het dit nietemin te doen. So, wat oor las? Ek gaan om te implementeer 'n funksie genoem vrag wat neem in die naam van 'n woordeboek, net soos in die probleem stel vyf. En voor ek gaan, sien dat Ek het nie is tik heeltemal dieselfde dinge. Wat is natuurlik anders in PHP oor hoe jy 'n funksie versus C verklaar? Ja. GEHOOR: [onhoorbaar] Spreker 1: Geen terugkeer tipe. En inderdaad, dit is die geval, PHP sover dit losweg getik, is ook 'n bietjie slordig in daardie sin nie. Jy hoef nie spesifiseer as die programmeerder wat hierdie funksie gee terug. Jy sal hê om werklik te kyk by die kode om uit te vind wat. Of lees die kommentaar of die dokumentasie. So plus punte en minuses van hierdie soort besluite. Maar ek het nie om te sê die sleutel woord, funksie. En wanneer ons leer JavaScript in 'n paar weke ons gaan dieselfde ding sien weer, maar dit is dieselfde idee. Die naam van die funksie, sy argument of argumente of die gebrek daaraan, en nou hier is die implementering daarvan. So ek gaan 'n paar hoeke net sny wees dramatiese vir net 'n oomblik. Maar ek gaan om voort te gaan en sê dit. Dit is hoe ek kan laai 'n lêer in 'n skikking. Daar is 'n funksie in PHP genoem lêer. Jy gee dit die naam van 'n lêer. Dit gee aan jou terug 'n skikking, binne waarvan elke lyn van die lêer. Van nul, een, op die up om n minus 1 lyne. Dit is dit, reg? Daar is geen f lees. Daar is geen f get s. Daar is geen persent s. Daar is geen hoofpyn. Daar is geen feof. Al daardie dinge waarmee jy is stoei miskien, met p stel vier en vyf, gaan weg. So ek lees net die lyne in die lêer, en dan weet jy wat? As ek wil Itereer oor daardie woorde, Ek kan doen, vir elke lyne as lyn. Onthou dat dit was soort van 'n slim manier iterating oor 'n skikking, indeks deur-indeks, en op elke iterasie roeping die huidige lyn, dollar teken lyn. En hier gaan ek om te gaan en sê tafel, bracket, lyn, kry waar. Met ander woorde, dit is hoe ek voeg in my hash tafel in PHP. Ek sê dollar teken tafel, wat is my assosiatiewe skikking wat was leë per die reël van die kode bo. Ek het toe indeks in dit nie, met behulp van 'n aantal, maar letterlik die gebruik van die term wat ek omgee. Miskien is dit die appel of peer of piesang of wat ook al, maar spesifiek ek kruip in dit wil ek vroeër voorgestel. Ek neem die naam van my assosiatiewe skikking, en dan het ek quote unquote gebruik in die vierkantige hakies met 'n string, in plaas van 'n werklike nommer. En so dit is dit. Die vrag funksie gedoen word. Sodra dit lus iterate, het ek alles in die hash tafel. Nou klein disclaimer, daar is 'n paar dinge wat ek nodig het om vas te stel. En die weergawe wat ek sal post aanlyn sal al die nuanses het, maar dit is meestal net gaan om 'n paar te wees foutopsporing en 'n paar klein tweaked. Maar dit is inderdaad die kern van dit. As ek nou wil implementeer die funksie genoem kyk, wat 'n verwag woord as sy argument, hoe kan ek gaan om dit te doen? Wel, ek net gaan om te sê, as binnekant van my tafel, by plek woord As is ingestel. So as daar is-- eintlik, jy weet wat? Ek is van plan om dit te doen in 'n bietjie van pseudokode. Maar die idee is dieselfde. As dit waar is gelyk, terugkeer waar. Alles reg. Else-- jy soort van kan sien waar dit is going-- vals terugkeer. Gedoen. Check gedoen word. Pretty nice, reg? En so wat is dit regtig om by? En dit ook, sny ek 'n paar hoeke. Kyk na die weergawe aanlyn vir al die effense nuanses. Maar dit is die kern van dit. Indeks in jou assosiatiewe skikking, a.k.a. Hash tafel, kyk of daar nie 'n waarde daar, as dit waar, en indien wel, terugkeer waar. Dus het ons Uiteindelik af al die kompleksiteit. So soort van gees waai, reg? Ek sal nie die moeite afwerking met los, want in fact-- oh, jy weet wat? Ja, laat dit voltooi met los. Los in 'n hash tafel kan kyk soos funksie los, terug te keer. OK so dit is los. Want daar is niks om te los, reg? Daar is geen malloc. Ek het nie uitdruklik vra die bedryfstelsel vir enigiets. Ek het net begin die gebruik van veranderlikes. En so ook dit is 'n manifestasie van kenmerke van 'n hoër vlak tale. So weer, die meeste van hierdie kwartaal ons het al hier te doen af met C. Super lae vlak. Jy kan die rekenaar se geheue te sien. Jy kan enigiets raak jy wil in RAM jou rekenaar, vir 'n beter of vir slegter. Hier gaan ons om op te gee dat die krag. Maar my god, kyk hoe veel minder code ek geskryf het. In werklikheid, as ek nie praat en praat oor my tik, ons sou gedoen met hierdie voorbeeld vyf minute gelede. So, wat is die prys wat betaal word? Wel, laat ons neem 'n blik. Kom ons neem 'n blik. Ek gaan om voort te gaan en uit te voer CS50. Laat my toe om eers te gaan in voorbeelde vandag se waar Ek het die tekste gids as tevore. Ek gaan die oplossing hardloop dat dit kom met die probleem sit vyf genoem speller, wat in aanmerking CS50 se. En ek gaan om dit te doen op iets groot soos die King James Bybel, Net sodat ons regtig sit die personeel oplossings vir die toets. Nou soms die internet is 'n bietjie stadiger, 'n bietjie vinniger, dalk 'n rukkie neem om te blaai. Maar dit het 'n totaal van 0,56 sekondes te spel check die King James Bybel met behulp van die personeel oplossing. So redelik goed. Joune dalk veel stadiger wees, en dit is heeltemal fyn. Maar dit korrek is hier. So wat is die personeel oplossing. As ek gaan in en skoon te maak die PHP weergawe. En ek gaan 'n bietjie te doen soos bak show ding. Ons gaan die kode wat ek geskryf neem vroeër, so dit is perfek korrek is. Omdat die kode wat ek geskryf het nie gaan perfek korrek te wees nou net. Maar as ek die PHP weergawe, wat moet ek gee vandag? Het my vyf minute om implementeer p stel vyf, ek eis. Wat is die prys het ek betaal? Ja. GEHOOR: Speed. Spreker 1: Speed. Wat bedoel jy? GEHOOR: Dit gaan langer neem. Spreker 1: Alle reg. Kom ons kyk. Dit gaan langer neem, nie om te skryf nie, maar om dit te doen. Ja. So kom ons probeer hierdie. So hier gaan ek voort te gaan en te doen PHP van speller, en omdat die lêer se genoem speller. So ek is nie die bestuur van die woordeboek, onthou, Ek hardloop die program genaamd speller. Ek gaan om te slaag in dieselfde lêer, King James die vyfde. Dit vlieg deur. Dit kan net die internet spoed, so moenie te veel in daardie lees. Maar dit voel nie meer vir seker. 1,26 sekondes. Nou dit is nog redelik damn vinnig, reg? En die enigste rede dat gevoel soos meer soos drie, of vier, of vyf sekondes, dit is net omdat die internet is wat stadig. Die rekenaar tyd was 1,26 sekondes, versus Ek dink 0,56. So meer as twee keer so stadig. Nou dit is nog steeds pretty darn vinnig, maar dit is 'n manifestasie van, wel, wat presiese prys. Omdat ons die interpretasie in die kode reël vir reël, en dat die program PHP is die lees van my kode bo na onder, links na regs, dit het meer denke te doen. Dit het soort omskep dit binne homself die ooreenstemmende masjien kode op die vlieg, so te sê, selfs al is die meganika is 'n bietjie anders. In plaas van net voed die Intel CPU die rou nulle en ene dat dit verstaan ​​native. So absoluut, hande af, het ons 'n prys betaal. En kode geskryf in 'n taal soos PHP is geneig om stadiger. Maar my god. So nou toe ek my speltoets lêer, spandeer ek 'n ekstra 0,7 of so sekondes vs 20 uur te implementeer 'n vinniger speltoetser, reg? Dit is soort van 'n kompromis. En as jy net begin p stel vyf, kan nie 20 uur. Dalk veel minder as dit wees. Maar dit is 'n kompromis, vir die ware. En as jy 'n baie groot kode op data-stelle, of op selfs ouer hardeware, daardie soort verskille kan beslis voeg. Enige vrae wat tot dusver? Ja. GEHOOR: [onhoorbaar] Spreker 1: Jammer, kan jy sê dit weer? GEHOOR: [onhoorbaar] Spreker 1: Jy gee tyd. Wel, so ja. Jy spaar tyd deur nie met dit saam te stel, as dit is wat jy vra. En inderdaad, in CS50, die meeste van die programme, selfs al is hulle 'n rukkie kon neem om te skryf, hulle is relatief kort. Paar dosyn, paar honderd lyne kode, en so saam te stel wat hulle redelik vinnig. Maar wanneer jy begin skryf groter programme, soos as jy Microsoft is of jy Google en skryf baie groot programme in C, of ​​C ++ of soortgelyke saamgestel tale, kan baie sekondes, of selfs minute of langer om stel miljoene reëls van die kode. En daar ook dat verskil gaan optel. En in die feit, wanneer ons oorgang vandag dieselfde dag vandag op die web programmering met behulp van PHP, is jy gaan om dit te vind net soveel meer aangenaam kode te skryf wanneer jy nie hierdie dom doen stappe soos verandering in jou terminale venster, tipe make hello, re hardloop dit, herlaai die venster. Net so baie stupid meganiese stappe wat net in die manier van doen die interessante, die pret werk. En inderdaad ons gooi wat weggedoen het met PHP. En ons kan kommunikeer met dit vinniger. Ja. GEHOOR: [onhoorbaar] Spreker 1: Natuurlik. Kan ek verduidelik wat dit beteken om geïnterpreteer word? Wanneer jy 'n taal te stel soos C, dit gaan soos ons sê masjien kode, nulle en ene. En Intel besluit jaar gelede dat sekere patrone van nulle en ene verteenwoordig Daarbenewens of aftrek, of druk, of ander basiese operasies. In die wêreld van 'n taal geïnterpreteer soos PHP, of JavaScript, of Python, of Ruby, of trosse ander, in plaas iemand geskryf het 'n interpreter-- in hierdie geval, dit is ook 'n beroep PHP, identies aan die Naam van die language-- wat in wese het 'n groot lus in dit wat iterate oor al die lyne van die kode dat ek voer dit as insette, soos hallo dot PHP, of 'n woordeboek dot PHP. En dan kan jy dink van hul groot lus as met 'n baie van toestande. En dié toestande sê, as die mens het die navraag vir skriftelike, begin doen sy of haar kode weer en weer. Of indien die mens het geskryf die reël van die kode, As slegs voer hul volgende reël voorwaardelik. So dit is werklik soos die interpretasie dit in 'n menslike sin, lyn deur die lyn, en wat net neem tyd. Dit neem oorhoofse. En so dit is 'n price-- goeie question-- ons betaal. So kom ons doen 'n ander demo dit is 'n bietjie meer dramaties. Daar is, wil ek sê, 'n ball hierdie by 'n 90% waarskynlikheid van die versuim verskriklik, maar jy sal verbaas wees met 10% waarskynlikheid. Sodat ons elke jaar probeer om dit te doen, waardeur ons probeer om 'n program wat gaan deur te skryf probleem gestel nul, waarvoor jy het voorgelê jou telefoonnommers en 'n baie ander demografiese inligting, en ons programmaties stuur jou 'n SMS-boodskap. En dan is almal se selfoon begin piep of vibreer, en dit is net ongelooflik, want Wel, kyk na wat rekenaars kan doen. Dit werk selde korrek dit lyk, 'n groot deel want ek gewoonlik kry die swartlys deur Gmail of 'n ander diens vir eintlik probeer om dit te doen op skaal. Maar funny ding is ook, want ons nie almal nie hier vandag, pret feit dat die laaste keer dat ons probeer om hierdie twee jaar gelede, Ek dink ek het 'n program wat sit in 'n lus iterating oor al die studente in die klas, en elkeen van hulle 'n SMS-boodskap, en dit het gesê iets soos, Hoekom is jy nie in lesing? Liefde, CS50 bot. Jy het geen idee hoeveel apologetiese en soort pynlike e-pos Ek in reaksie van die ontvang N minus 100 mense wat nie hier was daai dag. En selfs snaakser, meer skande story-- jy weet, laat dit daar. Dit is reeds op video 'n paar jaar terug. So sal jy my gou sien skryf 'n lus vir die, waardeur dit is baie maklik om 'n fout in die skryf lus, soos wat die eerste keer deur die lus, jy stuur 'n SMS-boodskap. Die tweede keer deur die lus ek moet 'n mens meer teks boodskap gestuur het, en dan nog een teks boodskap, en 'n meer. Maar dit blyk as jy 'n tikfout maak wanneer die programmatuur, soms moet jy kan programme wat 'n mens stuur skryf SMS-boodskap, dan twee sms-boodskappe, dan drie teksboodskappe aan almal wat 'n SMS-boodskap wat reeds ontvang het. En soos jy weet, om iets te doen, plus iets plus iets plus iets is groot O van 'n baie van sms-boodskappe, of N vierkantig of by $ 0,10 'n SMS-boodskap, $ 20,000. Gelukkig het ek getref Control-C voor daardie gebeur het, maar ek het skuld ten minste een jou voorgangers $ 20 vir die 200 'n paar vreemde teks boodskappe wat, nie net na sy selfoon, maar ook was dit soos 'n ouer telefoon flip sodat dit graag gestoot uit sy geheue elke ander persoonlike teks boodskap wat hy het eintlik gekry. So het ons een doel vandag, nie om dit te doen. Miskien draai op die vliegtuig af. Alles reg. So laat ons gaan in 'n program hier callled-- dat ek die teks sal roep dot PHP. En in advance, het ek twee lêers het hier. Ek 'n lêer vir net personeel gemaak dat is het al die personeel se inligting, al die name van die kursus se webblad. En dan vir nou is ek net sit sommige vals nommers 555-1212. So het hierdie sou nie eintlik gaan oral. Maar kennis van die binnekant van hierdie CSV, wat ons gepraat oor vlugtig voor in die konteks van die lêer IO. Wat is 'n CSV-lêer? Kommas geskei veranderlikes. En dit is soort van soos 'n baie liggewig databasis, as jy wil. Daar is soort van soort vier kolomme in hierdie lêer, en daar kronkelende, maar die kommas in wese kolomme in die lêer te verteenwoordig. Die eerste kolom is die TF of naam CA se. Tweede kolom is hul laaste naam. Derde kolom is hul telefoonnommer. En vierde kolom blykbaar is-- vierde kolom is blykbaar wat? OK, so dit is hul draer. So Verizon, Sprint of nie, of wat nie. En as ek vroeër misspoke, CSV. Kommas geskei waardes is CSV hier. So wat kan ek doen met hierdie? Wel, dit is net 'n groot teks lêer, en dit is soort van 'n lang, reg? Soos dit gaan soort van irriterende. En dit blyk egter dat as ek wil 'n SMS-boodskap, laat se stuur sê Alex hier. Laat my gaan in my browser en die uitgang van die volle skerm net so kan ek heen en weer skakel. Dit blyk uit, laat ons sien, as ek gaan in hier en teken in Gmail, alles reg. Moenie kyk na hierdie deel. Net ek kry om te sien. natuurlik die Livestream kan steeds te sien wat ek doen. Alles reg. So hier is net Gmail met Rekening John Harvard se. So as ek wil 'n stuur SMS-boodskap aan Alex, Ek kan natuurlik komponeer 'n boodskap. En dit blyk, en ek het dit getoets met Alex voor hier, sodat jy kan 'n sekere domein voeg noem om mense se telefoonnommers, want daar bestaan ​​in die wêreld dinge genoem SMS na e-pos poorte. Wat is 'n fancy manier van alle gesê van ons wat selfone wat het telefoonnommers, natuurlik, daar is waarskynlik vir jou diensverskaffer, 'n sekere agtervoegsel soos by Vtext.com vir Verizon teksboodskap dot com, wat jy kan voeg by jou eie persoonlike telefoonnommer, en dan jy of vriende, of jou ouers kan teks wat jy op daardie spesifieke adres. En Verizon het 'n bediener, 'n e- bediener, wat oor die ontvangs van hierdie e-pos, kyk na die numeriese deel en dan gebruik alles wat spesiale bedryf magie hulle moet eintlik stuur dit uit oor die luggolwe jou spesifieke sel foon. Nou is dit lekker, want ek doen nie regtig weet hoe om 'n SMS-boodskap of die kode nog skryf vir my selfoon, en jy kan presies doen wat vir 'n finale projek, maar vir nou al Ek het my laptop hier. So ek wil Itereer oor daardie CSV lêer, lyn, deur die lyn, deur die lyn, deur die lyn, gryp elke telefoonnommers die personeel se en hulle draer en programatically, koppel, dit is, verbind die telefoon nommer met die toepaslike domein en dan stuur 'n epos. So dit is 'n baie stappe. En voorspoed doen wat in C. Dit is 'n nagmerrie van 'n situasie om 'n lêer oop te maak, om dit te lees lyn, deur die lyn, deur die lyn, as jy sien, of dalk binnekort te sien met die probleem sit vyf, indien nie probleem stel vier, en dan dinamies koppel twee stringe saam, want in C, twee snare te neem en hulle kombineer, wat jy doen minimaal moet waarskynlik doen? Jy moet meer geheue te verklaar, reg? En vra, malloc, kan ek meer geheue? So ek kan die helfte van hierdie plaas hier, die helfte van hierdie hier. Dit is net so baie stappe. En deur daardie punt wat jy verloor het belangstelling in die dom bietjie demo waar jy maak almal se selfoon beep. Kom ons doen hierdie soort van PHP styl, waardeur ons net begin die gebruik van meer van daardie kombuis wasbak. En die idees is fundamenteel dieselfde, maar ons hoef nie te bekommer te veel oor wat laer vlak. So laat ons sien hoe ek kan gaan om dit te doen. En net so dat ek dit nie doen nie herhaal foute van die verlede, Ek het 'n paar notas geskryf vir myself hier. En laat ons sien of ek ons ​​kan loop deur 'n paar van die fundamentele stappe, en dan ter wille van die tyd se ons sal miskien sny n paar hoeke in die einde. Ek gaan om voort te gaan en te doen oop bracket PHP hierdie lêer begin. En ek gaan om voort te gaan en doen dit. Lêer te hanteer, soos u sal gou sien, eintlik noem 'n funksie genoem f oop. En onthou dit open 'n lêer. En die kwotasie, unquote, r beteken wat, weer? Maak dit net vir die lees. Nou in p stel vir u dit gedoen het. En hanteer kan enigiets wees, fu, bar, bas, enige veranderlike naam. Maar oor die algemeen 'n rekenaar wetenskaplike sou 'n oop lêer noem, gee jou 'n lêer te hanteer, iets om te hou op om so te praat. Ek gaan net om te doen sommige foutopsporing. So as die handvatsel vals is, net soos in C, ek gaan om iets te doen soos, Kon lêer nie oopmaak, backslash n. En dan is ek net gaan om voort te gaan en die uitgang. En dit blyk, in PHP, Ek is nie in 'n funksie. Daar is geen hooffunksie hier. Sodat ek nie terugkeer nie, per se. Ek verlaat. Wat is basies dieselfde ding. En ek verlaat met 'n y waarskynlik. Een beteken net 'n fout van 'n soort. Dit is nie-nul, so dit is 'n fout. Alle reg, so as ek hier af nou in my program wat ek die lêer oopgemaak het. Ek gaan om voort te gaan en verklaar 'n skikking met die naam adresse, en in C ek wil hê om die ken grootte van die skikking in advance, reg? Of ek sou nodig om hierdie te verklaar is 'n wyser, en gebruik dan malloc. En dan elke keer as ek lees deur 'n ander ry in die lêer, Ek gaan moet malloc meer geheue, malloc meer geheue. Dit is 'n pyn in die nek. En gelukkig, PHP, en Ruby, en Python, en JavaScript, hulle sal jou skikkings groei outomaties vir jou. Nie meer malloc. Nie meer geheue bestuur. Die rekenaar sorg dat. Maar die prys wat jy betaal. Dit is 'n bietjie stadiger. En vir 'n program soos hierdie ons is nie van plan om op te let. Ons gaan 100 SMS-boodskappe stuur. Byvoorbeeld nie van plan om dit te voel. Dit is regtig net begin saak taal van jou keuse wanneer jou data of jou programme kry regtig, regtig aansienlike, soos wat die geval meer so wees met ons web-gebaseerde dinge. Maar vir nou, laat ons vooruit. Terwyl dit blyk daar is 'n funksie in C genoem f te kry CSV. Lêer te kry CSV, wat neem 'n lêer handvatsel as sy argument, en dit verder gaan dan ry deur ry deur ry, om te lees in 'n ry. So is dit net lees 'n lyn van teks van die lêer. Maar wat is lekker oor hierdie funksie, dit nie net hand vir my 'n reël van die teks. Dit lyk vir diegene kommas, en ontleed die lyn. En om die lyn te ontleed beteken om te verdeel dit op 'n sekere waardes in hierdie konteks. Met ander woorde, dollar teken ry is 'n veranderlike wat gaan vir my 'n klomp van die indekse gee. Dit gaan die wees eerste kolom in my CSV. Dit gaan die tweede wees kolom, dit gaan na die derde wees, en dit gaan die vierde te wees. Omdat onthou, en Excel die nie saam die laaste keer dat ons dit gedoen het, maar as ek dit aflaai personeel dot CSV. Oeps, herbenoem nie. As ek aflaai personeel dot CSV, en probeer om dit oop te, Ek het reeds registered-- oh ek nie werk Excel sedert die laaste keer. Jy sal sien dat personeel dot CSV, ek het vier kolomme. So toe ek lees in die eerste ry vir Abby hier dollar teken ry 0 is Abby, dollar teken ry een is Lyons, dollar teken ry twee is haar nommer, en dan draer van haar selfoon. So dis al. En dit is mooi, want ek hoef nie te nou uitvind waar al die kommas eintlik. So ek gaan om voort te gaan en doen dit, gegewe dat definisie Ek gaan om te sê dat haar naam is in ry bracket nul, soos belowe. En ek gaan grab-- en eintlik, jy weet wat? Ek gaan nie te bekommer oor haar naam, in hierdie geval. Ek gaan dit makliker te hou. Ek gaan om te doen haar nommer is in ry bracket twee, dink ek. En haar draer was in waar? Ry drie, die een oor. So niks nuuts daar. Dis net nul kruip in 'n skikking. En nou, ek gaan na die volgende te doen. As die draer gelyk gelyk AT & T-- Ek gaan net om 'n loop-- het Ek wil 'n e-pos te skep adres wat lyk soos hierdie. Dit gaan wees 617-555-1212 by, wat is dit, text.ATT.net, is wat ek wil doen. So hoe kan ek dit doen? Ek gaan die volgende te doen. Haar adres is gaan haar nommer wees, en nou, laat my gaan voort en doen dit. Dit is 'n paar funky sintaksis. Ek kon die persentasie s truuk te doen, maar ek kan eintlik net dit te doen. So dit is 'n PHP ding, maar Kom ons kyk wat ek doen. Dollars teken adres op links, net 'n veranderlike. Gee my 'n veranderlike. Ek het nie die tipe spesifiseer. PHP sal dit uitwerk. Op die regterkant, Wat is die tipe data van daardie hele ding op die regterhand? Lyk soos 'n string, want daar is dubbele haal die ver links en heel regs. Nou is daar 'n paar funky nuwe sintaksis hier. Daar is die krulhakies, en die dollar teken nommer. Maar neem 'n raai wat is dat sintaksis waarskynlik vertel PHP te doen vir my? Ja. Voeg net die waarde daar. Sodat daar geen persent s. Ons kon druk f, of s gebruik Druk f of iets soos dit, maar PHP en 'n baie hoër vlak tale, jy gaan om te sien wat jy kan doen dieselfde ding funksioneel, miskien ses verskillende maniere. En so het dit begin te raak 'n saak van die ontwerp of styl. So dit is net 'n kriptiese soek manier sê, gee my 'n e-posadres, maar plug-in die nommer in tussen hierdie krullerige draadjies. En die krulhakies sal nie beland in die finale adres. Nou kan ons slaan oor 'n paar van hierdie lyne ter wille se tyd. So as 'n draer gelyk gelyk verHorizon-- Oeps, Verizon-- ek iets wil doen baie soortgelyk, waar die adres kry, quote, unquote, nommer by text.ATT.net. En dan kan ek dieselfde soort te doen ding vir die res van die draers. Maar ek sal net dot, dot, dot doen vir nou. En nou, laat ons veronderstel dat Ek wil verskeidenheid by te voeg, te stoot. Ek wil toe te voeg tot die skikking, genaamd adresse. Hierdie adres, dit is hoe jy iets toe te voeg tot 'n skikking in PHP. Jy hoef nie te malloc doen. Jy hoef nie na die verskeidenheid grootte. Jy moet net sê skikking, stoot. Wat wil jy wat array push-- wil jy iets op te stoot? Adresse. Wat jy wil om te stoot op adresse? Adres. En in werklikheid, as jy regtig wil om slim te wees, sommige sintaktiese suiker vir hierdie, so te sê, wat beteken net hoe kan jy dit doen in die mooier manier sou wees om dit te doen. Dit het te die effek van groeiende die adresse verskeidenheid deur die grootte een en dan plop dat bykomende e-pos adres in dit. Ja. GEHOOR: [onhoorbaar] Spreker 1: 'n tikfout op die anders if-- oh, draer. Dit is OK. Dit sal ook nie graag my versuim om implementeer deel van hierdie program later. Maar dankie vir die vang. Een fout. Dankie. Ons wil om dit te Vtext.com wees. Ja. Alles reg. So waar laat dit ons? Ons het die kode om die lêer oop te maak geskryf. Ons het 'n lus om Itereer oor die rye in die lêer. Ons het kode wat bydra tot my skikking, een op 'n tyd, het die reg geformateer e-posadres. So al wat werklik bly is om te stuur 'n e-pos aan elkeen van hierdie mense. So ek het vooruit gegaan en gereed gemaak myself as volg. Wat gaan ek hier is-- doen en laat gaan voort en slaan 'n paar werklike kode, wat lyk soos hierdie. So hier is die pre-gebakte weergawe wat ek vroeër geskryf het. En sien ek klaar implementering Sprint. Ek het klaar die implementering T-Mobile. Ek het klaar die implementering Virgin Mobile. En Ek sal om verskoning vra in advance. Daar is 'n paar draers wat sommige studente in die klas dat ek nie die moeite deelinventaris in die toestand as hier. So nie al die tekste sal uitgaan. Maar laat ons sien wat anders wat ek nodig het om te doen. Ek maak die lêer, net soos in p stel vier. En dit is 'n nuwe sintaksis. En ons sal sien 'n bietjie bietjie van hierdie verloop van tyd, veral met die p stel sewe en agt. Maar dit is vir die skep van sintaksis 'n spesiale tipe van struktuur. Dit blyk daar is 'n biblioteek wat kom met PHP, genoem PHP mailer. Sy doel in die lewe is om programmaties e-pos stuur. Dit is code iemand anders geskryf dat maak dit vir ons makliker om e-pos te stuur, sodat ons nie hoef te hou heen en weer om Gmail gaan, en plak in mense se e-pos adresse. Daar is 'n hele klomp van die lyne hier wat eerlik, ek net soort van gekopieerde en geplak van die dokumentasie. En in die feit, as jy nuuskierig, ek het alles verlaat van die URLs van die dokumentasie in die kode wat ons sal later plaas. En sien dat onder die dinge wat ek doen is, ek vertel hierdie biblioteek, gebruik bediener se Gmail, reg? SMTP ons gepraat kortliks oor wanneer ons was aan die Yale oor die feit dat eenvoudige pos oordrag protokol. Dit is die protokol wat bedieners wat gebruik word om e-pos te stuur, en that's-- Gmail het een van daardie. A hawe, dit is die TCP-poort nommer. Dit is goed as jy het nie gesien voor 587. Weet net dat die dokumentasie. Hier is my gebruikersnaam. Ek gaan die CF50 bot gebruik. En in 'n oomblik, ek is net gaan om te tik in die bot se werklike wagwoord. En dan af hier, sien wat oorbly. Ek het my van adres word Bot by CS50.net. Ek dink ek sal nie spyt stuur van 'n SMS-boodskap na 800 mense wat sê, mis jou, liefde CS50 bot, miskien vir diegene wat nie kon maak wat dit vandag. En dan in lyn 76, wat moet ek doen? Hierdie soort lyk soos C. So vir i gelyk 0, n equals-- nou tel is 'n nuwe. Dit blyk dat as jy wil te kry die aantal van die dinge in 'n skikking, jy hoef nie om dit nie meer dink nie. Jy kan net vra funksie genoem telling, en dit sal vir jou sê hoeveel adresse in daardie skikking. En dan gaan ek voeg die adres aan die e-pos. En ek weet dit uit die gebruik van die dokumentasie. Daar is 'n add-posadres funksie. En nou is daar sien is 'n stuk van sintaksis. Ons het dit gesien voor in C. Soortgelyke in die gees. Jy kan dink dollar teken pos as 'n veranderlike, wat dit is. Maar dit is 'n struct binnekant van wat nie net eiendomme, veranderlikes as jy wil. Maar dit blyk dat in PHP, wat is 'n objekgeoriënteerde programmering taal, soos Java as jy het APCs. Dollar-teken pos, as jy wil aan- dit het ook funksies binnekant van dit, of metodes. So, dit is om te sê dat spesiale PHP mailer biblioteek, as ek 'n veranderlike daarvan het, as ek wil 'n funksie noem kom met daardie biblioteek, vir doeleindes vandag se net jy weet die pyl notasie te gebruik. Daar is geen dot-notasie. Dis net die pyl. Maar dit is nie 'n wyser. Dit is net geleen van C se sintaksis. So bel voeg adres binnekant van voorwerp of veranderlike se biblioteek. Alles reg. Dit is die magiese lyn. Dit is hoe ek 'n e-pos te stuur. Dit is die ekwivalent van die opening Gmail, tik dit uit en slaan stuur nie. Maar dit gaan plaas stuur 'n e-pos na hierdie adres met hierdie liggaam, uit die CS50 bot. En nou sleutel lyn. Hierdie lyn is afwesig in 2011 soos as ek dink ek verlede probeer om hierdie. Dat die lyn daar, natuurlik, goedkeuring van die adresse. So logies, as ek nie die adres nie duidelik na elke iterasie, die eerste e-pos of SMS-boodskap gaan na Alice, die tweede gaan Alice en Bob, die derde gaan na Alice en Bob en Charlie, vandaar die baie duur fout Ek daardie jaar gemaak. So laat ons sien. Is daar enige vrae voordat ons stuur jou al 'n teks boodskap met 10 persent waarskynlikheid? Enige vrae? Alles reg. Kom my hier en verandering gaan die wagwoord om wat moet werk, sal waarskynlik kry swartlys geplaas word deur Gmail. Sodat hulle kan gaan nie alles uit, aangesien hulle waarskynlik hou nie van ons te stuur e-pos 800 in 'n lus vir die alles op een slag. Want dit is nie veral menslike gedrag. O, ek gaan 'n ander ding te verander. By die top, ek gaan sent-- verander die lêer om studente dot CSV. En ek sal dit nie oopmaak nie, maar dit is 'n identies CSV met nie 100 personeel, maar 800 studente, net van Harvard, Yale, want het Oktober reses hierdie week. En dit lyk asof soort van 'n ruk ding om te doen om almal van hulle teks waarom hulle is nie in die klas op vakansie. Dit is OK. Net Harvard studente vandag binnekant van die lêer. En nou, laat ons gaan terug my terminale venster. Ek is soort van senuweeagtig. OK so nou gaan ek in die om te gaan gids, en PHP teks dot PHP. Hoe oor een dapper vrywilliger? So ek het nie hierdie wil op my. OK, kom op op. Wat is jou naam? MAYA: Maya. Spreker 1: Maya. Kom op, Maya. Alles reg. Kom ons kyk of dit werk. Ek het my eie e-posadres in die file-- my eie telefoonnommer in die lêer, sodat hopelik sal ek die een so goed te kry. Bly te kenne. MAYA: Net so. Spreker 1: So al wat jy hoef te doen, is druk Enter 800 SMS-boodskappe stuur, as ek nie skroef. Lekker. Kon 'n rukkie neem, statisties, totdat ons 'n e-address-- 'n SMS-boodskap wat in die kamer nou. Kom ons vertoef en sien. GEHOOR: [fluit] Spreker 1: O, ja. GEHOOR: O, Gotcha. Spreker 1: Vir loops are-- hierdie is nie as gevolg van stadige PHP. Dit is stadig as gevolg Gmail is ons wurg en nie laat ons meer as stuur soos een e-pos per sekonde. Enigiets? Dit was 'n harde ding vir my om te toets op huis met net my en my 'n telefoon, so. Is wat hopelik uit die bot? Ja? Geen? Sê ja. Geen? Dit is van 'n vriend? Ongemaklik. OK. Redelik seker dit is al die werk. Uh Oh. Hulle black-- O, wag 'n minuut. O, jy weet wat? Een oomblik asseblief. Slegs Maya en I-- Mia, was dit? MAYA: Maya. Spreker 1: Maya, gaan weet wat ek verkeerd gedoen het hier. O, wag 'n minuut. Ek dink ek het net gestuur 100 SMS-boodskappe te 555-1212. Staan by. Ek kan enige jaar nie wen nie. OK. Maya? Los wat in post-produksie. Dammit! Volgende uit adres. OK, staan. Jammer. Dit is pynlik elke jaar. OK, een oomblik. Hierdie is goed. Ek plaas gaan om dit te doen. Druk adres. OK, staan. Print adresse, bracket i. Ja, ek hou daarvan. Dollar sign-- OK ek sal verduidelik wat ek is doen in 'n oomblik, nadat ek hierdie het hardloop. Elke jaar. OK, hier gaan ons. Ek het just-- en ek wil nie tot almal se telefoonnommer te wys, maar Maya kan bevestig met 'n knipoog van die kop, dat sy sien almal is telefoonnommer in die klas ek gaan om te kopieer na 'n program genaamd Gmail. En as in Gmail, doen wat ons wil sê? Mis jou. Love-- dit is nie vir my nie. Ek het nog nie eens getref nie stuur nie. So laat ons gaan voort en doen hierdie, as ek kan in zoom. OK. So ek gebruik 'n program genaamd Gmail nou. As Maya, sou jy graag Klik op die knoppie stuur Ons sal simuleer wat dit kode moet gedoen. Enigiets? [Biep] GEHOOR: Yep. Spreker 1: Ja? Redding? GEHOOR: Yep. Spreker 1: mis jou. En ek gaan om uit te stuur die res. Ek het die helfte, want ek het nie gedink Gmail sou laat diegene gaan deur. So onthou net, vandag is die dag dat jy geleer dat ek Gmail kan gebruik. Dit was skrikwekkend. 'N Groot applous vir Maya. Dankie. Alle reg, sodat. wat [Biep] Ons het 'n paar biep, ja? Alles reg. Nou gaan ek regtig 700 ongelukkig e-pos terug van klasmaats. So ten minste sal ons sien as dit was die moeite werd. So, wat het verkeerd gegaan? Ek sal uitvind wat het verkeerde na die feit, maar kyk net hoe maklik dit was om dit te doen in PHP. So, wat kan ons nou eintlik doen ons het hierdie uitdrukking van PHP. Dit was-- daardie aaklige was. Alles reg. So dit was wat moet uitgegaan. Dit is my toets vanoggend op my telefoon, werklike kiekie van my selfoon. Maar nou laat ons kyk waarom ons is eintlik die bekendstelling al hierdie dinge in die eerste plek. So die doel is nie om skryf hierdie programme wat word aan die command line, reg? So ek het 'n eenvoudige hallo program, het ek 'n bietjie program wat conditionals doen, en gebruik 'n lees-lyn en so meer. En in teorie, ek het net geskryf 'n program wat uitgestuur 800 sms-boodskappe, gee of neem 800. En dat die program was al nog steeds loop op die opdrag lyn. En dat van die kursus is nie die web, reg? Die doel is nou om te begin met wat ek eis is 'n makliker om te gebruik taal, daresay 'n meer kragtige taal in terme van die eienskappe wat kom met dit, om te begin skryf kode wat webblaaie genereer. So laaste tyd en verlede week, Ons het gepraat oor HTTP en HTML. En wat is lekker oor HTML is dat dit is net die suiwer teks. En teks is beslis iets wat jy kan druk deur letterlik bel die gedrukte f funksie, of die gedrukte funksie. En inderdaad, dit is wat PHP is nou gaan ons toelaat om te doen. So tussen die voorbeelde wat ons in vandag se bronkode, bykomend tot 'n paar van die kode dat ek sit daar 'n oomblik gelede Ons het programme soos hierdie byvoorbeeld. Froshims of Groentjiekonsert Binnemuurse Sport, was eintlik een van die eerste extracurriculars Ek het betrokke geraak met 'n jaar gelede. En my kamermaat en ek, met sommige ander kinders op die kampus, gebruik word om die program uit te voer froshims. Ek kry nou my sms-boodskappe. Nou, sodat ons, terug in die dag, so dit was 1996 of so, daar was 'n internet, maar daar was geen process-- daar was geen webwerf vir froshims. En so as jy wil aan te meld vir sokker of vlugbal of wat ook al, jy sou vul hierdie ding bekend as 'n stuk papier, en jy sal loop oor Harvard agterplaas, en jy sal dit skuif in die pos slot van die Proctor, wat was in Wigglesworth, een van die slaapsale. En dit was jy geregistreer is. En hy of sy dan Stel 'n e-pos aan jou hand, baie soos ek net gedoen hier met Maya, en dan sal jy bevestig word as hy geregistreer is. So was dit soos 'n lae hang vrugte, om so te praat. Dit was soort van dom dat wat ons gebruik papier vir hierdie. Ek wil hê ons moet in staat wees om om net te gaan op 'n webwerf, of het die eerstejaars gaan op 'n webwerf, registreer vir sport, en net outomatiseer baie van hierdie dinge deur om hul name en e-pos en so meer in 'n databasis. En in die feit, die heel eerste weergawe van die webwerf, die gebruik van super lelike HTML, dalk het gekyk iets soos hierdie. Dit was eintlik, ironies genoeg, meer verleentheid soek as dit terug dan. Maar ek het 'n programmeertaal. Nie PHP, maar eerder genoem Perl, wat is 'n ouer taal, maar baie soortgelyk in gees. En ek het net heeltemal geleer dit vir myself. En dit het my 'n rukkie om dit uit te vind, vra baie vrae van vriende. Maar die idees daar was presies dieselfde. Want wat regtig PHP is ontwerp vir nie die command line dinge ons het net gespeel met, maar vir die web ontwikkeling. Dit is regtig vasgebind in sy funksie stel om die web, soos volg. Dit is froshims. En as ek wou registreer in hierdie vorm, dit is nogal lelik, beslis nie, maar laat my gaan voort en 'n minder gemaklike student, en alles wat sport vir Matthews, klik Register. Wat ek wil in staat wees om te doen, is om inligting uit 'n vorm, nie aan bediener Google se soos ons het die vorige keer, heeltemal verneuk deur die gebruik van hul backend, ek wil my eie backend-kode te implementeer. Wat beteken skryf PHP kode wat woon op 'n URL daardie vorm data kan gestuur word aan. En dan jou kode, geskryf in PHP op 'n bediener, kan dan reageer op die gebruiker insette. Soos sy of haar naam, of comfort vlak, of dorm, en dan iets te doen met dit. In hierdie geval, het ek net dom gedruk dit uit teks, wat nie alles wat mooi. Maar jy kon beslis dink, as jy weet HTML, en jy sal gou weet hoe om te genereer HTML met die druk f, en druk, en soortgelyke funksies, kan jy beslis genereer 'n mooier webblad wat sê, hey David, jy nou geregistreer. Jy is 'n minder gemaklik student van Matthews, reg? Jy kan net gebruik om 'n hele klomp van% ses, of die krulhakies en dollar-teken notasie Ek gebruik 'n oomblik gelede, om teks wat is meer gebruikersvriendelik te genereer as dit nie. So laat ons neem 'n blik op hierdie een lêer. Froshim nul dot PHP lyk. Toe ek herlaai CS50 IDE, froshim nul lyk. Dit is froshim nul dot PHP. En wat doen jy op omtrent hierdie lêer? GEHOOR: [onhoorbaar] Spreker 1: Jammer, 'n bietjie harder? GEHOOR: [onhoorbaar] Dit is alles in HTML. En in die feit, dit is, want Wat is interessant oor PHP is dat dit ontwerp is te wees, vir 'n beter of vir slegter, vermeng met HTML-kode. En in die feit, selfs al is dit lêer, froshim nul dot PHP, het 'n PHP kommentaar op die top dit, dit is alles net HTML. Maar in teenstelling, as ek oopmaak, laat sê, registreer nul dot PHP, wat net 'n groot kommentaar op die top. Dit lyk te byna geheel en al soos HTML, behalwe vir wat? Line, wat, 21 lyk 'n bietjie vreemd. Maar let ek aangaan PHP af met oop bracket vraagteken PHP. Toe Ek het 'n paar dinge. En dan aan die einde van die lyn Ek het amper, vraagteken PHP. En dit is wat ek bedoel met vermeng. Jy kan HTML skryf dat jy net wil hê dat die bediener na spoeg uit. Maar as jy wil om iets te doen dinamiese halfpad deur die bladsy, soos voeg my naam of dorm of comfort vlak, Ek kan 'n funksie te gebruik soos gedrukte r, wat druk rekursiewe, wat beteken net druk hierdie veranderlike, opmaak dit maar jy wil. Dit is regtig nie vir menslike doeleindes, dit is net vir ontfouting doeleindes of diagnostiese. So dit is hoe ek dit gedoen het. As ek plaas gaan froshims twee dot PHP, sien dat die optrede van hierdie vorm nie geregistreer is nie nul dot PHP as die old-- die vorige een was eintlik. Maar dit is geregistreer twee dot PHP. So laat ons kyk na hoe hierdie een optree 'n bietjie anders. As ek gaan in weergawe twee. As hier, as ek registreer as David, min gemaklik, van dorm van Mathews, te registreer. So hierdie keer is dit gesê, jy geregistreer is nie, nie regtig nie. Kom ons kyk wat ek gedoen het hier. As ek kyk na register twee dot PHP, dit het 'n paar meer PHP-kode. Dit is 'n bietjie skoner, alhoewel dit steeds vou 'n bietjie lank op hierdie lyn. Let hier. Ek druk my HTML tag, my kop tag, my titel tag, die hoof, die liggaam. En dan begin ek om te sê dinge soos betree PHP mode. En sodat tag, oop bracket PHP-- vraagteken PHP sê, hey, bediener, execute-- interpreteer die volgende dinge as PHP totdat jy sien die einde tag. En selfs al is jy dalk nie weet nie ander PHP as jy tot dusver gesien het, jy kan soort van lees dit mooi intuïtief. As naam is leeg, of troos is leeg, of dorm is leeg, wat moet ek doen? Wat sê ek aan die gebruiker? Jy moet jou naam, troos, en dorm, en so meer. Anders, ek sê jy is geregistreer, goed nie regtig nie. En Ek sê nie regtig want daar is geen databasis. Ek is nie iets met die data te doen. Ek is net gooi dit weg vir demonstrasie doeleindes. Nou het ek soort van skimped oor lyn 22. Daar is meer sintaksis daar, maar dollar teken onderstreep post is 'n soort van interessant. En dit is wat is lekker oor PHP. In PHP, jy wat genoem word 'n paar super globale veranderlikes. Hulle is soort van nog meer belangriker as globale veranderlikes. En dit, al gekapitaliseer as sodanig, kom met PHP. So as jy 'n bediener wat 'n web server geïnstalleer, soos Apache, en jy die taal te installeer ondersteuning vir PHP, almal van 'n skielike jy kan begin met behulp van hierdie super globale veranderlikes in jou kode. En wat is lekker oor PHP is dat as jy net skryf 'n lêer wat eindig in dot PHP, sit dit op 'n web bediener, en dan moet jy 'n vorm in te dien om dit via die aksie tag en 'n vorm tag, dat die aksie kenmerk in die vorm tag, PHP en die web heeltemal figure uit hoe om te gryp al daardie sleutel waarde pare uit van die URL soos vraag merk q gelyk katte, dit sal uitvind hoe om q en katte. As jy 'n foto of 'n gebruikersnaam voorlê, of 'n wagwoord om soos Facebook, PHP sal uitvind vir jou waar al die data is. En dit sal net hand jy 'n assosiatiewe skikking genoem dollar teken underscore post, of dollar teken beklemtoon te kry, afhangende van of jy gebruik van get of post voorleggings. En dit sal jou net hand 'n super globale veranderlike, sodat as jy wil by die naam te kry wat die gebruiker via die web voorgelê vorm, wat jy letterlik net die naam sê van die super globale veranderlike, haal, unquote, naam. En quote, unquote troos, en quote, unquote dorm. En ons gaan in staat wees om te doen hierdie en soveel meer met PHP. En selfs al was dit 'n warrelwind blik op dit, ons sal duik in baie meer volgende week. Ons sal 'n databasis in te voer sodat jy eintlik is gaan begin met die implementering jou eie e-handel based-- soos website in net 'n week se tyd. So sal ons sien jy die volgende keer, en hoop jy het die teks boodskappe. Bye. [Speel van musiek] [Deuropening] Spreker 2: Hey. SPREKER 3: Wat gaan aan? Spreker 2: Wat doen jy? SPREKER 3: Werk op 'n probleem stel. Spreker 2: Nice. High Five. [High Five] Wat are-- uh, wat doen jy hier? SPREKER 3: Net hang uit. Net terug uit die gimnasium. Ek kon nie help nie, maar sien wanneer ons 'n hoë-fived, dat jy mooi growwe hande. Gaan jy na die gym? Spreker 2: No. Geen. SPREKER 3: Dude, kyk jy mooi groot. Wat sleg is, want almal weet 8-bal is die groot man op die kampus. Hoë-vyf. Spreker 2: Uh, nee. Nee, ek dink ek is goed. Ek dink ek is goed.