[Přehrávání hudby] Reproduktor 1: Toto je CS50 a to je konec týdne sedm. Dnes je možná, kde jsme Opravdu vám výuku jazyků. Zavedli jsme v minulosti pár týdny HTML a CSS, z nichž ani jedna jsou programovací jazyky. A skutečně, i když jsme ne podívat se na téměř všechny značky že přichází s HTML a téměř všechny vlastností, které CSS je dodáván s, že je trochu to pro HTML a CSS. My si jen obecně začít za předpokladu, že vás pochopit obecné myšlenky tagů a atributů, a stránky odesílána z klienta na server. Protože dnes začneme dívat na další programovací jazyk, PHP. Chystáme se udělat super rychlý. Nebudeme vás naučí, PHP samo o sobě, stejně jako jsme se snažit, aby vás učili C, sám o sobě, ale spíše programování. A skutečně, jeden z cíle pro tento kurz není naučit vás C, nebo HTML, nebo CSS, nebo PHP, nebo libovolný počet jiné buzz slova nebo zkratky, ale spíše informatice a jak programovat zásadně. A skutečně, dnes začneme brát tato školení kola off všechny dále tím, že letí prostřednictvím jazyk volal PHP, a to následovně. Tady je to, co tento jazyk vypadá. Ukazuje se, že není potřeba hlavní funkcí v programu písemné v jazyce PHP s názvem. Takže už zní trochu jednodušší než C, s nimiž jsme obeznámeni. Ukazuje se, že pokud jste chtějí deklarovat proměnnou, to budete dělat téměř identicky C. Ale tam je jasně jeden rozdíl tu když Prohlašuji řetězec, nebo možná dva rozdíly. Co vypadá jinak? Diváků: Znak dolaru. Reproduktor 1: Ano, je to dolar podepisovat, který jsme nikdy neviděli. A co chybí? To jo? Diváků: [Neslyšitelné] Reproduktor 1: Jo, není typ dat. Tak to dopadá, že PHP je to, co zavolejte volně typový jazyk, kde C je silně napsaný. Volně napsal prostě znamená, že existují různé typy dat, tam jsou řetězce a ints a plave. Ale počítač čísla, která mimo. Ty lidský programátor Nemusíte na to přijít. Takže vše, co musíte udělat, prohlásit je proměnná znak dolaru, název vaší variabilní, a pak se, například, quote konec citátu, hello world. No to je to, co podmínka vypadá v PHP. Jakékoli rozdíly? Ne. Tak se ukazuje, jsou shodné. A můžete mít méně poboček nebo více poboček, ale syntaxe zatáčky přesně totéž. Boolean výrazy mohou nutno objednat dohromady. Boolean výrazy může být spojkou A.. Stále máte přepínače. Dokonce i když jste nepoužili tyto, tyto existují v C a oni jsou funkčně ekvivalent v PHP. A ve skutečnosti, v PHP jsou trochu silnější. V jazyce C, můžete porovnat pouze určité datové typy, jako ints a znaků, zatímco v PHP můžete skutečně porovnávat plné opeřit struny bez nutnosti se starat o ukazatele a podobně. Tak tady je to pro smyčku. To je jen pseudokód kód, chcete-li. Ale strukturně je identická s C Zde je while, pseudokód therefore-- identický s C. Zde je dělat, když loop-- identické. A tak je tu druh tento vzor zde, přičemž tam je několik dalších syntaktický Funkce budeme skutečně uvidí. Ve skutečnosti, zde je pěkná způsob, jak v PHP přičemž Chcete-li iterovat přes pole, a vy nechtějí skákat přes duševní a syntaktické obruče vlastnění int i = 0, i méně než N, I a plus-- který je jen hodně otravné syntaxe. Můžete říct, že trochu více plynule pro každou čísla jako číslo, kde se v tomto případě dolar čísla znamení, já jsem za předpokladu, je jako čísla pole s názvem. A pak já jsem za předpokladu, že číslo, singulární, bude proměnná. A co PHP udělá za mě, když jsem opakovat v průběhu této smyčky je, v každém opakování, to bude aktualizovat proměnné číslo být i-tý prvek v číslech, množném čísle. Tak to prostě zvládá všechno pro mě. Žádné hranaté závorky, no znak dolaru, žádné středníky. Je to jen trochu jednodušší. No, pokud chcete, aby pole, se ukazuje, že jste Můžete udělat něco docela podobného C. Syntaxe je trochu jiný. Ale tady je pole s názvem Dolar znaménkem. A já používám, v PHP, náměstí konzoly, to dopadá. A budeme vidět tyto znovu přesto v JavaScript-- jiný jazyk. Jen jsem použít hranatou závorku notaci mít seznam oddělený čárkami celých čísel, v tomto případě. Ale to mi dává pole. Ale ještě silnější v PHP, máme také, jaké jsou obecně volal asociativní pole. A spousta jazyků mají tyto stejně. Věc, o C polích je to, že indexy pro pole, věc, která vás používat v hranatých závorkách, prostřednictvím kterého máte přístup k prvkům, musí být co? Diváků: [Neslyšitelné] Reproduktor 1: Musí být čísla nebo celá čísla, konkrétně z nuly na nahoru. No, v PHP, a to dopadá out, v jiných jazycích, můžete začít mít indexy, které nejsou číselný. Ale jsou ve skutečnosti slova nebo fráze, tak, že spíše než zkuste si vzpomenout, kde něco je, nebo uložené v proměnné i, můžete skutečně použít slovo a řekl that-- můžete říct ani slovo, jako je tento. Takže znak dolaru citace je jméno proměnné zde. To je poněkud funky syntax to je sdružuje dvě klíčové hodnoty párů pro tuto proměnnou. Konkrétně se to dává mi matice, která má délku 2. Ale indexy nejsou 0 a 1. Indexy jsou citace konec citátu symbol a citovat cena konec citátu. A hodnoty těchto indexů, v tomto pořadí, je FB na Facebooku a $ 79,53, když jsem se naposledy kontroluje cenu za to. Co to znamená? No, to znamená, že namísto psaní kódu takhle, kde jsem něco udělat jako je dolar sign-- nebo spíše, v C Ani bych mít znak dolaru. Já bych něco jako je citace a poté Já bych si držák jsem se dostat na některé libovolně číselně indexované hodnoty. Začíná dnes v PHP, pokud jste se chtějí dostat na nějaké hodnoty, máme nějak více sémantický výmluvnost. Jen ozdobný způsob, jak říkat můžeme stačí zavolat věci, jaké jsou. A pokud chcete získat na něco symbol, nyní si doslova dělat citovat konec citátu symbol v hranatých závorkách namísto pouhého čísla. Takže je to pěkný pohodlí. A to je tak nějak to teď. Je tu svazky Další funkce v PHP. A skutečně, PHP přichází s příslovečná kuchyňský dřez. Desítky, stovky funkcí přijít s PHP-- tak mnoho více než přišel s C. A to není primárně určeno k přemoci, ale spíše pomoci si uvědomit, že my ne Už nemusíte psát kód to je druh tady dole koncepčně. Nyní můžeme jen začít využívat mnohem více pokročilých funkcí, že jazyky jako PHP mají. Takže nemusíme se starat o pohybující se věci kolem v paměti. Nemusíme se starat o malloc a všechny tyto nižší úrovni, výkonné podrobnosti, které budete zápasit s, ne-li boj s, pset5, ale můžete začít brzy vzít za samozřejmost. Ve skutečnosti, pojďme napsat super jednoduchý program v PHP, a to následovně. Chystám se jít hlava do CS50 IDE tady, a to, co budu dělat je vytvořit nový soubor, který velmi jednoduše se bude jmenovat ahoj dot PHP. Takže místo toho, dot c, to je bude nazýván dot PHP. A pak se v tomto souboru, Můžu začít psát. Ale ukazuje se, že jedna věc, kterou musím vědět je, že každý soubor PHP obecně, potřebuje začít s nějakou speciální syntaxi. Podobně v duchu do HTML, ale opět, PHP je programovací jazyk, ne značkovací jazyk. Takže každý soubor, a je to něco hloupý hledá Připouštím. Otevřený držák, otazník, PHP. A to je jen způsob, jak jazyk je říct, hej, počítač přichází nějaký kód napsaný v jazyce PHP s názvem. A pak se na samém konci svého souboru, děláte druh druhu opaku. Nemusíte psát PHP znovu, stačí dělat otazník, úhelník. A pak něco, co dát dovnitř z těchto dvou značek, abych tak řekl, bude, nebo by měl být, PHP kód. Takže pojďme něco udělat super jednoduché. Chystám se jít dál a dělat tisk def, hello world, zpětné lomítko n, zachránit. A teď na mou výzvu, budu dělat, aby hello-- ne, budu dělat, dot lomítko ahoj. Ne, tečka lomítko, hm. Takže něco je něco jiného. A skutečně, to je hlavní rozdíl Mezi PHP a jazyky, jako je C C. byl tzv sestavují jazyk. Co to znamená pro C je třeba sestavit? Jaký byl důsledek? To jo. Diváků: Napsal ji do strojového kódu tak to mohlo být spuštěn v počítači. Reproduktor 1: Přesně tak. Musíme nejprve převést do takzvaný kód přístroje, nuly a jedničky, před tím, než bude skutečně spustitelný a rozuměl v počítači. Tím, Intel Inside. CPU uvnitř počítače. PHP, naopak, je to, co se nazývá interpretovaný jazyk, který Znamená to, že nemusíte zkompilovat do nul a jedniček, strojového kódu, místo toho jej ponechat, jak zdrojový kód. A místo toho předat jako vstup na program, tlumočník že někdo jiný psal Před lety, že to chápe řádek po řádku, znak pro znak. Takže jinými slovy, Lidé tam napsal program, který bude vypadat ve Vašem kódu řádek po řádku, a zjistit, co počítač by měl dělat, bez převedením přímo do nul a jedniček. Takže pokud to vidí pro smyčce, Tento takzvaný interpret se bude jako, v pořádku, měl bych něco udělat znovu a znovu a znovu. Co bych měl dělat? Dovolte mi, abych se na dalším řádku. Dovolte mi, abych se na dalším řádku. A to opravdu interpretuje ji řádek po řádku. Tak jej vykonat, nemám používat značku. Nechci používat dot lomítko v tomto případě. Místo toho jsem dělat PHP, což je název programu, také známý jako Interpret, to je předinstalovaný CS50 IDE, a teď musím složit linka argument, příkaz, který je jednoduše jméno z soubor, který chci interpretovat. Nebo přesněji mimochodem, že chci utéct. A když jsem stiskněte klávesu Enter, tady to máme. Ahoj světe. Nyní se ukazuje, že jsem použitou tiskovou def úmyslně aby nás most z C na PHP. Většina programátorů PHP, jak uvidíte, ani neobtěžujte použití tiskového def. Prostě použít funkci nazvanou tisk, který C neměl. A tak když jsem znovu spustit to teď, to vlastně chová funkčně stejné. Nemohu použít procento ů a procenta i, a tak dále, ale existují i ​​jiné způsoby, v PHP dělat to. To je ale pouze říkají, že syntakticky, jiné než některé podivné věci nahoru top, a některé podivné znaky dolů na dně, pojetí má nyní programování v tomto jiném jazyce se bude přesně stejné. Ve skutečnosti, pojďme udělat jednu další příklad. Takže budu pokračovat a zavřete tento soubor. Dovolte mi, abych vytvořit další, které Zavolám podmínky 1 tečka PHP. Takže bez nulové, protože to, co jsem udělal Byl Ohlédl jsem se před několika týdny, jsme měli soubor nazvaný Podmínky 1 bod C. A co Já jsem byl přeměněn v mém hlava, a tady na papíře, a brzy na kurz je webové stránky, řádek po řádku do PHP. Takže ve verzi C, jsme udělali něco jako řetězec s dostane dostat řetězec. Takže je to trochu jinak k tomu, že v PHP. Místo toho jsem jsem prostě jít dělat, nebo spíš, já mohl udělat int n dostane dostat int, v tomto případě dříve. Takže místo toho, budu dělat n dostane číst řádek, rád bych celé číslo, prosím. Takže je to jen můj výzva. A tak to dopadá, a Já bych jen vědět od mít číst nebo vidět funkce předtím, číst řádky funkce v PHP přebírá argument, který je výzva pro člověka, a jeho účel v životě je přečíst řádek textu že on nebo ona druhy uvedené v. A pak to, že ukládá Text do proměnné n. A teď bych mohl udělat něco jako jsem to udělal před několika týdny, stejným týden jeden z třídy. Je-li n větší než nula, pak jdu půjčovat si, že syntaxe jsme právě viděli, print def, sis vybrala kladné číslo, zpětné lomítko n. Else-li n rovno rovná nule, já jsem bude pokračovat a říct, tisk def, sis vybrala nulové zpětné lomítko n. Else, tady by měl případ Samozřejmě se, tisk def, sis vybrala záporné číslo. A můžeme zcela jistě realizovat logika této věci v spoustu různých způsoby, ale bod zde je to syntakticky, sotva něco je nové. Je to jen znak dolaru a Nová funkce a číst online. Ale v podstatě to, co je nového teď je mi to tlumočení. Já jsem průchodem jako vstup na jiný program. Takže pokud chci spustit to, je-li Neudělal jsem žádné chyby, Chystám se spustit PHP, z Podmínky 1 bod PHP, Enter, Budu psát v počtu 50, a předpokládejme, že teď to funguje. Vzhledem k tomu, logika je samé jako jeden týden. Dobře, takže to je docela nezaujatý, že jo? Mohli bychom to udělat v jakémkoli počet jazyků. Udělejme něco způsob silnější. Pojďme problém vrchní sada pět. Takže budu pokračovat, a to udělat. Jdu k vytvoření souboru volal slovník dot PHP, a nakloněný jak byste mohli být k zakódování dolů spoustu poznámek, poznámky pomohou pouze vy, pokud jste povolen implementovat problémy nastavit pět v PHP. Ale uvidíme, jak rychle jsme se teď mohou implementovat, že stejný problém set. Takže ve slovníku dot PHP, budu předpokládat, že zde již soubor ve světě s názvem pravopisu. A skutečně, Udělal jsem to v předstihu, a nebudeme projít této linii po řádku, ale pokud jste zvědavý později a opravdu chcete zabalit svou mysl kolem Rozdíly mezi C a PHP, doslova porovnat tento soubor, pravopisu, z dnešního zdrojového kódu že budeme psát později dnes, proti p set Pět speller tečka c, že ​​dáváme vám, a to je skoro stejný řádek po řádku. Je tu několik dalších dolaru. Pár funkce trochu jinak. Ale je to příjemný způsob, ze nějak viděl, jak přeložit jednoho jazyka do druhého. A to je téměř totožné linka pro linku. Ale budu předpokládat, že se existuje, a to, co budu dělat zde je pokusit se vyhodit váš mysl reimplementing celistvost problém dal pět cestu rychleji, než jsi dělal tak daleko. Tak například, budu první, deklarovat globální proměnnou s názvem velikost, a nastavit tak, rovná nule. Teď to není moc úspory. Kurzy jsou jste zavedli velikost skoro stejné, nebo náznak náznak, bude dnes večer nebo zítra, jen pomocí globální proměnnou s názvem velikost, a nastavení rovna nule. To není zvlášť úžasný spoiler. Takže jaké byly vaše údaje struktury výběr, ty z vás, kteří utíkají a přečtěte si, co spec datové struktury se většina z vás používáte? Hash tabulky nebo vyzkoušet, možná Někteří jejich varianty. Takže provádění hash tabulky alespoň, je trochu mnoho řádků kódu, v pořádku? A ne všechny z nich by mohl být funkční v tomto bodě v týdnu, ale to je v pořádku. Protože v PHP, kdybych Chcete-hash tabulky, hotovo. Je to tak? Takže této proměnné, které jsem jen prohlásil, je samozřejmě volal znak dolaru stůl, na zavedení předtím. Ale já opravdu chci, na konec dne, pole. Ale ne numericky indexován pole, protože to je jako dva týden věci, když jsme mluvili o polích. Chci hash tabulky. Ale hash tabulka je opravdu jen konkrétní způsob, jak říct, Chcete-asociativní pole. Chcete-li být schopni přidružených klíčů s hodnotami. Klíče s hodnotami. Co je to slovník, opravdu? No je to úplně svazek klíčů. Slova jako jablka, hrušky, a banán, a všechny tyto anglických slov že vám ruku. A hodnoty, které jste efektivně vložení do slovníku jsou buď pravdivé, nebo nepřítomnost, false. Jinými slovy, vkládáte celá parta klíče a hodnoty, jablko, to je pravda, hruška, pravda, banán, pravda. Tak, že při načtení nebo hledat up těmito údaji ve vašem hash tabulky s vaší funkci kontroly, ty jsi buď vrátit odpověď, Ano, našel jsem to v mém komplexu hash tabulky, nebo ne, není to tam, takže se return false. Takže k tomu, že všechno, co potřebujete, je datový struktura, jako jsem navrhl před. Já jen musí být schopni sdružovat slova jako, cituji konec citátu, symbol, s hodnotou, jako je, pravého. Takže tady je moje hash tabulky. Pojďme skutečně používat to. Takže tam je několik funkcí Potřebuji implementovat. Chystám se jít dopředu a kousat off funkce nazvaná velikosti. To trvá žádné argumenty. Já nemusím obtěžovat s Slovo, neplatné, v PHP. Já jsem prostě jít k návratu velikost. A jako stranou, PHP má tento minorly nepříjemné detail, kde když se něco je globální, musíte řekněte funkci, ve které, kterou používáte to, hej, to je globální proměnná. Takže, menší hloupost, ale vám muset udělat to přesto. A co zatížení? Jdu k provedení funkce nazvaná zatížení že se ve jménu slovníku, stejně jako v problém nastavit pět. A než budu pokračovat, Všimněte si, že nemám bylo psaní docela stejný věci. Co je to se pochopitelně liší v PHP o jak deklarovat funkci oproti C? To jo. Diváků: [Neslyšitelné] Reproduktor 1: žádný typ návratu. A opravdu, je to tak, PHP pokud je to volně napsaný, je také v tomto smyslu trochu nedbalý. Nemusíte specifikovat jako programátor to, co tato funkce vrací. Budete muset skutečně vypadat v kódu postava, která se. Nebo číst komentáře nebo dokumentaci. Takže výhody a nevýhody tyto druhy rozhodnutí. Ale musím říct, klíčové slovo, funkce. A když jsme se dozvěděli JavaScript za pár týdnů budeme vidět totéž znovu, ale je to stejný nápad. Jméno funkce, její argument nebo argumenty nebo jeho nedostatek, a nyní Zde je implementace. Takže budu řezat zatáčky jen některé být dramatický jen na chvíli. Ale budu pokračovat a říct. To je, jak mohu nahrát soubor do pole. K dispozici je funkce v PHP s názvem souboru. Podáte to je název souboru. To podá zpátky pole, uvnitř z nichž je každý řádek ze souboru. Z nula, jedna, na up se n minus 1 linek. To je to, že jo? Není f čtení. Není f get s. Není procent s. Neexistuje žádné bolesti hlavy. Není feof. Všechny ty věci, s nimiž jste zápasí snad, s p set čtyři a pět, zmizí. Tak jsem jen četl tyto řádky do soubor, a pak víte, co? Pokud chci iteraci nad těmito slovy, Mohu udělat, pro každý linek jako linky. Pamatujte si, že to byl druh chytrý způsob iterace nad pole, index indexem, a na každém opakování volání aktuální řádek, znak dolaru řádek. A právě tady budu jít a říkat stůl, držák, řádek, dostane pravdivé. Jinými slovy, je to, jak jsem se vložit do mého tabulky hash v PHP. Říkám znak dolaru tabulku, která je můj asociativní pole, která byla prázdný na řádek kódu nahoře. Pak jsem index do ní ne, pomocí celé řady, ale doslova použití klíčové slovo, které mi záleží. Možná je to jablko nebo hruška nebo banán nebo cokoliv, ale konkrétně jsem indexování do něj rád navrhl jsem již dříve. Beru jménu mého asociativní pole, a pak jsem používat citace unquote v hranaté závorky s řetězci, namísto skutečného počtu. A tak to je. Funkce zatížení je hotovo. Jakmile se tato smyčka iteruje, já jsem dal vše do tabulky hash. Nyní malý disclaimer, je tu pár věcí, které jsem si třeba opravit. A verze uvidíme po on-line budou mít všechny nuance, ale je to většinou jen bude nějaký kontrola chyb a některé drobné vychytávky. Ale to je opravdu podstata toho. Pokud se teď chci realizovat funkce zavolána zjistit, který očekává slovo jako argument, Jak bych mohl jít o tom, že? No, já prostě chtěl říct, je-li uvnitř mého stolu, na umístění slova, , pokud je nastaven. Takže pokud tam je-- ve skutečnosti, víte co? Budu dělat to v trochu pseudokódu. Ale myšlenka je stejná. Pokud to se rovná pravda, vrátí true. Dobře. Else-- můžete trochu vidět, kde toto je going-- vrátit false. Hotovo. Kontrola se provádí. Docela pěkný, že jo? A tak to, co je to opravdu dostat na? A to taky, řezat jsem nějaké rohy. Podívejte se na on-line verzi pro všechny nepatrných nuance. Ale to je podstata toho. Index do vašeho asociativní pole, také známý jako Hash stůl, jestli tam je hodnota tam, pokud je nastavena na hodnotu true, a pokud ano, return true. Takže jsme se smrskl všechny složitosti. Takže druh mysli vyfukování, že jo? Nebudu se obtěžovat s dokončením vyložit, protože v fact-- oh, víte co? Jo, pojďme dokončit jej vyložit. Uvolnit se v hash tabulky by mohl vypadat stejně jako funkce vyložit, vrátí. OK, takže to je vyložit. Protože není nic vyložit, že jo? Není malloc. Nechtěl jsem výslovně požádat operační systém pro cokoliv. Jen jsem začal používat proměnné. A tak to také je projevem rysy vyšších jazyků úrovni. Takže znovu, většina tohoto termínu jsme se zabývali zde dole s C. Super nízké úrovni. Můžete vidět paměti počítače. Můžete dotknout něco, co chtějí v paměti RAM počítače, k lepšímu nebo k horšímu. Tady nahoře, jdeme vzdát tuto moc. Ale můj bože, podívejte se, jak mnohem méně kódu jsem napsal. Ve skutečnosti, kdybych byl nemluvíme a mluví o mém psaní, bychom byly provedeny s Tento příklad před pěti minutami. Takže co je cena zaplaceno? Tak pojďme se podívat. Pojďme se podívat. Chystám se jít dopředu a spusťte CS50. Dovolte mi, abych nejprve jít do dnešní Příklady, kdy Mám adresář textů jako předtím. Chystám se spustit řešení, které Dodává se s problémem nastavit pět nazvaný pravopisu, která je v účtu CS50 je. A budu spustit na něčem velký jako Bible Kinga Jamese, jen proto, že jsme opravdu dát zaměstnanců řešení k testu. Teď někdy internet je něco pomaleji, o něco rychleji, Chvíli může trvat posouvat. Ale trvalo celkem .56 sekund kontrolu pravopisu Kinga Jamese Bible pomocí řešení zaměstnanců. Takže docela dobře. Yours by mohl být mnohem pomalejší, a to je naprosto v pořádku. Ale to je tady správně. Tak to je řešení personál. Pokud bych jít a vyčistit verzi PHP. A já budu dělat něco jako pečení výstavy věc. Chystáme se vzít kód, který jsem napsal dříve, takže je to naprosto správné. Protože kód jsem napsal nebude být naprosto správné právě teď. Ale když jsem spustit verzi PHP, co musím vzdát dnes? Trvalo mi pět minut, implementovat p set pět, já tvrdí. Jakou cenu jsem zaplatil? To jo. Diváků: Speed. Reproduktor 1: Speed. Co myslíš? Diváků: Bude to trvat déle. Reproduktor 1: Dobře. Uvidíme. Bude to trvat déle, ne psát, ale k jeho spuštění. To jo. Tak pojďme zkusit. Tak tady budu pokračovat a dělat PHP z pravopisu, a protože soubor je volal speller. Takže jsem neběží slovník, odvolání, Běžím program s názvem Kontrola pravopisu. Jdu se pak v tomtéž Soubor, King James pátý. Je to létání. To by mohlo být jen vysokorychlostní internet, takže se nemusíte číst příliš do toho. Ale to cítí déle jistý. 1.26 sekund. Tak to je ještě docela zatraceně rychle, že jo? A jediný důvod, proč se cítil jako více jako tři, nebo čtyři, nebo pět sekundy, že je to jen proto, byl internet je pomalý. Čas strávený Počítač byl 1,26 sekund, myslím, že ve srovnání s 0,56. Takže více než dvakrát tak pomalý. Teď, když je to pořád zatraceně rychle, ale je to projev z, opravdu, že přesná cena. Vzhledem k tomu, že jsme tlumočení v kódu řádek po řádku, a tento program PHP je čtení mého Kód shora dolů, zleva doprava, to musí udělat více myšlení. To má na druh převést to uvnitř sebe sama na odpovídající stroji kód za běhu, abych tak řekl, i když mechaniky jsou trochu odlišné. Místo toho, aby právě krmení k Intel CPU surové nuly a jedničky že nativně chápe. Takže naprosto, ruce dolů, jsme zaplatili cenu. A kód napsaný v jazyce, jako PHP má tendenci být pomalejší. Ale můj bůh. Takže teď, když jsem kontrolu pravopisu my soubor, trávím navíc 0,7 nebo tak sekund vs 20 hodin k provádění rychlejší kontrola pravopisu, že jo? Je to tak trochu kompromis. A pokud jste právě začíná p set pět, nemusí být 20 hodin. Může být mnohem méně než to. Ale je to kompromis, doopravdy. A pokud jste spuštění kódu na opravdu velké datové sady, nebo na ještě starší hardware, tyto druhy rozdílů určitě se sčítají. Nějaké otázky tak daleko? To jo. Diváků: [Neslyšitelné] Reproduktor 1: Je nám líto, to říkáš ještě jednou? Diváků: [Neslyšitelné] Reproduktor 1: Jste vzdát čas. No, tak jo. Ty se šetří čas tím, nemají na kompilaci, jestli to je to, co se ptáte. A skutečně, v CS50, většinu programů, i když může chvíli trvat psát, že jsou relativně krátké. Několik desítek, pár set řádků kódu, a tak sestavit docela rychle. Ale když začnete psaní větších programů, jako když jste Microsoft nebo jste Google a psaní opravdu velké programy v C nebo C ++, nebo podobně zkompilovaný jazyky, by mohlo trvat mnoho sekund, nebo dokonce minuty nebo déle, sestavit miliony řádků kódu. A tam taky, že Rozdíl bude sčítat. A ve skutečnosti, jakmile jsme Přechod dnes, ve stejný den Dnes, na webové programování pomocí PHP, že jste jít na to najít jen tolik příjemnějším psát kód když nemusíte dělat tyto hloupý Kroky, jako je změna k vašemu terminálu okna, typ make ahoj, re spusťte jej, znovu okno. Jen tolik hloupý mechanické kroky, které jen dostat v cestě dělat zajímavé, zábava práce. A skutečně jsme hodit to pryč s PHP. A můžeme komunikovat s tím rychleji. To jo. Diváků: [Neslyšitelné] Reproduktor 1: Jistě. Mohu objasnit, co to znamená být vykládány? Při kompilaci jazyk jako je C, to jde dolů jak jsme řekli na stroji kód, nul a jedniček. A Intel se rozhodl před lety, že Některé vzory nul a jedniček představují sčítání, odčítání nebo, nebo vytisknout, nebo jiné základní operace. Ve světě interpretovaný jazyka jako je PHP nebo JavaScript, nebo Python, nebo Ruby, nebo kytice jiní, místo toho někdo napsal interpreter-- v tomto případě, to je také nazýván PHP, totožná s jméno právního language-- že v podstatě má velkou smyčku v tom, že provádí iteraci přes všechny řádky kódu že jsem krmit jako vstup, stejně jako ahoj dot PHP, nebo slovník tečka PHP. A pak si můžete myslet na jejich velká smyčka jak mít spoustu podmínek. A tyto podmínky říci, je-li člověk napsal klíčové slovo pro, začít dělat jeho nebo její kód znovu a znovu. Nebo v případě, že člověk má písemný řádek kódu, pokud jen provést jejich další řádek podmíněně. Takže je to opravdu jako tlumočení že v lidském smyslu, řádek linkou, a to jen nějakou dobu trvá. Trvá nad hlavou. A tak to je price-- dobrý question-- platíme. Takže pojďme udělat další demo to je trochu dramatičtější. Tam je, řekl bych, že, přibližný to na 90% pravděpodobnost selhání hrozně, ale budete se divit, s 10% pravděpodobností. Takže každý rok se snažíme to udělat, čímž jsme pokusit se napsat program, který prochází problém nastavit nulu, pro kterou jsem předložené vaše telefonní čísla a Mnoho jiných demografických informací, a my jsme programově poslat textovou zprávu. A pak telefon každého z nás začne pípat nebo vibrační, a je to prostě úžasné, protože dobře, podívejte se na to, co počítače mohou dělat. To jen zřídka funguje správně Zdá se, že z velké části proto, že jsem si na černou listinu typicky Gmail nebo jinou službu Pro skutečně snaží udělat na stupnici toto. Ale legrační věc je příliš, protože jsme dnes nemají všichni tady, zábava fakt v poslední době jsme se Snažil to před dvěma lety, Myslím, že jsem napsal program že seděl ve smyčce iteraci přes všechny studenty ve třídě, a každý z nich textovou zprávu, a řekl něco jako, proč nejsi v přednášce? Láska, CS50 bot. Nemáš představu, kolik omluvný a druh bolestivé e-maily Dostal jsem odpověď podaná n minus 100 lidí, kteří nebyli zde ten den. A ještě zábavnější, více ostudné story-- Víte, pojďme dát to tam. Už je na videu před pár lety. Takže budete mě brzy vidět napsat pro smyčce, přičemž je to velmi snadné psát chybu v tom, že pro smyčku, tak, že první doba přes smyčku, budete odeslání jedné textové zprávy. Podruhé přes smyčky I by jste odeslali ještě jednu textovou zprávu, a pak ještě jeden textu zprávy, a ještě jedna. Ale ukazuje se, pokud uděláte překlep při programování, někdy mohou psát programy, které odesílají jeden textové zprávy, pak o dva textové zprávy, pak tři textové zprávy všem, kdo již obdrželi textovou zprávu. A jak víte, dělat něco, a něco, a něco, a něco, je velký O šarže textových zpráv, nebo n čtvercový, nebo $ 0,10 na textovou zprávu, $ 20,000. Naštěstí jsem narazila Control-C před tím se stalo, ale já jsem dlužím alespoň jednu z vašich předchůdců 20 dolarů za 200 některé podivné textové zprávy, které, ne jen šel do svého telefonu, ale Také to bylo jako starší Flip telefon tak to líbí vytlačeni ze svých Paměť každý druhý osobní textu Zpráva on měl vlastně dostal. Takže máme jeden cíl dnes, ne k tomu, že. Možná Zapnutí režimu V letadle. Dobře. Tak pojďme na A Program zde callled-- že budu říkat text, tečka PHP. A v předstihu, mám dva soubory zde. Udělal jsem soubor jen pro zaměstnance, který má všichni z personálu info, všechna jména z webových stránek Course. A pak teď jsem jen dát Některé falešné čísla 555-1212. Tak to by se ve skutečnosti nikam. Ale všimněte si vnitřek tohoto souboru CSV, který jsme mluvili o krátce před v kontextu souboru IO. Co je to CSV soubor? Oddělené čárkami proměnné. A to je něco jako velmi lehký databáze, chcete-li. Tam je druh jakési čtyři sloupce v tomto souboru, a tam zubaté, ale čárky podstatě představují sloupce v souboru. V prvním sloupci je TF nebo název CA. Druhý sloupec je jejich příjmení. Třetí sloupec je jejich telefonní číslo. A čtvrtý sloupec zřejmě je-- Čtvrtý sloupec je zřejmě to, co? OK, tak je to jejich nosič. Takže Verizon nebo Sprint, nebo co ne. A kdybych misspoke dříve, CSV. Oddělené čárkou hodnot je tady CSV. Tak co mám dělat s tím? No to je jen velký textový soubor, a je to docela dlouho, ne? Stejně jako to bude být trochu nepříjemné. A ukázalo se však, že když jsem chcete poslat textovou zprávu, pojďme říká Alex zde. Nech mě jít do svého prohlížeče a ukončit celoobrazovkový režim Jen tak mohu přepínat tam a zpět. Ukazuje se, podíváme se, jestli jsem jít tady, a přihlaste se do Gmailu, v pořádku. Nedívejte se v této části. Jen jsem se dostat do vidět. Samozřejmě, že může livestream stále vidět, co dělám. Dobře. Takže tady je právě Gmail s Účet John Harvardu. Takže pokud chci zaslat textová zpráva Alexovi, Mohu samozřejmě napsat novou zprávu. A ukázalo se, a já jsem zkouší to s Alexem předtím tady, takže můžete připojit určitou doménu jméno na telefonní čísla lidí, proto, že existuje ve světě věci volal SMS na e-mail brány. Což je ozdobný způsob, jak říkat všechny z nás, kteří mají mobilní telefony, které mají telefonní čísla, samozřejmě, tam pravděpodobně je pro vašeho operátora, určitá přípona podobně, při Vtext.com pro Verizon textové zprávy dot com, které můžete připojit k vašemu vlastní osobní telefonní číslo, a poté Vy nebo přátelé, nebo vaši rodiče mohou text, který v danou adresu. A Verizon má server, e-mail serverů, že po obdržení tohoto e-mailu, se dívá na numerické části a poté používá bez ohledu na speciální odvětví kouzlo mají skutečně poslat přes rozhlasové a televizní vysílání na konkrétní buňku telefon. Nyní je to pěkné, protože se mi nelíbí opravdu vědět, jak poslat textovou zprávu nebo psát kód, ale pro můj mobilní telefon, a vy byste mohli dělat přesně, že pro konečný projekt, ale teď všichni Mám, je můj laptop sem. Takže chci iterovat přes to CSV Soubor, linka, po řádku, po řádku, po řádku, chytit každý z telefonních čísel štábu, a jejich nosiče a programatically, zřetězit, to je, připojte telefon číslo s názvem příslušné domény a pak poslat e-mail. Tak to je hodně schodů. A hodně štěstí dělat to v C. Je to noční můra o situaci otevřít soubor, aby si ho přečetli linka, po řádku, po řádku, jak jste jsou vidět, nebo se může brzy vidět s problémem set pět, ne-li Problém set čtyři, a pak dynamicky zřetězit dva řetězce dohromady, protože v C, aby se dva řetězce a kombinovat je, Co děláte minimálně musíte udělat, s největší pravděpodobností? Musíte deklarovat více paměti, že jo? A zeptejte se, malloc, můžu mít více paměti? Tak jsem si dal polovina z toho tady, polovina tohoto sem. Je to tak mnoho kroků. A tím bodem jste ztratili Zájem o stupidní malé demo kde si telefon pípne každého. Pojďme udělat tento druh PHP styl, kterým jsme právě začít používat více, že kuchyňského dřezu. A myšlenky jsou v zásadě stejný, ale nemusíme se bát příliš hodně o tom nižší úrovni. Tak uvidíme, jak bych mohl jít asi dělá. A právě proto, že jsem ne opakovat chyby minulosti, Napsal jsem nějaké poznámky pro sebe zde. A uvidíme, jestli bych nás může chodit přes některé ze základních kroků, a pak pro dobro časům my budeme snad uřezal některé zatáčky na konci. Chystám se jít dál a dělat otevřený držák PHP začít tento soubor. A já jdu dál a to udělat. Popisovač souboru, jak budete brzy vidět, ve skutečnosti volá funkci nazvanou f otevřené. A pamatujte si to otevře soubor. A citát, konec citátu, r znamená co, znovu? Jen to otevřít pro čtení. Nyní v p sada pro jste to udělal. A rukojeť může být cokoliv, fu, bar, bas, jakýkoliv název proměnné. Ale obecně počítač vědec by zavolat otevřený soubor, dává vám popisovač souboru, něco, co se držet, abych tak řekl. Já jsem prostě jít dělat někteří kontrolu chyb. Takže pokud je rukojeť falešný, stejně jako v C, budu dělat něco podobného, nelze otevřít soubor, zpětné lomítko n. A pak jsem jsem prostě jít pokračovat a ukončit. A ukázalo se, v PHP, Nejsem uvnitř funkce. Není hlavní funkce zde. Tak jsem se nevracejí, samo o sobě. I ukončíte. Což je v podstatě totéž. A já jsem s ukončením pravděpodobně jedním y. Jeden prostě znamená chybu nějakého druhu. To je non-nula, takže je to chyba. Dobře, takže když jsem se teď tady v mém programu jsem otevřel soubor. Chystám se jít dopředu a prohlásit pole s názvem adresy, a C bych vědět Velikost pole předem, že jo? Nebo budu muset deklarovat to je ukazatel, a pak použít malloc. A pak pokaždé, když jsem si přečetl přes další řádku v souboru, Budu muset malloc více paměti, malloc více paměti. To je bolest v krku. A naštěstí, PHP a Ruby, a Python a JavaScript, oni poroste vaše pole automaticky za vás. Žádné další malloc. Žádné další správa paměti. Počítač se stará o to. Ale cena, kterou zaplatíte. Je to trochu pomalejší. A pro program, jako je tato nebudeme všímat. Budeme posílat 100 textových zpráv. Například nebude to cítit. Je to opravdu začne pouze na Ať už je váš jazyk volby když vaše data nebo vaše programy opravdu, opravdu značný, jak tomu bude v případě, spíše s naší webové věci bázi. Ale teď pojďme kupředu. I když se ukáže, je tu Funkce v C nazývá f dostat CSV. Soubor si CSV, že trvá popisovač souboru jako argument, a to pokračuje poté, řádek, podle řádek, po řádku, číst v řadě. Tak to prostě čte řádek textu ze souboru. Ale co je hezké o této funkci, to není jen mi ruce řádek textu. Zdá se, že pro tyto čárkami, a analyzuje linku. A analyzovat linku prostředky rozdělit že na určité hodnoty v tomto kontextu. Jinými slovy, znak dolaru řádek je proměnná, která je chystá dát mi spoustu indexů. To se děje, že je První sloupec v mém CSV. To bude druhý sloupec, toto bude třetí, a to bude čtvrtý. Vzhledem k tomu, odvolání, a Excelu ne spolupracovat v poslední době jsme to udělali, ale když jsem stáhnout personál dot CSV. Jejda, není možné přejmenovat. Kdybych stažení pracovníci ministerstva dopravy CSV, a zkuste otevřít ji, Už jsem registered-- Oh ani aktualizovat Excel od poslední návštěvy. Uvidíte, že v pracovníci ministerstva dopravy CSV, mám čtyři sloupce. Takže když jsem si přečetl v První řádek na Abby tady, znak dolaru řádek 0 Abby, znak dolaru řada z nich je Lyons, znak dolaru řádek dvou je její číslo, a pak nosič svého telefonu. Tak to je všechno. A to je hezké, protože já Nemusíte hned přijít na to, kde ve skutečnosti jsou všechny tyto čárkami. Takže budu pokračovat a to udělat, vzhledem k tomu, že definice, Budu říkat, že její jméno je v řádku konzole nula, jak jsem slíbil. A já jdu na grab-- a ve skutečnosti, víte co? Nebudu se bát její jméno, v tomto případě. Budu držet to jednodušší. Chystám se udělat její číslo je v řádku konzole dva, myslím. A její nosič byl kde? Řádek tři, jeden přes. Takže nic nového tam. Je to jen nula indexování do pole. A teď, budu dělat následující. V případě, že dopravce rovná rovná AT & T-- Já jsem prostě jít mít loop-- Chci vytvořit e-mail adresa, která vypadá takto. Je to bude 617-555-1212 na to, co se děje, text.ATT.net, je to, co chci dělat. Tak jak to mám udělat? Chystám se udělat následující. Její adresa bude její číslo, a teď, nech mě jít dopředu, a to udělat. To je nějaký funky syntax. Nemohl jsem udělat procent y trik, ale já si vlastně jen udělat. Takže tohle je PHP věc, ale uvažujme, co dělám. Dolarů podepsat adresu na levá, jen variabilní. Dej mi proměnnou. Nemám specifikovat typ. PHP se na to přijít. Na pravé straně, jaký je typ dat té celé věci na na pravé straně? Vypadá to jako řetězec, protože tam je dvojitý cituje na daleko odešel a krajní pravice. Teď tam je nějaký funky nová syntaxe zde. Tam je složené závorky, a číslo znak dolaru. Ale hádejte, co je to, že syntax Pravděpodobně říká PHP udělat pro mě? To jo. Stačí vložit hodnotu tam. Takže žádné procent s. Mohli bychom použít tisk f nebo S print f, nebo něco podobného, ale PHP a mnoho vyšší úrovně jazyky, budete vidět, že byste mohli dělají to samé funkčně, možná Šest různých způsobů. A tak to začíná být otázka designu nebo stylu. Tak to je jen mystický hledá způsob, říkat, dej mi e-mailovou adresu, ale plug-in číslem v Mezi těmito složenými závorkami. A složené závorky nebude skončí v konečném adresu. Nyní můžeme přeskočit některé Tyto linky pro kvůli časům. Takže v případě, že nosič se rovná rovná verHorizon-- Jejda, Verizon-- chci dělat něco velmi podobné, pokud adresa dostane, citát, konec citátu, Číslo na text.ATT.net. A pak můžu dělat stejný druh věc pro zbytek nosičů. Ale budu dělat tečka, tečka, tečka nyní. A teď pojďme předpokládat, že Chci přidat pole, tlačit. Chci přidat do array, nazvaný adresy. Tato adresa, je to, jak vás přidat něco do pole v PHP. Nemusíte dělat malloc. Nemáte-li změnit velikost pole. Stačí říct pole, tlačit. Co chcete, aby to, co push-- pole chcete tlačit něco na? Adresy. Co chcete, aby se zasadila na adresy? Adresa. A ve skutečnosti, pokud jste opravdu chci být chytrý, některé syntaktický cukr pro to, abych tak řekl, což znamená jen, jak to můžete udělat v hezčí cesta, by se to udělat. To má také za následek rostoucí adresy pole podle velikosti jedna, a pak plop že dodatečné e-mailovou adresu do něj. To jo. Diváků: [Neslyšitelné] Reproduktor 1: překlep na jinak if-- oh, dopravce. To je v pohodě. To bude také neměl rád můj selhání realizovat část tohoto programu později. Ale děkuji vám za lov. Ještě jedna chyba. Děkuji. Chceme, aby se to být Vtext.com. Ano. Dobře. Takže tam, kde to pro nás? Napsali jsme kód k otevření souboru. Máme smyčky iterovat přes řádky v souboru. Máme kód, který se přidá k mé pole, jeden po druhém se správně formátovaný e-mailovou adresu. Takže všechno, co opravdu zbývá jen poslat e-mail, aby každý z těchto lidí. Tak jsem šel dopředu a připravil jsem takto. Co budu dělat tady je-- a pojďme jděte do toho a přeskočit do určité skutečném kódu který vypadá takto. Takže tady je pre-pečené Verze jsem psal dříve. A všimněte si jsem dokončil provádění Sprint. Dokončil jsem se provádí T-Mobile. Dokončil jsem se provádí Virgin Mobile. A já se předem omluvit. Je tu několik nosiče, které někteří studenti ve třídě mají že jsem se neobtěžoval výčtu v IF podmínka zde. Takže ne všechny texty zhasne. Ale pojďme se podívat, co ještě musím udělat. I zavřete soubor, jen jako v p set čtyři. A to je nová syntaxe. A uvidíme trochu bit z toho v průběhu času, zejména s p nastavit sedm a osm. Ale to je syntax pro vytváření speciální typ konstrukce. Ukazuje se, že je knihovna, která přichází s PHP, volal PHP Mailer. Jeho smyslem života je programově odesílat e-maily. Je to kód někdo jiný napsal, že usnadňuje nám posílat e-maily, takže nemusíte mít na tam a zpět do služby Gmail, a vložit do e-mailové adresy lidí. Je tu celá řada linek zde že upřímně, já to prostě zkopírovali a vložit z dokumentace. A ve skutečnosti, pokud jste zvědavý, jsem opustil všechny adresy URL dokumentace v kódu, který budeme psát později. A všimněte si, že mezi věci, které jsem dělám je, říkám tuto knihovnu, použití serveru Gmail, že jo? SMTP jsme hovořili krátce o Když jsme se se na Yale o tom, že Simple Mail předávací protokol. Je to protokol, který servery používané k odesílání e-mailů, a that's-- Gmail má jeden z nich. Port, to je číslo portu TCP. To je v pořádku, pokud vás Neviděl 587 předtím. Jen vím, že z dokumentace. Tady je moje uživatelské jméno. Budu používat CF50 bot. A ve chvíli, já jsem prostě jít zadejte do bota aktuální heslo. A pak tady dole si všimněte, co zůstane. Set jsem z adresy se BOT na CS50.net. Myslím, že nebudete litovat zasláním textová zpráva na 800 lidí, že říká, chybíš mi, lásko CS50 bot, možná pro ty, kteří nemohli dělat to dnes. A pak se v řádku 76, co mám dělat? Tento druh vypadá jako C. Takže i rovná 0, n equals-- nyní počítat je nového. Ukazuje se, že pokud chcete získat počet věcí, v poli, nemusíte pamatovat si to ještě. Stačí si jen položte Funkce tzv počet, a to vám řekne, kolik Adresy jsou v tomto poli. A pak budu přidat adresa, na e-mailu. A vím, že to od pomocí dokumentace. Je tu funkci add adresu. A teď tam všimnete je z jednoho kusu syntaxe. Viděli jsme to předtím v C. Podobně v duchu. Můžete myslet na znak dolaru mailem jako proměnná, kterou je. Ale je to struct uvnitř které jsou nejen vlastnosti, Proměnné chcete-li. Ale ukazuje se, že v PHP, což je objektově orientované programování jazyk, stejně jako Java, pokud jste se APC. Znak dolaru mailu, chcete-li to-- to také má funkci uvnitř ní, nebo metody. Takže to znamená, že speciální PHP Mailer knihovna, pokud mám proměnnou této smlouvy, když chci volat funkci, která Dodává se s této knihovně, pro dnešní účely, Jen vím, že jsi použít notaci se šipkou. Není tečka notace. Je to jen na šipku. Ale to není ukazatel. Je to jen půjčil od syntaxe C je. Tak zavolej přidat adresy uvnitř objekt nebo variabilní této knihovny. Dobře. Toto je magický řádek. Takhle bych poslat e-mail. To je ekvivalent otevírání Gmail, psát to, a bít odeslat. Ale bude to místo toho poslat e-mail na tuto adresu, se tohoto orgánu, od CS50 bot. A teď klíč řádek. Tato linka byla chybějící v podobné 2.011 Myslím si, že když jsem naposledy zkusil. Tam, že linka, samozřejmě, vymaže adresy. Takže logicky, pokud I nerušte adresu po každé iteraci, první e-mail nebo textovou zprávu přejde k Alici, druhý jde do Alice a Bob, třetí jde do Alice a Bob a Charlie, proto je velmi drahé chybu Udělal jsem ten rok. Takže pojďme se podívat. Jsou tam nějaké otázky předtím, než Vám zašleme celý text Zpráva s 10 procentní pravděpodobnost? Nějaké otázky? Dobře. Pojďme mě jít sem a změna heslo na to, co by měl fungovat, bude pravděpodobně dostat na černou listinu Gmail. Takže oni by nemohli jít všichni out, protože se pravděpodobně nemají rádi nás posílání e-mailů 800 ve smyčce for najednou. Vzhledem k tomu, že to není zejména lidské chování. Oh, budu měnit ještě jednu věc. Až na vrcholu, budu sent-- změnit soubor, aby studenti dot CSV. A já se neotevře, ale to je totožný CSV soubor s ne 100 zaměstnanci, ale 800 studentů, jen z Harvardu, protože Yale má vybrání října tento týden. A vypadá to, že druh trhnout věci udělat na text všechny z nich, proč že nejsou ve své třídě na dovolenou. To je v pohodě. Jen Harvard studenti dnes uvnitř tohoto souboru. A teď se vraťme k mému okně terminálu. Jsem trochu nervózní. OK, takže teď budu jít do adresáře, PHP a textu tečka PHP. Jak se o jednom statečném dobrovolník? Takže nechci to na mě. OK, pojď nahoru. Jak se jmenuješ? MAYA: Maya. Reproduktor 1: Maya. Pojď nahoru, Maya. Dobře. Uvidíme, jestli to funguje. Dal jsem své vlastní e-mailovou adresu v file-- své vlastní telefonní číslo v souboru, takže doufám, že budu mít jeden stejně. Rád tě poznávám. MAYA: Podobně. Reproduktor 1: Takže vše, co musíte udělat, je stiskněte Enter pro odeslání 800 textových zpráv, kdybych neměl mhouřit. Nice. Chvíli může trvat, statisticky, dokud se k e-mailu address-- textová zpráva, která je v místnosti právě teď. Pojďme se lenošení a vidět. Diváků: [Whistling] Reproduktor 1: Oh, ano. Publikum: Oh, mám tě. SPEAKER 1: Pro smyčky are-- to není pomalý, protože PHP. Toto je pomalé, protože Gmail je škrticí nás a nikoli nechal nás poslat více než jako jeden e-mail za sekundu. Cokoliv? To bylo těžké něco pro mě vyzkoušet na domů se jen já a můj jednom telefonu, takže. Je to snad od bot? Ano? Ne? Říkat ano. Ne? Je to od kamaráda? Trapné. DOBŘE. Docela jistý, že to funguje ačkoli. Uh oh. Oni black-- oh, počkej. Oh, víš co? Okamžik prosím. Jen to bylo Mayové a já-- Mia,? MAYA: Maya. Reproduktor 1: Maya, budou Víš, co jsem udělal špatně. Oh, počkej chvilku. Myslím, že jsem poslal 100 textové zprávy do 555-1212. Připravit. Nemohu vyhrát některý rok. DOBŘE. Maya? Fix, že v post produkci. Sakra! Podle adresu. OK, čekejte. Litovat. Je to bolestivé každý rok. OK, jeden moment. To je dobré. Já místo toho bude, jak to udělat. Print adresa. OK, čekejte. Tisk adresy, držák i. Jo, líbí se mi to. Dolar sign-- OK budu vysvětlovat, co jsem si dělat ve chvíli, poté, co jsem běžet tohle. Každý rok. OK, jdeme na to. Mám jen--, a já nechci ukázat, telefonní číslo každého, ale Maya může potvrdit s kývnutím hlavy, že ona vidí každý je Telefonní číslo ve třídě že budu kopírovat do program s názvem Gmail. A pokud se v Gmailu, co chceme říct? Chybíš mi. Love-- to není ode mě. Ještě jsem ani hit ještě poslat. Tak pojďme do toho a dělat to, jestli můžu přiblížit. DOBŘE. Takže jsem pomocí program s názvem Gmail nyní. Pokud Maya, byste chtěli klepněte na tlačítko Odeslat, budeme simulovat, co to Kód by měl udělat. Cokoliv? [PÍPNUTÍ] Diváků: Jo. Reproduktor 1: Ano? Spasení? Diváků: Jo. Reproduktor 1: Chybíš mi. A já vyslat zbytek. Poslal jsem pryč polovinu, protože jsem si nemyslel, že Gmail by ti, projít. Takže stačí vzpomenout, dnes je den, že jste se dozvěděl, že mohu použít Gmail. To bylo děsivé. Velký potlesk pro Maya. Děkuji. Dobře, takže. Cože [PÍPNUTÍ] Máme několik pípnutí, ano? Dobře. Teď budu mít 700 opravdu nešťastné e-maily zpět od spolužáků. Tak aspoň uvidíme, jestli to stálo za to. Tak co se stalo? Budu zjistit, co se po faktu špatně, ale stačí se podívat, jak snadné to bylo k tomu, že v PHP. Co tedy můžeme vlastně dělat teď, máme tuto expresivitu PHP. To was-- to bylo hrozné. Dobře. Takže to bylo to, co by měla jít ven. To bylo mi testování dnes ráno na mém telefon, aktuální obrazovky mého telefonu. Ale teď pojďme zvážit, proč jsme vlastně zavádějí všechny tyto věci na prvním místě. Takže cílem není napsat tyto programy, které jsou zapsány na příkazovém řádku, je to tak? Tak jsem napsal jednoduchý ahoj programu, jsem napsal malý program, který dělá podmiňovací, a použity pro čtení linky a tak dále. A teoreticky, jen jsem psal program, který rozeslala 800 textových zpráv, plus mínus 800. A tento program bylo všechno ještě běžet na příkazovém řádku. A to je samozřejmě ne na internetu, že jo? Cílem je nyní začít používat to, co tvrdím, je jednodušší použít jazyk, Troufám si tvrdit více mocný jazyk, pokud jde z funkcí, které přicházejí s ním, na začátek psaní kódu, který generuje webové stránky. Tak naposledy, a minulý týden, mluvili jsme o HTTP a HTML. A co je hezké o HTML je to, že je to jen čistý text. A text je jistě něco, co můžete vytisknout doslova voláním tisk funkce f, nebo funkce tisku. A opravdu, že to, co je PHP nyní bude, abychom mohli dělat. Takže mezi příklady jsme mají v dnešní zdrojového kódu, Kromě některých z kódu že jsem dal tam před chvílí, máme programy, jako je to například. Froshims, nebo nováček Intramurální Sports, byl vlastně jeden z prvních extracurriculars Jsem se zapletl s lety. A moje spolubydlící a já jsem s některé další děti na akademické půdě, použitý ke spuštění programu froshims. Začínám své textové zprávy nyní. Nyní tak jsme, zpět v den, takže toto je 1996 nebo tak, tam byl internet, ale nebylo tam process-- Nebylo webové stránky pro froshims. A tak pokud byste chtěli zaregistrovat fotbal nebo volejbal, nebo cokoliv, byste vyplnit tuto věc volal kus papíru, a ty by pěšky přes Harvard dvůr, a vy byste ji posuňte do poštovního drážky Proctor, který byl v Wigglesworth, jedné z kolejí. A to byli ti registrovaná. A on nebo ona by pak sestavit e-mail na vás manuálně, stejně jako já právě tady udělal s Maya, a pak byste být potvrzena jak mít been registrován. Takže to bylo jako nízká visící ovoce, abych tak řekl. Bylo to trochu hloupé, že jsme používali papír za to. Chtěl jsem, abychom byli schopni prostě jít na internetových stránkách, nebo mají bažanti Vydejte se na webové stránky, zaregistrujte se na sport, a jen automatizovat hodně tyhle věci tím, že jejich jména a e-maily a tak dále do databáze. A ve skutečnosti, že úplně první verze webových stránek, pomocí výborný ošklivý HTML, Možná se podíval něco takového. Bylo to vlastně, ironicky, více trapné hledá než tento zádech dále pak. Ale já jsem použil programovací jazyk. Ne PHP, ale spíše s názvem Perl, což je starší jazyk, ale velmi podobný v duchu. A já prostě úplně učil to pro sebe. A to mi chvíli trvalo, než se přijít na to, žádá spoustu otázek přátel. Ale tam myšlenky byly přesně stejné. Protože to, co PHP byl vlastně určen pro není příkazový řádek věci jsme právě hráli s, ale pro webové programování. Je to opravdu vázána v jeho funkci nastavena na web, takto. To je froshims. A když jsem chtěl registrovat v této podobě, je to docela ošklivý, jistě, ale nech mě jít napřed a být méně pohodlné student, a bez ohledu na sport pro Matthews, klepněte na tlačítko Registrovat. Co chci, aby bylo možné udělat, je předkládat informace z formuláře, Není k serveru Google, jako je jsme minule, zcela podvádění pomocí jejich backend, já chtějí zavést vlastní backend kód. Což znamená, že psát PHP kód, který žije na adresu URL že mohou být data formuláře předloženy. A pak se váš kód, napsaný v PHP na serveru, pak může reagovat na tento vstup uživatele. Stejně jako jeho nebo její jméno, nebo komfortu, nebo koleji, a pak udělat něco s ním. V tomto případě jsem pouze blbě vytiskli jako text, který není tak docela. Ale můžete jistě Představte si, že pokud víte, HTML, a budete brzy vědět, jak generovat HTML s potiskem, f, a tisk, a podobné funkce, můžete samozřejmě generovat hezčí webovou stránku, která říká, hej Davide, ty jsou nyní registrovány. Jsi méně pohodlné studentka z Matthews, že jo? Stačí si jen použít spoustu% SES, nebo složené závorky a znak dolaru notace Použil jsem před chvílí, aby generovat text, který je více uživatelsky přívětivé než tohle. Takže pojďme se podívat na tomto jednom souboru. Froshim nula tečka PHP vypadá takto. Když jsem se znovu načíst CS50 IDE, froshim nula vypadá takto. To je froshim nula dot PHP. A co jste si o tomto souboru? Diváků: [Neslyšitelné] Reproduktor 1: Promiň, trochu hlasitěji? Diváků: [Neslyšitelné] Je to všechno v HTML. A ve skutečnosti, že je, protože co je zajímavé o PHP je to, že byla navržena být, pro lepší nebo horší, smíchali s HTML kódem. A ve skutečnosti, i když to Soubor, froshim nulovou dot PHP, má PHP komentář nahoře o tom, že je to všechno jen HTML. Ale naopak, když jsem otevřít, pojďme řekněme, registrujte nula bodů PHP, který Jen má velkou komentář v horní části. I to vypadá skoro úplně jako je HTML, s výjimkou co? Line, co, 21 vypadá trochu divně. Ale já jsem si všimnout do režimu PHP s otevřeným držákem otazníku PHP. Pak mám nějaké věci. A pak na konci tohoto řádku Málem jsem se, otazník PHP. A to je to, co mám na mysli promíchaly. Můžete napsat kód HTML, který jste právě chcete, aby server vyplivnout. Ale pokud chcete udělat něco dynamický někde uprostřed stránky, jako vložka moje jméno, nebo koleji nebo úroveň pohodlí, Mohu použít funkci jako tisku R, což je tisknout rekurzivní, což znamená jen vytisknout tuto proměnnou, formátování ji však budete chtít. Je to opravdu není pro lidských účely, je to jen pro ladění nebo diagnostické účely. Tak to je, jak jsem to udělal. Kdybych místo toho jít froshims dvou tečka PHP, Všimněte si, že akce tohoto formuláře není zaregistrován nulové dot PHP jako old-- ten předchozí vlastně byl. Ale je to zaregistrováno dvě dot PHP. Takže pojďme se podívat, jak tento se chová trochu jinak. Pokud bych jít do verze dvě. Pokud je tady, když jsem se zaregistrovat jako David, méně komfortní, z koleji of Mathews, registrovat. Takže tentokrát to říkal, vy jsou registrovány, opravdu ne. Podívejme se, co jsem tady udělal. Když se podívám na rejstříku dvou dot PHP, to má trochu PHP kód. Je to trochu čistší, i když to Stále zábaly poněkud delší na této trati. Všimněte si, sem. Jsem vytisknout můj HTML tag, moje hlava tag, můj název značky, hlava, tělo. A pak jsem začít říkat věci, jako je vstup do režimu PHP. A tak, že záznam, otevřete držák PHP-- otazník PHP říká, hej, server, execute-- interpretovat následující věci jako PHP až uvidíte koncový tag. A i když možná nevíte některý jiné PHP, než jste doposud viděli, si můžete přečíst druh to docela intuitivně. Je-li název je prázdný, nebo je pohodlí prázdný, nebo koleji je prázdná, co mám dělat? Co mám říci uživateli? Musíte zadat své jméno, pohodlí, a kolej, a tak dále. Jinak jsem říct, že jste registrovaný, no ne tak docela. A já říkám, opravdu protože tam žádná databáze. Nedělám nic s daty. Já jsem jen házet to pryč pro účely demonstrace. Teď jsem trochu šetřil po lince 22. Je tu více syntax tam, ale znak dolaru zdůrazňují příspěvek je docela zajímavé. A to je to, co je hezké o PHP. V PHP, máte, co se nazývá několik flash globální proměnné. Jsou nějak ještě více Důležitější než globální proměnné. A ti, všechno kapitalizovaný jako takový, přicházejí s PHP. Takže pokud máte server, který má instalován webový server, jako je Apache, a nainstalovat jazyk podpora pro PHP, najednou máte můžete začít používat tyto super- globální proměnné v kódu. A co je hezké o PHP je, že pokud jste právě napsat soubor, který končí v dot PHP, dát to na webovém serveru, a pak odeslání formuláře na to prostřednictvím této akce tagu a tag formuláře že činnost atribut v forma tag, PHP a web zcela vyřeší, jak se chytit Ze všech těchto párů klíčových hodnot out URL, jako je otázka mark q rovná kočky, to bude zjistit, jak q a kočky. Pokud odeslat fotografii, nebo uživatelské jméno, nebo heslo, jako je Facebook, PHP se přijít na to, pro vás kde všichni, že data jsou. A to bude jen ruce jste asociativní pole volal znak dolaru podtržítko příspěvek, nebo znak dolaru podtržítko dostat, V závislosti na tom, zda jste pomocí GET nebo POST podání. A to bude jen ruce vás super globální proměnné, takže pokud se chcete dostat na jméno že uživatel předložen prostřednictvím této webové formulář, jste doslova jen říct jméno ze super globální proměnné, cituji, konec citátu, jméno. A citát, konec citátu pohodlí, a citovat, konec citátu koleji. A budeme mít možnost dělat toto a ještě mnohem více s PHP. A i když to bylo vichřice pohled na to, budeme ponořit do mnohem příští týden. Budeme zavést databázi takže jste vlastně chystá začít provádět vlastní e-obchod based-- stejně jako webové stránky v několika týden času. Tak jsme se uvidíme příště, a doufám, že máš na textové zprávy. Mějte se. [Přehrávání hudby] [Otevírání dveří] SPEAKER 2: Ahoj. SPEAKER 3: Co se děje? SPEAKER 2: Co to děláš? SPEAKER 3: Práce na problém sadě. SPEAKER 2: Nice. Plácnutí. [PLÁCNUTÍ] Co are-- uh, co tady děláš? SPEAKER 3: jen visí ven. Právě jsem se vrátil z posilovny. Nemohl jsem si pomoct, ale Všimněte si, když jsme high-fived, že máte docela drsné ruce. Myslíte si, jít do posilovny? SPEAKER 2: Ne. Ne. SPEAKER 3: Ty vole, vypadáš dost velký. Což je špatné, protože každý ví, 8-ball je velký muž na akademické půdě. Plácnutí. SPEAKER 2: Uh, ne. Ne, myslím, že jsem dobrý. Myslím, že jsem dobrý.