[MUZYKI] Głośnik 1: To jest CS50 i to jest koniec tygodnia siedem. Dzisiaj jest chyba gdzie jesteśmy naprawdę uczy Cię języka. Wprowadziliśmy w ostatnich kilku tydzień HTML i CSS, z których żaden nie są języki programowania. I rzeczywiście, mimo że nie spojrzeć na prawie wszystkie tagi że HTML jest wyposażony i prawie wszystkie właściwości, które pochodzi z CSS, że niby to dla HTML i CSS. Będziemy tylko ogólnie zacząć zakładając, że Ciebie zrozumieć ogólne pomysły tagi i atrybuty, i wysyłane strony od klienta do serwera. Bo dzisiaj zaczynamy patrzeć na inny język programowania PHP. Mamy zamiar zrobić to super szybko. Nie będziemy was uczyć PHP per se, podobnie jak nie pragną nauczyć się, C, per se, ale programowania. I rzeczywiście, jeden z cele na ten kurs nie jest się uczyć C, lub HTML lub CSS, lub PHP, lub dowolne inne słowa buzz lub akronimy, ale raczej z informatyki i jak program zasadniczo. I rzeczywiście, dziś zaczynamy się te kółka off wszystko dalej, pływające w Język nazywa PHP, jak następuje. Oto co ten język wygląda. Okazuje się, że nie ma potrzeby główną funkcję w program napisany w języku zwanym PHP. Więc to już brzmi trochę prostsze niż C, z którymi jesteśmy zaznajomieni. Okazuje się, że jeśli Aby zadeklarować zmienną, robisz to niemal identycznie jak C. Ale jest niewątpliwie jednym Różnica tutaj kiedy Oświadczam, ciąg, a może dwie różnice. Jak wygląda inaczej? PUBLICZNOŚCI: Znak dolara. 1 głośnik: Tak, jest dolar znak, który nigdy nie widział. A czego brakuje? Tak? PUBLICZNOŚCI: [niesłyszalne] 1 głośnik: Tak, nie ma typ danych. Tak więc okazuje się, że PHP jest to, co wezwać luźno wpisane język, w którym C jest silnie wpisane. Luźno wpisany po prostu oznacza, że istnieją różne typy danych, istnieją łańcuchy i int i pływaków. Ale dane komputerowe to. Jesteś programistą ludzki nie trzeba zrozumieć. Więc wszystko co musisz zrobić, zadeklarować zmienną jest Znak dolara, nazwę swojej zmienna, a następnie, na przykład, cytatu, hello world. Cóż to jest, co Warunkiem wygląda w PHP. Wszelkie różnice? Nie. Tak więc okazuje się, są one identyczne. A może masz mniej oddziałów lub więcej oddziałów, ale obroty składni dokładnie to samo. Wyrażenia logiczne mogą zamawiane razem. Wyrażenia logiczne można anded razem. Masz jeszcze przełączników. Nawet jeśli nie są używane są te istnieją w C i są one funkcjonalnie równowartość w PHP. I faktycznie, w PHP są trochę mocniejszy. W C, można porównać tylko pewne typy danych, takie jak wskazówki i znaków, podczas gdy w rzeczywistości PHP można porównać pełne ciągi fledge bez konieczności martwić się o wskazówki i tym podobne. Tak oto na pętli. To tylko pseudokod Kod, jeśli będzie. Ale to jest strukturalnie identyczny C Oto pętla while, pseudokod therefore-- identyczne C Oto robić podczas loop-- identyczne. A więc jest rodzajem ten wzór tutaj, przy czym istnieje kilka innych składniowym Cechy jesteśmy rzeczywiście zobaczymy. W rzeczywistości, tutaj jest miły sposób w PHP, w którym, jeśli chcesz iteracji na tablicy, a ty nie chce przeskoczyć przez psychiczne i składniowe obręcze z posiadania int i równa się 0, i mniej niż n, ja plus plus-- które jest po prostu dużo składni irytujące. Można powiedzieć trochę więcej płynnie dla każdej liczby jak liczba, przy czym w tym przypadku numery znakiem dolara, jestem przy założeniu, jest jak tablicę o nazwie numerów. I wtedy jestem przy założeniu, liczbę, w liczbie pojedynczej, będzie zmienna. A co PHP zrobi dla mnie jak iteracji na tej pętli, na każdej iteracji to będzie zaktualizować zmienną liczbę do i-ty element będzie w liczbach, w liczbie mnogiej. Więc po prostu obsługuje wszystko to dla mnie. Brak nawiasy kwadratowe, nie Znak dolara, nie średniki. To tylko trochę prostsze. Cóż, jeśli chcesz tablica, okaże się, że Można zrobić coś bardzo podobnego do C. Składnia jest nieco inna. Ale tu jest tablica o nazwie Dolar podpisane liczb. I używam, w PHP, kwadratowe wsporniki, jak się okazuje. I mamy zamiar zobaczyć to jeszcze raz w JavaScript-- kolejny język. Ja po prostu użyć notacji kwadratowy wspornik mieć oddzielone przecinkami listę liczb całkowitych, w tym przypadku. Ale to daje mi tablicę. Ale jeszcze bardziej wydajne w PHP, mamy także jakie są na ogół zwane tablice asocjacyjne. I wiele języków mają one również. Rzecz o macierzach C jest to, że indeksy na tablicy, tym, czego stosować w nawiasach kwadratowych, za pomocą którego masz dostęp do elementów, musi być to, co? PUBLICZNOŚCI: [niesłyszalne] Głośnik 1: Muszą być liczbami lub liczby całkowite od zera, specjalnie na górę. Cóż, w PHP, a okazuje się w innych językach, można zacząć mieć indeksy, które nie są numeryczne. Ale to rzeczywiście słowa lub zwrotów, tak że zamiast spróbuj sobie przypomnieć, gdzie coś jest lub przechowywane w zmiennej i, rzeczywiście można użyć słowa i powiedzieć: that-- można powiedzieć słowo takiego. Więc znak dolara cytat jest Nazwa zmiennej tutaj. To jest składnia nieco Funky że to skojarzenie dwóch wartości klucza pary dla tej zmiennej. W szczególności, jest to daje mi tablica, która ma długość 2. Ale nie są indeksy 0 i 1. Indeksy są cytatu Symbol i cytat cena koniec cytatu. A wartości tych wskaźników, odpowiednio, jest FB na Facebook i $ 79,53, kiedy trwać sprawdzone cenę za to. Co to znaczy? Cóż, oznacza to, że Zamiast pisania kodu jak to, gdzie kiedyś zrobić coś jak dolar sign-- a raczej w C Ja nawet nie mają znaku dolara. Chciałbym zrobić coś jak cudzysłów, a następnie Chciałbym zrobić wspornik mi się dostać na niektóre indeksowane numerycznie arbitralnie wartość. Od dzisiaj w PHP, jeśli Ciebie chcą się na pewnej wartości, my sortujemy więcej semantyczna wyrazistość. Tylko fantazyjny sposób na powiedzenie możemy zadzwoń rzeczy, jakie są. A jeśli chcesz dostać na coś symbol, Teraz można dosłownie zrobić Koniec cytatu symbol w nawiasach kwadratowych zamiast szeregu czysto. Tak więc jest to miły wygoda. I to jest jakby to teraz. Jest kiście Inne funkcje w PHP. I rzeczywiście, PHP jest wyposażony przysłowiowy zlewozmywak. Dziesiątki, setki funkcji pochodzą z PHP-- tak dużo więcej niż przyszedł z C A to nie jest przeznaczone do przytłoczyć, ale raczej pomóc zdajesz sobie sprawę, że nie jesteśmy już napisać kod to jakby tu koncepcyjnie. Teraz możemy po prostu rozpocząć korzystanie o wiele bardziej zaawansowane funkcje że języki takie jak PHP mają. Tak więc nie musimy się martwić, przenoszenia rzeczy wokół w pamięci. Nie musimy się martwić o malloc I wszystkie te niższym poziomie, mocne dane, które będą zmagać z, jeśli nie walczyć z, pset5, ale można zacząć Wkrótce bierze za pewnik. W rzeczywistości, napiszmy super, prosty program w PHP, jak następuje. Mam zamiar iść łeb w CS50 IDE tutaj, i co mam zamiar zrobić jest utworzenie nowego pliku, że bardzo prosto będzie nazywany komentarzy dot PHP. Więc zamiast dot c, to będzie nazywany dot PHP. A następnie w tym pliku, Mogę zacząć pisać. Ale okazuje się, że Jedno muszę wiedzieć jest to, że każdy plik PHP w ogóle, musi na początek jakiejś specjalnej składni. W duchu podobnym do HTML, ale znowu, PHP jest językiem programowania, nie język znaczników. Więc każdy plik, i jest to rodzaj głupie patrząc muszę przyznać. Otwórz uchwyt, znak zapytania, PHP. A to dopiero sposób język na powiedzenie, hej, komputer tutaj jest jakiś kod napisany w języku PHP nazwie. A następnie na samym końcu pliku, robisz rodzaju rodzaju przeciwieństwo. Nie pisać PHP ponownie, po prostu zrobić znak zapytania, kątownika. I wtedy coś można umieścić wewnątrz z tych dwóch znaczników, że tak powiem, będzie, albo powinna być kod PHP. Więc zróbmy coś bardzo prostego. Mam zamiar iść do przodu i zrobić odcisk def, hello world, odwrotny ukośnik n, zapisać. A teraz w moim wierszu, zamierzam zrobić, aby hello-- nie, mam zamiar zrobić, Dot slash komentarzy. Nie, kropka ukośnik, hm. Więc coś jest inaczej. I rzeczywiście, jest to zasadnicza różnica między PHP i językach takich jak C, C był tak zwany językiem kompilowanym. Co to oznacza dla C, które są opracowywane? Jaka była implikacja? Tak. PUBLICZNOŚCI: Napisał go na kod maszynowy więc może być uruchamiany przez komputer. Głośnik 1: Dokładnie. Musimy najpierw przekonwertować go do tak zwany kod maszynowy, zer i jedynek, Zanim to rzeczywiście być wykonywalny i rozumiane przez komputer. Przez Intela w środku. Przez CPU wewnątrz komputera. PHP, przeciwnie, jest to, co się nazywa językiem interpretowanym, które Oznacza to, że nie skompilować do zer i jedynek, kodu maszynowego, Ci, zamiast zostawić to jako kod źródłowy. A ty, zamiast przekazać je jako dane wejściowe do programu, tłumacz że ktoś inny napisał lat temu, że ją rozumie linia po linii, znaków dla charakteru. Tak więc, innymi słowy, ludzie tam napisał program, który będzie wyglądać na linii kodu po linii, i dowiedzieć się, co komputer powinien zrobić, bez konwersji bezpośrednio do zer i jedynek. Więc jeśli widzi pętli for, to tzw tłumacz będzie tak, wszystko w porządku, powinienem zrobić coś znowu i znowu i znowu. Co powinienem zrobić? Pozwól mi spojrzeć na następnej linii. Pozwól mi spojrzeć na następnej linii. I to naprawdę interpretuje go wiersz po wierszu. Tak więc, aby go wykonać, nie używam makijażu. Nie używam dot ukośnik w tym przypadku. I zamiast zrobić w PHP, który jest nazwa programu, a.k.a. Tłumacza, to preinstalowany w CS50 IDE, a teraz muszę zdać argument wiersza poleceń, które jest po prostu NAZWA plik, który chcę interpretować. Lub więcej od niechcenia, że ​​chcę, aby uruchomić. A gdybym naciśnij Enter, nie mamy go. Witaj świecie. Teraz okazuje się, że używane do druku def celowo do mostu nas od C do PHP. Większość programistów PHP, jak zobaczysz, nawet nie przeszkadza za pomocą druku def. Oni po prostu użyć funkcji o nazwie drukowania, które nie mają C. I tak, jeśli ponownie uruchomić go teraz, to naprawdę zachowuje funkcjonalnie takie same. Nie mogę użyć procent s i procent i i tak dalej, ale są inne sposoby w PHP z robić. Jest to jednak tylko do powiedzieć, że składniowo, inne niż niektóre dziwne rzeczy góry, a niektóre dziwne znaki w dół w dolnej koncepcje się z Programowanie w innym języku będą dokładnie takie same. W rzeczywistości, zróbmy jeszcze jeden przykład. Więc mam zamiar iść do przodu i zamknij plik. Pozwólcie mi tworzyć inny, że Zadzwonię warunki 1 kropka PHP. Więc nie ma zerowy, ponieważ to, co zrobiłem Spojrzałam było kilka tygodni temu, mieliśmy plik o nazwie Warunki 1 kropka C. A co I nie przekształcono go w moim głowa, a tu na papierze, i wkrótce na kurs na strona, linia po linii do PHP. Tak więc w wersji C, zrobiliśmy coś jak ciąg s staje się ciąg. Tak więc jest to trochę inaczej to zrobić w PHP. Zamiast tego, jestem po prostu zrobić, a raczej może zrobić int n staje się int, w tym przykładzie wcześniej. Więc zamiast tego, mam zamiar zrobić n dostaje przeczytać wiersz, chciałbym liczbę całkowitą, Proszę. Więc to jest tylko moje polecenia. I tak okazuje się, oraz Chciałbym wiedzieć, to tylko od po przeczytaniu lub widział funkcji przed, czytać wiersze funkcji w PHP przyjmuje argument, że jest szybka dla człowieka i jego celu w życiu jest, aby przeczytać wiersz tekstu że on lub ona typy w. A następnie przechowuje, że tekst do zmiennej n. A teraz mogę chcesz coś zrobić jak ja tydzień temu, w podobny tygodnia jeden z klasy. Jeśli n jest większe niż zero, to mam zamiar pożyczyć tę składnię właśnie zobaczyłem, drukuj def, wybrałaś liczbę dodatnią, odwrotny ukośnik n. Else if n równa jest równa zeru, jestem zamiar iść dalej i powiedzieć, druk def, wybrałaś zera ukośnika n. Indziej, w tym przypadku należy oczywiście być, druk def, wybrałaś liczbę ujemną. I z pewnością możemy wdrożyć logika tej rzeczy w kilka różnych sposobów, ale tu chodzi jest to, że składniowo, prawie wszystko jest nowe. To tylko znak dolara i nowa funkcja i przeczytać wiersz. Ale zasadniczo, co nowego teraz to ja interpretacji tego. Jestem przekazaniem go jako wejście do innego programu. Więc jeśli chcę uruchomić to, jeśli I nie popełnić żadnych błędów, Zamierzam uruchomić PHP, z Warunki 1 kropka PHP, wejść, Mam zamiar wpisać numer 50, i załóżmy na razie to działa. Ponieważ logika jest sam materiał jako jeden tydzień. W porządku, więc to dość rozczarowująca, prawda? Możemy to zrobić w dowolnym liczba języków. Zróbmy coś o wiele bardziej wydajne. Miejmy problemem wykończenie ustawić pięć. Więc mam zamiar iść do przodu i to zrobić. Mam zamiar stworzyć plik nazywa Słownik kropka PHP, i pochylił się, że możesz być wspiąć się wiele notatek, zauważa tylko pomoże Ci, czy masz prawo do wdrożenia problemy ustawić pięć w PHP. Ale zobaczymy jak teraz szybko się można wdrożyć ten sam zestaw problemów. Więc w słowniku dot PHP, mam zamiar przyjąć, że nie ma już plik w świecie zwanym Speller. I rzeczywiście, zrobiłem to z góry, i nie będziemy chodzić po tej linii po linii, ale jeśli jesteś ciekawi później i naprawdę chcesz owinąć swój umysł wokół Różnice między C i PHP, dosłownie porównać ten plik, ortografii, z dzisiejszego kodu źródłowego że będziemy pisać później dzisiaj, przed zestawem p pięć ortografii kropka c, że dajemy Ci, i jest prawie taka sama linia po linii. Istnieje kilka znaki dolara. A funkcje Kilka są trochę inaczej. Ale jest to dobry sposób, od rodzaju widząc, jak przetłumaczyć jednego języka na inny. I to jest prawie identyczna linia do linii. Ale mam zamiar założyć, że istnieje, i to, co mam zamiar zrobić tutaj jest spróbować wydmuchać nic przez reimplementing całość problemu ustawić pięć drogę szybciej niż robiłeś do tej pory. Tak na przykład, będę pierwszy Oświadczam, globalną zmienną wielkość, i ustawiona jest równa zeru. Teraz to nie jest dużo oszczędności. Kursy ty realizowane Rozmiar niemal tak samo, lub wskazówkę wskazówkę, będzie dziś lub jutro, tylko przy użyciu zmiennej globalnej o nazwie Wielkość i ustawienie jej równa zeru. To nie jest szczególnie niesamowite spoiler. Więc jakie były dane struktury wybór, tych z Was, którzy nurkowali w i przeczytać specyfikację, struktury, co dane które większość z was używa? Tabeli mieszania lub spróbuj, może niektóre ich warianty. Więc realizacji tabeli mieszania co najmniej, jest rodzajem wielu linii kodu, dobrze? I nie wszystkie z nich mogą być funkcjonalna w tym momencie w tygodniu ale to jest w porządku. Ponieważ w PHP, jeśli chcą tabeli mieszania, zrobić. Dobrze? Więc tej zmiennej, że mam zadeklarowane tylko jest oczywiście nazywa tabeli znak dolara, na wstępie przed. Ale ja naprawdę chcę, co koniec dnia, tablica. Ale nie indeksowane numerycznie tablica, bo to jak tydzień dwa rzeczy, gdy rozmawialiśmy o tablicach. Chcę tabeli mieszania. Ale tabeli mieszania jest naprawdę tylko konkretny sposób powiedzenia, chcesz tablicę asocjacyjną. Chcesz być w stanie stowarzyszonych klawisze z wartościami. Klawisze z wartościami. Co to jest słownik, naprawdę? Cóż to cały pęk kluczy. Słowa takie jak jabłka, gruszki, i bananów, i wszystkich tych angielskich słów że możemy przekazać Państwu. I wartości, że jesteś skutecznie wstawienie do słownika są albo prawdziwe, albo brak, fałszywe. Innymi słowy, czy wsuwasz cała masa par wartości kluczowych, jabłko, prawda, gruszka, prawda, banan, prawda. Tak, że kiedy pobrać lub szukać się tych danych w tabeli hash z funkcją wyboru, jesteś albo powrót odpowiedź, Tak, znalazłem go w moim kompleksie tablica mieszająca, czy nie, to nie istnieje, więc return false. Tak więc, aby to zrobić, potrzebuję tylko dane Struktura jak zaproponowałem wcześniej. Po prostu trzeba być w stanie skojarzyć słowa jak, cytatu, symbolem, z wartością, jak prawdziwy. Więc nie jest mój tabeli mieszania. Miejmy niej korzystać. Więc jest kilka funkcji Trzeba zaimplementować. Mam zamiar iść do przodu i gryzą wyłączyć funkcję o nazwie wielkości. To nie potrzebuje żadnych argumentów. Nie muszę męczyć się z słowo, nieważne, w PHP. Jestem po prostu zamiar wrócić rozmiar. I tak na marginesie, PHP to minorly irytujący szczegół, gdzie jeśli coś jest globalny, trzeba powiedzieć funkcję, w której używasz to, hej, jest to zmienna globalna. Tak, drobne głupoty, ale ci musisz zrobić, to jednak. Więc co z ładunkiem? Idę do wdrożenia funkcja nazywa obciążenia że bierze w imię słowniku, tak jak w problemu ustawić pięć. I zanim przejdę, zauważyć, że nie mam zostały wpisując dość tych samych rzeczy. Co oczywiście różne w PHP temat w jaki sposób zadeklarować funkcję w porównaniu do C? Tak. PUBLICZNOŚCI: [niesłyszalne] Głośnik 1: bez powrotu. I rzeczywiście tak jest, PHP w zakresie w jakim jest to luźno wpisane, Jest też trochę zaniedbany w tym sensie. Nie określić jako programista co to zwraca. Trzeba by naprawdę wygląda na kod, aby to zbadał. Lub przeczytać komentarze lub dokumentacji. Więc plusów i minusów tego rodzaju decyzji. Ale muszę powiedzieć, słowo kluczowe, funkcja. A kiedy dowiadujemy się, JavaScript w kilka tygodni mamy zamiar zobaczyć to samo jeszcze raz, ale to ten sam pomysł. Nazwa funkcji, jej argument lub argumenty lub jej brak, a teraz tutaj jest wdrożenie. Więc mam zamiar wyciąć niektóre zakątki tylko być dramatyczna na chwilę. Ale mam zamiar iść dalej i powiedzieć. W ten sposób można załadować plik do tablicy. Istnieje funkcja w PHP o nazwie pliku. Oddać to nazwa pliku. To oddaje z powrotem tablicę, wewnątrz z których to każda linia z pliku. Od zero, jeden w górę minus 1 do n linii. To jest to, prawda? Nie ma f odczytu. Nie ma f get s. Nie ma procent s. Nie ma bóle głowy. Nie ma feof. Wszystkie z tych rzeczy, z którymi byłeś zapasy być może, z p ustawić cztery i pięć, odchodzi. Więc po prostu czytać te linie w plik, a następnie wiesz co? Jeśli chcę iteracyjne nad tymi słowami, Mogę zrobić, dla każdej linii jako linii. Pamiętaj, że to był rodzaj sprytny sposób iteracji nad tablicą, indeks przez indeks, a na każdym powołaniu iteracji bieżąca linia, linia dolara znak. I tu mam zamiar iść i powiedzieć, stół, wspornik, linia, staje się prawdą. Innymi słowy, jest to, jak się wstawić do mojej tabeli mieszania w PHP. Mówię dolarów tabeli znak, który jest mój asocjacyjna, że ​​był puste na linii kodu w górę powyżej. Następnie wskaźnik do niego Nie stosując numer ale dosłownie za pomocą słów, które mnie obchodzi. Może to jabłko lub gruszka lub banan lub cokolwiek, ale specjalnie mi indeksowania do niego jak zaproponowałem wcześniej. Biorę nazwa mojego asocjacyjna, a potem użyć cytatu w nawiasy kwadratowe z łańcucha, Zamiast samej liczbie. I tak, to jest to. Funkcja obciążenia odbywa. Raz, że iteruje pętli, włożyłam wszystko do tablicy mieszającej. Teraz małe zastrzeżenie, istnieje Mam kilka rzeczy trzeba naprawić. A wersja wyślę Internecie będzie miał wszystkie niuanse, ale to w większości tylko będzie pewne sprawdzanie błędów i kilka drobnych poprawek. Ale to rzeczywiście sedno tego. Jeśli teraz chcą wprowadzić Funkcja zwana sprawdzić, która spodziewa się Słowo jako argument, jak mogę się do tego zabrać? Cóż, ja po prostu powiedzieć, jeśli wewnątrz mojego stolika, przy lokalizacji słowa, Jeśli zostanie ustawiona. Więc jeśli nie jest-- faktycznie, wiesz co? Mam zamiar zrobić to w trochę Pseudokod. Ale idea jest taka sama. Jeśli równa prawda, return true. W porządku. Else-- można rodzaj zobaczyć, gdzie to going-- do return false. Gotowe. Sprawdź odbywa. Całkiem ładne, prawda? A więc to, co jest w tym naprawdę chodzi? I to też wyciąć kilka narożników. Spójrz na wersji on-line dla wszystkich drobnych niuansów. Ale to jest sedno tego. Główna do swojej asocjacyjna, a.k.a. Tablica mieszająca, sprawdzić, czy nie jest to wartość nie, jeśli jest ustawiony na true, a jeśli tak, return true. Więc my stopniała wszystkie złożoności. Więc rodzaj umysłu dmuchanie, prawda? Nie przeszkadzało kończąc go rozładować, ponieważ w fact-- Och, wiesz co? Tak, skończmy go rozładować. Rozładunku w tabeli mieszania może wyglądać jak funkcja rozładowania, powrócić. OK, więc to odciążenie. Bo nie ma nic wyładować, prawda? Nie ma malloc. Nie wprost zapytać System operacyjny na wszystko. Właśnie zacząłem przy użyciu zmiennych. I tak to też jest przejawem cechy języków wyższego poziomu. Więc znowu, większość tego terminu mamy do czynienia tutaj C. Super niskim poziomie. Możesz zobaczyć pamięci komputera. Ty możesz dotknąć czegokolwiek chcą w pamięci RAM komputera, na dobre i na złe. Tu, będziemy do rezygnacji z tego uprawnienia. Ale mój Boże, spójrz, jak znacznie mniej kodu napisałem. W rzeczywistości, jeśli nie rozmawiali i rozmawia przez mojego pisania, bylibyśmy zrobić z ten przykład pięć minut temu. Więc co cena jest płatne? Dobrze niech spojrzeć. Spójrzmy. Mam zamiar iść do przodu i uruchamiania CS50. Pozwól mi wejść dzisiejsze przykłady, gdzie Mam katalog tekstów, jak wcześniej. Zamierzam uruchomić rozwiązanie to jest z problemem ustawić pięć nazywa speller, które konta CS50 jest. I mam zamiar uruchomić go na czymś duża jak Biblii Króla Jakuba, po prostu tak, że naprawdę umieścić rozwiązania kadrowe na próbę. Teraz czasami internet jest trochę wolniej, trochę szybciej, może trochę potrwać, aby przewijać. Ale to trwało łącznie .56 sekund aby sprawdzić pisownię King James Biblia używając roztworu pracowników. Więc całkiem nieźle. Pozdrawiam może być o wiele wolniej, i to jest całkowicie w porządku. Ale to jest tutaj prawidłowe. Więc to rozwiązanie personel. Jeśli pójdę i oczyścić wersji PHP. I mam zamiar zrobić trochę jak pieczenia pokaż rzeczy. Mamy zamiar wziąć kod napisałem wcześniej, więc jest to całkowicie poprawne. Ponieważ kod napisałem nie będzie być właśnie teraz całkowicie poprawne. Ale jeśli uruchomić wersję PHP, co mam dać się już dziś? Zajęło mi pięć minut wdrożenie p ustawić pięć, mam prawo. Jaką cenę nie zapłaciłem? Tak. PUBLICZNOŚCI: Prędkość. Głośnik 1: Szybkość. Co masz na myśli? PUBLICZNOŚCI: To będzie trwać dłużej. Głośnik 1: W porządku. Zobaczmy. To będzie trwać dłużej, nie pisać, ale, aby go uruchomić. Tak. Warto więc spróbować. Więc mam zamiar iść do przodu i robić PHP speller, a ponieważ plik na nazywa ortografii. Więc ja nie uruchamiając Słownik, przypomnijmy, Używam programu o nazwie ortografii. Mam zamiar przejść w tym samym Plik, King James piąty. To leci przez. To może być tylko dostęp do Internetu, więc nie czytać zbyt wiele do tego. Ale to nie czuje się już na pewno. 1.26 sekund. Teraz jest to jeszcze dość cholernie szybko, prawda? I tylko dlatego, że czuł się jak raczej trzy, lub cztery, lub pięć sekundy, to tylko dlatego, internet był za wolne. Komputer spędzony czas był 1,26 sekundy, w porównaniu Myślę 0,56. Tak więc ponad dwa razy powoli. Teraz to jeszcze cholernie szybko, ale to przejaw stanowi w istocie, że dokładna cena. Ponieważ jesteśmy interpretacji w linii kodu po linii, i że Program PHP czyta moje Kod góry do dołu, od lewej do prawej, to musi zrobić więcej myślenia. To musi rodzaj konwersji to wewnątrz siebie z odpowiednim urządzeniu Kod na bieżąco, by tak rzec, chociaż mechaniki są nieco inne. Zamiast po prostu karmienia do Intel CPU surowe zer i jedynek że rozumie natywnie. Więc absolutnie, ręce w dół, zapłaciliśmy cenę. Oraz kod napisany w języku jak PHP wydaje się być wolniejsze. Ale moim bogiem. Więc teraz, kiedy sprawdzić pisownię Plik spędzam dodatkowe 0,7 albo tak sekund vs ciągu 20 godzin w celu wdrożenia szybsze sprawdzanie pisowni, prawda? Jest to swego rodzaju kompromis. A jeśli dopiero zaczynasz p ustawić pięć, może nie być w 20 godzin. Może być znacznie mniej niż to. Ale jest to kompromis, naprawdę. A jeśli używasz kodu na bardzo duży Zbiory danych, lub nawet starszym sprzęcie, te rodzaje różnic z pewnością może dodać. Wszelkie pytania do tej pory? Tak. PUBLICZNOŚCI: [niesłyszalne] Głośnik 1: Przepraszam, może Mówisz, że po raz kolejny? PUBLICZNOŚCI: [niesłyszalne] Głośnik 1: Dajesz się czas. No więc tak. Oszczędzasz czas nie trzeba go skompilować, jeśli o to pytasz. I rzeczywiście, w CS50, Większość programów chociaż mogą one potrwać napisać, że są stosunkowo krótkie. Kilkadziesiąt, kilkaset linii kodu, a więc skompilować dość szybko. Ale po uruchomieniu pisać większe programy, jak jeśli Microsoft lub jesteś Google i pisanie naprawdę duże programy w C lub C ++, lub podobnie skompilowany Języki, może przybierać wiele sekund, lub nawet minut lub dłużej skompilować miliony linii kodu. I tam też, że Różnica będzie się sumować. I rzeczywiście, gdy będziemy dziś przejście, tego samego dnia dzisiaj, do programowania WWW za pomocą PHP, jesteś będzie go znaleźć tak wiele bardziej przyjemne do pisania kodu kiedy nie musisz robić te głupie kroki, takie jak zmiany w terminalu Okno typu make witam, ponownie uruchom go, odświeżyć okno. Tylko tyle głupi czynności mechanicznych, które po prostu w sposób robienia ciekawe, praca zabawy. I rzeczywiście rzucamy, że się z PHP. I możemy współdziałać z nim szybciej. Tak. PUBLICZNOŚCI: [niesłyszalne] Głośnik 1: Jasne. Mogę wyjaśnić, co to oznacza należy interpretować? Podczas kompilowania język jak C, to idzie w dół jak powiedział do maszyny kodu, zer i jedynek. I Intel postanowił lat temu pewne wzorce z zer i jedynek stanowią dodawanie, odejmowanie lub, lub drukowania lub inne podstawowe operacje. W świecie języku interpretowanym takich jak PHP czy JavaScript, lub Python, lub Ruby lub bukiety inni, a nie ktoś, napisał interpreter-- w tym wypadku to się nazywa również PHP, identyczny z Nazwa language--, że zasadniczo ma dużą pętlę w nim, że iteracje na wszystkie linie kodu że karmię go jako wejście, jak cześć Kropka PHP lub słownika dot PHP. I wtedy można myśleć o ich wielkim Pętla jako posiadające wiele warunków. A warunki znaczy, jeżeli ludzka napisał słowa kluczowego dla, zacząć robić jego lub jej Kod znowu i znowu. Lub gdy człowiek ma napisany wiersz kodu, jeśli tylko wykonują swoje Następna linia warunkowo. Więc to jest naprawdę jak interpretowaniu że w ludzkim sensie, linia po linii, i że po prostu potrzeba czasu. To trwa nad głową. A więc to jest price-- dobre question-- płacimy. Więc zróbmy kolejną demonstrację to trochę bardziej dramatyczna. Nie jest, powiedziałbym, A stadiony to na 90% prawdopodobieństwo, z braku strasznie, ale będziesz zaskoczony z 10% prawdopodobieństwem. Więc co roku staramy w tym celu, w którym możemy spróbować napisać program, który przechodzi przez Problem ustawić zera, na które masz złożone swoje numery telefonów i wiele innych informacji demograficznych, i programowo wysłać wiadomość tekstową. I wtedy każdy jest telefon zaczyna piszczeć lub wibruje, i to jest po prostu niesamowite, ponieważ dobrze, spojrzeć na to, co komputery mogą zrobić. To rzadko działa prawidłowo Wydaje się, że w dużej mierze bo zazwyczaj się na czarnej liście przez Gmaila lub innej usługi dla rzeczywiście próbuje to zrobić na skali. Ale najśmieszniejsze jest też, od kiedy nie ma tu wszystkich, dzisiaj, zabawy fakt, ostatni raz Próbowałem to dwa lata temu, Myślę, że napisałem program który siedział w iteracji pętli w stosunku do wszystkich uczniów w klasie, i każdy z nich wiadomości tekstowej, i powiedział coś w stylu: dlaczego nie jesteś w wykładzie? Miłość, CS50 bota. Nie masz pojęcia, ile przepraszał i rodzaju bolesne e-maile Dostałem odpowiedź od n minus 100 osób, którzy nie byli tutaj tego dnia. I nawet zabawniejszy, bardziej haniebne story-- wiesz, postawmy go tam. Jest już na wideo kilka lat wstecz. Więc wkrótce zauważysz mnie Napisać do pętli, w której to jest bardzo łatwe do napisania błąd w które pętli tak, że po raz pierwszy przez pętlę, ty wysłanie wiadomości tekstowej. Za drugim razem przez pętlę I powinny Wysłano jeszcze jedną wiadomość tekstową, a potem jeszcze jeden tekst wiadomość, i jeszcze jedno. Ale okazuje się, jeśli popełnisz literówkę podczas programowania, czasem Można pisać programy, które wysyłają jednego wiadomości tekstowych, a następnie dwie wiadomości tekstowe, następnie trzy wiadomości tekstowe do wszystkich który już otrzymał wiadomość tekstową. A jak wiadomo, robi coś, Plus coś plus coś, oraz coś, jest duże O partii wiadomości tekstowych, lub n do kwadratu, lub $ 0,10 na wiadomość tekstową, $ 20,000. Na szczęście trafiłem Control-C wcześniej się stało, ale nie winni co najmniej jeden swoich poprzedników 20 dolarów za 200 jakieś dziwne wiadomości tekstowe, nie tylko poszedł do swojego telefonu, ale również był jak starszy telefon z klapką tak jak wypchnięty z jego Pamięć każdy inny osobisty tekst wiadomość, że rzeczywiście dostał. Tak więc mamy jeden cel dzisiaj, by tego nie robić. Może włączyć tryb samolotowy. W porządku. Warto więc przejść do Program tutaj callled-- że wezwę tekst dot PHP. I z góry, mam dwa pliki tutaj. Zrobiłem tylko plik dla pracowników, które ma cały personel jest informacją, wszystkie nazwy ze strony internetowej oczywiście za. A następnie na razie po prostu umieścić niektóre fałszywe numery 555-1212. Tak naprawdę to nie będzie nigdzie. Zauważmy jednak, wnętrze tego pliku CSV, których rozmawialiśmy o krótko przed w kontekście plików IO. Co znajduje się w pliku CSV? Zmiennych oddzielonych przecinkami. I to jest trochę jak bardzo lekki bazy danych, jeśli będzie. Jest to rodzaj jakby czterech kolumnach w tym pliku, a nie poszarpane, ale przecinki zasadniczo reprezentują kolumny w pliku. W pierwszej kolumnie jest TF lub nazwa urzędu certyfikacji. Druga kolumna jest ich nazwisko. Trzecia kolumna jest ich numer telefonu. I czwarta kolumna najwyraźniej jest-- Czwarta kolumna jest najwyraźniej co? OK, więc to jest ich nośnikiem. Więc Verizon, Sprint, lub lub co nie. A jeśli misspoke wcześniej, CSV. Oddzielonych przecinkami wartości jest tutaj CSV. Więc co mogę z tym zrobić? Cóż to jest tylko wielki plik tekstowy, i to trochę długo, prawda? Jak to będzie być trochę denerwujące. I okazuje się jednak, że jeśli Aby wysłać wiadomość tekstową do, powiedzmy, mówi Alex tutaj. Pozwólcie mi iść do mojej przeglądarce i wyjść z trybu pełnoekranowego tylko tak mogę przełączać się. Okazuje się, zobaczmy, jeśli pójdę w tu i zaloguj się do Gmaila, wszystko w porządku. Nie patrz na tej części. Wystarczy dostać się do zobaczyć. oczywiście zywo możliwe jeszcze zobaczyć, co robię. W porządku. Więc tutaj jest tylko Gmail z Konto Johna Harvardu. Więc jeśli chcę wysłać Alex wiadomości tekstowych, Mogę oczywiście utworzyć wiadomość. I okazuje się, i mam Testowałem go z Alex, zanim tutaj, więc można dodać pewną domenę wymienić się numerami telefonów ludzi, ponieważ nie istnieje w świecie rzeczy, o nazwie SMS na e-mail bramki. Który jest fantazyjny sposób na powiedzenie wszystkich z nas, którzy mają telefony komórkowe, które mają numery telefonów, oczywiście, prawdopodobnie istnieje dla przewoźnika, pewien sufiks jak w Vtext.com dla wiadomości tekstowej Verizon dot com, które można dodać do listy własny osobisty numer telefonu, a następnie Ty lub znajomych, lub twoi rodzice mogą tekst, który w tym konkretnym adresem. I Verizon ma serwer, e-mail Serwer, że po otrzymaniu tej wiadomości, Wygląda na części numerycznej, a następnie wykorzystuje niezależnie szczególną magię branży mają rzeczywiście wysłać go w ciągu fale radiowe do danej komórki komórkowy. Teraz to jest dobre, bo ja nie naprawdę wiedzą, jak wysłać wiadomość tekstową lub napisać jeszcze kod dla mojego telefonu komórkowego, i może to zrobić dokładnie, że dla ostateczny projekt, ale na razie wszystko Mam tu jest mój laptop. Więc chcę iteracyjne nad tym CSV Plik, linia po linii, po linii, po linii, chwycić każdego z numerów przez personel, i ich nośnik i programowo, łączyć, czyli podłącz telefon Numer z odpowiednią nazwą domeny a następnie wysłać e-mail. Więc to jest dużo schodów. I powodzenia robi, że w C To jest koszmar sytuacji otworzyć plik, aby ją przeczytać linia po linii, po linii, jak ty Obserwujemy, lub może wkrótce z problemem ustawić pięć, jeśli nie Problem ustawione cztery, a następnie dynamicznie łączyć Dwa łańcuchy ze sobą, gdyż w C, wziąć dwa ciągi i połączyć je, co prawda minimalnie musisz zrobić, najczęściej? Musisz zadeklarować więcej pamięci, prawda? I zapytać, malloc, mogę mieć więcej pamięci? Więc mogę umieścić połowę tego tu, połowa to tutaj. To tylko tak wiele kroków. I w tym momencie straciłeś Zainteresowanie głupim małym demo gdzie można dokonać wszystkich na telefon sygnał. Zróbmy tego typu PHP styl, w którym po prostu zacząć używać więcej tego zmywaku. A pomysły są zasadniczo takie same, ale nie musimy martwić się zbyt wiele o tym niższym poziomie. Zobaczmy więc jak mógłbym za to zabrać. I tak, że ja nie powtarzać błędów z przeszłości, Napisałem kilka uwag dla siebie tutaj. I zobaczmy, czy mogę się z nami chodzić przez niektóre z zasadniczych etapów a następnie na miłość czasem słychać, że będziesz być może wyciąć kilka rożnych w końcu. Mam zamiar iść do przodu i nie otwierają Uchwyt PHP, aby uruchomić ten plik. I mam zamiar iść do przodu i to zrobić. Uchwyt pliku, jak będziesz wkrótce, w rzeczywistości wywołuje funkcję o nazwie f otwarte. I pamiętaj, to otwiera plik. A cytat, koniec cytatu, r oznacza co znowu? Wystarczy otworzyć do odczytu. Teraz w zestawie P, to zrobił. I obsługi może być cokolwiek, fu, bar, bas, dowolna nazwa zmiennej. Ale ogólnie komputer Naukowiec nazwałbym otwarty plik, dając uchwyt pliku, coś się trzymać tak powiem. Idę zrobić niektórzy sprawdzanie błędów. Więc jeśli uchwyt jest fałszywa, podobnie jak w C, mam zamiar zrobić coś takiego, nie można otworzyć pliku, ukośnika n. I wtedy ja po prostu się iść do przodu i wyjść. I okazuje się, w PHP, Nie jestem wewnątrz funkcji. Nie ma główną funkcją tutaj. Więc nie wrócę, per se. I wyjść. Która jest w zasadzie to samo. A ja wychodzenia z prawdopodobnie jeden rok. One po prostu oznacza błąd pewnego rodzaju. To niezerowe, więc jest to błąd. W porządku, więc jeśli jestem tu teraz w moim programie mam otwarty plik. Mam zamiar iść do przodu i zadeklarować tablica nazywa adresy, i C musiałbym znać rozmiar tablicy z góry, prawda? Albo będę musiał zadeklarować to jest wskaźnikiem, a następnie za pomocą malloc. A następnie za każdym razem czytam za pośrednictwem innego wiersza w pliku, Będę musiał malloc więcej pamięci, malloc więcej pamięci. To jest ból w szyi. I na szczęście, PHP, Ruby, i Python i JavaScript, oni wzrośnie swoje tablice automatycznie. Nie więcej malloc. Nie więcej zarządzania pamięcią. Komputer dba o to. Ale cena, jaką płacisz. To trochę wolniej. A dla takiego programu nie będziemy zauważać. Mamy zamiar wysłać do 100 wiadomości tekstowych. Na przykład, nie będzie go czuć. To naprawdę zaczyna się tylko do znaczenia język wyboru gdy dane lub programy się naprawdę, naprawdę spora, jak to będzie miało bardziej z naszych rzeczy w oparciu internetowej. Ale teraz niech posunąć się naprzód. Podczas gdy okazuje się, że to Funkcja w C o nazwie f uzyskać CSV. Plik się CSV, które trwa uchwyt pliku jako argument, i przechodzi następnie, wiersz, przez wiersz, po wierszu, aby przeczytać w wiersz. Więc po prostu odczytuje linię tekstu z pliku. Ale co jest miłe o tej funkcji, nie po prostu podaj mi wiersz tekstu. Wygląda na te przecinki, i analizuje wiersz. I analizować wiersz oznacza podzielić że w pewnych wartości w tym zakresie. Innymi słowy, znak dolara wiersz jest zmienną, która jest da mi kilka indeksów. To ma być Pierwsza kolumna w moim pliku CSV. To będzie drugi Kolumna ta ma być trzeci i to będzie czwarty. Bo pamiętam, i program Excel nie Współpracujemy ostatni raz zrobiliśmy to, ale jeśli mogę pobrać personel dot CSV. Ups, nie zmieniać nazwy. Gdybym pobrać Departament Transportu CSV i spróbuj otworzyć go, Już registered-- oh nie aktualizuje Excel od ostatniego razu. Zobaczysz, że Departament Transportu CSV, mam cztery kolumny. Więc kiedy czytam w Pierwszy rząd do Abby tutaj, Znak dolara wiersz 0 jest Abby, Znak dolara wiersz jeden jest Lyons, Znak dolara wiersz dwa jest jej numer, a następnie przewoźnik jej telefonu. Więc to wszystko. I to jest dobre, bo nie muszą się teraz dowiedzieć się, gdzie wszystkie te przecinkami rzeczywistości. Więc mam zamiar iść do przodu i to zrobić, biorąc pod uwagę, że definicja, Mam zamiar powiedzieć, że jej nazwa jest w przedziale rzędu zerowego, jak obiecał. I mam zamiar grab-- i faktycznie, wiesz co? Nie będę się martwić jej imię, w tym przypadku. Zamierzam zachować to prostsze. Mam zamiar zrobić jej numer jest w przedziale rzędu dwóch, myślę. A jej przewoźnik był w których? Wiersz trzy, jedna na drugą. Więc nic nowego. To jest po prostu zerem indeksowanie do tablicy. A teraz mam zamiar wykonać następujące czynności. Jeżeli przewoźnik odpowiada równa AT & T-- Jestem po prostu będzie miał loop-- Chcę utworzyć wiadomość e-mail adres, który wygląda tak. To będzie 617-555-1212 co, co to jest, text.ATT.net, jest to, co chcę zrobić. Więc jak mam to zrobić? Mam zamiar wykonać następujące czynności. Jej adres będzie jej numer, i teraz, pozwól mi iść naprzód i to zrobić. To jest jakiś modny składni. Mógłbym zrobić procent ów podstęp, ale w rzeczywistości może po prostu to zrobić. Więc to jest rzecz, PHP, ale rozważmy to, co robię. Dolarów podpisać adres na lewa, tylko zmienna. Daj mi zmienną. Nie mam określić typ. PHP będzie zrozumieć. Z prawej strony, co to za typ danych tej całej sprawy na prawa strona? Wygląda jak struna, ponieważ jest podwójna cytuje z lewej i prawej. Teraz jest jakiś modny nowa składnia tutaj. Jest nawiasy klamrowe, a liczba znak dolara. Ale zgadywać co to jest składnia Prawdopodobnie mówiąc PHP zrobić dla mnie? Tak. Wystarczy wpisać wartość istnieje. Więc nie ma procent s. Możemy użyć druku f lub s drukuj f lub coś podobnego, ale PHP i dużo w językach wyższego poziomu, masz zamiar zobaczyć, że można zrobić to samo funkcjonalnie, może Sześć różnych sposobów. I tak zaczyna być kwestia wzornictwa i stylu. Więc to jest tylko tajemnicze spojrzenie sposób powiedzieć, daj mi adres e-mail, ale wtyczki liczby w pomiędzy tymi nawiasy. I nawiasy klamrowe nie będzie kończy się w końcowym adres. Teraz możemy pominąć niektóre z te linie dla dobra czasem słychać. Więc jeśli przewoźnik odpowiada równa verHorizon-- whoops, Verizon-- Chcę coś zrobić bardzo podobne, gdy adres dostaje, cytat, koniec cytatu, numer w text.ATT.net. I wtedy mogę zrobić tego samego rodzaju rzeczą dla reszty nośników. Ale ja po prostu nie kropka, kropka, kropka teraz. A teraz załóżmy, że Chcę dodać tablicę, wcisnąć. Chcę dodać do tablica, zwany adresy. Ten adres, to jak ci coś dodać do tablicy w PHP. Nie musisz robić malloc. Nie musisz zmienić rozmiar tablicy. Wystarczy powiedzieć, tablicy, pchnięcie. Co chcesz push-- co tablicy chcesz wcisnąć coś na? Adresy. Co chcesz przesunąć na adresy? Adres. A w rzeczywistości, jeśli naprawdę chcesz być mądry, niektóre lukrem składniowym za to, że tak powiem, co oznacza po prostu, jak można to zrobić w ładniejsza sposób, byłoby to zrobić. To także powoduje uprawy tablica adresów według wielkości jednego, a następnie rzuć, że dodatkowe adres e-mail do niego. Tak. PUBLICZNOŚCI: [niesłyszalne] GŁOŚNIK 1: literówka na innego if-- och, przewoźnika. Dobrze. To również nie podoba mój brak wdrożyć część niniejszego programu później. Ale dziękuję za uwagę. Jeszcze jeden błąd. Dziękuję. Chcemy być Vtext.com. Tak. W porządku. Gdzie więc nas opuścić? Napisaliśmy kodu do otwarcia pliku. Mamy pętlę na iterację nad wierszy w pliku. Mamy kod, który dodaje do mojego tablicy, po jednym na raz, Prawidłowo sformatowany adres e-mail. Więc wszystko, co naprawdę pozostaje tylko wysłać e-mail do każdego z nich. Więc Poszedłem dalej i Przygotował się w następujący sposób. Co mam zamiar zrobić tutaj jest-- i niech iść dalej i przejść do jakiegoś rzeczywistego kodu, która wygląda tak. Więc tutaj jest fabrycznie pieczone Wersja pisałem wcześniej. I zauważyć, skończyłem realizacji Sprint. Skończyłem realizacji T-Mobile. Skończyłem realizacji Virgin Mobile. I z góry przepraszam. Istnieje kilka nośników, które niektórzy uczniowie w klasie mają że nie przeszkadza wyliczanie w razie stanie tutaj. Tak więc nie wszystkie teksty zgaśnie. Ale zobaczmy, co jeszcze muszę zrobić. I zamknąć plik, po prostu jak w p ustawić cztery. I to jest nowa składnia. I zobaczymy trochę bit to w czasie, zwłaszcza z p ustawić siedem i osiem. Ale to jest składnia dla tworzenia specjalny rodzaj konstrukcji. Okazuje się, że to biblioteka, która pochodzi z PHP, o nazwie PHP program pocztowy. Jego celem w życiu jest programowo wysyłać e-maile. Jest Kod ktoś inny napisał, że ułatwia nam wysyłać e-maile, więc nie musimy trzymać tam iz powrotem do Gmaila, i wklejając w adresów e-mail osób. Jest cała masa linii tutaj że szczerze mówiąc, po prostu rodzaj skopiowane i wklejony z dokumentacji. A w rzeczywistości, jeśli jesteś nowoczesny, zostawiłem wszystko adresów URL dokumentacji w kodzie, że będziemy pisać później. I zauważyć, że wśród rzeczy robię jest, mówię tej biblioteki, używać serwera Gmaila, prawda? SMTP rozmawialiśmy krótko na temat, kiedy były w Yale o byciu Simple Mail protokół transmisji. Jest to protokół, który serwery używane do wysyłania wiadomości e-mail, i that's-- Gmail ma jeden z tych. Port, jest to numer portu TCP. To dobrze, jeśli nie widziałem 587 wcześniej. Wystarczy wiedzieć, że z dokumentacji. Oto moja nazwa użytkownika. Mam zamiar używać bota CF50. I w pewnym momencie, jestem po prostu będzie wpisać właściwe hasło bota. A potem na dół, zauważył, co pozostaje. Ustawiłem od adresu być bot na CS50.net. Myślę, że nie będę żałować, wysyłając wiadomości tekstowych do 800 osób, które mówi, tęsknię za tobą, miłość CS50 bot, być może dla tych, którzy nie mogli zrobić to dzisiaj. A następnie w linii 76, co mam zrobić? Ten rodzaj wygląda jak C Więc dla i jest równa 0, n equals-- teraz liczyć jest nowy. Okazuje się, że jeśli chcesz, aby ilość rzeczy w tablicy, nie trzeba pamiętać go już. Możesz po prostu zapytać Funkcja o nazwie count, i powie to, ile adresy są w tej tablicy. A potem mam zamiar dodać adres do wiadomości e-mail. I wiem to z korzystając z dokumentacji. Jest funkcja adres dodatek. A teraz nie zauważyć jest jeden kawałek składni. Widzieliśmy to już wcześniej w C. Podobny w duchu. Można myśleć o dolara maila jako zmienna, co to jest. Ale to struktura wewnątrz które są nie tylko właściwości, zmienne, jeśli będzie. Ale okazuje się, że w PHP, które jest programowanie obiektowe język, jak Java, jeśli wziął APC. Znak dolara mail jeśli chcesz to-- ma również funkcje wewnątrz niej, lub metody. Więc to znaczy, że Specjalny PHP Mailer biblioteka, jeśli mam ich zmienną, jeśli chcę wywołać funkcję, która pochodzi z tej biblioteki, dla dzisiejszych potrzeb, po prostu wiem użyć notacji strzałki. Nie ma zapisu dot. To tylko strzałka. Ale to nie jest wskaźnik. To jest po prostu pożyczył od składni C jest. Tak nazywają dodać adres wewnątrz obiekt lub Zmienna biblioteki. W porządku. Jest to magiczna linia. To w jaki sposób wysłać e-mail. To jest równoznaczne z otwarciem Gmail, wpisując go i uderzając wysłać. Ale to będzie, zamiast wysyłać Na ten adres e-mail, z tym ciałem, z bota CS50. A teraz przycisk linii. Ten wiersz był nieobecny w jak 2011 kiedy myślę, że w zeszłym próbowałem. Ta linia jest, oczywiście, kasuje adresy. Więc logicznie, jeśli I nie wyczyścić adres Po każdej iteracji, pierwszy e-mail lub wiadomość tekstowa trafia do Alice, drugi idzie do Alicja i Bob, trzeci idzie do Alice i Bob i Charlie, stąd bardzo kosztowna pomyłka Zrobiłem w tym roku. Więc zobaczymy. Czy są jakieś pytania zanim wyślemy Ci wszystkie tekst Komunikat z 10 procentowym prawdopodobieństwem? Jakiekolwiek pytania? W porządku. Miejmy mi iść tu i zmiany hasło do tego, co powinno działać, prawdopodobnie będzie się na czarnej liście przez Gmaila. Więc może nie wszyscy pójdziemy się, ponieważ prawdopodobnie nie podoba nam wysyłanie 800 e-maili w pętli for wszystko na raz. Ponieważ to nie jest Szczególnie zachowanie ludzkie. Och, mam zamiar zmienić jedną rzecz. W górę w górę, będę sent-- zmienić plik do studentów dot CSV. I nie otworzy się, ale jest to identyczne Plik CSV z nie 100 pracowników, ale 800 studentów, po prostu z Harvardu, bo Yale ma wgłębienie października w tym tygodniu. I wydaje się, że rodzaju rzeczy jerk zrobić, aby tekst wszystkie z nich, dlaczego nie są one w klasie na wakacjach. Dobrze. Tylko studentów Harvardu dziś wewnątrz tego pliku. A teraz wróćmy moim oknie terminala. Jestem trochę zdenerwowany. OK, więc teraz mam zamiar iść do katalog, kropka i tekst PHP PHP. Jak o jeden dzielny wolontariusz? Więc nie chcę tego na mnie. OK, chodź na górę. Jak masz na imię? MAYA: Maya. Głośnik 1: Maya. Chodź, Maya. W porządku. Zobaczymy, czy to działa. Kładę własny adres e-mail w file-- mój własny numer telefonu w pliku, tak, mam nadzieję, że będę miał jedną, jak również. Miło cię poznać. MAYA: Podobnie. Głośnik 1: Więc wszystko co musisz zrobić, to naciśnij klawisz Enter, aby wysłać 800 wiadomości tekstowych, jeśli nie zepsuć. Miły. Czy może trochę potrwać, statystycznie, aż dojdziemy do wiadomości e-mail address-- wiadomość tekstowa to w pokoju teraz. Miejmy marudzić i zobaczyć. PUBLICZNOŚCI: [gwizdy] Głośnik 1: O, tak. PUBLICZNOŚCI: Och, haczyka. Głośnik 1: Dla pętli are-- tego nie jest powolny, ponieważ PHP. To jest powolny, ponieważ Gmail jest dławienie nas i nie pozwalając nam wysłać więcej niż jak jeden e-mail na sekundę. Byle co? Była to trudna rzecz dla mnie sprawdzić na domu z tylko mnie i mojej jednego telefonu, tak. Jest to, że mam nadzieję, że z bota? Tak? Nie? Powiedz tak. Nie? To od znajomego? Niezręczny. OK. Prawie pewien, że to działa, choć. O o. Black-- one och, chwileczkę. Och, wiesz co? Chwileczkę. Tylko Maya i ja-- Mia, to było? MAYA: Maya. Głośnik 1: Maya, będą wiem co zrobiłem źle tutaj. Och, chwileczkę. Myślę, że właśnie wysłał 100 wiadomości tekstowe do 555-1212. Czekaj. Nie mogę wygrać każdego roku. OK. Maya? Ustalić, że w post produkcji. Cholera! Po od adresu. OK, stand by. Przepraszam. To bolesne, co roku. OK, w jednej chwili. To jest dobre. Ja zamiast zamiar to zrobić. Adres Drukuj. OK, stand by. Adresy Print, uchwyt i. Tak, podoba mi się. Dolar sign-- OK, postaram się wyjaśnić, co mam robi się w momencie, po Zabrakło mi tego. Co roku. OK, jedziemy. Mam just-- i nie chcę pokazać wszystkich na numer telefonu, ale Maya może potwierdzić skinieniem głowy, które widzi każdy jest numer telefonu w klasie że mam zamiar skopiować do program o nazwie Gmail. A jeśli w Gmailu, co chcemy powiedzieć? Tęsknię za Tobą. Love-- to nie ode mnie. I nawet nie uderzył jeszcze wysłać. Więc zrób tego, czy uda mi się powiększyć. OK. Więc używam programu o nazwie teraz Gmail. Jeśli Maya, którą chcesz kliknij przycisk Wyślij, będziemy symulować, co to Kod powinien zrobić. Byle co? [BEEPS] PUBLICZNOŚCI: Tak. 1 głośnik: Tak? Zbawienie? PUBLICZNOŚCI: Tak. Głośnik 1: Tęsknię za tobą. I mam zamiar wysłać resztę. Wysłałem połowę, bo nie sądzę, Gmail pozwoli ci przejść. Więc po prostu pamiętać, dzisiaj jest dzień że dowiedziałem się, że mogę korzystać z Gmaila. To było przerażające. Wielkie brawa na Maya. Dziękuję. Dobrze, tak. co [BEEPS] Mamy kilka dźwięków, tak? W porządku. Teraz mam zamiar uzyskać 700 naprawdę nieszczęśliwych e-maile z powrotem z kolegami. Tak przynajmniej zobaczymy jeśli to było warto. Więc co się stało? Będę dowiedzieć się, co poszło źle po fakcie, ale tylko patrzeć, jak łatwo było to zrobić w PHP. Więc co możemy zrobić teraz, że rzeczywiście mamy ten ekspresyjność PHP. To was--, że było straszne. W porządku. Więc to, co powinno wyszło. To było mnie testuje dziś rano na moim telefon, rzeczywista zrzut ekranu z mojego telefonu. A teraz zastanówmy się, dlaczego my rzeczywiście wprowadzenie wszystkie te rzeczy w pierwszej kolejności. Tak więc celem nie jest Napisać te programy, które zapisane są w linii poleceń, tak? Więc napisałem prosty witam Program napisałem mały program, który robi warunkowe, i używane linię odczytu i tak dalej. I w teorii, po prostu napisał program, który wysłał 800 wiadomości tekstowych, lub dać 800. A ten program to wszystko nadal działać w linii poleceń. I to oczywiście jest nie w internecie, prawda? Celem jest teraz rozpocząć używanie to, co twierdzą, jest łatwiejszy w obsłudze język, przypuszczam, bardziej potężny język w kategoriach z cech, które się z nim, aby rozpocząć pisanie kodu, który generuje stron internetowych. Więc ostatni raz, a w zeszłym tygodniu, rozmawialiśmy o HTTP i HTML. A co jest miłe o HTML jest to, że jest to po prostu czysty tekst. A tekst jest z pewnością coś, co można drukowanie przez dosłownie wywołanie print f funkcja lub funkcja druku. I rzeczywiście, to co PHP teraz będzie pozwalają nam robić. Tak więc wśród tych przykładach mają w dzisiejszym kodu źródłowego, Ponadto w niektórych z kodem że kładę się tam przed chwilą, mamy programy takie jak ten na przykład. Froshims lub Freshman Stacjonarne Sport, był w rzeczywistości jeden z pierwszych extracurriculars Zostałem zaangażowany lat temu. A mój współlokator i ja, z inne dzieci na terenie kampusu, wykorzystane do uruchomienia programu froshims. Dostaję moje wiadomości tekstowe teraz. Teraz więc, już w dzień, więc to minął w 1996 roku lub tak, nie było internetu, ale nie było tam process-- nie była strona froshims. A więc jeśli chcesz zapisać się na piłka nożna czy siatkówka czy cokolwiek, by wypełnić tę rzecz nazywa kawałek papieru, i chcesz przejść przez Harvard podwórze, i chcesz go przesunąć w gnieździe mail Proctor, który był w Wigglesworth, jeden z akademików. A ten pan był zarejestrowany. A on lub ona będzie wtedy komponowanie e-mail do Ciebie ręcznie, tak jak ja po prostu nie tutaj z Maya, i wtedy można być potwierdzone jak będąc zarejestrowana. Więc to było jak niskie wiszące owoce, że tak powiem. To było głupie, że używaliśmy papieru do tego. Chciałam, żebyśmy byli w stanie po prostu pójść na stronie internetowej, lub mają pierwszaków przejść na stronę internetową, zarejestrować się za sport, i po prostu zautomatyzować wiele z tych rzeczy przez umieszczenie ich nazwiska i e-maile i tak dalej w bazie danych. I rzeczywiście, pierwszą wersję strony internetowej, za pomocą bardzo brzydki HTML, mógł wyglądać mniej więcej tak. To był rzeczywiście, jak na ironię, więcej żenujące, patrząc od tej tyłu następnie. Ale użyłem języka programowania. Nie PHP, Perl, ale raczej o nazwie, który jest starszy język, ale bardzo podobny w duchu. A ja po prostu całkowicie nauczył go do siebie. I zajęło mi trochę czasu, aby zrozumieć to, prosząc wiele pytań przyjaciół. Ale pomysły były dokładnie takie same. Bo co tak naprawdę PHP zaprojektowany Nie jest na rzeczy z linii poleceń po prostu grał, ale dla programowania WWW. To naprawdę przywiązany w swojej funkcji ustawić w internecie, w następujący sposób. Jest froshims. A gdybym chciał zarejestrować się w tej formie, to jest dość brzydki, na pewno, ale pozwól mi iść do przodu i być mniej wygodne student, i cokolwiek sport dla Matthews, kliknij przycisk Zarejestruj. Co chcę być w stanie zrobić to przedstawienia informacji z formularza, Nie do serwera Google, takich jak zrobiliśmy ostatni czas, całkowicie oszukiwanie przy użyciu ich zaplecza, ja chcą wprowadzić mój własny kod zaplecza. Co oznacza zapis PHP Kod, który mieszka pod adresem URL że dane formularza można składać. A następnie kod, napisany w PHP na serwerze, może wtedy odpowiedzieć na to dane wprowadzone przez użytkownika. Podobnie jak jego nazwisko, lub poziom komfortu, lub w akademiku, a następnie coś z tym zrobić. W tym przypadku, po prostu głupio drukowane go jako tekst, który nie jest wszystko, co ładne. Ale można na pewno sobie wyobrazić, jeśli znasz HTML, i wkrótce wiem jak generować Kopiuj z nadrukiem F i druku, i podobne funkcje, można z pewnością generuje ładniejszą stronę internetową, która mówi, hej David, jesteś zarejestrowany. Jesteś mniej wygodne student z Matthews, prawda? Możesz po prostu użyć całą masę% SES, lub nawiasy klamrowe i znak dolara Zapis użyłem przed chwilą, w celu generować tekst, który jest bardziej przyjazny dla użytkownika niż to. Warto więc przyjrzeć się tym jednym pliku. Froshim zera dot PHP wygląda następująco. Kiedy przeładować CS50 IDE, froshim zera wygląda tak. To froshim zera dot PHP. A co można zauważyć tego pliku? PUBLICZNOŚCI: [niesłyszalne] Głośnik 1: Przepraszam, trochę głośniej? PUBLICZNOŚCI: [niesłyszalne] To wszystko w HTML. I rzeczywiście, jest to, ponieważ co ciekawe o PHP jest to, że został on zaprojektowany się, lepiej czy na gorsze, przemieszane z kodu HTML. I rzeczywiście, chociaż Plik, froshim zerowy dot PHP, PHP posiada komentarz w górę o tym, że to wszystko to tylko HTML. Ale dla odmiany, jeśli otworzy, niech powiedzmy, zarejestruj zerowy dot PHP, które po prostu ma duży komentarz na górze. To też wygląda niemal całkowicie jak HTML, z wyjątkiem co? Linia, co, 21 wygląda trochę dziwnie. Ale zauważmy Wchodzę w tryb PHP z otwartym uchwytem znakiem zapytania PHP. Potem mam kilka rzeczy. A następnie na końcu tej linii prawie mam, znak zapytania PHP. I to jest to, co mam na myśli, wymieszane. Możesz pisać w HTML, które po prostu serwer ma wypluć. Ale jeśli chcesz coś zrobić dynamiczne w trakcie wykonywania przez strony, jak wstawić swoje imię lub akademiku lub poziom komfortu, Można użyć funkcji jak druku r, co jest wydrukować rekurencyjne, co oznacza po prostu, wydrukować tę zmienną, formatowanie jakkolwiek chcesz. To naprawdę nie jest dla cele człowieka, to tylko do debugowania lub do celów diagnostycznych. Tak to jest, jak to zrobiłem. Gdybym zamiast iść froshims dwie kropki PHP, zauważyć, że działanie tej formy nie jest zarejestrowany zerowy dot PHP jako old-- poprzedni rzeczywistości. Ale to zarejestrował dwie kropki PHP. Warto więc przyjrzeć się, jak ten jeden zachowuje się trochę inaczej. Jeśli pójdę do wersji drugiej. Jeśli tutaj, jeśli się zarejestrować jako Dawida mniej wygodne, z akademika w Mathews, zarejestrować. Więc tym razem powiedziałem, są zarejestrowane, nie bardzo. Zobaczmy, co ja tutaj. Jeśli patrzę na rejestrze dwie kropki PHP, to ma trochę więcej kodu PHP. To trochę czystsze, choć wciąż otacza trochę długo na tej linii. Zauważ tutaj. Wydrukować mój znacznik HTML, mój tag głowy, mój tag tytuł, głowa, ciało. I wtedy zaczynają mówić takie rzeczy jak wejść w tryb PHP. I tak tego tagu, otwarty nawias PHP-- znak zapytania PHP mówi, hej, serwer, execute-- interpretacji następujące rzeczy jak PHP aż pojawi się znacznik końcowy. I choć może nie znam żadnego inne PHP niż widziałem dotychczas, można trochę przeczytać to dość intuicyjnie. Jeśli nazwa jest pusta lub komfort pusty, lub akademik jest pusty, co mam zrobić? Co mam powiedzieć użytkownikowi? Musisz podać swoje imię i nazwisko, Komfort i osobowym, i tak dalej. Innego, mówię, jesteś zarejestrowany, również nie bardzo. I nie mówię naprawdę bo nie ma w bazie. Nie robię nic z tych danych. Jestem po prostu ją wyrzucać do celów demonstracyjnych. Teraz rodzaj skimped na linii 22. Jest więcej składni tam, ale znak dolara podkreślenia post jest rodzaj interesujące. I to jest to, co miłe, o PHP. W PHP, masz to, co nazywa się kilka Super zmienne globalne. Są jakby jeszcze bardziej ważne niż zmiennych globalnych. A te wszystkie aktywowane jako takie, pochodzą z PHP. Więc jeśli masz serwer, który ma zainstalowany serwer WWW, takich jak Apache, i zainstalować język wsparcie dla PHP, wszystko nagle jesteś można rozpocząć korzystanie z tych super zmienne globalne w kodzie. A co jest miłe o PHP jest to, że jeśli tylko zapisać plik, który kończy się kropką PHP, umieścić go na serwerze WWW, a następnie przesłać formularz do niego za pomocą tego znacznika akcji i tagu formularza, że atrybut działania w Formularz tag, PHP i internetowej całkowicie domyśla się, jak pobrać wszystkie z tych par wartości kluczowych z adresu URL, jak pytanie Mark Q równa się koty, będzie dowiedzieć się, jak Q i koty. Jeśli wysyłasz zdjęcie lub nazwę użytkownika, lub hasło, takich jak Facebook, PHP będzie dowiedzieć się, dla Ciebie gdzie wszystkie te dane są. A to po prostu wręczyć Ci tablica asocjacyjna zwany znak dolara podkreślenia poczta, lub znak dolara podkreślenia się, w zależności od tego, czy jesteś za pomocą GET lub POST zgłoszeń. A to po prostu wręczyć ci super zmienna globalna, tak, że jeśli chcesz, aby na imię że użytkownik składane za pośrednictwem tej sieci Formularz, dosłownie po prostu powiedzieć nazwę zmiennej globalnej Super, cytuję, koniec cytatu, nazwa. A cytat, koniec cytatu komfort, i cytat, koniec cytatu akademiku. I będziemy w stanie zrobić to i tak dużo więcej w PHP. I mimo, że był to wicher rzut oka na to, będziemy nurkować w znacznie bardziej w przyszłym tygodniu. Będziemy wprowadzać do bazy danych tak, że jesteś naprawdę zamierza rozpocząć realizację własne based-- e-handlu jak strony w zaledwie tydzień. Więc zobaczymy następnym razem, a nadzieję, że masz wiadomości tekstowe. Żegnaj. [MUZYKI] [OTWARCIE DRZWI] GŁOŚNIK 2: Hej. GŁOŚNIK 3: Co się dzieje? GŁOŚNIK 2: Co ty robisz? GŁOŚNIK 3: Praca na zestaw problemów. GŁOŚNIK 2: Ładny. Przybij piątkę. [PRZYBIJ PIĄTKĘ] Co are-- uh, co ty tu robisz? GŁOŚNIK 3: Po prostu wychodzić. Właśnie wróciłem z siłowni. I nie mógł pomóc, ale zauważysz, kiedy wysokiej fived, że masz dość szorstkie dłonie. Chodzisz na siłownie? GŁOŚNIK 2: Nie Nie. GŁOŚNIK 3: Koleś, wyglądasz całkiem duży. Co jest złe, bo każdy wie, 8-ball jest wielkim człowiekiem w kampusie. Przybij piątkę. GŁOŚNIK 2: Uh, nie. Nie, myślę, że jestem dobry. Myślę, że jestem dobry.