[Powered by Google Translate] [Setmana 8] [David J Malan] [Harvard University] [Aquesta és CS50.] [CS50.TV] Benvingut de nou. Això és CS50, i aquest és el començament de la setmana 8. Fa un parell d'oportunitats aquesta setmana, entre ells aquesta xerrada aquí, en la qual alguns aliments seran servits. Per més detalls, fes un cop d'ull a les diapositives que estan en línia. I també un altre esdeveniment d'aquesta setmana pel nostre propi Carriero Thomas. És un dels exbecaris de Head CS50 d'ensenyament que ara està en Dropbox, i ell és el tipus que ens va connectar amb la saps què, així que si vols més que el cap de la seva xerrada d'aquesta tarda per Dropbox i més. CS50 dinar és aquest divendres. S'uneixen a nosaltres, si li és possible, 1:15, com sempre, en Fire and Ice. I ara ens submergim en una cosa anomenada Seminaris. Els nostres Seminaris CS50, record, són aquestes classes opcionals dirigides pels companys docents i els assistents del curs i amics del curs, gent d'un grup al campus anomenat ABCD, que és un grup de tecnòfils al campus, així com d'un grup anomenat HCS, la Harvard Computer Society, els estudiants que estan igualment interessats en la computació. Llista d'enguany inclou seminaris de seminaris sobre Android i iOS i JavaScript i PHP, Unix, Vim, i més, per adonar-se que aquests seminaris s'aproximen. Per fer reserves per qualsevol d'ells es dirigeixen a aquesta URL allà. A continuació, es publica a la pàgina web del curs dels temps i llocs, un cop es finalitzin. Però val la pena saber que hi ha 5 anys de seminaris anteriors disponibles en línia, molts dels quals estan encara molt actual en termes de tecnologies que podeu, vull jugar amb per als seus projectes finals, de manera que el cap allà per alguns vídeos disponibles d'aquest. CSS, aquells de vostès que estan familiaritzats amb CSS i, Què és en poques paraules? Què és CSS? Es fulls d'estil, i què significa això? Què és el que fan per nosaltres, CSS? Molt bé, anem a escalfar amb una més fàcil, HTML, llenguatge de marques d'hipertext. Què és el que fan per nosaltres? Qualsevol persona en absolut? S'està fent molt difícil fer aquestes preguntes. HTML, HyperText Markup Language. Sí? No? [Resposta dels estudiants inaudible] Bé, bé, que ens permet marcar text per mostrar en un navegador web. No és un llenguatge de programació. És realment un llenguatge de marques, el que significa que indica al navegador com mostrar informació, de manera que la simple encarnació d'aquesta com hem vist és una cosa super simple com boldfacing, obert abraçadora abraçadora tancada b diu fan d'aquest text en negreta, i que en realitat és només una de les moltes maneres en el qual podem fer això, i de fet, en aquests dies un millor enfocament per estilitzar la teva pàgina web, fent les coses en negreta i cursiva i centrat i justificat i similars, no es porta a terme a través de les etiquetes HTML només sinó més aviat amb una tècnica anomenada CSS, Cascading Style Sheets. Aquest és un llenguatge en si mateix. Això tampoc és un llenguatge de programació, però- a tots, aquest és Dan, que manté acompanyar avui. Algunes dificultats tècniques. No és un problema. CSS ens permet estilitzar una pàgina mitjançant l'establiment del que es denominen propietats, així que anem a fer una ullada a això mitjançant alguns exemples bàsics. Déjame entrar en l'aparell avui. Tinc la font 8 Dilluns directori aquí, i jo vaig a anar a un directori anomenat CSS, on tenim un munt d'arxius que ens esperen aquí, i en aquesta carpeta tenim, per exemple, search0.html des de l'última vegada. Ara, recordo amb search0 de partir en aquesta nota per tipus d'implementació de Google o en realitat només la part davantera per a una setmana o així que fa, i l'avís que teníem algunes etiquetes noves allà. Vam tenir h1 per un títol gran, en negreta, manera, el que ens va permetre tenen de fet un formulari HTML per entrada d'usuari. Acció, quin va ser el significat d'un atribut d'acció en l'etiqueta de formulari HTML? Quin era el significat d'aquesta acció? Vaig a fer això avui. L'acció és la destinació a on la forma serà sotmès. El fet que l'acció que diu = "google.com / recerca" significa que quan l'usuari fa clic al botó d'enviar o equivalent independentment de la forma que van omplir els camps seran enviats al nostre servidor no o el nostre aparell, sinó més aviat a la adreça explícita a Google. I el mètode que utilitzarà s'anomena aconseguir, i obtenir, per ara, és només una tècnica per passar informació al llarg d'un servidor web a través de la URL, així que anem a fer un ràpid cop d'ull a com funciona això. Tingueu en compte que hi ha una entrada el nom és q el tipus és text i després una segona entrada del tipus de presentar el valor és CS50 Search, i de fet, si ens obrim aquest arxiu aquí search0.html, és una forma súper simple, i si busco alguna cosa com la informàtica i després prem enter o feu clic a Cerca CS50 compte que el que passa és més enllà d'arribar a Google He específicament acabar en aquest URL a la part superior, google.com / search? q = ordinador + ciència, i ciències de la computació és, òbviament, el que he escrit polz El + només significa que és on un caràcter d'espai era, i es fa pel navegador només per assegurar-se que no hi ha confusió i l'espai en blanc a l'adreça URL real. I llavors q, és clar, és el nom del paràmetre. No hem vist com, el programador, en realitat es pot accedir q encara. Podem suposar que Google sap què fer amb això aquí, però arribarem al moment oportú avui. Però deixeu-me fer una ullada en comptes de search1.html, que s'assembla una mica diferent perquè he decidit que aquesta forma aquí estava una mica coix. Vull dir, que està a la part superior esquerra. En realitat no hi ha estètica a la mateixa, i per això vull estilitzar aquesta una mica més com Google, la pàgina d'inici, recordar, encara que és possible que no el visiten molt sovint, es veu així avui per Halloween. Si en lloc d'obrir una versió d'aquest arxiu, 1.html recerca, m'he centrat. , Still bastant lleig, però almenys ara he començat a controlar l'estètica d'aquesta pàgina no només per marcar fins dels mateixos. Fem una ullada a una recerca, i no hi ha realment només una diferència aquí, que podria saltar a la vista, o potser no, però quina és la línia d'un fragment o de la diferència? Hi ha un atribut d'estil, pel que resulta que en HTML la majoria dels elements, la majoria de les etiquetes poden tenir un atribut d'estil en ells, i dins d'aquest atribut style és una cadena entre cometes, i que la cadena entre cometes és CSS. Vostè pot posar fulles d'estil en cascada allà especificant com un nom de propietat seguit de dos punts seguit d'un valor. Això és una mica d'una decisió de disseny desafortunat fa alguns anys que CSS és un llenguatge en si mateix, però sintàcticament és molt diferent d'HTML. En aquest cas, veiem que dins de la meva pàgina web, que és HTML, Tinc CSS dins d'aquestes cites, i la convenció de CSS és que vostè té el que s'anomena una propietat seguit, novament, dos punts, seguit pel valor d'aquesta propietat, així que no hi ha signe igual. No hi ha cites més. És només està separada per dos punts parell de valors clau, i la línia de text fa exactament el que diu. S'alinea el text en el cos de la pàgina, que és realment el coratge de la pàgina, al centre. D'acord, llavors el resultat final, per ser clars, és aquest. No tot el que més sexy, però almenys està centrat i una mica més al real de Google. Però, i si en comptes obrir la versió 2 d'aquest i assenyalar aquí una nova etiqueta en total? Ara, a la capçalera de la meva pàgina, que abans només havia de etiqueta en tots els exemples anteriors? S'acaba de tenir això, el títol. Fa un moment l'etiqueta del cap es veia així. Ara, en canvi, té un estil dins de l'etiqueta de la mateixa, i això també, demano disculpes, sintàcticament es veu molt diferent d'HTML, però t'acostumes a ell, per la qual cosa dins de l'etiqueta d'estil Ara puc factoritzar el que era fa un moment un atribut, l'atribut d'estil, i ho puc posar a la part superior de la meva pàgina. Per què? Bé, aquest és un pas cap netejant les coses, igual que en l'escriptura de codi C nosaltres de vegades escriure funcions per factoritzar la funcionalitat comuna. És només una mica més net per iniciar factoring coses com l'estètica a un lloc central en lloc de tenir-ho tot s'intercalen al llarg de la seva HTML. Això també fa el que diu, encara que hi ha una mica de nova sintaxi. Això aquí és un selector, i el cos només significa seleccionar l'element del cos i aplicar les propietats a la mateixa. Doncs bé, la propietat és exactament el mateix. Per si de cas he afegit un punt i coma al final, que tendeix a ser la convenció, i m'he embolicat tot aquest immoble entre claus perquè jo podia tenir coses diferents aquí. De fet, em podria dir alguna cosa com a color: blue; Ara bé, això tampoc serà un pas cap al no res tot el que més bonic, però si ara tornar a la versió 2 que he fet com a mínim ara el cos de la meva pàgina de text de tot blau. El botó es manté igual perquè és una entrada. No és pur text. Però tota la resta que és text, com CS50 Cerca a la part alta, és de color blau fet. Un cop més, tot el que hem fet ara és eliminar del cos de l'etiqueta, rètol, l'atribut d'estil, i hem factoritzat un cop d'ull aquí. Això no és una gran millora, però si prenem un pas més enllà adonar-se del que podem fer en aquesta tercera versió aquí. A search3.html la pàgina web és gairebé idèntic a excepció del que nou tag ara? Link, de manera que aquest no està molt ben anomenat perquè no es va a associar en el sentit d'un enllaç clicable. Més aviat, estàs de sort fent l'equivalent de # include en C de manera que l'etiqueta d'enllaç amb un atribut href i un atribut rel diu que endavant còpia i enganxa el contingut d'un arxiu anomenat search3.css aquí, essencialment. No tot això, però aquest és l'esperit de la mateixa. Diu que anar obert aquest arxiu, search3.css, i tractar-la com si l'usuari hagués escrit aquí mateix a la capçalera de la pàgina igual que ho va fer en l'exemple anterior. Search3.css, per la seva banda, és bastant simple. En realitat, només es guarden el que estava fa un moment en l'etiqueta d'estil, però no tinc factoritzar un cop d'ull aquí al seu propi arxiu. Tot i que no he passat molt de temps en absolut en HTML o programació web només intuïtivament el que és la motivació, potser, per factoritzar aquest petit fragment de CSS, fins i tot en el seu propi arxiu i després fins i tot amb aquesta etiqueta link aquí? [Resposta dels estudiants inaudible] Bé, és més fàcil de llegir en el sentit que té la CSS en un arxiu CSS. Vostè té el seu codi HTML a l'arxiu HTML, pel que és més fàcil de llegir en aquest sentit. Quina altra cosa podria ser convincent? Si. [Resposta dels estudiants inaudible] Sí, perquè pugui incloure'l en moltes ocasions, de manera que ara estem fent aquests exemples bàsics amb arxius individuals, però suposo que en realitat estàs fent un lloc web real com la teva voluntat per pset 7 o el projecte final potser, i desitja tenir diverses pàgines web, com és bastant comú en la web actual Wide, i seria una espècie de esguerrat a haver de copiar i enganxar el mateix color blau i el mateix text alineat centre en cadascuna d'aquestes pàgines. Més aviat, té més sentit per excloure, com hem fet en C amb l'arxiu. h, el va posar en un lloc central, en aquest cas search3.css, i després permetre que qualsevol arxiu a la seva pàgina web per incloure aquest arxiu en realitat a través d'aquesta etiqueta aquí a la línia 16. Com sol ser el cas, vam començar amb la versió 0, quin tipus d'obres però no és necessàriament la millor, i amb cada pas, recerca d'una recerca de 2, 3 i ara busca que hem pres aquests passos de nadó cap dissenys que són una mica més netes i són més preparatòria per les pàgines més complexes que podem fer en el futur. Permetin-me obrir un últim exemple aquí només per mostrar una pàgina encara més estilitzat, però primer anem a veure el codi HTML. Això és search4.html, i noti que estructuralment és gairebé el mateix excepte per la introducció d'una nova etiqueta, DIV. Div és una etiqueta que introdueix una divisió de la pàgina. Vostè pot pensar en això com un rectangle invisible. D'alguna manera crea una franja d'àrea en la pàgina web que es pot estilitzar tots alhora. El que he fet aquí és la següent. A l'interior del meu cos de l'etiqueta, que ha estat allà tot el temps, Dic crear una divisió de la pàgina aquí a través de les línies 45 a la 47, i això significa essencialment donar-me un rectangle invisible al llarg de la part superior de la pàgina. Llavors dóna'm un segon rectangle, encara que invisible, més avall, i s'identifiquen pel nom de contingut i, a continuació, finalment, dóna'm una tercera divisió de la pàgina a la part inferior anomenat ID. Anem a veure què he fet això en un moment, però conceptualment Tinc una divisió de capçalera. Tinc una divisió de continguts, i tinc una divisió peu de pàgina de la pàgina tot i que aquests són només en el marcat. L'usuari no va a veure 3 rectangles, però tipus d'estructura hi ha darrere de les escenes que estan realment presents. Ara, què hi fa? Per què ho fan realment? Tota la resta a la pàgina és el mateix que hem vist abans. Aquesta és la meva manera. Aquí està la meva entrada, la meva entrada, un salt de línia i així successivament. Aquí està una imatge, però, així que ja veurem on va sortir en un moment. Aquí hi ha un peu de pàgina, que és nou, només perquè volia introduir contingut una mica més aquí. Si ens desplacem fins notar que l'ID d'aquest div és capçalera. La identificació d'aquest div és el contingut i la identificació d'aquesta és peu de pàgina. I com el seu nom ho indica, quan es té un atribut ID en HTML, per definició, ha d'identificar exclusivament un dels elements, una de les etiquetes a la pàgina. La responsabilitat recau totalment en vostè recordar que té un ID de capçalera ja. Vostè té un peu de pàgina. Vostè té un ID de contingut ja. L'equip no va a entendre el que és una identificació disponible per a vostè, de manera que accidentalment podria donar una identificació 2 etiquetes de capçalera, i això seria un error. Cal tenir en compte el que han creat, però una vegada que hagis fet això fixa't en el que podem fer aquí. Ara pot especificar en la meva etiqueta d'estil en la part superior o equivalentment en el meu arxiu CSS, si jo encara estava fent servir aquesta versió, Puc dir # header, i és el que vol dir que qualsevol etiqueta en aquesta pàgina web té un ID de capçalera i #, només per convenció humana, representa l'ID. El signe de sostingut o la lliura signe representa identificació. Capçalera és el nom que li vaig donar. Això vol dir aplicar aquesta propietat CSS a qualsevol variable d'aquesta pàgina té un ID de capçalera. El mateix passa aquí. Aplicar aquesta propietat, que passa a ser el mateix, a qualsevol element amb identificador el contingut, i després aquí adonar que tinc una mica més de luxe amb peu de pàgina. Qualsevol element el ID és peu de pàgina, de la qual no pot ser només un, per definició, seguir endavant i fer la seva mida de font més petit, seva font en negreta pes, el seu marge de 20 píxels. Què significa això? És només un marge a la part superior, inferior, esquerra i el de dreta. Això vol donar-me un marge de 20-píxel invisible al seu voltant només per empènyer tota la resta fora una mica, que es pot fer en Word, Microsoft Word o Pages o similar. I després alinear text central. Anem a veure el resultat final, i després anem a tornar fins el fragment restant de CSS allà. Aquesta és la versió 4, l'últim dels exemples de recerca, i és molt més sexy, molt. Ara, per ser justos, només Google "font generador google logo". I això em va permetre crear un GIF, un format d'imatge, que sembla que no. De fet, vostè pot fer això també. Tenim "google logo generador fonts." A veure si podem fer això. Bé, crec que aquest és el lloc web que he fet servir. Podem dir Ec 10, per exemple, i fer que el seu propi. Vostè pot jugar amb això tot el dia i després a la dreta feu clic i després descarregar el GIF real, que és tot el que vaig fer. I de fet, és per això que en el meu HTML, recordar, aquí Jo tenia una etiqueta d'imatge, que vam veure breument la setmana passada la font és logo.gif. I el que de nou va ser la motivació per tenir aquest atribut alt, aquest atribut alternativa? Si. [Resposta dels estudiants inaudible] Bé, de manera que 2 raons realment, si el navegador no pot aixecar la imatge perquè vostè té una connexió de xarxa lenta o la imatge està danyada o alguna cosa així com que almenys l'ésser humà pot veure "CS50 recerca" i després també per raons d'accessibilitat. Si vostè té un usuari que és cec i utilitza un lector de pantalla de manera que, òbviament, no pot veure les imatges almenys poden escoltar el text si el seu ordinador se'ls parla. En general, aquesta és la millor pràctica quan es tracta de l'accessibilitat de les pàgines perquè els usuaris fins i tot en aquesta situació pot sentir o veure, per dir-ho, què és el que està a la seva pàgina. Hi ha una altra cosa que el vaig fer aquí que és una mica interessant, i veurem més sobre això en conjunt de problemes 7 a través d'un dels curts dirigits per un dels companys docents. Però # contingut es refereix a l'etiqueta amb identificador el contingut, però després hi ha un espai en blanc, i després hi ha la paraula d'entrada. Bé, l'interessant de CSS és que es pot es refereixen a les etiquetes en una pàgina classificar de forma jeràrquica, i el que això significa fragment de CSS és trobar l'etiqueta amb identificador el contingut, i després aplicar les següents propietats a totes les etiquetes d'entrada que són descendents de contingut, és a dir que s'aplica sagnia dins d'ella. Indentació, de nou, només és important per a l'equip, no a la humana, però per convenció guió coses a mesura que aprofundim en una pàgina, així que això significa aplicar un marge de 5 píxels a qualsevol element d'entrada que en algun lloc dins o niat dins  l'element el ID és el contingut. Qui fa això s'aplica? Bé, en realitat hi ha només aquests 2 nois aquí. Tingueu en compte que a l'interior de la forma hi ha 2 entrades, ja que ha estat durant tots aquests exemples. Però cal notar que les 2 entrades succeeix que llisca per l'interior, encara que una mica profunda, un parell de capes de sangria, dins de l'etiqueta amb identificador el contingut. Què vol dir això? Si anem al navegador aquí es pot veure molt lleugerament- m'ho dius a mi apropar-que hi ha una mica de farciment entre el botó i entre el camp de text. Permetin-me temporalment apaga això. Deixa sortir el meu CSS, i em va deixar anar endavant i només canviar aquest marge de 5 píxels a 0 píxels. Deixa anar per davant i després i guardar l'arxiu, torni al motor de cerca i tornar a carregar i veure el centre de la pàgina. Tot es comprimeixen junts, i quan per primera vegada assotat aquest exemple fins Vaig pensar que es veia estúpid amb el camp de text i després en el botó immediatament sota. Volia coixinet ell una mica, així que va introduir marges. El que no farà a classe és anar a través de les diverses dotzenes CSS propietats que existeixen perquè, de nou, hi ha coses com la mida de font, pes de la font, marges, alinear el text, i una dotzena d'altres pocs, i li refereixen en conjunt de problemes 7 a diversos tutorials en línia i les referències que li permeten recollir aquestes coses. Però el que realment importa al final del dia és entendre com aquestes coses s'apliquen. Un cop més, si tenim l'estil dins de l'etiqueta dels quals pot anar als selectors, el tipus d'identificadors que especifiquen A qui desitja aplicar aquestes propietats, i després de posar les propietats com parell de valors clau separats per dos punts i va acabar amb un punt i coma, o es pot extreure de tot això i posar-ho en un arxiu CSS en si mateix. Molt bé, qualsevol pregunta sobre els conceptes o el gran quadre de CSS? Tu nou veurem més d'ell en pset 7, però seguirem en general bastant simple. No? Està bé. És hora que un llenguatge de programació real, i tornarem a una mica de CSS en forma d'un exemple. PHP és en realitat un llenguatge meravellosament accessible en què estigui sintàcticament gairebé equivalent a C. En altres paraules, si vostè sap C, ja saps PHP per a la major part, almenys sintàcticament, tot i que hi ha algunes noves característiques i alguns conceptes nous que haurem de mirar. No obstant això, per a la major part, ara que la transició de C a PHP la major part del nou material és realment en el panorama general, com s'utilitza un llenguatge de programa al web en lloc de en la línia d'ordres o en un missatge parpellejant, ja que hem estat fent fins ara. Com a referència, especialment amb pset 7 i el projecte final en endavant, s'aprofiten d'aquesta URL aquí si voleu llegir sobre les formalitats de PHP. De fet, és com un llibre de text en línia gratis amb eficàcia, i vostè també trobareu que el que és realment bo de PHP és que hi ha centenars de funcions que vénen amb el mateix, mentre que en C que no necessàriament tenen accés a més funcions que estaven a la biblioteca matemàtica, la biblioteca CS50. En PHP i un munt de llengües modernes, Python i Ruby, entre ells, , Tindrà accés a tantes funcions més, el que significa que has d'escriure molt menys codi, ja que pot estar dret sobre les espatlles dels altres que ja han escrit algunes coses per a tu. Fem un ràpid recorregut per la sintaxi de PHP i després escriure alguns exemples. El millor de PHP, abans que res, és que no hi ha funció principal. Per escriure un programa en PHP que acaba de començar a escriure codi, i vostè no s'ha de preocupar de principal. No hi ha int. No hi ha retorn. No hi ha argv, argc que es requereix quan s'escriu el programa. Més aviat pot simplement començar a escriure codi, i això és en part pel fet que PHP és el que s'anomena un llenguatge interpretat. C va ser compilat, i que va ser compilat en el sentit que s'iniciï amb el codi font, s'executa a través de Clang, que és un compilador, i, finalment, després d'una certa quantitat de passos que obtenir el codi objecte, 0s i 1s. PHP i Python i Ruby i Pearl i altres diferents tipus d'idiomes que no els compilar. No et vas a partir del codi font de 0s i 1s. Vostè acaba d'executar el codi font, i s'executa el codi font escrivint en un arxiu de text normal, acabat en. php en aquest cas en lloc de. c, i el que fa el programa en el seu ordinador s'interpreta literalment el codi línia per línia per línia. En altres paraules, en lloc d'escriure un programa i executar el programa directament en el seu lloc escriure un programa amb un arxiu amb extensió. php. A continuació, s'executa un programa anomenat php.exe, si estàs en Windows, PHP o simplement si estàs en Mac OS o Linux, i es proporciona com a entrada al programa PHP seu propi codi font, i el seu propòsit en la vida és llegir el seu codi de dalt a baix, d'esquerra a dreta, i fer el que he dit. Vegem el que això voldrà dir sintàcticament. En PHP tenim condicions. Aquesta diapositiva és idèntic al que vam veure a la setmana 1 perquè sintàcticament condicions, IFS i IFS else i else en PHP exactament així. Quan es tracta d'expressions booleanes que seran exactament així. Quan es tracta de Anding coses junts com booleans que serà exactament així. Canvia el mateix aspecte, i vostè té el benefici afegit en PHP que els interruptors en C només podia encendre un char o int. No es podia encendre un valor de cadena. En PHP vostè pot realment tenir una expressió que és una variable el contingut és una cadena, i en realitat es pot fer la comparació de cadenes a la forma intuïtiva real, No punter comparació, per tal de decidir si fer cas i j o una altra cosa. Veurem que possiblement en poc temps. Loops massa meravellosament són els mateixos. Per bucles tenen una inicialització, una condició, i un cert nombre de canvis. Encara que també existeixen bucles en PHP. És bucles while també existeixen en PHP, i existeixen matrius en PHP, però aquí és on la sintaxi comença a ser una mica diferent, però els conceptes són els mateixos, i els conceptes realment són els mateixos com ho van ser en 0 Setmana amb Scratch. En primer lloc hi ha el signe $. Aquesta va ser una decisió de disseny en PHP de manera que qualsevol variable en PHP de disseny comença amb signe $. No hi ha més X, I, Z. És ara $ x, $ i, $ Z perquè sí. És una cosa a tenir en compte, i ara en el costat dret això és similar a una matriu, però estem usant claudàtors aquí. En PHP i JavaScript, ja que finalment veurà, per declarar una matriu de fer claudàtor obert i tancat claudàtor, i llavors vostè té una llista separada per comes de valors, ja sigui sencers o cadenes de caràcters, o el que vulguis, dins d'aquesta expressió hi. Ara, com fem alguna cosa com això en C? Quina és la sintaxi per declarar estàticament una matriu de nombres coneguts? Va ser claus, la diferència tan petita aquí, però tant en PHP i, finalment, que només utilitza JavaScript claudàtors, pel que realment l'únic detall interessant és el signe $ per al nom de la variable i també els claudàtors, i hi ha una cosa curiosa que s'ha omès també al costat de l'esquerra del signe =. El que cal que hem estat requerint des de fa setmanes? Si. [Resposta dels estudiants inaudible] La mida, de manera que no hi ha cap menció de la mida de la matriu. Francament, no hi ha menció de claudàtors a la banda esquerra del signe =, i el que més falta en la línia? Si. >> [Inaudible resposta dels estudiants] El tipus, així que el que és interessant en particular sobre PHP és que no és un llenguatge fortament tipat com C és, i això és inflexible en el sentit que cal dir char, ha de dir int, ha de dir flotador. Cada vegada que desitgi una variable que ha de dir-li al seu Clang quin tipus és. PHP és una mica mandrós. S'escriuen lliurement en el sentit que vostè pot tenir flotadors i caràcters i cadenes i INT i així successivament, però el propi idioma en realitat no importa el que vostè posa dins d'una variable. No ha d'informar per endavant quin tipus de dades va en una variable. És totalment de vostè, així que és agradable en què vostè no ha de preocupar tant sobre les dades a escriure i preocupant el que els seus arguments són i així successivament. Això també significa que, finalment, les funcions en PHP serà capaç de tornar o bé més d'un int el temps, i un cop que potser en tant van a tornar un bool, un valor lògic fals, per exemple, per significar que alguna cosa va sortir malament. Això ens dóna algunes Upsides, sinó que també ens farà per tipus de disseny una mica més fluix quan es tracta de tipus de dades. Què més cal tenir en compte aquí? Variables mirar com això, així que $ s = "hola, món". Aquesta és potser inferir a partir de l'exemple anterior, i tenim un altre tipus de bucle. Aquesta realitat ens veurem de tant en tant, ja que és bastant pràctic, construir un foreach. En aquest cas, el bucle foreach porta dins dels seus parèntesi 3 paraules típicament, $ Una cosa en primer lloc, que és el que vols array per iterar sobre els membres, llavors, literalment, la paraula clau com, a continuació, finalment, altre nom de variable que pots triar. Pot ser foo, bar, o element, i el que aquesta construcció no és si la matriu $ conté 10 elements en cada iteració d'aquest conjunt-ho sento, en cada iteració d'aquest bucle l'element variable anomenada serà actualitzada per ser el primer element de la matriu, llavors el segon element de la matriu, a continuació, el tercer element de la matriu, evitant així la necessitat per fer el suport de notació quadrada lleugerament molest i $ I a fi d'índex en una matriu. PHP fa tot aquest treball per vostè i en cada iteració només et lliura el següent element de la matriu sense que hagi de conèixer o preocupar-se per la seva posició d'índex numèric. I després, finalment, per ara, no hi ha una altra característica de PHP que serà enormement útil, especialment quan vam començar la programació al web, i que es coneix com una matriu associativa. Els arranjaments que coneixem fins ara com de 20 segons fa i durant els últims 8 setmanes es indexat numèricament arrays, tipus d'arranjaments tradicionals, on els índexs són sencers, 0, 1, 2, tot el camí cap amunt. Les matrius associatives són molt més poderosos. Et permeten tenir claus arbitràries, índexs arbitraris i valors arbitraris. Mentre que en una matriu tradicional és 0, 1, 2, en una matriu associativa que pot tenir un índex o una tecla de foo el valor és bar. A continuació, pot tenir una altra clau el nom és baz i el valor és qux. Un cop més, estúpids informàtics genèrics noms de les variables aquí, però el punt és que aquesta sèrie no té suport 0 o suport 1. Està vegada tindrà suport foo i baz suport. Això és molt més versàtil en què serem capaços d'associar paraules amb altres paraules, les claus amb valors completament arbitrària, i serem capaços d'obtenir aquests valors en el temps constant per sota de la caputxa del que és un array associatiu realment és una taula hash. Recordem que una taula hash li permet posar en alguna entrada com posar en la paraula David si desitja inserir David en una mena de diccionari, i després tornar algun valor típicament. En el cas de l'ortografia, veritable o falsa. David o qualsevol paraula que estigui o no és al diccionari. Una matriu associativa és en realitat una taula hash, però és una encarnació d'usuari molt més amigable d'aquesta. Com veurem, això permetrà que fem algunes coses molt, molt fàcilment. Fem una ullada a alguns bàsics PHP exemples i veure el que podem fer amb aquest llenguatge. Deixin-me seguir endavant i obrir en el nostre directori d'origen avui un arxiu anomenat hello1.php. Aquest arxiu és més un comentari del que és el codi real, així que realment em tregui tots els comentaris a l'arxiu i presentar a vostè potser el programa més simple PHP aquí. 5 línies, i alguns dels que són els espais en blanc, així notar algunes diferències clau aquí. L'arxiu es diu hello1.php. La primera línia, però, és , significa que és per a mi codi PHP. Anem a veure com manejar això. Vaig a tornar a la meva finestra de terminal aquí. Vaig a entrar al meu directori PHP. Recordeu que tenim un munt d'arxius, el primer dels quals és hello.php. Deixin-me seguir endavant i executar aquest hello1.php, entrar. Permís denegat. Bé. Com ens hem fixat aquest tipus de coses en el passat? Què és això? >> [Resposta dels estudiants inaudible] Necessitem llegir i escriure, però em deixa fer ls-l. Recordi que aquesta sortida una mica críptica qual hello1 sembla ser de lectura i escriptura per mi però llegible per tots els altres. Resulta que aquest fet no és un pas en la direcció correcta. La diferència, de nou, amb un llenguatge interpretat és que no s'executi el programa directament. En el seu lloc, iniciar un intèrpret i lliurar el codi que has escrit perquè pugui interpretar línia per línia. En aquest cas, l'intèrpret o el programa que s'utilitza voleu executar és, literalment, anomenat PHP. En algun lloc d'aquest disc dur de la màquina hi ha un programa algú va escriure anomenat PHP, o en Windows php.exe. El que vaig a fer aquí és que vaig a córrer realment PHP però el dóna com un argument de línia d'ordres el codi que he escrit, i després vaig a allunyar la imatge i prem enter. S'executa el meu programa per a mi, de dalt a baix, d'esquerra a dreta. Deixin-me seguir endavant i obrir una variació lleu d'això. En hello2.php avís que això també és majoritàriament comentaris, així que anem a desfer-me d'ells com una distracció, i el que és clarament diferent ara sobre aquest arxiu? Hi ha una nova línia, una mica críptica a la part superior. A la línia 1 és #! / Bin / php. Bin és una convenció a Linux i Mac OS per binaris, de manera que / bin significa que és una carpeta que conté un munt d'arxius binaris que es programa, una de les quals és PHP. El #! És anomenat shebang, que és la forma més ràpida de dir-ho, i el que significa aquest és que quan s'executa aquest programa ara hi ha una al · lusió a la part superior de l'arxiu que li diu a l'ordinador quin intèrpret d'usar. Es posa una mica molest si has de dir als seus usuaris i clients "Hey, escrivim aquest programa anomenat hello1.php". Tot el que has de fer és córrer PHP per sempre i després el nom d'aquest programa. Francament, no seria més que agradable per córrer hello1.php, i, de fet, podem si fem el següent. Deixin-me seguir endavant i fer ls-l, i l'avís a hello2 encara és només de lectura i escriptura i després llegir llegir, així que encara no puc fer això, hello2.php. Però hem introduït aquesta molt breument l'última vegada, la comanda chmod. Si ho faig chmod a + x, el que significa tot executabilitat plus, i després hello2.php i després fer ls-l de nou notar el que ha canviat. Un, Linux em mostra el nom del fitxer en verd per transmetre la idea que és executable, però que és més important, a la banda esquerra compte que el bit que representa per x executable ha estat fixada. El que això significa és ara puc córrer ./hello2.php com de costum, prem enter, ia causa de tot l'assumpte a la part superior de l'arxiu que hi ha una pista, un cop més, que diu a Linux utilitzar aquest intèrpret per executar aquest comandament. No et preocupis per fer que la persona realment escriure. I el que és bo és que és una cosa irrellevant als meus clients o els meus amics idioma que vaig escriure aquest programa, així que em pot seguir endavant amb mv i canviar el nom d'aquesta cosa hello2, per exemple. I ara si m'ho ./hello2 i allunyar meu programa segueix funcionant. Aquestes extensions d'arxiu són una convenció humana que cal per a alguna cosa com Clang i fer de buscar. Però per a PHP, jo podria anomenar això qualsevol cosa extensió d'arxiu que vull. Podia enganyar al món fent-li creure que sóc realment bo en Ruby, i jo podria escriure hello2.rb i després executar-lo, i llest, ara tinc la versió de Ruby, que és una completa mentida. No obstant això, les extensions dels arxius no tenen sentit si l'arxiu és executable i té aquesta pista especial a la part superior de l'arxiu. Ara, en un apart, permetin-me mostrar ràpidament la versió 3, que és una mena de truc útil conèixer. En hello3 vaig fer una cosa una mica malament que vaig a actualitzar la línia de codi font. En la versió 3, és que en la majoria de sistemes Linux hi ha un programa anomenat env per al medi ambient, i el que pots fer aquí és que si vostè no té cap idea d'on PHP està instal · lat al disc dur local, ja que en realitat podria variar en funció de l'ordinador que algú està fent servir, env només diu executi env, que es troba en la majoria dels sistemes, i esbrinar on PHP és. Només un truc comú pel que no s'ha de preocupar de saber que un programa és. Però si t'importa per saber on és un programa i no s'ha atès fins ara pot utilitzar la comanda que. Permetin-me fer un zoom cap a fora i quin tipus php, i noti que em diu que és en realitat en usr / bin / php. És una espècie de mentida. També en sortida. Es m'acaba de mostrar el primer cop. Si t'has preguntat on Clang és a dir, que Clang, que està en usr / bin / clang, de fer, usr / bin / make, i el que això significa és que tot aquest temps que podria haver estat escrivint usr / bin / clang Intro per executar Clang, però és una mica tediós per fer-ho, de manera que algunes carpetes com usr / bin bin i se suposa que són valors predeterminats de manera que l'equip sap de mirar en ells per a vostè. Qualsevol pregunta sobre com escriure un super, super senzill programa Hello World en PHP i després l'executa? Perquè ara començarem a introduir la sintaxi més convincents. Molt bé, aquí anem. Aquests programes que hem vist a tots ells abans. Si obro, per exemple, farem beer1.php, no anirem a través de diverses versions d'això, però el que vaig fer Em vaig asseure i va vessar o es converteixen el meu codi C per al codi PHP aquí. La major part de la part superior de l'arxiu és comentaris aquí. Resulta que hi ha una nova funció que necessitem anomenada readline. GetString, el record, des de la setmana 0 en endavant va ser una cosa CS50. PHP ve amb el seu propi fàcil d'usar funció anomenada readline que pren un argument que especifica l'indicador que vol mostrar a l'usuari, i fa el que readline es retorna tot el que l'usuari escriu polz En aquest cas, estic declarant una variable anomenada $ n. Estic emmagatzemant-hi el valor de retorn de readline després de preguntar a l'usuari amb aquesta cadena. Simplement còpia de seguretat, per executar realment aquesta cosa, deixa anar per davant i executar beer1.php php. Quantes ampolles hi haurà? Anem a fer aquesta vegada 2. Retorn. Això és tot. El programa és funcionalment idèntica a la versió C de setmanes enrere. Però sintàcticament anem a veure el que és diferent. Després d'obtenir un int partir de la notificació d'usuari que estic fent una mica de comprovació d'errors, i si n és menor que 1 vaig deixar i em imprimir un missatge no per a l'usuari i amb la sortida 1. Això també és una mica diferent.  En C, què vam fer? En C vam tornar 1. En PHP sortir amb 1, que, francament, crec que és una mica més intuïtiu perquè estàs literalment sortir del programa. Molt bé, i llavors aquí la cançó molesta és sintàcticament idèntic a excepció de la variable, de manera que aquí baix, en la línia 24 en endavant compte del meu bucle for és gairebé el mateix, però tinc $ davant i i n, i el que és també falta de la línia 26 que hem tingut en el passat quan es declara una variable i? No hi ha cap tipus. No és correcte dir que en PHP int. Simplement no cal fer això. La computadora, l'intèrpret PHP és prou intel · ligent per adonar-se que si es posa un nombre en $ I aquest serà tractat com un nombre per a tu. I aquí ens connecti $ i, $ i, $ i - 1. Tot això és el mateix, i llavors aquí fem una "Wow, això és molest" printf i després sortir (0). Un cop més, el menjar per emportar és que tot i que passarem relativament poc temps en PHP, sens dubte enfront del que vam fer a C, que és gairebé el mateix, i així ho farem avui i la setmana que ve i més enllà és realment centrar-se en algunes de les noves idees. Només per veure que una altra cosa es tradueix per sobre de C, Aquest va ser un programa super simple que vam fer a la Setmana 1 o 2 en cubs que un valor. Però l'interessant en el moment d'aquest programa és que introduir la noció d'una funció personalitzada escrit que nosaltres mateixos hem escrit. La sintaxi de PHP és gairebé el mateix. Aquí està el meu programa fins a la part superior. Noti un cop més absent és qualsevol noció de principal. Començo a escriure codi, i això és el que va a aconseguir executat per l'intèrpret. Puc imprimir x ara és 2, és de suposar. Llavors em diuen cubicar ... Llavors crida a la funció cub i passi $ x i assigni el valor retornat a $ x. Llavors em diuen que està en cubs, i després em diuen això, que és d'esperar direm que x és ara 8. La sintaxi de la funció en PHP és molt lleugerament diferent. Un cop més falta és el tipus de retorn. Un cop més falta és el tipus de retorn i també és el que falta un altre tipus? [Resposta dels estudiants inaudible] Bé, està bé, això és bo. Anem a tornar a això en un segon. No tenim, per exemple, int aquí. No tenim, per exemple, han int aquí perquè, de nou, en PHP simplement no és necessari i no ha de fer això, sinó que hi ha aquesta nova paraula clau es diu funció. En PHP és gairebé una mica més clar, perquè quan es desitja una funció que literalment diuen funció, li dones un nom i una llista separada per comes si algun dels seus arguments. No cal dir nul · la o alguna cosa així, i després de retorn és el mateix, $ A * a * $ $ a. El que també falta? Sammy assenyalem aquí. A la part superior de l'arxiu completament absent en PHP també és un prototip. Això també és per disseny. Idiomes i intèrprets com PHP són més intel · ligents que mai ho va ser C en els compiladors com Clang. Recordem que Clang, si no ho dic que existeix cub, si no ho dic que printf existeix com un prototip o amb un # include, bé, havia de cridar a vostè i ni tan sols compilar el codi. PHP i altres idiomes moderns són molt més intel · ligents quan es tracta d'això. Ells s'encarreguen de llegir a través de tot el codi i després criden a vostè només si es troba en cap part del cub. Tant se val si és galleda a la part inferior o la part superior o fins i tot en algun arxiu separat. Llenguatges PHP i similars són ara prou intel · ligent com per mirar cap endavant en tot considerant que abans per haver comès un error. On ens deixa això? Anem a fer un últim exemple aquí a les condicions, i si obro avís conditions2.php massa sintaxi aquí és gairebé el mateix. Estic usant readline en lloc de GetString, però aquesta línia és la mateixa que abans, "M'agradaria un enter per favor." Després, hi ha una condició si, una persona si, a continuació, una persona, però funcionalment aquest programa també és idèntic al que vam fer setmanes enrere, així que si em quedo això, php de Condiciones2, i li dono un nombre com 23 - Vaig triar un nombre positiu. Si li dono -1 vaig agafar un nombre negatiu. Si li dono 0 Jo a la veritat recollir 0. Llavors, qui es preocupa de tot això? Bé, un de la classe de diversió exercicis aquí almenys per a mi era anar cap enrere i veure la rapidesa amb què podria posar en pràctica pset 5, el conjunt de processadors faltes d'ortografia. Recordem que hi havia un arxiu anomenat speller.c, i hi havia un arxiu anomenat dictionary.c. El que jo vaig fer va ser una mica gastat uns minuts i em vaig convertir el codi C de codi PHP, i no anem a passar molt temps en Speller perquè igual que en el conjunt de processadors 5 vostè realment no necessita passen molt de temps en ortografia si mateix perquè la seva atenció estava en diccionari. Només cal dir que si vostè llegeix a través d'ortografia, aquest arxiu aquí, que és més o menys equivalent al codi C li va donar per pset 5. Acabo d'afegir una mica de $ en els llocs. He canviat alguns noms de funció si no existeix en PHP. Hi ha una cosa addicional aquí, preg_match, que és la forma una mica més elegant de fer alguna cosa, però anem a tornar a aquest temps. Però en fi, ortografia és gairebé idèntic, i si ens fixem en la part inferior el que finalment escup és això aquí, paraules mal escrites, les paraules en el diccionari, les paraules en el text. Molt bé, així que l'interessant ara és la següent. A la part superior del meu arxiu que estic requerint dictionary.php. Igual que C ha # include PHP permet una cosa anomenada requereixen que més o menys fa el mateix, requereixen un arxiu anomenat dictionary.php. Com puc anar sobre l'aplicació pset 5? Deixin-me seguir endavant i obrir un arxiu aquí. Permetin-me prendre una petita referència aquí. I em deixa crear un nou arxiu i començar a trucar a aquest dictionary.php. Permetin-me dir-ho d'una altra carpeta perquè puguem fer això en viu. I ara vaig a fer un zoom in Vaig a començar meu arxiu PHP amb suport obert php tancat suport. I llavors aquí hi ha algunes funcions que es necessiten per posar en pràctica per pset 5, així que començarem a aplicar algunes de les persones, així que la funció de verificació, que va haver de prendre una paraula com a argument. Farem això i tornar-hi en un moment. Es carrega la funció, que va tenir en el que com un argument? Diccionari, per la qual cosa l'arxiu que jo realment volia carregar. Hi havia mida de la funció, que no pren cap argument i no hi havia funció, què era allò altre? Unload, que no pren cap argument tampoc. Aquestes són les 4 funcions que haurien d'aplicar ara en PHP, i el que vaig a fer és seguir endavant i fer-ho. Molts de vosaltres utilitza una taula hash en pset 5, així que vaig a seguir endavant i crear una taula hash en PHP. Fet. Això em dóna una taula hash. Bé, per què? Una, la variable es diu $ taula, només per evocar la idea d'una taula hash. Els claudàtors, però, recordar, representen què? Una matriu, però a una matriu PHP no ha de ser indexat numèricament. També poden ser matrius associatives, el que significa que vostè pot tenir claus arbitràries i valors. Igual que en pset 5, aquells de vostès que van fer implementacions taula hash probablement s'insereix la paraula i després s'insereix en una cadena de llistes enllaçades, o emmagatzemada en algun lloc del valor de veritat o alguna cosa per l'estil. D'alguna manera recorda el fet que la paraula hi era. Per ara, això serà la meva taula hash, i el que ara anar sobre l'aplicació de la funció de comprovació Només he de mirar dins d'aquesta taula hash i veure si una paraula hi és. El que vaig a fer és que vaig a dir si- diguem isset, que és una funció PHP que literalment vol dir és el conjunt de claus, així isset ($ taula [$ paraula], i si és així tornar true. Això és tot. Això és pset 5 en PHP. Bé, per ser justos, està bé. Else return false, de manera que no hi és. El que realment està passant aquí? Bé, si la taula de taula o hash aquí més general- és una matriu associativa que significa que pot indexar-hi amb una paraula com "paraula", i cal tornar algun valor. Som una espècie d'aconseguir un pas per davant de nosaltres mateixos. Seria una cosa bonica si en realitat carrega el primer arxiu, així que la càrrega no és tan simple, però m'ho dius a mi seguir endavant i batre  una implementació molt ràpida de la càrrega. Deixin-me seguir endavant i dir paraules Diccionari arxiu. La funció d'arxiu en PHP obre un arxiu i torna a vostè una gran varietat de totes les paraules en aquest arxiu, només els dóna a vostès. Aquest va ser un dolor massa gran, no? Ara foreach, aquesta és la nostra nova construcció, foreach ($ paraules es $ paraula). Aquest cicle començarà a iterar sobre les paraules de la matriu i assignar a la variable $ paraula cada paraula a l'arxiu des de la primera a la segona a la tercera a la quarta tot el camí així que no has de fer el molest [i] notació i similars. I el que estic simplement faràs per cadascuna d'aquestes paraules es el guardi a la meva taula d'indexació a la taula i després fent així perquè cal recordar que una paraula està al meu diccionari l'únic que realment hem de fer és una espècie de tornada una mica i dir aquesta paraula en la meva taula hash hi és, és cert. I si no hi és, no he de posar explícitament falsa, en cas contrari, hauria de posar fals per a totes les paraules possibles en l'univers. És suficient per a mi només per donar un valor d'índex en true si una paraula està en realitat en el meu taula hash. Ara, em vaig a tallar un parell de corbes aquí que vaig a agitar les mans menys per ara, però ara la funció de càrrega es realitza. Em càrrega totes les paraules a l'arxiu en una matriu. I iterar sobre aquesta matriu, i per a cada paraula de la matriu El connecto al meu taula hash amb una línia de codi. Això és divertit. Saps com es pot implementar mida ara? Doncs bé, la mida és sempre molt fàcil, per ser justos. Aquí només puc fer recompte de tornar de taula. Això és bastant fàcil també, compti el nombre de coses a la taula. Això és en realitat una mica no és el més eficient. Probablement hauria de tenir una mida variable anomenada perquè el puguem fer en temps constant, però això és bastant fàcil. Ah, i després descàrrega, si de veritat volem ser anal aquí podem dir que és com es descarrega alguna cosa. Vostè acaba de fixar una variable igual a un conjunt buit, i es desfà de tot el que hi era. No hi ha necessitat de cridar lliure. Un cop més, he tallat alguns revolts, i em disculpo per conjunt de problemes assignant 5 potser al carrer, però si ara seguir endavant i executar això, Vaig a córrer en realitat la versió que vaig escriure amb antelació només perquè jo no he comès cap error de sintaxi que sigui. Deixin-me seguir endavant i executar corrector ortogràfic. L'ús és el mateix. Aquí hi ha un arxiu de diccionari que només conté la paraula foo. Aquí hi ha un arxiu de text que conté només foo bar. Anem a revisar l'ortografia d'això, així ortografia, utilitzant l'arxiu de diccionari a l'arxiu de text. Hi ha una paraula mal escrita, bar, i llest. Fet amb pset 5. Anem a prendre un descans de 5 minuts aquí, i anem a tornar i més en PHP. D'acord, estem de tornada. Farem-m'odies per un temps. Ara anem a veure realment si això no era un positiu l'aplicació real d'aquesta cosa en PHP. Per descomptat, ens va prendre 45 segons per implementar. Però seguirem endavant ara i manejar les coses. Deixin-me seguir endavant i executar una versió de C d'ortografia, i anem a córrer en un dels majors arxius, que és la Bíblia King James. I aquí és on anem a entrar a la nostra carpeta de C, Speller a King James la 5 ª. Una gran quantitat de paraules mal escrites. Molt bé, així que aquesta és la sortida que probablement es va fer encara si els temps són una mica diferents, si tens tot funcionant correctament, i el temps el que en total per corregir l'ortografia la Bíblia King James va ser 0,38 segons, així que prou bé amb aquesta implementació. Ara vaig a anar a la versió de PHP, que acaba d'escriure. Deixa córrer ortografia a King James. Vaja, ignorar aquest error. Estic al directori equivocat. Speller sobre King James la 5 ª. Ja està gairebé fet. Bé, l'astut observador s'adonarà que era més de 3 segons allà. Aquest és el veritable temps en funcionament. Resulta que es necessita temps per escopir gran quantitat de text fora causa de buffer temes, però de curta llarga història, que va ser de 3,15 segons de temps de màquina, temps de CPU, enfront del que era fa un moment? Igual que 0,3. Vull dir, és un ordre de magnitud més lent, així que ¿on són aquests desacceleració ridícul venint? Doncs bé, com ha estat el cas amb la majoria de les decisions de disseny que hem fet a la classe durant les últimes 9 setmanes gairebé sempre aquest equilibri. De vegades, només entre l'espai, de vegades entre l'espai i el temps, espai, temps i esforç de desenvolupament, i de fet aquí, encara ens estalviem una gran quantitat de temps, potser potencialment 10.20.30 hores el temps de desenvolupament de l'aplicació del corrector ortogràfic amb assots que en tan sols 45 segons amb aquest llenguatge el preu que es paga és que es tracta d'un ordre de magnitud més lent com a resultat, i aquest és generalment el cas amb la majoria de qualsevol llenguatge interpretat, PHP, Python, Ruby, Pearl o altres pel qual si vostè va a executar a través d'un intèrpret i que es llegeixi el codi línia per línia, de dalt a baix, d'esquerra a dreta, intermediari que es va a portar el seu temps propi, i el que se sent aquí en els 3 segons davant 0,3 segons és el fet que existeix aquest intermediari que s'ha d'interpretar literalment el nostre codi línia per línia, i Déu no ho vulgui, si vostè està dins d'un bucle amb un arxiu enorme que conté centenars de milers de paraules. Aquest recàrrec es va a sumar i sumar i sumar i sumar. Per obtenir una eina com aquesta probablement no sigui el millor llenguatge a utilitzar per a l'aplicació de un corrector ortogràfic si immediatesa és d'interès per als seus usuaris i per a tu. Però el luxe que tenim en aquest moment és si utilitzar un llenguatge com PHP o una gran quantitat de llenguatges interpretats en el context de la web, per al cas, que té el benefici que Internet és molt més lent que la majoria de les computadores. Vostè té una CPU GHz a l'equip, 2 GHz, potser fins i tot més en aquests dies. Però la realitat és que a Internet hi ha una gran quantitat de latència de manera que per a un navegador per parlar amb un servidor, tot i que vam veure la setmana passada que això és bastant ràpid, la meitat d'una mil · lèsima de segon més o menys, que també se suma, i si vostè està descarregant coses com una imatge o una foto de Facebook o rebre missatges instantanis a través de xerrada Facebook, Gchat o similars, tots d'aquests temps d'anada i tornada entre el navegador i el servidor d'inici de sumar, que fa que la seva elecció particular de la llengua en molts casos no és tan rellevant, pel que està molt bé utilitzar un llenguatge lleugerament més lent com PHP o Python o Ruby però per als que no són Upsides grans per a vostè i els seus col · legues i els seus amics, ja que pot posar en pràctica les coses així, molt més ràpid. I d'altra banda, té molt menys risc de certs defectes de seguretat. No hi ha punters en PHP. No hi ha cap error seg que fàcilment poden induir de la mateixa manera que es pugui en C. Amb C que està súper prop del maquinari. Amb llenguatges PHP i similars que ets una mena de nivell superior, per dir-ho, amb un munt de defenses entre vostè i el que realment està passant a l'interior de la màquina, i és només una compensació. Hem arribat al punt de tenir aquests més moderns llenguatges d'alt nivell com PHP causa de les lliçons apreses en llenguatges com PHP en C. Però si vostè no entén el que està passant sota la caputxa de tot aquest temps que sens dubte no pot prendre les decisions de disseny correctes, i, certament, quan es tracta de treballar en un lloc com Facebook o Google o en qualsevol d'aquests llocs que són cada vegada més jugant amb grans conjunts de dades fins i tot si vostè torna i es Premed i estem treballant amb algunes de les EM en alguns gran conjunt de dades amb pacients i metges i similars, usant les eines adequades és enormement atractiva perquè en cas contrari l'anàlisi d'un conjunt de dades pot trigar uns segons, o que, literalment, pot portar hores. Aquest és només un exemple, no per frustrar amb quant esforç més va ser en C, però que l'ajudaran a apreciar que quan es posen en pràctica alguna cosa en C que realment entenen, o en teoria, comprendre realment com tot el que és o hauria d'estar treballant, i vostè té un control gairebé complet sobre el que està passant sota la caputxa, i amb aquests llenguatges d'alt nivell vostè ha de renunciar a un major control de les persones que els inventats i estan subjectes més a les seves decisions de disseny que la teva. Però si donem per fet que el rendiment no és tan important en la web a causa d'aquestes altres qüestions, només les velocitats de xarxa són una mica més lent que la velocitat de CPU de tota manera, perquè puguem triar de permetre el luxe d'utilitzar un llenguatge una mica més lenta si els upsides són les coses que podem desenvolupar 10 vegades més ràpid o més. Anem a veure com podem començar a utilitzar això. Deixa anar a una carpeta entre els exemples d'avui en dia anomenat frosh.ims, i això va ser realment personalment motivat pel fet que la primera cosa Vaig escriure per al web anys enrere després de prendre CS50 CS51 i és un lloc web per al programa de missatges instantanis Frosh, esports intramurs de primer any, que en aquest moment es tractava de bastants anys enrere, que en el moment no hi havia lloc per al programa, tot i que hi havia una web, i en el seu lloc hi havia un vigilant a Wigglesworth com si volgués per registrar-se per el voleibol o el futbol o el que vostè podria omplir un full de paper. A continuació, es camina pel pati. A continuació, podria trucar a la seva porta i llisquen a la seva porta oa la mà al procurador un tros de paper amb el seu nom en ell, siguin o no vols ser el capità de l'equip, Quin esport et volia fer, i el que es polz dormitori Era una mena de camí de la vella escola de fer les coses, i això va ser una de les principals oportunitat per automatitzar una gran part d'aquest procés. Vostè només ha d'anar a la pàgina web. Escrius alguna cosa polz Vostè rep un correu electrònic de confirmació, i el braç, ja està fet. Aquesta va ser la primera cosa que vaig fer, encara que en un llenguatge anomenat Pearl, però és relativament fàcil de fer en PHP, i això és una mena de representant dels problemes que vostè pot començar a resoldre quan pot expressar programació i no haver de dependre de coses com els llocs de Google o Excel o eines que es lliuren a tu. Vostès tenen ara la capacitat de fer coses com aquesta. Aquesta és una versió super lleig d'un formulari, però utilitzarem per a l'inici de la conversa mitjançant el qual es tracta de més o menys quina és la forma que semblava anys enrere per a nosaltres perquè les persones en la web per inscriure en Frosh missatges instantanis. Ens preguntem per un nom, una casella de verificació per saber si són o no volia ser capità, home o dona, i llavors, què dormitori en què estaven, i llavors s'enviï aquest formulari. Vegem primer sota la caputxa en el codi HTML que representa aquesta pàgina web. Déjame entrar froshims0, i en un apart, per pset 7 estic donant per fet els directoris i carpetes dels que estic posant les coses polz Li guiarem a través de coses exactament on ha d'anar a l'aparell, les comandes de mod que ha de córrer, així que no et preocupis per tot el detalls estúpids sincronització des del primer moment aquí. Molt bé, aquí està froshims0.php. Permetin-me desplaçar-se cap avall, i el que és curiós aquí, s'indiquen fitxers PHP, però el que hi ha dins d'ella, amb claredat? És un munt d'HTML, PHP, i de fet els seus orígens realment eren per ser un llenguatge centrat en la web. Fa un moment l'utilitzem per posar en pràctica l'exemple de la cervesa, les condicions exemple, l'exemple hola, i això està bé. Podeu utilitzar PHP com a llenguatge de scripting on un script és en realitat la nomenclatura donada a un programa ràpid i brut o alguna cosa que s'escriu en un guió o més generalment un llenguatge interpretat. PHP és super útil per als que ja has vist amb quina rapidesa relativament podem avivar programes en PHP. Però va ser dissenyat realment per ser utilitzat per a la Web, i dissenyat per a la Web, en el sentit que notar aquí a la part superior de l'arxiu Començo amb