[MUSIC JOC] SPEAKER 1: Aceasta este CS50 și acesta este sfârșitul săptămânii șapte. Astăzi este, probabil, în cazul în care ne-am într-adevăr te invata limbi. Am introdus în ultimii doi săptămâni HTML si CSS, de care nici sunt limbaje de programare. Și într-adevăr, chiar dacă nu am uita-te la aproape toate etichetele care HTML vine cu și aproape toate proprietăților care CSS vine cu, asta e un fel de-l pentru HTML si CSS. Vom doar în general, începe presupunând că ați înțeleagă ideile generale de tag-uri, și atributele, și pagini trimise la client la server. Pentru că astăzi vom începe să se uite la un alt limbaj de programare, PHP. Vom face acest lucru foarte rapid. Nu vom să te învețe PHP în sine, la fel ca nu am aspira să te învețe C, în sine, ci mai degrabă de programare. Și într-adevăr, unul dintre cele mai obiective pentru acest curs nu este să te învețe C, sau HTML, CSS sau, sau PHP, sau orice număr de alte cuvinte buzz sau acronime, ci mai degrabă știința calculatorului și cum să program fundamental. Și într-adevăr, astăzi vom începe să ia aceste roți de formare pe tot mai mult de zbor, printr-o limbaj numit PHP, după cum urmează. Aici este ceea ce această limbă pare. Se pare că nu este nevoie de o funcție principală într-un program scris într-o limbă numit PHP. Astfel încât deja sună un pic mai simplu decât C, cu care suntem familiarizați. Se pare că, dacă doresc să declare o variabila, o faci aproape identic cu C. Dar nu e clar o diferență aici atunci când am declara un șir de caractere, sau, poate, două diferențe. Cum arată diferit? Audiența: Semnul dolar. SPEAKER 1: Da, există dolar semn, pe care noi nu am mai văzut înainte. Și ceea ce lipsește? Da? Audiența: [inaudibil] SPEAKER 1: Da, nu exista nici o tip de date. Deci, se dovedește că PHP este ceea ce apela un limbaj liber tipizat, în cazul în care C este puternic tastat. Liber tipizat înseamnă doar că există diferite tipuri de date, există siruri de caractere, și int, și plutește. Dar cifrele de calculator asta. Tu programator uman Nu trebuie să-l dau afară. Deci, tot ce trebuie să faci să declare o variabilă este semn dolar, numele dumneavoastră variabilă, și apoi, de exemplu, Citat încheiat citatul, salut lume. Ei bine, acest lucru este ceea ce o Stare arata ca in PHP. Orice diferențe? Nu. Deci, se dovedește acestea sunt identice. Și s-ar putea avea mai puține sucursale sau filiale, mai mult dar se transformă de sintaxă exact la fel. Expresii booleene pot fi comandat împreună. Expresii booleene pot fi anded împreună. Încă mai ai switch-uri. Chiar dacă nu s-au folosit acestea, acestea nu există în C și sunt funcțional echivalent în PHP. Și, de fapt, în PHP sunt un pic mai puternic. În C, puteți compara doar anumite tipuri de date, cum ar fi int si caractere, în timp ce în PHP puteți compara de fapt siruri de caractere complet fledge fără a să vă faceți griji indicii și altele asemenea. Deci, aici e un pentru buclă. Acesta este doar pseudocod cod, dacă vreți. Dar structural este identic cu C. Iată un timp buclă, pseudocod therefore-- identic cu C. Iată o face în timp ce loop-- identice. Și deci nu este un fel de acest model aici prin există o altă sintactic câteva Caracteristici vom într-adevăr o să vadă. De fapt, aici este un frumos mod în PHP care, dacă doriți să repeta pe o matrice, și tu Nu vreau să sari prin cercuri mentale și sintactice de a avea int i este egal cu 0, i mai puțin decât n, i se adaugă plus-- care este doar o mulțime de sintaxă enervant. Vă pot spune un pic mai mult fluid pentru fiecare numere ca număr, în cazul în care în acest caz Numerele semn dolar, eu sunt presupunând că, este ca o matrice de numere numit. Și apoi eu sunt presupunând că numărul, singular, va fi o variabilă. Și ce PHP va face pentru mine ca am repeta peste această buclă este, în fiecare iterație, că va actualiza numărul variabil fi elementul-lea în număr, plural. Deci, doar se ocupă de toate de asta pentru mine. Nu sunt paranteze drepte, nu semn dolar, nu punct și virgulă. E doar un pic mai simplu. Ei bine, dacă vrei un matrice, se pare că ai poate face ceva destul de similar cu C. Sintaxa este un pic diferit. Dar aici e un tablou numit dolar semnat numere. Și am folosi, în PHP, pătrat paranteze, se pare. Și vom vedea aceste din nou în JavaScript-- încă o altă limbă. Eu folosesc doar notație suport pătrat a avea o listă separate prin virgula de numere întregi, în acest caz. Dar asta îmi dă o matrice. Dar chiar și mai puternic în PHP, avem, de asemenea, în general, ceea ce sunt numit tablouri asociative. Și o mulțime de limbi au acestea de asemenea. Lucru despre C matrice este că indicii pentru o matrice, lucru pe care utilizați în paranteze pătrate prin care accesați elemente, trebuie să fie ce? Audiența: [inaudibil] SPEAKER 1: Ei trebuie să fie numere sau numere întregi, în special de la zero pe sus. Ei bine, în PHP, și, se pare out, în alte limbi, puteți începe să aveți indici care nu sunt numeric. Dar de fapt ele sunt cuvinte sau Expresii, astfel încât mai degrabă decât încercați să vă amintiți unde ceva este, sau stocate într-o variabilă i, puteți folosi de fapt, un cuvânt și spune that-- vă pot spune un cuvânt de genul asta. Deci, semnul dolar citat este Numele unei variabile aici. Acest lucru este oarecum înfricoșat sintaxă asta e asocierea doi valoare cheie perechi pentru această variabilă. Mai exact, acest lucru este mine da o matrice care este de lungime 2. Dar indicii nu sunt 0 și 1. Indicii sunt citat încheiat citatul simbol și oferta de pret încheiat citatul. Și valorile acestor indici, respectiv, este FB pentru Facebook și $ 79,53, când am ultima verificat un preț pentru acest lucru. Ce înseamnă asta? Ei bine, aceasta înseamnă că în loc de scrierea de cod ca aceasta, în cazul în care am folosit pentru a face ceva cum ar fi dolarul sign-- sau, mai degrabă, în C Nici măcar nu ar fi un semn dolar. Mi-ar face ceva cum ar fi citate și apoi Mi-ar face placuta i pentru a ajunge la un Valoarea arbitrar indexate numeric. Începând de astăzi, în PHP, dacă doriți să obțineți de la o valoare, avem un fel de au mai expresivitate semantică. Doar un mod fantezist de a spune putem doar sunați lucrurile ceea ce sunt. Și dacă doriți să obțineți la simbol ceva, acum faci literalmente citat simbol încheiat citatul în paranteze pătrate în loc de un simplu număr. Deci, este un avantaj frumos. Și asta e un fel de-l pentru moment. Există buchete de alte caracteristici în PHP. Și într-adevăr, PHP vine cu chiuveta de bucatarie proverbiala. Zeci, sute de funcții vin cu PHP-- atât de multe mai mult venit cu C. Și asta nu e destinat să copleși ci ajuta îți dai seama că noi nu mai trebuie să scrie cod asta e un fel de aici conceptual. Acum putem începe să pur și simplu să profite de mult mai avansate caracteristici că limbile, cum ar fi PHP au. Așa că nu trebuie să vă faceți griji cu privire la se deplasează în jurul valorii de lucruri în memorie. Noi nu trebuie să vă faceți griji cu privire la malloc și toate acestea nivel inferior, detalii puternice, care vă va se luptă cu, în cazul în care nu se luptă cu, pset5, dar puteți începe să lua în curând pentru a acordat. De fapt, hai să scrie un super program simplu in PHP, după cum urmează. Am de gând să merg cu capul în CS50 IDE aici, și ceea ce am de gând să fac este crea un nou fișier, că foarte simplu va fi numit salut punct PHP. Deci, în loc de punct c, e va fi numit punct PHP. Și apoi, în acest dosar, Pot începe să tastați. Dar se pare că un singur lucru am să știu este că orice fișier PHP, în general, are nevoie de pentru a începe cu unele sintaxă specială. Similare în spirit de HTML, dar, din nou, PHP este un limbaj de programare, nu un limbaj de marcare. Deci fiecare fișier, și este un fel de prost căutați voi recunosc. Deschis suport, semn de întrebare, PHP. Și acesta este doar mod limbă de a spune, hei, calculator aici vine un cod scris intr-o limba numita PHP. Și apoi la sfârșitul fișierului, faci un fel de fel de opusul. Tu nu scrie PHP din nou, doar face semn de întrebare, suport unghi. Și apoi orice ai pus în interiorul acestor două etichete, ca să spunem așa, va fi, sau ar trebui să fie, cod PHP. Deci, hai sa facem ceva super-simplu. Am de gând să merg mai departe și de a face de imprimare def, Bună ziua lume, backslash n, salva. Și acum, la promptă mea, am de gând să face, face hello-- nu, am de gând să fac, dot slash salut. Nu, slash punct, hm. Deci ceva e diferit. Și într-adevăr, aceasta este o diferență cheie între PHP și limbi ca C. C a fost un așa-numitul limbaj compilat. Ce a însemnat pentru C să fie elaborate? Care a fost implicarea? Da. Audiența: scris în cod mașină așa că ar putea fi conduse de calculator. SPEAKER 1: Exact. Trebuie să-l transforme în primul așa-numitele cod mașină, zerouri și cele, înainte de a va fi de fapt executabil și înțelese de către calculator. De Intel în interiorul. De CPU în interiorul calculatorului. PHP, prin contrast, este ceea ce se numește un limbaj interpretat, care înseamnă că nu-l compilați în zerouri și cele, cod mașină, ai loc să-l lăsați ca codul sursă. Și tu în schimb să-l dați ca intrare la un program, un interpret că altcineva a scris ani în urmă că înțelege linie cu linie, caracter de caracter. Deci, cu alte cuvinte, oamenii de acolo a scris un program care va arata la linia de cod de linie, și dau seama ce computerul ar trebui să facă, fără convertind-o direct la zero și cele. Deci, în cazul în care vede o pentru bucla, acest așa-numit interpret va fi ca, bine, ar trebui să face ceva nou și din nou și din nou. Ce ar trebuii să fac? Lasă-mă să te uiti la linia următoare. Lasă-mă să te uiti la linia următoare. Și-l interpretează într-adevăr o linie cu linie. Deci, să-l execute, eu nu folosesc make. Eu nu folosesc punct slash în acest caz. Am în schimb fac PHP, care este numele unui program, a.k.a. Un interpret, care este pre-instalat în CS50 IDE, și acum am nevoie pentru a trece un argument linie de comandă, care este pur și simplu numele de fișier pe care vreau să interpreteze. Sau mai mult la întâmplare, pe care vreau să ruleze. Și dacă am lovit Enter, nu o avem. Buna, lume. Acum se dovedește că am def de imprimare uzat în mod deliberat să ne podul de la C la PHP. Cele mai multe programatori PHP, după cum veți vedea, chiar nu deranjez folosind def imprimare. Ei folosesc doar o funcție numită de imprimare, care C nu avea. Și așa, dacă l-am rulați din nou acum, de fapt comportă punct de vedere funcțional. Nu pot utiliza la sută s și procente i și așa mai departe, dar există și alte modalități în PHP de a face asta. Dar aceasta este doar pentru spun că punct de vedere sintactic, altele decât unele lucruri ciudate până top, iar unele personaje ciudate care se derulează în partea de jos, conceptele acum de Programarea în acest altă limbă vor fi exact la fel. De fapt, hai să facem o altă exemplu. Deci, am de gând să merg mai departe și închideți acest fișier. Lasă-mă să creeze un altul care Îl sun condiții 1 punct PHP. Deci, nu la zero, pentru că ceea ce am făcut am fost uitat înapoi câteva săptămâni în urmă, am avut un fișier numit Condiții 1 punct C. Și ce Am făcut a fost convertit în mea cap, și aici pe hârtie, și, în curând pe cursului site-ul, linie cu linie în PHP. Deci, în versiunea C, am făcut ceva ca șir s devine obține șir. Deci, este un pic diferit a face acest lucru în PHP. În schimb, Mă duc de a face, sau, mai degrabă, am ar fi putut face int n devine obține Int, în acest exemplu mai devreme. Deci, în loc de asta, am de gând să fac n se line citit, mi-ar plăcea un număr întreg, Vă rog. Deci, aceasta este doar promptă mea. Și așa se pare, și Mi-ar știu doar acest de a fi citit sau văzut funcția înainte, linii de funcții în PHP citit ia un argument, care este un prompt pentru om, iar scopul său în viață este de a citi o linie de text că el sau ea tipuri în. Și apoi magazine care text în n variabile. Și acum aș putea dori să fac ceva cum am făcut acum câteva săptămâni, în săptămâna ca unul din clasa. Dacă n este mai mare decât , atunci, mă duc la zero pentru a împrumuta că sintaxa tocmai am văzut, def imprimare, ai ales un număr pozitiv, n backslash. Altfel, dacă n este egal cu zero, egal, eu sunt merge mai departe și spune, def imprimare, ai ales la zero backslash n. Altfel, situația în speță ar trebui să fi, desigur, def imprimare, ai ales un număr negativ. Si putem implementa cu siguranță logica de acest lucru într-o grămadă de diferite moduri, dar punctul aici este faptul că punct de vedere sintactic, abia orice este nou. E doar semnul dolar și o nouă funcție și linia de citit. Dar fundamental, ce mai e nou acum este Sunt interpretarea asta. Am o trece ca intrare la un alt program. Deci, dacă vreau să ruleze acest lucru, în cazul în care Nu am face orice greșeli, Am de gând să ruleze PHP, de Condiții 1 punct PHP, Enter, Am de gând să tastați în numărul 50, și să presupunem pentru moment funcționează. Deoarece logica este aceleasi lucruri ca o saptamana. Bine, pentru ca e destul de underwhelming, nu? Am putea face acest lucru în orice Numărul de limbi. Să facem ceva mult mai puternic. Să problemă finisaj set de cinci. Deci, am de gând să mergeți mai departe și de a face acest lucru. Am de gând pentru a crea un fișier numit Dicționar dot PHP, și înclinată ca s-ar putea fi pentru a se lupta în jos o mulțime de note, notele vor ajuta doar daca ai voie să pună în aplicare probleme stabilit cinci în PHP. Dar vom vedea cât de repede acum ne pot implementa același set problemă. Deci, în dot dicționar PHP, am de gând să se presupună că există deja un fișier în lume numit Speller. Și într-adevăr, am făcut acest lucru în avans, și nu vom umbla prin această linie de linie, dar dacă ești curios doresc mai târziu și într-adevăr să-și încheie în jurul mintea ta diferențe între C și PHP, literalmente compara acest fișier, Speller, de la codul sursă de azi că vom posta mai târziu astăzi, împotriva p set cinci Speller punct C, care vă oferim, și este aproape aceeași linie cu linie. Există unele semne mai mult de dolari. Câteva funcții sunt un pic diferit. Dar e un mod frumos de fel de a vedea modul în care traduce o limbă în alta. Și e linie aproape identice pentru linia. Dar am de gând să se presupună că acel există, și ceea ce am de gând să fac aici este să încercați să arunce în aer dvs. minte de reimplementing totalitatea problemei stabilit cinci fel mai repede decât te-ai făcut până acum. Deci, de exemplu, am de gând să primul declara o variabilă globală numită mărime, și setați-o egal cu zero. Acum, că nu e mult de economii. Cote sunt puse în aplicare te Dimensiunea destul de mult la fel, sau aluzie indiciu, va seara asta sau mâine, folosind doar o variabilă globală numită mărimea, și stabilirea-l egal cu zero. Asta nu e un deosebit spoiler uimitor. Deci, ce au fost datele structurile alegere, cei dintre voi care s-au scufundat în și citiți spec, structuri de date ce au cele mai multe dintre voi au folosit? Un tabel hash sau să încerce, poate unele variante ale acestora. Deci, punerea în aplicare a unui tabel hash, cel puțin, este un fel de o mulțime de linii de cod, dreapta? Și nu toate dintre ele ar putea fi funcțional în acest moment în săptămâna, dar asta e bine. Pentru că în PHP, dacă am doresc un tabel hash, făcut. Dreapta? Așa că variabila care le-am doar declarat este, evident, numita dolar masă semn, pe introducerea înainte. Dar chiar vreau doar, la sfârșitul zilei, o matrice. Dar nu o indexat numeric matrice, pentru că e ca doua saptamani lucruri, atunci când am vorbit despre tablouri. Vreau un tabel hash. Dar un tabel hash este într-adevăr doar un mod concret de a spune, vrei un tablou asociativ. Vrei să fii în stare să chei asociate cu valori. Taste cu valori. Ce este un dicționar, într-adevăr? Ei bine, e o grămadă de chei. Cuvinte precum mere, pere, banane și, și toate aceste cuvinte în limba engleză pe care vă mână. Și valorile pe care ești în mod eficient inserarea în dicționarul sunt fie adevărate, sau absența, fals. Cu alte cuvinte, pe care introducerea o grămadă de perechi de valori-cheie, mere, adevărat, pere, adevărat, banane, adevărat. Astfel încât atunci când preluați sau uita up care datele din tabel hash cu funcția de verificare, ești fie obtinerea înapoi un răspuns, Da, l-am găsit în complexul meu hash masă, sau nu, nu e acolo, astfel încât să return false. Deci, pentru a face acest lucru, tot ce am nevoie este de date structura cum am propus înainte. Am nevoie doar să fie în măsură să asocieze cuvinte cum ar fi, citat unquote, simbol, cu o valoare cum ar fi, adevărat. Deci nu e masa mea hash. Să-l folosească de fapt. Deci sunt câteva funcții Am nevoie de a pune în aplicare. Am de gând să merg mai departe și musca pe o dimensiune funcție numită. Este nevoie de nici un argument. Eu nu trebuie să deranjez cu cuvântul, gol, în PHP. Am pur și simplu de gând să se întoarcă dimensiune. Și, ca o paranteza, PHP are acest detaliu minorly enervant, în cazul în care în cazul în care ceva este la nivel mondial, trebuie să spune funcția în care îl utilizați ea, hei, aceasta este o variabilă globală. Deci, prostia minor, dar Trebuie să o fac totuși. Deci, ce despre sarcină? Am de gând să pună în aplicare o sarcină funcție numită care ia în numele unui dicționar, la fel ca și în problema set de cinci. Și înainte să efectueze, observați că nu am fost tastarea destul de aceleași lucruri. Ce este, evident, diferit în PHP despre cum declara o functie comparativ cu C? Da. Audiența: [inaudibil] SPEAKER 1: Fără tip de întoarcere. Și într-adevăr, acesta este cazul, PHP în măsura în care este liber tipizat, este, de asemenea, un pic neglijent în acest sens. Nu specificați ca programator ce revine această funcție. Tu ar trebui să te uiți de fapt la codul pentru a seama de asta. Sau de a citi comentariile sau documentația. Deci, plusuri și minusuri de aceste tipuri de decizii. Dar eu trebuie să spun cuvântul cheie, funcția. Și când vom învăța JavaScript în câteva săptămâni vom vedea același lucru din nou, dar este aceeași idee. Numele funcției, argumentul său sau argumente sau lipsa acestora, și acum aici este punerea în aplicare. Deci, am de gând să taie unele colțuri doar să fie dramatică pentru un moment. Dar am de gând să merg mai departe și spun acest lucru. Acest lucru este cum pot încărca un fișier într-o matrice. Există o funcție în PHP numit fișier. Ai numele unui fișier mână. Acesta vă dă înapoi o matrice, în interiorul de care este în fiecare linie de la dosar. De la zero, unul, pe sus să n minus 1 linii. Asta e, nu? Nu e nici f citit. Nu e nici f get s. Nu e nici o sută s. Nu sunt dureri de cap. Nu e nici o feof. Toate lucrurile care cu care ai fost lupte, probabil, cu p set patru și cinci, dispare. Deci, am citit doar acele linii în fișierul, și apoi știi ce? Dacă vreau să itera peste aceste cuvinte, Eu pot face, pentru fiecare linii ca linie. Amintiți-vă că acest lucru a fost un fel de inteligent mod de iterarea peste o matrice, index de index, și pe fiecare iterație de asteptare linia curentă, dolarul linie semn. Și aici am de gând să merg și spun masă, suport, linie, devine adevărat. Cu alte cuvinte, acest lucru este cum am introduce în masa mea hash în PHP. Eu spun masă semn dolar, care este array asociativ mea, care a fost gol pe linia de cod deasupra. Apoi m-am index în ea Nu, folosind un număr, dar literalmente folosind cuvânt cheie care îmi pasă. Poate e de mere sau pere sau banane sau orice altceva, dar în mod special am indexarea în ea ca și cum aș propus mai devreme. Eu iau numele meu tablou asociativ, și apoi m-am utilizați citat încheiat citatul în paranteze drepte, cu un șir, în loc de un număr real. Și așa asta e. Funcția de încărcare se face. Odată ce reiterează buclă, am pus totul în tabelul hash. Acum Disclaimer mic, există o câteva lucruri am nevoie de a stabili. Și versiunea Voi posta on-line va avea toate nuanțele, dar este cea mai mare parte doar de gând să fie o verificarea erorilor și unele trucuri minore. Dar asta e, într-adevăr esența de ea. Dacă acum vreau să pună în aplicare funcția numit verifica, care se așteaptă la o cuvânt ca argument, cum s-ar putea să merg despre a face asta? Ei bine, am de gând să spun pur și simplu, în cazul în care interiorul masa mea, la locația cuvânt, dacă este setat. Deci, dacă există este-- De fapt, știi ce? Am de gând să o fac în un pic de pseudocod. Dar ideea este aceeași. Dacă acest lucru este egal cu adevărat, return true. In regula. Else-- puteți fel de a vedea unde acest lucru este going-- să se întoarcă false. Efectuat. De verificare se face. Destul de frumos, nu? Și așa mai departe ceea ce este acest lucru cu adevărat ajungi? Și asta, am tăiat unele colțuri. Uită-te la versiunea online pentru toate mici nuanțe. Dar asta e esența de ea. Index în ta tablou asociativ, a.k.a. Tabel hash, vezi dacă există o valoare acolo, în cazul în care este setat la true, și dacă da, return true. Deci ne-am diminuate până toate complexitatea. Deci, un fel de minte suflare, nu? Eu nu va deranja aceasta terminând cu descărcare, pentru că în fact-- oh, știi ce? Da, hai să termine cu descărcare. Descărca într-un tabel hash ar putea arata ca funcția de descărcare, se întoarcă. OK așa că e de descărcare. Pentru că nu e nimic pentru a descărca, nu? Nu e nici o malloc. Nu am cerut în mod explicit sistem de operare pentru nimic. Tocmai am inceput sa folosesc variabile. Și așa și aceasta este o manifestare a Caracteristici limbi nivel superior. Deci, din nou, cea mai mare parte acest termen am fost de-a face aici cu C. nivel Super scăzut. Puteti vedea memoria calculatorului. Puteți atinge tot ce doresc în RAM a computerului, pentru bine și la rău. Aici, vom să renunțe la această putere. Dar Doamne, uite ce mult mai puțin cod am scris. De fapt, dacă nu s-au vorbit și vorbesc peste dactilografiere mea, ne-ar fi putut face cu acest exemplu acum cinci minute. Deci, ce este prețul plătit? Ei bine, haideți să aruncăm o privire. Hai să aruncăm o privire. Am de gând să merg mai departe și a alerga CS50. Lasă-mă să merg mai întâi în Exemple de astăzi în cazul în care Am directorul texte ca înainte. Am de gând să executați soluția care el vine cu o problemă set de cinci numit Speller, care este în contul CS50 lui. Și am de gând să-l rula pe ceva mare ca Biblia King James, doar pentru ca am pus într-adevăr soluții de personal la încercare. Acum, uneori, pe internet este un pic mai lent, un pic mai repede, s-ar putea dura un timp pentru a derula. Dar a fost nevoie de un total de .56 secunde pentru a verifica vraja King James Biblia folosind soluția de personal. Deci, destul de bine. Al tău ar putea fi mult mai lent, și asta e în regulă. Dar este corect aici. Deci asta e soluția personal. Dacă mă duc și curețe versiunea PHP. Și am de gând să fac un pic de ca de copt spectacol lucru. Vom lua codul am scris mai devreme, așa că este perfect corect. Deoarece codul am scris nu se va să fie perfect corect chiar acum. Dar dacă I ​​a alerga versiunea PHP, Ce trebuie să renunțe la ziua de azi? Mi-a luat cinci minute pentru a punerea în aplicare a p set de cinci, eu pretind. Ce preț au am plătit? Da. Audiența: Viteza. SPEAKER 1: Viteza. Ce vrei sa spui? Audiența: Va dura mai mult. SPEAKER 1: Bine. Sa vedem. O să dureze mai mult, nu scrie, dar să-l rulați. Da. Așa că haideți să încercăm. Deci, aici am de gând să mergeți mai departe și de a face PHP de Speller, și pentru că fișierului numit Speller. Deci, eu nu sunt rulează Dicționar, amintesc, Sunt rularea programului numit Speller. Am de gând să treacă în același fișier, King James a cincea. E de zbor de. Acest lucru ar putea fi doar de viteza de internet, asa ca nu citesc prea mult in asta. Dar se simte mai sigur. 1.26 secunde. Acum, că e încă destul de al naibii de repede, nu? Și singurul motiv pentru care simtit ca mai mult ca trei, sau patru, sau cinci secunde, asta e doar pentru că Internetul a dat lent. Timpul petrecut de calculator a fost 1,26 secunde, fata de 0,56 cred. Deci, mai mult decât de două ori la fel de lent. Acum, că e încă destul de al naibii de rapid, dar este o manifestare de, într-adevăr, că tariful exact. Pentru ca suntem interpretarea în linia de cod de linie, și că programul PHP citește meu Codul sus în jos, la stânga la dreapta, trebuie să facă mai mult de gândire. Trebuie să fel de a converti ea însăși în interiorul pentru fiecare mașină cod pe zbor, ca să spunem așa, chiar dacă mecanicii sunt un pic diferit. În loc de doar alimentare la Intel CPU zerouri prime și cele că înțelege nativ. Deci absolut, mâinile în jos, am plătit un preț. Și codul scris într-o limbă ca PHP tinde să fie mai lent. Dar Dumnezeu mi. Așa că acum, când am vraja verifica meu fișier, mi-am petrecut un plus de 0.7 sau așa secunde vs 20 ore pentru a implementa o mai rapida corector ortografic, nu? E un fel de compromis. Și dacă sunteți doar incepand p set de cinci, nu ar putea fi de 20 de ore. S-ar putea să fie mult mai puține decât atât. Dar e un compromis, pentru Real. Și dacă rulați codul pe foarte mare seturi de date, sau pe hardware-ul chiar mai mari, aceste tipuri de diferențe Puteți adăuga cu siguranță în sus. Orice întrebări până acum? Da. Audiența: [inaudibil] SPEAKER 1: Ne pare rău, poate ai spus o dată mai mult? Audiența: [inaudibil] SPEAKER 1: Esti renunțarea la timp. Ei bine, așa da. Sunteți economie de timp de nu au să-l compilați, dacă asta e ceea ce cere. Și într-adevăr, în CS50, majoritatea programelor, chiar dacă s-ar putea dura un timp pentru a scrie, sunt relativ scurt. Câteva zeci de, câteva sute de linii de cod, și astfel încât acestea compila destul de repede. Dar atunci când începeți scrierea de programe mai mari, ca daca esti Microsoft sau esti Google și scrierea programelor într-adevăr mari în C, sau C ++, sau în mod similar compilate limbi, ar putea dura mai multe secunde, sau chiar minute sau mai mult la compila milioane de linii de cod. Și acolo, că diferență se va adăuga în sus. Și, de fapt, odată ce vom tranziție de astăzi, în aceeași zi astăzi, la programare web folosind PHP, ești gând să-l găsi doar atât de mult mai plăcut de a scrie cod atunci când nu au de a face aceste stupid măsuri cum ar fi schimbarea la terminalul fereastră, de tip make salut, re rulați-l, reîncărcați fereastra. Doar atât de multe de prost pași mecanice care doar să stea în calea de a face interesant, opera de distracție. Și într-adevăr am arunca că departe cu PHP. Și putem interacționa cu ea mai rapid. Da. Audiența: [inaudibil] SPEAKER 1: Sigur. Pot să clarifice ce înseamnă să fii interpretat? Când compilați un limbaj cum ar fi C, se duce în jos așa cum am spus la mașină cod, zerouri și cele. Și Intel a decis cu ani în urmă că anumite modele de zero-uri și cele reprezintă plus, sau scădere, sau de imprimare, sau alte operațiuni de bază. În lumea de un limbaj interpretat cum ar fi PHP, JavaScript sau, sau Python, sau Ruby, sau buchete de alții, în schimb cineva a scris o interpreter-- în acest caz, este, de asemenea numit PHP, identic cu Numele language-- care, în esență, are o buclă mare în ea că reiterează peste toate liniile de cod că l-am hrăni ca de intrare, cum ar fi salut dot PHP, sau punct dicționarul PHP. Și apoi vă puteți gândi de mare buclă ca având o mulțime de condiții. Și aceste condiții spune, în cazul în care umană a scris cuvântul cheie pentru, începe să faci lui sau a ei Codul nou și din nou. Sau în cazul în care omul are scris linia de cod, dacă, numai executa lor următor linie condiționat. Deci e adevarat ca interpretarea într-un sens uman, linie de linie, și care ia doar de timp. Este nevoie de deasupra capului. Și așa că e un price-- bine question-- plătim. Deci, hai sa facem un alt demo care este un pic mai dramatic. Nu este, aș spune, un stadion acest lucru la o probabilitate de 90% de a nu oribil, dar vei fi uimit cu 10% probabilitate. Deci, în fiecare an vom încerca a face acest lucru, prin care ne-am încercați să scrie un program care trece prin problemă set la zero, pentru care ați prezentate numere de telefon și o mulțime de alte informații demografice, si noi programatic va trimite un mesaj de tip text. Și apoi de telefon tuturor începe bip sau vibratoare, și este pur și simplu uimitor, pentru că Ei bine, uita-te la ceea ce computerele pot face. Acest rareori funcționează corect se pare, în mare parte pentru că am de obicei, ajunge pe lista neagră prin Gmail sau alte servicii pentru, de fapt încercarea de a face acest lucru pe scară. Dar lucru ciudat este prea, din moment ce nu au toată lumea de aici astăzi, fapt distractiv trecut am timp încercat acest urmă cu doi ani, Cred că am scris un program care stătea într-un iterarea buclă peste toți elevii din clasă, și fiecare dintre ele un mesaj text, și a spus ceva de genul, De ce nu ești în curs? Dragoste, CS50 bot. Nu ai idee cât de multe apologetic și e-mailuri fel de dureroase Am primit răspuns de la n minus 100 de persoane care nu au fost aici acea zi. Și chiar mai amuzant, mai rușinos story-- Știi, să-l pună acolo. E deja pe video acum câțiva ani. Așa că mă va vedea în curând Trimite pentru buclă, prin care este foarte ușor pentru a scrie un bug în care pentru bucla, astfel încât prima dată prin bucla, ai trimite un mesaj text. A doua oară prin bucla I ar fi trimis mai multe mesaje text, și apoi un text mai multe mesaj, și unul mai mult. Dar se pare că, dacă faci o greșeală de scriere atunci când programare, uneori, poate scrie programe care trimit o mesaj text, apoi două mesaje text, apoi de trei mesaje text pentru toată lumea care a primit deja un mesaj de tip text. Și, după cum știți, face ceva, plus ceva, plus ceva, plus ceva, este O mare de o mulțime de mesaje text, sau n pătrat, sau de la $ 0,10 un mesaj text, 20.000 $. Din fericire am lovit de control-C înainte de faptul că sa întâmplat, dar am datorez cel puțin un dintre predecesorii dumneavoastră 20 de dolari pentru 200 unele mesaje text ciudat că, nu a mers numai la telefonul său, dar De asemenea, a fost ca un telefon mai vechi clapa așa că place împins sale Memoria fiecare alt text personal Mesajul el a ajuns, de fapt. Deci avem un singur scop astăzi, să nu faci asta. Poate activa modul avion. In regula. Deci, să mergem într-un Programul aici callled-- pe care o voi suna textul punct PHP. Și în avans, am două fișiere aici. Am făcut un fișier doar pentru personalul, care are toate info personalului, toate numele pe site-ul cursului. Și apoi pentru acum doar pus unele numere false 555-1212. Astfel încât acestea nu ar merge de fapt nicăieri. Dar observați în interiorul acestui fișier CSV, care am vorbit despre înainte de scurt în contextul de fișier IO. Ce este un fișier CSV? Separate prin virgulă variabile. Și acest lucru este un fel de foarte de baze de date ușor, dacă vreți. Există un fel de fel de patru coloane în acest dosar, și nu zimțate, dar virgulele în esență, reprezintă coloane din dosar. Prima coloană este TF sau numele CA. A doua coloană este numele de la ultima lor. Coloana a treia este numărul lor de telefon. Și a patra coloană, aparent este-- al patrulea coloană este aparent ce? OK, deci este purtător lor. Deci Verizon, Sprint sau, sau ceea ce nu. Și dacă misspoke mai devreme, CSV. Valori separate prin virgulă CSV este aici. Deci, ce pot face cu acest lucru? Ei bine, acest lucru este doar un fișier text mare, și e un fel de lung, nu? Ca și acest lucru se întâmplă pentru fi un fel de enervant. Și se pare că, totuși, că, dacă am doriți să trimiteți un mesaj text la, să spune Alex aici. Lasă-mă să intru în browser-ul meu și a ieși din modul ecran complet doar ca să pot comuta înainte și înapoi. Se pare, să vedem, dacă mă duc în aici, și intrați în Gmail, bine. Nu te uita la această parte. Am ajunge pentru a vedea. desigur, poate Livestream încă vedea ce fac. In regula. Deci, aici este doar Gmail cu Contul John Harvard. Deci, dacă vreau să trimit un mesaj text la Alex, Pot compune, desigur, un mesaj. Și se pare, și am testat cu Alex înainte aici, astfel încât să puteți adăuga un anumit domeniu nume la numerele de telefon oamenilor, deoarece există în lume lucruri chemat SMS a trimite un email gateway. Care este o modalitate de a spune tuturor fantezie dintre noi care au telefoane mobile care au numere de telefon, desigur, există, probabil, este pentru operatorul dvs., un anumit sufix ca la Vtext.com pentru mesaj text Verizon dot com, pe care le puteți adăuga la dvs. propriul număr de telefon personal, și apoi tine sau prietenii, sau parintii tai poate te textul la acea adresă particular. Și Verizon are un server, un e-mail Server, că la primirea acestui e-mail, se uită la partea numerică și apoi foloseste orice special magie industrie ei trebuie să-l trimită de fapt peste undele radio în celulă special telefon. Acum, acest lucru este frumos, pentru că eu nu într-adevăr știu cum să trimită un mesaj text sau pentru a scrie încă cod pentru telefonul meu mobil, și s-ar putea face exact acest lucru pentru un proiect final, dar de acum toate Am este laptop-ul meu aici. Deci, vreau să itera peste care CSV fișier, linie, de linie, de linie, de linie, apuca fiecare dintre numerele de telefon personalului, și transportator și prin programare, înlănțui, care este, conectați telefonul Numărul cu numele de domeniu corespunzător și apoi trimite un e-mail. Așa că o mulțime de pași. Și noroc face că, în C. Este un coșmar de-o situație pentru a deschide un fișier, să-l citesc linie, de linie, de linie, în timp ce văd, sau pot vedea în curând cu problema set de cinci, în cazul în care nu problemă set de patru, și apoi la înlănțui dinamic două șiruri împreună, pentru că în C, să ia două șiruri și să le combine, ce părere aveți minim trebuie să facem cel mai probabil? Ai nevoie de a declara mai multă memorie, nu? Și de a pune, malloc, pot avea mai multă memorie? Deci, eu pot pune jumatate din aceasta aici, jumătate din acest aici. E atât de mulți pași. Și de acel moment ți-ai pierdut interes în demo stupid mic în cazul în care face bip telefon tuturor. Să facem acest tip de PHP stil, prin care ne-am începe să utilizați mai mult de faptul că chiuveta de bucatarie. Și ideile sunt fundamental aceeași, dar nu trebuie să vă faceți griji prea mult despre asta nivel inferior. Deci, hai sa vedem cum am putea du-te despre a face acest lucru. Și ca să nu repete greșelile din trecut, Am scris câteva note pentru mine aici. Și să vedem dacă pot să umblăm prin unele dintre etapele fundamentale, și apoi de dragul timpului ne vom poate reduce unele colțuri în cele din urmă. Am de gând să merg mai departe și se deschid suport PHP pentru a începe acest fișier. Și am de gând să mergeți mai departe și de a face acest lucru. Fișier mâner, după cum veți vedea în curând, de fapt, solicită o funcție numită f deschis. Și amintiți-vă acest deschide un fișier. Și citat, citatul, R înseamnă ce, din nou? Doar deschide pentru citire. Acum, în set p pentru, ai făcut asta. Și mâner putea fi orice, fu, bar, bas, orice nume de variabilă. Dar, în general un calculator om de știință ar numi un fișier deschis, oferindu-vă un mâner fișier, ceva să dețină pe ca să spunem așa. Mă duc să fac unele verificarea erorilor. Deci, în cazul în care mânerul este falsă, la fel ca în C, am de gând să fac ceva de genul, nu a putut deschide fișierul, backslash n. Și apoi Mă duc a merge mai departe și de ieșire. Și se pare că, în PHP, Eu nu sunt în interiorul unei funcții. Nu e nici o funcție principală aici. Așa că nu se mai întorc, în sine. Am ieși. Care este în esență același lucru. Și eu ies cu un Y probabil. Unul înseamnă doar o eroare de un fel. Este diferită de zero, asa ca este o eroare. Bine, deci dacă eu sunt aici acum în programul meu, am deschis fișierul. Am de gând să mergeți mai departe și să declare o matrice numit adrese, și în C mi-ar fi să știu mărimea matrice în avans, nu? Sau mi-ar trebui să declare acest lucru este un pointer, iar apoi utilizați malloc. Și apoi de fiecare dată am citit printr-o altă rând în dosar, Am de gând să trebuie să malloc mai multă memorie, malloc mai multă memorie. Aceasta este o durere în gât. Și din fericire, PHP, Ruby și, și Python, și JavaScript, ei va crește tablouri dvs. pentru tine în mod automat. Nu mai malloc. Nu mai gestionare a memoriei. Computerul are grija de asta. Dar prețul pe care îl plătiți. E un pic mai lent. Și pentru un program de genul asta nu vom observa. Vom trimite 100 de mesaje text. De exemplu, nu o să-l simți. Este într-adevăr începe numai conteaza limba dvs. de a alege atunci când datele sau programele obține cu adevărat, într-adevăr considerabilă, ca va fi cazul cu atât mai mult cu lucrurile noastre bazate pe web. Dar pentru moment să merge înainte. În timp ce se pare că există o funcție în C numit f obține CSV. Fișier CSV obține, care are o fișier mâner ca argument, și continuă apoi, rând, de rând, de rând, pentru a citi într-un rând. Deci, se citește doar o linie de text din fișierul. Dar ceea ce e frumos despre această funcție, aceasta nu doar dă-mi-o linie de text. Se pare ca aceste virgule, și analizează linia. Și pentru a analiza linia de mijloace pentru a împărți aceasta pe anumite valori în acest context. Cu alte cuvinte, semnul dolar rând este o variabilă care este O să-mi dea o grămadă de indici. Acest lucru se întâmplă să fie prima coloană în CSV mea. Aceasta va fi a doua coloană, aceasta va fi a treia, și acest lucru va fi al patrulea. Deoarece rechemare, și Excel NOT coopereze ultima dată când am făcut asta, dar dacă pot descărca personal dot CSV. Ne pare rău, nu redenumi. Dacă pot descărca dot personal CSV, și încercați să deschideți-l, Deja am registered-- oh nu au actualizat Excel de la ultima dată. Veți vedea că, în punct de personal CSV, am patru coloane. Așa că atunci când am citit în primul rând pentru Abby aici, dolar semn rând 0 este Abby, dolar semn rând unul este Lyons, dolar semn rând doi este numărul ei, și apoi de transport telefon ei. Deci asta-i tot. Și asta e frumos, că am Nu trebuie să dau acum din unde toate aceste virgula fapt sunt. Deci, am de gând să merg mai departe și face acest lucru, dat fiind faptul că definiția, Am de gând să spun că numele ei este în suport rând la zero, așa cum a promis. Și am de gând să grab-- și De fapt, știi ce? Nu am de gând să vă faceți griji cu privire la numele ei, în acest caz. Am de gând să-l păstrați simplu. Am de gând să fac numărul ei este în rândul suport două, cred. Și transportator ei a fost în cazul în care? Row trei, unul peste. Deci, nimic nou acolo. E doar zero, indexarea într-o matrice. Și acum, am de gând să fac următoarele. În cazul în care operatorul de transport este egal cu egal AT & T-- Mă duc pentru a avea un loop-- Vreau să creeze un e-mail adresă care arata ca acest lucru. O să fie 617-555-1212 la, ce este, text.ATT.net, este ceea ce vreau să fac. Deci, cum fac asta? Am de gând să fac următoarele. Adresa ei va fi numărul ei, și acum, lasă-mă să merg mai departe și a face acest lucru. Acest lucru este ceva sintaxă funky. Am putea face la sută s truc, dar pot de fapt, doar face acest lucru. Deci, acesta este un lucru PHP, dar să considerăm ceea ce fac. Dolari semna adresa pe stânga, doar o variabilă. Dă-mi o variabilă. Nu am pentru a specifica tipul. PHP va da seama. Pe partea dreapta, ceea ce este tipul de date de care totul pe pe partea dreaptă? Se pare ca un șir de caractere, pentru că există dublu citate pe extrema stângă și extrema dreaptă. Acum există unele sintaxa nou funky, aici. Există acolade, și numărul semn dolar. Dar ia o ghici ce este că sintaxa probabil spune PHP pentru a face pentru mine? Da. Doar introduceți valoarea acolo. Deci, nu la sută s. Am putea folosi de imprimare f, sau s imprimare f sau ceva de genul acesta, dar PHP și o mulțime de limbi nivel superior, ai de gând să văd că ai putea face acelasi lucru funcțional, poate șase moduri diferite. Și așa începe să devină o chestiune de proiectare sau de stil. Deci, aceasta este doar o modalitate de criptic căutarea de a spune, da-mi o adresa de email, dar plug-in numărul din între aceste acolade. Și acolade nu vor ajung în adresa finală. Acum putem sări peste unele dintre aceste linii de dragul lui. timp Deci, dacă un operator de transport este egal cu este egal cu verHorizon-- Hopa, Verizon-- vreau să fac ceva foarte asemănătoare, în cazul în care adresa devine, Citat, unquote, numărul la text.ATT.net. Și apoi eu pot face același tip de lucru pentru restul transportatorilor. Dar voi face doar punct, punct, punct de acum. Și acum să presupunem că Vreau să adăugați matrice, apăsați. Vreau să adăugați la matrice, numit adrese. Această adresă, aceasta este modul în care adăuga ceva la o serie de PHP. Nu aveți nevoie pentru a face malloc. Nu trebuie să redimensiona matrice. Tu spui doar matrice, împinge. Ce vrei să push-- ce matrice vrei să împingă ceva pe? Adrese. Ce vrei să împingă pe adrese? Adresa. Și, de fapt, dacă doresc cu adevărat să fie inteligent, o cantitate de zahăr sintactic pentru aceasta, ca să spunem așa, ceea ce înseamnă că doar cum se poate face acest lucru în modul mai frumoasa, ar fi de a face acest lucru. Că are prea efectul de creștere matrice adrese de mărime unul, și apoi plop că suplimentare adresă e-mail în ea. Da. Audiența: [inaudibil] SPEAKER 1: o greșeală de scriere cu privire la altceva if-- oh, purtător. Asta e ok. De asemenea, nu va dori să-mi eșecul punerea în aplicare a parte a acestui program mai târziu. Dar vă mulțumesc pentru prinderea. Unul mai mult bug. Multumesc. Ne dorim ca acest lucru să fie Vtext.com. Da. In regula. Deci, în cazul în care face acest lucru ne lasă? Am scris codul pentru a deschide fișierul. Avem o buclă de a repeta peste rândurile din fișierul. Avem cod care se adaugă la mea matrice, una la un moment dat, în mod corect adresă e-mail formatate. Deci, tot ce rămâne într-adevăr este de a trimite un e-mail la fiecare dintre aceste persoane. Așa că am mers mai departe și eu pregătit, după cum urmează. Ceea ce am de gând să fac aici este-- și să mergeți mai departe și trece la unele codul actual, care arata ca acest lucru. Deci, aici este pre-copt Versiunea am scris mai devreme. Și observați am terminat de punere în aplicare Sprint. Am terminat implementarea T-Mobile. Am terminat de punere în aplicare Virgin Mobile. Și voi cer scuze în avans. Exista cateva transportatorii care unii elevi din clasa au că nu am deranjat enumerând în cazul în care starea de aici. Deci, nu toate textele vor ieși. Dar să vedem ce altceva trebuie să fac. Am închideți fișierul, doar ca în p set de patru. Și acest lucru este nou sintaxă. Și vom vedea un pic bit de acest timp, în special cu p stabilit șapte și opt. Dar acest lucru este sintaxa pentru a crea un tip special de structura. Se pare că este o bibliotecă care vine cu PHP, numit PHP Mailer. Scopul său în viață este să trimite e-mailuri programatic. E cod altcineva a scris că face mai ușor pentru noi pentru a trimite e-mailuri, așa că nu trebuie să țină merge înainte și înapoi la Gmail, și lipirea în adrese de email oamenilor. Există o grămadă de linii aici că sincer, doar un fel de copiat și lipite din documentația. Și, de fapt, daca esti curios, am lăsat toate din adresele URL ale documentației în codul pe care vom posta mai târziu. Și observați că între lucrurile pe care le fac este, eu spun această bibliotecă, utiliza serverul Gmail, nu? SMTP am vorbit pe scurt despre atunci când am au fost la Yale despre a fi Simple Mail protocol de transfer. Este protocolul care servere folosite pentru a trimite e-mail, și that's-- Gmail are una dintre cele. Un port, acesta este numărul de port TCP. E bine dacă nu au văzut 587 înainte. Știu doar că din documentația. Iată numele meu de utilizator. Am de gând să utilizeze bot CF50. Și într-un moment, eu sunt doar de gând să introduceți parola actuală bot de. Și apoi aici, observa ceea ce rămâne. Am stabilit meu de la adresa să fie BOT la CS50.net. Cred că nu va trimite un regret mesaj text la 800 de oameni care spune, dor de tine, bot dragoste CS50, poate pentru cei care nu ar putea face astazi. Și apoi, în linie 76, ce fac? Acest tip de arata ca C. Deci, pentru I este egal cu 0, n equals-- acum conta este nou. Se pare că, dacă doriți să obțineți numărul de lucruri într-o matrice, nu trebuie să-l amintesc mai. Puteți cere doar o Funcția numit conta, și vă va spune cât de multe Adresele sunt în matrice. Și apoi am de gând să adăugați adresa la e-mail. Și știu acest lucru de la Utilizarea documentației. Există o funcție de adăugare adresă. Și acum observați acolo este o bucată de sintaxă. Am mai văzut asta înainte în C. similare în spirit. Vă puteți gândi la semnul dolar ne ca o variabilă, care este. Dar este o struct în interiorul care nu sunt numai proprietăți, variabile dacă vrei. Dar se pare că în PHP, care este un programării orientate pe obiecte limbă, cum ar fi Java, dacă ai luat APCS. Dolar semn mail, dacă doriți sa-- ea are, de asemenea, funcții în interiorul acestuia, sau metode. Deci, acest lucru este de a spune că PHP Mailer speciale bibliotecă, dacă am o variabilă a acestuia, dacă vreau să sun o funcție care vine cu acea bibliotecă, în scopuri de astăzi, știu doar să utilizați notația săgeată. Nu e nici o notație punct. E doar săgeata. Dar asta nu e un pointer. E doar împrumutat de la sintaxa C lui. Deci sun adăugați adresa în interiorul obiect sau variabilă această bibliotecă a lui. In regula. Aceasta este linia magic. Așa am trimite un e-mail. Acesta este echivalentul de deschidere Gmail, aceasta dactilografiere afară, și lovirea trimite. Dar va trimite în schimb un e-mail la această adresă, cu acest organism, de la bot CS50. Și acum linie cheie. Această linie a fost absent în 2011 ca când mă gândesc am încercat ultima asta. Această linie acolo, desigur, șterge adresele. Deci logic, dacă aș Nu clar adresa după fiecare iterație, primul e-mail sau mesaj text merge la Alice, al doilea se duce la Alice si Bob, al treilea se duce la Alice și Bob și Charlie, prin urmare, foarte scump greseala Am făcut acel an. Deci, să vedem. Există întrebări înainte de a ne trimite toate un text mesaj cu 10 la suta probabilitate? Alte intrebari? In regula. Să-mi drumul aici și schimbarea parola la ceea ce ar trebui să funcționeze, va primi probabil pe lista neagră de Gmail. Deci, s-ar putea merge nu toate out, deoarece, probabil, Nu-mi place să ne trimite e-mailuri 800 într-o buclă de-o dată. Din moment ce nu este comportamentul uman deosebit. Oh, am de gând să schimbe un alt lucru. Până la partea de sus, am de gând să sent-- modificați fișierul studenților dot CSV. Și nu se va deschide acest lucru, dar aceasta este o fișier CSV identic cu nu 100 de personal, dar 800 de studenți, doar de la Harvard, Yale, deoarece are locaș luna octombrie a acestui săptămână. Și se pare ca un fel de lucru nemernic să facă la text toate de ce nu sunt în clasa în vacanță. Asta e ok. Doar studenții la Harvard astăzi în interiorul acestui fișier. Și acum să ne întoarcem la fereastra mea terminal. Sunt un fel de nervos. OK asa ca acum am de gând să meargă în director, și punct de text PHP PHP. Ce zici de un voluntar curajos? Deci, eu nu vreau acest lucru pe mine. OK, haide sus. Care e numele tău? MAYA: Maya. SPEAKER 1: Maya. Hai sus, Maya. In regula. Să vedem dacă funcționează. Mi-am pus adresa mea de e-mail proprie în file-- numărul meu de telefon propriu în dosar, astfel încât sperăm voi primi unul, de asemenea. Îmi pare bine să te cunosc. MAYA: De asemenea. SPEAKER 1: Deci tot ce trebuie să faceți este să apăsați Enter pentru a trimite 800 de mesaje text, dacă nu am în bară. Nisa. Ar putea dura un timp, statistic, până când vom ajunge la un e-mail address-- un mesaj text care este în camera de acum. Să leneviți și să vedem. Audiența: [Whistling] SPEAKER 1: Oh, da. Audiența: Oh, Te-am prins. SPEAKER 1: Pentru bucle are-- acest nu este lentă din cauza PHP. Acest lucru este lent, deoarece Gmail ne supraîncărcarea și nu permițându-ne trimite mai mult de ca unul de e-mail pe secundă. Orice? Acest lucru a fost un lucru greu pentru mine pentru a testa la acasă cu doar eu si una telefonul meu, așa. Este că sperăm la bot? Da? Nu? Spune da. Nu? E de la un prieten? Ciudat. BINE. Destul de sigur că funcționează, deși. Uh oh. Ei black-- oh, așteptați un minut. Știi ce? Un moment va rog. Numai Maya si Eu-- Mia, a fost? MAYA: Maya. SPEAKER 1: Maya, sunt de gând să știu ce am făcut greșit aici. Oh, stai un minut. Cred că tocmai am trimis 100 mesaje text la 555-1212. Așteptare. Nu pot câștiga un an. BINE. Maya? Fix că, în producția de post. La naiba! În urma de la adresa. OK, in stand by. Scuze. E dureros în fiecare an. OK, un moment. Asta e bine. Am loc de gând să facă acest lucru. Adresa de imprimare. OK, in stand by. Adrese de imprimare, suport i. Da, îmi place asta. Dolar sign-- OK voi explica ceea ce am face într-un moment, după ce m-am rula acest. In fiecare an. OK, aici vom merge. Am doar-- și nu vreau pentru a arăta numărul de telefon tuturor, dar Maya poate confirma cu un semn al capului, că ea vede toată lumea e număr de telefon în clasa că am de gând să copiați în un program numit Gmail. Și dacă în Gmail, ceea ce vrem să spunem? Mi-e dor de tine. Love-- nu e de la mine. Nici măcar nu am lovit trimite încă. Așa că hai să mergem mai departe și de a face acest lucru, dacă pot mări. BINE. Deci, eu sunt, folosind un program numit Gmail acum. Dacă Maya, doriți să faceți clic pe butonul Send, vom simula ce că Codul ar trebui să fi făcut. Orice? [BEEPS] Audiența: Da. SPEAKER 1: Da? Mântuire? Audiența: Da. SPEAKER 1: dor de tine. Și am de gând să trimită restul. Am trimis jumătate pentru că eu nu cred că Gmail va lăsa pe cei trece prin. Așa că amintiți-vă, astăzi este ziua că ai învățat că pot folosi Gmail. Asta a fost oribil. O aplauze mare pentru Maya. Multumesc. Bine, așa. ce [BEEPS] Avem câteva beep-uri, da? In regula. Acum am de gând pentru a obține într-adevăr 700 e-mailuri de la colegii de clasă nefericite înapoi. Deci, cel puțin, vom vedea dacă a meritat. Deci, ce a mers prost? Voi da seama ce a mers greșit după faptul, dar uita-te cât de ușor a fost de a face că, în PHP. Deci, ce putem face acum, că de fapt, avem această expresivitate de PHP. Asta asta-- care a fost oribil. In regula. Deci, asta a fost ceea ce ar fi trebuit să ieșit. Acest lucru a fost mi-a testa în această dimineață pe meu telefon, screenshot reală de telefonul meu. Dar acum să considerăm de ce suntem de fapt introducerea toate aceste lucruri, în primul rând. Deci, scopul nu este de a scrie aceste programe care sunt scrise în linia de comandă, nu? Așa că am scris un simplu salut programul, am scris un mic program care face condiționale, si a folosit o linie de citire și așa mai departe. Și în teorie, tocmai am scris un program care a trimis 800 mesaje text, da sau de a lua 800. Și că programul a fost tot încă rula la linia de comandă. Și că, desigur, este nu pe web, nu? Scopul este acum de a începe să utilizați ceea ce pretind este un ușor de utilizat limbă, îndrăznesc să spun un mai limbaj puternic din punct de vedere dintre caracteristicile care vin cu ea, pentru a începe scrierea de cod care generează pagini web. Deci, ultima dată și săptămâna trecută, am vorbit despre HTTP și HTML. Și ceea ce este frumos despre HTML este că este doar un text pur. Și text este cu siguranță ceva pe care le puteți imprima de literalmente apel de imprimare f funcție, sau funcția de imprimare. Și într-adevăr, asta e ceea ce este PHP acum de gând să ne permită să facem. Deci printre exemplele pe care le au în codul sursă de astăzi, în plus față de o parte din codul că am pus acolo în urmă cu o clipă, Avem programe de acest gen, de exemplu. Froshims, sau bobocilor Intramural sport, a fost de fapt unul dintre primele extracurriculars M-am implicat cu ani în urmă. Și coleg de cameră și am mea, cu alte copii de pe campus, folosit pentru a rula programul froshims. Primesc mesajele mele scrise acum. Acum așa și noi, din nou în a doua zi, astfel încât această a fost 1,996 sau cam asa ceva, nu a existat un internet, dar nu a existat nici process-- acolo a fost găsit nici un site pentru froshims. Și așa că, dacă ai vrut să vă înscrieți pentru fotbal sau volei sau orice altceva, v-ar completați acest lucru numit o bucată de hârtie, și v-ar plimba peste Harvard curte, și v-ar aluneca în slotul mail a Proctor, care a fost în Wigglesworth, unul din cămin. Și acest lucru vă s-au înregistrat. Și el sau ea ar atunci compune un e-mail pentru a vă manual, la fel ca eu doar a făcut aici cu Maya, și apoi v-ar fi confirmat ca fiind înregistrată. Deci, acest lucru a fost ca nivelul agățat de fructe, ca să spunem așa. A fost un fel de stupid ca am fost utilizarea hârtiei pentru acest lucru. Am vrut să fie în măsură pentru a merge doar pe un site, sau au boboci merge pe un site-ul, inscrieti pentru sport, și doar automatiza o mulțime de aceste lucruri prin punerea numele și e-mailuri lor și așa mai departe într-o bază de date. Și, de fapt, prima versiune a site-ului, folosind HTML super-urât, ar fi privit ceva de genul asta. A fost de fapt, în mod ironic, mai jenant bine decât asta înapoi apoi. Dar am folosit un limbaj de programare. Nu PHP, ci numit Perl, care este o limbă mai veche, dar foarte similare în spirit. Și am complet învățat să mă. Si mi-a luat ceva timp să-mi dau seama, cere o mulțime de întrebări de prieteni. Dar ideile de acolo au fost exact la fel. Pentru că ceea ce a fost cu adevărat conceput PHP pentru nu este chestii linie de comandă ne-am jucat cu, dar pentru programare web. Este într-adevăr legat în funcție de setat pe web, după cum urmează. Aceasta este froshims. Și dacă am vrut să înregistrați în această formă, acest lucru este destul de urât, cu siguranță, dar lasă-mă să merg mai departe și să fie un student mai puțin confortabil, și orice sport pentru Matthews, faceți clic pe Înregistrare. Ceea ce vreau să fie capabil să facă este să prezinte informații de la un formular, nu la serverul Google ca am făcut ultima dată, complet inseala cu ajutorul backend lor, am doresc să pună în aplicare propriul meu cod backend. Ceea ce înseamnă a scrie PHP cod care locuiește la o adresă URL că datele din formular pot fi depuse la. Și apoi codul, scris în PHP pe un server, poate apoi răspunde la asta introduse de utilizator. Cum ar fi numele lui sau a ei, sau la nivel de confort, sau cămin, și apoi face ceva cu el. În acest caz, eu doar stupid-l imprimate ca text, care nu este tot ceea ce destul de. Dar ai putea cu siguranță imagina, dacă știi HTML, și veți ști cât de curând cum de a genera HTML cu print f, și de imprimare, și funcții similare, puteți cu siguranță genera o pagină web mai frumoasa care spune, Hei David, tu sunt înregistrate acum. Ești un mai confortabil elev de la Matthews, nu? Aveți posibilitatea să utilizați doar o grămadă de ses%, sau acolade și semnul dolar notație am folosit acum o clipă, pentru a genera text care este mai ușor de utilizat decât aceasta. Deci, haideți să aruncăm o privire la acest fișier unul. Froshim zero, punct PHP arata ca acest lucru. Când m-am reîncărcați IDE CS50, zero, froshim arata ca acest lucru. Acest lucru este froshim zero, punct PHP. Și ce observi despre acest fișier? Audiența: [inaudibil] SPEAKER 1: Ne pare rău, un pic mai tare? Audiența: [inaudibil] E totul în HTML. Și, de fapt, este, pentru că ceea ce este interesant despre PHP este că acesta a fost conceput să fie, pentru o mai bună sau pentru mai rău, amestecate cu codul HTML. Și, de fapt, chiar dacă acest lucru fișier, froshim la zero punct PHP, are un comentariu PHP la partea de sus de ea, totul este doar HTML. Dar în schimb, în ​​cazul în care am deschis în sus, să să zicem, inscrieti la zero punct PHP, care doar are un comentariu mare în partea de sus. Acest prea pare aproape în întregime cum ar fi HTML, cu excepția pentru ce? Linie, ceea ce, 21 arată un pic ciudat. Dar observați am intra în modul PHP cu suport deschis semn de întrebare PHP. Apoi am niște chestii. Și apoi, la sfârșitul acestei linii Aproape am, semn de întrebare PHP. Și aceasta este ceea ce vreau să spun de amestecat. Puteți scrie HTML pe care tocmai ați doriți ca serverul să scuipe. Dar, dacă vrei să faci ceva partway dinamic prin intermediul paginii, ca inserați numele meu sau cămin sau la nivel de confort, Pot folosi o funcție ca de imprimare R, care este imprima recursivă, ceea ce înseamnă doar imprima această variabilă, formatarea se Cu toate acestea vrei. Nu e chiar pentru scopuri umane, e doar pentru depanare sau scopuri de diagnostic. Deci, asta e cum am făcut asta. Dacă mă duc în locul froshims două punct PHP, observă că acțiunea acestui formular nu este înregistrat la zero punct PHP ca old-- cea anterioară a fost de fapt. Dar e înregistrat două puncte PHP. Deci, să ne uităm la modul în care aceasta se comporta un pic diferit. Dacă mă duc în versiunea două. Dacă aici, dacă mă înregistrez ca David, mai puțin confortabil, de la cămin de Mathews, înregistra. Deci, de data aceasta a spus, tu sunt înregistrate, nu chiar. Să vedem ce am făcut aici. Dacă mă uit la registru două dot PHP, acest lucru are ceva mai mult de cod PHP. E un pic mai curat, cu toate că încă înfășoară un pic cam lung pe această linie. Observați aici. Am imprima eticheta mea HTML, tag-ul capul meu, tag-ul meu titlu, cap, corp. Și apoi am început să spun lucruri cum ar fi intra în modul PHP. Și pentru ca tag-ul, suport deschis Semn de întrebare PHP-- PHP spune, hei, server, execute-- interpreta următoarele lucruri ca PHP până când vedeți eticheta final. Și chiar dacă ar putea să nu cunosc nici altele decât PHP le-ați văzut până acum, puteți citi un fel de ea destul de intuitiv. Dacă numele este gol, sau confortul este gol, sau cămin este goală, ce să fac? Ce spun pentru utilizator? Trebuie să furnizați numele, confort, și cămin, și așa mai departe. Altfel, spun esti înregistrat, bine nu chiar. Și nu spune cu adevărat pentru că nu există nici o bază de date. Nu fac nimic cu datele. Eu doar l aruncați pentru scopuri demonstrative. Acum am un fel de zgarcita peste linia 22. Există mai multe sintaxa acolo, dar semnul dolar sublinia post-este un fel de interesant. Și aceasta este ceea ce este frumos despre PHP. În PHP, aveți ceea ce se numesc câteva variabile globale Super. Ele sunt un fel de chiar mai important decât variabile globale. Și acestea, toate capitalizate ca atare, vin cu PHP. Deci, dacă aveți un server care are un server web instalat, cum ar fi Apache, și instalați limba suport pentru PHP, dintr-o dată te poate începe să utilizați aceste super- variabile globale în codul dumneavoastră. Și ceea ce este frumos despre PHP este că, dacă doar scrie un fișier care se termină în punct PHP, pune-l pe un server web, și apoi trimiteți un formular pentru a prin care tag-ul de acțiune și o etichetă formă, că atribut de acțiune în forma tag-ul, PHP și pe web complet seama cum de a apuca toate aceste perechi de valoare-cheie din din URL-ul ca întrebare marcă q este egal cu pisici, se va da seama cum să q și pisici. Dacă trimiteți o fotografie, sau un nume de utilizator, sau o parolă pentru a place Facebook, PHP va da seama pentru tine în cazul în care toate de care datelor este. Și-l va preda doar ai un tablou asociativ numita dolar posta semn subliniere, sau semnul dolar sublinia obține, în funcție de dacă sunteți folosind GET sau posta observații. Și vă va înmâna doar o variabilă globală super, astfel încât, dacă doriți să obțineți de la numele că utilizatorul a prezentat, prin intermediul web care formular, literalmente spune doar numele din variabila globală super, citat, încheiat citatul, nume. Și citat, confort citatul, și citat, cămin încheiat citatul. Și vom putea face acest lucru și mult mai mult cu PHP. Si chiar daca acest lucru a fost o privire vârtej de vânt la ea, vom arunca cu capul în mai saptamana viitoare. Vom introduce o bază de date astfel că ești de fapt de gând să înceapă punerea în aplicare a propriul based-- e-comerț ca site-ul, în timp doar o săptămână. Deci ne vedem data viitoare, și Sper că ai mesajelor text. Pa. [MUSIC JOC] [DOOR DESCHIDERE] SPEAKER 2: Hei. SPEAKER 3: Care-i treaba? SPEAKER 2: Ce faci? SPEAKER 3: Lucrul pe un set problemă. SPEAKER 2: Nisa. Bate palma. [BATE PALMA] Ce are-- uh, ce faci aici? SPEAKER 3: Doar stau. Tocmai sa întors de la sala de sport. N-am putut ajuta, dar observă atunci când ne-mare bătut palma, că aveți mâinile destul de dur. Nu te duci la sala de sport? SPEAKER 2: Nu. Nu. SPEAKER 3: Omule, arăți destul de mare. Ceea ce este rău, pentru că toată lumea știe 8-ball este omul mare din campus. Bate palma. SPEAKER 2: Uh, nu. Nu, cred că sunt bun. Cred că sunt bine.