[Glazbom] SPEAKER 1: Ovo je CS50 i to je kraj tjedna sedam. Danas je možda gdje smo stvarno učim jezika. Uveli smo u posljednjih nekoliko tjedana HTML i CSS, od kojih ni su programski jezici. I doista, nije iako smo učinili pogledajte gotovo sve oznake koji dolazi s HTML i gotovo svi od svojstava koje CSS dolazi s, to je vrsta to za HTML i CSS. Samo ćemo se općenito započeti pretpostavkom da vas razumjeti opće ideje oznaka i atributa, a stranice se šalje od klijenta do poslužitelja. Budući da smo danas početi gledati na drugi programski jezik, PHP. Mi ćemo učiniti super brzo. Nećemo vas naučiti PHP po sebi, baš kao što nije težiti da vas naučiti C, sami po sebi, nego programiranje. I doista, jedan od Ciljevi za ovaj tečaj nije vas naučiti C, ili HTML, CSS, ili, ili PHP, ili bilo kojom drugom krilaticama ili akronimi, nego u računalnoj znanosti i kako programirati temelja. I doista, danas početi da se ti trening kotači off sve dalje leti kroz jezik zove PHP, kao što slijedi. Evo što taj jezik izgleda. Ispada da nema potrebe za glavni funkcija u programu zapisano na jeziku zove PHP. Tako da već zvuči malo jednostavnije od C, s kojima smo upoznati. Ispada da ako žele proglasiti varijablu, to učiniti gotovo identično C. No, postoji jedna razlika ovdje očito kad kažem niz, ili možda dva razlike. Ono što izgleda drugačije? PUBLIKA: Dolar znak. SPEAKER 1: Da, tu je dolar potpisati, što nikada prije niste vidjeli. A što nedostaje? Da? PUBLIKA: [nečujan] SPEAKER 1: Da, nema tip podataka. Tako ispada da je PHP je ono što mi nazovite labavo upisali jezika, gdje C snažno upisali. Labavo upisali samo znači da postoje različite vrste podataka, postoje žice i Ints i pluta. Ali računalo figure koje van. Ti ljudski programer ne moraju to shvatiti. Dakle, sve što morate učiniti proglasiti varijabla je dolar znak, naziv svoje varijabilna, a zatim, na primjer, citat citat, Hello World. Pa to je ono što stanje izgleda u PHP-u. Sve razlike? Ne. Tako ispada to su identični. A možda ima manje grane ili više grana, ali sintaksa skretanja točno isto. Boolean izrazi mogu se naručiti zajedno. Boolean izraza može anded zajedno. Vi još uvijek imate prekidače. Čak i ako niste koristili to, to ne postoji u C i oni su funkcionalno protuvrijednost u PHP-u. A u stvari, u PHP oni malo više moćna. U C, možete samo usporediti sigurno vrste podataka poput Ints i znakova, dok je u PHP zapravo možete usporediti puni perje žice bez potrebe brinuti o upućuje i slično. Dakle, ovdje je za petlju. Ovo je samo pseudokod kod, ako hoćete. No, to je strukturno identični C Evo while petlja, pseudokod therefore-- identičan C Evo učiniti dok loop-- identični. I tako je vrsta ovaj uzorak ovdje gdje postoji nekoliko drugih sintaktičkih Značajke mi doista ide vidjeti. U stvari, ovdje je lijepo Način na PHP kojoj, Ako želite ponoviti preko polja, a vi ne želim skakati kroz mentalne i sintaktičke obruči vlasništvo int i = 0, i manje od n, i plus plus-- koji je samo puno dosadnih sintakse. Možete reći nešto više fluidno za svaku brojeva kao broj, gdje u ovom slučaju znak za dolar brojeve, ja sam uz pretpostavku, je kao niz naziva brojeva. A onda sam uz pretpostavku broj, jednini, će biti promjenjiva. A što PHP će učiniti za mene kao što sam ponoviti tijekom ove petlje je, na svakoj iteraciji, to će ažurirati varijablu broj na biti element ith u brojkama, množini. Dakle, to je samo obrađuje sve to za mene. Nema uglatim zagradama, nema Dolar znak, ne točka-zarezom. To je samo malo jednostavnije. Pa, ako želite da se polje, ispada ti može učiniti nešto prilično slično C. Sintaksa je malo drugačija. No, ovdje je niz naziva Dolar potpisao brojeve. I ja koristiti, u PHP, trg zagrade, ispada. A mi ćemo se opet vidjeti te u JavaScript-- još jedan jezik. Ja samo koristiti uglata zagrada zapis imati zarezom odvojen popis integers, u ovom slučaju. No, to mi daje niz. No, još snažniji u PHP, imamo i ono što su općenito zove asocijativne polja. I puno jezika ima tih kao dobro. Stvar o C polja da su indeksi za niz, ono što vas koristiti u uglatim zagradama preko kojih pristup elemenata, moraju biti što? PUBLIKA: [nečujan] SPEAKER 1: Oni moraju biti brojevi ili cijeli brojevi, posebno od nule na gore. Pa, u PHP-u, te ispada van, na drugim jezicima, možete početi da se indeksi koji nisu numerički. Ali oni su zapravo riječi ili fraze, tako da je umjesto pokušati sjetiti gdje nešto je, ili pohranjene u varijable i, zapravo možete koristiti riječ i reći that-- možete reći ni riječi kao što je ovaj. Dakle, dolar znak citat je naziv varijable ovdje. To je nešto funky sintakse to je povezivanje dva ključna vrijednost Parovi za ovu varijablu. Naime, ovo me daje niz koji je duljine 2. No, indeksi nisu 0 i 1. Indeksi su citat citat simbol i citat citat cijenu. A vrijednosti tih indeksa, odnosno, je FB za Facebook i 79,53 $, kad sam zadnji provjeriti cijenu za to. Što to znači? Pa, to znači da je umjesto pisanja koda ovako, gdje sam učiniti nešto kao što je dolar sign-- odnosno, u C Ja ne bi ni imati znak za dolar. Ja bih nešto učiniti kao što su citati, a zatim Ja bih napraviti nosač sam se na neke samovoljno numerički indeksirane vrijednosti. Od danas u PHP-u, ako vas žele doći u nekom vrijednosti, mi nekako ima više semantička izražajnost. Samo fancy način govoreći možemo samo nazvati stvari ono što su oni. A ako želite da biste dobili na nešto simbola, Sada možete doslovno napraviti citat citat simbol u uglatim zagradama umjesto pukog broja. Dakle, to je lijepo praktičnost. I to je vrsta to za sada. Postoji grozdova druge značajke u PHP. I doista, PHP dolazi s poslovičan sudopera. Deseci, stotine funkcija dolaze s PHP-- tako mnogo više nego što je došao sa C. I to ne namjerava pobijediti nego pomoći shvatite da nema više napisati šifru to je vrsta ovdje konceptualno. Sada mi samo možemo početi uzimanje prednost od mnogo više naprednih značajki da jezici poput PHP ima. Dakle, ne morate brinuti o premještati okolo stvari u memoriji. Ne morate brinuti o malloc i sve ove niže razine, moćna pojedinosti koje će se boriti sa, ako ne i borba s, pset5, ali možete početi Uskoro uzeti zdravo za gotovo. U stvari, neka je napisati super jednostavan program u PHP-u, kao što slijedi. Ja ću ići glavom u CS50 IDE ovdje i što ću raditi je stvoriti novu datoteku, to je vrlo jednostavno koja će se pod nazivom Pozdrav dot PHP. Dakle, umjesto točkica C, to je će se zvati dot PHP. A onda je u ovoj datoteci, Mogu početi tipkati. Ali ispada da je Jedno moram znati je da je bilo PHP datoteke u cjelini, treba početi s nekim posebnim sintakse. Slično u duhu u HTML, ali opet, PHP je programski jezik, a ne jezik za označavanje. Tako svaki datoteku, a to je vrsta glupo izgleda ja ću priznati. Otvori konzolu, znak pitanja, PHP. A to je samo Jezik je način govoreći, hej, računalo ovdje dolazi neki kod pisani jezikom zove PHP. A onda na samom kraju svog datoteke, vi kakve vrsti suprotno. Ne opet pisati PHP, samo napraviti upitnik, kut nosač. I onda sve što stavite u od ove dvije oznake, da tako kažemo, će biti, ili bi trebao biti, PHP koda. Tako ćemo napraviti nešto super jednostavno. Ja ću ići naprijed i učiniti ispis def, halo svijet, backslash nje, spasi. A sada na mom redak, idem učiniti, napraviti hello-- ne, ja ću učiniti, dot slash zdravo. Ne, točka Slash, hm. Dakle, nešto je drukčije. I doista, ovo je ključna razlika između PHP i jezika poput C C je tzv sastaviti jezika. Što to znači za C treba sastaviti? Što je dublji smisao? Da. PUBLIKA: to napisao u strojni kod tako da bi se moglo pokrenuti od strane računala. SPEAKER 1: Točno. Moramo najprije pretvoriti u Takozvani stroj kod, nula i jedinica, prije nego što će zapravo biti izvršna i razumjeti računala. Intel iznutra. Do CPU unutar računala. PHP, za razliku od, je ono što se zove tumači jezikom, koji znači da ga ne sastaviti u nula i jedinica, strojni kod, što ga umjesto ostaviti kao izvornog koda. I ti umjesto da ga prođe kao ulaz u programu, tumača da je netko drugi napisao godina da ga razumije redak po redak, znak za znak. Tako je u drugim riječima, ljudi vani je napisao program koji će gledati na kodom redak po redak, i shvatiti ono računalo treba raditi, bez pretvaranja izravno nula i jedinica. Dakle, ako se vidi for petlje, taj takozvani tumač će biti kao što je, u redu, ja bi trebao nešto opet i opet i opet. Što da napravim? Dopustite mi da pogledate sljedeći redak. Dopustite mi da pogledate sljedeći redak. I doista tumači ga liniju po liniju. Tako da ga izvrši, ne koriste make. Ne koristite dot udarac u ovom slučaju. I umjesto da to PHP, što je naziv programa, a.k.a. Tumač, to je unaprijed instaliran u CS50 IDE, i sad moram proći naredbenog retka argument, koji je jednostavno naziv podnijeti da želim interpretirati. Ili još usput, da želim pokrenuti. I ako sam pogodio Enter, tu smo ga. Bok svijete. Sada ispada da sam Rabljeni ispisa def namjerno nas most od C do PHP. Većina PHP programera, kao što ćete vidjeti, uopće ne smetaju pomoću ispisa def. Oni jednostavno koristiti funkciju pod nazivom ispisa, što C nije imao. I tako, ako sam ga ponoviti i sada, to je zapravo ponaša funkcionalno isti. Ne mogu koristiti posto S i posto ja i tako dalje, ali postoje i drugi načini u PHP i radi. Ali to je samo kažu da sintaktički, osim nekih čudnih stvari vrh, a neki čudni likovi dolje na dnu, koncepti sad programiranje u ovom drugom jeziku će biti isti. U stvari, neka je učiniti jedan drugi primjer. Tako ću ići naprijed i zatvorite ovu datoteku. Dopustite mi stvoriti još jedan koji Nazvat ću uvjete 1 točka PHP. Dakle, nema nule, jer ono što sam učinio Bio sam pogledala natrag prije nekoliko tjedana, imali smo datoteku pod nazivom Uvjeti 1 točka C A što Ja sam se to pretvara u mom glava, a ovdje na papiru, i uskoro na stazi a web stranice, redak po redak u PHP. Tako je u C verziji, da smo učinili nešto kao string a dobiva dobili niz. Dakle, to je malo drugačije učiniti da u PHP-u. Umjesto toga, ja samo idem učiniti, ili bolje rečeno, sam mogao učiniti int n dobiva doći int, u ovom primjeru ranije. Dakle, umjesto toga, ja ću učiniti n dobiva pročitati liniju, ja bih cijeli broj, molim. Dakle, ovo je samo moj upit. I tako ispada, a Ja bi samo znao to od što čitati ili vidjeti funkciju prije, pročitajte linije funkcija u PHP Potrebno je argument da je brz za čovjeka, a njegova svrha u životu je čitati jedan redak teksta da on ili ona vrsta u. A onda se pohranjuje da Tekst u varijablu n. I sada sam možda želite učiniti nešto kao što sam učinio prije nekoliko tjedana, u tjednu kao jedan od klase. Ako je n veći od nula, onda idem posuditi tu sintaksu smo upravo vidjeli, Ispis def, ste odabrali pozitivan broj, backslash nje. Inače, ako je n jednak nula, ja sam ići naprijed i reći, print def, ste odabrali nula kose crtice n. Inače, slučaj ovdje trebao naravno biti, print def, ste odabrali negativan broj. I svakako možemo provesti logika ovu stvar u hrpa različitih načina, ali poanta ovdje je da sintaktički, jedva nešto novo. To je samo znak za dolar i nova funkcija i čitati linija. Ali bitno, što je novo Sada je sam tumačenje ovoga. Ja sam to prolazi kao ulaz u drugi program. Dakle, ako želim raditi ovo, ako Nisam napraviti nikakve pogreške, Idem trčanje PHP, od Uvjeti 1 točka PHP, Enter, Idem upisati broj 50, i pretpostavimo za sada to radi. Jer logika je Ista stvar kao i tjedan jednom. U redu, tako da je prilično underwhelming, zar ne? Mogli bismo to učiniti u bilo broj jezika. Učinimo nešto tako moćniji. Završimo problema postaviti pet. Tako ću ići naprijed i učiniti. Idem stvoriti datoteku zove rječnik dot PHP, i nagnut kao što bi moglo biti otimati dolje puno bilješke, bilješke će samo pomoći što ako ste dopušteni provesti problemi postaviti pet u PHP-u. No, vidjet ćemo kako brzo sada smo mogu provesti taj isti problem set. Tako u rječniku dot PHP, ja odlazim pretpostaviti da je već datoteka na svijetu se zove Speller. I doista, ja sam to unaprijed, i nećemo prošetati kroz ove linije od linije, ali ako ste znatiželjni kasnije i stvarno želite završiti svoj um oko razlike između c i PHP, doslovno usporediti ove datoteke, bukvar, iz današnje izvornog koda da ćemo objaviti kasnije Danas, protiv p set Pet bukvar točka c da vam dati, i to je gotovo isti redak po redak. Postoji još nekoliko Dolaru znakove. Nekoliko funkcije malo drugačiji. No, to je lijep način od vrsta budući da li prevesti jednog jezika na drugi. I to je gotovo identičan linija za liniju. Ali ja ću pretpostaviti da je postoji, i što ću raditi ovdje je pokušati raznijeti svoj um reimplementing cjelokupnost problema postaviti pet put brže nego što ste radili do sada. Tako na primjer, ja ću prvi proglasiti globalnu varijablu pod nazivom veličina, i postaviti je jednaka nuli. Sada to nije mnogo uštede. Tečajevi se provode li Veličina ljepušan velik dio isti, ili hint hint, večeras ili sutra će, samo pomoću globalnu varijablu pod nazivom Veličina i postavljanje ga jednaka nuli. To nije osobito nevjerojatna spojler. Dakle, ono što su vaši podaci strukture izbor, oni od vas koji su zaronili u i pročitajte spec, strukture koje podatke su većina od vas su koristili? Hash tablica ili probati, možda njihovi neke varijante. Dakle provedbi hash tablicu barem, je vrsta puno linija koda, zar ne? I nisu svi od njih može biti funkcionalan u ovom trenutku u tjednu, ali to je u redu. Budući da u PHP-u, ako sam Želite hash tablicu, učinjeno. Pravo? Tako da varijable koje sam Samo proglasio je očito zove dolar znak stol, po uvođenju prije. Ali ja stvarno samo želim, na kraj dana, niz. Ali nije brojčano indeksirana polje, jer to je kao tjedan-dva stvari, kad smo razgovarali o tome polja. Želim hash tablicu. Ali hash tablicu stvarno samo konkretan način govoreći, Želite se asocijativni niz. Želite li biti u mogućnosti suradnik tipke sa vrijednostima. Tipke sa vrijednostima. Što je rječnik, doista? Pa to je cijela hrpa ključeva. Riječi kao što su jabuke, kruške, banane i, i sve te engleskih riječi da ti ruku. A vrijednosti koje ste učinkovito umetanje u svoj rječnik su ili istinite ili odsutnost, lažna. Drugim riječima što su umetanje cijela hrpa ključnih parova vrijednosti, jabuka, istina, kruške, istina, banane, istina. Tako da kad popravljanje ili tražiti do tih podataka na vašem hash tablicu s check funkcije, ti si bilo dobivanje natrag odgovor, Da, to sam pronašao u mom naselju hash tablicu, ili ne, to ne postoji, tako da return false. Dakle, za to, sve što trebate je podataka Struktura kao što sam predložio prije. Samo trebam biti u mogućnosti povezati riječi kao, citat citat, simbol, s vrijednošću poput, istina. Tako da je moj hash tablicu. Idemo zapravo ga koristiti. Dakle, postoji nekoliko funkcija Trebam provesti. Idem da ide naprijed i gristi off funkcija zove veličine. Potrebno bez argumenata. Ja ne moram gnjaviti s riječ, praznina, u PHP. Ja sam jednostavno ide za povratak veličinu. I usput, PHP ima ovo minorly neugodno detalj, gdje ako nešto je globalna, morate reci funkciju u kojoj ste koristeći je, hej, ovo je globalna varijabla. Dakle, manje gluposti, ali vas morate to napraviti svejedno. Dakle, što je s opterećenjem? Idem za provedbu funkcija zove opterećenje koji se u ime rječniku, baš kao u problemu postaviti pet. I prije nego što sam nastaviti, primijetiti da nisam bio upišete dosta iste stvari. Što je očito drugačija u PHP o kako se proglasiti funkciju u odnosu na C? Da. PUBLIKA: [nečujan] SPEAKER 1: Nema kategorije povratka. I doista, to je slučaj, PHP utoliko što je labavo upisali, Također je malo neuredan u tom smislu. Ne navodi kao programer što ova funkcija vraća. Ti bi zapravo izgleda u kodu shvatiti da se. Ili čitati komentare ili dokumentaciju. Dakle plusevima i minusima od ove vrste odluka. Ali ja moram reći ključna riječ, funkcija. A kad smo saznali JavaScript u par tjedana ćemo vidjeti istu stvar opet, ali to je ista ideja. Naziv funkcije, njegov argument ili argumente ili nedostatak istih, i sada Ovdje je provedba. Tako ću izrezati neke ugla jednostavno biti dramatična samo na trenutak. Ali ja ću ići naprijed i reći ovo. To je kako ja mogu učitati datoteka u niz. Tu je funkcija u PHP naziva datoteka. Vi se naziv datoteke ruke. To vam ruke natrag niz, unutar od kojih je svaki redak iz datoteke. Od nula, jedan, gore na n minus 1 redaka. To je to, zar ne? Nema f čitanje. Nema f get a. Nema posto a. Nema glavobolje. Nema feof. Sve te stvari s kojima ste hrvanje, možda, s p postavite četiri i pet, ide dalje. Dakle, upravo sam pročitao te linije u datoteka, a onda znate što? Ako želim ponoviti nad tim riječima, Ja mogu učiniti, za svaki način kao i linije. Sjeti se da je to vrsta pametan način Ponavljanje preko polja, indeksa indeksom, a na svakoj iteraciji poziv trenutni redak, dolar znak linije. I ovdje ću otići i kažu stol, zagrada, crta, dobiva istina. Drugim riječima, to je kako sam umetnuti u moj hash tablicu u PHP-u. Kažem znak za dolar stol, koji moj asocijativni niz koji je prazna po liniji koda gore iznad. Onda sam indeks u nju Ne, pomoću brojnih, ali doslovno pomoću ključne riječi koje mi je stalo. Možda je jabuka ili kruška ili banane ili bilo što, ali konkretno sam indeksiranje u njega kao što sam predložio ranije. Ja se ime moje asocijativni niz, a onda sam koristiti citat citat u četvornih zagrade s nizom, umjesto stvarnog broja. I tako to je to. Funkcija učitavanja učinjeno. Nakon tog procesa iterira, ja sam stavio sve u hash tablici. Sada mali disclaimer, postoji par stvari trebam popraviti. A verzija ću objaviti na internetu će imati sve nijanse, ali to je uglavnom samo će biti neki Provjera pogrešaka i neke manje ugađanje. Ali to je doista suština. Ako sam sada žele provesti funkcija zove ček, što očekuje Riječ kao svoj argument, kako bih mogao ići oko radiš to? Pa, ja sam jednostavno reći, ako je unutar mom stolu, na mjesto riječi, ako je postavljen. Dakle, ako postoji is-- Zapravo, znaš što? Ja ću to učiniti u malo pseudokod. Ali ideja je ista. Ako je to jednako vrijedi, povratak istina. U redu. Else-- možete vrsta vidjeti gdje to je going-- se vratiti false. Gotovo. Provjerite je učinio. Prilično lijepo, zar ne? I što je to zapravo ciljaš? I to previše, izrezati sam neke ugla. Pogledajte inačicu online za sve blagih nijansi. No, to je suština. Indeks u svoj asocijativni niz, a.k.a. Hash tablici, vidi ako postoji vrijednost tamo, ako je postavljena na true, a ako je tako, povratak istina. Tako smo reducirane sve složenosti. Dakle, vrsta uma puše, zar ne? Neću gnjaviti ga završivši s istovariti, jer u fact-- oh, znaš što? Da, neka ga završiti s istovariti. Iskrcati u hash tablici može izgledati kao funkcija istovariti, vratiti. U redu, tako da je iskrcati. Zato nema ništa iskrcati, zar ne? Nema malloc. Nisam izričito pitati operativni sustav za ništa. Upravo sam počeo koristiti varijable. I tako je i to manifestacija značajke viših jezika razini. Pa opet, većina tog izraza smo se bave ovdje s C. super niskoj razini. Možete vidjeti memoriju računala. Možete dodirnuti ništa vam žele u računala RAM-a, za bolje ili na gore. Ovdje gore, idemo odustati tu moć. Ali Bože moj, pogledajte kako a još manje kod sam napisao. U stvari, ako ne razgovarali i razgovor preko moje tipkanje, mi bi bili učinili s ovaj primjer prije pet minuta. Dakle, što je cijena koja se plaća? Pa neka je pogledati. Idemo pogledati. Ja ću ići naprijed i pokrenuti CS50. Dopustite mi da prije odem u današnji primjeri gdje Imam tekstova imenik kao i prije. Idem pokrenuti rješenje koje to dolazi s problema postaviti pet naziva bukvar, koji je u CS50 račun. I ja ću ga pokrenuti na nešto velika poput Biblije kralja Jamesa, samo tako da smo stvarno staviti osoblje rješenja testa. Sada ponekad internet je malo sporije, malo brže, bi moglo potrajati za pomicanje. No, to je ukupno .56 sekundi za provjeru pravopisa King James Biblija pomoću rješenja osoblja. Dakle, prilično dobro. Tvoja bi moglo biti puno sporiji, i to je sasvim u redu. Ali, to je točno ovdje. Dakle, to je rješenje osoblja. Ako sam otići i počistiti PHP inačicu. I ja ću učiniti malo kao i pečenje pokazuju stvar. Idemo uzeti kod sam napisao ranije, tako da je savršeno točna. Budući da je broj sam napisao ne ide biti savršeno točna upravo sada. Ali, ako sam pokrenuti PHP inačicu, što moram odustati danas? Uzeo mi pet minuta da provesti p postaviti pet, tvrdim. Što cijenu sam platio? Da. PUBLIKA: Brzina. SPEAKER 1: Brzina. Kako to misliš? PUBLIKA: To će potrajati duže. SPEAKER 1: U redu. Da vidimo. To će potrajati i duže, ne pisati, ali da ga pokrenuti. Da. Dakle, pokušajmo to. Dakle ovdje ću ići naprijed i učiniti PHP od Speller, i zato što je datoteka je zove bukvar. Pa nisam trčanje rječnik, podsjetimo, Ja vodim program pod nazivom bukvar. Idem proći u istom datoteka, kralj James peti. To je leti. To može biti samo internet brzine, tako da ne čitaju previše u to. No, to ne osjećam se više sigurno. 1,26 sekundi. A da je još uvijek prilično prokleto brzo, zar ne? A jedini razlog da se osjećao kao više kao tri ili četiri ili pet sekunde, to je samo zato Internet je bio spor. Vrijeme računalo proveo je 1,26 sekunde, u odnosu na 0,56 mislim. Dakle, više nego dvostruko sporije. Dakle, to je još uvijek prilično darn brzo, ali to je manifestacija od, doista, da je točna cijena. Zato smo tumače u koda redak po redak, i taj program PHP čita moje kod vrha do dna, s lijeva na desno, to mora učiniti više razmišljanja. To je na neki način pretvoriti da unutar sebe u odgovarajućem stroju kod u letu, da tako kažemo, iako mehanike su malo drugačiji. Umjesto da samo hranjenje na Intel CPU sirovi nula i jedinica da razumije nativno. Dakle apsolutno, ruke dolje, mi smo platili cijenu. I kod napisan u jeziku poput PHP teži biti sporiji. Ali moj Bog. Dakle, sada kada sam provjeru pravopisa moj file, sam provesti dodatni 0,7 ili tako sekundi vs 20 sati provoditi brži provjeru pravopisa, zar ne? To je vrsta trgovine off. A ako ste tek počinje p set pet, možda neće biti 20 sati. Moglo bi biti daleko manje od toga. No, to je trgovina off, za ozbiljno. A ako radite kod na stvarno velik setovi podataka, ili čak stariji hardver, one vrste različitosti svakako može dodati gore. Bilo kakva pitanja do sada? Da. PUBLIKA: [nečujan] SPEAKER 1: Žao nam je, može ti to reći još jednom? PUBLIKA: [nečujan] SPEAKER 1: Vi ste odustajanje vrijeme. Pa, da. Vi se štedi vrijeme Ne da ga sastaviti, ako je to ono što tražimo. I doista, u CS50, većina programa, iako bi moglo potrajati pisati, oni su relativno kratka. Nekoliko desetaka, nekoliko stotina linija koda, pa su sastaviti prilično brzo. Ali kada pokrenete pisanje većih programa, kao i ako ste Microsoft ili ste Google i pisanje stvarno velika programi u C ili C ++ ili slično sastavio jezici, može potrajati mnogo sekundi, ili čak minuta ili duže sastaviti milijune linija koda. A tamo, da Razlika će se zbrojiti. A u stvari, kad smo Prijelaz danas, istog dana Danas, na web programiranja koristeći PHP, ti si će ga pronaći samo toliko više ugodno pisati kod kad ne morate učiniti to glupo koraci poput promjene na vašem terminalu prozor, tip make Pozdrav, ponovno pokrenite ga, ponovno prozor. Samo toliko glupi mehanički koraci koje samo dobiti na putu radi zanimljivo, zabavno raditi. I doista bacamo da daleko s PHP. I možemo komunicirati s njom brže. Da. PUBLIKA: [nečujan] SPEAKER 1: Naravno. Mogu li pojasniti što je to znači treba tumačiti? Kada sastaviti jezika kao što su C, to ide dolje kao što smo rekli na stroju kod, nula i jedinica. I Intel odlučio godina da određeni obrasci nula i jedinica predstavlja zbrajanje, oduzimanje ili, ili ispisati, ili druge osnovne operacije. U svijetu interpretativnom jeziku kao što su PHP ili Javascript, ili Python, ili Ruby, ili grozdova drugi, umjesto da je netko napisao je interpreter-- u ovom slučaju, to je također pozvao PHP, identične ime od language-- koji bitno ima veliku petlju u to da iterira nad svim linijama koda da sam ga hraniti kao ulaz, kao i pozdravi točka PHP ili rječnik dot PHP. A onda možete misliti njihova velika petlje kao ima puno uvjeta. A ti uvjeti kažu, ako je Ljudsko je napisao ključnu riječ za, početi raditi njegov ili njezin broj opet i opet. Ili, ako je čovjek ima napisano liniju koda, ako je samo izvršavati svoje Sljedeći redak uvjetno. Dakle, to je doista kao tumačenje je u ljudskom smislu, linije strane linije, a to jednostavno treba vremena. Potrebno pretek. I tako to je price-- Dobar question-- mi platiti. Tako ćemo napraviti još jedan demo to je malo više dramatična. Tu je, rekao bih, to je približan po vjerojatnost neuspjeha užasno 90%, ali ćete biti zaprepašteni sa 10% vjerojatnosti. Dakle, svake godine ćemo pokušati to učiniti, pri čemu smo pokušati napisati program koji ide kroz Problem postaviti nulu, za koje ste pošaljete svoje telefonske brojeve i puno drugih demografske podatke, a mi programatski poslati SMS poruku. A onda svačija telefon počne oglašavati zvučnim signalom ili vibrira, i to je upravo nevjerojatna, jer je dobro, pogledajte što računala mogu učiniti. To se rijetko radi ispravno čini se, u velikom dijelu jer obično se na crnoj listi Gmail ili neki drugi servis za zapravo pokušava učiniti na ljestvici. No, smiješno što je previše, jer mi nemaju svi danas ovdje, zabavna činjenica zadnji put smo Pokušao to prije dvije godine, Mislim da sam napisao program koji je sjedio u petlji iterating nad svim učenicima u razredu, a svaki od njih tekstualnu poruku, i rekao nešto poput, zašto nisi u predavanju? Ljubav, CS50 bot. Nemate pojma koliko je apologetski i vrsta bolne e-mail Ja sam dobila odgovor od n minus 100 ljudi koji nisu bili ovdje taj dan. A još smješnije, više sramotno story-- znate, neka je stavi tamo. To je već na videu prije nekoliko godina. Dakle, uskoro će me vidjeti napisati for petlje, pri čemu to je vrlo lako napisati bug u koji za petlje, tako da prvi put kroz petlju, vi poslati jedan SMS poruke. Drugi put kroz petlje I trebali Poslali još jednu tekstualnu poruku, a zatim još jedan tekst Poruka, i još jedan. Ali ispada ako bi pogreška pri upisu kod programiranja, ponekad može pisati programe koji šalju jedan SMS poruke, a zatim dvije tekstualne poruke, zatim tri SMS poruke prema svima koji je već dobio SMS poruku. A kao što znate, radi nešto, plus nešto, plus nešto, plus nešto je veliko O od puno tekstualnih poruka, ili n na kvadrat, ili 0.10 $ SMS poruka, 20.000 $. Srećom sam pogodio Control-C prije toga dogodilo, ali nisam dugujem barem jedan Vaše prethodnika $ 20 za 200 neke čudne tekstualne poruke koje, Ne samo da je otišao u njegovu telefonom, ali Također je bilo starije flip telefon pa se sviđa gurnula iz njegove memorije svaki drugi osobni tekst Poruka je zapravo dobio. Dakle, imamo jedan cilj Danas, ne to učiniti. Možda uključivanje načina rada u zrakoplovu. U redu. Dakle, idemo u Program se ovdje callled-- da ću nazvati tekst dot PHP. I unaprijed, imam dvije datoteke ovdje. Napravila sam datoteku za samo osoblje, koje je dobio sve info članova Misije, sva imena s web-tečaja je. A onda za sada sam samo stavio neki lažni brojevi 555-1212. Dakle, to ne bi zapravo ići nigdje. Ali primijetite unutar ovog CSV datoteke, kojima smo razgovarali o kratko prije u kontekstu datoteke IO. Što je CSV datoteka? Odvojene zarezom varijable. A to je nešto kao vrlo lagana baze podataka, ako hoćete. Postoji vrsta vrsta četiri stupca u ovoj datoteci, a nazubljeni, ali su u biti zarez predstavljaju stupce u spisu. Prvi stupac je TF ili CA ime. Drugi stupac je njihovo prezime. Treći stup je njihov broj telefona. I četvrti stupac očito is-- Četvrti stupac je očito što? U redu, tako da je njihov nosač. Dakle, Verizon, Sprint ili, ili što ne. I ako sam misspoke ranije, CSV. Vrijednosti odvojenih zarezom CSV se ovdje. Što mogu učiniti s tim? Pa to je samo velika tekstualna datoteka, i to je vrsta dugo, zar ne? Kao što je ovaj će biti vrsta neugodno. I to ispada, međutim, da ako ja želite poslati tekstualnu poruku, neka je kažu Alex ovdje. Pusti me u moj preglednik i izađite iz načina cijelog zaslona samo tako mogu prebacivanje natrag i naprijed. Ispada, da vidimo, ako idem u ovdje i prijavite se na Gmail, u redu. Ne gledaj u ovom dijelu. Samo sam se vidjeti. naravno Livestream mogu još vidjeti što radim. U redu. Dakle, ovdje je samo s Gmail Račun John Harvard. Dakle, ako želim poslati SMS poruke Alexu, Mogu naravno sastaviti poruku. I to ispada, a ja sam testirana je s Alexom prije ovdje, tako da možete dodati određenu domenu ime se ljudi telefonskih brojeva, jer postoji u svijetu stvari zove SMS na e-mail gateway. Koji je fancy način govoreći sve od nas koji imaju mobitele koji ima telefonske brojeve, naravno, vjerojatno je za svoj prijevoznika, neki sufiks kao u Vtext.com za Verizon SMS poruke dot com, koje možete dodati na svoj osobni telefonski broj, a zatim vi ili prijatelja, ili tvoji roditelji mogu tekst koji u tom adrese. A Verizon ima poslužitelj, e-mail poslužitelja, da po primitku ovu e-poštu, gleda na numeričkom dijelu, a zatim koristi bez obzira na posebnu čaroliju industrije oni su zapravo ga poslati preko airwaves u vašem stanica telefon. Sada je to lijepo, jer ja ne znam kako poslati SMS poruku ili pisati kod gostiju za moj mobitel, i što bi mogli učiniti upravo to za konačni projekt, ali za sada sve Imam je moj laptop ovdje. Dakle, želim ponoviti tijekom tog CSV datoteka, redak po redak po redak po redak, zgrabite svaki od osoblja telefonske brojeve, a njihov nosač i programiranjem, spojite, to jest, spojite telefon Broj uz odgovarajuće domene a zatim pošaljite e-mail. Dakle, to je puno koraka. I sretno da radi u C. To je noćna mora situaciji otvoriti datoteku, za čitanje linija, po liniji, po liniji, kao i vi vide, ili možda uskoro vidjeti s problemom postaviti pet, ako ne i Problem postaviti četiri, a zatim dinamički concatenate dvije žice skupa, jer u C, uzeti dvije žice i kombinirati ih, što vam je činiti minimalno trebate učiniti najvjerojatnije? Morate proglasiti više memorije, zar ne? I pitati, malloc, mogu imati više memorije? Dakle, ja mogu staviti pola toga ovdje, pola toga ovdje. To je samo toliko koraka. I tog trenutka ste izgubili interes u glupom malom demo gdje bi svačiji telefonski signal. Idemo napraviti ovu vrstu PHP stil, pri čemu smo upravo početi koristiti više tog sudopera. A ideje osnovi isti, ali ne morate brinuti previše mnogo o toj nižoj razini. Tako ćemo vidjeti kako sam možda ići o događaj ovaj. I samo tako da ja ne ponoviti pogreške iz prošlosti, Ja sam napisao neke bilješke za sebe ovdje. I neka je vidjeti ako nas mogu hodati kroz neke od temeljnih koraka, a onda zbog tadašnjeg mi ćemo možda smanjiti neke kutove na kraju. Ja ću ići naprijed i učiniti otvorena Nosač PHP pokrenuti ovu datoteku. I ja ću ići naprijed i učiniti. Ručicu File, kao što ćete uskoro vidjeti, zapravo poziva funkciju zove f otvoren. I zapamtite ovo otvara datoteku. A citat, citat, r znači što, opet? Samo ga otvoriti za čitanje. Sada je u p set za, što je to učinio. I nositi može biti bilo što, fu, bar, bas, bilo ime varijable. Ali općenito računalo Znanstvenik će nazvati otvorenu datoteku, dajući vam ručku datoteke, nešto zadržati tako kažemo. Samo ću učiniti neke provjere pogreške. Dakle, ako je ručka je lažna, baš kao i u C, ja ću napraviti nešto slično, ne mogu otvoriti datoteku, kose crtice n. A onda sam upravo idem ići naprijed i izlaz. I to ispada, u PHP, Nisam u funkciji. Nema glavna funkcija ovdje. Dakle, ja ne vrati, sami po sebi. Ja izlaz. Koji je u biti ista stvar. I ja sam izlaska s jednom y vjerojatno. Jedan samo znači pogrešku neke vrste. To je ne-nula, tako da je pogreška. U redu, ako sam ovdje sada u mom programu sam otvorio datoteku. Idem da ide naprijed i proglasiti niz naziva adrese, i C ću morati znati veličina polja unaprijed, zar ne? Ili bih morati proglasiti ovo je pokazivač, a zatim koristite malloc. I onda svaki put sam pročitao preko drugog reda u spisu, Idem morati malloc više memorije, malloc više memorije. To je bol u vratu. I srećom, PHP, i Ruby, i Python i JavaScript, oni će rasti vaše polja za vas automatski. Nema više malloc. Nema više upravljanje memorijom. Računalo brine o tome. No, cijena koju plaćate. To je malo sporije. A za program kao što je ovaj nećemo primijetiti. Idemo poslati 100 SMS poruka. Na primjer neće osjetiti. To stvarno samo počinje smeta svoj jezik izbora kada vaši podaci ili programi se stvarno, stvarno poveliki, kao što će biti slučaj i više Naš web-based stvari. No, za sada ćemo se kretati. Iako ispada postoji funkcija u C zove f dobili CSV. File dobili CSV, koji traje ručku podnijeti kao svoj argument, a nastavlja se zatim, red po red po red, čitati po redu. Dakle, to je samo čita liniju teksta iz datoteke. No, ono što je lijepo o ovoj funkciji, ne samo ruku mi jedan redak teksta. Izgleda za one tipkovnici, i analizira liniju. I analizirati liniju znači podijeliti da na određenim vrijednostima u tom kontekstu. Drugim riječima, dolar znak red je varijabla koja je će mi dati hrpu indeksa. Ovo će biti Prvi stupac u mom CSV. Ovo će biti drugi stupac, ovo će biti treći, i to će biti četvrti. Zbog Podsjetimo, i Excel NOT surađivati ​​zadnji put kad smo radili ovo, ali ako sam preuzeti osoblje dot CSV. Ups, ne preimenovati. Ako sam preuzeti osoblje točku CSV, i pokušajte je otvoriti, Već sam registered-- oh ja nije ažurirati Excel od prošlog puta. Vidjet ćete da se u osoblje točkom CSV, imam četiri stupca. Dakle, kada sam pročitao u Prvi red za Abby ovdje Dolar znak red 0 je Abby, Dolar znak red jedan je Lyons, Dolar znak red dva je njezin broj, a zatim prijevoznik njezina telefona. Pa to je sve. I to je lijepo, jer sam ne moraju se sada shvatiti gdje sve te tipkovnici zapravo jesu. Tako ću ići naprijed i to, s obzirom da je definicija, Ja ću reći da joj je ime u nizu zagrada nula, kao što je obećao. I ja ću grab-- i Zapravo, znaš što? Neću se brinuti njezino ime, u ovom slučaju. Idem da je jednostavnije. Ja ću učiniti njen broj u redu zagrada dva, mislim. A njezin nosilac bio gdje? Red tri, jedan više. Dakle, ništa novo tamo. To je samo nula indeksiranje u niz. I sada, ja ću učiniti sljedeće. Ako prijevoznik jednaka jednaka AT & T-- Samo ću imati loop-- Želim stvoriti e-mail adresa koja izgleda ovako. To će biti 617-555-1212 na, što je to, text.ATT.net, je ono što želim učiniti. Pa kako mogu to učiniti? Ja ću učiniti sljedeće. Njezina adresa će biti njezin broj, i sad, neka mi ići naprijed i učiniti. To je neka funky sintakse. Sam mogao učiniti posto e trik, ali ja zapravo mogu samo to učiniti. Dakle, ovo je PHP stvar, ali neka je razmotriti što radim. Dolari prijaviti adresu na lijevi, samo varijabla. Daj mi varijablu. Ne moraju navesti vrstu. PHP će to shvatiti. Na desnoj strani, što je tip podataka te cijele stvari na desna strana ruka? Izgleda kao string, jer je dvostruka citati na krajnje lijevo i krajnje desno. Sada postoji neki funky novi sintaksu ovdje. Tu je vitičastim zagradama, i dolar znak broj. Ali pogodite što je to sintakse vjerojatno reći PHP učiniti za mene? Da. Samo umetnite vrijednost tamo. Dakle, nema posto je. Mogli bismo iskoristiti ispisa f ili S Ispis f ili nešto slično tome, ali PHP i puno viši razinu jezika, ti si idući u vidjeti da bi mogao napraviti istu stvar funkcionalno, možda šest različitih načina. I tako počinje da postane pitanje dizajna ili stila. Dakle, ovo je samo zagonetna izgleda put kaže, daj mi adresu e-pošte, ali plug-in broja u između tih vitičastih zagrada. A vitičastih zagrada neće završiti u konačnom adresu. Sada možemo preskočiti neke od ove linije za dobrobit vremena je. Dakle, ako nositelj jednaka jednako verHorizon-- Ups, Verizon-- Želim učiniti nešto vrlo slično, gdje je adresa dobiva, citat, citat, broj na text.ATT.net. I onda ja mogu napraviti istu vrstu stvar za ostatak prijevoznika. Ali ja ću učiniti točku, točku, točku za sada. A sada pretpostavimo da Želim dodati niz, gurati. Želim dodati polje, pozvao adrese. Ova adresa, to je kako ti dodati nešto na niz u PHP-u. Vi ne trebate učiniti malloc. Ne morate promijeniti veličinu niz. Vi samo reći array, gurati. Što želite push-- što array želite gurati nešto na? Adresa. Što želite gurnuti na adrese? Adresa. A u stvari, ako vas stvarno želim biti pametan, Neki sintaktički šećera za to, da se tako izrazim, što samo znači kako možete to učiniti u ljepše način, da bi se to učiniti. To također ima za posljedicu raste Adrese niz po veličini jedne, a zatim pasti da dodatno e-mail adresu u njega. Da. PUBLIKA: [nečujan] SPEAKER 1: pogreška pri upisu na drugo if-- oh, nosač. To je u redu. Također se neće svidjeti moj propust provesti dio ovog programa kasnije. Ali hvala ti za lov. Još jedan bug. Hvala. Želimo da to bude Vtext.com. Da. U redu. Pa gdje to nas ostaviti? Mi smo napisao kod za otvaranje datoteke. Imamo petlje ponoviti više redaka u datoteci. Imamo kôd koji dodaje da se moj niz, jedan po jedan, kao ispravno formatiran e-mail adresu. Dakle, sve to stvarno i dalje je poslati e-mail na svaku od tih osoba. Tako sam otišao naprijed i pripremio sam se na sljedeći način. Što ću učiniti ovdje is-- i neka je ići naprijed i preskočiti do neke stvarne koda, koji izgleda ovako. Dakle, ovdje je prije pečena Verzija sam ranije pisao. I primijetiti sam završio provedbi Sprint. Završio sam provedbi T-Mobile. Završio sam provedbi Virgin Mobile. I ja ću se ispričati unaprijed. Postoji nekoliko prijevoznici koji neki učenici u razredu imaju da ja ne zamaram nabrajanjem u Ako stanje ovdje. Dakle, nisu svi tekstovi će izaći. Ali da vidimo što još moram učiniti. Ja zatvorite datoteku, jednostavno kao što je u p postavljena četiri. I ovo je nova sintakse. I vidjet ćemo malo malo toga tijekom vremena, osobito s p postaviti sedam i osam. Ali to je sintaksa za stvaranje posebna vrsta strukture. Ispada da postoji knjižnica koja dolazi s PHP, zove PHP-om. Njegova svrha u životu je da programski poslati e-mail. To je broj netko napisao da olakšava nam poslati e-mail, tako da ne morate držati ide naprijed i natrag na Gmail, i zalijepiti u tuđe e-mail adrese. Postoji cijela hrpa linija ovdje da iskreno, ja samo vrsta kopirati i zalijepiti iz dokumentacije. A u stvari, ako ste znatiželjna, ostavila sam sve URL-ove dokumentacije u kod koji ćemo objaviti naknadno. I primijetiti da među stvari koje radim je, ja govorim ovu knjižnicu, koristiti Gmail poslužitelj, zar ne? SMTP smo kratko razgovarali o kad smo bili su na Yaleu o tome jednostavna mail protokol za prijenos. To je protokol koji poslužitelji koriste za slanje e-pošte, i that's-- Gmail je jedan od njih. Luke, to je broj TCP priključak. To je u redu ako vas nisu vidjeli 587 prije. Samo znam da iz dokumentacije. Evo moje korisničko ime. Idem koristiti CF50 bot. I u ovom trenutku, samo sam ću upišite bot stvarnog lozinkom. I onda ovdje, primijetiti ono što ostaje. Postavljam iz adresu biti BOT na CS50.net. Mislim da nećete požaliti slanjem SMS poruke na 800 ljudi koji kaže, nedostaje ti, ljubav CS50 bot, možda za one koji nisu mogli to učiniti danas. A onda u redu 76, što da radim? Ova vrsta izgleda kao C. Dakle za i jednak 0, n equals-- sada računati novo. Ispada da ako želite da biste dobili broj stvari u niz, ne morate se sjetiti više. Vi samo možete pitati funkcija zove kut a to će vam reći koliko Adrese su u tom nizu. A onda ću dodati adresa na e-mail. I znam to iz pomoću dokumentaciju. Postoji funkcija dodati adresu. I sad tu obavijest jedan komad sintakse. Vidjeli smo to prije u C. Slično u duhu. Možete misliti znak za dolar mail kao varijabla, što je to. No, to je struct unutar koji nisu samo nekretnine, varijable, ako će. No, ispada da je u PHP-u, koji je je objektno orijentirani programski jezik, kao što je Java, ako je APC. Dolar znak mail, ako želite to-- ona također ima funkcije unutar nje, ili metode. Dakle, ovo je reći da Posebna PHP-om knjižnica, ako imam varijablu istih, ako želim pozvati funkciju koja dolazi s tim knjižnica, za današnje potrebe, samo znam da koristite strelicu zapis. Nema točaka zapis. To je samo strelica. Ali to nije pokazivač. To je samo posudio iz C u sintaksi. Dakle, poziv dodajte adresu unutar Ova knjižnica je predmet ili promjenjiva. U redu. To je čarobna linija. Tako sam poslati e-mail. To je ekvivalent otvaranja Gmail, upisivanjem ga i udarajući poslati. Ali to će umjesto toga poslati e-mail na ovu adresu, s tim tijelom, iz CS50 bot. A sada ključna linija. Ova linija je odsutna u 2011 kao kad mislim da sam zadnji pokušao to. Da ima liniju, naravno, Čisti adrese. Pa logično, ako sam ne jasno adresu Nakon svakog ponavljanja prvi e-mail ili SMS poruka ide na Alice, druga ide Alice i Bob, treći ide na Alice i Bob i Charlie, stoga je vrlo skupa pogreška Napravio sam te godine. Tako ćemo vidjeti. Ima li kakvih pitanja prije nego što smo vam poslati sve tekst Poruka s 10 posto vjerojatnosti? Ima li pitanja? U redu. Idemo me ovdje i promjene lozinka za ono što bi trebao raditi, vjerojatno će dobiti crnu listu Gmail. Dakle, oni ne bi mogli svi ići van, jer oni vjerojatno nemojte nas vole slanje e-pošte 800 u for petlji sve odjednom. Budući da to nije posebno ljudsko ponašanje. Oh, ja ću promijeniti jednu stvar. Gore na vrhu, idem sent-- promijenite datoteku studenti dot CSV. I neću otvoriti ovo, ali to je identična CSV datoteka s ne 100 djelatnika, ali 800 učenika, jednostavno s Harvarda, jer Yale ima udubljenje listopada ovaj tjedan. I čini se kao vrsta kreten stvar učiniti u tekst sve od njih zašto oni nisu u razredu na odmoru. To je u redu. Samo Harvardski studenti Danas unutar te datoteke. A sada idemo natrag na moj prozor terminala. Ja sam vrsta nervozna. U redu pa sad ću ulaziti u katalog, i PHP tekst dot PHP. Kako o jednom hrabrom volonter? Dakle, ne želim ovo na mene. U redu, hajde gore. Kako se zoveš? MAYA: Maya. SPEAKER 1: Maya. Dođi gore, Maya. U redu. Idemo vidjeti ako to radi. Stavio sam svoju adresu e-pošte u file-- svoj broj telefona u spisu, tako da nadam se da ću dobiti jedan, kao dobro. Drago nam je. MAYA: Isto. SPEAKER 1: Dakle, sve što morate učiniti je pritisnite Enter poslati 800 SMS poruka, ako nisam zeznuo. Lijepo. Može potrajati, statistički, dok ne dođemo na e-mail address-- SMS poruka koja je u sobi sada. Idemo oklijevati i vidjeti. PUBLIKA: [zviždanje] SPEAKER 1: Oh, da. PUBLIKA: Oh, Gotcha. SPEAKER 1: Za petlje are-- to Nije spor zbog PHP. To je spor, jer Gmail nas proporcionalnost i ne ste nas poslali više od kao jedan e-mail u sekundi. Bilo što? To je teško stvar za mene testirati na kući sa samo mene i moje jednog telefona, tako. Je li to nadamo se s bot? Da? Ne? Reci da. Ne? To je od prijatelja? Nespretan. U REDU. Prilično siguran da radi ipak. Uh oh. Oni black-- oh, čekaj malo. Znaš što? Trenutak molim. Samo Maya i I-- Mia, to je bio? MAYA: Maya. SPEAKER 1: Maya, idu znate što sam učinio krivo ovdje. Oh, čekaj malo. Mislim da sam upravo poslao 100 SMS poruka na 555-1212. Pričekaj. Ja ne mogu pobijediti bilo koju godinu. U REDU. Maya? Škripac da je u postprodukciji. Dammit! Nakon od adrese. OK, stand by. Oprostite. To je bolno svake godine. OK, jedan trenutak. Ovo je dobro. Ja umjesto toga to učiniti. Ispis adresa. OK, stand by. Ispis adrese, nosač i. Da, to mi se sviđa. Dolar sign-- OK ću objasniti što sam radi u ovom trenutku, nakon što sam pokrenuti ovo. Svake godine. OK, ovdje mi ići. Imam just-- i ne želim pokazati svačiji broj telefona, ali Maya mogu potvrditi s glavom u glavu, da vidi svatko je telefonski broj u klasi da ću kopirati u program pod nazivom Gmail. A ako u Gmailu, što mi želiš reći? Nedostaješ mi. Love-- to nije od mene. Nisam ni hit poslati još. Tako ćemo ići naprijed i učiniti ovo, ako ja mogu zumirati. U REDU. Dakle, ja sam koristeći program pod nazivom Gmail sada. Ako Maya, želite kliknite na gumb Pošalji, ćemo simulirati što je to broj bi trebao učiniti. Bilo što? [BEEPS] PUBLIKA: Aha. SPEAKER 1: Da? Spasenje? PUBLIKA: Aha. SPEAKER 1: Miss si. I ja ću poslati ostatak. Sam poslao pola jer nisam mislim Gmail će neka oni proći. Dakle, samo zapamtite, danas je dan kako ste naučili da mogu koristiti Gmail. To je zastrašujuće. Veliki pljesak za Maya. Hvala. U redu, tako. što [BEEPS] Imamo nekoliko zvučnih signala, zar ne? U redu. Sada ću dobiti 700 stvarno nesretne e-mail natrag od kolega. Tako barem ćemo vidjeti ako je to isplati. Dakle, što je pošlo po zlu? Ja ću shvatiti što je pošlo krivo nakon što je činjenica, ali samo pogledajte kako je lako bilo je to učiniti u PHP-u. Dakle, što možemo zapravo učiniti sada da imamo izražajnost PHP. To was-- to je strašno. U redu. Dakle, to je ono što bi trebao otići van. To je mene testiranje jutros na moj telefon, stvarni screenshot mog telefona. No, sada ćemo razmotriti zašto mi zapravo uvođenjem sve ove stvari na prvom mjestu. Dakle, cilj je da ne pišem ove programe zapisano u naredbenom retku, zar ne? Zato sam napisao jednostavan Pozdrav programa, napisao sam mali program koji radi uvjetne, i koristi za čitanje liniju i tako dalje. I u teoriji, samo sam napisao program koji šalje 800 SMS poruka, dati ili uzeti 800. A taj program je sve dalje raditi u naredbenom retku. A to je, naravno, Ne web, zar ne? Cilj je da se početi koristiti ono što tvrdim je lakše koristiti jezik, usuđujem se reći više moćan jezik u smislu od značajki koje dolaze s njom, za početak pisanje koda koji generira web stranice. Dakle, zadnji put i prošli tjedan, razgovarali smo o HTTP i HTML. A što je lijepo o HTML je da je to samo čisti tekst. A tekst je sigurno nešto što možete ispisati doslovno zove ispis f funkcija ili funkcija ispisa. I doista, to je ono što je PHP Sada će nam omogućiti da učinite. Dakle, među primjerima smo imati u današnjem izvornog koda, osim nekih koda da sam stavio tamo trenutak prije, imamo programe kao što su to na primjer. Froshims ili Freshman Intramuralnih Sport, zapravo jedan od prvih extracurriculars Sam bio uključen u prije mnogo godina. I moj cimer i ja, s neka druga djeca na kampusu, koristiti za pokretanje programa froshims. Ja sam uzimajući moje tekstualne poruke sada. Sad tako da smo, u ono vrijeme, tako da je ovo bio je 1996, ili tako, tu je internet, ali nije bilo process-- tamo bilo web stranice za froshims. I tako, ako ste htjeli prijaviti za nogomet ili odbojku ili što god, ti bi ispuniti tu stvar zove komad papira, i ti bi hodati po Harvardu dvorište, a ti bi ga gurnite u utor pošte u Proctor, koji bio u Wigglessworthovoj, jednom od domova. I to su ti registrirani. On ili ona bi tada sastaviti e-mail na vas ručno, baš kao i ja upravo učinio ovdje s Maya, a onda bi se potvrdila kao što je bio registriran. Dakle, to je kao niska visi voće, da se tako izrazim. To je vrsta glupo da smo koristili papir za to. Htjela sam da budemo u mogućnosti samo otići na web stranicu, ili imaju brucoši ići na web stranica, registrirajte se za sport, i samo automatizirati puno ove stvari stavljajući svoje ime i e-mailove i tako dalje u bazu podataka. A u stvari, vrlo prva verzija web stranice, koristite super ružno HTML, možda izgledao ovako nešto. To je zapravo, ironično, više neugodno izgleda od ove leđima tada. Ali sam programski jezik. Ne PHP, nego se zove Perl, što je stariji jezik, ali vrlo slični u duhu. I upravo sam u potpunosti nauči sebe. I trebalo mi je neko vrijeme da to shvatiti, pita puno pitanja prijatelja. No ideje tamo bili su isti. Jer ono PHP zapravo je osmišljen je nije naredbenog retka stvari samo smo igrali sa, ali za web programiranje. To stvarno je vezan u lice postavljen na webu, kao što slijedi. To je froshims. I ako sam htjela Registrirajte se u ovom obliku, to je vrlo ružno, svakako, ali neka mi ići naprijed i biti manje udoban student, i što god sport za Matthews, kliknite registar. Ono što ja želim biti u mogućnosti učiniti je dostaviti podatke iz obrasca, ne Googleov poslužitelj kao smo prošli put, u potpunosti varanje pomoću njihovih pozadina, ja Želite provesti svoje backend kod. Što znači pisanje PHP kod koji živi na URL da podaci oblik može se podnijeti. A onda tvoja koda, napisan u PHP na poslužitelju, onda mogu odgovoriti na to korisničkog unosa. Kao svoje ime, ili razinu udobnosti, ili spavaonica, a zatim učinite nešto s njom. U ovom slučaju, samo sam glupo ga ispisati kao tekst, što nije sve što je lijepo. Ali ti bi sigurno Zamislite, ako znate HTML, i uskoro ćete znati kako generirati HTML kod ispisa F i ispis, i slične funkcije, možete sigurno generirati ljepše web stranicu koja kaže, hej David, sada su registrirani. Ti si manje ugodno student iz Matthews, zar ne? Vi samo možete koristiti hrpu% SES, Ili vitičastih zagrada i dolar znak zapis sam maloprije, za stvaraju tekst koji je više user friendly od toga. Tako ćemo pogledati ovu jednu datoteku. Froshim nula točka PHP izgleda ovako. Kad sam se ponovno učitati CS50 IDE, froshim nula izgleda ovako. To je froshim nula točka PHP. A što ćete primjetiti ovu sliku? PUBLIKA: [nečujan] SPEAKER 1: Nažalost, malo glasnije? PUBLIKA: [nečujan] Sve je u HTML-u. A u stvari, to je zato ono što je zanimljivo o PHP je da je osmišljen da se, za bolje ili još gore, izmiješale s HTML koda. A u stvari, iako je to datoteka, froshim nula dot PHP, ima PHP komentar na vrhu to, to je sve samo HTML. No s druge strane, ako sam otvoriti, neka je recimo, registrirajte nula dot PHP, što Samo ima veliki komentar na vrhu. To također izgleda gotovo u cijelosti kao što su HTML, osim za što? Line, ono, 21 izgleda malo čudno. Ali primijetite unosim PHP modu s otvorenim nosača upitnika PHP. Tada sam dobio neke stvari. I onda na kraju tog retka Skoro sam se, upitnik PHP. I to je ono što mislim pod izmiješale. Možete pisati HTML koji ste upravo želite da poslužitelj ispljunuti. No, ako želite učiniti nešto dinamična partway kroz stranicu, kao umetnuti moje ime ili domu ili udobnost na razini, Mogu koristiti funkciju kao ispis r, što je ispis rekurzivna, što samo znači ispisati ovu varijablu, to oblikovanje god želite. To je stvarno ne ljudske svrhe, to je samo za ispravljanje pogrešaka ili dijagnostičke svrhe. Dakle, to je kako sam to učinio. Ako sam umjesto toga ići froshims dva točka PHP, primijetiti da je djelovanje tog oblika nije registriran nula dot PHP kao old-- prethodni zapravo bio. Ali to je registrirana dva dot PHP. Pa pogledajmo kako se to jednom ponaša malo drugačije. Ako odem u verziji dva. Ako ovdje, ako se registrirate kao David, manje udobno, od doma od Mathews, Registrirajte. Tako ovaj put to rekao, su registrirani, zapravo i nije. Idemo vidjeti što sam učinio ovdje. Ako gledam registar dvije dot PHP, to ima više PHP kod. To je malo čišći, iako je dalje oblozi malo dugo na toj liniji. Obavijest ovdje. Sam isprintati svoju HTML oznake, moja glava oznaka, moj oznaka, glava, tijelo. A onda sam početi govoriti stvari kao što su ući PHP modu. I tako taj tag, otvorena zagrada PHP-- upitnik PHP kaže: hej, poslužitelj, execute-- tumače sljedeće stvari kao PHP dok ne vidite krajnji oznaku. I iako možda ne znate bilo Drugi PHP nego što ste do sada vidjeli, možete vrsta pročitati to prilično intuitivno. Ako je ime prazan, ili udobnost prazna, ili spavaonica je prazna, što da radim? Što da kažem za korisnika? Morate navesti svoje ime, udobnost i spavaonica, i tako dalje. Inače, ja kažem da ste registrirana, ali zapravo nije. A ja kažem zapravo nije jer nema podataka. Ja ne radim ništa s podacima. Ja sam ga samo baciti za demonstracijske svrhe. Sada sam vrsta štedio preko linije 22. Postoji više sintakse postoji, ali dolar znak naglašavaju post je vrsta zanimljiv. I to je ono što je lijepo o PHP. U PHP, imate ono što se zove nekoliko super globalne varijable. Oni su vrsta još važnije od globalnih varijabli. A ovo sve kapitaliziran kao takva, dolaze s PHP. Dakle, ako imate poslužitelj koji ima web poslužitelj instaliran, kao što su Apache, i instalirate jezik podrška za PHP, odjednom si možete početi koristiti ove super globalne varijable u kodu. A što je lijepo o PHP je da ako samo napisati datoteku koja završava točkom PHP, staviti ga na web poslužitelju, i onda poslati obrazac za njega preko tog akcijskog oznaci i obrascu oznake, da akcija atribut u Obrazac oznaka, PHP i web potpuno otkrije kako da iskoristite sve te ključne parova vrijednosti iz URL poput pitanja Oznaka q jednak mačke, ona će shvatiti kako Q i mačke. Ako pošaljete fotografiju, ili korisničko ime, ili lozinka sviđa Facebook, PHP će shvatiti za vas gdje je sve te podatke je. I to će samo ruke ti jedan asocijativni niz zove dolar znak podcrtavanja poslije, ili dolar znak naglašavaju dobiti, ovisno o tome da li ste pomoću get ili poštom podnesaka. I to samo će vas predati super globalna varijabla, tako da ako želite dobiti na ime da korisnik podnosi putem tog web oblik, doslovno samo reći ime od super globalne varijable, citat, citat, ime. A citat, citat udobnost, i citat, citat domu. I mi ćemo biti u mogućnosti to učiniti ovo i još mnogo toga s PHP. I iako je to bio vihora pogled na nju, ćemo roniti u mnogo više sljedeći tjedan. Mi ćemo uvesti podataka tako da ste zapravo će započeti provedbu svoj vlastiti e-trgovinu based-- kao i web stranice u samo tjedan dana. Tako ćemo vidjeti vas sljedeći put, i Nadam se da je dobio SMS poruke. Pozdrav. [Glazbom] [VRATA OTVORENJE] ZVUČNIK 2: Hej. SPEAKER 3: Što se događa? ZVUČNIK 2: Što to radiš? SPEAKER 3: Rad na problem seta. ZVUČNIK 2: Lijepa. Daj pet. [DAJ PET] Što are-- uh, što radiš ovdje? SPEAKER 3: Samo visi. Dovoljno je dobio natrag iz teretane. Nisam mogao pomoći, ali obavijest kada smo velike fived, da imate prilično grube ruke. Da li ići u teretanu? ZVUČNIK 2: Ne Ne. SPEAKER 3: Čovječe, izgledaš prilično velika. Što je loše, jer svatko zna 8-lopta je veliki čovjek na kampusu. Daj pet. ZVUČNIK 2: Uh, ne. Ne, mislim da sam dobro. Mislim da sam dobro.