[Powered by Google Translate] [Týždeň 8] [David J Malan] [Harvard University] [To je CS50.] [CS50.TV] Vitajte späť. To je CS50, a to je začiatok týždňa 8. Pár príležitostí, ktoré tento týždeň, medzi nimi, to talk tu na ktorých niektoré jedlo sa podáva. Pre viac informácií pozrite sa na snímky, ktoré sú on-line. A tiež ďalšie akcie tento týždeň našej Thomas Carrier. Je to jeden z bývalých kolegov CS50 je hlava výučby, ktorý je teraz na Dropbox, a on je ten, kto zahnutý nás sa viete čo, takže ak chcete viac, že ​​hlavy ich rozhovore to popoludnie pre Dropbox a ďalšie. CS50 obed je tento piatok. Do k nám, ak ste schopní, 01:15, ako obvykle, na Fire and Ice. A teraz sme sa ponoriť do niečoho s názvom Semináre. Naše CS50 Semináre, spomínam, sú tieto voliteľné kurzy vedené výukové kolegami a kurz asistenti a priatelia kurzu, ľudia zo skupiny na koľaji tzv ABCD, ktorý je skupina technophiles na akademickej pôde, rovnako ako skupina tzv HCS, Harvard Computer Society, vysokoškoláci, ktorí sú podobne záujem v práci na počítači. Tohtoročný zoznam seminárov zahŕňa semináre na Android a iOS a JavaScript a PHP, Unix, Vim, a ďalšie, takže si uvedomiť, že tieto semináre sa blíži. Ak by ste sa chceli RSVP pre niektorý z nich zamieri do danej adrese URL tam. Budeme potom post na ihrisku internetových stránkach časy a miesta, akonáhle budú dokončené. Ale viem, že je 5 rokov v hodnote predchádzajúcich seminárov k dispozícii on-line, z ktorých mnohé sú stále veľmi aktuálne, pokiaľ ide o technológie, ktoré by mohli Chcem sa hrať s vaším záverečných prác, tak zamierte tam pre niektoré dostupné videá ich. CSS, tí z vás, ktorí sú oboznámení s CSS už, čo je to v kocke? Čo je to CSS? Je to kaskádové štýly, a čo to znamená? Čo to urobiť pre nás, CSS? Dobre, poďme zahriať ľahšie jeden, HTML, Hypertext Markup Language. Čo to urobiť pre nás? Každý, kto vôbec? Je to stále veľmi trápne pýtať na tieto otázky. HTML, Hypertext Markup Language. Áno? Nie? [Nepočuteľné Študent odpoveď] Dobre, dobre, to nám umožňuje označiť text zobraziť vo webovom prehliadači. To nie je programovací jazyk. Je to naozaj značkovací jazyk, čo znamená, že pokyn prehliadač, ako zobraziť informácie, takže najjednoduchšie inkarnácia to ako sme videli je niečo, čo super jednoduchý ako boldfacing, otvorený držiak b uzavretý držiak hovorí aby tento text tučne, a to je v skutočnosti len jedným z mnohých spôsobov, ako v ktorom môžeme urobiť, a naozaj, v týchto dňoch lepší prístup k štylizácia svoje webové stránky, robiť veci tučné a kurzíva a v strede a oprávnená, a podobne, nie je vykonané pomocou HTML tagov sám ale skôr s technikou zvanou CSS, kaskádové štýly. To je jazyk sám pre seba. To tiež nie je programovací jazyk, ale- všetci, toto je Dan, ktorý vedie k nám ešte dnes. Niektoré technické problémy. Nie je problém. CSS nám umožňuje štylizovať stránku nastavením, čo sa nazýva vlastnosti, takže sa poďme pozrieť na to prostredníctvom niekoľkých základných príkladov. Nechaj ma ísť do prístroja dnes. Mám zdrojový 8 pondelok adresár tu, a ja idem do adresára s názvom CSS, kde máme veľa súborov čakajúcich na nás tu, a v tejto zložke máme, napríklad, search0.html z minula. Teraz si pripomeňme s search0 sme odišli na túto poznámku podľa druhu vykonávacích Google alebo naozaj len predný koniec pre ňu týždeň alebo tak dávno, a všimnite si, že sme mali nejaké nové značky tam. Mali sme h1 pre veľké, tučné čísla, forma, ktorá nám umožnila skutočne HTML formulár pre vstup užívateľa. Akcie, čo bolo význam akčného atribútu na HTML tagu form? Aký bol význam tohto, akcie? Budem jednoducho robiť to dnes. Akcia je určenie, kde je formulár bude predložený. Skutočnosť, že hovorí, že action = "google.com / search" znamená, že keď používateľ klikne na tlačidlo Odoslať alebo ekvivalent bez ohľadu na formu polia sú vyplnené sa bude zaslaný na našom serveri alebo naše zariadenie, ale skôr, že konkrétne URL na Google. A metóda, že to bude používať, sa nazýva dostať, a získať pre túto chvíľu je len technika pre prenos informácií so sebou na webový server prostredníctvom adresy URL, takže sa poďme rýchlo pozrieť späť na to, ako to funguje. Všimnite si, že je to vstup, ktorého meno je q ktorého typ je text a potom druhý vstup typu predloží ktorého hodnota je CS50 hľadať, a skutočne, keď sa otvoriť tento súbor tu, search0.html, je to super jednoduchý formulár, a keď som hľadať niečo ako počítačové vedy a potom stlačte kláves Enter alebo kliknite na CS50 Hľadanie Všimnite si, že to, čo sa stane, je mimo dostať do Google Ja som konkrétne skončil na tejto adrese hore, google.com / search? q = počítač + vedy, informatika a výpočtová technika je samozrejme to, čo som napísal palcov + Jednoducho znamená, že ak je medzera bola, a je to v prehliadači len aby sa ubezpečil, že to nie je zmätok a biela plocha v aktuálnej URL. A potom q, samozrejme, je parameter názov. Nevideli sme, ako sme, programátor, môže skutočne prístup q doteraz. Môžeme predpokladať, že Google vie, čo s tým robiť tu, ale budeme sa tam dostať včas dnes. Ale dovoľte mi, aby som sa pozrieť na miesto search1.html, ktorý vyzerá trochu inak, pretože som sa rozhodol, že táto forma tu bola len trochu kríva. Myslím, že je to v ľavej hornej časti. Je to naozaj žiadne estetika k nej, a tak sa chcem štylizovať tento trochu viac, ako je Google, ktorého strana, odvolanie, aj keď nemusí navštíviť tak často, vyzerá to dnes na Halloween. Ak by sme namiesto toho otvoriť verzii 1 tohto súboru, vyhľadávanie 1.html, som sústredený to. Napriek tomu dosť škaredé, ale aspoň teraz som začal kontrolovať estetiku tejto stránke, nielen značkovanie ich. Poďme sa pozrieť na hľadanie 1, a je to naozaj len jeden rozdiel tu je, ktoré by mohli vyskočiť na vás, alebo ani nie, ale to, čo je jeden riadok alebo fragment rozdiel? Tam je to štýl atribút, tak sa ukazuje, že v HTML väčšina prvkov, väčšina tagy mať atribút style na ne, a vo vnútri tohto atribútu style je reťazec v úvodzovkách, a že reťazec v úvodzovkách je CSS. Môžete si dať kaskádových štýlov tam zadaním ako názov vlastnosti dvojbodku nasleduje hodnotou. To je druh nešťastného návrhu rozhodnutia pred niekoľkými rokmi že CSS je jazyk sám pre seba, ale syntakticky je to veľmi odlišné od HTML. V tomto prípade, vidíme, že vo vnútri mojej stránky, ktorý je uvedený v HTML, Mám CSS vnútri týchto úvodzoviek, a konvencie pre CSS je, že to, čo sa nazýva vlastnosť nasleduje, opäť, hrubého čreva, nasleduje hodnota tohto majetku, takže nie je znamienko rovnosti. Nie sú tu žiadne ďalšie citácie. Je to práve tento čiarkami oddelený hodnota kľúča dvojica, a textový riadok robí presne to, čo hovorí. To zarovná text v tele stránky, čo je naozaj odvahu na stránke, v centre mesta. Dobre, konečný výsledok potom, aby bolo jasno, je to. Nie všetci, že sexy, ale aspoň je to stred a trochu viac ako skutočné Google. Ale čo keď namiesto otvorenia verzia 2 tejto a poukázať sem novú značku dohromady? Teraz v hlave mojej stránky, ktoré boli predtým len mala, ktorý tag vo všetkých predchádzajúcich príkladoch? Proste mal toto, titul. Pred chvíľou hlavu tag vyzeral takto. Teraz miesto má štýl značky vnútri neho, a to taky, ospravedlňujeme sa, syntakticky vyzerá veľmi odlišne od HTML, ale človek si zvykne na to, kedy vo vnútri štýlu tagu Teraz môžem vytknúť to, čo bolo pred chvíľou atribút, atribút style, a môžem dať na samom vrchole mojej strane. Prečo? No, je to krok smerom k vyčisteniu veci, podobne ako v písaní C kóde by sme niekedy píšu funkcie vytknúť spoločnú funkčnosť. Je to len trochu čistejšie, kto factoring sa veci, ako je estetika na jednom centrálnom mieste, skôr než mať to všetko roztrousit celom HTML. To tiež robí to, čo hovorí, aj keď tam je trochu nové syntax. Toto je výber, a telo jednoducho znamená, vyberte telo prvok a použiť nasledujúce vlastnosti k tomu. No, majetok je presne rovnaký. Pre správnu mieru som pridal bodkočiarku na konci, ktorá má tendenciu byť dohovor, a ja som zabalil tento celý majetok v zložených zátvorkách, pretože som mohol skutočne mať rôzne veci tu. Mohol by som vlastne povedať niečo ako farba: modrá; Teraz to taky nebude mať krok k niečomu všetko krajšie, ale keď som sa teraz vrátiť k verzii 2 som aspon teraz robil telo mojej Page je text celej modrej. Tlačidlo zostane rovnaká, pretože to je vstup. Nie je to čistý text. Ale všetko ostatné, čo je text, rovnako ako CS50 Hľadanie hore hore, je v skutočnosti modré. Opäť, všetko sme urobili teraz je odstrániť z tela tagu, oznámenia, štýl atribút, a máme ovplyvnil ju tu. To nie je veľké zlepšenie, ale ak vezmeme do ešte o krok ďalej upozornenie, čo môžeme urobiť v tejto tretej verzii tu. V search3.html webová stránka je takmer zhodná s výnimkou toho, čo nový tag teraz? Link, takže toto nie je výstižne pomenovaný pretože nie ste prepojenie v zmysle klikacie hypertextový odkaz. Skôr, že si trochu robí ekvivalent # include v C pričom link tag s atribútu href a rel atribút hovorí ísť dopredu a kopírovanie vložiť obsah súboru s názvom search3.css tu, v podstate. To nie je úplne to urobiť, ale je to duch toho. To hovorí, že ísť otvoriť tento súbor, search3.css, a zaobchádzať s ňou, ako by používateľ mal ju napísali priamo tu v záhlaví stránky rovnako ako ja v predchádzajúcom príklade. Search3.css, zatiaľ, je veľmi jednoduchý. Je to naozaj len obsahuje presne to, čo bolo pred chvíľou v štýle značky, ale ja som ovplyvnil ho sem vlastným súboru. Aj keď sme sa strávili veľa času na to všetko v HTML alebo webové programovanie Len intuitívne, čo je motivácia, možno, pre factoring von tento malý úryvok dokonca CSS do vlastného súboru a potom aj s týmto link tag tu? [Nepočuteľné Študent odpoveď] Dobre, je to jednoduchšie vykladať v tom zmysle, že máte svoj CSS do CSS súboru. Máte svoj HTML v súbore HTML, takže je to lepšie čitateľné v tomto zmysle. Čo iné by mohlo byť presvedčivé? Jo. [Nepočuteľné Študent odpoveď] Jo, takže môžete zahrnúť to mnohokrát, takže teraz budeme robiť tieto základné príklady s jednotlivými súbormi, ale predpokladám, ste vlastne robiť skutočný webové stránky, ako vy bude pre PSet 7 alebo váš konečný projekt možná, a chcete mať viac webových stránok, ako je iste obyčajné na Skutočná World Wide Web, a to by bolo docela lame musieť skopírovať a vložiť rovnakú modrú farbu a rovnaký text zarovnaný centrum v každom z týchto stránok. Skôr to dáva väčší zmysel vytknúť, rovnako ako sme urobili v C s súbor h, vložte ju na jednom centrálnom mieste, v tomto prípade search3.css, a potom sa nechá ľubovoľný súbor na svoje webové stránky, aby skutočne zahrnúť tento súbor prostredníctvom tohto tagu tu v riadku 16. Ako je typicky prípad, sme začali s verziou 0, aký druh práce ale nemusí byť nevyhnutne najlepšie, a na každom kroku, Vyhľadávanie 1, vyhľadávanie 2, a teraz hľadajte 3 sme prijali tieto detské krôčiky k vzorom, ktoré sú trochu čistejšie a sú prípravné pre zložitejšie stránky, ktoré by sme mohli robiť po ceste. Dovoľte mi otvoriť jednu posledný príklad tu len pre zobrazenie ešte viac štylizovaná stránku, ale najprv poďme sa pozrieť na HTML. To je search4.html, a všimnite si, že štrukturálne je to takmer rovnaké okrem zavedenia novej značky, div. Div je tag, ktorý zavádza rozdelenie stránky. Môžete myslieť na to ako neviditeľný obdĺžnik. Je to druh vytvára pás o výmere do webovej stránky že môžete štylizovať naraz. Čo som urobil tu je nasledujúce. Vnútri môjho tela tagu, ktorý bol tam celý čas, Hovorím vytvoriť rozdelenie stránky tu cez linky 45 až 47, a to znamená, že v podstate mi neviditeľný obdĺžnik pozdĺž hornej časti stránky. Potom mi druhý obdĺžnik, hoci neviditeľná, pod tým, a identifikovať podľa mena obsahu, a potom konečne, mi tretiny rozdelenie stránky na dne tzv ID. Uvidíme, prečo som to urobil za chvíľu, ale koncepčne mám hlavičku divíziu. Mám obsahu divíziu, a mám pätu rozdelenie stránky aj keď sa jedná len v kóde. Užívateľ nebude vidieť 3 obdĺžniky, ale nejako štruktúrne tam v zákulisí sú skutočne prítomný. Teraz, koho to zaujíma? Prečo vlastne robiť? Všetko ostatné na stránke je rovnaké ako sme videli predtým. Tu je moja forma. Tu je môj vstup, môj vstup, koniec riadku, a tak ďalej. Tu je obrázok, aj keď, tak uvidíme, kedy to prišlo z za chvíľu. Tu je päty, ktorý je nový, len preto, že som chcel predstaviť niektoré ďalšie obsah tu. Ak sa posunúť nahor všimnúť, že ID tejto div je hlavičky. ID tohto div je obsah, a ID tohto jedného je päta. A ako už názov napovedá, ak máte atribút ID vo formáte HTML, podľa definície musí jednoznačne identifikovať jedným z prvkov, jeden z tagov vo vašom stránke. Záťaž je úplne na vás, nezabudnite, že máte hlavičke ID už. Máte päty. Máte ID obsahu už. Počítač nebude prísť na to, čo k dispozícii ID je pre vás, takže si mohol náhodne dať 2 slová o ID hlavičku, a že by jednoducho bolo zlé. Musíte mať na pamäti to, čo ste vytvorili, ale akonáhle ste urobili, že oznámenie, čo môžeme robiť tu. Teraz môžem špecifikovať v mojom štýle značky na vrchole alebo ekvivalentne v mojom súbore CSS, keď som bol stále používate túto verziu, Môžem povedať, # hlavičku, a čo to znamená, že bez ohľadu na tag v tejto webovej stránky má ID záhlavie a #, len ľudskú konvencií, predstavuje ID. Ostrý znak alebo znak libry predstavuje ID. Header je názov, ktorý som dal. To znamená, že použitie tejto vlastnosti CSS na akúkoľvek tag na tejto stránke nesie ID hlavičky. Rovnaká dohoda tu. Použiť túto vlastnosť, ktorá sa stane byť rovnaké, do akéhokoľvek prvku ktorého ID je obsah, a potom tu dole všimnete som trochu obsiahlejší s pätu. Akýkoľvek prvok, ktorého ID je päty, ktorý tam môže byť len jeden z definície, choďte do toho a aby jej veľkosť písma menšie, jeho písmo hmotnosť tučné, jej okraj 20 pixelov. Čo to znamená? Je to len marže na hornej, dolnej, a ľavý a pravý. To znamená, že mi 20 pixelov neviditeľného rozpätie okolo neho len tlačiť všetko ostatné preč od toho trochu, ako by ste mohli urobiť v programe Word, Microsoft Word alebo Pages alebo podobne. A potom texte Zarovnať na stred. Poďme sa pozrieť na konečný výsledok, a potom sa vrátime do jednej zostávajúce fragment CSS tam. Toto je verzia 4, naša posledná na vyhľadávanie príkladov, a je to oveľa, oveľa viac sexy. Teraz, v spravodlivosť, som Googled "Google Font logo generátor." A že mi umožnila vytvoriť GIF, formát obrazu, ktorý vyzerá ako, že tam. V skutočnosti, môžete to urobiť taky. Máme "google fonty logo generátor." Poďme sa pozrieť, či to môžeme urobiť. Dobre, myslím, že to je na internetových stránkach som použil. Dá sa povedať, EC 10, napríklad, a aby im ich vlastné. Môžete hrať s touto celý deň a potom kliknite pravým tlačidlom na neho a potom stiahnuť aktuálne GIF, ktorý je všetko, čo som urobil. A skutočne, to je dôvod, prečo v mojom HTML, pripomenúť, tu Mal som disk značku, ktorá sme videli minulý týždeň krátko ktorého zdrojom je logo.gif. A čo bol opäť motivácie za to, že tento atribút alt, Táto alternatíva atribút? Jo. [Nepočuteľné Študent odpoveď] Dobré, takže 2 dôvody naozaj, ak prehliadač nedokáže vytiahnuť obraz pretože máte pomalé pripojenie k sieti alebo obraz je poškodený alebo niečo podobné, že aspoň človek môže vidieť "CS50 hľadanie" a potom tiež pre prístupnosť dôvodov. Ak máte užívateľa, ktorý je slepý a používa pre čítanie z obrazovky a preto samozrejme nemôže vidieť obrazy, ktoré možno aspoň počuť text, ak ich počítač hovorí to na ne. Všeobecne platí, že je to najlepšie praxi, pokiaľ ide o dostupnosť stránok tak, aby aj užívatelia v tejto situácii môže vidieť alebo počuť, aby som tak povedal, čo to je, že je na vašej strane. Je tu ešte jedna vec, že ​​som urobil tú čo je celkom zaujímavé, a uvidíme, viac o tom v probléme nastavenia 7 prostredníctvom jedného z krátkych filmov pod vedením jedného z výučbových štipendistov. Ale # obsah sa týka tagu ktorého ID je obsah, ale potom je tu medzera, a potom je tu slovo vstup. No, čo je na tom zaujímavé CSS je, že môžete odkazujú na tagy na stránke druhu hierarchicky, a čo to úryvok z prostriedkov CSS je nájsť značku ktorého ID je obsah, a potom použite nasledujúce vlastnosti na všetky vstupné značiek, ktoré sú potomkami obsahu, to je, že sú odsadené vnútri nej. Odsadenie, opäť, je len dôležité, aby v počítači, nie k človeku, ale podľa konvencie sme zarážke veci tak, ako sme sa ísť hlbšie do stránky, tak to znamená uplatňovať rozpätie 5 pixelov na každom vstupného prvku že je niekde vo vnútri alebo vložený vnútri  prvok, ktorého ID je obsah. Kto to má platiť pre? No, je to vlastne len tieto 2 ľudí tu. Všimnite si, že vo vnútri tohto formulára tam 2 vstupy, ako tam bol na všetkých týchto príkladoch. Ale všimnite si, že tieto 2 vstupy stalo, že sa vnorená, aj keď trochu hlbšie, pár vrstiev odsadenie, vnútri tagu, ktorého ID je obsah. Čo to znamená? Ak pôjdeme do prehliadača tu môžete vidieť niekedy tak trochu- dovoľte mi, aby som priblížiť, že je trochu vypchávky medzi tlačidlom a medzi textového poľa. Dovoľte mi, aby som dočasne vypni to. Nechaj ma ísť do mojej CSS, a nechaj ma ísť dopredu a len zmenu tohto rozpätie od 5 pixelov na 0 obrazových bodov. Nechaj ma ísť napred a potom uložte súbor, prejdite späť do vyhľadávača a znova, a pozerať sa na stred stránky. Všetko dostal stlačený dohromady, a keď som prvýkrát šľahačkou tento príklad sa Myslel som, že sa pozrel hlúpy s textovým poľom a potom tlačidlo bezprostredne pod ním. Chcel som pad ju trochu, tak som predstavil marže. Čo neurobíme v prednáške, je ísť cez niekoľko desiatok CSS vlastnosti, ktoré existujú, pretože opäť, tam sú veci ako veľkosť písma, font hmotnosť, rozpätie, text zarovnať, a niekoľko desiatok ďalších, a budeme vás odkázať na problém nastaviť 7 rôznych cvičení on-line a odkazy, ktoré vám umožní vybrať tieto veci. Ale to, čo je skutočne dôležité na konci dňa je pochopiť, ako sú aplikované tieto veci. Opäť, ak máme štýl tag vnútri ktorých môže ísť o selektory, radenie identifikátorov, ktoré určujú ktorým chceš použiť tieto vlastnosti, a potom si dať vlastnosti ako kľúčový hodnota dvojice oddelené dvojbodkou a potom skončil s bodkočiarkou, alebo môžete ripovať všetky tým von a dať ju do samostatného súboru CSS sama o sebe. Dobre, nejaké otázky na pojmy alebo veľký obraz CSS? Budete opäť vidieť viac z toho v PSet 7, ale budeme držať to všeobecne celkom jednoduché. Nie? Dobrá. Je čas pre skutočný programovací jazyk, a vrátime sa trochu CSS vo forme príkladu. PHP je vlastne úžasne prístupné jazyk v tom, že je syntakticky takmer ekvivalentná C. Inými slovami, ak viete, C, viete, z veľkej časti PHP, aspoň syntakticky, aj keď tam sú niektoré nové funkcie a niektoré nové pojmy budeme musieť pozrieť na. Ale pre najviac sa rozdeliť, teraz, keď sme prechod z C do PHP väčšina nových vecí je skutočne vo veľkom obrázku, ako použiť jazyk programu na webe ako protichodný k na príkazovom riadku alebo v riadku bliká ako sme to robili doteraz. Pre porovnanie, najmä s PSet 7 a záverečnej projektu dopredu, sa využiť tejto adrese tu, ak chcete, aby si prečítali na formalitách PHP. Je to vlastne ako bezplatný on-line učebnicu efektívne, a budete tiež zistíte, že to, čo je naozaj pekné o PHP je to, že existujú stovky funkcií, ktoré prichádzajú s tým, vzhľadom k tomu, v C ste nutne mať prístup k viac funkcií, než bolo v matematickej knižnici, CS50 knižnica. V PHP a mnoho moderných jazykov, Python a Ruby medzi nimi, získate prístup k toľkým ďalším funkciám, ktoré znamená, že si písať oveľa menej kódu, pretože môžete stojí na ramenách iných ľudí ktorí už bolo napísané určité veci pre vás. Poďme sa rýchlu prehliadku syntax PHP a potom napísať pár príkladov. Čo je pekné o PHP v prvom rade je tam to nie je hlavné funkcie. Ak chcete napísať program v PHP stačí začať písať kód, a nemusíte sa starať o hlavné. Nie je int. Tam to nie je návratu. Nie je ArGV, argc, že ​​je nutné pri písaní programu. Skôr stačí začať písať kód, a to v časti pretože PHP je to, čo sa nazýva interpretovaný jazyk. C bol zostavený, a to bol zostavený v tom zmysle, že začnete so zdrojovým kódom, spustite ho cez Clang, čo je kompilátor, a nakoniec po nejakom počte krokov získate objektový kód, 0s a 1s. PHP a Python a Ruby a Pearl a ďalšie sú rôzne druhy jazykov, v ktorej nezostavujú je. Nemusíte ísť od zdrojového kódu na 0s a 1s. Stačí spustiť zdrojový kód, a spustiť zdrojový kód písomne ​​v obvyklej textového súboru, končiť. php v tomto prípade miesto. c, a to, čo program robí na počítači je to doslova interpretuje svoj kód riadok po riadku po riadku. Inými slovami, skôr ako napísať program a program spustiť priamo, namiesto toho napísať program s súbor s koncovkou v php. Potom spustíte vlastný program s názvom php.exe, ak ste na Windows, alebo len PHP, ak ste na Mac OS alebo Linux, a poskytujú ako vstup do programu PHP vlastný zdrojový kód, a jeho účel v živote je čítať kód zhora nadol, zľava doprava, a to čo ste to povedal, aby robil. Poďme sa pozrieť, čo to bude znamenať syntakticky. V PHP máme podmienky. Tento snímok je totožný s tým, čo ste videli späť v týždni 1 pretože syntakticky podmienky, IFS a inde IFS a inde v PHP vyzerať presne takto. Pokiaľ ide o booleovských výrazov idú vyzerať presne takto. Pokiaľ ide o anding veci spoločne ako booleans to bude vyzerať presne takto. Prepína vyzerajú rovnako, a získate navyše tú výhodu, v PHP že spínača v C by mohli prejsť iba na char alebo int. Dalo by sa to prejsť na hodnotu reťazca. V PHP môžete skutočne výraz že je premenná, ktorej obsah je reťazec, a môžete skutočne urobiť nákupný reťazcov v reálnom intuitívnym spôsobom, nie je ukazovateľ porovnanie, aby bolo možné rozhodnúť, či chcete vec i alebo j, alebo niečo iné. Uvidíme, že potenciálne onedlho. Slučky príliš nádherne, sú rovnaké. Pre slučky majú inicializácii, čo je podmienka, a určitý počet aktualizácií. Kým slučky tiež existujú v PHP. Do while tiež existujú v PHP, a polia existujú v PHP, ale tu je miesto, kde syntax začína byť trochu iný, ale tieto pojmy sú rovnaké, a pojmy sú naozaj rovnaké ako tomu bolo v týždni 0 sa Scratch. V prvom rade je $ sign. To bol návrh rozhodnutia v PHP podľa ktorého všetky premenné v PHP design začína znakom $. Nie je viac X, Y, Z. Teraz je $ X, Y $, $ Z len preto, že. Je to niečo, čo mať na pamäti, a teraz na pravej strane to vyzerá podobne ako pole, ale my sme sa pomocou hranatých zátvoriek tu. V PHP a JavaScriptu, ako budeme nakoniec vidieť, deklarovať pole, ktoré robiť otvorenú hranatou zátvorku a zavrel hranatú zátvorku, a potom máte čiarkou oddelený zoznam hodnôt, či už ints alebo reťazca alebo písmen, čo chcete, v tejto výrazu tam. Teraz, ako sme niečo také v C? Čo bolo syntaxe pre staticky deklarovať pole známych čísel? To bolo zložené zátvorky, tak malý rozdiel tu, ale v oboch PHP a nakoniec JavaScript, iba využíva hranaté zátvorky, takže naozaj jediný zaujímavý detail je tu $ znak pre názov premennej a tiež hranaté zátvorky, a tam je jedna čudná vec , Ktorá bola vynechaná aj na ľavej strane znak =. Čo chýba, že sme sa vyžaduje niekoľko týždňov? Jo. [Nepočuteľné Študent odpoveď] Veľkosť, takže žiadna zmienka o veľkosť poľa. Úprimne povedané, neexistuje žiadna zmienka o hranatých zátvorkách na ľavej strane označenie =, a čo iného chýba z linky? Jo. >> [Nepočuteľné Študent odpoveď] Typ, takže to, čo je zaujímavé najmä o PHP je to, že sa nejedná o silne typový jazyk ako C, a že je silne zadali v tom zmysle, že je potrebné povedať char, musíte povedať int, musíte povedať float. Kedykoľvek budete chcieť premennú musíš povedať rinčať čo jeho typ. PHP je trochu lenivejší. Je to voľne zadali v tom zmysle, že môžete mať plaváky a pripaľuje a reťazce a ints a tak ďalej, ale jazyk sám naozaj nie je jedno, čo si dať dovnútra premenné. Nemusíte informovať v predstihu, čo dátový typ sa deje v premennej. Je to úplne na vás, tak to je pekný v tom, že nemusíte mať strach, ako moc o údaje písanie a obáv, aké sú vaše argumenty sú, a tak ďalej. To tiež znamená, prípadne funkcie v PHP sa bude môcť vrátiť buď int väčšinu času, a možno raz za čas sa vrátim bool, a false, napríklad znamenať, že sa niečo pokazilo. To nám dáva nejaké upsides, ale tiež nám umožní druh zámerné trochu lenivejší, pokiaľ ide o dátové písaní. Čo iného je tam mať na pamäti, tu? Premenné vyzerajú celkom páči, takže $ s = "hello, world." To je snáď inferable z predchádzajúceho príkladu, a máme iný typ slučky. Tento budeme skutočne vidieť raz za čas, pretože je to celkom šikovný, foreach konštrukcie. V tomto prípade, je slučka foreach sa vnútri svojich slov zátvorke 3 typicky, $ Niečo prvý, čo je to, čo pole chceš iterácii členmi, potom doslova kľúčové slovo ako, a potom konečne, ďalšie premenné meno, ktoré dostanete na výber. To môže byť foo, bar, alebo prvok, a čo tento konštrukt robí ak je $ pole obsahuje 10 prvkov na každej iterácii tohto poľa-ľúto, na každej iterácii tohto cyklu premenná nazýva prvok bude aktualizovaný byť prvý element v poli, potom druhý prvok v poli, potom tretí prvok poľa, a tým odstraňuje potrebu robiť niečo otravného hranatá zátvorka notáciu a $ I, aby sa index do poľa. PHP robí všetky, ktoré pracujú pre vás a na každej iterácii Len podá vám ďalší prvok z poľa bez toho aby ste museli poznať alebo sa starať o jeho číselné umiestnenie indexu. A potom konečne, pre teraz, je tu ešte jedna ďalšie rys PHP že to bude veľmi užitočné, najmä keď sme sa začať s programovaním na webe, a to je známe ako asociatívne pole. V pole, ktoré poznáme, teda pokiaľ ide o 20 sekúnd pred a za posledných 8 týždňov sú číselne indexované pole, druh tradičných polí, kde indexy sú ints, 0, 1, 2, úplne hore. Asociatívne polia sú oveľa silnejšie. Tie vám umožní mať ľubovoľné klávesy, ľubovoľné indexy a ľubovoľné hodnoty. Zatiaľ čo v tradičnom pole je 0, 1, 2, v asociatívnym poli môžete mať index alebo kľúč foo, ktorých hodnota je bar. Potom môžete mať iný kľúč, ktorého meno je baz a ktorých hodnota je qux. Opäť platí, že hlúpe počítačovej vedy druhové názvy premenných tu, ale ide o to, že tieto polia nemá držiak 0 alebo konzolou 1. Je to miesto bude mať držiaku foo a konzoly Baz. To je oveľa viac univerzálny v tom, že budeme mať možnosť spojiť slová s inými slovami, kľúče s hodnotami úplne svojvoľne, a budeme mať možnosť získať tieto hodnoty späť v konštantnom čase pretože pod pokrievku toho, čo asociatívne pole naozaj je hash tabuľka. Pripomeňme, že hash tabuľky umožňuje, aby v niektorých vstupov ako dal v slove Davida, ak chcete vložiť Davida do nejakého slovníka, a potom sa vrátiť nejakú hodnotu obvykle. V prípade Speller, true alebo false. David alebo čokoľvek slovo alebo nie je v slovníku. Asociatívne pole je naozaj len hash tabuľky, ale je to oveľa viac užívateľsky prívetivé stelesnenie toho. Ako uvidíme, bude to, ktoré nám umožní robiť niektoré veci veľmi, veľmi ľahko. Poďme sa pozrieť na nejaké základné PHP Príklady a uvidíme, čo môžeme urobiť s týmto jazykom. Nechaj ma ísť napred a otvoriť v našom zdrojovom adresári dnes súbor s názvom hello1.php. Tento súbor je ďalší komentár, než je skutočný kód, tak nech mi skutočne odstrániť všetky pripomienky zo súboru a predloží vám možno najjednoduchšie PHP programu tu. 5 riadkov, a niektoré z nich sú prázdne miesto, takže zaznamenáte niektoré kľúčové rozdiely tu. Súbor sa volá hello1.php. Prvý riadok, keď je , znamená to, že je to pre moje PHP kódu. Poďme sa pozrieť, ako spustiť tento. Chystám sa vrátiť do svojho terminálovom okne tu. Chystám sa ísť do môjho PHP adresára. Všimnite si, že máme veľa súborov, prvý z ktorých jeden je hello.php. Nechaj ma ísť napred a spustiť tento, hello1.php, zadajte. Prístup zamietnutý. Dobre. Ako sme pevne veci, ako je tento v minulosti? Čo je to? >> [Nepočuteľné Študent odpoveď] Potrebujeme čítať a písať, ale nechaj ma to urobiť ls-l. Označiť túto trochu záhadný výstup podľa ktorého hello1 Zdá sa, že čítať a zapisovať mne ale čitateľné všetkými ostatnými. Ukázalo sa, že to v skutočnosti nie je krok správnym smerom. Rozdiel, opäť s interpretovaný jazyk sa nemusíte spúšťať program priamo. By ste namiesto toho použiť tlmočníka a odovzdať ho kódu že ste napísali tak to môže interpretovať je riadok po riadku. V tomto prípade, tlmočníka alebo program, ktorý som v skutočnosti chcete spustiť je doslova nazýva PHP. Niekde na tomto disku spotrebiča je program, niekto iný napísal len PHP alebo Windows php.exe. Čo budem robiť, je tu budem skutočne spustiť PHP ale dať to ako argument príkazového riadku kódu, ktorý som napísal, a potom budem oddialiť a stlačte klávesu Enter. To beží môj program mi, zhora nadol, zľava doprava. Nechaj ma ísť napred a otvoriť mierny rozptyl tohto. V hello2.php oznámenia, že to taky je väčšinou pripomienky, tak mi dovoľte zbaviť tých ako rozptýlenie, a to, čo je jasne odlišné teraz o tomto súbore? Tam je to nová rada, trochu tajomná hore. V riadku 1 je #! / Bin / php. Bin je dohovor o Linuxe a Mac OS pre binárne súbory, tak / bin znamená, že tento je zložka obsahujúca veľa binárek , Ktorý je naprogramovaný, z ktorých jedna je PHP. #! je přezdíval shebang, ktorý je rýchly spôsob, ako to povedať, a čo to znamená je, že pri spustení tohto programu teraz tam náznak v hornej časti súboru , Ktorá hovorí počítaču, čo interpret použiť. To je trochu nepríjemné, ak ste mali povedať svojim užívateľom a vaše zákazníkov "Hej, my napísal tento program s názvom hello1.php." Jediné, čo musíte urobiť, je navždy spustiť PHP a potom názov tohto programu. Úprimne povedané, bolo by to jednoducho byť krajšie spustiť hello1.php, a skutočne, ak môžeme vykonať nasledovné kroky. Nechaj ma ísť ďalej a robiť ls-l, a všimnite si, v hello2 je to stále len čítať písať a potom si prečítajte čítať, tak som si ešte urobiť, hello2.php. Ale sme zaviedli to niekedy tak krátko minule, príkaz chmod. Ak som to chmod a + x, čo znamená, že všetky Plus vykonateľnosti, a potom hello2.php a potom sa ls-l opäť všimnúť, čo sa zmenilo. Jeden, Linux je mi ukázal názov súboru v zelenej vysvetliť myšlienku, že je to spustiteľný, ale ešte dôležitejšie je, na ľavej strane Všimnite si, že trochu representing x pre spustiteľný súbor je teraz nastavená. Čo to teraz znamená, môžem bežať ./hello2.php ako zvyčajne, stlačte Enter, a to z dôvodu shebang na veľmi začiatok súboru to je náznak, znovu, Linux, ktorá hovorí, použiť tento interpret spustiť tento súbor. Nerobte si starosti nútiť užívateľa skutočne písať. A čo je pekné teraz je to tak trochu irelevantné pre moje zákazníkov alebo moji priatelia aký jazyk som napísal tento program, takže môžem pokračovať s MV a premenovať vec hello2, napríklad. A teraz keď to urobím ./hello2 a oddialiť môj program beží. Tieto prípony súborov sú ľudské konvencie, ktorá je nevyhnutná niečo ako Clang a robiť, ktorí hľadajú pre ne. Ale pre PHP, mohol by som zavolať túto príponu, čo chcem. Mohol by som prinútiť svet, aby si mysleli, že som naozaj dobrý Ruby, a ja som mohol písať hello2.rb a potom spustiť to, a voila, teraz mám verziu Ruby, ktorá je úplná lož. Ale prípony súborov sú bezvýznamné v prípade, že je súbor spustiteľný a má tento špeciálny náznak v hornej časti súboru. Teraz, rovnako ako stranou, dovoľte mi ukázať vám rýchlo verzia 3, ktorá je trochu užitočný trik vedieť. V hello3 som niečo trochu zle že budem aktualizovať zdrojový kód online. Vo verzii 3 sa ukáže, že na väčšine linuxových počítačov je tu program s názvom env pre životné prostredie, a čo môžete urobiť je, ak máte tušenie, kde PHP je nainštalovaný na lokálnom pevnom disku, pretože to naozaj môže líšiť v závislosti na počítači že niekto používa, env len hovorí, spustiť env, ktorý je na väčšine systémov, a zistiť, kde je PHP. Len bežný trik, takže nemusíte mať strach o to zistiť, kde je program. Ale ak si pozor, aby zistili, kde je program a vy ste nestaral tak ďaleko môžete použiť príkaz, ktorý. Dovoľte mi, aby som oddialiť a typ, ktorý php, a všimnite si, že mi hovorí, že je to vlastne v usr / bin / php. Je to trochu lož. Je to tiež v priehradke. Je to jednoducho ukazuje mi prvý hit. Ak ste sa niekedy nad tým, kde je zvonenie, ktoré zvonenie, to je v usr / bin / rinčať, ktoré tvoria, usr / bin / make, a čo to znamená je po celú tú dobu ste mohli byť písanie usr / bin / rinčať zadajte spustiť rinčať, ale je to docela únavné k tomu, že, takže niektoré zložky ako usr / bin a bin sú považované za východiskový takže počítač vie, hľadať v nich pre vás. Akékoľvek otázky týkajúce sa písania super, super jednoduchý Hello World program v PHP a necháte ho? Vzhľadom k tomu, teraz začneme zavádzať presvedčivý syntax. Dobre, ideme na to. Tieto programy sme videli skutočne všetky z nich pred. Ak som otvoriť, napríklad, poďme urobiť beer1.php, nepôjdeme cez niekoľko verzií, ale to, čo som urobil bol som si sadol a nalial, alebo previesť môj C kód PHP kód tu. Väčšina z hornej časti súboru je komentáre nahor. Ukázalo sa, že je tu ešte jedna nová funkcia musíme nazýva readline. GetString, stiahnutie, z týždeň 0 vpred bol CS50 vec. PHP prichádza s vlastnou užívateľsky príjemný funkciu nazvanú readline že trvá 1 argument, ktorý určuje riadku ktoré chcete zobraziť na užívateľa, a to, čo robí readline je vráti bez ohľadu užívateľ zadá v V tomto prípade, som deklarovaní premennej s názvom $ n Som skladovanie v ňom návratovú hodnotu readline po výzve užívateľa s týmto reťazcom. Len pre zálohovanie, skutočne spustiť túto vec, nechaj ma ísť napred a spustiť php beer1.php. Koľko fliaš bude? Urobme 2 tentoraz. Enter. To je všetko. Program je funkčne zhodný s verziou C od týždne. Ale syntakticky poďme pozrieť, čo je odlišné. Potom, čo som si int z užívateľského oznámenia, že robím nejakú kontrolu chýb, a ak je n menšie ako 1 som prestal a ja vytlačiť Ospravedlňujem správa pre užívateľa a výstup s 1. Aj to je trochu iný.  V C čo sme urobili? V jazyku C sme sa vrátili 1. V PHP môžete ukončiť, 1, ktoré úprimne povedané je myslím trochu viac intuitívne preto, že ste doslova ukončenia programu. Dobre, a potom sem otravné pieseň je totožný syntakticky okrem premenné, takže sa tu v súlade 24 vpred všimnete moju dušu pre sláčiky je takmer rovnaký, ale mám $ pred i a n, a čo je tiež chýba z riadku 26, ktoré sme mali v minulosti pri deklarovaní premennej i? Tam je žiadny typ. Je nesprávne v PHP povedať int. Vy proste musíte urobiť, že. Počítač, interpret PHP je dosť šikovný na to, aby si uvedomiť, že ak vložíte číslo $ I to bude liečiť ako číslo pre vás. A potom sa tu pripojiť $ i, $ i, $ i - 1. To všetko je rovnaké, a potom tu dole budeme robiť "Wow, to je nepríjemné" printf a potom ukončite (0). Opäť, stánok s jedlom je, že aj keď budeme tráviť pomerne málo času na PHP, určite versus to, čo sme urobili na C, je to skoro rovnaké, a tak to, čo budeme dnes robiť a budúci týždeň a ďalej je zameraná naozaj na niektoré z nových myšlienok. Len vidieť, že jedna vec sa preložiť cez od C, to bolo super jednoduchý program, ktorý sme robili v 1. týždňa alebo 2, ktoré kocky hodnotu. Ale čo bolo zaujímavé, v čase, keď o tomto programe je to, že zaviedol aj pojem vlastné písomného funkcie, ktorú sme sami napísali. Syntax v PHP je takmer rovnaký. Tu je môj program do hornej. Všimnite si opäť chýba, je nejaké poňatie o hlavné. Aj začať písať kód, a to je to, čo sa deje, aby si vykonaný tlmočníka. Aj vytlačiť x je teraz 2, pravdepodobne. Potom som tvrdiť, Cubing ... Potom som volať kocky funkcie a odovzdať $ x a priradiť návratovú hodnotu $ x. Potom som tvrdiť, že je to kocky, a potom som povedal to, ktoré snáď bude hovoriť x je teraz 8. Syntax pre funkciu v PHP je niekedy tak trochu inak. Opäť chýba, je návratový typ. Opäť chýba, je návratový typ a tiež chýba, je to, čo iný typ? [Nepočuteľné Študent odpoveď] No, jo, to je dobrý. Vráťme sa k tomu v druhom. Nemáme napríklad int tu. Nechceme, napríklad, že int tu preto, opäť v PHP jednoducho nemusíte, a to nemal robiť, že, ale tam je to nové kľúčové slovo volané funkcie. V PHP je to skoro trochu jasnejšie, pretože ak chcete funkciu ste doslova povedal funkciu, dáte mu meno a potom čiarkami oddelený zoznam ak niektorý z jej argumentov. Nie je potrebné hovoriť, neplatné alebo niečo podobné, že, a potom návrat je rovnaký, $ * $ * $. Čo je tiež chýba? Sammy upozornil tento tu. V hornej časti súboru úplne chýba v PHP je tiež prototyp. Aj to je zámerné. Jazyky a tlmočníci, ako PHP sú múdrejší ako C kedy bol v kompilátory ako Clang. Pripomeňme, že zvoniť, ak ste nepovedal to, že kocku existuje, ak ste si povedať, že printf existuje ako s prototypom alebo # include, dobre, to bude revať na vás a ani kompiláciu kódu. PHP a ďalšie moderné jazyky sú oveľa múdrejší, keď príde na toto. Budú mať to na sebe prečítať všetky vaše kódu a potom kričať na vás iba vtedy, ak zistí, že kocky nikde. Nezáleží na tom, či je kocka na dne alebo hornej, alebo dokonca v niektorých samostatnom súbore. PHP a podobné jazyky sú teraz dosť bystrí na to dívať dopredu na všetko, čo pred považovali vás ako mať urobil chybu. Ak nám teda zostáva? Poďme urobiť posledný príklad tu v podmienkach, a keď som otvoriť conditions2.php oznámenia príliš Syntax je tu takmer rovnaký. Ja používam readline miesto GetString, ale že linka je rovnaká ako predtým, "Rád by som číslo prosím." Potom som mať, ak podmienku, else if, a potom iný, ale funkčne je tento program tiež totožné s tým, čo sme robili pred niekoľkými týždňami, takže keď som spustiť túto vec, PHP conditions2, a dám mu číslo ako 23 - Vybral som si kladné číslo. Ak dám, že -1 Vybral som si záporné číslo. Ak dám, že som naozaj vybral 0 0. Takže kto sa zaujíma o všetko? No, jeden z legrace druhu cvičenia tu aspoň pre mňa bolo vrátiť sa späť a uvidíte, ako rýchlo by som mohol implementovať PSet 5, pravopisné chyby Pset. Pripomeňme si, že tam bol tento súbor s názvom speller.c, a tam bol súbor s názvom dictionary.c. Čo som urobil, bolo mi trochu strávil niekoľko minút a ja som konvertoval kód C ku kódu PHP, a nebudeme tráviť toľko času na Speller pretože rovnako ako v PSet 5 ste naozaj potrebujete trávia veľa času na Speller sám, pretože vaša pozornosť bola na slovníku. Postačí, keď poviem, že ak budete čítať cez Speller, tento súbor tu, je to celkom veľa zodpovedá kódu C sme vám dali za PSet 5. Práve som pridal nejaké $ miestach. Zmenil som niektoré názvy funkcií v prípade, že neexistovala v PHP. Je tu ešte jedna ďalšia vec tu, preg_match, čo je trochu obsiahlejší spôsob, ako robiť niečo, ale vrátime k tomu nakoniec. Ale v skratke, pravopisu je takmer totožné, a keď sa pozriete na samom dne to, čo sa nakoniec vypľuje je to tu, slová nesprávne, slová v slovách slovníka, v texte. Dobre, takže to, čo je zaujímavé, teraz je nasledujúci. V hornej časti môjho súboru som vyžadujúce dictionary.php. Rovnako ako C je # include PHP má špeciálnu funkciu nazvanú vyžadujú že skoro robí to isté, vyžadujú súbor s názvom dictionary.php. Ako môžem ísť o implementácii PSet 5? Nechaj ma ísť ďalej a otvoriť súbor tu. Dovoľte mi, aby som trochu odkaz tu. A dovoľte mi vytvoriť nový súbor a spustite volaním tejto dictionary.php. Dovoľte mi, aby som dal ho do inej zložky, takže môžeme urobiť žiť. A teraz budem Zoom Chystám sa začať môj PHP súbor s otvoreným držiakom php uzavretý držiak. A potom tu bolo niekoľko funkcií, ktoré som potreboval na vykonanie pre PSet 5, tak mi dovoľte začať vykonávať niektoré z tých, tak kontrola funkcie, ktorý mal vziať slovo ako argument. Urobíme to a vrátiť sa k nemu za chvíľu. Tam bol zaťaženia pre funkciu, ktorá sa v čom ako argument? Slovník, takže súbor, ktorý som vlastne chcel načítať. Tam bol funkcia veľkosti, ktorá neprijala žiadne argumenty a tam bol na funkciu, čo bola tá druhá? Uvoľniť, ktorá neprijala žiadne argumenty ani. Jedná sa o 4 funkcie, ktoré by som napríklad teraz realizovať v PHP, a to, čo budem robiť, je pokračovať a urobiť to. Mnoho z vás používa hash tabuľku v PSet 5, tak nechajte ma ísť dopredu a vytvoriť hash tabuľku v PHP. Hotovo. To mi dáva hash tabuľky. No, prečo? Jeden je premenná s názvom $ table, len vykúzliť predstavu hash tabuľky. Hranaté zátvorky, aj keď, spomínam, predstavujú čo? Pole, ale v poliach PHP nemusí byť číselne indexované. Oni môžu tiež byť asociatívne pole, čo znamená, že môžete mať ľubovoľné kľúče a hodnoty. Rovnako ako v PSet 5, tí z vás, kto to urobil hash tabuľky implementácie pravdepodobne znie slovo a potom ju vložil do reťazca prepojených zoznamov, alebo ste uložili hodnotu pravého kdesi niečo v tom zmysle. Môžete nejako spomenul na skutočnosť, že slovo tam bol. Pre túto chvíľu, že to bude môj hash tabuľka, a tak teraz ísť o vykonávaní kontrolnej funkcii Aj stačí sa pozrieť dovnútra tohto hash tabuľky a uvidíme, či slovo je tam. Čo budem robiť, je, že poviem ak, povedzme isset, čo je PHP funkcia, ktorá doslova znamená, kľúčov, tak isset ($ tabuľka [$ slovo], a ak áno, vráti hodnotu true. To je všetko. To je Pset 5 v PHP. No, v spravodlivosť, v poriadku. Else vráti false, tak to tam nie je. Čo sa naozaj deje? No, ak tabuľka alebo hash table tu všeobecne- je asociatívne pole, ktoré znamená, že môžete index do neho so slovom ako "slovo", a budete musieť vrátiť nejakú hodnotu. Sme trochu dostať o krok napred pred seba. To by bolo celkom pekné, keby sme skutočne načítaný súbor najprv, takže zaťaženie nie je tak jednoduché, ale nechajte ma ísť dopredu a vybičovať  Naozaj rýchla implementácia zaťaženie. Nechaj ma ísť ďalej a povedať, slová, dostane súbor slovník. Súbor funkcie v PHP otvorí súbor a vráti sa do teba poľa všetkých slov v tomto súbore, Len podá je na vás. To bola veľká bolesť taky, nie? Teraz foreach, toto je náš nový konštrukt, foreach ($ slová ako $ slovo). Táto slučka sa začnú iterácie sa pole slová a priradiť k $ slovo premenné každé slovo v súbore od prvého do druhého na tretie až štvrté celú cestu takže nemám robiť nepríjemné [i] notáciu a podobne. A to, čo som jednoducho robiť pre každú z týchto slov je uložte ho vo svojom tabuľke indexovanie do tabuľky a potom robí pravda, pretože si pamätať že slovo je v mojom slovníku, všetko čo naozaj musíte urobiť, je druh otočiť a trochu hovoria, že toto slovo v mojom hašovacia tabuľke je tam, pravda. A pokiaľ to tam nie je, nemám explicitne dať false, inak by som musel dať false vo všetkých možných slov vo vesmíre. To stačí, ma len nastaviť hodnoty indexu ako pravdivé, ak slovo je vlastne v mojom tabuľky hash. Teraz som rezanie pár zákrut sem, že budem mávať rukami na teraz, ale teraz zaťaženie funkcia je hotovo. Aj načítať všetky slová zo súboru do poľa. Aj iterácii tohto poľa, a pre každé slovo v poli Aj zapojte ho do hash tabuľky s 1 riadok kódu. To je legrace. Viete, ako môžeme realizovať veľkosť teraz? No, veľkosť je vždy celkom jednoduché, v spravodlivosť. Tu sa môžeme jednoducho vrátiť počet tabuľky. To je celkom jednoduché aj spočítať počet vecí v tabuľke. To je vlastne celkom nie je najúčinnejší. Asi by som mala mať premennú s názvom veľkosti, takže môžeme urobiť v konštantnom čase, ale to je celkom jednoduché. Oh, a potom uvoľnite, ak skutočne chceme byť análny tu môžeme povedať, že to, ako sa uvoľniť niečo. Stačí nastaviť premennú rovnajúca sa prázdne pole, a zbaví všetkého, čo tam bol. Nie je potrebné volať zadarmo. Opäť, som odrezala niektoré rohy, a ospravedlňujeme sa za sadu problém prideľovanie 5 snáď v C, ale ak teraz pokračovať a spustiť to, Chystám sa skutočne spustiť verziu, ktorá som napísal v predstihu len preto, že som nemal žiadne syntaktické chyby vôbec. Nechaj ma ísť napred a spustiť pravopisu. Použitie je rovnaké. Tu je slovník súbor, ktorý nájdete len slovo foo. Tu je textový súbor, ktorý nájdete len foo bar. Poďme kontrolu pravopisu tento, tak pravopisu, pomocou tohto slovníka súbor na tomto textovom súbore. Je tu ešte jedna chybne napísané slovo, bar, a voila. Hotovo s PSet 5. Poďme sa 5-minút prestávku tu, a vrátime sa a viac na PHP. Dobre, sme späť. Poďme si-ma nenávidia za chvíľu. Poďme sa teraz skutočne uvidíme, či to nie je pozitívny skutočne vykonáva túto vec v PHP. Dajme tomu, že trvalo 45 sekúnd na prevedenie. Ale poďme pokračovať teraz beží veci. Nechaj ma ísť napred a spustiť verzii C z Speller, a budeme ho spustiť na jednom z najväčších súborov, ktorý je King James Biblie. A to je tu v-poďme do nášho adresára C, Speller na kráľa Jakuba 5th. Mnoho slovami s chybným. Dobre, tak to je výstup, ktorý pravdepodobne dostal, aj keď časy sa trochu líši, ak máš všetko funguje správne, a tak čas v celkovej kontrolu pravopisu Kráľ James Biblie bol 0,38 sekundy, takže celkom dobrá použitie tejto implementácie. Teraz ma nechaj ísť do verzie PHP, ktoré sme práve napísali. Dovoľte mi, aby som spustiť pravopisu na kráľa Jakuba. Jejda, ignorovať túto chybu. Som v zlom adresári. Speller na kráľa Jakuba 5th. Takmer hotovo. Dobre, bude prešibaný pozorovateľ si uvedomiť, že je viac ako 3 sekundy tam. To je pravda, doba chodu. Ukazuje sa, že to chvíľu trvá, pľuvať veľa textu z pretože ukladanie do vyrovnávacej pamäte problémy, ale dlhý príbeh krátky, to bolo 3,15 sekúnd strojového času, CPU času, versus to, čo bolo pred chvíľou? Ako 0.3. Myslím, že je to o poriadok pomalší, tak kde je to smiešne spomalenie prichádza? No, ako to bolo v prípade s väčšinou všetkých konštrukčné rozhodnutí, ktoré sme urobili v triede počas posledných 9 týždňov je to takmer vždy to kompromis. Niekedy medzi len priestorom, niekedy medzi priestorom a časom, priestor, čas a vývoj úsilie, a naozaj tu, aj keď sme uložili obrovské množstvo času, možno potenciálne 10-20-30 hodín rozvojovej času vykonáva kontrolu pravopisu od bičovanie ju v pouhých 45 sekúnd s týmto jazykom cenou, ktorú platíme, je, že je to o poriadok pomalší v dôsledku, a to je zvyčajne prípad s väčšinou všetkých interpretovaný jazyk, PHP, Python, Ruby, Pearl alebo iné rámci ktorého ak sa chystáte spustiť prostredníctvom tlmočníka a mať to čítať kód riadok po riadku, zhora nadol, zľava doprava, že sprostredkovateľ bude nejaký čas trvať jeho vlastné, a to, čo ste cítili tú v 3 sekundách, na rozdiel od 0,3 sekundy je skutočnosť, že je tento prostredníka, ktorý má na doslova interpretovať náš kód riadok po riadku, a nedaj bože, ak ste vo vnútri slučky s veľkým súborom obsahujúcim stovky tisíc slov. To réžia sa chystá sčítať a sčítajú a sčítajú a sčítajú. Pre nástroj, ako je tento, že to asi nie je najlepší jazyk použiť pre realizáciu spell checker, ak bezprostrednosti je v záujme užívateľov a pre vás. Ale luxus máme za chvíľu je, ak používať jazyk ako PHP alebo veľa interpretovaných jazykov v súvislosti s Web, v tomto prípade, máte výhodu že internet je oveľa pomalší ako väčšina počítačov. Máte GHz CPU v počítači, 2 GHz, možno dokonca viac v týchto dňoch. Ale realita je na internete je vysoká čiastka latencie pričom pre prehliadač hovoriť na serveri, aj keď sme to videli minulý týždeň , Že je to celkom rýchlo, polovica milisekundu alebo tak, to taky pridáva do, a ak ste sťahovanie veci ako obraz alebo fotografie Facebook alebo získanie okamžitých správ cez klábosení Facebook, Gchat alebo podobne, všetky tieto spiatočné časy medzi prehliadačom a serverom začiatkom pridať až, ktorý robí vaše konkrétne výber jazyka v mnohých prípadoch nie všetci, že relevantné, tak si v pohode pomocou mierne pomalší jazyk ako PHP alebo Python alebo Ruby ale pre ktoré existujú obrovské upsides pre vás a vaše kolegami a vaši priatelia, pretože môžete realizovať veci tak, tak oveľa rýchlejšie. A navyše, máte oveľa menšie riziko určitých bezpečnostných nedostatkov. Je tu žiadne ukazovatele v PHP. Nie sú tu žiadne SEG poruchy, ktoré možno ľahko vyvolať rovnakým spôsobom by ste mohli v C. S C si veľmi blízko k hardvéru. S PHP a podobných jazykoch ste trochu vyššej úrovni, aby som tak povedal, s mnohými obrany medzi vami a tým, čo sa vlastne deje vnútri stroja, a je to len kompromis. Sme sa dostali do bodu, mať tieto modernejšie, jazyky vysokej úrovne ako PHP, pretože z poučenie v jazykoch, ako je PHP v C. Ale ak nechcete pochopiť, čo sa deje na pod pokrievku celú dobu určite nemôže robiť správne rozhodnutia dizajnu, a určite, ak ide o prácu v mieste, ako je Facebook alebo Google alebo niektoré z týchto miest, ktoré sú stále hrá s veľkými dát aj keď idete späť a to medik a pracuje s nejakou MD na niektorých veľkých súboru dát, ktorá zahŕňala pacientov a lekárov a ako tie správne nástroje je veľmi presvedčivý pretože inak vaše analýza nejakého dátového súboru môže trvať sekúnd, alebo to môže doslova trvať hodiny. To je len jeden príklad, nie brániť vás s tým, ako oveľa viac úsilia to bolo v C, ale ktoré vám pomôžu uvedomiť, že keď sa implementovať niečo v C naozaj rozumiete, alebo teoreticky, naozaj pochopiť, ako všetko je alebo by malo byť pracovať, a máte takmer plnú kontrolu nad tým, čo sa deje pod kapotou, a s týmito jazykoch vyššej úrovne budete musieť vzdať väčšiu kontrolu k ľuďom, ktorí vymysleli je a sú predmetom viac ich konštrukčných rozhodnutie ako tá vaša. Ale ak berieme za samozrejmé, že výkon nie je tak dôležité, na webe, pretože z týchto ďalších otázok, len sieťové rýchlosti sú trochu pomalšie, ako CPU rýchlosti tak, takže môžeme nejako dovoliť, mierne pomalší jazyk ak upsides sme sa môže vyvinúť veci 10 krát rýchlejší, alebo dokonca viac. Poďme sa pozrieť, ako sa môžeme začať používať to. Nechaj ma ísť do priečinka medzi dnešnými príklady tzv frosh.ims, a to bolo skutočne osobne motivovaní tým, že prvá vec Som napísal pre web rokmi po nástupe CS50 CS51 a bol web pre program Frosh Chatu, prvák sálový šport, ktorý v tej dobe to bolo dosť rokmi, že v tej dobe tam bol žiadne webové stránky pre program, aj keď tam bol Web, a namiesto toho tam bol proctor v Wigglesworth pričom ak by ste chceli k registrácii pre volejbal alebo futbal alebo čo by ste vyplniť kus papiera. Tie by potom pešo cez dvor. Tie by potom zaklopať na dvere a šmykľavka v ich dverách alebo ručne do Proctor kus papiera s vaším menom na to, či chcete alebo nechcete, aby sa kapitán tímu, Aký šport ste chcel robiť, a čo koľaji si bol palcov Bolo to trochu starej školy spôsobom, ako robiť veci, a to bolo hlavným možnosť automatizovať mnoho tohto procesu. Stačí prejsť na webových stránkach. Tie niečo písať a Tu získate e-mailom potvrdenie, a bum, máte hotovo. To bol úplne prvá vec, ktorú som urobil, keď v jazyku s názvom Pearl, ale je to relatívne jednoduché urobiť v PHP, a to je trochu zástupca z problémov, môžete začať riešiť, keď sa môžete vyjadriť programovo a nemusí spoliehať na veci, ako stránkach Google alebo Excel alebo nástroje, ktoré budú odovzdané na vás. Vy teraz máte možnosť robiť veci, ako je tento. To je super škaredý verzia forme, ale poďme použite ho na začiatku rozhovoru, kedy je to zhruba to, čo vyzeralo ako forma rokmi pre nás k tomu, aby ľudia na webe sa prihlásiť k Frosh PI. Opýtali sme sa na meno, zaškrtávacie políčko za to, či alebo nie oni chceli byť kapitánom, muž alebo žena, a potom to, čo koľaji boli v, a potom by odoslať tento formulár. Pozrime sa najprv pozrieť pod kapotu na kóde HTML, ktorý reprezentuje túto webovú stránku. Nechaj ma ísť do froshims0, a ako stranou, pre PSet 7 beriem ako samozrejmosť adresáre a zložky, ktoré dávam veci dovnútra Budeme vás prevedie presne tam, kde veci musia ísť do spotrebiča, ktorý mod príkazy budete musieť spustiť, takže sa nemusíte starať o všetky hlúpe detaily synchronizácia od samého začiatku tu. Dobre, tu je froshims0.php. Dovoľte mi, aby som prejdite nadol, a to, čo je zvedavý tu, to je PHP súbor, ale to, čo je vo vnútri nej, jasne? Je to oveľa HTML, a naozaj, pôvod PHP boli naozaj za to, že Web-centric jazyk. Pred chvíľou sme ju k implementácii pivo príklad, podmienky príklad, ahoj príklad, a to je v poriadku. Môžete použiť PHP ako skriptovací jazyk kde je skript naozaj len nomenklatúru k rýchlemu a špinavé programu alebo niečo, čo píšete v napísanom alebo všeobecnejšie interpretovaný jazyk. PHP je super užitočná pre, pretože ste videli, ako rýchlo pomerne môžeme vybičovať programy v PHP. Ale to bolo skutočne určené na použitie pre web, a určené pre Web v tom zmysle, že sa tu všimnúť v hornej časti súboru Ja začať s