[RIPRODUZIONE DI BRANI MUSICALI] SPEAKER 1: Questo è CS50 e questa è la fine della settimana di sette. Oggi è forse dove siamo davvero l'insegnamento delle lingue. Abbiamo introdotto nel corso degli ultimi due settimane HTML e CSS, nessuno dei quali sono linguaggi di programmazione. E infatti, anche se non abbiamo fatto guardare quasi tutti i tag che l'HTML viene fornito con e quasi tutti delle proprietà che viene fornito con i CSS, che una specie di esso per HTML e CSS. Ci limiteremo a generale iniziare a patto che abbiate capire le idee generali di tag e attributi, e le pagine inviati dal client al server. Perché oggi si comincia a guardare altro linguaggio di programmazione, PHP. Stiamo andando a fare questo super veloce. Non abbiamo intenzione di insegnare PHP di per sé, proprio come noi non aspiriamo a insegnare C, di per sé, ma piuttosto programmazione. E in effetti, uno dei obiettivi per questo corso non è quello di insegnare C, o HTML, o CSS, o PHP, o un qualsiasi numero di altri parole di moda o acronimi, ma piuttosto l'informatica e come programmare fondamentalmente. E infatti, oggi cominciamo a prendere quelle ruote di formazione fuori tutto il ulteriormente volando attraverso un linguaggio chiamato PHP, come segue. Ecco ciò che questo linguaggio sembra. Si scopre che non vi è alcuna necessità di una funzione principale di un programma scritto in un linguaggio chiamato PHP. In modo che già suona un po 'più semplice di C, con cui siamo a conoscenza. Si scopre che, se si vuole dichiarare una variabile, lo si fa in modo quasi identico a C. Ma c'è chiaramente una differenza qui quando dichiaro una stringa, o forse due differenze. Che cosa ha un aspetto diverso? PUBBLICO: Il simbolo del dollaro. SPEAKER 1: Sì, c'è dollaro segno, che non abbiamo mai visto prima. E che cosa manca? Sì? PUBBLICO: [incomprensibile] SPEAKER 1: Sì, non c'è alcun tipo di dati. Così si scopre che PHP è ciò che chiamare un linguaggio debolmente tipizzato, dove C è fortemente tipizzato. Debolmente tipizzato significa solo che ci sono diversi tipi di dati, ci sono stringhe e interi, e carri allegorici. Ma le cifre del computer che fuori. È il programmatore umano non c'è bisogno di capirlo. Quindi tutto quello che dovete fare per dichiarare una variabile è simbolo del dollaro, il nome del variabile e quindi, per esempio, tra virgolette, ciao mondo. Beh, questo è ciò che un condizione sembra in PHP. Le differenze? No. Così si scopre questi sono identici. E si potrebbe avere meno rami o più rami, ma i giri di sintassi esattamente la stessa. Espressioni booleane può essere ordinato insieme. Espressioni booleane possono essere anded insieme. Hai ancora interruttori. Anche se non è stato utilizzato questi, questi esistono in C e sono funzionalmente equivalente in PHP. E infatti, in PHP sono un po 'più potente. In C, è possibile confrontare certo solo i tipi di dati come int e caratteri, mentre in PHP si può effettivamente confrontare stringhe complete fledge senza dover di preoccuparsi per i puntatori e simili. Quindi, ecco un ciclo for. Questo è solo pseudocodice codice, se si vuole. Ma strutturalmente è identico a C. Ecco un ciclo while, pseudocodice therefore-- identico a C. Ecco un po 'do loop-- identici. E quindi c'è una specie di questo schema per cui qui c'è qualche altro sintattica Caratteristiche stiamo davvero andando a vedere. Qui, infatti, è un bel modo in cui PHP, se volete iterare su un array, e si non vogliono saltare attraverso il cerchi mentali e sintattiche di avere int i è uguale a 0, i meno di n, i plus che plus-- è solo un sacco di sintassi fastidioso. Si può dire un po 'di più fluidamente per ogni numeri il numero, dove in questo caso numeri simbolo del dollaro, sto assumendo, è come un array chiamato numeri. E poi io sto assumendo il numero, singolare, sta per essere una variabile. E che il PHP farà per me, come ho iterate su questo ciclo è, ad ogni iterazione, sta andando aggiornare il numero variabile di l'elemento esimo in numeri, plurale. Così è solo gestisce tutto questo per me. Nessun parentesi quadre, non simbolo del dollaro, non punti e virgola. E 'solo un po' più semplice. Beh, se si vuole un array, si scopre che può fare qualcosa di molto simile a C. La sintassi è un po 'diverso. Ma qui è un array chiamato dollaro firmato numeri. E io uso, in PHP, piazza staffe, si scopre. E andiamo a vedere questi di nuovo in Javascript-- un'altra lingua. Mi basta usare la notazione parentesi quadra per avere un elenco separato da virgole di numeri interi, in questo caso. Ma che mi dà un array. Ma ancora più potente in PHP, abbiamo anche quali sono generalmente chiamato array associativi. E un sacco di lingue avere questi. La cosa su array C è che gli indici per un array, la cosa che utilizzare parentesi quadre via che si accede elementi, deve essere una cosa? PUBBLICO: [incomprensibile] SPEAKER 1: Devono essere numeri o interi, in particolare da zero in su. Beh, in PHP, e, si trasforma out, in altre lingue, si può iniziare ad avere gli indici che non sono numerici. Ma sono in realtà parole o frasi, in modo che, anziché cercare di ricordare dove qualcosa è, o memorizzato in una variabile i, si può effettivamente utilizzare una parola e dire che-- si può dire una parola come questo. Così il segno del dollaro citazione è il il nome di una variabile qui. Questo è un po 'funky sintassi questo è associare due valori chiave coppie per questa variabile. In particolare, questo mi sta dando un array è di lunghezza 2. Ma gli indici non sono 0 e 1. Gli indici sono tra virgolette simbolo e preventivo unquote. E i valori di tali indici, rispettivamente, è FB per Facebook e $ 79,53, quando ho scorso controllato un prezzo per questo. Che cosa significa? Ebbene, significa che invece di scrivere codice come questo, dove ho usato per fare qualcosa come dollaro sign-- o meglio, in C Non avrei nemmeno un segno di dollaro. Vorrei fare qualcosa come citazioni e poi Vorrei fare staffa io ottenga un certo arbitrariamente numericamente il valore indicizzato. A partire da oggi in PHP, se si vuole arrivare a un certo valore, noi abbiamo più di sorta espressività semantica. Solo un modo elegante per dire che possiamo basta chiamare le cose come sono. E se si vuole ottenere a qualcosa simbolo, ora si fa letteralmente citare il simbolo unquote tra parentesi quadre anziché la semplice numero. Quindi è una bella comodità. E questo è una sorta di esso per ora. Ci sono mazzi di altre caratteristiche in PHP. E, infatti, è dotato di PHP il lavello della cucina proverbiale. Decine, centinaia di funzioni vengono con PHP-- tanti più che è venuto con C. E che non è destinato a sopraffare ma piuttosto aiutare ti rendi conto che non siamo avere più tempo per scrivere codice che è una sorta di quaggiù concettualmente. Ora possiamo solo iniziare a prendere vantaggio di molto più avanzate caratteristiche che i linguaggi come PHP hanno. Quindi non dobbiamo preoccuparci in movimento le cose intorno a memoria. Noi non dobbiamo preoccuparci di malloc e tutti questi livello inferiore, dettagli potenti che si lotterà con, se non lottare con, pset5, ma si può cominciare a presto dare per scontato. Infatti, scriviamo un super semplice programma in PHP, come segue. Ho intenzione di andare in testa CS50 IDE qui, e quello che ho intenzione di fare è creare un nuovo file, che in modo molto semplice sta per essere chiamato ciao puntino PHP. Così, invece di punto c, è andando a essere chiamato dot PHP. E poi in questo file, Posso iniziare a digitare. Ma risulta che il una cosa che devo sapere è che qualsiasi file PHP in generale, ha bisogno per iniziare con qualche sintassi speciale. Simile nello spirito a HTML, ma ancora una volta, PHP è un linguaggio di programmazione, non un linguaggio di markup. Così ogni file, ed è sorta di stupido guardando lo ammetto. Aperto staffa, punto interrogativo, PHP. E questo è solo il modo di lingua per dire, ehi, computer ecco che arriva un po 'di codice scritto in un linguaggio chiamato PHP. E poi alla fine del file, fate sorta di sorta di opposto. Non scrivere PHP di nuovo, basta fare il punto interrogativo, parentesi angolare. E poi tutto quello che mette dentro di questi due tag, per così dire, sarà, o dovrebbe essere, il codice PHP. Quindi cerchiamo di fare qualcosa di super semplice. Ho intenzione di andare avanti e fare stampare def, ciao mondo, backslash n, salvare. E ora al mio sollecito, ho intenzione di faccio, faccio hello-- no, ho intenzione di fare, dot taglio su ciao. No, barra di punti, hm. Quindi, qualcosa di diverso. E in effetti, si tratta di una differenza fondamentale tra PHP e linguaggi come C. C era un cosiddetto linguaggio compilato. Che cosa ha significato per C da compilare? Qual è stata l'implicazione? Già. PUBBLICO: Ha scritto in codice macchina in modo che possa essere eseguito dal computer. SPEAKER 1: Esattamente. Dobbiamo prima convertire in cosiddetto codice macchina, zero e uno, prima che possa effettivamente eseguibili e compreso dal computer. Da Intel all'interno. Con la CPU all'interno del computer. PHP, invece, è quello che si chiama un linguaggio interpretato, che significa che non compilarlo in zero e uno, codice macchina, voi invece lasciate come codice sorgente. E tu invece passa come input un programma, un interprete che qualcun altro ha scritto anni fa, che la comprende riga per riga, carattere per carattere. Quindi, in altre parole, gli esseri umani là fuori ha scritto un programma che avrà un aspetto al vostro codice riga per riga, e capire cosa il computer dovrebbe fare, senza convertirlo direttamente a zero e uno. Quindi, se vede un ciclo for, questo cosiddetto interprete sta per essere come, va bene, dovrei fare qualcosa di nuovo e di nuovo e di nuovo. Cosa dovrei fare? Fammi vedere la riga successiva. Fammi vedere la riga successiva. E interpreta veramente riga per riga. Quindi, per eseguirlo, io non uso trucco. Io non uso dot barra in questo caso. Io invece faccio PHP, che è il nome di un programma, pseudonimo Un interprete, che è pre-installato in CS50 IDE, e ora ho bisogno di passare un argomento della riga di comando, che è semplicemente il nome del File che voglio interpretare. O più casualmente, che voglio correre. E se premete Invio, non l'abbiamo. Ciao mondo. Ora si scopre che usato def stampa deliberatamente per colmare noi da C a PHP. La maggior parte dei programmatori PHP, come vedrete, non si preoccupano neppure con stampa def. Hanno appena utilizzano una funzione chiamata stampa, che C non aveva. E così, se io eseguire di nuovo ora, in realtà si comporta funzionalmente equivalente. Non posso usare la percentuale s e cento i e così via, ma ci sono altri modi in PHP di farlo. Ma questo è solo dire che sintatticamente, altro che alcune cose strane in su superiore, e alcuni personaggi strani giù nella parte inferiore, i concetti di oggi programmazione in questo lingua stanno per essere esattamente lo stesso. In realtà, facciamo un altro esempio. Quindi ho intenzione di andare avanti e chiudere il file. Permettetemi di creare un altro che Chiamerò condizioni 1 punto PHP. Quindi no a zero, perché quello che ho fatto ero guardato indietro un paio di settimane fa, abbiamo avuto un file chiamato condizioni 1 dot C. E che Ho fatto è stato convertito nel mio testa, e qui su carta, e presto sul corso del sito web, riga per riga in PHP. Così nella versione C, abbiamo fatto qualcosa come stringa s ottiene ottenere stringa. Quindi è un po 'diverso farlo in PHP. Invece, sto solo andando a fare, o meglio, io potrebbe aver fatto int n ottiene arrivare int, in questo esempio precedente. Così, invece di questo, ho intenzione di fare n viene letto la linea, mi piacerebbe un numero intero, Per favore. Quindi questo è solo il mio sollecito. E così si scopre, e Vorrei sapere solo questo dall'aver letto o visto la funzione prima, le linee di funzione in PHP leggere prende un argomento che è un prompt per l'uomo, e il suo scopo nella vita è leggere una riga di testo che lui o lei i tipi della. E poi che memorizza il testo nella variabile n. E ora potrei voler fare qualcosa come ho fatto settimane fa, in settimana come uno della classe. Se n è maggiore di zero, allora, vado per prendere in prestito che la sintassi abbiamo appena visto, stampa def, hai scelto un numero positivo, backslash n. Altrimenti se n è uguale uguale a zero, sono intenzione di andare avanti e dire, stampa def, hai scelto lo zero backslash n. Altrimenti, nel caso di specie dovrebbe ovviamente, stampa def, hai scelto un numero negativo. E possiamo certamente attuare la logica di questa cosa in un mucchio di diverso modi, ma il punto qui è che sintatticamente, a malapena qualcosa è nuovo. E 'solo il simbolo del dollaro e una nuova funzione e riga letta. Ma fondamentalmente, che cosa c'è di nuovo ora è che sto interpretando questo. Sto passando come input ad un altro programma. Quindi, se voglio correre questo, se Non ho fatto alcun errore, Ho intenzione di eseguire PHP, di condizioni 1 dot PHP, Enter, Io vado a digitare il numero 50, e supponiamo per ora funziona. Poiché la logica è la stesse cose come prima settimana. Va bene, allora che è abbastanza deludente, giusto? Potremmo farlo in qualsiasi numero di lingue. Facciamo qualcosa molto più potente. Facciamo problema finitura set five. Quindi ho intenzione di andare avanti e fare questo. Ho intenzione di creare un file chiamato dizionario dot PHP, e inclinato come si potrebbe essere arrampicare giù un sacco di appunti, le note solo aiutare se si è permesso implementare problemi impostare cinque in PHP. Ma staremo a vedere quanto velocemente ora possono implementare lo stesso set di problema. Così nel dizionario puntino PHP, io vado supporre che c'è già un file nel mondo chiamato correttore ortografico. E in effetti, ho fatto questo in anticipo, e noi non attraversare questa linea per linea, ma se siete curioso vuole più tardi e davvero per avvolgere la vostra mente in tutto il Differenze tra C e PHP, letteralmente confrontare questo file, speller, dal codice sorgente di oggi che postiamo più tardi oggi, contro p set cinque correttore ortografico puntino c che vi diamo, ed è quasi la stessa linea per linea. Ci sono alcuni altri segni di dollaro. Un paio di funzioni sono un po 'diverso. Ma è un bel modo di una sorta di vedere come tradurre una lingua all'altra. Ed è la linea quasi identica per la linea. Ma ho intenzione di ritenere che tale esiste, e quello che ho intenzione di fare qui è cercare di saltare la vostra mente per reimplementare la totalità di problema impostato cinque vie più velocemente di quanto si sia fatto finora. Così, per esempio, ho intenzione di prima dichiarare una variabile globale chiamata dimensioni, e impostarlo uguale a zero. Ora che non è molto risparmio. Le probabilità sono voi implementati dimensioni più o meno lo stesso, o suggerimento suggerimento, sarà questa sera o domani, semplicemente utilizzando una variabile globale chiamata dimensioni, e porla uguale a zero. Che non è una particolarmente sorprendente spoiler. Quindi, quali sono stati i tuoi dati di strutture di scelta, quelli di voi che hanno tuffato in e leggere le specifiche, le strutture quali dati hanno la maggior parte di voi hanno utilizzato? Una tabella di hash o provare, forse alcune loro varianti. Quindi implementare una tabella hash almeno, è una specie di un sacco di righe di codice, destra? E non tutti potrebbero essere funzionale a questo punto nella settimana, ma va bene. Perché in PHP, se io vogliono una tabella hash, fatto. Destra? In modo che variabile che ho appena dichiarato è ovviamente chiamato dollaro tavolo segno, per l'introduzione prima. Ma ho davvero voglia, a Alla fine della giornata, un array. Ma non un numericamente indicizzati matrice, perché è come due settimane roba, quando abbiamo parlato di array. Voglio una tabella hash. Ma una tabella hash è davvero solo un modo concreto per dire, si vuole un array associativo. Si vuole essere in grado di Tasti associare valori. Tasti con i valori. Che cosa è un dizionario, davvero? Beh, è ​​un intero mazzo di chiavi. Parole come mela, pera e banana, e tutte queste parole in inglese che noi consegniamo voi. E i valori che si sono effettivamente l'inserimento nel vostro dizionario sono o vere, o l'assenza, falso. In altre parole si sta inserendo un sacco di coppie di valori chiave, mela, vero, pera, vero, banana, vero. In modo che quando si recuperano o guardare up che i dati nella tabella hash con la funzione di controllo, sei o tornare una risposta, Sì, l'ho trovato nel mio complesso hash tavolo, o no, non è lì, così si ritorna falso. Quindi, per fare questo, ho solo bisogno di dati struttura come ho proposto prima. Ho solo bisogno di essere in grado associare parole come, tra virgolette, simbolo, con un valore simile, vero. Quindi c'è la mia tabella di hash. Diciamo effettivamente utilizzare. Quindi ci sono alcune funzioni Ho bisogno di attuare. Ho intenzione di andare avanti e mordere fuori una dimensione funzione chiamata. E non accetta argomenti. Non devo perdere tempo con la parola, nulla, in PHP. Sto solo andando a tornare dimensioni. E per inciso, PHP ha questo minorly fastidioso dettaglio, dove se qualcosa è globale, è necessario dire la funzione in cui si sta utilizzando esso, hey, questo è una variabile globale. Così, la stupidità minore, ma si hanno a che fare comunque. E per quanto riguarda il carico? Ho intenzione di implementare un carico funzione chiamata che prende in nome di un dizionario, proprio come nel problema impostare cinque. E prima di procedere, notare che non ho state digitando abbastanza le stesse cose. Cosa c'è ovviamente diverso in PHP su come si dichiara una funzione rispetto a C? Già. PUBBLICO: [incomprensibile] SPEAKER 1: Nessun tipo di ritorno. E in effetti, questo è il caso, PHP nella misura in cui è liberamente digitato, è anche un po 'sciatto in questo senso. Non si specifica come il programmatore cosa questa funzione restituisce. Si dovrà effettivamente guardare il codice per capirlo. O leggere i commenti o alla documentazione. Così vantaggi e svantaggi di questo tipo di decisioni. Ma io ho da dire la parola chiave, la funzione. E quando impariamo JavaScript un paio di settimane stiamo andando a vedere la stessa cosa ancora una volta, ma è la stessa idea. Il nome della funzione, il suo argomento o argomenti o la loro mancanza, ed ora qui è l'implementazione. Quindi ho intenzione di tagliare alcuni angoli solo per essere drammatico per un momento. Ma ho intenzione di andare avanti e dire questo. Questo è come posso caricare un file in un array. C'è una funzione in PHP file chiamato. Si passi la nome di un file. Ti passa indietro un array, dentro di cui è ogni riga dal file. Da zero, uno, su up per n meno 1 righe. Questo è tutto, giusto? Non c'è f lettura. Non c'è F s. Non c'è cento s. Non c'è nessun mal di testa. Non c'è feof. Tutta quella roba con cui hai lottato, forse, con p set quattro e cinque, se ne va. Così ho appena letto quelle righe in il file, e poi si sa che cosa? Se voglio iterare su quelle parole, Posso fare, per ogni linea, come la linea. Ricordate che questo era una sorta di intelligente modo di iterazione su un array, l'indice per indice, e su ogni chiamata iterazione la linea corrente, riga simbolo del dollaro. E proprio qui ho intenzione di andare a dicono tavolo, staffa, linea, diventa vero. In altre parole, è così che inserire nella mia tabella hash in PHP. Dico dollaro tavolo segno, che è il mio array associativo che era vuoto per la riga di codice in alto. Poi ho indice in esso Non, utilizzando un numero, ma letteralmente utilizzando il parola chiave che mi interessa. Forse è mela o pera o banana o qualsiasi altra cosa, ma in particolare mi indicizzazione in esso piace ho proposto in precedenza. Prendo il nome del mio array associativo, e poi io usare tra virgolette nel parentesi quadre con una stringa, invece di un numero reale. E così il gioco è fatto. La funzione di carico è fatto. Una volta che itera ciclo, ho messo tutto nella tabella hash. Ora piccola rinuncia, c'è un paio di cose che deve essere risolto. E la versione io postare on-line avrà tutte le sfumature, ma è soprattutto solo andare a essere un po ' controllo degli errori e alcuni piccoli aggiustamenti. Ma questo è davvero l'essenza di esso. Se ora voglio implementare la funzione chiamata verificare, che si aspetta un parola come argomento, come potrei fare per fare che? Beh, io sto semplicemente andando a dire, se all'interno del mio tavolo, in posizione parola, se è impostato. Quindi, se ci è-- in realtà, sai una cosa? Ho intenzione di farlo in un po 'di pseudocodice. Ma l'idea è la stessa. Se questo è uguale a true, restituisce true. Tutto ok. Else-- puoi tipo vedere questo è going-- per restituire false. Fatto. Controllare è fatto. Piuttosto bello, giusto? E così ciò che è davvero arrivare? E anche questo, ho tagliato alcuni angoli. Guardate la versione on-line per tutte le lievi sfumature. Ma questa è l'essenza di esso. Indice nella vostra array associativo, pseudonimo Tabella di hash, vedere se c'è un valore lì, se è impostato a true, in caso affermativo, return true. Così abbiamo whittled giù tutta la complessità. Così sorta di salto di mente, giusto? Non mi dilungherò finire con scarico, perché in fact-- oh, sai una cosa? Gia ', finiamo con scarico. Scaricare in una tabella hash potrebbe apparire come la funzione di scarico, di ritorno. OK, questo è scarico. Perché non c'è niente scaricare, giusto? Non c'è malloc. Non ho esplicitamente chiesto il sistema operativo per qualsiasi cosa. Ho appena iniziato a utilizzare le variabili. E così anche questo è una manifestazione di caratteristiche dei linguaggi di livello superiore. Quindi, di nuovo, la maggior parte di questo termine abbiamo avuto a che fare qui con C. Livello basso eccellente. È possibile visualizzare la memoria del computer. Si può toccare tutto quello che desiderare in RAM del computer, nel bene e nel male. Quassù, stiamo andando a rinunciare a quel potere. Ma mio dio, guarda come molto meno codice che ho scritto. In realtà, se non parlassi e parlando sopra la mia dattilografia, ci sarebbe stato fatto con questo esempio cinque minuti fa. Allora qual è il prezzo viene pagato? Bene, diamo un'occhiata. Diamo un'occhiata. Ho intenzione di andare avanti e correre CS50. Permettetemi innanzitutto di andare in esempi di oggi dove Ho la directory di testi come prima. Ho intenzione di eseguire la soluzione che si tratta di un problema chiamato cinque set correttore ortografico, che è nel racconto di CS50. E ho intenzione di farlo funzionare su qualcosa grande come la Bibbia di Re Giacomo, solo così che abbiamo davvero messo il soluzioni del personale alla prova. Ora a volte internet è un po 'più lento, un po' più veloce, potrebbe richiedere un po 'per scorrere. Ma ci sono voluti un totale di .56 secondi per il controllo ortografico di Re Giacomo Bibbia utilizzando la soluzione personale. Così abbastanza bene. Distinti potrebbe essere molto più lento, e questo è tutto bene. Ma è corretto qui. Ecco, questo è la soluzione personale. Se vado in e ripulire la versione di PHP. E ho intenzione di fare un po ' come cottura spettacolo cosa. Stiamo andando a prendere il codice che ho scritto prima, quindi è perfettamente corretto. Poiché il codice che ho scritto non sta andando per essere perfettamente corretto solo ora. Ma se ho eseguito la versione di PHP, cosa devo rinunciare a oggi? Mi ci sono voluti cinque minuti per implementare p cinque set, rivendico. Che prezzo ho pagato? Già. PUBBLICO: Velocità. SPEAKER 1: Velocità. Cosa intendi? PUBBLICO: E 'intenzione di richiedere più tempo. SPEAKER 1: Va bene. Vediamo. Sta andando a prendere più a lungo, non scrivere, ma per eseguirlo. Già. Così proviamo questo. Così qui ho intenzione di andare avanti e fare PHP di correttore ortografico, e perché il file del chiamato correttore ortografico. Quindi non sto correndo il dizionario, richiamo, Sto facendo funzionare il programma chiamato correttore ortografico. Ho intenzione di passare nella stessa File, re Giacomo il quinto. E 'volando. Questo potrebbe essere solo la velocità di internet, in modo da non leggere troppo in quello. Ma ci si sente più a lungo di sicuro. 1.26 secondi. Ora che è ancora abbastanza dannatamente veloce, giusto? E l'unico motivo che sembrava più come tre, o quattro, o cinque secondi, questo è solo perché Internet stava essendo lento. Il tempo trascorso del computer era 1.26 secondi, contro penso 0,56. Così più di due volte più lento. Ora che è ancora maledettamente veloce, ma è una manifestazione di, infatti, che il prezzo esatto. Perché stiamo interpretando nel codice riga per riga, e che il programma PHP sta leggendo il mio codice dall'alto verso il basso, da sinistra a destra, ha a che fare più pensare. Deve tipo di conversione dentro di sé alla relativa macchina codice al volo, per così dire, anche se la meccanica sono un po 'diverso. Invece di alimentazione alla Intel CPU gli zeri prime e quelli che capisce nativamente. Quindi assolutamente, giù le mani, abbiamo pagato un prezzo. E il codice scritto in un linguaggio come PHP tende ad essere più lento. Ma il mio dio. Così ora quando il controllo ortografico lima, spendo un extra 0,7 o almeno così secondi contro 20 ore per l'attuazione un veloce controllo ortografico, giusto? E 'una specie di un compromesso. E se si sta appena iniziando p set di cinque, potrebbe non essere di 20 ore. Potrebbe essere molto meno di quello. Ma è un compromesso, per davvero. E se si sta eseguendo codice su davvero grande insiemi di dati, o su hardware ancora più antica, questi tipi di differenze può certamente aggiungere fino. Tutte le domande finora? Già. PUBBLICO: [incomprensibile] SPEAKER 1: Siamo spiacenti, si può si dice che una volta di più? PUBBLICO: [incomprensibile] SPEAKER 1: si sta dando il tempo. Bene, quindi sì. Si sta salvando tempo non dovendo compilare, se è questo che stai chiedendo. E infatti, in CS50, la maggior parte dei programmi, anche se potrebbe richiedere un po ' a scrivere, sono relativamente breve. Pochi dozzina, poche centinaia di righe di codice, e quindi compilare abbastanza rapidamente. Ma quando si inizia scrittura di programmi più grandi, come se sei Microsoft o sei Google e la scrittura davvero grandi programmi in C o C ++, né parimenti compilato lingue, potrebbero prendere molti secondi, o anche minuti o più a compilare milioni di linee di codice. E anche lì, che differenza sta per aggiungere. Ed infatti, una volta che transizione oggi, nello stesso giorno oggi, alla programmazione web utilizzando PHP, sei andando a trovare solo in modo molto più piacevole di scrivere codice quando non si hanno a che fare questi stupidi passi come modifica al tuo terminale finestra, tipo fanno ciao, re eseguirlo, ricaricare la finestra. Proprio così tanti stupidi passaggi meccanici che appena ottenere nel modo di fare l'interessante, il lavoro divertente. E infatti gettiamo via tutto con PHP. E possiamo interagire con più rapidamente. Già. PUBBLICO: [incomprensibile] SPEAKER 1: Certo. Posso chiarire che cosa significa essere interpretati? Quando si compila una lingua come il C, scende come abbiamo detto a macchina codice, zero e uno. E Intel ha deciso anni fa che alcuni modelli di zero e uno rappresentare aggiunta o sottrazione, o la stampa, o di altre operazioni di base. Nel mondo di un linguaggio interpretato come PHP, o JavaScript, o Python, o Ruby, o mazzi di altri, invece qualcuno una ha scritto interpreter-- in questo caso, è anche chiamato PHP, identico al nome del language-- che essenzialmente ha un grande anello in esso che scorre su tutte le righe del codice che mi nutro come input, come ciao dot PHP, o il punto dizionario PHP. E allora si può pensare di loro grande ciclo come avente un sacco di condizioni. E queste condizioni dicono, se il umano ha scritto la parola chiave per, iniziare a fare il suo codice ancora e ancora. O se il umano ha scritta la riga di codice, se, solo eseguire il loro riga successiva condizionale. Quindi è davvero come interpretare in un senso umano, riga per riga, e che prende appena il tempo. Ci vuole testa. E così che è una prezzo-- buono interrogo paghiamo. Allora, facciamo un altro demo che è un po 'più drammatico. Vi è, direi, un ballpark questo a una probabilità del 90% di fallire orribilmente, ma sarete stupiti con probabilità 10%. Così ogni anno cerchiamo per fare questo, per cui noi provare a scrivere un programma che attraversa problema set a zero, per il quale hai presentate i vostri numeri di telefono e un molte altre informazioni demografiche, e noi a livello di codice inviare un messaggio di testo. E poi il telefono di tutti comincia a suonare o vibrare, ed è semplicemente incredibile, perché bene, guardare a ciò che i computer possono fare. Ciò funziona correttamente raramente a quanto pare, in gran parte perché io di solito messo in blacklist da Gmail o qualche altro servizio per realtà cercando di fare questo su scala. Ma cosa buffa è troppo, dal momento che non hanno tutti qui oggi, divertimento fatto l'ultima volta che ci siamo provato questo due anni fa, Credo di aver scritto un programma che sedeva in una iterazione ciclo su tutti gli studenti della classe, e ciascuno di loro un messaggio di testo, e ha detto qualcosa di simile, perché non sei a lezione? Amore, CS50 bot. Non avete idea di quante scuse e-mail sorta di dolorose Ho ricevuto in risposta dal n meno 100 persone che non erano qui quel giorno. E ancora più divertente, più vergognoso tutta-- si sa, mettiamola là fuori. E 'già in video qualche anno fa. Così si vedrà presto me scrivere un ciclo for, per cui è molto facile scrivere un bug in che per ciclo, in modo che la prima volta attraverso il loop, inviare un messaggio di testo. La seconda volta attraverso il ciclo I dovrebbe avere inviato un altro messaggio di testo, e poi un altro testo messaggio, e un altro. Ma si scopre se si commette un errore di battitura durante la programmazione, a volte si in grado di scrivere programmi che inviano uno messaggio di testo, quindi due messaggi di testo, poi tre messaggi di testo a tutti che ha già ricevuto un messaggio di testo. E come sapete, fare qualcosa, oltre a qualcosa, oltre a qualcosa, oltre a qualcosa, è grande o di un sacco di messaggi di testo, o n squadrato, o $ 0,10 un messaggio di testo, $ 20.000. Per fortuna mi ha colpito Control-C prima che è capitato, ma mi devo almeno una dei suoi predecessori $ 20 per la 200 alcuni messaggi di testo strano che, non solo è andato al suo telefono, ma Inoltre è stato come un vecchio telefono cellulare a conchiglia così come spinto fuori della sua memoria ogni altro testo personali messaggio che aveva effettivamente ottenuto. Quindi abbiamo un obiettivo oggi, non farlo. Forse attivare la modalità aereo. Tutto ok. Quindi cerchiamo di andare in un programma qui callled-- che chiamerò testo puntino PHP. E in anticipo, ho due file qui. Ho fatto un file solo per il personale, che ha ottenuto tutte le informazioni del personale, tutti i nomi dal sito web del corso. E poi per ora ho appena messo alcuni numeri falsi 555-1212. Quindi questi non sarebbe in realtà andare da nessuna parte. Ma bando l'interno di questo file CSV, che abbiamo parlato brevemente prima nel contesto del file di IO. Che cosa è un file CSV? Separati da virgola variabili. E questo è un po 'come un database leggero, se si vuole. C'è una specie di specie di quattro colonne in questo file, e non frastagliata, ma le virgole essenzialmente rappresentano le colonne nel file. La prima colonna è il TF o il nome di CA. Seconda colonna è il loro cognome. La terza colonna è il loro numero di telefono. E quarta colonna è-- apparentemente quarta colonna è apparentemente quello che? OK, quindi è il loro elemento portante. Così Verizon, o Sprint, o cosa non. E se io misspoke prima, CSV. Comma Separated Values ​​è CSV qui. Cosa posso fare con questo? Beh questo è solo un grande file di testo, ed è una specie di lungo, giusto? Ti piace questa sta per essere un po 'fastidioso. E si scopre, però, che se io desidera inviare un messaggio di testo a, diciamo Alex dire qui. Lasciami andare nel mio browser e uscire dalla modalità a schermo intero solo così posso passare avanti e indietro. Si scopre, vediamo, se vado in qui, e accedere a Gmail, tutto a posto. Non guardare questa parte. Appena riesco a vedere. naturalmente il livestream può continuo a vedere quello che sto facendo. Tutto ok. Così qui è solo con Gmail Racconto di John Harvard. Quindi, se voglio inviare un messaggio di testo a Alex, Posso naturalmente comporre un messaggio. E si scopre, e non ho testato con Alex prima qui, in modo da poter aggiungere un certo dominio nome ai numeri di telefono delle persone, perché esiste nel mondo cose chiamati SMS ai gateway e-mail. Che è un modo elegante per dire tutto di noi che hanno telefoni cellulari che hanno numeri di telefono, naturalmente, ci probabilmente è per il tuo operatore, un certo suffisso come a Vtext.com per messaggio di testo Verizon dot com, che è possibile aggiungere alla vostra proprio numero di telefono personale, e quindi voi o gli amici, oi tuoi genitori possono ti testo in quel particolare indirizzo. E Verizon ha un server, una e-mail Server, che dopo aver ricevuto questa e-mail, guarda la parte numerica e poi utilizza qualunque speciale industria magia devono inviare effettivamente fuori sopra le onde radio per il tuo cellulare particolare telefono. Ora, questo è bello perché non lo faccio davvero sapere come inviare un messaggio di testo o scrivere il codice ancora per il mio cellulare, e si potrebbe fare esattamente questo per un progetto finale, ma per ora tutto Che ho è il mio computer portatile qui. Quindi voglio iterare su che CSV file riga per riga, per linea, per linea, afferrare ciascuno dei numeri di telefono del personale, e il loro vettore e programatically, concatenare, cioè collegare il telefono numero con il nome di dominio appropriato e quindi inviare una e-mail. Ecco, questo è un sacco di passi. E buona fortuna a farlo in C. È un incubo di una situazione per aprire un file, per leggerlo linea per linea, per riga, mentre stanno vedendo, o potrebbe presto vedere con il problema di set di cinque, se non problema fissato quattro, e poi per concatenare dinamicamente due stringhe, perché in C, di prendere due stringhe e combinarli, ciò che si fa minimamente bisogno di fare più probabile? Hai bisogno di dichiarare più memoria, giusto? E chiedere, malloc, posso avere più memoria? Così posso mettere la metà di questa qui, la metà di questo qui. E 'solo così tanti passi. E a quel punto hai perso interesse per il piccolo demo stupido dove si fanno bip telefono di tutti. Facciamo questo tipo di PHP stile, per cui dobbiamo solo iniziare a utilizzare più di quel lavandino della cucina. E le idee sono fondamentalmente la stessa, ma non dobbiamo preoccuparci troppo di molto su tale livello inferiore. Così vediamo come potrei andare a fare questo. E proprio così che io non ripetere gli errori del passato, Ho scritto alcune note per me qui. E vediamo se mi ci posso camminare attraverso alcuni dei passi fondamentali, e poi per amore di volta ce la faremo forse tagliare alcuni angoli alla fine. Ho intenzione di andare avanti e fare aprire Staffa PHP per avviare questo file. E ho intenzione di andare avanti e fare questo. Handle di file, come avrete presto vedere, in realtà chiama una funzione chiamata f aperto. E ricordi che questo apre un file. E la citazione, unquote, R significa ciò, ancora una volta? Basta aprire in lettura. Ora, in p set per, avete fatto queste cose. E gestire potrebbe essere qualsiasi cosa, fu, bar, bas, qualsiasi nome di variabile. Ma generalmente un computer scienziato chiamerebbe un file aperto, dando un handle di file, qualcosa a cui aggrapparsi per così dire. Sto solo andando a fare qualche controllo degli errori. Quindi, se il manico è falso, proprio come in C, ho intenzione di fare qualcosa di simile, Impossibile aprire il file, backslash n. E poi sto solo andando di andare avanti e uscire. E si scopre, in PHP, Io non sono all'interno di una funzione. Non c'è alcuna funzione principale qui. Quindi io non ritorno, di per sé. Esco. Che è essenzialmente la stessa cosa. E sto uscendo con un y probabilmente. Un mezzo solo un errore di qualche tipo. E 'diverso da zero, quindi è un errore. Va bene, quindi se io sono qui ora nel mio programma ho aperto il file. Ho intenzione di andare avanti e dichiarare un array chiamato indirizzi, e in C avrei dovuto conoscere il dimensione della matrice in anticipo, giusto? O avrei bisogno di dichiararlo è un puntatore, e quindi utilizzare malloc. E poi ogni volta che leggo attraverso un'altra riga nel file, Ho intenzione di bisogno di malloc più memoria, malloc più memoria. Questo è un dolore al collo. E per fortuna, PHP e Ruby, e Python, e JavaScript, che crescerà gli array automaticamente per voi. Niente più malloc. Non più gestione della memoria. Il computer si occupa di questo. Ma il prezzo da pagare. E 'un po' più lento. E per un programma come questo non stiamo andando a notare. Stiamo per inviare 100 messaggi di testo. Per esempio non andare a sentirlo. IT inizia davvero solo importa la lingua che preferisci quando i vostri dati o programmi ottenere davvero, davvero considerevole, come sarà il caso più con la nostra roba web based. Ma per ora facciamo andare avanti. Mentre si scopre c'è un la funzione in C chiamata F CSV. File ottenere CSV, che prende un presentare maniglia come argomento, e si procede poi, fila, da fila, per riga, a leggere in una riga. Quindi è solo legge una riga di testo dal file. Ma cosa c'è di bello su questa funzione, esso non solo dammi una riga di testo. Sembra per quelle virgole, e analizza le righe. E per analizzare la linea di mezzi per dividere su determinati valori in questo contesto. In altre parole, il simbolo del dollaro fila è una variabile che è intenzione di darmi un po 'di indici. Questo sarà il prima colonna nella mia CSV. Questo sarà il secondo colonna, questo sarà il terzo, e questo sarà il quarto. Perché richiamo, e Excel la non cooperare l'ultima volta che abbiamo fatto questo, ma se scarico personale punteggiano CSV. Ops, non rinominare. Se scarico puntino personale CSV, e provare ad aprire esso, Ho già registered-- oh non ha aggiornato Excel dall'ultima volta. Vedrai che a puntino personale CSV, ho quattro colonne. Così, quando ho letto nella prima fila per Abby qui, simbolo del dollaro fila 0 è Abby, simbolo del dollaro fila uno è Lione, simbolo del dollaro fila due è il suo numero, e poi portante del suo telefono. Ecco, questo è tutto. E questo è bello, perché mi non devono ora capire dove tutte quelle virgole realmente sono. Quindi ho intenzione di andare avanti e fare questo, dal momento che la definizione, Io vado a dire che il suo nome è in fascia fila a zero, come promesso. E ho intenzione di grab-- e in realtà, sai una cosa? Io non ho intenzione di preoccuparsi il suo nome, in questo caso. Ho intenzione di mantenere più semplice. Ho intenzione di fare il suo numero è nel supporto a due di fila, credo. E la sua carriera era in cui? Terza fila, uno sopra. Quindi niente di nuovo lì. E 'solo a zero l'indicizzazione in un array. E ora, ho intenzione di fare quanto segue. Se il vettore è uguale uguale AT & T-- Sto solo andando ad avere un loop-- Voglio creare una e-mail indirizzo che assomiglia a questo. Sta andando essere 617-555-1212 a, di cosa si tratta, text.ATT.net, è quello che voglio fare. Allora, come faccio a fare questo? Ho intenzione di fare quanto segue. Il suo indirizzo sarà il suo numero, e ora, lasciami andare avanti e fare questo. Si tratta di una sintassi funky. Potrei fare la percentuale s trucco, ma posso effettivamente fare solo questo. Quindi questa è una cosa di PHP, ma prendiamo in considerazione quello che sto facendo. Dollari firmare indirizzo su sinistra, solo una variabile. Dammi una variabile. Non ho per specificare il tipo. PHP capirlo. Sul lato destro, qual è il tipo di dati di che cosa tutto su il lato destro? Sembra una stringa, perché c'è doppio cita all'estrema sinistra e all'estrema destra. Ora c'è un po 'di funky nuova sintassi qui. Ci sono le parentesi graffe, e il numero simbolo del dollaro. Ma prendere una congettura che cosa è che la sintassi probabilmente dicendo PHP per fare per me? Già. Basta inserire il valore lì. Quindi no cento s. Potremmo usare stampa f, o s stampa f o qualcosa di simile, ma PHP e un sacco di linguaggi di livello superiore, si sta andando a vedere che si poteva fare la stessa cosa in modo funzionale, forse sei modi diversi. E così comincia a diventare una questione estetica o stile. Quindi questo è solo un modo criptico guardare di dire, mi danno un indirizzo email, ma plug-in del numero di tra queste parentesi graffe. E le parentesi graffe non sarà finire nel discorso finale. Ora siamo in grado di saltare alcuni dei queste righe per amor di tempo. Quindi, se un vettore è uguale uguale verHorizon-- whoops, Verizon-- Voglio fare qualcosa molto simile, in cui l'indirizzo viene, citazione, unquote, numero alla text.ATT.net. E poi io posso fare lo stesso tipo di cosa per il resto dei vettori. Ma mi limiterò a fare punti, punto, punto per ora. E ora supponiamo che Voglio aggiungere array, spingere. Voglio aggiungere al matrice, chiamato indirizzi. Questo indirizzo, questo è il modo aggiungere qualcosa ad un array in PHP. Non c'è bisogno di fare malloc. Non è necessario ridimensionare la matrice. Basta dire array spinta. Che cosa vuoi di push-- cosa matrice vuoi spingere qualcosa su? Indirizzi. Che cosa si vuole spingere su indirizzi? Indirizzo. Ed infatti, se molta voglia di essere intelligente, po 'di zucchero sintattico per questo, per così dire, il che significa solo come si può fare questo a la via più bella, sarebbe quella di fare questo. Questo ha anche l'effetto di crescita la matrice indirizzi per dimensione uno, e poi plop che addizionale indirizzo di posta elettronica in esso. Già. PUBBLICO: [incomprensibile] SPEAKER 1: un errore di battitura sulla altro se: oh, vettore. Va bene. Inoltre, non sarà come la mia incapacità di implementare parte di questo programma più tardi. Ma grazie per la cattura. Un altro bug. Grazie. Vogliamo che questo sia Vtext.com. Sì. Tutto ok. Perché allora questa ci lascia? Abbiamo scritto il codice per aprire il file. Abbiamo un ciclo per iterare sopra le righe nel file. Abbiamo codice che aggiunge alla mia array, uno alla volta, il corretto indirizzo di posta elettronica formattato. Quindi tutto ciò che rimane veramente è quello di inviare una e-mail a ognuna di queste persone. Così sono andato avanti e Mi readied come segue. Che cosa ho intenzione di fare qui è-- e facciamo andare avanti e passare al codice vero e proprio, che assomiglia a questo. Così qui è la pre-cotto Versione ho scritto in precedenza. E accorgo ho finito attuazione Sprint. Ho finito l'attuazione di T-Mobile. Ho finito attuazione Virgin Mobile. E mi scuso in anticipo. Ci sono un paio di vettori che alcuni studenti della classe hanno che non mi preoccupai enumerare nella condizione if qui. Quindi non tutti i testi si spengono. Ma vediamo cosa altro devo fare. Chiudo il file, basta come in p impostare quattro. E questo è nuova sintassi. E vedremo un po ' bit di questo nel tempo, soprattutto con p set sette e otto. Ma questo è sintassi per creare un particolare tipo di struttura. Si scopre c'è una libreria che viene fornito con PHP, chiamata mailer PHP. Il suo scopo nella vita è quello inviare e-mail a livello di programmazione. E 'il codice che qualcun altro ha scritto che rende più facile per noi di inviare messaggi di posta elettronica, così non dobbiamo tenere andando avanti e indietro a Gmail, e incollando in indirizzi e-mail delle persone. C'è un sacco di linee qui che onestamente, ho solo tipo di copiato e incollato dalla documentazione. E infatti, se siete curioso, ho lasciato tutto degli URL della documentazione nel codice che postiamo in seguito. E notare che tra le cose che sto facendo è, sto dicendo questo biblioteca, utilizzare il server di Gmail, giusto? SMTP abbiamo parlato brevemente quando erano a Yale di essere semplice posta protocollo di trasferimento. È il protocollo server utilizzati per inviare e-mail, e that's-- Gmail è uno di quelli. Un porto, questo è il numero di porta TCP. Va bene se si non hanno visto 587 prima. Basta sapere che dalla documentazione. Ecco il mio nome utente. Ho intenzione di utilizzare il bot CF50. E in un attimo, sto solo andando a digitare la password attuale del bot. E poi qui, notare ciò che rimane. Ho impostato la mia dall'indirizzo da bot a CS50.net. Penso che non ve ne pentirete invio di un messaggio di testo a 800 persone che dice, manchi, amore CS50 bot, forse per coloro che non hanno potuto fare oggi. E poi, in linea 76, che cosa devo fare? Questo tipo di assomiglia C. Così, per i è uguale a 0, n equals-- ora contare è nuovo. Si scopre che, se si vuole ottenere il numero di cose in un array, non c'è bisogno di ricordare più. Si può solo chiedere un funzione chiamata count, e vi dirà quanti indirizzi sono in tale matrice. E poi ho intenzione di aggiungere l'indirizzo al di posta elettronica. E so che questo da utilizzando la documentazione. C'è una funzione di indirizzo aggiuntivo. E ora ci notare è un pezzo di sintassi. Abbiamo visto questo prima in C. simile nello spirito. Si può pensare a simbolo del dollaro posta come variabile, che è. Ma è una struttura all'interno di che non sono solo le proprietà, variabili, se vuoi. Ma si scopre che in PHP, che è un programmazione orientata agli oggetti il linguaggio, come Java se hai preso APCS. Segno del dollaro posta elettronica, se volete a-- ha anche funzioni all'interno di esso, o metodi. Quindi questo vuol dire che speciale mailer PHP biblioteca, se ho una variabile dello stesso, se voglio chiamare una funzione che viene fornito con quella libreria, per scopi di oggi, basta sapere si utilizza la notazione freccia. Non c'è notazione del punto. E 'solo la freccia. Ma non è un puntatore. E 'solo preso in prestito dalla sintassi C. Così chiamata aggiungere l'indirizzo all'interno di oggetto di questa libreria o variabile. Tutto ok. Questa è la linea magica. Ecco come io mando un'e-mail. Questo è l'equivalente di apertura Gmail, digitando fuori, e colpire inviare. Ma sta andando per inviare invece un e-mail a questo indirizzo, con questo corpo, dal bot CS50. E ora la linea chiave. Questa linea è stata assente nel 2011 come quando penso scorso provato questo. Quella linea lì, ovviamente, cancella gli indirizzi. Quindi logicamente, se non cancellare l'indirizzo dopo ogni iterazione, il primo e-mail o un messaggio di testo va a Alice, il secondo va Alice e Bob, il terzo va ad Alice e Bob e Charlie, da qui l'errore molto costoso Ho fatto quello stesso anno. Quindi cerchiamo di vedere. Ci sono domande prima di inviare a tutti voi un testo messaggio con probabilità del 10 per cento? Qualsiasi domanda? Tutto ok. Permettetemi di andare qui e cambiamento la password per quello che dovrebbe funzionare, sarà probabilmente ottenere lista nera di Gmail. Così potrebbero non andare tutti out, poiché probabilmente non mi piace l'invio di 800 messaggi di posta elettronica noi in un ciclo for tutti in una volta. Dal momento che non è comportamento particolarmente umano. Oh, ho intenzione di cambiare un'altra cosa. In cima, ho intenzione di sent-- modificare il file di studenti dot CSV. E io non apro questo, ma questo è un file CSV identico a non 100 dipendenti, ma 800 studenti, solo da Harvard, Yale perché ha Ottobre recesso questa settimana. E sembra come una specie di cosa coglione a fare al testo tutti loro sul perché non sono in classe in vacanza. Va bene. A soli studenti di Harvard oggi all'interno di quel file. E ora torniamo indietro alla mia finestra di terminale. Sono un po 'nervoso. OK, ora ho intenzione di andare in directory, e il testo PHP puntino PHP. Che ne dite di un volontario coraggioso? Quindi non voglio questo su di me. OK, andiamo su. Come ti chiami? MAYA: Maya. SPEAKER 1: Maya. Vieni su, Maya. Tutto ok. Vediamo se funziona. Ho messo il mio indirizzo email nella file-- il mio numero di telefono nel file, in modo che spero di ottenere uno pure. Felice di conoscerti. MAYA: Allo stesso modo. SPEAKER 1: Quindi tutto quello che dovete fare è premere Invio per inviare 800 messaggi di testo, se non mi rovinare. Bello. Potrebbe volerci un po ', statisticamente, fino ad arrivare ad una email address-- un messaggio di testo che è nella stanza al momento. Andiamo a indugiare e vediamo. PUBBLICO: [FISCHIO] SPEAKER 1: Oh, sì. PUBBLICO: Oh, Gotcha. SPEAKER 1: Per i cicli are-- questo non è lento a causa di PHP. Questo è lento perché Gmail ci sta strozzamento e non facendoci inviare più di come una e-mail al secondo. Niente? Questa era una cosa difficile per me prova a a casa con solo io e mio un telefono, così. È che si spera dal bot? Sì? No? Dì di si. No? E 'da un amico? Awkward. OK. Abbastanza sicuro che sta funzionando però. Uh Oh. Essi black-- Oh, aspetta un minuto. Oh, sai una cosa? Un momento per favore. Solo Maya e io-- Mia, vero? MAYA: Maya. SPEAKER 1: Maya, stanno per so cosa ho fatto di sbagliato qui. Oh, aspetta un minuto. Credo di aver appena inviato 100 messaggi di testo a 555-1212. Stand-by. Non posso vincere qualsiasi anno. OK. Maya? Fissare che in post-produzione. Dannazione! In seguito dall'indirizzo. OK, stand by. Scusate. E 'doloroso ogni anno. OK, un momento. Questo è buono. Sto invece intenzione di fare questo. Indirizzo Stampa. OK, stand by. Indirizzi di stampa, supporto i. Sì, mi piace. Dollaro sign-- OK ti spiego quello che sto facendo in un attimo, dopo che ho eseguito questo. Ogni anno. Ok, qui andiamo. Ho solo-- e non voglio per mostrare il numero di telefono di tutti, ma Maya può confermare con un cenno del capo, che vede tutti sono numero di telefono nella classe che ho intenzione di copiare in un programma chiamato Gmail. E se in Gmail, che cosa vogliamo dire? Mi manchi. Love-- non è da me. Non ho nemmeno colpire inviare ancora. Quindi cerchiamo di andare avanti e fare questo, se posso ingrandire. OK. Così sto usando un programma chiamato Gmail ora. Se Maya, desideri fare clic sul pulsante Invia, simuleremo che cosa codice avrebbe dovuto fare. Niente? [BIP] PUBBLICO: Sì. SPEAKER 1: Sì? La salvezza? PUBBLICO: Sì. SPEAKER 1: Miss you. E ho intenzione di inviare il resto. Ho inviato la metà perché non ci ho pensato Gmail avrebbe lasciato passare attraverso quelli. Quindi basta ricordare, oggi è il giorno che hai imparato che posso utilizzare Gmail. E 'stato orribile. Un grande applauso a Maya. Grazie. Va bene, così. che cosa [BIP] Abbiamo avuto un paio di beep, sì? Tutto ok. Ora ho intenzione di ottenere 700 davvero email infelici indietro da compagni di classe. Così almeno si vedrà se era valsa la pena. Allora, cosa è andato storto? Io a capire che cosa è andato sbagliato dopo il fatto, ma basta guardare quanto sia facile era di farlo in PHP. Allora, cosa possiamo realmente fare ora che abbiamo questa espressività di PHP. Quella era-- che era orribile. Tutto ok. Così che era quello che avrebbe dovuto andare fuori. Questo è stato mi testando questa mattina sul mio telefono, screenshot effettivo del mio telefono. Ma ora prendiamo in considerazione perché in realtà stiamo introducendo tutte queste cose, in primo luogo. Quindi l'obiettivo non è quello di scrivere questi programmi che sono scritti nella riga di comando, giusto? Così ho scritto un semplice ciao programma, ho scritto un piccolo programma che fa condizionali, e una linea di lettura utilizzato e così via. E in teoria, ho appena scritto un programma che inviato 800 messaggi di testo, più o meno 800. E questo programma era tutto eseguire ancora nella riga di comando. E questo, naturalmente, è non il web, giusto? L'obiettivo è ora di iniziare a utilizzare quello che io sostengo è più facile da usare lingua, oserei dire più potente linguaggio in termini delle caratteristiche che venire con esso, per iniziare la scrittura di codice che genera pagine web. Così l'ultima volta e la settimana scorsa, abbiamo parlato di HTTP e HTML. E cosa c'è di bello su HTML è che è solo puro testo. E il testo è certamente qualcosa che si può stampare letteralmente chiamando la stampa funzione f, o la funzione di stampa. E in effetti, questo è ciò che PHP è ora sta per permetterci di fare. Così tra gli esempi avere nel codice sorgente di oggi, in aggiunta alla parte del codice che ho messo lì un attimo fa, abbiamo programmi come questo, per esempio. Froshims, o Freshman Intramurale sport, era in realtà uno dei primi extracurriculars Sono stato coinvolto con anni fa. E il mio compagno di stanza e io, con alcuni altri ragazzi nel campus, utilizzato per eseguire il programma froshims. Ricevo i miei messaggi di testo ora. Ora così noi, back in the day, quindi questo Era il 1996 o giù di lì, c'era un internet, ma non c'era process-- lì non era il sito per froshims. E così se si voleva firmare per calcio o pallavolo o qualsiasi altra cosa, si potrebbe compilare questa cosa chiamato un pezzo di carta, e si dovrebbe attraversare Harvard cortile, e si dovrebbe farlo scorrere nella fessura posta elettronica del procuratore, che era in Wigglesworth, uno dei dormitori. E questo si sono stati registrati. E lui o lei avrebbe poi comporre un e-mail a voi manualmente, proprio come io appena fatto qui con Maya, e poi si sarebbe confermato come essere stato registrato. Quindi questo è stato come basso appeso frutta, per così dire. E 'stato un po' stupido che stavamo usando carta per questo. Volevo noi essere in grado andare solo su un sito web, o hanno le matricole andare su una sito, registrarsi per lo sport, e solo automatizzare sacco di questa roba mettendo i loro nomi e le email e così via in un database. Ed infatti, la prima versione del sito web, utilizzando super-brutto HTML, poteva sembrare qualcosa di simile. In realtà è stato, ironia della sorte, più imbarazzante bello di questo ritorno poi. Ma ho usato un linguaggio di programmazione. Non PHP, ma piuttosto chiamato Perl, che è un linguaggio vecchio, ma molto simile nello spirito. E ho appena completamente ha insegnato a me stesso. E mi ci è voluto un po 'per capirlo, chiedendo un sacco di domande di amici. Ma le idee là erano esattamente la stessa. Perché quello che PHP è stato realmente progettato per non è la roba da riga di comando abbiamo giocato con, ma per la programmazione web. E 'davvero legato a sua caratteristica impostare al web, come segue. Questo è froshims. E se volessi iscriversi in questa forma, questo è abbastanza brutto, certamente, ma lasciami andare avanti e essere uno studente meno confortevole, e tutto ciò che lo sport per Matthews, fare clic su Registra. Quello che voglio essere in grado di fare è inviare informazioni da un modulo, non al server di Google come abbiamo fatto l'ultima volta, completamente barare utilizzando il loro backend, ho desidera implementare il mio codice backend. Il che significa scrittura PHP codice che vive in un URL che i dati del modulo possono essere presentate. E poi il vostro codice, scritto in PHP su un server, possono poi rispondere che l'input dell'utente. Come il suo nome, o il livello di comfort, o dormitorio, e poi fare qualcosa con esso. In questo caso, ho solo stupidamente stampato fuori come testo, che non è poi così bello. Ma si potrebbe certamente immaginare, se si conosce HTML, e presto sapere come generare HTML con stampa f, e la stampa, e funzioni simili, si può certamente generare una pagina web più bella che dice: ehi David, si è ora registrato. Sei un meno confortevole studente di Matthews, giusto? Si può semplicemente utilizzare un intero gruppo di% ses, o le parentesi graffe e il simbolo del dollaro Notazione Ho usato un momento fa, a generare il testo che è più facile da usare di questo. Quindi, diamo un'occhiata a questo file. Froshim zero virgola PHP assomiglia a questo. Quando ricarico CS50 IDE, lo zero froshim simile a questa. Questo è froshim zero virgola PHP. E che cosa si nota di questo file? PUBBLICO: [incomprensibile] SPEAKER 1: Siamo spiacenti, un po 'più forte? PUBBLICO: [incomprensibile] E 'tutto in HTML. Ed infatti, è, perché ciò che è interessante di PHP è che è stato progettato essere, per una migliore e nel male, mescolati con il codice HTML. Ed infatti, anche se questo File, froshim zero virgola PHP, ha un commento PHP in cima di esso, è tutto solo HTML. Ma al contrario, se apro, cerchiamo di per esempio, registrare zero virgola PHP, che solo ha un grande commento in alto. Anche questo sembra quasi del tutto come HTML, tranne che per che cosa? Linea, quello che, 21 sembra un po 'strano. Ma accorgo che sto entrando in modalità PHP con staffa aperto punto interrogativo PHP. Poi ho un po 'di roba. E poi alla fine della riga quasi ho, Punto interrogativo PHP. E questo è ciò che intendo per Interlacciati. È possibile scrivere codice HTML che hai appena desidera che il server di sputare. Ma se si vuole fare qualcosa parzialmente dinamica attraverso la pagina, come inserire il mio nome o dormitorio o livello di comfort, Posso usare una funzione come la stampa R, che è stampare ricorsivo, il che significa che solo stampare questa variabile, formattazione Comunque tu voglia. Non è proprio per scopi umani, è solo per il debugging o diagnostici. Ecco come ho fatto. Se io invece vado froshims due punti PHP, notare che l'azione di questa forma non è registrato zero virgola PHP come old-- quello precedente in realtà. Ma è registrato due punti PHP. Quindi diamo un'occhiata a come questo si comporta un po 'diverso. Se entro in versione a due. Se qui, se mi iscrivo come David, meno comodo, da dormitorio di Mathews, registrarsi. Così questa volta ha detto, è sono registrati, non proprio. Vediamo quello che ho fatto qui. Se guardo il registro di due punti PHP, questo ha un po 'di codice PHP. E 'un po' più pulita, anche se avvolge ancora un po 'lungo su questa linea. Notate qui. Stampo il mio tag HTML, la mia tag head, il mio tag del titolo, la testa, il corpo. E poi comincio a dire cose come entrare in modalità PHP. E così quel tag, parentesi aperta PHP-- punto interrogativo PHP dice: ehi, server execute-- interpretare il seguente roba come PHP fino a visualizzare il tag di chiusura. E anche se si potrebbe non conoscere alcun altro PHP che avete visto fino ad ora, è possibile tipo di letto abbastanza intuitivo. Se il nome è vuoto, o il comfort è vuoto, o dormitorio è vuoto, cosa devo fare? Cosa dico per l'utente? È necessario fornire il proprio nome, il comfort, e dormitorio, e così via. Altrimenti, io dico che sei registrato, beh non proprio. E non dico davvero perché non c'è nessun database. Io non sto facendo nulla con i dati. Sto solo buttarlo via a scopo dimostrativo. Ora mi sorta di lesinato sulla linea 22. C'è di più sintassi lì, ma il segno del dollaro sottolineatura post è piuttosto interessante. E questo è ciò che è bello su PHP. In PHP, si dispone di ciò che sono chiamati un paio di variabili globali eccellenti. Essi sono una sorta di ancora di più importante di variabili globali. E questi, tutto maiuscolo come tale, vieni con PHP. Quindi, se si dispone di un server che ha un server web installato, come Apache, e si installa la lingua supporto per PHP, tutto ad un tratto si può iniziare a utilizzare questi super- variabili globali nel codice. E che cosa c'è di bello PHP è che se si scrivere un file che termina in dot PHP, metterlo su un server web, e quindi si invia un modulo ad esso via che action tag e un tag form, tale attributo azione nel tag form, PHP e il web completamente capisce come per afferrare tutte queste coppie di valori chiave fuori dell'URL come domanda marchio q uguale gatti, sarà capire come q e gatti. Se si invia una foto, o di un nome utente, o una password per come Facebook, PHP capire per voi dove tutti quei dati è. E sarà proprio consegnerà Sei un array associativo chiamato dollaro segno di sottolineatura postale, o il simbolo del dollaro di sottolineatura ottenere, a seconda se si è utilizzando GET o POST osservazioni. E sarà solo te mano una variabile globale super, in modo che se si desidera ottenere nel nome che l'utente inviato tramite quella rete modulo, è letteralmente basta pronunciare il nome della variabile globale super, citazione, unquote, nome. E citazione, il comfort unquote, e citazione, dormitorio unquote. E abbiamo intenzione di essere in grado di fare questo e molto di più con PHP. E anche se questo era uno sguardo turbine a lui, ci immergeremo in più la prossima settimana. Noi presenteremo un database in modo che si sta effettivamente sta per avviare l'attuazione il proprio based-- commercio elettronico come sito web in tempo solo una settimana. Quindi ci vediamo la prossima volta, e spero che tu hai messaggi di testo. Ciao. [RIPRODUZIONE DI BRANI MUSICALI] [APERTURA PORTA] SPEAKER 2: Hey. SPEAKER 3: Che cosa succede? SPEAKER 2: Che cosa stai facendo? SPEAKER 3: Lavorare su un set problema. SPEAKER 2: Nizza. Batti il ​​cinque. [BATTI IL CINQUE] Cosa are-- uh, che ci fai qui? SPEAKER 3: Basta appendere fuori. Sono appena tornato dalla palestra. Non ho potuto fare a meno di notare quando abbiamo alta fived, che avete le mani piuttosto ruvide. Vai in palestra? SPEAKER 2: No. No. SPEAKER 3: Amico, sei abbastanza grande. Quale è male, perché tutti sanno 8-ball è il grande uomo del campus. Batti il ​​cinque. SPEAKER 2: Uh, no. No, penso di essere bravo. Penso di essere bravo.