[MUZIKO Ludante] Parolanto 1: Ĉi tiu estas CS50 kaj tio estas la fino de semajno sep. Hodiaŭ estas eble kie ni vere instruas vin lingvoj. Ni enkondukis en la pasintaj kelkaj semajnoj HTML kaj CSS, nek de kiuj estas programlingvoj. Kaj efektive, eĉ se ni ne faris rigardi preskaŭ ĉiujn la etikedoj ke HTML venas kun kaj preskaŭ ĉiuj de la proprietoj kiuj CSS venas kun, jen speco de ĝi por HTML kaj CSS. Ni nur ĝenerale komenci supozante ke vi kompreni la ĝeneralan ideoj de etikedoj kaj atributoj, kaj paĝoj senditaj de kliento al servilo. Ĉar hodiaŭ ni komencas rigardi alia programlingvo, PHP. Ni tuj faros tiun super rapida. Ni ne tuj instruos vin PHP per, multe kiel ni ne aspiris instrui vin C, per, sed prefere programado. Kaj efektive, unu el la celoj por tiu kurso ne instrui vin C, aŭ HTML aŭ CSS, aŭ PHP, aŭ ajnan numeron de aliaj zumado vortoj aŭ akronimoj, sed prefere la komputiko kaj kiel programi fundamente. Kaj efektive, hodiaŭ ni komencas preni tiuj trejnado radoj ekstere ĉiuj pli per fluganta tra lingvo nomata PHP, kiel sekvas. Jen kion ĉi lingvo aspektas. Rezultas, ke ne estas bezono por ĉefa funkcio en programo skribita en lingvo nomita PHP. Tiel ke jam sonas iom simpla ol C, kun kiu ni estas konataj. Ĝi rezultas ke se vi volas deklari variablon, vi faras ĝin preskaŭ idente al C. Sed Tie estas klare unu diferenco tie kiam mi deklaras ĉenon, aŭ eble du diferencoj. Kio aspektas malsamaj? Publiko: La dolaro signo. Parolanto 1: Jes, ekzistas dolaro subskribi, kiun ni neniam antaŭe vidis. Kaj kio mankas? Yeah? Spektantaro: [inaudible] Parolanto 1: Jes, ne estas datumtipo. Do rezultas ke PHP estas kion ni voki loze tajpitaj lingvo, kie C estas forte tajpitaj. Loze tajpita nur signifas ke estas malsamaj datumtipoj, ekzistas kordoj, kaj ints kaj flosoj. Sed la komputilo figuroj ke ekstere. Vi la homa programisto ne devas scii ĝin. Do ĉiuj vi devi fari deklari variablon estas dolara signo, la nomo de via variablo, kaj tiam, ekzemple, citaĵo unquote, saluton mondo. Nu jen kion oni kondiĉo aspektas kiel en PHP. Ajna diferencoj? No. Do rezultas tiuj estas identaj. Kaj eble vi havas malpli branĉoj aŭ pli branĉoj, sed la sintakso turnoj el ekzakte la sama. Buleaj esprimoj povas mendeblaj kune. Buleaj esprimoj povas anded kune. Vi ankoraŭ havas ŝaltilojn. Eĉ se vi ne uzis tiuj, tiuj ja ekzistas en C kaj ili estas funkcie ekvivalenta en PHP. Kaj fakte, en PHP ili estas iom pli potenca. En C, oni povas nur kompari iuj datumtipoj kiel ints kaj signoj, dum en PHP vi povas reale kompari plena elnestiĝas kordoj sen devi zorgi pri punteros kaj similaj. Do jen por buklo. Tiu estas nur _pseudocode_ kodo, se vi volas. Sed strukture ĝi estas identa al C. Jen dum ciklo, _pseudocode_ therefore-- identa al C. Jen do dum loop-- identaj. Kaj do tie estas ia tiu padrono tie whereby Tie estas kelkaj aliaj sintaksaj ĉefaĵoj ni ja tuj vidos. Fakte, ĉi tie estas bela maniero en PHP per kiu, se vi volas persisti super tabelo, kaj vi ne volas salti tra la mensa kaj sintaksa aros de havado int i egalas 0, i malpli ol n, i plus plus-- kiu estas nur multajn ĝenajn sintakso. Vi povas diri iom pli fluide por ĉiu nombroj kiel nombro, kie en tiu kazo dolara signo nombroj, Mi supozas, estas kiel tabelo nomis nombroj. Kaj poste mi supozante numeron, singulara, tuj estos variablo. Kaj kion PHP faros al mi kiel mi persisti super tiu buklo estas, sur ĉiu ripeto, ĝi tuj ĝisdatigi la variablo nombro esti la Ith elemento en nombrojn, pluralo. Do nur pritraktas ĉiujn de tio por mi. Neniu kvadrataj krampoj, neniu dolara signo, Neniu punktokomoj. Estas nur iom pli simpla. Nu, se vi volas tabelo, rezultas vi povas fari ion bela simila al C. La sintakso estas iom malsama. Sed ĉi tie estas tabelo nomis dolaro subskribitaj nombroj. Kaj mi uzas, en PHP, kvadrata krampoj, rezultas. Kaj ni tuj vidas tiujn denove en JavaScript-- ankoraŭ alia lingvo. Mi nur uzas kvadrata krampo notacio havi komo apartigis liston de entjeroj, en tiu kazo. Sed tio donas al mi tabelo. Sed eĉ pli potenca en PHP, ni ankaŭ havas kio estas ĝenerale nomata asociaj tabeloj. Kaj multan lingvoj havas tiujn ankaŭ. La afero pri C sensilo estas ke la indeksoj por tabelo, kion vi uzi en kvadrataj krampoj tra kio vi aliri elementojn, devas esti kio? Spektantaro: [inaudible] Parolanto 1: Ili devas esti nek nombroj entjeroj, specife de nulo sur supren. Nu, en PHP, kaj, rezultas ekstere, en aliaj lingvoj, vi povas komenci havi indeksoj kiuj ne nombraj. Sed ili estas reale vortoj aŭ frazoj, tiel ke anstataŭ provu memori kie io estas, aŭ stokitaj en variablo i, vi efektive povas uzi vorton kaj diri that-- vi povas diri vorton tiel. Do dolaro signo citaĵo estas la nomo de variablo tie. Tiu estas iom funky sintakso jen asociante du ŝlosilaj valoro paroj por tiu variablo. Specife, tiu donas min tabelo kiu estas de longo 2. Sed la indeksoj estas ne 0 kaj 1. La indeksoj estas citaĵo unquote simbolo kaj citaĵo unquote prezo. Kaj la valoroj de tiuj indeksoj, respektive, estas FB Facebook kaj $ 79,53, kiam Mi daŭri kontrolis prezon por tio. Kion tio signifas? Nu, tio signifas ke anstataŭ skribo kodo kiel tiu, kie mi kutimis fari ion kiel dolaro sign-- aŭ prefere, en C Mi ne eĉ havas dolaro signo. Mi farus ion kiel citaĵoj kaj tiam Mi farus krampo i akiri je iu arbitre ciferece indeksita valoro. De hodiaŭ en PHP, se vi volas ricevi en iu valoro, ni ia havi pli semantika esprimivo. Nur fantazio maniero diri ni povas simple nomas aferojn kiaj ili estas. Kaj se vi volas ricevi e io simbolo, nun vi laŭvorte fari citi unquote simbolo en rektaj krampoj anstataŭ nura nombro. Do ĝi estas bela oportuneco. Kaj tio estas speco de tio nun. Ekzistas aroj da aliaj trajtoj en PHP. Kaj ja, PHP venas kun la proverba kuirejo profundiĝi. Dekoj, centoj da funkcioj veni kun PHP-- tiom da pli ol venis kun C. Kaj tio ne intencis superforti sed prefere helpi vi konscias ke ni ne plu devas skribi kodon tio estas ia malsupren tie koncepte. Nun ni povas simple komenci utiligante de multe pli antaŭitaj karakterizaĵoj ke lingvoj kiel PHP havas. Do ni ne devas zorgi pri movanta objektojn per memoro. Ni ne devas maltrankviligi malloc kaj ĉiuj tiuj malsupera nivelo, potenca detalojn ke vi luktas kun, se ne luktas kun, pset5, sed vi povas komenci baldaŭ prenas por donita. Fakte, ni skribos la super simpla programo en PHP, kiel sekvas. Mi tuj iros kapon en CS50 IDE tie, kaj kion mi tuj faros estas krei novan dosieron, ke tre simple tuj nomos saluton skalara PHP. Do anstataŭ punkto c, estas tuj nomos skalara PHP. Kaj tiam en tiu dosiero, Mi povas ektajpu. Sed rezultu ke la unu aferon mi devas scii estas ke neniu PHP dosiero ĝenerale, bezonoj komenci kun iu speciala sintakso. Simila en spirito al HTML, sed denove, PHP estas programlingvo, ne markado lingvo. Do ĉiu dosiero, kaj ĝi estas speco de stultaj rigardante mi agnoskas. Malferma krampo, demandosigno, PHP. Kaj tio estas nur la lingvo maniero diri, hej, komputila tie venas iu kodo skribita en lingvo nomita PHP. Kaj tiam ĉe la fino de via dosiero, vi faras ia specon de la malon. Vi ne skribas PHP denove, vi nur fari demandosigno, angulo krampo. Kaj tiam io vi metis enen de tiuj du etikedoj, tiel diri, estos, aŭ devus esti, PHP-kodo. Do ni faru ion super simpla. Mi tuj iros antaŭen kaj fari print def, saluton mondo, backslash n, savi. Kaj nun en mia prompto, mi tuj faru, faru hello-- ne, mi tuj faros, dot oblikvo saluton. Ne, dot oblikvo, hm. Do io estas malsama. Kaj efektive, tiu estas ŝlosila diferenco inter PHP kaj lingvoj kiel C. C estis tielnomita kompilita lingvo. Kion ĝi signifas por C esti kompilitaj? Kio estis la implikaĵon? Yeah. Publiko: Wrote ĝin en kodo de maŝino do ĝi povus esti prizorgita fare de la komputilo. Parolanto 1: Ekzakte. Ni unue devi konverti ĝin tn maŝino kodo, nuloj kaj, antaŭ ĝi efektive estos plenumebla kaj komprenitaj de la komputilo. De Intel ene. Per la CPU ene de la komputilo. PHP, kontraste, estas kio nomiĝas interpretita lingvo, kiu signifas ke vi ne kompili ĝin en nuloj kaj, maŝino kodo, vi anstataŭ lasi fontkodo. Kaj vi anstataŭ pasi ĝin kiel enigo al programo, interpretisto ke iu alia skribis jaroj ke komprenas linion post linio, karaktero por karaktero. Do alivorte, homoj tie ekstere skribis programo kiu aspektos ĉe via kodo linio por linio, kaj elkompreni la komputilo devus fari, sen konvertado rekte al nuloj kaj aĵoj. Do se ĝi vidas por ciklo, tiu tn interpretisto tuj estos kiel, bone, mi devus fari ion denove kaj denove kaj denove. Kion mi devas fari? Lasu min rigardi la sekva linio. Lasu min rigardi la sekva linio. Kaj ĝi vere interpretas linion por linio. Do ekzekuti ĝin, mi ne uzas konsiston. Mi ne uzas dot oblikvo tiukaze. Mi anstataŭe fari PHP, kiu estas la nomo de programo, a.k.a. Interpretisto, jen preinstalado en CS50 IDE, kaj nun mi bezonas pasi komandlinio argumento, kiun Estas sufiĉe simple la nomo de la file ke mi volas interpreti. Aŭ pli indiferente, ke mi volas kuri. Kaj se mi batis Enter, tie ni havas in. Saluton mondo. Nun ĝi rezultas ke mi uzita presaĵo def intence transponti nin de C al PHP. Plej PHP programistoj, kiel vi vidos, eĉ ne tedas uzante print def. Ili simple uzi funkcio nomita print, kiun C ne havas. Kaj do se mi rerun ĝin nun, ĝi reale kondutas funkcie la sama. Mi ne povas uzi la procento s kaj procento i kaj tiel plu, sed estas aliaj manieroj en PHP fari tion. Sed tio estas nur por diri ke sintakse, krom iuj strangaj aĵojn supro, kaj iuj strangaj signoj malsupren ĉe la malsupro, la konceptojn nun de programadon en tiu alia lingvo tuj estos ĝuste la sama. Fakte, ni faru unu alia ekzemplo. Do mi tuj iros antaŭen kaj fermas la dosiero. Lasu min krei alian kiu Mi vokos kondiĉoj 1 skalara PHP. Do ne nulo, ĉar kion mi faris mi rerigardis kelkaj semajnoj, ni havis dosieron nomatan kondiĉoj 1 skalara C. Kaj kio Mi konvertiĝis ĝin en mian kapo, kaj tien sur papero, kaj baldaŭ sur la kurso la retejo, linio por linio en PHP. Do en la C versio, ni faris ion kiel kordoj s akiras akiri kordoj. Do ĝi estas iom malsama fari tion en PHP. Anstataŭe, mi simple tuj fari, aŭ pli ĝuste, mi eble faritan int n prenas akiri int, en tiu ekzemplo pli frue. Do anstataŭ tio, mi tuj faru n gets legi linion, Mi ŝatus entjero, bonvolu. Do tiu estas nur mia prompto. Kaj tial ĝi rezultas, kaj Mi volus nur scii ĉi el leginte aŭ vidita la funkcio antaŭe, legi liniojn de funkcio en PHP prenas argumenton, kiu estas prompto por la homa, kaj lia celo en la vivo estas legi linion de teksto ke li aŭ ŝi tipoj en. Kaj tiam stokas ke teksto en la variablo n. Kaj nun mi volus fari ion kiel Mi faris semajnoj, en kiel semajno unu de la klaso. Se n estas pli granda ol nulo, tiam, mi tuj deprunti ke sintakso ni ĵus vidis, print def, vi plukis pozitiva nombro, backslash n. Else se n egalas egalas nulo, mi tuj iru antaŭen kaj diru, presi def, vi elektis nulon backslash n. Alie, la kazo tie devas kompreneble, presi def, vi prenis negativa nombro. Kaj ni certe povas apliki la logiko de tiu afero en aron da malsamaj vojoj, sed la punkto ĉi tie estas ke sintakse, apenaŭ io estas nova. Estas nur la dolaro signo kaj nova funkcio kaj legi linion. Sed fundamente, kio novas nun estas mi interpreti tion. Mi pasante kiel enigo al alia programo. Do se mi volas kuri ĉi, se Mi ne faris erarojn, Mi tuj kuros PHP, de kondiĉoj 1 skalara PHP, Enter, Mi tuj tajpi la numeron 50, kaj ni supozu por nun funkcias. Ĉar la logiko estas la samajn aferojn kiel semajno unu. Bone, do jen vere underwhelming, dekstra? Ni povus fari tion en ajna nombro de lingvoj. Ni faru ion vojon pli potenca. Ni finpoluro problemo starigis kvin. Do mi tuj iros antaŭen kaj fari tion. Mi tuj krei dosieron vokis vortaro skalara PHP, kaj klinis kiel vi povus esti grimpi malsupren multaj notoj, la notojn nur helpos vi se vi estas permesita implementar problemojn starigis kvin en PHP. Sed ni vidos kiom rapide nun ni povas apliki tiun saman problemon aro. Do en vortaro skalara PHP, mi iras supozi, ke ekzistas jam dosiero en la mondo nomita literumanto. Kaj efektive, mi faris tion anticipe, kaj ni ne iros tra tiu linio por linio, sed se vi estas scivola poste kaj vere volas envolver via menso ĉirkaŭ la diferencoj inter c kaj PHP, laŭvorte kompari tiun dosieron: literumanto, el hodiaŭa fontkodo ke ni afiŝi poste hodiaŭ, kontraŭ p aro kvin literumanto punkto c ke ni donu al vi, Kaj ĝi estas preskaŭ la sama linio por linio. Ekzistas kelkaj pli dolaro signoj. Paro funkcioj estas iom malsama. Sed estas bela maniero de ia vidante kiel vi tradukas unu lingvo al alia. Kaj ĝi estas preskaŭ identa linio por linio. Sed mi tuj supozis ke tio ekzistas, kaj kion mi faros tie estas provu blovi vian menson per reimplementing la tuteco de problemo aro kvin maniero rapide ol vi estis farante tiel malproksime. Do ekzemple, mi tuj unua deklari tutmonda variablo nomis grandeco, kaj starigis ĝin egala al nulo. Nun tio ne multe ŝparadoj. Odds estas vi implementado grandeco preskaux la samo, aŭ aludo aludo, volo ĉinokte aŭ mateno, nur uzanta malloka variablo nomata grandecon, kaj fiksante ĝin egala al nulo. Tio ne estas aparte mirinda spoiler. Do kio estus via datumstrukturoj de elekto, tiuj de vi kiu plonĝis en kaj legis la spec, kion datumstrukturoj esti la plej multaj el vi estis uzanta? Hash tablo aŭ provi, eble iuj variantoj de tio. Do implementando hash tablo almenaŭ, afablas multajn liniojn de kodo, dekstra? Kaj ne ĉiuj el ili povus esti funkcia ĉe tiu punkto en la semajno, sed tio estas bone. Ĉar en PHP, se mi volas hash tablo farita. Dekstra? Por ke variablo kiu mi havas nur deklaris evidente nomita dolaro signo tablo po la enkonduko antaŭe. Sed mi vere volas nur, ĉe la fino de la tago, tabelo. Sed ne estas ciferece indeksita tabelo, ĉar tio estas kiel semajno du aĵon, kiam ni parolis pri tabeloj. Mi volas hash tablo. Sed hash tablo estas vere nur konkreta maniero diri, vi volas asocieca tabelo. Vi volas povi asociita ŝlosilojn kun valoroj. Ŝlosiloj kun valoroj. Kio estas vortaro, vere? Nu ĝi estas tuta aro de klavoj. Vortoj kiel pomo, piro, kaj banano, kaj ĉiuj el tiuj anglaj vortoj ke ni transdonu vin. Kaj la valoroj kiujn vi efike enmeto en via vortaro estas aŭ vera, aŭ la foresto, falsa. Alivorte vi enmeto tutan faskon da ŝlosilaj valoro paroj, pomo, vera, piro, vera, banano, vera. Por ke kiam vi elsxuti aux rigardu kolektis datumojn en via hash tablo kun via ĉeko funkcio, vi ĉu reatingas respondon, jes, mi trovis ĝin en mia komplekso hash tablo, aŭ ne, ĝi ne estas tie, tiel vi revenos falsaj. Do fari tion, mi nur bezonas la datumojn strukturon kiel mi proponis antaŭe. Mi nur bezonas povi asocii vortojn kiel, citaĵo unquote, simbolo, kun valoro kiel, vera. Do ekzistas mia hash tablo. Ni efektive uzi ĝin. Do ekzistas kelkaj funkcioj Mi bezonas apliki. Mi tuj iros antaŭen kaj mordi malproksime funkcio nomita grandeco. Ĝi prenas neniun argumenton. Mi ne devas zorgi pri la vorto, malplenon, en PHP. Mi simple tuj revenos grandeco. Kaj kiel flanken, PHP havas ĉi minorly ĝena detalo, kie se io estas tutmonda, vi devas diri la funkcio kiun vi uzas ĝi, hey, tiu estas malloka variablo. Do, minora stulteco, sed vi devi fari ĝin tamen. Do kio pri ŝarĝo? Mi tuj apliki funkcio nomita ŝarĝo kiu portas en la nomon de vortaro, samkiel en problemo starigis kvin. Kaj antaŭ mi procedi, rimarkos ke mi ne estis tajpanta tute same. Kio estas evidente malsama en PHP pri kiamaniere vi rakontos funkcio kontre C? Yeah. Spektantaro: [inaudible] Parolanto 1: Neniu reveno tipo. Kaj efektive, jen la kazo, PHP mezuro ĝi estas loze tajpita, estas ankaŭ iom fuŝa en tiu senco. Vi ne specifas kiel la programisto kion tiu funkcio redonas. Vi devus reale rigardu ĉe la kodo por kalkuli ke ekstere. Aŭ legu la komentojn aŭ la dokumentado. Do plusoj kaj minusoj de tiajn decidojn. Sed mi devas diri la ŝlosila vorto, funkcio. Kiam ni lernas JavaScript en paro semajnoj ni tuj vidas la saman aferon denove, sed ĝi estas la sama ideo. La nomo de la funkcio, lia argumento aŭ argumentoj aŭ manko, kaj nun tie estas la efektivigo. Do mi tuj tranĉis iuj anguloj simple esti drama por nur momento. Sed mi tuj iros antaŭen kaj diru tion. Jen kiel mi povas ŝarĝi dosiero en tabelo. Ekzistas funkcio en PHP nomis dosiero. Vi donu ĝin la nomo de dosiero. Ĝi donas al vi reen tabelo, enen el kiuj estas ĉiu linio el la dosiero. El nulo, unu, plu supren al n minus 1 linioj. Estas tio, ĉu ne? Mankas f legita. Mankas f get s. Mankas procentoj s. Mankas kapdolorojn. Mankas feof. Ĉiuj kiuj aĵoj kun kiuj vi estis luktanta eble, kun p starigis kvar kaj kvin, iras. Do mi ĵus legis tiujn liniojn en la dosieron, kaj tiam vi scias kion? Se mi volas persisti super tiuj vortoj, Mi povas fari, por ĉiu linioj kiel linion. Memoru ke ĉi tiu estis ia saĝa vojo de ripetanta super tabelo, indekso per indico, kaj sur ĉiu ripeto voko la nuna linio, dolaro signo linio. Kaj ĝuste ĉi tie mi tuj iros kaj diri tablo, krampo, linio, ricevas vera. Alivorte, jen kiel mi enmeti en mian hash tablo en PHP. Mi diras dolaro signo tablo, kiu Estas mia asocieca tabelo kiu estis malplena po la linion de kodo ĝis supre. Mi tiam indekson en ĝi Ne, uzante numeron, sed laŭvorte uzante la ŝlosilvorto ke interesas min. Eble estas pomo aŭ piro aŭ banano aŭ kio ajn, sed specife mi indeksante en ĝin preferas mi proponis antaŭe. Mi prenas la nomon de mia asocieca tabelo, kaj tiam mi uzi citaĵon unquote en la rektaj krampoj kun ŝnureto, anstataŭ fakta nombro. Kaj do jen ĝi. La ŝarĝo funkcio estas farita. Unufoje ke buklo ripetas, mi metis ĉion en la hash tablo. Nun malgranda malgarantio, ekzistas paro aferoj mi devas redifini. Kaj la versio mi afiŝi rete havos ĉiujn de la nuancoj, sed ĝi estas plejparte nur tuj estos iuj eraro kontrolanta kaj iuj malgrandaj retuŝojn. Sed tio estas ja la esencon de ĝi. Se mi nun volas apliki la funkcio nomita kontroli, kiu atendas vorto kiel lia argumento, kiom povus mi iras pri faranta tion? Nu, mi simple volis diri, se interne de mia tablo, ĉe situo vorto, se estas metata. Do se is-- reale, vi scias kion? Mi tuj faros ĝin en iom de _pseudocode_. Sed la ideo estas la sama. Se tio egalas vera, revenu vera. Bone. Else-- vi povas ia vidi kie tio going-- reveni falsaj. Done. Ĉeko estas farita. Sufiĉe bela, ĉu ne? Kaj do kio estas ĉi vere celas? Kaj tiu ankaŭ, mi tranĉis iuj anguloj. Rigardu la versio online por ĉiuj la malpeza nuancoj. Sed tio estas la esenco de ĝi. Indekso en vian asocieca tabelo, a.k.a. Hash tablo, vidi se estas valoro tie, se ĝi estas agordita por vera, kaj se jes, reveni vera. Do ni ĉizis malsupren ĉiuj la komplekseco. Do ia menso blovanta, dekstra? Mi ne tedos finante ĝin kun malŝarĝi, ĉar en fact-- ho, vi scias kion? Jes, ni finos gxin kun malŝarĝi. Malŝarĝi en hash tablo povus aspekti kiel funkcio malŝarĝi, reveni. OK tiel tio malŝarĝi. Ĉar nenio estas malŝarĝi, dekstra? Mankas malloc. Mi ne eksplicite demandas la mastruma sistemo por nenio. Mi ĵus komencis uzi variablojn. Kaj tiel ĉi tro estas demonstracio de karakterizaĵoj de alta nivelo lingvoj. Do denove, la plej multaj el ĉi termino ni estis kontraktanta malsupren tie kun C. Super malalta nivelo. Vi povas vidi la komputilo la memoro. Vi povas tuŝi ion vi deziras en via komputilo RAM, por bone aŭ por malbone. Ĝis tie, ni tuj rezigni tiun potencon. Sed mia dio, rigardu, kiel multe malpli kodo mi skribis. Fakte se mi ne parolas kaj babiladis ĉirkaŭ mia tajpado, ni estus farita kun tiu ekzemplo antaŭ kvin minutoj. Do kio la prezo pagita? Bone ni rigardu. Ni rigardu. Mi tuj iros antaŭen kaj kuri CS50. Lasu min unue iri en hodiaŭa ekzemploj kie Mi havas la tekstojn dosierujo kiel antaŭe. Mi tuj kuros la solvo kiu ĝi venas kun problemo starigis kvin nomitaj literumanto, kiu estas en CS50 la konto. Kaj mi tuj kuri ĝin sur io granda kiel la Reĝo James Biblio, nur por ke ni vere metis la kunlaborantaro solvojn al la testo. Nun kelkfoje la interreto estas iom malrapida, iom pli rapida, povus preni momenton por rulumi. Sed ĝi prenis totalon de .56 sekundoj literumi kontroli la Reĝo James Biblio uzante la personaro solvo. Do sufiĉe bona. Yours povu multe pli malrapida, kaj tio estas tute bone. Sed estas korekta ĉi tie. Do jen la personaro solvo. Se mi eniros kaj purigi la PHP versio. Kaj mi tuj faros iom kiel bakado spektaklo afero. Ni tuj prenos la kodo kiun mi skribis pli frue, do estas tute prava. Ĉar la kodo mi skribis ne tuj esti perfekte korekta nun. Sed se mi kuri la PHP versio, Kion mi devas rezigni hodiaŭ? Prenis min kvin minutoj efektivigu p starigis kvin, mi asertas. Kio prezo mi pagis? Yeah. Publiko: Rapido. Parolanto 1: Rapido. Kion vi celas? Spektantaro: Ĝi estas tuj prenos plu. Parolanto 1: Bone. Ni vidu. Ĝi tuj preni plu, ne skribi, sed por ruligi ĝin. Yeah. Do ni provu tion. Do ĉi tie mi tuj iros antaŭen kaj fari PHP de Speller, kaj ĉar la dosiero nomata literumanto. Do mi ne rulas la vortaro, revokon, Mi kuras la programo nomita literumanto. Mi tuj pasos en la sama dosiero, Reĝo Jakobo la kvina. Ĝi flugas de. Tio povus esti simple interretan rapidon, do ne legas tro multe en tiu. Sed ĝi sentas plu sekura. 1.26 sekundoj. Nun tio estas ankoraŭ bela malbenita rapida, dekstra? Kaj la sola kialo kiu sentis kiel pli kiel tri aŭ kvar, aŭ kvin sekundoj, tio estas nur pro interreto estis estanta malrapida. La komputila tempo pasigita estis 1.26 sekundoj, kontre Mi pensas 0.56. Do pli ol dufoje kiel malrapida. Nun tio estas ankoraŭ bela Darn rapida, sed ĝi estas manifestiĝo de, ja, ke ĝusta prezo. Ĉar ni interpreti en la kodo linio por linio, kaj ke programo PHP estas leganta miajn kodo supre sube, maldekstre dekstren, ĝi devas vidi pli pensado. Ĝi havas al ia konverti ĝin ene de sin al la respondaj maŝino kodo sur la muŝo, tiel diri, eĉ se la mekaniko estas iom malsamaj. Anstataŭ nur nutrante al la Intel CPU la kruda nuloj kaj ke komprenas denaske. Do absolute, manoj malsupren, ni pagis prezon. Kaj kodo skribita en lingvo kiel PHP inklinas esti pli malrapida. Sed mia dio. Do nun, kiam mi Literumkontrolado mia dosiero, mi pasigas kroman 0.7 aŭ tiel sekundoj vs 20 horoj implementar pli rapidan literumilo, dekstra? Ĝi estas speco de komerco ekstere. Kaj se vi nur komencante p starigis kvin, eble ne 20 horoj. Povus esti multe malpli ol tio. Sed estas komerco ekstere, por realo. Kaj se vi uzas kodon sur vere granda datenaroj, aŭ sur eĉ pli malnovaj aparataro, tiuj specoj de diferencoj certe povas sumigi. Demandojn ĝis nun? Yeah. Spektantaro: [inaudible] Parolanto 1: Pardonu, povas vi ripeti tion? Spektantaro: [inaudible] Parolanto 1: Vi lasanta tempon. Nu, do jes. Vi ŝparas tempon per ne havanta kompili ĝin, se tion vi petas. Kaj efektive, en CS50, plejparto de la programoj, kvankam ili povus preni momenton skribi, ili estas relative mallongaj. Kelkdek, kelkcent linioj de kodo, kaj tiel ili kompilos bela rapide. Sed kiam vi komencos skribi pli granda programoj, kiel se vi estas Microsoft aŭ vi estas Google kaj skribi vere grandaj programoj en C, aŭ C ++, aŭ simile kompilita lingvoj, povis preni multajn sekundoj, aŭ eĉ minutoj aŭ pli longe por kompili milionojn da linioj de kodo. Kaj ankaŭ, ke diferenco tuj sumigas. Kaj fakte, iam ni transiro hodiaŭ, sama tago hodiaŭ, por ttt programado uzante PHP, vi estas tuj trovi ĝin nur tiel pli plezura verki kodon kiam vi ne devas fari tiuj stultaj paŝoj kiel ŝanĝo al via terminalo fenestro, tajpu fari saluton, re ruli ĝin, reŝarĝi la fenestro. Ĝuste tiel multaj stultaj mekanika paŝoj nur akiras en la maniero fari la interesa, la amuza verko. Kaj efektive ni ĵetu ke for kun PHP. Kaj ni povas interagi per ĝi pli rapide. Yeah. Spektantaro: [inaudible] Parolanto 1: Sure. Ĉu mi povas klarigi kion ĝi signifas esti interpretita? Kiam vi kompili lingvo kiel C, iras malsupren kiel ni diris al maŝino kodo, nuloj kaj aĵoj. Kaj Intel decidis jarojn tiu certaj ŝablonoj de nuloj kaj reprezenti Krome, aŭ subtraho, aŭ presita, aŭ aliaj bazaj operacioj. En la mondo de interpretita lingvo kiel PHP aŭ JavaScript aŭ Python, aŭ Ruby, aŭ kuketojn aliaj, anstataŭ iu verkis interpreter-- tiukaze ĝi estas ankaŭ nomata PHP, identa al la nomo de la language-- ke esence havas grandan banton en ĝi ke ripetas super ĉiuj el la linioj de la kodo ke mi manĝas ĝin kiel enigo, kiel saluton skalara PHP, aŭ vortaro skalara PHP. Kaj tiam vi povas pensi pri siaj grandaj buklo kiel havanta multajn kondiĉojn. Kaj tiuj kondiĉoj, se la homaj skribis la ŝlosilvorto por, komenci fari lian aŭ ŝian kodo denove kaj denove. Tamen se la homo havas skribita la linio de kodo, se, nur ekzekuti ilian sekva linio kondiĉe. Do estas vere kiel interpreti ĝi en homa senso, linio por linio, kaj ke nur prenas tempon. Ĝi prenas superkape. Kaj do tio estas price-- bona question-- ni pagas. Do ni faru alian demo ke estas iom pli drama. Tie estas, mi diru, stadionon ĉi ĉe ĉirkaŭ 90% de probabloj de maltrafi terure, sed vi estos mirita kun 10% de probabloj. Do ĉiujare ni provu fari tiun, per kiu ni provu skribi programon kiu iras tra problemo aro nulon, por kiuj vi havas prezentis viajn telefonnumerojn kaj Multaj aliaj demografiaj informoj, kaj ni programmatically sendi vin tekstmesaĝo. Kaj tiam ĉies telefono Komencas beeping aŭ vibranta, kaj ĝi estas nur mirinda, ĉar Nu, rigardu kion komputiloj povas fari. Tiu malofte funkcias ĝuste ŝajnas, grandparte ĉar mi tipe get lerta kvaronnoto per Gmail aŭ alian servon por vere provas fari tion en skalo. Sed lin scivola estas tro, ĉar ni ne havas ĉiujn ĉi tie hodiaŭ, Amuza fakto lastfoje ni provis ĉi du jaroj, Mi kredas ke mi skribis programon kiuj sidis en buklo ripetanta super ĉiuj studentoj en la klaso, kaj ĉiu el ili teksta mesaĝo, kaj ĝi diris iun tiel kiel: kial ne vi en prelego? Amas, CS50 bot. Vi ne havas ideon kiom pardonpetan kaj ia dolora retpoŝtojn Mi ricevis responde el n minus 100 personoj kiuj ne estis tie tiu tago. Kaj eĉ pli amuza, pli hontinda story-- Vi scias, ni metu ĝin tie. Jam en video kelkaj jaroj reen. Do vi baldaŭ vidos min skribi por ciklo, per ĝi estas tre facile skribi cimon en tiu por ciklo, tia ke la unua fojo tra la ciklo, vi sendu unu tekstmesaĝo. La dua fojo tra la buklo mi devus esti sendita pli tekstmesaĝo, kaj tiam pli teksto mesaĝo, kaj unu pli. Sed rezultu se vi faras tajperaron kiam programado, kelkfoje vi povas skribi programojn kiuj sendas unu tekstmesaĝo, tiam du mesaĝojn de teksto, tiam tri teksto mesaĝojn al ĉiuj Kiu jam ricevis mesaĝon de teksto. Kaj kiel vi scias, faras ion, plus ion, plus ion, plus ion, estas granda a de amaso de teksto mesaĝojn, aŭ n kvadratoj, aŭ ĉe $ 0.10 teksta mesaĝo, $ 20.000. Feliĉe mi batis Kontrolo-C antaŭ tio okazis, sed mi ŝuldas almenaŭ de via antaŭuloj $ 20 por la 200 iuj neparaj teksto mesaĝoj kiuj, ne nur estis al lia telefono, sed Ankaŭ estis kiel malnova flip phone do ĝi ŝatas puŝita el lia memoro ĉiu alia persona teksto mesaĝo li fakte akiris. Do ni havas unu celon hodiaŭ, ne fari tion. Eble ŝalti aviadilo modo. Bone. Do ni iru en programo tie callled-- Mi alvokos teksto skalara PHP. Kaj anticipe, mi havas du dosierojn tie. Mi faris dosieron por nura kunlaborantaro, ke estas atingis ĉiuj Staff info, ĉiuj nomoj de la kurso de afiŝinto. Kaj tiam por nun mi nur metis iuj falsaj nombroj 555-1212. Do tiuj ne vere iru ie. Sed rimarki la internon de ĉi tiu dosiero CSV, kiu ni parolis pri mallonge antaŭ en la kunteksto de dosiero IO. Kio estas CSV-dosiero? Komo apartigis variabloj. Kaj tiu estas speco de kiel tre malpeza datumbazo, se vi volas. Estas speco de varo de kvar kolumnoj en tiu dosiero, kaj tie dentitaj, sed la komoj esence reprezenti kolumnoj en la dosiero. La unua kolumno estas la TF aŭ CA nomo. Dua kolumno estas ilia familinomo. Tria kolumno estas ilia telefonnumero. Kaj kvara kolumno ŝajne is-- kvara kolumno estas ŝajne kion? OK, Do ĝi estas ilia portanto. Do Verizon, aŭ Sprint, aŭ kio ne. Kaj se mi misspoke antaŭe, CSV. Komo apartigis valorojn estas CSV tie. Do kion mi povas fari kun tio? Nu tiu estas nur granda tekstdosiero, kaj ĝi estas speco de longa, ĉu ne? Kiel ĉi tiu tuj esti ia ĝena. Kaj ĝi rezultas, tamen, ke se mi volas sendi mesaĝon de teksto al, ni diru Alex tie. Lasu min iri en mia retumilo kaj eliri la tutekrana reĝimo nur do mi povas mastrumi reen. Rezultas, ni vidu, se mi iros en tie kaj ensaluti Gmail, tute certe. Ne rigardu tiun parton. Nur mi vidigas. kompreneble la Livestream povas ankoraŭ vidi kion mi faras. Bone. Do jen estas nur Gmail kun John Harvard konto. Do se mi volas sendi tekstmesaĝo al Alex, Mi povas kompreneble komponi mesaĝon. Kaj ĝi rezultas, kaj mi havas provis gxin kun Alex antaŭ ĉi tie, do vi povas append certan domajnon nomon al popola telefonnumerojn, ĉar ne ekzistas en la mondo aĵoj nomata SMS retposxtu enirejoj. Kio estas fantazio maniero diri ĉiuj de ni kiu havas poŝtelefonojn kiu havas telefonnumerojn, kompreneble, tie probable estas por via portanto, certan sufikson kiel ĉe Vtext.com por Verizon tekstmesaĝo punkto com, ke vi povas append al via propra persona Telefonnumero, kaj tiam vi aŭ amikoj, aŭ via gepatroj povas teksto vi en tiu aparta adreso. Kaj Verizon havas servilon, retmesaĝon servilo, ke ricevinte ĉi tiun retpoŝton, rigardas la numera parto kaj tiam uzas ajn specialaj industrio magio Ili devas reale sendu ĝin super la sendondoj al via aparta ĉelo telefonon. Nun tiu estas bela ĉar mi ne vere scias kiel sendi mesaĝon de teksto aŭ skribi kodon tamen por mia poŝtelefono, kaj vi povus fari precize tion por fina projekto, sed nuntempe ĉiu Mi estas mia portebla tie. Do mi volas persisti super tiu CSV dosiero, linio, por linio, por linio, por linio, Ekpreni ĉiu de la Staff telefonnumerojn, kaj ilia portanto kaj programatically, concatenate, te konekti la telefonon nombro kun la taŭga domajna nomo kaj tiam sendu retmesaĝon. Do jen multa paŝoj. Kaj bonŝancon faranta ke en C. Ĝi estas koŝmaro de situacio malfermi dosieron, legi ĝin linion, por linio, por linio, kiel vi vidas, aŭ baldaŭ povas vidi kun problemo aro kvin, se ne problemo starigis kvar, kaj tiam dinamike concatenate du kordoj kune, ĉar en C, preni du kordoj kaj kombini ilin, kion faras vi minimume bezonas fari plej verŝajna? Vi devas deklari pli memoro, ĉu ne? Kaj demandi, malloc, mi povas havi pli memoro? Do mi povas meti la duonon de tiu tie, la duono de ĉi tie. Estas nur tiom da paŝoj. Kaj per tiu punkto vi perdis intereso en la stulta iom demo kie vi faras ĉies telefonon pepi. Ni faru tian PHP stilo, per kiu ni ĵus ekuzi pli de tiu kuirejo profundiĝi. Kaj la ideoj estas fundamente la sama, sed ni ne devas maltrankviligi tro multe pri tiu malalta nivelo. Do ni vidu kiel mi povus iri pri fari tion. Kaj nur por ke mi ne ripeti preter eraroj, Mi verkis kelkajn notojn por mi mem ĉi tie. Kaj ni vidos se mi povos marŝi nin tra iuj de la fundamentaj paŝoj, kaj tiam por tempo, kalkaj ni eble tranĉis iuj anguloj en la fino. Mi tuj iros antaŭen kaj fari malfermita krampo PHP komenci tiun dosieron. Kaj mi tuj iros antaŭen kaj fari tion. Dosiera tenilo, kiel vi baldaŭ vidos, reale nomas funkcio nomita f malferma. Kaj memoru ĉi malfermas dosieron. Kaj la citaĵo, unquote, r signifas kio, denove? Nur malfermi gxin por legado. Nun en p aro por, vi faris. Kaj manipuli povus esti io, fu, trinkejo, bas, ajna variablo nomo. Sed ĝenerale komputilo sciencisto vokus malfermita dosiero, donante vi dosiero tenilo, io teni al tiel diri. Mi simple tuj fari iu eraro kontrolanta. Do se la tenilo estas falsa, nur ŝatas en C, mi tuj faru ion kiel, ne povis malfermi dosieron, backslash n. Kaj tiam mi simple tuj iri antaŭen kaj eliro. Kaj ĝi rezultas, en PHP, Mi ne estas ene de funkcio. Mankas ĉefa funkcio tie. Do mi ne revenos, por se. Mi eliras. Kiu estas esence la sama afero. Kaj mi eliranta kun unu y verŝajne. Unu nur signifas eraron de iu varo. Ĝi estas ne-nulo, do ĝi estas eraro. Bone, do se mi estas cxi tie nun en mia programo mi malfermis la dosieron. Mi tuj iros antaŭen kaj deklari tabelo nomita adresoj, kaj en C mi devus scii la grandeco de la tabelo anticipe, ĉu ne? Aŭ mi bezonus por deklari ĉi estas puntero, kaj tiam uzi malloc. Kaj tiam ĉiu tempo mi legis tra alia vico en la dosiero, Mi tuj bezonas malloc pli memoro, malloc pli memoro. Ke estas doloro en la kolo. Kaj dankeme, PHP, kaj Ruby, kaj Python, kaj JavaScript, ili kreskos via tabeloj por vi aŭtomate. Plu malloc. Plu memoro mastrumado. La komputilo prizorgas tion. Sed la prezo vi pagas. Ĝi estas iom pli malrapida. Kaj por programo kiel ĉi ni ne tuj rimarki. Ni tuj sendas 100 mesaĝojn de teksto. Ekzemple ne tuj sentas ĝin. Ĝi vere nur komencas gravas via lingvo de elekto kiam viajn datumojn aŭ viaj programoj ricevas vere, vere konsiderinda, kiel estos la kazo pli tiel kun nia ttt bazita aĵoj. Sed nuntempe ni veturu antaŭen. Dum ĝi rezultas ke estas funkcio en C nomis f akiri CSV. Dosiero akiri CSV, kiu prenas file tenilo kiel lia argumento, kaj ĝi procedas tiam, vico, per vico, post linio, por legi en unu vico. Do nur legas linion de teksto de la dosiero. Sed kio estas agrabla pri tiu funkcio, ne nur transdoni min linio de teksto. Ĝi serĉas tiujn komojn, kaj parses la linio. Kaj analizi la linio signifas disfendi sur certaj valoroj en tiu kunteksto. Alivorte, dolaro signo vico estas variablo kiu estas tuj donu al mi faskon de indeksoj. Ĉi tiu tuj estos la unua kolumno en mia CSV. Ĉi tiu tuj estos la dua kolumno, ĉi tiu tuj estos la tria, kaj ĉi tiu tuj estos la kvara. Ĉar revoko kaj Excel la ne kunlaboru lastfoje ni faris tion, sed se mi elŝuti kunlaborantaro dot CSV. Whoops, alinomi. Se mi elŝuti kunlaborantaro skalara CSV, kaj provas malfermi ĝin, Mi jam registered-- ho mi ne ĝisdatigi Excel ekde lasta tempo. Vi vidos ke en personaro skalara CSV, mi havas kvar kolumnojn. Do kiam mi legis en la unua vico por Abby tie, dolara signo vico 0 estas Abby, dolara signo vico estas Liono, dolara signo vico du estas ŝia numeron, kaj tiam ŝi poŝtelefona portanto. Do jen ĉio. Kaj tio estas bela, ĉar mi ne devas nun kalkuli kie ĉiuj el tiuj komoj efektive estas. Do mi tuj iros antaŭen kaj fari tion, donita ke difino, Mi tuj diru, ke ŝia nomo estas en vico krampo nulo, kiel promesis. Kaj mi tuj grab-- kaj reale, vi scias kion? Mi ne tuj zorgi pri ŝia nomo, en tiu kazo. Mi tuj konservi ĝin simpla. Mi tuj fari ŝian nombro estas en vico krampo du, mi pensas. Kaj ŝia portanto estis en kie? Vico, unu apud. Do nenio nova tie. Estas nur nulo indeksado en tabelo. Kaj nun, mi tuj faru la sekvajn. Se la portanto egalas egalas AT & T-- Mi simple tuj havi loop-- Mi volas krei retpoŝto Adreso kiu similas ĉi. Ĝi okazas esti 617-555-1212 ĉe kio ĝi estas, text.ATT.net, estas kion mi volas fari. Do kiel mi faru tion? Mi tuj faru la sekvajn. Ŝia adreso estas iranta esti ŝi numeron, kaj nun, lasu min antaŭeniri kaj fari tion. Jen kelkaj funky sintakso. Mi povus fari la procento s ruzo, sed mi povas vere nur faru tion. Do tiu estas PHP afero, sed ni rigardu, kion mi faras. Dolaroj subskribi adreson sur la maldekstra, nur variablo. Donu variablon. Mi ne devas specifi la tipon. PHP elpensi. Sur la dekstra flanko, kio estas la datumtipo de tiu tuta afero sur la dekstra flanko? Aspektas kiel ŝnuro, ĉar ekzistas duobla citaĵoj sur la maldekstra kaj ekstremdekstro. Nun tie estas iuj funky nova sintakso tie. Jen la krispa krampoj, kaj la dolaro signo nombro. Sed preni diveni kian sintakson verŝajne rakontanta PHP fari por mi? Yeah. Nur enmeti la valoron tie. Do ne procentoj s. Ni povus uzi print f, aŭ s print f aŭ ion similan, sed PHP kaj multajn alta nivelo lingvoj, vi tuj rimarkas, ke vi povis fari la samon funkcie, eble ses malsamaj manieroj. Kaj tiel ĝi komenciĝas fariĝi afero de dezajno aŭ stilo. Do tio estas nur kripta rigardas maniero diri, donu min retadreson, sed plug-en la nombro en inter tiuj buklaj krampoj. Kaj la krispa krampoj ne faros finas en la fina adreso. Nun ni povas salti super iu de tiuj linioj por momento gajno. Do se portanto egalas egalas verHorizon-- whoops, Verizon-- mi volas fari ion tre similaj, kie la adreso ricevas, citaĵo, unquote, nombro je text.ATT.net. Kaj tiam mi povas fari samspecan afero por la resto de la portantoj. Sed mi nur faras dot, punkto, punkto nun. Kaj nun ni supozu ke Mi volas aldoni tabelo, puŝi. Mi volas aldoni al la tabelo, nomita adresoj. Tiu adreso, jen kiel vi aldoni ion al tabelo en PHP. Vi ne bezonas fari malloc. Vi ne devas regrandigi la tabelo. Vi nur diru tabelo, puŝo. Kion vi volas push-- kio tabelo ĉu vi volas puŝi ion sur? Adresoj. Kion vi volas puŝi sur adresojn? Adreso. Kaj fakte, se vi vere volas esti saĝa, iu sintaksa sukero por tiu, por tiel diri, kiu signifas nur kiel vi povas fari tion en la bela maniero, estus fari tion. Ankaŭ tio havas la efikon de kreskanta la adresoj tabelo de grandeco unu, kaj tiam Plop ke aldona retadreso en ĝin. Yeah. Spektantaro: [inaudible] Parolanto 1: A tajperaro sur la alie if-- ho, portanto. Estas bone. Ĝi ankaŭ ne ŝatas mian malsukceson apliki parton de tiu programo poste. Sed dankon por kaptado. Unu pli cimon. Dankon. Ni volas ĉi esti Vtext.com. Jes. Bone. Do kie faras ĉi forlasi nin? Ni skribis la kodon por malfermi la dosieron. Ni havas buklo persisti super la vicoj en la dosiero. Ni havas kodon kiu aldonas al mia tabelo, unuope, la ĝuste formatita retadreso. Do ĉiuj kiuj vere restas estas sendi retmesaĝon al ĉiu de ĉi tiuj personoj. Do mi iris antaŭen kaj preta mem kiel sekvas. Kion mi tuj faros tie is-- kaj ni antaŭeniri kaj salti al iu fakta kodo, kiu aspektas jene. Do jen estas la antaŭ-bakita versio mi skribis antaŭe. Kaj rimarki mi finis efektivigado Sprint. Mi finis efektivigado T-Mobile. Mi finis efektivigado Virgin Mobile. Kaj mi pardonpetas anticipe. Ekzistas kelkaj portantoj ke kelkaj studentoj en la klaso havas ke mi ne tedos numerigo en la se kondiĉo tie. Do ne ĉiuj tekstoj eliros. Sed ni vidu kion alian mi bezonas fari. Mi fermas la dosieron, simple kiel en p starigis kvar. Kaj tio estas nova sintakso. Kaj ni vidos iom iom de tiu tempo, speciale kun p starigis sep kaj ok. Sed tio estas sintakson por krei speciala tipo de strukturo. Ĝi rezultas tie estas biblioteko kiu venas kun PHP, nomata PHP mailer. Lia celo en la vivo estas programmatically sendi retpoŝtojn. Estas kodon iu alia skribis ke faciligante por ni sendi retpoŝtojn, tial ni ne devas teni irante reen al Gmail, kaj alglui en popola retadresoj. Ekzistas tuta aro da linioj tie ke honeste, mi nur ia kopiita kaj batitaj de la dokumentado. Kaj fakte, se vi estas scivola, mi forlasis ĉiun de la URLs de la dokumentado en la kodo kiun ni afiŝi poste. Kaj rimarku, ke inter tion mi faras estas, mi rakontas ĉi biblioteko, uzi Gmail servilo, dekstra? SMTP ni parolis mallonge pri kiam ni estis ĉe Yale sur esti simpla poŝto transigo protokolo. Ĝi estas la protokolo kiun serviloj uzita por sendi retmesaĝon, kaj that's-- Gmail havas unu el tiuj. A haveno, tiu estas la TCP haveno nombro. Ĝi estas bone se vi ne vidis 587 antaŭe. Nur scias ke de la dokumentado. Jen mia salutnomo. Mi tuj uzi la CF50 bot. Kaj en momento, mi simple tuj entajpu la bot la fakta pasvorton. Kaj poste malsupren tie, rimarki kio restas. Mi direktos Mian el adreso esti Bot ĉe CS50.net. Mi opinias ke mi ne bedaŭras sendante tekstmesaĝo al 800 personoj kiuj diras, miss you, amo CS50 bot, eble por tiuj kiuj ne povis fari ĝin hodiaŭ. Kaj poste en linio 76, kion mi faru? Tiu speco de aspekto kiel C. Do por mi egalas 0, n equals-- nun kalkuli estas nova. Ĝi rezultas ke se vi volas ricevi la nombron de aferoj en tabelo, vi ne devas memori ĝin anymore. Vi povas simple demandi funkcio nomita grafo, kaj ĝi diros al vi kiom da adresoj estas en tiu tabelo. Kaj tiam mi tuj aldonu la adreso por la retpoŝto. Kaj mi scias tion el uzante la dokumentado. Ekzistas add Adreso funkcio. Kaj nun rimarkas tie estas unu peco de sintakso. Ni vidis tion antaŭe en C. Simila en spirito. Vi povas pensi de dolara signo poŝti kiel variablo, kio ĝi estas. Sed estas struct ene de kiuj ne nur propraĵoj, variabloj se vi volas. Sed rezultu ke en PHP, kiuj estas objektema programado lingvo, kiel Java, se vi prenis APCs. Dolaro signo poŝto, se vi volas to-- ĝi ankaŭ havas funkciojn ene de ĝi, aŭ metodoj. Do tiu estas ke speciala PHP mailer biblioteko, se mi havas ŝanĝiĝeman gxiajn se mi volas nomi funkcio kiu venas kun tiu biblioteko, por hodiaŭa celoj, nur scii vi uzu la sago skribmaniero. Mankas skalara skribmaniero. Estas nur la sago. Sed tio ne estas puntero. Ĝi simple prenitaj de C sintakso. Do nomu aldoni adreson ene de tiu biblioteko objekto aŭ variablo. Bone. Tio estas la magia linio. Tiel estas kiel mi sendu retmesaĝon. Tio estas la ekvivalento de malfermado Gmail, tajpante ĝin, kaj trafante sendi. Sed ĝi tuj anstataŭe sendas retpoŝti al tiu adreso, kun tiu korpo, el la CS50 bot. Kaj nun ŝlosilo linio. Tiu linio estis ausente en 2011 kiel kiam mi kredas ke mi provis ĉi lasta. Tiu linio tie, kompreneble, demetas la adresoj. Do logike, se mi ne malbari la adreso post ĉiu ripeto, la unua retpoŝti aŭ tekstmesaĝo iras al Alico, la dua iras al Alice kaj Bob, la tria iras al Alice kaj Bob kaj Charlie, tie la tre multekosta eraro Mi faris tiun jaron. Do ni vidu. Ĉu estas demandoj antaŭ ni sendas al vi ĉiuj teksto mesaĝo kun 10 procentoj probablo? Demandojn? Bone. Ni min iri en ĉi tie kaj ŝanĝo la pasvorton al kio devus labori, verŝajne get lerta kvaronnoto de Gmail. Do ili eble ne iros cxiuj ekstere, ĉar ili probable ne amas nin sendanta retpoŝtojn 800 en por buklo ĉiuj samtempe. Ekde tio ne aparte homa konduto. Ho, mi tuj ŝanĝi unu alia afero. Supren al la supro, mi tuj sent-- ŝanĝi la dosieron al studentoj dot CSV. Kaj mi ne malfermos tiu, sed tiu estas identa CSV -dosiero kun ne 100 kunlaborantaro, sed 800 studentoj, nur de Harvard, ĉar Yale havas oktobro receso tiu semajno. Kaj ŝajnas kiel ia ekskuo afero fari al teksto cxiuj estas kiel al kial ili ne estas en klaso dum ferio. Estas bone. Nur Harvard studentoj hodiaŭ ene de tiu dosiero. Kaj nun ni revenu al mia fina fenestro. Mi iomete nervoza. OK tiel nun mi tuj iros en la dosierujo, kaj PHP teksto skalara PHP. Ĉu per kuraĝa volontulo? Do mi ne volas ĉi min. OK, venu supren. Kio estas via nomo? Maya: Maya. Parolanto 1: Maya. Venu supren, Maya. Bone. Ni vidu se tio funkcias. Mi metis mian propran retadreson en la file-- mia propra telefonnumero en la dosiero, tiel ke espereble mi ricevos unu ankaŭ. Agrable renkonti vin. Maya: Same. Parolanto 1: Do ĉiuj vi devas fari estas Frapo eniras sendi 800 mesaĝoj de teksto, se mi ne ŝraŭbi supren. Nice. Povus preni momenton, statistike, ĝis ni atingos retmesaĝon address-- teksta mesaĝo tio en la ĉambro nun. Ni restadi kaj vidu. Spektantaro: [fajfante] Parolanto 1: Ho, jes. Publiko: Ho, Gotcha. Parolanto 1: Por maŝojn are-- ĉi ne malrapidas pro PHP. Tio estas malrapida ĉar Gmail estas sxancelan ni kaj ne lasi nin sendas pli ol kiel unu retpoŝto sekunde. Io ajn? Tio estis malfacila afero por mi testi je hejmen kun nur mi kaj mia unu telefonon, do. Ĉu tio espereble el la bot? Jes? Neniu? Diru jes. Neniu? Estas de amiko? Malgracia. BONE. Sufiĉe certa ĝi estas laborante kvankam. Uh oh. Ili black-- ho, atendu minuton. Ho, vi scias kion? Momenton bonvolu. Nur Maya kaj I-- Mia, ĝi estis? Maya: Maya. Parolanto 1: Maya, tuj scii kio mi pekos ĉi tie. Ho, atendu momenton. Mi kredas ke mi ĵus sendis 100 teksto mesaĝojn al 555-1212. Stand by. Mi ne povas gajni ajna jaro. BONE. Maya? Ripari ke en post produktado. Dammit! Sekvante adreso. OK, staras apud. Pardonon. Ĝi estas dolora ĉiujare. OK, unu momento. Tio estas bona. Mi anstataŭe faros tion. Presi adreso. OK, staras apud. Presi adresoj, krampo i. Jes, mi ŝatas tion. Dolaro sign-- OK Mi klarigos kion mi fari en momento, post mi kuras ĉi. Ĉiujare. OK, tie ni iras. Mi havas just-- kaj mi ne volas montri ĉies telefonnumero, sed Maya povas konfirmi kun kapjeso de la kapo, ke ŝi vidas ĉies ajn Telefonnumero en la klaso ke mi tuj kopii en programo nomata Gmail. Kaj se en Gmail, kion ni volas diri? Vi mankas al mi. Love-- tio ne de mi. Mi eĉ ne trafis sendi ankoraŭ. Do ni iru antaŭen kaj fari tiu, se mi povas zomi. BONE. Do mi uzas programon vokis Gmail nun. Se Maya, vi ŝatus klaki la Sendi butonon, ni simuli kion tio kodo devus esti farita. Io ajn? [Beeps] Publiko: Yep. Parolanto 1: Jes? Savo? Publiko: Yep. Parolanto 1: Miss vi. Kaj mi tuj sendos la reston. Mi sendis duono ĉar mi ne pensis Gmail lasus tiujn trairu. Do simple memoru, hodiaŭ estas la tago ke vi lernis ke mi povas uzi Gmail. Tio estis hororigaj. Granda aplaŭdo al Maya. Dankon. Bone, do. Kio [Beeps] Ni havas kelkajn beeps, jes? Bone. Nun mi iros akiri 700 vere malfeliĉa retpoŝtojn reen de samklasanoj. Do almenaŭ ni vidos se ke valoris ĝin. Do kio misfunkciis? Mi elkompreni iris erara post la fakto, sed nur rigardi kiel facile estis fari ke en PHP. Do kion ni povas reale fari nun ke ni havas ĉi esprimpovo de PHP. Ke was-- ke estis terure. Bone. Do estis devus esti foririnta. Tiu estis mi elprovanta ĉimatene sur mia telefono, fakta ekrankopio de mia telefono. Sed nun ni pripensu kial ni vere enkonduki ĉiuj ĉi aferoj en la unua loko. Do la celo estas ne skribi tiujn programojn kiuj skribitajn en la komanda linio, dekstra? Do mi skribis simplan saluton programo, mi skribis iom programo kiu faras Conditionals, kaj uzis legita linio kaj tiel antaŭen. Kaj en teorio, mi nur skribis programo kiu elsendis 800 mesaĝoj de teksto, donu aŭ preni 800. Kaj tiu programo estis ĉiuj ankoraŭ kuri al la komanda linio. Kaj tio kompreneble estas ne la retejo, ĉu ne? La celo nun estas ekuzi kion mi asertas estas pli facile uzi lingvo, supozeble pli potenca lingvo en terminoj de la karakterizaĵoj kiuj venu kun ĝi, por komenci skribi kodon kiu generas retpaĝoj. Do lastan fojon kaj pasintsemajne, ni parolis pri HTTP kaj HTML. Kaj kio estas agrabla pri HTML estas ke ĝi estas nur pura teksto. Kaj teksto certe iu kiu vi povas presi per laŭvorte nomante la presaĵo f funkcio, aŭ la presita funkcio. Kaj efektive, jen kion PHP estas nun tuj permesos al ni fari. Do inter la ekzemploj ni havas en hodiaŭa fontkodon, krom iuj de la kodo ke mi metis tien antaŭ momento, ni havas programojn kiel ĉi ekz. Froshims, aŭ Freshman Intramural Sports, estis fakte unu el la unuaj extracurriculars Mi akiris okupita kun jaroj. Kaj mia samĉambranino kaj mi, kun iuj aliaj infanoj sur kampuso, uzita por kuri la froshims programo. Mi pretigas mian tekston mesaĝojn nun. Nun do ni, reen en la tago, tial ĉi Estis 1996 aŭ tiel, estis Interreto, sed ne estis process-- tie neniu retejo por froshims. Kaj do se vi volis registri futbalo aŭ flugpilkon aux kio ajn, vi devus plenigi tion nomata paperpeco, kaj vi piedirus trans Harvard jardo, kaj vi devus gliti ĝin en la poŝto fendo de la proctor, kiuj Estis en Wigglesworth, unu el la dormejoj. Kaj tiu estis vi registritaj. Kaj li aŭ ŝi estus tiam formi retmesaĝon al vi permane, multe kiel mi ĵus faris tie kun Maya, kaj tiam vi estus konfirmita kiel estis registrita. Do tiu estis kiel malaltaj pendantan frukto, tiel diri. Estis speco de stultaj ke ni uzis papero por tio ĉi. Mi volis nin povi nur iri en retejo, aŭ havas la unuajaruloj iri sur retejo, registriĝu por sportoj, kaj ĵus aŭtomatigi multajn tiun materialon metante iliajn nomojn kaj retpoŝtoj kaj tiel plu en datumbazo. Kaj fakte, la tre unua versio de la retejo, uzante súper malbela HTML, eble rigardis io tiamaniere. Fakte estis, ironie, pli embarasanta belaj ol ĉi reen tiam. Sed mi uzis programlingvo. Ne PHP, sed prefere nomis Perl, kiu estas pli malnova lingvo, sed tre simila en spirito. Kaj mi simple tute instruis ĝin al mi mem. Kaj ĝi prenis min momento kalkuli ĝin ekstere, demandante multaj demandoj de amikoj. Sed la ideoj tie estis ekzakte la sama. Pro kio PHP estis vere desegnita cxar ne la komandlinio aĵoj ni nur ludis kun, sed por ttt programado. Ĝi estas vere alligita lia trajto fiksita al la retejo, kiel sekvas. Jen froshims. Kaj se mi volus registri en tiu formo, ĉi estas sufiĉe malbela, certe, sed lasu min antaŭeniri kaj esti malpli komfortaj studentaj, kaj kion ajn sporto por Matthews, klaku Registro. Kion mi volas povi fari estas prezenti informon de formo, ne al Google servilo kiel ni faris lastan fojon, tute trompado uzante ilian backend, mi volas apliki mian propran backend kodo. Kio signifas registran PHP kodo kiu vivas ĉe retadreson ke formularaj datumoj povas esti proponita. Kaj tiam via kodo, skribita en PHP sur servilo, tiam povas respondi al tiu uzanto enigo. Kiel lia aŭ ŝia nomo, nek komforton nivelo, aŭ dormejo, kaj tiam fari ion per ĝi. En tiu kazo, mi simple stulte presita ĝin kiel teksto, kiu finfine ne bela. Sed vi povis ja imagu, se vi scias HTML, kaj vi baldaŭ scios kiel generi HTML kun print f, kaj presaĵo, kaj similaj funkcioj, vi povas certe generi pli bela retpaĝo kiu diras, hey Davido, vi nun registrita. Vi estas malpli komforta studento de Matthews, dekstra? Vi povas simple uzi tutan aron de% SES aŭ la krispa krampoj kaj dolaro signo notacio mi uzis antaŭ momento, al generi teksto kiu estas pli uzanto amika ol tio. Do ni rigardu ĉi tiu dosiero. Froshim nul streketo PHP aspektas jene. Kiam mi reŝarĝi CS50 IDE, froshim nulo aspektas jene. Jen froshim nul streketo PHP. Kaj kion vi rimarkas pri ĉi dosieron? Spektantaro: [inaudible] Parolanto 1: Pardonu, iom pli laŭta? Spektantaro: [inaudible] Ĉio en HTML. Kaj fakte, ĝi estas, ĉar kio estas interesa pri PHP estas kiu estis desegnita esti, por pli bona aŭ por malbone, intermiksitaj kun HTML kodo. Kaj fakte, kvankam ĉi dosiero, froshim nul streketo PHP, havas PHP komenton ĉe la supro de ĝi, ĉio nur HTML. Sed kontraste, se mi malfermas, ni diru, aliĝu nul streketo PHP, kiu nur havas grandan rimarkon ĉe la supro. Tio ankaŭ aspektas preskaŭ tute kiel HTML, krom por kio? Linio, kio, 21 aspektas iom stranga. Sed rimarki Mi eniras PHP mode kun malferma krampo demandosigno PHP. Tiam mi havas kelkajn aĵojn. Kaj poste fine de tiu linio preskaŭ mi havas, demandosigno PHP. Kaj jen, kion mi celas per intermiksitaj. Vi povas skribi HTML kiu vi ĵus volas la servilo por kraĉi. Sed se vi volas fari ion dinamika partway tra la paĝo, kiel enmeti mian nomon aŭ dormejo aŭ komforto nivelo, Mi povas uzi funkcio kiel presaĵo r, kiu estas presi rekursie, kiu signifas nur presi ĉi variablo, formatado ĝi tamen vi volas. Estas vere ne cxar homaj intencoj, estas nur por rafinado aŭ diagnozaj celoj. Do jen kiel mi faris tion. Se mi anstataŭ iri froshims du skalara PHP, rimarkos ke la agado de tiu formo ne registris nul streketo PHP kiel la old-- la antaŭa praktiko estis. Sed gxi registris du skalara PHP. Do ni rigardu kiel ĉi tiu kondutas iom malsame. Se mi iras en versio du. Se tie, se mi registru kiel David, malpli komforta, el dormejo de Mathews, registri. Do ĉi tiu fojo diris, vi registras, ne vere. Vidu kion mi faris tie. Se mi rigardas registro du streketo PHP, tiu havas iom pli PHP kodo. Estas iom purigisto, kvankam ĝi ankoraŭ envolvas iom longe sur tiu linio. Rimarku tie. Mi presi miajn HTML tag, mia kapo etikedo, mia titolo etikedo, la kapo, la korpo. Kaj tiam mi komencas diri aĵoj kiel eniri PHP modo. Kaj por ke etikedon, malferma krampo PHP-- demandosigno PHP diras, hej, servilo, execute-- interpreti la jenajn aferojn kiel PHP ĝis vi vidos la fino etikedo. Kaj kvankam vi eble ne scias ajnan aliaj PHP ol vi vidis ĝis nun, vi povas ia legi sufiĉe intuicie. Se nomo estas malplenaj, aŭ komforto estas malplena, aŭ dormejo estas malplena, kion mi faru? Kion mi diras al la uzanto? Vi devas provizi vian nomon, komforton, kaj dormejo, kaj tiel antaŭen. Alie, mi diras vin estas registrita, bone ne vere. Kaj mi ne diras vere ĉar ekzistas neniu datumbazo. Mi nenion faras kun la datumoj. Mi nur forĵeton por pruvo celoj. Nun mi specon de skimped super linio 22. Ekzistas pli sintakso tie, sed dolaro signo substreki post estas speco de interesa. Kaj tiu estas kio estas agrabla pri PHP. En PHP, vi havas kio estas nomitaj kelkaj super tutmonda variabloj. Ili estas speco de eĉ pli grava ol tutmonda variabloj. Kaj tiuj, ĉiuj majuskloj kiel tia, venu kun PHP. Do se vi havas servilon kiu havas retservilo instalita, kiel Apache, kaj vi instalas la lingvo subteno por PHP, subite vi povas ekuzi tiuj super mallokajn variablojn en via kodo. Kaj kio estas agrabla pri PHP estas ke se vi nur skribi dosieron, kiu finiĝas per punkto PHP, metis ĝin sur retservilo, kaj tiam vi submetas formo ĝi tra kiuj ago etikedo kaj formo etikedo, ke ago atributo en la formo etikedo, PHP kaj la TTT tute figuroj el kiom ekpreni ĉiuj tiuj ŝlosilaj valoro paroj eksteren de la URL kiel demando markon q egalas katoj, ĝi elkompreni kiel q kaj katoj. Se vi submetas foton, aŭ uzantnomo, aŭ pasvorton ŝati Facebook, PHP eltrovi por vi kie ĉiuj de tiu data. Kaj ĝi nur transdonu vi asocieca tabelo nomita dolaro signo substreko post, aŭ dolaro signo substreki akiri, depende ĉu vi estas uzante akiri aŭ afiŝi submetadoj. Kaj ĝi nur transdonu vin super tutmonda variablo, tial se vi volas akiri en la nomo ke la uzanto donita per tiu retejo formo, vi laŭvorte ĝuste diri la nomon de la super tutmonda variablo, citaĵo, unquote, nomo. Kaj citaĵo, unquote komforto, kaj citaĵo, unquote dormejo. Kaj ni tuj povos fari ĉi kaj des pli kun PHP. Kaj kvankam ĉi tiu estis ventego rigardeto, ni plonĝi en multe pli proksima semajno. Ni konatigos datumbazo por ke vi reale tuj komencos efektivigo viajn proprajn TTT- komerco based-- kiel retejo en nur unu semajno. Do ni vidos vin proksima tempo, kaj esperas vin akiris la tekston mesaĝojn. Bye. [MUZIKO Ludante] [Pordo] Parolanto 2: Hej. Parolanto 3: Kio nova? Parolanto 2: Kion vi faras? Parolanto 3: Laborante sur problemo aro. Parolanto 2: Nice. Altaj kvin. [HIGH FIVE] Kio are-- uh, kion vi faras ĉi tie? Parolanto 3: Ĝuste eliri. Ĵus revenis de la gimnazio. Mi ne povis ne rimarkos kiam ni alta fived, ke vi havas belan malĝentilaj manoj. Ĉu vi iras al la gimnazio? Parolanto 2: No. No. Parolanto 3: Dude, vi aspektas iom granda. Kiu estas malbona, ĉar ĉiuj scias 8-pilko estas la granda viro sur kampuso. Alta-kvin. Parolanto 2: Uh, ne. Ne, mi opinias min bona. Mi opinias min bona.