[Powered by Google Translate] [Teden 8] [David J Malan] [Harvard University] [To je CS50.] [CS50.TV] Dobrodošel nazaj. To je CS50, in to je začetek tedna 8. Nekaj ​​možnosti je ta teden Med njimi je ta pogovor tukaj, na katerem bodo nekaj hrane je treba vročiti. Za več podrobnosti si oglejte diapozitive, ki so na spletu. In še en dogodek, je ta teden z lastnim Thomas Carriero. On je eden od nekdanjih sodelavcev učnih CS50 za glavo, ki je zdaj na Dropbox, in on je tisti, ki nas je zasvojen z veš kaj, tako da če hočeš več tega glavo na svojem govoru danes popoldne za Dropbox in še več. CS50 kosilo je ta petek. Ali se nam pridružite, če ste lahko, 1:15, kot ponavadi, na ogenj in led. In zdaj smo se potopite v nekaj, kar ti seminarji. Naši CS50 Seminarji, pozive, so te neobvezne razredi pod vodstvom učnih štipendistov Tečaj in sodelavci in prijatelji seveda, Ljudje iz skupine na univerzi imenuje ABCD, ki je skupino tehnofili na univerzi, kot tudi skupina imenuje HCS, Harvard Computer Society, študenti, ki so prav tako zainteresirani za računalništvo. Roster Letošnji seminarji tudi seminarje na Android in iOS in JavaScript in PHP, Unix, Vim, in še več, da zavedaš, da ti seminarji prihajajo. Če želite RSVP za katerega koli od njih glavo na tem URL-ju tam. Nato bomo objavili na spletni strani seveda na čase in kraje, ko so zaključene. Ampak vem, tam je vredno 5 letošnji predhodnih seminarjev na voljo na spletu, od katerih so mnogi še vedno zelo veliko toka v smislu tehnologije, boste morda se rad igral z za vaše končnih projektov, tako da je za nekatere glavo na voljo video posnetki njih. CSS, tiste, ki so seznanjeni s CSS že Kaj je na kratko? Kaj je CSS? To je Cascading Style Sheets, in kaj to pomeni? Kaj naj bi to naredil za nas, CSS? V redu, dajmo se ogreje z lažjim 1, HTML hypertext markup jezika. Kaj naj bi to naredil za nas? Kogarkoli? To je že res nerodno temi vprašanji. HTML hypertext markup language. Ja? Ne? [Neslišno študentski odziv] Dobro, dobro, to nam omogoča, da označite besedilo za prikaz v spletnem brskalniku. To ni programski jezik. To je res označevalni jezik, kar pomeni, da navodilo, kako brskalnik prikaže informacije, zato najpreprostejši inkarnacijo to, kot smo videli je nekaj super enostavno, kot boldfacing, oklepaj b zaprti oklepaj pravi da to besedilo krepko, in to je pravzaprav le ena od mnogih načinov , v katerem lahko storimo, da, in res, te dni boljši pristop da stylizing vašo spletno stran, tako da se stvari krepko in ležeče in osredotočen in utemeljiti in podobno, se ne izvaja prek oznake HTML sami ampak s tehniko, imenovano CSS, kaskadnih slogov. To je jezik zase. To tudi ni programski jezik, ampak, vsi, to je Dan, ki ohranja nam pridružite še danes. Nekatere tehnične težave. Ni problem. CSS nam omogoča, da Stilizovati stran z vzpostavitvijo tako imenovane lastnosti, tako da je lahko pogled na to s pomočjo nekaterih osnovnih primerov. Naj gredo v aparat danes. Imam izvorno 8 ponedeljek imenik tukaj, in jaz grem v mapi CSS, kjer imamo cel kup datotek, ki čakajo na nas tukaj, in v tej mapi imamo, na primer, search0.html v zadnjem času. Zdaj, opozarjajo s search0 smo odšli na to opombo z neke vrste uporabo Google ali res samo sprednji konec za to je teden dni nazaj, in ugotovili, da smo imeli nekaj novih oznak tam. Imeli smo h1 za velik, krepko naslovom, obrazec, ki nam je omogočilo, da bi dejansko imeli HTML obrazec za vnos uporabnika. Tožba, kakšen je bil pomen akcijskega atributa na oznako HTML obliki? Kakšen je bil pomen tega, ukrepanje? Pravkar bom naredil danes. Akcija je kraj, kjer se bo obrazec je treba predložiti. Dejstvo, da je ta pravi action = "google.com / search" pomeni, da ko uporabnik klikne gumb za pošiljanje ali enakovredno ne glede na obliko polja se izpolnijo se bodo ne pošlje na naš strežnik ali naše naprave, temveč za to določen URL na Googlu. In način, da bo uporaba pozval dobil, in se, za zdaj, je samo tehnika za posredovanje informacij skupaj na spletni strežnik prek URL-ja, tako da je na hitro pogledamo nazaj, kako to deluje. Obvestilo, da je vložek, katerega ime je q katerih tip je besedilo in nato drugi vhod tipa predloži katerih vrednost je CS50 iskanje, in seveda, če bomo odprli to datoteko tukaj, search0.html, to je super preprosta oblika, in če iščem nekaj podobnega računalništvu in nato pritisnite tipko Enter ali kliknite na CS50 Iskanje opazite, da kaj se zgodi, je po prihodu v Googlu Sem izrecno pristal na tem naslovu na vrhu, google.com / search q =? računalnik + znanost, in računalništvo je očitno tisto, kar sem vtipka + Pomeni samo, da je, kjer je presledek, in je to storjeno z brskalnikom samo, da se prepričajte, da ni zmedenost in prazen prostor v dejanski URL. In potem q, seveda, je parameter ime. Nismo videli, kako smo, programer, lahko dejansko dostop q še. Domnevamo lahko, da Google ve, kaj storiti s to tukaj, ampak bomo prišli tja pravočasno danes. Ampak, dovolite mi, da si namesto na search1.html, ki izgleda nekoliko drugače, saj sem se odločila, da je bila ta oblika tukaj samo malo čudno. Mislim, da je v zgornjem levem kotu. Tam je res ni estetika z njim, zato želim to Stilizovati malo več, kot so Google, čigar spletna stran, odpoklic, čeprav morda ne boste ga obiščete, ki pogosto izgleda tako danes na noč čarovnic. Če bomo namesto tega odprli različica 1 te datoteke, iskanje 1.html, sem jo na sredino. Še vedno zelo grdo, ampak vsaj zdaj sem se začela nadzirati estetiko tej strani ne samo označevanje spremljanje. Oglejmo si na iskanje 1, in tam je res samo ena razlika tukaj, ki lahko skoči ven na vas, ali pa tudi ne, kaj pa je ena vrstica ali košček razlike? Tam je ta stil lastnost, da se izkaže, da je v HTML večina elementov, večina oznake so slog atribut na njih, in znotraj tega stila atributa je naveden niz in ki je navedena niz je CSS. Vi lahko postavite kaskadno slog stanja tam ki jih je opredelila kot nepremičnino ime sledi dvopičje sledi vrednost. To je neke vrste nesrečnih odločitev projektiranja pred nekaj leti CSS je, da je jezik zase, ampak sintaktično je zelo drugačen od HTML. V tem primeru vidimo, da je notranjost moje spletne strani, ki je napisana v HTML, Imam CSS znotraj teh ponudb, in konvencija za CSS je, da imate vse, kar se imenuje lastnost, ki ji sledi, spet, debelega črevesa, sledi vrednost teh nepremičnin, tako da ni enačaj. Ni nobenih dodatnih narekovajev. To je samo to dvopičji ločen ključna vrednota par, in besedilo linija počne točno tisto, kar piše. To uskladi besedilo v telo strani, ki je res poguma strani, v centru. Ok, končni rezultat pa, da je jasno, je to. Ni vse, da bolj seksi, ampak vsaj je bilo na sredini in malo več kot pravi Google. Kaj pa, če bi namesto tega odprla različico 2 tega in poudarjajo, dol novo oznako v celoti? Zdaj v glavi moji strani, ki je prej imel le oznaka, ki v vseh prejšnjih primerih? Prav tako je to naslov. Pred nekaj trenutki glavo tag videti takole. Zdaj, namesto da ima slog oznake notranjosti njo, in tudi to, se opravičujem, sintaktično izgleda zelo razlikuje od HTML, vendar se navadiš nanj, pri čemer notranjost slog oznake Sedaj lahko dejavnik, kaj je bilo pred nekaj trenutki atribut, slog atribut, in sem lahko dal na sam vrh moji strani. Zakaj? No, to je korak k čiščenju stvari, podobno kot v pisni obliki C kodo mi bi včasih napisal funkcije za faktor od skupno delovanje. To je samo malo čistilo za začetek faktoringa od stvari, kot so estetika na enem mestu, kot pa da imajo vse Razasuti v vašem HTML. Tudi to ne, kaj pa pravi, čeprav je malo novega sintakse. Tole je selektor in telo pomeni le, da izberete element telesa in uporabljajo naslednje lastnosti z njo. No, hotel je popolnoma enak. Za dobro mero sem dodal podpičje na koncu, kar kaže, da je konvencija, in sem zavit vso to lastnost v zavitih oklepajih, ker sem dejansko imajo različne stvari tukaj. Lahko bi rekla kaj takega dejansko barvo: modra; Zdaj tudi to ne bo korak v smeri kaj vse to lepše, če pa sem zdaj šla nazaj na različico 2 sem zdaj vsaj na moje telo Stran je besedilo vse modro. Gumb ostane enak, ker je to vhod. To ni čisto besedilo. Ampak vse ostalo, da je besedilo, kot CS50 Search do vrha, je v modri barvi dejstvo. Še enkrat, vse kar smo storili, je zdaj odstraniti iz telesa oznako, obvestilo, slog atribut, mi pa smo ga izoblikoval tukaj. To ni velik napredek, ampak če bomo to še korak dlje opazili, kaj lahko naredimo v tej tretji različici tukaj. V search3.html spletna stran je skoraj identičen razen za tisto novo oznako zdaj? Link, tako da se ta ne preveč posrečeno imenuje ker si ne povezuje v smislu klikniti hiperpovezave. Namesto, da si neke vrste početje enakovredno vključujejo v C # pri čemer link tag z href atribut in rel atribut pravi, pojdi in kopijo prilepite vsebino v datoteki z imenom search3.css tukaj, v bistvu. To ni čisto naredil, ampak to je duh tega. Pravi, da gre odprto datoteko, search3.css, in ga obravnavajo, kot da bi si jo vnesli tukaj, v glavi strani tako kot sem v prejšnjem primeru. Search3.css, medtem, je zelo preprosta. Je res samo vsebuje točno to, kar je pred nekaj trenutki v stilu oznako, vendar sem izoblikoval ga tukaj v svojo datoteko. Čeprav nismo porabili veliko časa sploh v HTML ali web programiranje samo intuitivno, kaj je motivacija, morda za faktoring iz ta majhen delček še CSS v svojo datoteko in ga nato tudi s to oznako povezava tukaj? [Neslišno študentski odziv] Ok, to je lažje brati v smislu, da imate v CSS CSS datoteko. Imaš svoj HTML v datoteko HTML, tako da je bolj berljivo v tem smislu. Kaj drugega bi lahko izsiljevala? Ja. [Neslišno študentski odziv] Ja, tako da lahko tudi že velikokrat, tako da zdaj delamo to Osnovni primeri s posameznih datotek, ampak predvidevam, da ste dejansko pripravi pravi spletni strani, kot si bodo za pset 7 ali vaš končni projekt morda, in če želite imeti več spletnih strani, kot je vsekakor značilna za dejanska Wide Web svetovni, in da bi bilo nekako hromi da so za kopiranje in lepljenje isto modro barvo in enako besedilo poravnano center, v vsakem od teh strani. Namesto tega je bolj smiselno, da faktor ven, tako kot smo naredili v C z datoteko. h, ga v enem osrednjem mestu, v tem primeru search3.css in počakajte, da vse datoteke v vašo spletno stran, da bi dejansko tudi to datoteko s pomočjo te oznake tukaj v vrstico 16. Kot je značilno, smo začeli z različico 0, katere vrste dela vendar ni nujno najboljši, in z vsakim korakom, iskanje 1, iskanje 2, 3 in zdaj iskanje smo sprejeti teh baby korake proti modelov, ki so nekoliko čistejši in bolj pripravljalni za bolj zapletene strani, ki bi lahko počnemo po cesti. Naj odprla še zadnji primer tukaj samo za prikaz še bolj stiliziran stran, ampak najprej poglejmo HTML. To je search4.html in opazil, da je strukturno skoraj enako razen za uvedbo nove oznake, div. Div je oznaka, ki uvaja razmejitev strani. Si lahko zamislite, da je to nevidno pravokotnika. Ta vrsta ustvarja plasti površine v spletni da lahko Stilizovati naenkrat. Kar sem tukaj naredil, je, kot sledi. Znotraj mojega telesa oznako, ki je bil tam ves čas, Pravim, da ustvarite delitev strani tukaj preko linije 45 do 47, kar pomeni, da v bistvu mi nevidni pravokotnik na vrhu strani. Potem pa daj mi še eno pravokotnik, čeprav je nevidna, ki je nižja, in ga označiti z imenom vsebino, nato pa na koncu, dajte mi 1/3 delitev strani na dnu imenovano ID. Bomo videli, zakaj sem to storil vsak trenutek, vendar konceptualno imam glavo delitev. Imam vsebine delitev in imam noge delitev strani čeprav so to samo v oznakami. Uporabnik ne bo videl 3 pravokotnike, ampak nekako strukturno tam v ozadju oni so dejansko prisotne. Torej, koga briga? Zakaj pravzaprav to? Vse ostalo na strani je enaka kot smo videli prej. Tukaj je moja obliki. Tu je moj prispevek, moj prispevek, prelom vrstice in tako naprej. Tukaj je slika, čeprav, tako da bomo videli, kje je to prišlo v trenutku. Tukaj je noga, ki je nov, samo zato, ker sem želel, da uvede nekaj več vsebin tukaj. Če bomo opazili, da se pomaknete navzgor ID te div je glava. Identifikacijska tega div je vsebina, in ID ta je nogo. In kot že ime pove, če imate osebno lastnost v HTML, po definiciji mora enolično identifikacijo eden izmed elementov, ena od oznak na vaši strani. Breme je popolnoma na vas, da se spomnite, da imate v glavi že ID. Imate nogo. Imate že Content ID. Računalnik ne bo ugotoviti, kaj je na voljo številka je za vas, tako da bi lahko po nesreči dal 2 tags ID za glavo, in da bo ravno narobe. Imate v mislih to, kar ste ustvarili, ampak ko ste storili to obvestilo, kaj lahko naredimo tukaj. Zdaj lahko določite v mojem stilu oznako na vrhu ali enakovredno v datoteki CSS, če sem še vedno uporabljajo to različico, Lahko rečem # glavo, in kaj to pomeni, da ne glede na oznako V tej spletni strani ima ID za glavo in #, samo zaradi človeške konvencije, zastopa ID. Močno znak ali lojtra predstavlja ID. Glava je ime, ki sem ga dal. To pomeni, da uporablja nepremičnino CSS da ne glede na oznako na tej strani nosi ID glavo. Enako se ukvarjajo tukaj. Uporabi to lastnost, ki se zgodi, da je ista, za vsak sestavni del ID katerih je vsebina, nato pa dol Opazili sem malo Ljubitelj z nogo. Vsak element, katerega številka je noga, ki lahko obstaja samo ena po definiciji iti naprej in da je njegova velikost črk manjša, njegova teža pisavo krepko, 20 pik je stopnja. Kaj to pomeni? To je le stopnja na vrhu, na dnu, levo in desno. To pomeni, da mi 20-pixel nevidni kapital okoli njega Samo za potiskanje vse ostalo od nje malo, kot lahko naredite v Wordu, Microsoft Word ali spletnih strani in podobno. In potem besedilo uskladiti center. Poglejmo na končni rezultat, potem pa se bomo vrnili do edino preostalo odrezek CSS tam. To je različica 4, naš zadnji za iskanje primerov, in to je veliko, veliko bolj seksi. Zdaj, v poštenosti, sem Googled "Google generator pisave logotip." In to mi je omogočila ustvarjanje GIF, slika obliko, ki izgleda kot da je tam. V bistvu, lahko to storite tudi. Imamo "Google pisave logo generator." Poglejmo, če lahko to naredimo. V redu, mislim, da je na spletni strani sem. Lahko rečemo, ES 10, na primer, in da jim sami. Igrate lahko s tem ves dan in nato z desno kliknite nanjo in nato naložite dejansko GIF, ki je vse, kar sem storil. In res, zato v mojem HTML spomnim, sem Imel sem oznako slike, ki smo jih videli na kratko prejšnji teden , katerega vir je logo.gif. In kaj je še bil razlog za to imajo atribut ALT, ta alternativa atribut? Ja. [Neslišno študentski odziv] Dobro, torej 2 razlogi res, če brskalnik ne more dvigniti sliko ker imate počasno povezavo z omrežjem, ali je slika poškodovana ali kaj podobnega, vsaj lahko človeško glejte "CS50 iskanje" , nato pa tudi zaradi dostopnosti. Če imate uporabnika, ki je slep in uporabljate bralnik zaslona in zato seveda ne more videti slik, ki jih lahko vsaj slišite besedilo, če je njihov računalnik ga govori z njimi. Na splošno je to najboljša praksa, ko gre za dostopnosti strani tako, da lahko tudi uporabniki v tem primeru videli ali slišali, da se tako izrazim, kaj je to, da je na tvoji strani. Še ena stvar je, da sem tu kar je malo zanimiv, pa bomo videli več o tem v težave iz 7 preko ene od kratkih hlač pod vodstvom enega izmed učnih štipendistov. Toda # vsebina se nanaša na oznako ID katerih je vsebina, ampak potem je presledek, nato pa je beseda vhod. No, kaj je zanimivo CSS je, da lahko nanašajo na oznake na strani nekakšno hierarhično in kaj je ta odlomek pomočjo CSS je bil tablico ID katerih je vsebina, in nato uporabite naslednje lastnosti za vse vhodne oznake, ki so potomci vsebin, to je, da so zamaknjena notri. Zamik, še enkrat, je pomembno le, da računalnik, ne na človeka, vendar imajo po konvenciji smo alinea stvari, ko gremo globlje v stran, To pomeni, da veljajo meje v 5 pik za vse vhodni element da je nekje v notranjosti ali ugnezden znotraj  element, katerega številka je vsebina. Kdo je pa to nanaša? No, tam je pravzaprav le ti 2 fantje tukaj. Obvestilo, da je notranjost obliki obstaja 2 vhoda, kot je bilo v vseh teh primerih. Ampak obvestilo, da so ti 2 vhoda zgodi, da se v notranjosti ugnezdena, čeprav malo globlje, nekaj plasti zamika, Notranjost oznako, katere številka je vsebina. Kaj to pomeni? Če gremo v brskalniku, tu lahko vidite vedno tako malo- Naj povečavo, da je malo oblazinjenje med gumbom in med besedilno polje. Naj začasno Ugasnite. Naj grem do mojega CSS, in mi gredo naprej in tako spremenite stopnjo od 5 pik do 0 točk. Naj gredo naprej takrat in shranite datoteko, pojdite nazaj na iskalnik in osveži, in pazi na sredini strani. Vse, kar je dobil skupaj stisnjena, ko sem prvič stepeno ta primer navzgor Mislil sem, da je videti neumno z besedilno polje in nato gumb takoj pod njim. Želel sem pad je malo, zato sem predstavil marže. Kaj ne bo šlo v predavanju je šel skozi nekaj deset CSS lastnosti, ki obstajajo, ker, še enkrat, obstajajo stvari, kot so velikost črk, font teža, stopnja, besedilo uskladiti, in še nekaj deset drugih, in vam bomo sklicujejo na problem iz 7 različnih vaj spletne in reference, ki vam omogočajo, da poberem te stvari. Toda kaj je res pomembno ob koncu dneva je razumeti, kako se te stvari. Tudi, če imamo slog tag znotraj katerega Lahko greš selektorjev, vrsta identifikatorjev, ki določajo , za katere želite, da se te lastnosti, in potem daš lastnosti, kot para ključev vrednost ločeni z dvopičjem, nato pa se je končalo s podpičjem, ali lahko razporek vse to ven in ga dal v posebni datoteki CSS samo po sebi. V redu, na vsa vprašanja o konceptih ali velika slika CSS? Boste spet videli več od tega v pset 7, ampak bomo še naprej na splošno precej preprosto. Ne? V redu. To je čas za dejansko programskega jezika, in se vrnemo v malo CSS v obliki npr. PHP je pravzaprav nadvse dostopen jezik s tem da je sintaktično skoraj enaka C. Z drugimi besedami, če veste, C, veste, za večino del PHP, vsaj sintaktično, čeprav so nekatere nove funkcije in bomo nekaj novih konceptov moramo gledati. Toda za večino del, zdaj, ko smo prehod iz C v PHP večina novih stvari je res v veliko sliko, kako uporabiti jezik za program, na spletu, v nasprotju z v ukazni vrstici ali utripa hitro, kot smo počeli doslej. Za referenco, zlasti pset 7 in končnega projektnega dalje, Ne izkoristite ta URL tukaj, če želite prebrati gor na formalnosti PHP. To je dejansko všeč prost online učbenika učinkovito, in boste tudi ugotovili, da je tisto, kar res lepo PHP je, da obstaja na stotine funkcij, ki prihajajo z njim, ker je v C-ti niso nujno imeti dostop do Več funkcij kot so bili v matematiki knjižnice, CS50 knjižnica. V PHP in veliko modernih jezikov, Python in Ruby med njimi, boste dobili dostop do tako veliko več funkcij, kar pomeni, da boste dobili, da napišete veliko manj kode, saj lahko stojijo na ramenih drugih ljudi ki so že napisal nekaj stvari za vas. Oglejmo si kratko predstavitev skladnje PHP in napišite nekaj primerov. Kaj je lepo o PHP v prvi vrsti se ni glavna funkcija. Če želite napisati program v PHP ste ga pravkar začeli pisati kodo, in vam ni treba skrbeti za glavni. Ni int. Ni vrnitve. Ni argv, argc, ki je potrebna, ko pišete program. Nasprotno lahko samo začnete pisati kodo, in to je deloma ker PHP je tisto, kar se imenuje razlaga jezik. C je bil sestavljen, in to je bila izdelana v smislu, da začnete z izvorno kodo, prost dostop do Jek, ki je prevajalnik, in na koncu po nekaj več korakov, ki jih dobite predmetne kode, 0 in 1 sekundo. PHP in Python in Ruby in Pearl in drugi različne vrste jezikov, ki jih ne pripravijo. Saj ne gre iz izvorne kode v 0s in 1s. Pravkar ste teči izvorno kodo in zaženete izvorno kodo s pisanjem na običajen besedilno datoteko, ki se konča v. php v tem primeru namesto c,. in kaj je program na vašem računalniku je dobesedno razume svojo kodo po vrsticah z vrvico. Z drugimi besedami, namesto da napišemo program in zaženite program neposredno namesto tega napisati program z datoteko s končnico. php. Nato zaženete dejansko program, imenovan php.exe, če ste v operacijskem sistemu Windows, ali pa samo PHP, če ste na Mac OS in Linux in si zagotovi kot prispevek k programu PHP svoje izvorne kode, in njegov namen v življenju je, da se glasi svojo kodo zgoraj navzdol, od leve proti desni in ne glede na to, da ste povedali, da ne. Poglejmo, kaj se dogaja, da sintaktično pomeni. V PHP imamo pogoje. Ta stran je enaka kot tisto, kar ste videli že v 1. tednu ker je sintaktično pogoji, IFS in drugod IFS in drugje v PHP videti natanko tako. Ko gre za matematičnih izrazov, da boš izgledala natanko tako, kot je ta. Ko gre za anding stvari skupaj, kot booleans da se bo izgledala natanko tako, kot je ta. Stikala videti enako, in dobili boste dodatno prednost v PHP da preklopi v C lahko samo vklopimo ali char int. Ne moreš vklopiti niza vrednosti. V PHP lahko dejansko ima izraz da je spremenljivka, katere vsebina je niz, in lahko dejansko narediti primerjavo niza v realno intuitiven način, ne primerjave kazalec, da se odločijo, ali bodo to zadevo i ali j ali kaj drugega. Bomo videli, da bi lahko kmalu. Loops tudi čudovito enaki. Za zanke imajo inicializacijo, kar je pogoj, in nekaj več novosti. Čeprav obstajajo tudi zanke v PHP. Ali pa obstaja tudi zanke v PHP, in nizi obstajajo v PHP, ampak tukaj je, kjer je sintaksa začne, da bi dobili malo drugačen, vendar koncept je enak, in koncepti so res enaki kot so bili v tednu 0 s Scratch. V prvi vrsti je znak $. To je bilo oblikovanje odločitev v PHP, pri čemer vsaka spremenljivka v PHP pri načrtovanju se začne z znakom $. Nič več X, Y, Z. To je sedaj $ x, $ Y $ Z samo zato, ker. To je nekaj, da v mislih, zdaj pa na desni strani To je podobna matriki, vendar smo z oglatimi oklepaji tukaj. V PHP in JavaScript, kot bomo sčasoma videli, opredeliti niz počnete odprto kvadratni nosilec in zaprt oglati oklepaj, in potem imate vejicami ločen seznam vrednosti, ali ints ali nize ali nabora znakov, kar hočeš, znotraj tega izraza tam. Zdaj, kako smo storili kaj takega v C? Kaj je sintaksa za statično razglasitvi niz znanih številk? To je bil zavite oklepaje, da manjša razlika tukaj, ampak v obeh PHP in na koncu JavaScript je samo uporablja oglatih oklepajev, tako da res edina zanimiva podrobnost tukaj je $ znak imena spremenljivke in tudi oglati oklepaji, in tam je ena stvar zanima , ki je bila izpuščena tudi na levi strani pod znakom =. Kaj manjka, da smo se zahteva za več tednov? Ja. [Neslišno študentski odziv] Velikost, tako da ni omembe velikosti matrike. Odkrito povedano, ni omembe oglatih oklepajih na levi strani za znakom =, in kaj manjka v vrsti? Ja. >> [Neslišno študentski odziv] Tip, kaj je zanimivo predvsem PHP je, da ne gre za močno natipkana jezik kot C, In to je zelo vnesli v smislu, da je treba reči, da zna, morate povedati int, morate povedati plovec. Kadarkoli želite spremenljivko moraš povedati Jek kakšen je njen tip. PHP je malo lazier. To je ohlapno vnesli v smislu, da lahko imajo plovce in chars in godala in ints in tako naprej, vendar pa je jezik sam v resnici ne zanima, kaj si dal notri spremenljivke. Saj ni treba obvestiti vnaprej, kaj tip podatkov se dogaja v spremenljivko. To je povsem odvisno od vas, tako da je to lepo v tem, da vam ni treba skrbeti toliko o vnesete podatke in skrbi, kakšne so vaše trditve in tako naprej. To tudi pomeni, sčasoma funkcije v PHP se bodo lahko vrnili bodisi int večino časa, morda enkrat v nekaj časa da bodo vrne int, boolean False, na primer, ki nakazuje, da je šlo nekaj narobe. To nam daje nekaj upsides, vendar pa bo tudi, da nas nekako po svoji zasnovi Malo lazier, ko gre za tipizacijo podatkov. Kaj še, da v mislih? Spremenljivke videti precej všeč, tako da je $ = "Pozdravljen svet". To je morda izpeljan iz prejšnjega primera, in imamo drugo vrsto zanke. Ta bomo dejansko videli enkrat v nekaj časa, saj je zelo priročno, foreach konstrukt. V tem primeru se zanka foreach se znotraj njenih besedah ​​običajno oklepajev 3, $ Nekaj ​​prvi, ki je kar matrika želite ponoviti več članov, potem pa dobesedno ključna beseda kot, nato pa na koncu, drugo ime spremenljivke, ki lahko izbirate. To je lahko foo, bar, ali element, in kaj je ta konstrukt ne je, če je $ matrika vsebuje 10 elementov na vsaki ponovitvi to polje, žal, na vsaki ponovitvi te zanke spremenljivka imenovan element, se bo posodobitev da je prvi element v polju, nato pa je drugi element v matriki, potem Tretji element matrike, s tem odpraviti potrebo narediti malo siten kvadratnih zapis nosilec in $ I, da bi se kazalo v matriko. PHP pa vse to dela za vas in za vsako ponovitev Samo roke si naslednji element iz matrike ne da bi morali vedeti o skrbi za svoje ali številski mesto indeksa. In potem končno, za zdaj še ena značilnost PHP da se bo to lahko zelo koristno, še posebej, ko smo začeli načrtovanje na spletu, in da je znan kot asociativni array. Se plošča, ki jih poznamo doslej od 20 sekundami in so v zadnjih 8 tednov številčno indeksirana polja, vrsta tradicionalnih polj, kjer so indeksi so ints, 0, 1, 2, vse tja gor. Asociativne nizi so veliko močnejši. Te vam omogočajo, da imajo poljubne tipke, poljubni indeksi in samovoljnih vrednosti. Ker je v tradicionalni niz je 0, 1, 2, v asociativni niz lahko imajo indeks ali ključ foo katerih vrednost je bar. Lahko pa še en ključ, katerega ime je BAZ in katerih vrednost je razvrstitev za. Spet neumni računalništvo generična imeni spremenljivk tukaj, ampak dejstvo je, da ta matrika nima bracket 0 ali 1 nosilec. To se dogaja, da imajo namesto nosilec foo in nosilec Baz. To je veliko bolj vsestranski, da bomo lahko povezali Besede z drugimi besedami, ključe z vrednostmi povsem samovoljno, in bomo lahko dobili nazaj te vrednote nenehno v času ker je pod pokrovom, kar asociativno polje Res je, je razpršena tabela. Spomnimo se, da je razpršena tabela vam omogoča, da v nekaterih vhodnih rad spravil v besede Davida, če želite vstaviti Davida v neke vrste slovarja, in potem dobiš nazaj nekaj vrednosti običajno. V primeru speller pravilna ali napačna. David ali karkoli beseda ali ni v slovarju. Asociativni array je res samo razpršena tabela, vendar je veliko bolj prijazen do uporabnika utelešenje tega. Kot bomo videli, da se dogaja, da nam omogočajo, da narediti nekaj stvari zelo, zelo enostavno. Oglejmo si nekaj osnovnih PHP primeri in videti, kaj lahko naredimo s tem jeziku. Naj gredo naprej in odprla v našem izvornega imenika danes datoteka z imenom hello1.php. Ta datoteka je bolj pripomba, kot je dejanska koda zato naj dejansko odstraniti vse pripombe iz spisa in Predstavljam vam morda najpreprostejši PHP programskem tukaj. 5 linij in nekateri izmed tistih, ki so prazen prostor, tako opazili nekatere ključne razlike tukaj. Datoteka se imenuje hello1.php. Prva linija, čeprav je pomeni, da je to za mojo PHP kode. Poglejmo, kako voditi to. Jaz grem nazaj v svojo terminalsko okno tukaj. Jaz grem v mojo PHP imenik. Obvestilo, da imamo cel kup datotek, 1. 1, ki je hello.php. Naj gredo naprej in zagon tega, hello1.php, vstop. Dovoljenje je zavrnjeno. Ok. Kako smo določene stvari, kot je to v preteklosti? Kaj je to? >> [Neslišno študentski odziv] Mi potrebujejo brati in pisati, vendar naj ne ls-l. Zapomni si to nekoliko Grobni proizvodnje, s katerim hello1 Zdi se, da se da brati in pisati me ampak prebrati vsi ostali. Izkazalo se je to dejansko ni korak v pravo smer. Razlika je spet z razlagati jeziku se ne zažene program neposredno. Če namesto tega zagnati tolmača in ga z roko zakonika da ste napisali, da je lahko razlaga, da po vrsticah. V tem primeru je tolmač ali program, ki sem dejansko želite zagnati dobesedno imenuje PHP. Nekje na tem trdem disku naprave je program nekdo je napisal imenuje PHP ali na Windows php.exe. Kaj bom naredil tukaj je, da bom dejansko vozijo PHP ampak ga dati kot argument ukazne vrstice kode, ki sem ga napisal, in potem bom pomanjšavo ter zadeti nastopiti. Vodi svoj program za mene, od zgoraj navzdol, od leve proti desni. Naj gredo naprej in odprla majhno odstopanje za to. V hello2.php obvestila, da je to preveč je večinoma pripomb, zato naj se znebiti tistih, kot odvračanja, In kaj je zdaj jasno razlikuje glede te datoteke? Tam je ta nova proga, nekoliko skrivnosten na vrhu. V 1. vrstici je #! / Bin / php. Bin je konvencija na Linux in Mac OS za binarne datoteke, zato / bin pomeni, da je to mapa, ki vsebuje kup binaries ki je programirana, od katerih je ena PHP. #! je vzdevek shebang, ki je hiter način, je rekel, in kaj to pomeni je, da ko zaženete ta program, zdaj pa je namig na vrhu datoteke , ki pove, računalnik, kaj tolmač za uporabo. To postane malce nadležno, če ste imeli povedati svoje uporabnike in svoje stranke "Hej, smo pisali ta program, imenovan hello1.php." Vse kar morate storiti je, da vedno teče PHP, nato pa je ime tega programa. Odkrito povedano, bi bilo lepše, samo teči hello1.php, in seveda, če bomo lahko naredimo naslednje. Naj gredo naprej in ls-l, in obvestilo, v hello2 je še vedno samo za branje in pisanje nato pa preberite brati, tako da ne morem še to, hello2.php. Vendar pa smo uvedli ta še tako kratek zadnji čas, ukaz chmod. Če naredim chmod a + x, kar pomeni, da vse plus izvedljivosti, in potem hello2.php in potem ls-l spet opazil kaj se je spremenilo. Ena, Linux, ki mi ime datoteke v zeleni barvi prenesel idejo da je izvedljivo, vendar je še pomembneje, na levi strani opazili, da se je malo predstavlja x za izvršljiv bil določen. Kaj to sedaj pomeni, je, da sem lahko vodijo ./hello2.php kot ponavadi, zadeti nastopiti, in zaradi shebang v sam vrh v spis to je namig, še enkrat, za Linux, ki pravi, S to tolmača zagnati to datoteko. Ne skrbite prisili uporabnika, da dejansko tip. In kaj je lepo, zdaj je to, da nekako vpliva na mojih strank ali prijatelji kateri jezik sem napisal ta program, da grem lahko naprej s mv ter preimenovati to stvar za hello2, na primer. In zdaj, če jaz ./hello2 in pomanjšavo moj program teče naprej. Te končnice datotek so človeški konvencija, ki je potrebno nekaj podobnega Jek in dopolnimo, ki so si za njih. Ampak za PHP, sem lahko to imenujemo ničesar datoteke razširitev želim. Lahko bi trik svet v razmišljanju, da sem res dober v Ruby, in lahko pišem hello2.rb in zaženite to, in voila, zdaj imam različico Ruby, ki je popolna laž. Toda končnice datotek so brez pomena če je datoteka izvedljiva in ima to posebno nakazuje na vrhu datoteke. Zdaj, kot prahi, naj vam pokažem hitro različice 3, , ki je neke vrste uporabne trik, da veš. V hello3 sem naredil kaj narobe rahlo da bom posodobiti spletno izvorne kode. V različici 3 se izkaže, da na večini Linux računalnikov obstaja program, imenovan env za okolje, in kaj lahko storite, je, če nimate pojma, kje PHP je nameščen na lokalni trdi disk, saj bi to dejansko razlikujejo glede na računalnik da nekdo uporablja, Sredstva samo pravi zagon env, , ki je na večini sistemov in ugotoviti, kje je PHP. Samo skupna trik, tako da vam ni treba skrbeti za ugotavljanje, kam program. Toda, če vam ni vseeno, kje je program in niste skrbeli doslej lahko uporabite ki ukaz. Naj pomanjšanje in tip, ki php, in opazil, da mi pove, da je pravzaprav v usr / bin / php. To je neke vrste laž. To je tudi v koš. To samo kaže mi prvi udarec. Če ste se kdaj spraševali, če je Jek, ki Jek, da je v usr / bin / Jek, ki bi, usr / bin / narediti, in kaj to pomeni je ves ta čas da bi lahko bili tipkanje usr / bin / Jek začne teči Jek, ampak to je nekako dolgočasno za to, da so nekatere mape kot so usr / bin in bin domneva, da je privzeto tako računalnik ve, da si v njih za vas. Vsa vprašanja o pisanju super, super enostavno Hello World programa v PHP, nato pa teče? Ker sedaj bomo začeli uvesti bolj prepričljiv sintakso. V redu, gremo. Ti programi dejansko smo videli vse od njih prej. Če sem odprla, na primer, naredimo beer1.php, da ne bo šel skozi več različic, ampak tisto, kar sem storil sem se usedel in se razlije ali predelani moja C kodo za PHP kodo tukaj. Večina vrhu spisa komentarji tu gor. Izkazalo se je, da je ena nova funkcija, moramo se imenuje readline. GetString, odpoklic od 0 dalje tedna je bila CS50 stvar. PHP ima svojo uporabniku prijazno funkcijo, imenovano readline , ki traja 1 argument, ki določa takojšnje , ki jih želite prikazati uporabniku, in kaj počne readline se vrne, kar uporabnik vnese palcev V tem primeru bom razglasitvi spremenljivko z imenom $ n. Jaz shranjevanje v njem vrnjeno vrednost readline Po česar si s tem nizu. Samo za varnostno kopiranje, ki dejansko vodijo to stvar, naj grem naprej in zagon php beer1.php. Koliko steklenic ne bo? Naj pač 2 tokrat. Enter. To je vse. Program je funkcionalno enaka različica C, iz tedni. Ampak sintaktično poglejmo, kaj je drugače. Ko dobim int od uporabnika obvestilo, da delam nekaj preverjanje napak, in če je n manj kot 1 sem nehal in mi izpiše Žal sporočilo uporabniku in izstopa s 1. Tudi to je malo drugačna.  V C Kaj smo storili? V C smo se vrnili 1. V PHP končate z 1, ki je odkrito mislim, da malo bolj intuitivno ker ste dobesedno zaprl program. V redu, nato pa sem dol nadležno pesem je enako skladenjsko razen za spremenljivke, tako da tukaj, v skladu 24 naprej Opazili moje zanke for je skoraj enak, vendar imam $ pred i in n, in kaj je prav tako manjkajo črte 26, da smo imeli v preteklosti pri razglasitvi spremenljivke i? Ni tip. To je napačno PHP reči int. Vi sploh ni treba storiti. Računalnik, tolmač PHP je dovolj pameten, da zavedaš da če si dal nekaj v $ sem ga bo zdravljenje kot številko za vas. In potem tukaj smo plug $ i, $ i, $ i - 1. Vse to je isto, potem pa tukaj delamo "Vau, to je siten" printf in potem izhod (0). Again, hrana za s seboj v tem, da čeprav bomo porabili relativno malo časa za PHP, zagotovo v primerjavi kaj smo naredili na C, to je skoraj enaka, in kaj bomo storili danes in naslednji teden in zunaj je res osredotočiti na nekatere nove zamisli. Samo da bi videl, da je ena stvar, ki ne prevajajo več od C to je super preprost program, smo v tednu 1 ali 2, ki kubikov vrednost. Ampak kaj je bilo zanimivo v času o tem programu je, da je uvedel pojem meri pisno funkcije, ki jih sami napisali. Sintaksa v PHP je skoraj enaka. Tukaj je moj program do vrha. Obvestilo ponovno odsotna vsak pojem glavni. Začnem pisati kodo, in to je tisto, kar se dogaja, da se izvede tolmača. Sem izpisal x je zdaj 2, verjetno. Potem sem trdijo cubing ... Potem sem poklical kocke funkcijo in prehaja v $ x in določite vrne vrednost $ x. Potem sem trdijo, da je kubikov, in nato sem rekel to, kar upam, da bodo rekli, da je zdaj 8 x. Sintaksa funkcije v PHP je vedno tako nekoliko drugačna. Spet manjka, je donos tipa. Spet manjka, je vrnitev vrsti in tudi manjka tisto drugo vrsto? [Neslišno študentski odziv] No, v redu, to je dobro. Vrnimo se k da je v sekundi. Nimamo na primer int tukaj. Ne, na primer, so tu int, ker spet v PHP preprosto ne potrebujejo, in ne bi smeli storiti, da ampak tam je to novo ključno besedo imenujemo funkcija. V PHP je skoraj malo bolj jasno, saj, če želite funkcijo dobesedno pomeni funkcijo, mu daš ime, nato pa z vejico ločen seznam če kateri koli od njegovih argumentov. Ni treba reči, neveljavno ali kaj podobnega, nato pa vrnitev je isto, $ * $ * $. Kaj je tako manjka? Sammy je na to opozorila tukaj. Na vrhu datoteke popolnoma odsotno v PHP je tudi prototip. Tudi to je po svoji zasnovi. Jeziki in tolmači kot so PHP, da so pametnejši od C kdaj je bila V prevajalniki, kot Jek. Spomnimo se, da je Jek, če nisi povedal, da obstaja kocke, če nisi povedal, da obstaja kot printf s prototipom ali z # include, no, to je, da bo kričal na vas in ni niti zbrati kodo. PHP in več sodobnih jeziki so veliko pametnejši, ko gre za to. Ga bodo prevzeti sami prebrati vse vaše kode in potem kričati na vas, samo, če ugotovi, kocke nikamor. Ni važno, če je kocka je na dnu ali na vrhu ali celo na nek drug dokument. PHP in podobni jeziki so zdaj dovolj pameten, da gleda naprej na vse, preden te štele kot da je naredil napako. Če nam to pusti? Naredimo še zadnji primer tu v razmerah, in če sem odprla conditions2.php obvestilo preveč sintaksa tukaj je skoraj enaka. Jaz sem z uporabo readline namesto GetString, ampak linija je isti kot prej, "Rad bi celo prosim." Nato sem imel, če pogoj, if, nato pa še, ampak funkcionalno ta program je prav tako enaka kot tisto, kar smo storili pred tedni, Torej, če sem teči to stvar, php z conditions2, in sem ji dati več kot 23 - Izbral sem pozitivno število. Če sem dal to sem pobral -1 negativno število. Če sem dal to sem seveda izbral 0 0. Torej, kdo skrbi za vse to? No, eden od zabave vrste vaj tukaj Zame je vsaj bil, da gredo nazaj in videli, kako hitro sem lahko izvajajo pset 5, pravopisnih pset. Spomnimo se, da je bila ta datoteka imenuje speller.c, in tam je datoteka z imenom dictionary.c. Kaj sem bil nekako preživel nekaj minut in jaz pretvori kodo C za PHP kodo, in ne bomo porabili veliko časa na speller ker se tako kot v pset 5 nisi res treba preživijo veliko časa na samem speller, ker je vaša pozornost je bila v slovarju. Dovolj je reči, da če ste prebrali speller, ta datoteka tukaj, to je precej enakovredno oznako C vam dal za pset 5. Pravkar sem dodal nekaj dolarjev v mestih. Spremenil sem se nekatera imena funkcij, če ne obstajajo v PHP. Obstaja še ena stvar tukaj, preg_match, kar je malo Ljubitelj način počne nekaj, vendar bomo prišli nazaj, da prej ali slej. Ampak na kratko, speller je skoraj enaka, in če pogledaš na samem dnu kaj je na koncu izpljune je to tukaj, besede napačno zapisano besedo v slovar, besede v besedilu. V redu, kaj je zanimivo zdaj je naslednji. Na vrhu moje datoteke bom zahtevala dictionary.php. Tako kot je C # vključujejo PHP ima posebno funkcijo imenovano zahteva da je precej počne isto stvar, zahteva datoteko z imenom dictionary.php. Kako naj grem o izvajanju pset 5? Naj gredo naprej in odprli datoteko tukaj. Naj se malo sklic tukaj. In mi ustvari novo datoteko in začeti klicati v dictionary.php. Naj ga v drugo mapo, tako da lahko naredimo to v živo. In zdaj bom noter povečavo Jaz bom za začetek moje PHP datoteko z odprtjem php zaprt nosilec. In potem je tukaj bilo nekaj funkcij, sem potreboval izvajati za pset 5, zato naj začnejo izvajati nekatere od tistih, Tako nadzorne funkcije, ki bi morala vzeti besedo kot argument. To bomo storili to in prišel nazaj na to v trenutku. Prišlo je funkcija obremenitev, ki je v kakšni kot argument? Slovar, da datoteka, ki sem pravzaprav želel naložiti. Prišlo je funkcija velikosti, ki ni sprejela nobenih argumentov in tam je funkcija, kaj je ostalo? Odstranjevanje, ki ni sprejela nobenih argumentov, niti. To so 4 funkcije, ki bi jih zdaj izvaja v PHP, in kaj bom storiti, je, da gredo naprej in to. Veliko vas uporabili razpršene tabele v pset 5, zato naj gredo naprej in ustvariti razpršene tabele v PHP. Končano. To mi daje razpršene tabele. No, zakaj? Ena se imenuje spremenljivka $ tabela, samo da pričara idejo razpršitve mizo. Oklepaju, čeprav opozarjajo, predstavlja kaj? Matrika, vendar nizi PHP ne bi bilo treba biti številčno indeksirajo. Lahko so tudi asociativne nize, kar pomeni, da imajo lahko poljubno ključe in vrednosti. Podobno kot v pset 5, tisti, ki ste naredili hash tabele izvedb verjetno vstavili besedo in jo vstavite v verigi povezanih seznamov, ali ste shranili vrednost prave nekje ali nekaj v tem smislu. Si nekako spomnil na dejstvo, da je beseda bila tam. Za zdaj, da se bo moj razpršena tabela, in sedaj, da gredo o izvajanju potrditveno funkcijo Moram pogledati znotraj tega hash tabele in videli, če je beseda tam. Kaj sem storil je, da sem bom rekel, če- recimo isset, ki je PHP funkcijo, ki dobesedno pomeni le ključ set, Tako isset ($ tabela [$ beseda] in če je tako vrnil res. To je to. To je pset 5 v PHP. No, v poštenosti, v redu. Else return false, tako da je ni. Kaj se v resnici dogaja? No, če namizni ali razpršena tabela tukaj bolj na splošno, je asociativno polje, ki pomeni, da lahko indeks vanjo z besedo, kot je "besedo," in jih morate dobiti nazaj nekaj vrednosti. Mi smo nekako dobili en korak pred nami. To bi bilo nekako lepo, če bi dejansko naloženo datoteko prvič, tako obremenitev ni tako preprosto, a naj grem naprej in Ščepati  res hitro izvajanje obremenitve. Naj gredo naprej in reči besede dobi datoteke zbirko. Datoteka funkcija v PHP odpre datoteko in se vrne v vas paleto vseh besed v tej datoteki, samo jih preda na vas. To je bila velika bolečina preveč, kajne? Zdaj foreach, to je naš novi konstrukt, foreach ($ $ besede kot besede). Ta zanka se bo začela čez ponavljanjem matrične besede in dodeliti spremenljivke $ besedne vsako besedo v datoteki od prvega do drugega do tretjega do četrtega vseh poti tako da mi ni treba storiti siten [i] zapis in podobno. In kaj sem preprosto naredili za vsako od teh besed se shrani v mojo mizo z indeksiranjem v tabeli in potem gre res, ker, da se spomnimo da je beseda v mojem slovarju, vse res morate storiti je neke vrste flip bit in rekel te besede v mojem hash tabelo je tam, res. In če je ni, jaz ne bi bilo treba izrecno dati napačne, sicer sem moral dati vse možne napačne besede v vesolju. Zadostuje za mene samo, da določi vrednost indeksa se pravi, če je beseda dejansko v mojem hash tabele. Zdaj, jaz rezanje nekaj koncev sem, da bom pomahal roke na za zdaj, zdaj pa se izvede obremenitev funkcijo. Naložim vse besede iz datoteke v array. Ponovil sem nad to polje, in za vsako besedo v matriki Jaz ga priključite na svoj hash tabelo z 1 vrstico kode. To je zabavno. Saj veš, kako lahko izvajamo velikost zdaj? No, velikost je vedno zelo enostavno, v poštenosti. Tu si lahko sploh vrnili štetje mizo. To je zelo enostavno preveč, prešteti število stvari v tabeli. To je pravzaprav nekakšen ni najbolj učinkovita. Verjetno bi moral imeti spremenljivko z imenom velikosti, tako da lahko to storite v stalnem času, vendar je zelo enostavno. Oh, in nato razložiti, če želimo, da je analni tukaj lahko rečemo, da je, kako si razložiti nekaj. Pravkar si nastavite spremenljivko, ki je enaka prazen niz, in da se je znebil vsega, kar je bilo tam. Ni potrebe, da pokličete na brezplačno. Spet sem cut nekaj kotičkov, Opravičujemo se za težave niz dodeljevanje 5 morda v C, če pa greste naprej in zagon tega, Grem v resnici vodi različico, ki sem napisal v vnaprej samo zato, da nisem naredil nobene napake sintaktične whatsoever. Naj gredo naprej in zagon speller. Uporaba je enaka. Tukaj je slovar datoteka, ki vsebuje samo besedo foo. Tukaj je besedilna datoteka, ki vsebuje samo foo bar. Naj črkovanja to, tako speller, ki uporabljajo to datoteko slovarja na tem besedilno datoteko. Še ena beseda napačno črkovana, bar, in voila. Sestavljeno v pset 5. Oglejmo 5-minutni odmor tukaj, pa bomo vrnili in še več na PHP. V redu, smo nazaj. Naj me ne sovražiš, za nekaj časa. Poglejmo sedaj dejansko videli, če to ni pozitivno dejansko izvajanje te stvari v PHP. Ki pa je 45 sekund, da izvesti. Ampak gremo naprej in zdaj vodijo stvari. Naj gredo naprej in zagon različico C za speller, in ga bomo teči eno največjih zbirk, ki je King James Bible. In to tukaj je, greva v našo mapo C, speller na King James 5.. Veliko napačno črkovane besede. Ok, tako da je moč si verjetno dobil, čeprav so časi nekoliko drugačni, če imaš vse deluje pravilno, in tako čas, v skupnem črkovanja King James Bible je 0,38 sekunde, tako da zelo dobro uporabljati to izvajanje. Zdaj pa grem v različico PHP, ki smo ga pravkar napisal. Naj teče speller na kralja Jamesa. Ops, prezreti to napako. Jaz sem v napačnem imeniku. Speller na King James 5.. Skoraj končano. Ok, prebrisan opazovalec zavedajo, da je bilo več kot 3 sekunde tam. To je res teče čas. Izkazalo se je, da je potreben čas, da pljuvati veliko besedila, ki ker buffering vprašanja, vendar skrajšam zgodbo, da je bila 3,15 sekunde časa stroja, CPU čas, v primerjavi s tisto, kar je bilo pred nekaj trenutki? Kot 0,3. Mislim, da je red velikosti počasneje, tako da če je to smešno upočasnitev prihaja? No, kot se je zgodilo z večino vseh odločitvah, projektiranja, ki smo jih v razredu v zadnjih 9 tednov tam je skoraj vedno tako kompromis. Včasih med samo prostor, včasih med prostorom in časom, prostor, čas in razvojna prizadevanja in tudi tukaj, čeprav smo prihranili ogromno časa, morda potencialno 10-20-30 ure časa za razvoj izvajanju črkovalnik da jo brisal v samo 45 sekundah s tem jeziku cena, ki jo plača je, da je red velikosti počasneje kot rezultat, in to je ponavadi pri večini vseh razlaga jezik, PHP, Python, Ruby Pearl ali drugih čemer če boš teči s pomočjo tolmača in jih prebral kodo Po vrsticah, od zgoraj navzdol, od leve proti desni, da posrednik bo trajalo nekaj časa sama, in kaj je tu občutek v 3 sekundah v primerjavi s 0,3 sekunde je dejstvo, da je ta posrednik, ki je dobesedno interpretirajo našo kodo Po vrsticah, in bog ne daj, če si znotraj zanke z veliko datoteko, ki vsebuje na tisoče besed. To režijske bo sešteti in dodajte in dodajte in sešteti. Za orodje, kot je ta, je to verjetno ni najboljši jezik za uporabo za izvajanje črkovalnik, če neposrednosti je v interesu svoje uporabnike in za vas. Toda razkošje imamo v tem trenutku je, če uporabljajo jezik, kot je PHP ali veliko razlagati jezikov v okviru svetovnega spleta, kar se tega tiče, imate korist da je internet veliko počasneje kot pri večini računalnikov. Imate GHz procesor računalnika, na 2 GHz, morda celo bolj v teh dneh. Toda realnost je na internetu je visok znesek latence pri čemer za JavaScript, da bi govoril na strežnik, čeprav smo videli prejšnji teden da je to zelo hitro, pol milisekund ali tako, da tudi dodaja gor, in če ste downloading stvari, kot so slike, ali fotografija Facebook ali pridobivanje neposrednih sporočil prek Ćaskanje Facebook, Gchat ali podobno, vse te povratnih časih med brskalnikom in strežnikom začetek sešteti, kar naredi vaše posebne izbire jezika v mnogih primerih sploh ni tako pomembno, da ste v redu z nekoliko počasnejšo jezik kot je PHP ali Python ali Ruby za katero pa obstajajo velike upsides za vas in vaše kolege in vaši prijatelji, saj lahko izvajajo stvari tako, toliko hitreje. In poleg tega, da imate veliko manj tveganja za nekatere pomanjkljivosti varnosti. Tukaj ni kazalci v PHP. Tukaj ni SEG napake, ki jih zlahka povzročijo na enak način, da bi lahko v C. S K si zelo blizu strojne opreme. Z PHP in podobne jezike, da si neke vrste višji ravni, tako rekoč, z veliko obramb med vami in kaj se pravzaprav dogaja v stroju, in to je samo kompromis. Imamo prišel do točke, da imajo te bolj sodobno, visoko raven jezika kot PHP zaradi izkušenj v jezikih, kot so PHP v C. Ampak, če ne boste razumeli, kaj se dogaja pod pokrovom ves ta čas potem zagotovo ne morete sprejeti prave odločitve, design, in seveda, ko gre za delo na mestu, kot so Facebook in Google Vsaka od teh krajev, ki so vedno bolj igrajo z velikimi nize podatkov tudi če greš nazaj in ne premed in delajo z nekaj MD na nekaterih velikih nabora podatkov vključujejo bolnike in zdravnike in podobno uporabo pravih orodij je zelo prepričljiv ker drugače bi vaša analiza nekega nabora podatkov traja sekund, ali bi lahko dobesedno traja ure. To je samo en primer, da vas ne ovirajo pri tem, koliko več napora je bilo v C pa vam pomaga, da cenim, ko se izvajajo kaj v C res razumete, ali v teoriji, razumem kako je vse, ali je treba delo, in ste skoraj popoln nadzor nad tem, kaj se dogaja pod pokrovom motorja in s tem višje ravni jezikov boste morali odreči večji nadzor na ljudi, ki jih je izumil in so predmet več načrtovanih odločitvah, kot vi. Ampak, če se nam zdi samoumevno, da je učinkovitost ni tako pomembno, na spletu, ker teh drugih vprašanj, le omrežne hitrosti so malo počasneje, kot CPU hitrosti vseeno, tako da bomo lahko nekako privoščiti, da uporabite nekoliko počasneje jezik če upsides so lahko razvijamo stvari, 10-krat hitreje ali celo več. Pa poglejmo, kako lahko začnemo s tem. Naj gredo v mapo Med primeri današnje pozval frosh.ims, in je to dejansko osebno motivirani z dejstvom, da je prva stvar, Pisal sem za splet leti po prevzemu CS50 in CS51 je spletna stran za program Frosh UI, novinec Notranji šport, ki je takrat bilo to dovolj, da je pred leti v času ni spletna stran za ta program, čeprav je bilo ujeti, in namesto tega se je Proctor v katerem Wigglesworth, če si hotel registrirati za odbojko ali nogomet ali karkoli želite izpolniti kos papirja. Ti bi potem hodil po dvorišču. Ti bi nato potrkal na vrata in ga potisnite v njihovih vratih ali roko na Proctor kos papirja z vašim imenom na njej, ali ne želite, da se kapetan ekipe, kaj šport si hotel narediti in kaj domu si noter To je neke vrste stari način šolskega počne stvari, in to je bil glavni priložnost, da avtomatizirati veliko tega procesa. Greš na spletno stran. Vnesete nekaj palcev Dobiš e-poštni potrditev, in bum, ste končali. To je bila prva stvar, ki sem storil, čeprav v jeziku, ki se imenuje Pearl, ampak to je relativno enostavno narediti v PHP, in to je nekako predstavnik problemov, lahko začnete z reševanjem, ko si lahko sami izraziti programsko in ne bi bilo treba zanašati na stvari, kot so Googlovih spletnih mest ali Excel ali orodij, ki so predani za vas. Fantje imajo sedaj možnost, da to stvari, kot je ta. To je super grdo verzijo obrazca, ampak kaj je samo uporabiti za začetek pogovora, s katerim je to grobo, kar je oblika izgledala leti za nas da bi ljudje na spletu in se prijavite za Frosh UI. Prosili smo za ime, potrditveno polje za to, ali so želeli biti kapetan, moški ali ženska, in kaj potem domu so bili v, in potem bi poslali ta obrazec. Naj prvi pogled Pod pokrovom na HTML, ki predstavlja to spletno stran. Naj gredo v froshims0, in kot prahi, za pset 7 peljem samoumevnega imenike in mape, ki sem postavljanje stvari noter Vodili vas bomo skozi točno tam, kjer stvari mora iti v napravo, ki mod ukaze morate teči, zato naj vas ne skrbi vse neumni podrobnosti sinhronizacijo od get-go tukaj. V redu, tukaj je froshims0.php. Naj se pomaknite navzdol in kaj je radoveden sem, To je PHP datotek, ampak kaj je v njej, jasno? To je cel kup HTML in seveda, PHP izvor res so bili za to, da spletna osredotočene jezik. Pred nekaj trenutki smo ga uporabili za izvajanje pivo primer, pogoji, na primer, zdravo primer, in to je v redu. Lahko uporabite PHP kot skriptni jezik če skript je res samo nomenklaturo za hitro in umazano programa ali nekaj, kar ste napisali v scenarij ali bolj na splošno interpretiranem jeziku. PHP je zelo koristno, da zato, ker ste videli, kako hitro relativno lahko Ščepati programe v PHP. Vendar je res namenjen za uporabo za splet, in je oblikovana za splet v smislu, da opazite tu na vrhu datoteke Jaz se začne z