[REPRODUCCIÓ DE MÚSICA] ALTAVEU 1: Aquest és CS50 i aquest és el final de la setmana de set. Avui és potser on realment ensenyant idiomes. Hem introduït en l'últim parell de setmana HTML i CSS, cap dels quals són llenguatges de programació. I, en efecte, tot i que no mirar a gairebé totes les etiquetes que ve amb HTML i gairebé tots de les propietats que ve amb CSS, això és una cosa que per a HTML i CSS. Tindrem general començar suposant que entendre les idees generals d'etiquetes i atributs, i les pàgines que s'envien des del client al servidor. Perquè avui comencem a mirar un altre llenguatge de programació, PHP. Anem a fer això molt ràpid. No anem a ensenyar PHP per se, de la mateixa manera que nosaltres no aspirem a ensenyar C, per se, sinó més aviat de programació. I, en efecte, un dels metes per a aquest curs No se que li ensenyi C, o HTML o CSS o PHP, o qualsevol nombre d'una altra paraules de moda o acrònims, sinó més aviat la informàtica i com programar fonamentalment. I, de fet, avui comencem a prendre aquestes rodes d'entrenament fora de tota la encara més per volar a través d'una llenguatge anomenat PHP, com segueix. Això és el que es veu aquest llenguatge similar. Resulta que no hi ha necessitat de una funció principal en un programa escrit en un llenguatge anomenat PHP. Així que ja sona una mica més simple que C, amb la qual estem familiaritzats. Resulta que si vull declarar una variable, ho fa de manera gairebé idèntica a C. Però clarament hi ha una diferència aquí quan em declaro una cadena, o potser dues diferències. El que es veu diferent? AUDIÈNCIA: El signe de dòlar. ALTAVEU 1: Sí, hi ha dòlar d'acord, que mai hem vist abans. I el que falta? Sí? AUDIÈNCIA: [inaudible] ALTAVEU 1: Sí, no hi ha cap tipus de dades. Així que resulta que PHP és el que trucar a un llenguatge dèbilment tipat, on C és fortament tipat. Sense prémer escrit només vol dir que hi ha diferents tipus de dades, hi ha cadenes i sencers, i carrosses. Però les xifres d'ordinadors que fos. Vostè programador humà no han de entendre-ho. Així que tot el que ha de fer per declarar una variable és signe de dòlar, el nom de la seva la variable i, a continuació, per exemple, entre cometes, hola món. Bé, això és el que un condició sembla en PHP. Qualsevol diferència? No. Així que resulta que són idèntics. I és possible que tingui menys sucursals o més branques, però els girs de sintaxi exactament el mateix. Expressions booleanes poden demanar junts. Expressions booleanes es pot anded junts. Vostè encara té interruptors. Encara que no ha utilitzat aquests, aquestes existeixen en C i són funcionalment equivalent en PHP. I de fet, en PHP són una mica més potent. En C, només es pot comparar segur tipus de dades com sencers i caràcters, mentre que en PHP es pot comparar en realitat cordes fledge complets sense tenir de preocupar de punters i similars. Així que aquí està un bucle for. Això és només pseudocodi codi, si es vol. Però és estructuralment idèntica a C. Aquí hi ha un bucle while, pseudocodi therefore-- idèntica a C. Aquí és un do mentre loop-- idèntics. I així hi ha una mena de aquest patró ací pel qual hi ha alguns altres sintàctica característiques que estan de fet va a veure. De fet, aquí és un bon forma en PHP mitjançant el qual, si desitja repetir sobre una matriu, i no volen saltar a través de la cèrcols mentals i sintàctiques de tenir int i és igual a 0, i menys que n, i, més que Plus-- és només un munt de sintaxi molest. Es pot dir una mica més de manera fluïda per a cada un dels nombres com el nombre, on en aquest cas nombre de signes de dòlar, estic assumint, és com una matriu anomenada nombres. I llavors jo estic assumint nombre, singular, serà una variable. ¿I què PHP va a fer per mi, ja que iterar sobre aquest bucle és, en cada iteració, que va actualitzar el nombre variable de ser l'element i-èsim en els números, en plural. Pel que només s'encarrega de tot això per a mi. No hi ha claudàtors, sense signe de dòlar, no hi ha punt i coma. És només una mica més simple. Bé, si vols una matriu, resulta que pot fer alguna cosa molt similar a C. La sintaxi és una mica diferent. Però aquí hi ha una sèrie anomenada dòlar va signar nombres. I ús, en PHP, quadrat suports, resulta. I anem a veure a aquests de nou en JavaScript-- un altre idioma. Acabo d'utilitzar la notació de claudàtors tenir una llista separada per comes d'enters, en aquest cas. Però això em dóna una matriu. Però encara més poderosa en PHP, també tenim el que són en general anomenat matrius associatives. I un munt d'idiomes tenir aquests també. El que passa amb les matrius C és que els índexs per una matriu, el que utilitzar entre claudàtors a través del qual accés elements, ha de ser què? AUDIÈNCIA: [inaudible] ALTAVEU 1: Han de ser nombres o sencers, concretament des de zero en endavant. Doncs bé, en PHP, i, resulta fora, en altres idiomes, vostè pot començar a tenir índexs que no són numèrics. Però en realitat són paraules o frases, de manera que en lloc de tracti de recordar que alguna cosa està, o emmagatzemat en una variable d'i, en realitat es pot usar una paraula i dir que-- es pot dir una paraula com aquesta. Així que la cita és el signe de dòlar nom d'una variable aquí. Aquesta és la sintaxi una mica covard aquesta és l'associació de dos valors clau parells per a aquesta variable. En concret, això m'està donant una matriu que és de longitud 2. No obstant això, els índexs no són 0 i 1. Els índexs estan entre cometes símbol i cotització fi de la cita. I els valors d'aquests índexs, respectivament, és FB per a Facebook i 79,53 $, l'última vegada facturat un preu per això. Què vol dir això? Bé, vol dir que en lloc d'escriure codi com aquest, on solia fer alguna cosa com dòlar sign-- o més aviat, en C Ni tan sols tindria un signe de dòlar. M'agradaria fer alguna cosa com cotitzacions i després Jo faria suport d'i per aconseguir en algun arbitràriament numèricament valor indexat. A partir d'avui en PHP, si que vulgui obtenir a algun valor, tenim sort de tenir més expressivitat semàntica. Només una forma elegant de dir que podem simplement dir les coses com són. I si vol aconseguir alguna cosa símbol, ara que, literalment, fer citar símbol fi de la cita entre claudàtors en lloc d'un simple número. Així que és una bona comoditat. I això és una espècie de tot per ara. Hi ha raïms de altres característiques en PHP. I, en efecte, ve amb PHP la pica de la cuina proverbial. Desenes, centenars de funcions vénen amb PHP-- tants més que va venir amb C. I això no és la intenció de aclaparar sinó més aviat ajudar a t'adones que hi ha ja haver d'escriure codi que és una espècie d'aquí baix conceptualment. Ara només podem començar a prendre avantatge característiques de molt més avançades que llenguatges com PHP tenen. Així que no hem de preocupar-nos per moure les coses en la memòria. Nosaltres no hem de preocupar-nos per malloc i totes elles nivell inferior, detalls de gran abast que se li Wrestle amb, si no lluitar amb, pset5, però vostè pot començar a aviat donar per fet. De fet, anem a escriure un super senzill programa en PHP, com segueix. Vaig a anar al capdavant en CS50 IDE aquí, i el que faré és crear un nou arxiu, que de manera molt senzilla serà anomenat hola PHP punt. Així que en lloc de punt c, és serà anomenat punt PHP. I després, en aquest arxiu, Puc començar a escriure. Però resulta que el una cosa que he de saber és que qualsevol arxiu PHP en general, necessita per començar amb una sintaxi especial. Similar a la de HTML, però de nou, PHP és un llenguatge de programació, no un llenguatge de marques. Així que cada arxiu, i és una espècie d'aspecte estúpid ho admeto. Suport Obrir, signe d'interrogació, PHP. I això és només el el camí de la llengua de dir, bo, equip aquí ve una mica de codi escrit en un llenguatge anomenat PHP. I després al final del seu arxiu, fas tipus de classe en cas contrari. Vostè no tornar a escriure PHP, només fer el signe d'interrogació, suport angular. I llavors qualsevol cosa que posis a l'interior d'aquestes dues etiquetes, per així dir-ho, serà, o hauria de ser, el codi PHP. Així que farem alguna cosa super simple. Vaig a seguir endavant i fer-ho d'impressió def, hola món, barra invertida n, desar. I ara en el meu sistema, vaig a faig, faig hello-- no, jo vaig a fer, punt slash hola. No, slash dot, hm. Així que alguna cosa és diferent. I de fet, aquesta és una diferència clau entre PHP i llenguatges com C. C era una llengua anomenada compilat. Què va significar per a C per compilar? Quina va ser la conseqüència? Sí. AUDIÈNCIA: el va escriure en codi màquina per la qual cosa podria ser executat per l'ordinador. ALTAVEU 1: Exactament. Hem de convertir primer en anomenat codi màquina, zeros i uns, abans que en realitat serà executable i entès per l'ordinador. Per Intel en el seu interior. Per la CPU a l'interior de l'ordinador. PHP, per contra, és el que s'anomena un llenguatge interpretat, el que vol dir que no compilar en zeros i uns, codi de màquina, que en lloc de sortir com a codi font. I en lloc de passar com a entrada a un programa, un intèrpret que algú més va escriure Fa anys que ho entén línia per línia, caràcter a caràcter. Així, en altres paraules, els éssers humans per aquí van escriure un programa que es veurà en el seu codi línia per línia, i esbrinar el que l'equip ha de fer, sense convertir- directament a zeros i uns. Així que si veu un bucle for, aquest així anomenat intèrpret serà així, està bé, el que hauria fer alguna cosa una i altra vegada i una altra. Que hauria de fer? Deixa que et miri la següent línia. Deixa que et miri la següent línia. I realment ho interpreta línia per línia. Així que per executar-lo, jo no ús maquillatge. No consum barra de punts en aquest cas. Jo en canvi faig PHP, que és el nom d'un programa, també anomenat L'intèrpret, que és preinstal·lat en CS50 IDE, i ara he de passar un argument de la línia d'ordres, que és simplement el nom de la arxiu que vull interpretar. O més informal, que vull córrer. I si prem enter, aquí el tenim. Hola món. Ara resulta que jo def impressió utilitzat deliberadament per estendre un pont de C a PHP. La majoria dels programadors de PHP, com es veurà, ni tan sols es molesten usant def impressió. Ells només ha d'utilitzar una funció anomenada impressió, que C no tenia. I el que si em torna a executar ara, en realitat es comporta funcionalment el mateix. No puc fer servir el percentatge s i i cent i així successivament, però hi ha altres maneres en PHP de fer això. Però això és només per dir que sintàcticament, a part d'algunes coses rares fins superior, i alguns caràcters estranys baix a la part inferior, els conceptes d'ara programació en aquest altre idioma van a ser exactament el mateix. De fet, farem un altre exemple. Així que seguiré endavant i tancar l'arxiu. Déjame crear un altre que Vaig a trucar a les condicions 1 punt PHP. Així que no zero, perquè el que vaig fer era jo vaig mirar cap enrere fa unes setmanes, teníem un arxiu anomenat condicions 1 punt C. I el Jo em vaig convertir en el meu cap, i aquí al paper, i aviat en el curs de lloc web, línia per línia en PHP. Així que en la versió C, vam fer alguna cosa com a cadena s aconsegueix arribar cadena. Així que és una mica diferent fer-ho en PHP. En el seu lloc, jo només vaig fer, o millor dit, podria haver fet int n es fa arribar int, en aquest exemple anterior. Així que en lloc d'això, jo faré n S'obté una línia de llegir, m'agradaria un sencer, per favor. Així que això és només la meva ràpida. I així resulta que i Jo només ho saben d'haver llegit o vist la funció abans, llegir les línies de la funció en PHP pren un argument que és un símbol per a l'ésser humà, i el seu propòsit en la vida és llegir una línia de text que ell o ella en tipus. I després s'emmagatzema que text a la variable n. I ara jo podria voler fer alguna cosa com ho vaig fer fa unes setmanes, a la setmana com un de la classe. Si n és més gran que zero, llavors, vaig demanar prestat que la sintaxi que acabem de veure, def impressió, que va triar un nombre positiu, n barra invertida. Perquè si n és igual és igual a zero, estic seguirà endavant i dir: def impressió, que va triar zero barra invertida n. Si no, el cas aquí ha per descomptat, def impressió, que va triar un nombre negatiu. I sens dubte podem aplicar la lògica d'aquesta cosa en un munt de diferents maneres, però el punt aquí és que sintàcticament, gairebé res és nou. És només el signe de dòlar i una nova funció i la línia de llegir. Però fonamentalment, ¿què hi ha de nou ara és que estic interpretant això. Estic passant-ho com a entrada a un altre programa. Així que si vull executar això, si No vaig fer cap error, Vaig a córrer PHP, de condicions 1 punt PHP, ENTER, Vaig a escriure el número 50, i suposem que per ara funciona. A causa de que la lògica és la mateixa matèria que la setmana un. Molt bé, així que és bastant decebedor, oi? Podríem fer això en qualsevol nombre d'idiomes. Farem alguna cosa molt més poderós. Anem problema acabat estableix cinc. Així que vaig a seguir endavant i fer això. Vaig a crear un arxiu anomenat Diccionari de punts PHP, i inclinada com podria ser de lluitar per un munt de notes, les notes només ajudarà si se li permet per posar en pràctica els problemes estableixen cinc en PHP. Però anem a veure la rapidesa amb què ara pot aplicar el mateix conjunt de problemes. Així que en punt PHP diccionari, vaig assumir que ja existeix un arxiu en el món anomenat abecedari. I de fet, ho vaig fer per avançat, i no anem a caminar a través d'aquesta línia per línia, però si vostè és curiós que desitgi tard i realment per embolicar la seva ment al voltant de la diferències entre c i PHP, literalment comparar aquest arxiu, abecedari, a partir del codi font d'avui que publicarem més endavant avui, en contra de p conjunt de cinc ortografia punt c que li donem, i és gairebé la mateixa línia per línia. Hi ha alguns més signes de dòlar. Un parell de funcions són una mica diferent. Però és una bona manera del tipus de veure com traduir una llengua a l'altra. I és la línia gairebé idèntica per a la línia. Però jo vaig a assumir que aquesta existeix, i el que faré aquí és tractar de volar la teva ment per reimplementar la totalitat del problema va fixar cinc manera més ràpid que vostè ha estat fent fins ara. Així, per exemple, vaig a primer declarar una variable global anomenada mida, i deixi de igual a zero. Ara això no és molt estalvi. Les probabilitats són que implementen mida més o menys la mateixa, o pista pista, ho farà aquesta nit o demà, simplement utilitzant una variable global anomenada mida, i s'estableix igual a zero. Això no és un particular aleró increïble. Així que quins van ser les seves estructures de dades de elecció, aquells de vostès que Han fet immersió en i llegir les especificacions, les estructures de dades el han la majoria de vosaltres heu estat utilitzant? Una taula hash o tracten, potser algunes variants dels mateixos. Així que la implementació d'una taula hash, almenys, és una espècie d'una gran quantitat de línies de codi, Oi? I no tots ells podrien ser funcional a hores d'ara de la setmana, però això està bé. A causa que en PHP, si volen una taula hash, fet. Oi? Així que aquesta variable que tinc simplement declarat és, òbviament, anomenada taula de signe de dòlar, per la introducció abans. Però realment només vull, al al final de la dia, una matriu. Però no és un indexat numèricament matriu, perquè això és com la segona setmana coses, quan parlem sobre les matrius. Vull una taula hash. Però una taula hash és realment només una forma concreta de dir, Vols una matriu associativa. Vols ser capaç de claus associats amb valors. Tecles amb valors. Què és un diccionari, en realitat? Bé, és tot un grapat de claus. Paraules com poma, pera i plàtan, i totes aquestes paraules en anglès que li lliurem. I els valors que són efectivament inserint en el seu diccionari són veritables, o l'absència, falsa. En altres paraules, vostè està inserint un munt de parells de valors clau, poma, la veritable, la pera, el veritable, el plàtan, la veritable. Així que en recuperar o mira fins que les dades en la seva taula hash amb la seva funció de control, ets ja sigui tornar una resposta, sí, em vaig trobar en el meu complex hash de taula, o no, no hi és, així que torni fals. Així que per fer això, tot el que necessito és que les dades estructura com que va proposar abans. Només he de ser capaç de associar paraules com, entre cometes, símbol, amb un valor similar, cert. Així que aquí està el meu taula hash. Anem en realitat l'utilitzen. Així que hi ha un parell de funcions He de posar en pràctica. Vaig a seguir endavant i mossegar fora d'una grandària funció trucada. Porta sense arguments. Jo no he de molestar amb la paraula, nul·la en PHP. Simplement vaig a mida tornar. I com un a part, PHP té aquest detall minorly molest, on si alguna cosa és global, cal dir-li a la funció en què vostè està utilitzant que, bé, això és una variable global. Per tant, menor la estupidesa, però cal fer-ho, però. Què passa amb la càrrega? Vaig a posar en pràctica una càrrega funció anomenada que porta al nom d'un diccionari, de la mateixa manera que en el problema d'establir 05:00. I abans de continuar, adonar que jo no tinc estat escrivint bastant les mateixes coses. Què és òbviament diferent en PHP sobre com es declara una funció enfront de C? Sí. AUDIÈNCIA: [inaudible] ALTAVEU 1: Cap tipus de devolució. I, de fet, aquest és el cas, PHP en la mesura que està vagament escrit, També és una mica descuidat en aquest sentit. No s'especifica com el programador el que retorna aquesta funció. Vostè hauria de mirar realment en el codi per adonar-se'n. O llegir els comentaris o la documentació. Així avantatges i desavantatges de aquest tipus de decisions. Però jo he de dir la paraula clau, funció. I quan aprenem JavaScript en un parell de setmanes anem a veure el mateix de nou, però és la mateixa idea. El nom de la funció, el seu argument o arguments o falta d'ella, i ara aquí és la implementació. Així que em vaig a tallar algunes cantonades només ser dramàtic per a un moment. Però jo vaig a seguir endavant i dir això. Així és com em puc carregar un arxiu en una matriu. Hi ha una funció en PHP anomenat arxiu. Se li passa el nom d'un arxiu. Se li dóna volta una matriu, a l'interior dels quals és cada línia de l'arxiu. A partir de zero, un, en un màxim a n almenys 1 línies. Això és tot, oi? No hi ha f lectura. No hi ha f get s. No hi ha cent s. No hi ha mals de cap. No hi ha feof. Totes aquestes coses amb les que vostè ha estat lluitant potser, amb p fixar quatre i cinc, se'n va. Així que acabo de llegir aquestes línies en l'arxiu, i després saps què? Si vull per repetir aquestes paraules, Que puc fer, per a cada un de les línies com la línia. Recorda que això era una mena d'intel·ligent manera d'iterar sobre una matriu, índex per l'índex, i en cada trucada iteració la línia actual, la línia de signe de dòlar. I aquí em vaig a anar a diuen taula, suport, línia, aconsegueix cert. En altres paraules, així és com jo inserir en el meu taula hash en PHP. Dic taula signe del dòlar, el que és la meva matriu associativa que era buit per la línia de codi per sobre. Llavors índex en ella no, utilitzant un nombre, però, literalment, utilitzant el paraula clau que m'importa. Potser és poma o pera o plàtan o el que sigui, sinó específicament estic indexació en ella m'agrada Em vaig proposar abans. Prenc el nom de la meva matriu associativa, i després em utilitzar fi de la cita cita al claudàtors amb una cadena, en comptes d'un nombre real. I així, això és tot. La funció de càrrega està fet. Una vegada que repeteix en bucle, he posat tot a la taula hash. Ara petit descàrrec de responsabilitat, hi ha una parell de coses que necessito per arreglar. I la versió vaig a publicar en línia tindrà tots els matisos, però és més que res serà una mica comprovació d'errors i alguns ajustaments menors. Però això és de fet l'essència de la mateixa. Si jo ara vull posar en pràctica la funció anomenada comprovar, que espera un paraula com el seu argument, Com podria jo anar fent això? Bé, estic simplement dirà, si interior de la meva taula, en lloc de paraules, Si s'ha establert. Així que si hi ha és-- En realitat, saps què? Vaig a fer-ho en una mica de pseudocodi. Però la idea és la mateixa. Si això és igual a true, retornarà true. Tot bé. Else-- pots tipus de veure on això es going-- tornar falsa. Fet. Comprovar que es fa. Bastant bonic, oi? I així, el que és això realment anar a parar? I això també, vaig tallar alguns racons. Cerqueu a la versió online per a tots els matisos lleus. Però aquesta és l'essència de la mateixa. Índex en el seu matriu associativa, àlies Taula hash, veure si hi ha un valor allà, si s'estableix en true, i si és així, return true. Per a això hem whittled baix tota la complexitat. Així espècie de al·lucinant, oi? No em molestaré acabar amb descàrrega, perquè en fact-- oh, saps què? Sí, anem a acabar amb descàrrega. Descarregui en una taula hash pot tenir un aspecte de la mateixa manera que la funció de descàrrega, tornar. OK, així que és de descàrrega. Perquè no hi ha res per descarregar, oi? No hi ha malloc. Jo no vaig demanar explícitament la sistema operatiu per a qualsevol cosa. Acabo de començar l'ús de variables. I així, això també és una manifestació de característiques de llenguatges d'alt nivell. Així que de nou, la major part d'aquest terme hem estat tractant aquí amb C. súper baix nivell. Vostè pot veure la memòria de l'ordinador. Pot tocar qualsevol cosa que vol en la memòria RAM del seu ordinador, per bé o per mal. Fins aquí, anem a renunciar a aquest poder. Però, Déu meu, mira com molt menys codi que vaig escriure. De fet si no estigués parlant i parlant sobre la meva escriptura, ens haurien fet amb aquest exemple fa cinc minuts. Llavors, quin és el preu que es paga? Bé, anem a fer una ullada. Anem a fer una ullada. Vaig a seguir endavant i executar CS50. Déjame primer anar a exemples d'avui on Tinc el directori de textos com abans. Vaig a córrer la solució que ve amb un problema de cinc set anomenat corrector ortogràfic, que està en el compte del CS50. I jo vaig a córrer en alguna cosa gran com la Bíblia King James, només perquè realment ens posem el solucions de personal a la prova. Ara de vegades l'Internet és una poc més lent, una mica més ràpid, podria trigar molt de temps per desplaçar-se. Però van haver de passar un total de 56 segons per revisar l'ortografia de la King James Bíblia usant la solució personal. Així que molt bé. El teu pot ser molt més lent, i això és totalment bé. Però és correcte aquí. Així que aquesta és la solució personal. Si entro i netejar la versió PHP. I jo vaig a fer una mica com coure espectacle cosa. Anem a prendre el codi que vaig escriure abans, pel que és perfectament correcte. Atès que el codi que vaig escriure no va per ser perfectament correcta en aquest moment. Però si se m'acaba la versió de PHP, ¿Què he de renunciar a dia d'avui? Em va prendre cinc minuts per aplicar p fixar cinc, jo reclam. Quin preu he pagat? Sí. AUDIÈNCIA: velocitat. ALTAVEU 1: velocitat. Què vols dir? AUDIÈNCIA: Es va a prendre més temps. ALTAVEU 1: D'acord. Anem a veure. Es va a prendre més temps, no escriure, però per executar-lo. Sí. Així que anem a provar això. Així que aquí vaig a seguir endavant i fer PHP d'ortografia, i perquè l'arxiu de anomenada ortografia. Així que no estic corrent el diccionari, recordo, Estic corrent el programa anomenat abecedari. Vaig a passar en el mateix arxiu, el rei Jaume el cinquè. Està volant. Això podria ser només la velocitat d'Internet, així que no llegir massa en això. Però se sent ja segur. 1,26 segons. Ara que és encara bastant maleïda ràpid, oi? I l'única raó per la qual se sentia com més com tres, o quatre, o cinc segon, això és només perquè Internet estava sent lent. El temps a l'ordinador passat va ser 1,26 segon, davant crec que 0,56. Així més de dues vegades més lent. Ara que és encara bastant maleït ràpid, però és una manifestació de, en efecte, que el preu exacte. Com que estem interpretant en el codi línia per línia, i que el programa PHP està llegint el meu codi de dalt a baix, d'esquerra a dreta, que té a veure més pensament. Ha de tipus de convertir dins de si mateix a la màquina corresponent codi sobre la marxa, per així dir-ho, tot i que la mecànica són una mica diferents. En comptes de alimentar la Intel CPU els zeros i uns primes que entén de forma nativa. Així que absolutament, sens dubte, hem pagat un preu. I el codi escrit en un llenguatge com PHP tendeix a ser més lent. Però, Déu meu. Així que ara quan em onada comprovar el meu arxiu, em passo un extra de 0,7 més o menys 20 segons vs hores per implementar un ràpid corrector ortogràfic, oi? És una espècie d'una solució de compromís. I si vostè està començant p establir 05:00, podria no ser de 20 hores. Podria ser molt menys que això. Però és una solució de compromís, de veritat. I si s'està executant codi en molt gran conjunts de dades, o en el maquinari encara més antiga, aquest tipus de diferències sens dubte pot sumar. Per a qualsevol dubte fins al moment? Sí. AUDIÈNCIA: [inaudible] ALTAVEU 1: Malauradament, es pot vostè diu que una vegada més? AUDIÈNCIA: [inaudible] ALTAVEU 1: Vostè està renunciant a temps. Bé, així que si. Estalviï temps no haver de compilar, si això és el que estàs demanant. I de fet, al CS50, la majoria dels programes, tot i que podria trigar molt de temps escriure, són relativament curt. Poques dotzenes, uns centenars de línies de codi, i pel que compilen amb força rapidesa. Però quan comences escriure programes més grans, com si estàs Microsoft o ets Google i escriure realment grans programes en C o C ++, o similar compilat llengües, podrien prendre molts segons, o fins i tot minuts o més a compilar milions de línies de codi. I allà també, que diferència es va a sumar. I, de fet, una vegada que transició avui en dia, el mateix dia avui, per a la programació web usant PHP, ets va a trobar tantes coses més agradable escriure codi quan no has de fer aquests estúpids mesures com el canvi al seu terminal finestra, tipus de maquillatge hola, re executar-lo, recarregar la finestra. Només tants estúpids passos mecànics que acaba d'obtenir en la forma de fer l'interessant, el treball divertit. I de fet ens desaprofitar amb PHP. I podem interactuar amb això més ràpidament. Sí. AUDIÈNCIA: [inaudible] ALTAVEU 1: És clar. Puc aclarir el que significa ser interpretat? Al compilar un idioma com C, baixa com hem dit a la màquina codi, zeros i uns. I Intel va decidir fa anys que certs patrons de zeros i uns representar addició o sostracció, o d'impressió, o d'altres operacions bàsiques. En el món d'un llenguatge interpretat com PHP o JavaScript o Python, o Ruby, o manats de altres, en canvi algú ha escrit un interpreter-- en aquest cas, també es diu PHP, idèntica a la nom de la language-- que, essencialment, té un gran llaç en ell que itera sobre la totalitat de les línies del codi de que m'alimento com a entrada, com hola dot PHP, o un punt diccionari PHP. I llavors vostè pot pensar en la seva gran bucle com tenir un munt de condicions. I aquestes condicions sol dir, si el humana ha escrit la paraula clau per, començar a fer la seva codi de nou i una altra. O si l'humà té per escrit la línia de codi, Si, només executar el seu següent línia condicional. Així que és realment com interpretar en un sentit humà, la línia per línia, i això porta temps. Es necessita per sobre. I això és un preu: el bona pregunta-- paguem. Així que anem a fer una altra demostració això és una mica més dramàtic. No, jo diria, un estadi de beisbol en aquest un 90% de probabilitat de fallar horriblement, però vostè es sorprendrà amb 10% de probabilitat. Així que cada any intentem per fer això, en puguem tractar d'escriure un programa que passa per problema ajustat a zero, per al que tens presentat els seus números de telèfon i un gran quantitat d'altra informació demogràfica, i programació li enviarem un missatge de text. I llavors el telèfon de tot el món comença a sonar o vibrar, i és simplement increïble, perquè així, mira el que els ordinadors poden fer. Això poques vegades funciona correctament pel que sembla, en gran part, perquè normalment si la llista negra per Gmail o algun altre servei per realment tractant de fer això en l'escala. Però el curiós és massa, ja que no tenir a tots aquí avui, fet de la diversió l'última vegada que intentat això fa dos anys, Crec que vaig escriure un programa que va seure en una iteració de bucle sobre tots els alumnes de la classe, i cada un d'ells un missatge de text, i deia alguna cosa així com: ¿Per què no ets a la conferència? L'amor, CS50 bot. No tens ni idea de quants de disculpa i correus electrònics tipus de doloroses He rebut en resposta de la n menys 100 persones que no eren aquí aquell dia. I encara més divertit, història- més vergonyós ja saps, anem a posar-ho per aquí. Ja està al vídeo fa uns anys. Així que aviat em veureu escriure un bucle, en el qual que és molt fàcil escriure un error en què per al bucle, de manera que la primera vegada a través del bucle, enviar un missatge de text. La segona vegada a través del bucle I hauria d'haver enviat un missatge més text, i després un text més missatge, i un més. Però resulta que si comet un error tipogràfic en la programació, de vegades pot escriure programes que envien un sol missatge de text, a continuació, dos missatges de text, després tres missatges de text a tothom que ja ha rebut un missatge de text. I com vostè sap, fer alguna cosa, més alguna cosa, a més d'alguna cosa, més alguna cosa, és gran O d'un lot de missatges de text, o n al quadrat, o $ 0.10 per missatge de text, 20.000 $. Afortunadament em va colpejar Control-C abans que va passar, però jo he de almenys un dels seus predecessors $ 20 per al 200 alguns missatges de text imparells que, no només va ser al seu telèfon, però També era com un telèfon plegable més vell pel que li agrada empès fora del seu memòria cada altre text personal missatge que en realitat havia aconseguit. Així que tenim un objectiu avui dia, no s'ha de fer això. Convertir Potser la manera avió. Tot bé. Així que anirem a un programa aquí callled-- que vaig a cridar el text del punt PHP. I per endavant, tinc dos arxius aqui. Vaig fer un arxiu per al personal just, això té totes les dades del personal, tots els noms des del web del curs. I després, per ara acabo de posar alguns números falsos 555-1212. Així que aquests no serien en realitat anar enlloc. Però noti l'interior d'aquest arxiu CSV, que ens referim breument abans en el context d'arxiu IO. Què és un arxiu CSV? Separats per comes variables. I això és una mena base de dades lleugera, si es vol. No és una cosa de tipus de quatre columnes en aquest arxiu, i no irregular, però les comes essencialment representen columnes a l'arxiu. La primera columna és el TF o el nom de CA. La segona columna és el seu cognom. Tercera columna és el seu número de telèfon. I quarta columna semblar és-- quarta columna és aparentment el que? OK, així que és seu portador. Així Verizon o Sprint, o el que no. I si em vaig equivocar abans, CSV. Valors separats per comes CSV és aquí. Llavors, què puc fer amb això? Bé, això és només un arxiu de text gran, i que és una mica llarg, no? T'agrada aquesta va ser una mica molest. I resulta que, però, que si jo que voleu enviar un missatge de text, anem a Alex dir aquí. Déjame anar al meu navegador i sortir del mode de pantalla completa perquè jo pugui alternar. Resulta que, anem a veure, si em vaig a aquí i entreu a Gmail, d'acord. No miris ençà. Només puc veure. per descomptat, el livestream pot Encara veig el que estic fent. Tot bé. Així que aquí és només amb Gmail El relat de Juan Harvard. Així que si vull enviar un missatge de text a Alex, Jo puc compondre, per descomptat, un missatge. I resulta, i no tinc provat amb Alex abans que aquí, així que vostè pot afegir un cert domini nomenar els números de telèfon de les persones, perquè hi ha al món coses criden SMS al correu electrònic passarel·les. El que és una forma elegant de dir tot els que tenen telèfons mòbils que tenen números de telèfon, per descomptat, probablement és per la seva companyia, un determinat sufix com a Vtext.com de missatge de text de Verizon punt com, que pot afegir a la seva propi número de telèfon personal, i després vostè o amics, o els seus pares poden vostè text en aquesta direcció particular. I Verizon compta amb un servidor, un correu electrònic servidor, que en rebre aquest missatge, mira a la part numèrica i després utilitza el que sigui especial màgia indústria que han de realment enviar al llarg de les ones de ràdio a la seva cel·la en particular telèfon. Ara bé, això és bo perquè no ho faig realment saben com enviar un missatge de text o escriure codi però, per al meu telèfon mòbil, i és possible fer exactament això per un projecte final, però per ara tot Que tinc és el meu portàtil aquí. Així que vull per repetir que CSV arxiu, línia, per línia, per línia, per línia, agafar cadascun dels números de telèfon del personal, i del seu portador i programàticament, concatenar, és a dir, connectar el telèfon nombre amb el nom de domini adequat i després enviar un correu electrònic. Així que això és un munt de passos. I bona sort fent que en C. És un malson d'una situació per obrir un fitxer, per llegir-lo línia, per línia, per línia, com vostè estan veient, o aviat pot veure amb el problema d'establir 5, si no problema va fixar 04:00, i després per concatenar dinàmicament dues cordes juntes, ja que en C, prendre dues cadenes i combinar-los, el que fer mínimament necessita fer més probable? Vostè necessita declarar més memòria, no? I demanar, malloc, puc tenir més memòria? Així que puc posar la meitat d'aquesta aquí, la meitat d'això aquí. És tan molts passos. I en aquest moment que has perdut interès en la petita demostració estúpida on vostè fa xiulet telèfon de tots. Anem a fer aquest tipus de PHP estil, pel que acabem de començar a utilitzar més d'aquest pica de la cuina. I les idees són fonamentalment el mateix, però no hem de preocupar massa molt d'aquest nivell inferior. Així que anem a veure com em podria anar fent això. I de la mateixa manera que no ho faig repetir els errors del passat, He escrit algunes notes per a mi aquí. I anem a veure si ens pot caminar a través d'alguns dels passos fonamentals, i després per l'amor de tant anem a potser tallar algunes cantonades a l'extrem. Vaig a seguir endavant i fer-oberta PHP suport per iniciar aquest arxiu. I jo vaig a seguir endavant i fer això. Identificador d'arxiu, com vostè aviat veurem, en realitat crida a una funció anomenada f oberta. I recorda que això obre un arxiu. I la cita, cap de la cita, r significa què, una altra vegada? Només ha d'obrir per a lectura. Ara en conjunt p per, vostè va fer això. I gestionar podria ser qualsevol cosa, fu, bar, ves, qualsevol nom de variable. Però en general, un ordinador científic diria un arxiu obert, que li dóna un identificador d'arxiu, cosa que aferrar per així dir-ho. Jo només vaig a fer alguna comprovació d'errors. Així que si el mànec és falsa, igual que en C, que vaig a fer una cosa així, no va poder obrir l'arxiu, la barra invertida n. I llavors jo només vaig seguir endavant i sortir. I resulta que, en PHP, No estic dins d'una funció. No hi ha funció principal aquí. Així que jo no retorn, per se. Surto. La qual cosa és essencialment la mateixa cosa. I estic sortint amb una sola i probablement. Un només significa un error d'algun tipus. És diferent de zero, per la qual cosa és un error. Molt bé, pel que si estic aquí ara en el meu programa he obert l'arxiu. Vaig a seguir endavant i declarar una matriu anomenada direccions, i en C que hauria de conèixer la mida de la matriu per endavant, no? O jo hauria de declarar- és un punter, i aleshores utilitzar malloc. I llavors cada vegada que llegeixo a través d'una altra fila a l'arxiu, Vaig a haver de malloc més memòria, malloc més memòria. Això és un dolor al coll. I per sort, PHP i Ruby, i Python i JavaScript, que creixeran les seves matrius de forma automàtica. No més malloc. No més la gestió de memòria. L'ordinador s'encarrega d'això. Però el preu que vostè paga. És una mica més lent. I per a un programa com aquest no notarem. Anem a enviar 100 missatges de text. Per exemple, no va a sentir. En realitat, només comença a importar l'idioma de la seva elecció quan les seves dades o els seus programes arribar molt, molt important, com serà el cas més encara amb les nostres coses basat en la web. Però per ara seguirem endavant. Si bé resulta que hi ha una funció en C anomenat f arribar CSV. Arxiu arribar CSV, que porta un presentar mànec com el seu argument, i procedeix a continuació, fila, per fila, per fila, per llegir en una fila. Així que només llegeix una línia del text de l'arxiu. Però el millor d'aquesta funció, que no m'acaba de lliurar una línia de text. Es veu per aquestes comes, i analitza la línia. I per analitzar la línia significa dividir en certs valors en aquest context. En altres paraules, el signe de dòlar fila és una variable que és em va donar un munt d'índexs. Aquest serà el primera columna en la meva CSV. Aquest serà el segon columna, això va a ser el tercer, i això serà el quart. A causa de que el record i Excel la no cooperar l'última vegada que vam fer això, però si puc descarregar el personal esquitxen CSV. Vaja, no canviar el nom. Si descàrrec dot personal CSV, i tractar d'obrir-lo, Ja he registered-- oh no actualitzar Excel des de l'última vegada. Veuràs que en el punt personal CSV, tinc quatre columnes. Així que quan vaig llegir al primera fila per Abby aquí, signe de dòlar fila 0 és Abby, signe de dòlar fila és Lyons, signe de dòlar fila 2 és el seu nombre, i després portador del seu telèfon. Així que això és tot. I això és bo, perquè jo no han d'esbrinar ara on totes aquestes comes realment són. Així que seguiré endavant i això, tenint en compte que la definició, Vaig a dir que el seu nom és en suport de fila zero, com s'havia promès. I jo vaig a grab-- i En realitat, saps què? Jo no vaig a preocupar el seu nom, en aquest cas. Vaig a mantenir simple. Jo faré el seu nombre és a la fila suport de dos, crec. I la seva companyia estava en on? Fila tres, un més. Així que res de nou allà. És només zero indexació en una matriu. I ara, vaig a fer el següent. Si el transportista és igual a igual a AT & T Jo només vaig a tenir una loop-- Vull crear un correu electrònic direcció que s'assembla a això. Serà 617-555-1212 a, què és, text.ATT.net, és el que jo vull fer. Llavors, com ho faig? Vaig a fer el següent. La seva adreça va ser el seu número, i ara, deixa anar endavant i fer això. Aquesta és una sintaxi funky. Que podia fer el percentatge s truc, però jo només puc fer realitat això. Així que això és una cosa de PHP, però anem a considerar el que estic fent. Dòlars signen direcció a l'esquerra, just una variable. Dóna'm una variable. Jo no he de especificar el tipus. PHP entendre-ho. A la part dreta, ¿Quin és el tipus de dades de tota aquesta cosa en el costat dret? Sembla que una cadena, perquè hi ha doble cita a l'extrem esquerre i l'extrem dret. Ara hi ha una nova sintaxi covard aquí. Hi ha les claus, i el nombre de la mostra de dòlar. Però prendre una conjectura quina sigui la sintaxi Probablement dient PHP per fer per mi? Sí. Només ha d'inserir el valor allà. Així que no hi ha cent s. Podríem utilitzar la impressió f, o s print f o alguna cosa semblant, però PHP i una gran quantitat de llenguatges d'alt nivell, vas a veure que es podia fer el mateix funcionalment, potser sis maneres diferents. I pel que comença a ser una qüestió de disseny o estil. Així que això és només una manera de mirar críptica de dir, em dóna una adreça de correu electrònic, però el plug-in en el nombre entre aquestes claus. I les claus no ho farà acabar en la direcció final. Ara podem passar per alt alguns aquestes línies per al bé de moment. Així que si un vehicle és igual iguals verHorizon-- crits, Verizon-- Vull fer alguna cosa molt similar, on la direcció es posa, Ho van dir ells, el número al text.ATT.net. I llavors jo puc fer el mateix tipus de cosa per a la resta dels portadors. Però només faré punt, punt, punt per ara. I ara suposem que Vull afegir varietat, empènyer. Vull afegir a la matriu, anomenada direccions. Aquesta adreça, així és com es afegir alguna cosa a un array en PHP. No ha de fer malloc. Vostè no ha de canviar la mida de la matriu. Vostè acaba de dir matriu, empènyer. Què és el que vols push-- el array Què vol empènyer alguna cosa sobre? Direccions. El que vostè vol empènyer en direccions? Direcció. I de fet, si realment vol ser intel·ligent, una mica de sucre sintàctica per això, per així dir-ho, que només vol dir que com es pot fer això en la manera més bonica, seria per fer això. Això també té l'efecte de creixement la matriu d'adreces per la grandària d'un, i després que plop addicional adreça de correu electrònic en el mateix. Sí. AUDIÈNCIA: [inaudible] ALTAVEU 1: Un error tipogràfic en la una altra cosa si: oh, portadora. Està bé. Tampoc li agradarà la meva falta de posar en pràctica part d'aquest programa desprès. Però gràcies per la captura. Un error més. Gràcies. Volem que això sigui Vtext.com. Sí. Tot bé. Llavors, on ens deixa això? Hem escrit el codi per obrir l'arxiu. Tenim un bucle per iterar sobre les files a l'arxiu. Hem codi que afegeix al meu array, un alhora, la correctament adreça de correu electrònic amb format. Així que tot el que realment queda és enviar un correu electrònic a cadascuna d'aquestes persones. Així que m'he anat per davant i mi mateix preparat com segueix. El que faré aquí és-- i anem seguir endavant i saltar a algun codi real, que s'assembla a això. Així que aquí és la pre-cuit versió que vaig escriure abans. I noto que vaig acabar la implementació de Sprint. Vaig acabar la implementació de T-Mobile. Vaig acabar la implementació de Virgin Mobile. I vaig a demanar disculpes per avançat. Hi ha algunes companyies que alguns estudiants de la classe tenen que no em vaig molestar enumerant en el cas de condicions aquí. Així que no tots els textos s'apagaran. Però anem a veure què més he de fer. Tanco l'arxiu, com en la p en quatre sets. I aquesta és una nova sintaxi. I anem a veure una mica mica d'això amb el temps, especialment amb p establert set-vuit. Però això és sintaxi per crear un tipus especial d'estructura. Resulta que hi ha una biblioteca que ve amb PHP, denominat mailer PHP. El seu propòsit a la vida és enviar missatges de correu electrònic mitjançant programació. És codi d'una altra persona va escriure que fa que sigui més fàcil per a nosaltres enviarem correus electrònics, així que no hem de mantenir anant i venint a Gmail, i enganxar en adreces de correu electrònic de les persones. Hi ha un munt de línies aquí que honestament, només tipus de copiat i enganxat de la documentació. I de fet, si vostè és curiós, vaig deixar tot de les adreces URL de la documentació en el codi que publicarem més tard. I notar que entre les coses que estic fent és que estic explicant aquesta biblioteca, utilitzar el servidor de Gmail, oi? SMTP parlem breument sobre quan estaven en Yale sobre estar correu simple protocol de transferència. És el protocol que servidors usats per enviar correu electrònic, Això és-- i Gmail té un d'aquests. Un port, aquest és el número de port TCP. Està bé si no han vist 587 abans. Només has de saber que a partir de la documentació. Aquí està el meu nom d'usuari. Vaig a utilitzar el bot CF50. I en un moment, jo només vaig a escrigui la contrasenya actual del robot. I després aquí baix, observi el que queda. Em vaig posar la meva de la direcció per ser bot a CS50.net. Crec que no es penedirà d'enviament d'un missatge de text a 800 persones que diu, et trobo a faltar, bot amor CS50, potser per als que no van poder fer-ho avui. I després, en la línia 76, què faig? Aquest tipus de mirades com C. Així que per a i és igual a 0, n equals-- ara explicar és nou. Resulta que si vol aconseguir el nombre de coses en una matriu, vostè no ha de recordar més. Vostè només pot fer una funció anomenada recompte, i li dirà quants direccions estan en aquesta matriu. I després vaig a afegir la direcció al correu electrònic. I sé això des utilitzant la documentació. Hi ha una funció de direcció de complement. I ara compte no és una peça de la sintaxi. Hem vist això abans en C. similars en esperit. Vostè pot pensar en el signe de dòlar enviar per correu com una variable, que es troba. Però és una estructura interior de que no són només les propietats, les variables si es vol. Però resulta que en PHP, que és una programació orientada a objectes llenguatge, com Java, si vostè va prendre APCS. Electrònic Signe de dòlar, si vols A-- sinó que també té funcions en l'interior de la mateixa, o mètodes. Així que això és dir que anunci publicitari especial PHP biblioteca, si tinc una variable del mateix, si vull cridar a una funció que ve amb aquesta biblioteca, per als propòsits de l'actualitat, Només sàpiguen que vostè fa servir la notació de fletxa. No hi ha notació de punt. És només la fletxa. Però això no és un punter. És només va prendre prestat de la sintaxi de C. Així que truqui a afegir l'adreça interior de objecte o variable d'aquesta biblioteca. Tot bé. Aquesta és la línia màgica. Així és com em va enviar un correu electrònic. Aquest és l'equivalent de l'obertura Gmail, escrivint, i colpejar a enviar. Però va enviar un cop correu electrònic a aquesta adreça, amb aquest cos, Del bot CS50. I ara la línia clau. Aquesta línia estava absent en 2011 com quan penso en el passat he intentat això. Aquesta línia allà, per descomptat, esborra les direccions. Així que, lògicament, si no desactiveu la direcció després de cada iteració, el primer correu electrònic o missatge de text va a Alice, el segon va Alice i Bob, el tercer va a Alice i Bob i Charlie, per tant, l'error molt car Vaig fer aquest any. Així que anem a veure. Hi ha alguna pregunta abans d'enviar-tot un text missatge amb el 10 per cent de probabilitat? Qualsevol pregunta? Tot bé. Anem a que em vagi d'aquí i canvi la contrasenya per al que ha de treballar, probablement obtindrà la llista negra de Gmail. Així que pot ser que no tots anar a terme, ja que, probablement, no ens agrada l'enviament de missatges de correu electrònic 800 en un bucle for tots alhora. Atès que no és comportament especialment humà. Oh, jo vaig a canviar una cosa més. Fins a la part superior, que vaig a sent-- canviar el fitxer tal estudiants esquitxen CSV. I no vaig a obrir això, però això és un arxiu CSV idèntic no 100 funcionaris, però 800 estudiants, simplement de Harvard, Yale, perquè té recés octubre aquesta setmana. I sembla que una mena de cosa idiota fer al text tots ells de per què no són a classe el dia de festa. Està bé. A només els estudiants de Harvard avui a l'interior d'aquest arxiu. I ara anem a tornar a la meva finestra de terminal. Estic una mica nerviós. Acceptar el que ara vaig a entrar al directori i text PHP PHP punt. Què tal un valent voluntari? Així que no vull això en mi. OK, anem cap amunt. Com et dius? MAYA: Maya. ALTAVEU 1: Maya. Anem amunt, Maya. Tot bé. Anem a veure si això funciona. Vaig posar la meva pròpia adreça de correu electrònic en el file-- meu propi número de telèfon a l'arxiu, per la qual cosa s'espera que aconseguiré un també. Encantat de conéixer-te. MAYA: De la mateixa manera. ALTAVEU 1: Així que tot el que has de fer és premeu Enter per enviar 800 missatges de text, si no m'equivoco. Niça. Podria prendre un temps, estadísticament, fins que arribem a un correu electrònic address-- un missatge de text que és a la sala en aquest moment. Anem a descansar i veure. AUDIÈNCIA: [sibilant] ALTAVEU 1: Oh, sí. AUDIÈNCIA: Oh, et vaig enxampar. ALTAVEU 1: Per bucles tracti: aquest no és lent a causa de PHP. Aquest és lent a causa de Gmail ens està escanyant i no deixar-nos enviarem més igual que un correu electrònic per segon. Qualsevol cosa? Això era una cosa difícil per a mi prova en casa amb només jo i el meu únic telèfon, així. És que s'espera des del bot? Sí? No? Dir que sí. No? És d'un amic? Awkward. D'ACORD. Bastant segur que funciona però. UH oh. Ells black-- oh, espera un minut. Oh, saps què? Un moment, si us plau. Només Maya i jo-- Mia, oi? MAYA: Maya. ALTAVEU 1: Maya, van a sé el que vaig fer malament aquí. Oh, espera un minut. Crec que acabo d'enviar 100 missatges de text a 555-1212. Prepareu-vos. No puc guanyar qualsevol any. D'ACORD. Maya? Fixar que en post-producció. Maleïda sigui! Després de la direcció. OK, una pausa. Ho sento. És dolorós cada any. OK, un moment. Això és bo. Estic en comptes anava a fer això. Direccions d'impressió. OK, una pausa. Direccions d'impressió, suport i. Sí, m'agrada això. Sign-- OK Dòlar vaig a explicar el que sóc fent en un moment, després m'he trobat això. Cada any. OK, aquí anem. Tinc sol-- i jo no vull per mostrar el número de telèfon de tots, però Maya pot confirmar amb un gest del cap, que veu tothom és número de telèfon a la classe que vaig a copiar en un programa anomenat Gmail. I si a Gmail, què volem dir? Et trobo a faltar. Amor-- això no és de mi. Ni tan sols he colpejat enviar encara. Així que seguirem endavant i fer això, si em pot apropar la imatge. D'ACORD. Així que estic utilitzant un programa anomenat Gmail ara. Si Maya, desitja feu clic al botó Enviar, simularem el que codi hauria d'haver fet. Qualsevol cosa? [BIP] AUDIÈNCIA: Sí. ALTAVEU 1: Sí? Salvació? AUDIÈNCIA: Sí. ALTAVEU 1: Et trobo a faltar. I jo vaig a enviar la resta. Vaig enviar mitjà perquè jo no crec Gmail deixaria que els travessen. Així que recorda, avui és el dia que has après que puc utilitzar Gmail. Això va ser horrible. Un gran aplaudiment a Maya. Gràcies. Molt bé, així. Què [BIP] Ens van donar uns quants xiulets, sí? Tot bé. Ara em vaig a posar 700 realment correus electrònics infeliços esquena dels seus companys de classe. Així, almenys, ja veurem si això era la pena. Llavors, què va sortir malament? Vaig a esbrinar el que va sortir malament després dels fets, però només cal veure el fàcil era fer-ho en PHP. Llavors, què podem realment fer ara que tenim aquesta expressivitat de PHP. Això era-- que era horrible. Tot bé. Així que això va ser el que hauria d'haver sortit. Això es em provant aquest matí en el meu telèfon, pantalla real del meu telèfon. Però ara anem a considerar per què en realitat estem introduint totes aquestes coses en el primer lloc. Així que l'objectiu no és escriure aquests programes que estan escrits en la línia d'ordres, oi? Així que vaig escriure un senzill hola programa, vaig escriure un petit programa que fa condicionals, i s'utilitza una línia de lectura i així successivament. I en teoria, que acabo d'escriure un programa que envia 800 missatges de text, més o menys 800. I aquest programa era tot Encara córrer a la línia d'ordres. I això, és clar, és No la web, no? L'objectiu ara és començar a usar el que pretenc és un fàcil d'usar idioma, una més daresay llenguatge poderós en termes de les característiques que vénen amb ell, per començar escriure codi que genera pàgines web. Així que l'última vegada i la setmana passada, parlem d'HTTP i HTML. I el que és bo d'HTML és que és només text pur. I el text és, sens dubte alguna cosa que pugui imprimir literalment cridant a la impressió f funció o la funció d'impressió. I de fet, això és el que PHP és ara va a permetre que fem. Així, entre els exemples que tenir en el codi font d'avui, A més d'alguns dels codis que vaig posar allà dalt fa un moment, tenim programes com aquest, per exemple. Froshims o Freshman Intramural Sports, era en realitat un dels primers extracurriculars Em vaig involucrar amb la de fa anys. I el meu company i jo, amb alguns altres nens a l'escola, utilitzat per executar el programa froshims. M'estic posant els meus missatges de text ara. Ara pel que, al seu dia, de manera que aquest 1996 era més o menys, hi va haver un internet, però no hi havia procés-- existeix no va ser una pàgina web per froshims. I pel que si vostè volia inscriure en futbol o voleibol o el que sigui, vostè ompli aquesta cosa anomenat un tros de paper, i que seria caminar a través de la Universitat de Harvard pati, i que seria feu-lo lliscar a la ranura de correu del supervisor, qui era a Wigglesworth, un dels dormitoris. I això que es van registrar. I ell o ella faria a continuació, redactar un correu electrònic a vostè manualment, igual que jo acaba de fer aquí amb Maya, i després es confirmaria com si hagués estat registrada. Així que això era com baixa fruita penjant, per així dir-ho. Era una mena d'estúpid que estàvem usant paper per això. Jo volia que siguem capaços anar només en un lloc web, o tenen els estudiants de primer any van en un lloc web, registrar-se en l'esport, i simplement automatitzar una gran quantitat d'aquest material posant els seus noms i correus electrònics i així successivament en una base de dades. I de fet, la primera versió de la pàgina web, utilitzant súper lleig HTML, podria haver buscat alguna cosa com això. En realitat, va ser, irònicament, més vergonyós guapo que aquesta de tornada llavors. Però he fet servir un llenguatge de programació. No PHP, sinó més aviat anomenat Perl, que és una llengua més antiga, però molt similars en esperit. I acabo completament ho va ensenyar a mi mateix. I em va prendre un temps per esbrinar-ho, fer moltes preguntes d'amics. Però les idees allà eren exactament el mateix. Perquè el que PHP va ser realment dissenyat per no dir les coses de línia d'ordres que acabem de jugar amb, però per a la programació web. És realment lligat en la seva funció estableix a la web, de la següent manera. Això és froshims. I si volia inscriure en aquest formulari, això és bastant lleig, sens dubte, però m'ho dius a mi anar per davant i ser un estudiant menys còmode, i qualsevol que sigui l'esport per Matthews, feu clic a Registrar. El que jo vull ser capaç de fer és enviar informació d'un formulari, no al servidor de Google com vam fer l'última vegada, completament engany per mitjà del seu back-end, que desitgi implementar el meu propi codi backend. El que significa escriptura PHP codi que viu en una URL que les dades del formulari es poden enviar. I després el seu codi, escrit en PHP en un servidor, a continuació, pot respondre al fet que l'entrada de l'usuari. Igual que el seu nom, o el nivell de confort, o dormitori, i després fer alguna cosa amb ell. En aquest cas, només estúpidament impresa cap a fora com text, que no és tan bonica. Però certament es podria imaginar, si saps HTML, i aviat sabràs com generar HTML amb la impressió f, i imprimir, i funcions similars, que sens dubte pot generar una pàgina web més bonica que diu: Hey David, que ara està registrat. Ets un menys còmode estudiant de Matthews, oi? Vostè només pot utilitzar un munt de% ses, o les claus i signe de dòlar notació vaig fer servir fa un moment, a generar text que és més fàcil d'usar que això. Així que anem a fer una ullada a aquesta imatge. Froshim zero punt PHP té aquest aspecte. Quan torno a carregar IDE CS50, zero froshim són aquestes. Aquesta és froshim zero punt PHP. I què és el que vostè nota sobre aquest arxiu? AUDIÈNCIA: [inaudible] ALTAVEU 1: Ho sento, una mica més fort? AUDIÈNCIA: [inaudible] Tot està en HTML. I de fet, que és, perquè l'interessant de PHP és que va ser dissenyat ser, per a una millor o per mal, entremesclat amb codi HTML. I de fet, tot i que aquest arxiu, froshim zero punt PHP, té un comentari de PHP a la part superior d'ella, tot és només HTML. Però per contra, si obro, anem a diguem, registri zero punt PHP, que només té un gran comentari a la part superior. Això també es veu gairebé íntegrament com HTML, excepte per què? Línia, el que, 21 es veu una mica estrany. Però noto que estic entrar en la manera PHP amb el suport obert signe d'interrogació PHP. Llavors tinc algunes coses. I després, al final d'aquesta línia Gairebé tinc, Signe d'interrogació PHP. I això és el que vull dir amb entremesclats. Vostè pot escriure HTML que acaba de vol que el servidor per escopir. Però si vols fer alguna cosa partway dinàmic a través de la pàgina, com inserir el meu nom o dormitori o nivell de comoditat, Puc utilitzar una funció com la impressió r, que és imprimir recursiu, que només significa imprimir aquesta variable, formatar el que li vingui de gust. En realitat no és per propòsits humans, és només amb fins de diagnòstic o de depuració. Així que aquesta és la forma en què ho vaig fer. Si en canvi vaig froshims dos punts PHP, compte que l'acció d'aquesta manera no està registrat zero punt PHP com la old-- l'anterior era en realitat. Però ha registrat dos punts PHP. Així que anem a veure com aquest es comporta una mica diferent. Si entro a la versió 2. Si aquí, si em registre com David, menys còmoda, des del dormitori de Mathews, registrar-se. Així que aquesta vegada, va dir, que es registren, en realitat no. Anem a veure el que vaig fer aquí. Si miro registre dos punts PHP, això té una mica més de codi PHP. És una mica més net, encara que Encara s'ajusta una mica llarg en aquesta línia. Cal notar aquí. Imprimeixo la meva etiqueta HTML, el meu etiqueta del cap, el meu etiqueta del títol, el cap, el cos. I llavors em poso a dir coses com entrar en la manera PHP. I perquè l'etiqueta, suport obert PHP-- signe d'interrogació PHP diu, bo, servidor, execute-- interpretar les següents coses com PHP fins que vegi l'etiqueta final. I tot i que vostè pot no saber cap una altra PHP del que has vist fins ara, pots tipus de lectura bastant intuïtiva. Si el nom està buit, o la comoditat és buit, o dormitori està buida, què faig? ¿Què li dic a l'usuari? Vostè ha de proporcionar el seu nom, comoditat i dormitori, i així successivament. Si no, dic que ets registrat, així no realment. I jo no dic de veritat perquè no hi ha cap base de dades. No faré res amb les dades. Només estic tirant a les escombraries amb fins de demostració. Ara em tipus de escatimat vora 22. Hi ha més de sintaxi allà, però el signe de dòlar subratllen post és bastant interessant. I això és el que és bo de PHP. En PHP, vostè té el que es diu algunes variables globals súper. Ells són una espècie d'encara més important que les variables globals. I aquests, tot en majúscules com a tal, ve amb PHP. Així que si vostè té un servidor que té un servidor web instal·lat, com Apache, i d'instal·lar l'idioma suport per a PHP, de sobte vostè pot començar a utilitzar aquests súper variables globals en el codi. I el que és bo de PHP és que si només escriure un arxiu que acaba en punt PHP, el va posar en un servidor web, i després envia un formulari a ella a través d'aquesta etiqueta d'acció i una etiqueta de formulari, aquest atribut d'acció en el etiqueta de formulari, PHP i la web completament s'adona de com agafar tots aquests parells de valors clau a terme del URL com a pregunta marca q és igual als gats, serà trobar la manera de q i gats. Si envia una foto o un nom d'usuari, o una contrasenya per com Facebook, PHP esbrinar per a vostè on tots els que les dades es. I s'acaba de lliurar que una matriu associativa anomenat dòlar lloc de signe de subratllat, o signe de dòlar subratllen aconseguir, depenent de si vostè és utilitzant GET o POST presentacions. I només et farà lliurament una variable global súper, de manera que si vol aconseguir en el nom que l'usuari va presentar a través d'aquesta xarxa manera, que, literalment, acaba de dir el nom de la variable global súper, cita, fi de la cita, el nom. I cita, comoditat fi de la cita, i cita, dormitori fi de la cita. I nosaltres serem capaços de fer això i molt més amb PHP. I tot i que això era una mirada remolí en això, anem a bussejar en molt més la propera setmana. Ens introduirem una base de dades pel que ets en realitat va començar a aplicar el seu propi based-- e-comerç like en el temps només una setmana. Així que ens veiem la propera vegada, i Espero que tinguis tots els missatges de text. Adéu. [REPRODUCCIÓ DE MÚSICA] [OBERTURA PORTA] ALTAVEU 2: Hey. ALTAVEU 3: Què passa? ALTAVEU 2: Què estàs fent? ALTAVEU 3: Treball en un conjunt de problemes. ALTAVEU 2: Niça. Xoca aquests cinc. [XOCA AQUESTS CINC] Què tracti: eh, què estàs fent aquí? ALTAVEU 3: Tot just penjant cap a fora. Acabo de tornar del gimnàs. Jo no podia deixar de notar quan-alta xocar palmes, que té les mans molt aspres. Vas al gimnàs? ALTAVEU 2: No. No. ALTAVEU 3: Amic, et veus bastant gran. Què és dolent, perquè tothom sap 8-ball és l'home gran al campus. Xoca aquests cinc. ALTAVEU 2: Uh, no. No, crec que em va bé. Crec que estic bé.