[Musikwiedergabe] Sprecher 1: Dies ist CS50 und Dies ist das Ende der sieben Wochen. Heute ist vielleicht, wo wir wirklich Unterricht, Sprachen. Wir führten in den letzten paar Wochen HTML und CSS, von denen keines sind Programmiersprachen. Und in der Tat, auch wenn wir es nicht Blick auf fast alle Tags dass HTML kommt mit und fast alle der Eigenschaften, die CSS kommt mit, das ist irgendwie es für HTML und CSS. Wir werden einfach in der Regel beginnen vorausgesetzt, dass Sie die allgemeinen Ideen zu verstehen von Tags und Attributen, und Seiten gesendet vom Client zum Server. Denn heute beginnen wir zu sehen eine weitere Programmiersprache PHP. Wir werden diese super schnell zu tun. Wir gehen nicht zu lehren, PHP an sich, ähnlich wie wir nicht danach streben, Ihnen beizubringen, C, per se, sondern vielmehr Programmierung. Und in der Tat, eine der Ziele für diesen Kurs ist nicht zu lehren, C, oder HTML oder CSS oder PHP, oder eine beliebige Anzahl anderer Schlagworte oder Akronyme, sondern der Informatik und wie grundlegend zu programmieren. Und in der Tat, heute beginnen wir zu nehmen diese Stützräder off all die weiter fliegen durch eine Sprache namens PHP, wie folgt. Hier ist, was diese Sprache aussieht. Es stellt sich heraus, dass es keine Notwendigkeit eine Hauptfunktion in einem Programm geschrieben in einer Sprache namens PHP. So dass klingt schon ein wenig einfacher als C, mit dem wir vertraut sind. Es stellt sich heraus, dass, wenn Sie wollen eine Variable zu deklarieren, Sie fast genauso, C. Aber tun gibt es hier deutlich einen Unterschied wenn ich erklären, eine Zeichenfolge, oder vielleicht zwei Unterschiede. Was sieht anders aus? Publikum: Das Dollarzeichen. Sprecher 1: Ja, es gibt Dollar unterzeichnen, die wir noch nie gesehen habe. Und was fehlt? Ja? ZIELGRUPPE: [unverständlich] Sprecher 1: Ja, es gibt keinen Datentyp. So stellt sich heraus, dass PHP ist, was wir rufen Sie eine schwach typisierte Sprache ist, in der C ist stark typisiert. Schwach typisierte bedeutet nur, dass Es gibt verschiedene Datentypen, gibt es Zeichenfolgen und Ints, und schwimmt. Aber die Computerfiguren, die aus. Sie das menschliche Programmierer nicht haben, um es herauszufinden. Also alles, was Sie tun müssen, zu erklären, eine Variable Dollar-Zeichen, der Name Ihrer variabel, und dann, zum Beispiel, Zitat Zitat Ende, hallo Welt. Gut, das ist, was ein Zustand sieht aus wie in PHP. Etwaige Unterschiede? Nein. So stellt sich heraus das sind identisch. Und Sie könnten weniger haben Niederlassungen oder mehr Zweige, aber die Syntax Wendungen genau das gleiche. Boolesche Ausdrücke können zusammen bestellt werden. Boolesche Ausdrücke können miteinander UND-verknüpft werden. Sie haben noch Switches. Auch wenn Sie nicht verwendet haben, Davon Diese müssen in C existieren und sie sind funktional Gegenwert in PHP. Und in der Tat, in PHP sie ein wenig mehr mächtig. In C können Sie nur bestimmte vergleichen Datentypen wie Ganzzahlen und Zeichen, während in PHP Sie tatsächlich vergleichen können vollwertige Zeichenfolgen ohne um über Zeiger und dergleichen kümmern. Also hier ist eine for-Schleife. Dies ist nur Pseudo Code, wenn man so will. Aber es ist strukturell identisch mit C. Hier ist eine while-Schleife, Pseudo therefore-- identisch mit C. Hier ist eine Do While loop-- identisch. Und so gibt es Art von dieses Muster hier, wobei es gibt ein paar andere syntaktische Features wir ja gehen, um zu sehen. In der Tat, hier ist ein nettes Weg in PHP, wodurch, wenn Sie wollen, durchlaufen über ein Array, und Sie wollen nicht durch den Sprung geistige und syntaktischen Reifen des Habens int i gleich 0 ist, i kleiner als n, i plus plus-- die ist nur eine Menge von lästigen Syntax. Sie können ein wenig mehr sagen, strömungsmäßig für jeweils Zahlen als Zahl, wobei in diesem Fall Dollar-Zeichen-Nummern, ich gehe davon aus, ist wie ein Array angerufenen Nummern. Und dann gehe ich davon aus Nummer, Singular, wird eine Variable sein. Und was PHP wird für mich tun, was ich durchlaufen über diese Schleife ist, bei jeder Iteration, es wird aktualisieren die variable Anzahl an das i-te Element in Zahlen, Plural sein. So ist es nur handhabt das alles für mich. Keine eckigen Klammern, keine Dollar-Zeichen, keine Semikolons. Es ist nur ein wenig einfacher. Nun, wenn Sie wollen ein Array, stellt sich heraus Sie können etwas ziemlich ähnlich zu tun C. Die Syntax ist ein wenig anders. Aber hier ist ein Array mit dem Namen Dollar-Zahlen mit Vorzeichen. Und ich, in PHP, quadratisch Klammern, stellt sich heraus. Und wir werden diese wieder zu sehen in JavaScript-- noch eine andere Sprache. Ich habe gerade mit eckigen Klammern um eine durch Kommata getrennte Liste haben von ganzen Zahlen, in diesem Fall. Aber das gibt mir ein Array. Aber noch leistungsfähiger in PHP, haben wir auch, was in der Regel genannte assoziative Arrays. Und viele Sprachen müssen diese als gut. Die Sache mit C-Arrays ist, dass die Indizes für ein Array, das, was Sie Verwendung in eckigen Klammern, über die Sie bewirken, sind das, was sein? ZIELGRUPPE: [unverständlich] Sprecher 1: Sie müssen Zahlen sein oder ganze Zahlen, und zwar von Null auf. Nun, in PHP, und stellt sich aus, in anderen Sprachen, können Sie beginnen, haben Indizes, die nicht numerisch sind. Aber sie sind tatsächlich Wörter oder Sätze, so dass anstatt versuchen, wo etwas zu erinnern ist, oder in einer Variablen i gespeichert ist, Sie können tatsächlich ein Wort und sagen: dass-- können Sie ein Wort wie das zu sagen. So Dollarzeichen Zitat ist die Name einer Variablen hier. Dies ist etwas flippige Syntax das ist, assoziieren zwei Schlüsselwert Paare für diese Variable. Insbesondere betrifft diese me geben ein Array, das der Länge 2 ist. Aber die Indizes nicht 0 und 1. Die Indizes sind Kurs unquote Symbol und Zitat unquote Preis. Und die Werte der Indizes, bzw. ist FB für Facebook und 79,53 $, als ich das letzte überprüft ein Preise für diese. Was bedeutet das? Nun, es bedeutet, dass anstatt das Schreiben von Code wie dieser, wo ich etwas zu tun wie Dollar sign-- oder besser gesagt, in C- Ich würde nicht einmal einen Dollar-Zeichen. Ich möchte etwas zu tun wie Anführungszeichen und dann Ich würde Halterung i auf einige zu tun, beliebig numerisch indizierte Wert. Ab heute in PHP, wenn Sie will zu einem bestimmten Wert zu erhalten, wir Art haben mehr semantische Ausdruckskraft. Nur eine andere Art zu sagen, wir können rufen Sie einfach die Dinge, wie sie sind. Und wenn Sie erhalten möchten auf etwas symbol, jetzt haben Sie buchstäblich zitieren unquote Symbol in eckigen Klammern anstelle eines bloßen Nummer. Also ist es eine nette Annehmlichkeit. Und das ist eine Art ist es für jetzt. Es gibt Sträuße andere Funktionen in PHP. Und in der Tat kommt mit PHP die sprichwörtliche Küchenspüle. Dutzende, Hunderte von Funktionen bieten PHP-- so viele mehr als kam mit C. Und das ist nicht vorgesehen überwältigen, sondern zu helfen, Sie erkennen, dass wir nicht mehr haben, um Code zu schreiben das ist eine Art hier unten konzeptionell. Jetzt können wir einfach anfangen zu nutzen der viel mehr erweiterte Funktionen dass Sprachen wie PHP haben. So dass wir nicht zu befürchten bewegliche Sachen herum in Erinnerung. Wir haben nicht über malloc Sorgen und alle diese niedrigeren Niveau, leistungsstarke Details, dass Sie ringen mit, wenn sie nicht mit, pset5 kämpfen, aber Sie können, um zu beginnen bald für selbstverständlich halten. In der Tat, lassen Sie uns einen Super einfaches Programm in PHP, wie folgt. Ich werde den Kopf in CS50 gehen IDE hier, und was ich tun werde, ist eine neue Datei erstellen, dass ganz einfach wird sich namens hallo dot PHP werden. So anstelle von Punkt c, ist es gehen zu nennen dot PHP. Und dann in dieser Datei, Ich kann mit der Eingabe beginnen. Aber es stellt sich heraus, dass die eine Sache, ich muss wissen, ist, dass jeder PHP-Datei im Allgemeinen, muss mit einigen speziellen Syntax zu starten. Im Geiste gleich HTML, aber wieder, PHP ist eine Programmiersprache, nicht eine Auszeichnungssprache. So wird jede Datei, und es ist eine Art dumme suchen Ich gebe. Offene Halterung, Fragezeichen, PHP. Und das ist nur die Art zu sagen, der Sprache, hey, Computer kommt hier einige Code in einer Sprache namens PHP geschrieben. Und dann ganz am Ende der Datei, Sie tun Art von Art von der entgegengesetzten. Sie müssen nicht noch einmal schreiben PHP, die Sie gerade tun Fragezeichen, Winkel. Und dann alles, was Sie nach innen setzen dieser beiden Tags, so zu sprechen, sein wird, oder sein sollte, PHP-Code. Lassen Sie uns also etwas tun, super einfach. Ich werde weitermachen und tun Druck def, Hallo Welt, umgekehrten Schrägstrich n, zu speichern. Und jetzt auf meine Aufforderung, ich bin zu gehen tun, stellen hello-- nein, ich werde tun, dot Slash hallo. Nein, dot Schrägstrich, hm. So etwas ist anders. Und in der Tat ist dies ein wesentlicher Unterschied zwischen PHP und Sprachen wie C C war ein sogenannter kompilierten Sprache. Was bedeutete es für C erstellt werden? Was war die Implikation? Ja. ZIELGRUPPE: Schrieb er in Maschinencode so könnte es durch den Computer ausgeführt werden. Sprecher 1: Genau. Wir müssen zuerst konvertieren Sie sie in so genannte Maschinencode, Nullen und Einsen, bevor es tatsächlich ausführbar sein und durch den Computer verstanden wird. Mit dem Intel inside. Von der CPU innerhalb des Computers. PHP, dagegen ist, was heißt eine interpretierte Sprache, die bedeutet, dass Sie es nicht kompiliert in Nullen und Einsen, Maschinencode, Sie stattdessen lassen Sie es als Quellcode. Und Sie stattdessen geben sie als Eingangs zu einem Programm, ein Dolmetscher dass jemand anderes geschrieben Vor Jahren, die es versteht, Zeile für Zeile, Zeichen für Zeichen. Also mit anderen Worten Menschen da draußen, schrieb ein Programm, das aussehen wird auf den Code Zeile für Zeile, und herauszufinden, was der Computer tun soll, ohne Konvertierung direkt mit Nullen und Einsen. Also, wenn es sieht, eine for-Schleife, diese sogenannte Interpreter wird wie, in Ordnung, ich sollte sein, etwas zu tun, wieder und wieder und wieder. Was soll ich machen? Lassen Sie mich auf die nächste Zeile zu suchen. Lassen Sie mich auf die nächste Zeile zu suchen. Und es ist wirklich interpretiert sie Zeile für Zeile. Also, um es auszuführen, weiß ich nicht zu verwenden machen. Ich benutze keine Punktstrich in diesem Fall. Ich stattdessen tun PHP, das ist, der Name eines Programms, a.k.a. Ein Dolmetscher, das ist, in CS50 IDE vorinstalliert, und jetzt muss ich einen Pass Befehlszeilenargument, das ist einfach der Name der Datei, die ich möchte zu interpretieren. Oder mehr beiläufig, dass ich zu laufen. Und wenn ich drücken Sie die Eingabetaste, da haben wir es. Hallo Welt. Jetzt stellt sich heraus, dass ich gebrauchte Druck def absichtlich um uns von C zu überbrücken, um PHP. Die meisten PHP-Programmierer, wie Sie sehen werden, nicht einmal die Mühe mit Druck def. Sie eine Funktion namens verwenden nur Druck, die C nicht hatten. Und so, wenn ich nun erneut ausführen, es tatsächlich verhält funktional gleich. Ich kann nicht mit dem Prozent s und prozentuale i usw. aber es gibt auch andere Möglichkeiten in PHP, das zu tun. Aber dies ist nur für sagen, dass syntaktisch, ausgenommen einige seltsame Dinge Spitze, und einige seltsame Zeichen nach unten an der Unterseite, die Konzepte der jetzt Programmierung in dieser anderen Sprache, gehen, um exakt die gleiche sein. In der Tat, machen wir ein anderes Beispiel. Also werde ich voran gehen und schließen Sie die Datei. Lassen Sie mich noch einen erstellen, Ich werde Bedingungen 1 dot PHP nennen. Also kein Null, weil das, was ich tat, war ich sah wieder vor ein paar Wochen, wir eine Datei namens hatten Bedingungen 1 Punkt C. Und was Ich tat, war es in meinem umgewandelt Kopf, und hier auf dem Papier, und bald auf den Verlauf der Website, Zeile für Zeile in PHP. So in der C-Version, haben wir etwas, wie String s wird erhalten String. Also ist es ein bisschen anders zu der in PHP zu tun. Stattdessen werde ich einfach zu tun, oder besser gesagt, ich getan haben könnte int n wird erhalten int, in diesem Beispiel früher. Anstatt also, dass, ich werde tun, n wird die Leseleitung, würde Ich mag eine ganze Zahl, Bitte. Also das ist nur meine Aufforderung. Und so stellt sich heraus, und Ich würde nur wissen aus dem Lesen oder gesehen, die Funktion vor, lesen Linien-Funktion in PHP ein Argument, das eine Eingabeaufforderung für den menschlichen und dessen Zweck im Leben ist, eine Textzeile gelesen dass er oder sie in Typen. Und dann speichert er, dass Text in der Variablen n. Und jetzt will ich könnte etwas tun, wie ich schon vor Wochen getan hat, in wie Woche einer der Klasse. Wenn n größer als Null ist, dann werde ich , dass die Syntax wir gerade gesehen haben zu leihen, Druck def, nahm Sie eine positive Zahl, Backslash n. Else, wenn n gleich Null ist, bin ich gehen voran gehen und sagen, Druck def, Sie hob Null Backslash n. Else, hier sollte der Fall natürlich, Druck def, Sie nahm eine negative Zahl. Und wir können mit Sicherheit zu implementieren die Logik dieses Ding in einer Reihe von verschiedenen Wege, aber der Punkt ist hier ist, dass syntaktisch, kaum etwas ist neu. Es ist nur die Dollarzeichen und eine neue Funktion und die Leseleitung. Aber im Grunde, was es Neues jetzt bin ich der Interpretation dieser. Ich bin übergeben Sie ihr als Eingangs zu einem anderen Programm. Also, wenn ich dies ausführen, wenn Ich habe keine Fehler machen, Ich werde PHP ausgeführt wird, der Bedingungen 1 dot PHP, Geben, Ich werde in der Zahl 50 eingeben, und lassen Sie uns jetzt funktioniert es übernehmen. Weil die Logik ist gleichen Sachen wie eine Woche. Na gut, so dass es ziemlich berauschend, nicht wahr? Wir konnten dies in jeder tun Anzahl der Sprachen. Lass uns etwas viel mächtiger. Wir beenden Problem stellte fünf. Also, ich werde weitermachen und tun dies. Ich gehe, um eine Datei zu erstellen genannt Wörterbuch dot PHP, und geneigt ist, wie Sie vielleicht zu klettern, sich viele Notizen, werden die Noten nur helfen Sie, wenn Sie zugelassen sind zu implementieren Probleme stellte fünf in PHP. Aber wir werden sehen, wie schnell wir jetzt kann das gleiche Problem zu implementieren. So im Wörterbuch dot PHP, ich werde anzunehmen, dass es bereits eine Datei in der Welt genannt Speller. Und in der Tat, ich habe dies im Voraus, und wir werden nicht durch diese Linie zu gehen durch die Linie, aber wenn Sie neugierig später und wirklich wollen, in den Sinn um die Umwicklung Unterschiede zwischen c und PHP, buchstäblich vergleichen Sie diese Datei, Speller aus heutiger Quellcode dass wir später veröffentlichen heute gegen p-Set fünf Speller Punkt c, die wir Ihnen, und es ist fast die gleiche Zeile für Zeile. Es gibt einige weitere Dollar-Zeichen. Ein paar Funktionen ein bisschen anders. Aber es ist ein schöner Weg, der Art sehen, wie Sie eine andere Sprache zu übersetzen. Und es ist fast identisch Zeile für Zeile. Aber ich gehe davon aus, dass die vorhanden ist, und was ich hier zu tun ist zu versuchen, blow your dagegen durch Neuimplementierung die Gesamtheit der Probleme stellte fünf Wege schneller, als man habe bisher tun. So zum Beispiel, werde ich zuerst deklarieren Sie eine globale Variable namens Größe, und stellen Sie es gleich Null ist. Nun, das ist nicht viel Einsparungen. Quoten sind Sie implementiert Größe so ziemlich das gleiche, oder hint hint, wird heute Abend oder morgen, nur mit einer globalen Variablen genannt Größe, und wenn er gleich Null. Das ist nicht ein besonders erstaunliche Spoiler. Also, was waren Ihre Datenstrukturen Wahl, die von Ihnen, in getaucht haben und lesen Sie die Spezifikation, welche Datenstrukturen haben die meisten von Ihnen wurden mit? Eine Hash-Tabelle oder versuchen Sie, vielleicht Einige Varianten davon. So Implementierung einer Hash-Tabelle zumindest ist eine Art viele Zeilen Code, Recht? Und nicht alle von ihnen könnte Funktions an diesem Punkt in der Woche, aber das ist in Ordnung. Da in PHP, wenn ich wollen eine Hash-Tabelle, fertig. Recht? So dass variable, dass ich nur offensichtlich deklariert ist genannt Dollarzeichen-Tabelle, pro die Einführung vor. Aber ich habe wirklich nur wollen, um das Ende des Tages, ein Array. Aber nicht ein numerisch indiziert Array, weil das ist, wie zwei Woche stuff, wenn wir über Arrays gesprochen. Ich will eine Hash-Tabelle. Aber eine Hash-Tabelle ist wirklich nur eine konkrete Art zu sagen, Sie wollen ein assoziatives Array. Sie wollen in der Lage zu sein, Associate Schlüssel mit Werten. Schlüssel mit Werten. Was ist ein Wörterbuch, wirklich? Nun, es ist eine ganze Reihe von Tasten. Wörter wie Apfel, Birne und Banane, und alle diese englischen Wörter dass wir Hand Sie. Und die Werte, die Sie effektiv sind Einfügen in Ihr Wörterbuch sind entweder wahr, oder das Fehlen false. Mit anderen Worten: Sie einfügen eine ganze Reihe von Schlüssel-Wert-Paare, Apfel, true, Birne, wahre, Banane, wahr. So dass, wenn Sie abrufen oder suchen bis die Daten in Ihrem Hash-Tabelle mit Überprüfungsfunktion, du bist entweder immer wieder eine Antwort, ja, ich fand es in meinem Komplex Hash-Tabelle, oder nein, es ist nicht da, so dass Sie false zurück. So, das zu tun, ist alles was ich brauche die Daten Struktur, wie ich vorgeschlagen, vor. Ich brauche nur zu können um Wörter zu assoziieren wie, Zitat Zitat Ende, symbol, mit einem Wert wie, wahr. Es gibt also meine Hash-Tabelle. Lassen Sie tatsächlich verwenden. Es gibt also ein paar Funktionen Ich brauche, um zu implementieren. Ich werde weitermachen und beißen Aus einer Funktion namens Größe. Es hat keine Argumente. Ich habe nicht mit Mühe das Wort, Leere, in PHP. Ich werde einfach Größe zurückzukehren. Und nebenbei, hat PHP Diese minorly lästige Detail, wo, wenn etwas ist global, müssen Sie sagen, die Funktion, in der Sie verwenden es, hey, das ist eine globale Variable. Also, kleinere Dummheit, aber Sie muss es dennoch zu tun. Und was ist mit Last? Ich werde zu implementieren eine Funktion namens Last das dauert im Namen von einem Wörterbuch, genau wie in Problem stellte fünf. Und bevor ich gehen, feststellen, dass ich nicht wurde die Eingabe ganz die gleichen Dinge. Was ist offensichtlich anders in PHP zu wie Sie eine Funktion im Vergleich zu C zu deklarieren? Ja. ZIELGRUPPE: [unverständlich] Sprecher 1: Kein Rückgabetyp. Und in der Tat, das ist der Fall, PHP soweit es schwach typisierte, ist auch in diesem Sinne ein wenig schlampig. Sie wissen nicht, wie der Programmierer angeben was dieser Funktion gibt. Sie müssten eigentlich aussehen auf den Code, um das herauszufinden. Oder lesen Sie die Kommentare oder der Dokumentation. So Vor-und Nachteile von diese Art von Entscheidungen. Aber ich muss sagen, das Schlüsselwort, Funktion. Und wenn wir erfahren, JavaScript in ein paar Wochen wir werden das Gleiche zu sehen noch einmal, aber es ist die gleiche Idee. Der Name der Funktion, ihr Argument oder Argumente, oder deren Fehlen, und jetzt Hier ist die Implementierung. Also werde ich ein paar Ecken gerade geschnitten dramatische nur für einen Moment zu sein. Aber ich werde weitermachen und sagen, dass dies. Dies ist, wie ich verarbeiten kann eine Datei in ein Array. Es gibt eine Funktion in PHP genannte Datei. Sie geben es der Name einer Datei. Es gibt dir wieder ein Array, innen von denen jede Zeile aus der Datei. Von null, eins, auf bis n minus 1 Linien. Das ist es, nicht wahr? Es gibt keinen f Lese. Es gibt keinen f get s. Es gibt keinen Prozent s. Es gibt keine Kopfschmerzen. Es gibt keinen feof. All das Zeug, mit dem Sie haben vielleicht gerungen, mit S. vier und fünf, geht weg. Also habe ich einfach zu lesen diese Zeilen in die Datei, und dann weißt du was? Wenn ich über diese Worte wiederholen, Was ich tun kann, für jeden Linien als Linie. Denken Sie daran, dass dies ein bisschen eine clevere Art der Iteration über ein Array-Index durch den Index, und bei jeder Iteration aufruf die aktuelle Zeile, Dollarzeichen Linie. Und genau hier, ich werde gehen und sagen, Tisch, Halterung, Linie, bekommt wahr. In anderen Worten, ist dies, wie I einfügen in meine Hash-Tabelle in PHP. Ich sage Dollarzeichen-Tabelle, die ist mein assoziatives Array, das war leer pro die Codezeile oben. Ich habe dann index hinein nicht, unter Verwendung einer Anzahl, sondern buchstäblich mit dem Schlüsselwort, das mich interessiert. Vielleicht ist es Apfel- oder Birnen oder Banane oder was auch immer, sondern speziell ich Indexierung in sie, wie ich vorgeschlagen früher. Ich den Namen nehmen Sie meine assoziatives Array, und dann habe ich benutzen Zitat unquote in der eckigen Klammern mit einer Schnur, anstelle der eigentlichen Nummer. Und so, dass es ist. Die Ladefunktion ist getan. Sobald diese Schleife wiederholt, ich habe setzen alles in der Hash-Tabelle. Jetzt Klein Haftungsausschluss, es gibt eine paar Dinge, die ich tun müssen, um zu beheben. Und die Version Ich werde online zu stellen werden alle Nuancen haben, aber es ist meist nur gehen, um etwas zu sein Fehlerprüfung und einige kleinere Verbesserungen. Aber das ist in der Tat der Kern von ihm. Wenn ich jetzt zu implementieren die Funktion aufgerufen prüfen, was eine erwartet Wort als Argument, wie könnte ich fahren bei tuend jene? Nun, ich bin einfach nur sagen, wenn Innenseite meiner Tisch, an dem Ort Wort, wenn gesetzt. Also, wenn es ist-- wirklich, weißt du was? Ich werde es in zu tun ein bisschen wie Pseudocode. Aber die Idee, die gleiche ist. Wenn das wahr ist gleich, return true. Gut. Else-- Sie Art sehen, wo dies going-- false zurückgegeben. Fertig. Check durchgeführt wird. Pretty nice, nicht wahr? Und so was ist das eigentlich hinaus? Und auch, schneide ich ein paar Ecken. Sehen Sie in der Online-Version für alle Nuancen. Aber das ist der Kern von ihm. Index in Ihre assoziatives Array, auch bekannt als Hash-Tabelle finden Sie, wenn es ein Wert da, wenn es auf true gesetzt, und wenn ja, return true. Deshalb haben wir uns nach unten beschnitten die gesamte Komplexität. So Art von Geist weht, nicht wahr? Ich werde nicht die Mühe Finishing mit Entladen, weil in fact-- oh, weißt du was? Ja, wir beenden sie mit Entladen. Entladen in einer Hash-Tabelle aussehen könnte wie Funktion Entladen, zurückzukehren. OK also ist das Entladen. Da gibt es nichts, zu entladen, oder? Es gibt keinen malloc. Ich habe nicht explizit fragen, die Betriebssystem für alles. Ich habe gerade angefangen mit Variablen. Und so ist auch dies eine Manifestation Merkmale der höheren Sprachen. Also noch einmal, die meisten dieser Frist wir haben hier zu tun unten C. mit Super-Low-Pegel. Sie können den Arbeitsspeicher des Computers zu sehen. Sie können alles, was Sie berühren, will im RAM des Computers, zum Besseren oder zum Schlechteren. Hier oben, wir gehen zu geben, diese Macht. Aber mein Gott, schauen Sie, wie viel weniger Code schrieb ich. In der Tat, wenn ich nicht sprechen und reden über meine Schreibarbeiten, wir würden mit getan worden dieses Beispiel vor fünf Minuten. Also, was ist der Preis dafür bezahlt? Nun lassen Sie uns einen Blick. Lass uns einen Blick darauf werfen. Ich werde weitermachen und laufen CS50. Lassen Sie mich zunächst in zu gehen heutigen Beispiele, bei denen Ich habe die Texte Verzeichnis wie zuvor. Ich werde die Lösung Lauf, sie mit Problem stellte fünf genannt kommt Speller, der in CS50 Konto ist. Und ich werde es auf etwas laufen große wie der King James Bibel, einfach so, dass wir wirklich die Mitarbeiter-Lösungen auf den Prüfstand. Jetzt manchmal das Internet ein wenig langsamer, ein wenig schneller, könnte eine Weile dauern, um zu blättern. Aber es dauerte insgesamt 0,56 Sekunden Rechtschreibung und die King James Bibel mit dem Personal-Lösung. So ziemlich gut. Yours könnte viel langsamer sein, und das ist völlig in Ordnung. Aber es ist richtig hier. Also das ist das Personal-Lösung. Wenn ich in und bereinigen die PHP-Version. Und ich werde ein wenig zu tun wie Backshow Sache. Wir werden den Code schrieb ich nehmen früher, so ist es vollkommen richtig. Da der Code, den ich schrieb, ist nicht um vollkommen richtig gerade jetzt. Aber wenn ich die PHP-Version, was muss ich aufgeben, heute? Dauerte fünf Minuten, um Umsetzung S. fünf, behaupte ich. Zu welchem ​​Preis habe ich bezahlt? Ja. ZIELGRUPPE: Geschwindigkeit. Sprecher 1: Geschwindigkeit. Was meinst du? Publikum: Es wird länger dauern. Sprecher 1: In Ordnung. Mal sehen. Es wird länger dauern, nicht zu schreiben, aber, um sie auszuführen. Ja. Also lassen Sie uns versuchen, diese. So, hier werde ich voran gehen und zu tun PHP von Speller, und weil die Datei genannt Speller. Also ich bin nicht läuft die Wörterbuch, Rückruf, Ich bin mit dem Programm namens Speller. Ich werde in der gleichen geben Datei, King James die fünfte. Es fliegen. Dies könnte nur Internet-Geschwindigkeit sein, also nicht zu viel in diese lesen. Aber es fühlt sich mehr sicher. 1,26 Sekunden. Nun, das ist immer noch ziemlich verdammt schnell, nicht wahr? Und der einzige Grund dafür, dass sich angefühlt mehr wie drei oder vier, oder fünf Sekunden, das ist nur, weil Das Internet wurde als langsam. Der Computer verbrachte Zeit betrug 1,26 Sekunden, im Vergleich Ich denke, 0.56. Also mehr als doppelt so langsam. Nun, das ist immer noch verdammt schnell, aber es ist eine Manifestation der in der Tat, dass genaue Preis. Weil wir der Interpretation in den Code Zeile für Zeile, und das Programm PHP wird das Lesen meiner Code oben nach unten, von links nach rechts, es muss mehr Denken zu tun. Es muss Art zu konvertieren es im Inneren von sich selbst zu dem entsprechenden Maschinen Code im laufenden Betrieb, sozusagen auch wenn die Mechanik sind ein bisschen anders. Statt nur der Zuführung zum Intel CPU die rohen Nullen und Einsen dass es versteht, nativ. So absolut, die Hände nach unten, haben wir ein Preis bezahlt. Und Code in einer Sprache geschrieben wie PHP neigt dazu, langsamer. Aber mein Gott. So, jetzt, wenn ich meine Rechtschreibprüfung Datei, verbringe ich eine extra 0,7 oder so Sekunden vs 20 Stunden umsetzen ein schnellerer Rechtschreibprüfung, nicht wahr? Es ist eine Art Kompromiss. Und wenn Sie gerade erst anfangen p stellte fünf, vielleicht nicht mehr als 20 Stunden betragen. Könnte sein, viel weniger als das. Aber es ist ein Trade-off, für echt. Und wenn Sie mit Code arbeiten an wirklich großen Datensätze, oder auch ältere Hardware, diese Art von Unterschieden kann sicherlich summieren. Haben Sie Fragen bisher? Ja. ZIELGRUPPE: [unverständlich] Sprecher 1: Sorry, kann Sie sagen, dass noch einmal? ZIELGRUPPE: [unverständlich] Sprecher 1: Du gibst Zeit. Nun, so yeah. Sparen Sie Zeit, indem nicht mit, um es zu kompilieren, wenn das, was Sie fragen. Und in der Tat, in CS50, die meisten Programme, auch wenn sie eine Weile dauern, zu schreiben, sie sind relativ kurz. Einige Dutzend, einige hundert Zeilen Code, und so sind sie zu kompilieren ziemlich schnell. Aber wenn Sie beginnen Schreiben von größeren Programmen, wie wenn Sie Microsoft bist, oder du bist Google und das Schreiben wirklich große Programme in C oder C ++, oder ähnlich zusammen Sprachen, könnten viele Sekunden dauern, oder sogar Minuten oder länger, um Kompilieren Millionen von Codezeilen. Und es gibt auch, dass Differenz wird zu addieren. Und in der Tat, wenn wir Übergangs heute, am gleichen Tag heute, um Web-Programmierung Verwendung von PHP, du bist gehen, um es einfach so viel zu finden mehr Spaß, Code zu schreiben wenn Sie nicht über diese dumme zu tun Schritte wie Änderung an Ihrem Terminal Fenster ein Make hallo, re führen Sie es aus, laden Sie die Fenster. Einfach so viele dumme mechanische Schritte, nur im Weg, dies zu tun bekommen der interessanteste, der Spaß der Arbeit. Und in der Tat werfen wir weg mit PHP. Und wir interagieren können damit schneller. Ja. ZIELGRUPPE: [unverständlich] Sprecher 1: Sicher. Kann ich zu klären, was es Mittel zu interpretieren? Wenn Sie eine Sprache zu kompilieren wie C, geht es nach unten wie wir, um die Maschine Code, Nullen und Einsen. Und Intel beschlossen, vor Jahren, dass bestimmte Muster von Nullen und Einsen stellen Addition oder Subtraktion, oder drucken, oder andere Grundoperationen. In der Welt von einer interpretierten Sprache wie PHP oder JavaScript oder Python, oder Ruby oder Bündeln von andere, anstatt jemand schrieb ein interpreter-- in diesem Fall ist es auch genannt PHP, identisch mit dem Name des language--, die im Wesentlichen hat eine große Schleife in es, dass eine Iteration über alle Zeilen des Codes dass ich es dort als Eingabe, wie hallo dot PHP, oder Wörterbuch dot PHP. Und dann haben Sie ihrer großen denken kann Schleife als eine Menge von Bedingungen. Und diese Bedingungen sagen, wenn die Menschen ist das Stichwort für die geschrieben, tun beginnen seine Code wieder und wieder. Oder wenn der Mensch hat geschrieben die Codezeile, wenn, nur durchführen, ihre nächste Zeile bedingt. So ist es wirklich wie zu interpretieren es in einem menschlichen Sinne Linie durch die Linie, und dass, nur braucht Zeit. Es dauert Overhead. Und das ist also eine Preis-- gute question-- wir zahlen. Lassen Sie uns so tun, eine weitere Demo- Das ist ein wenig dramatischer. Es gibt, würde ich sagen, ein Baseballstadion diese an eine 90% ige Wahrscheinlichkeit, dass in Ermangelung schrecklich, aber Sie werden erstaunt sein, mit 10% Wahrscheinlichkeit. Also jedes Jahr versuchen wir, um dies zu tun, wobei wir versuchen, ein Programm zu schreiben, das durchgeht Problem auf Null gesetzt, für die Sie haben, eingereicht Ihre Telefonnummern und eine viele andere demografische Informationen, und wir programmatisch senden Sie eine Textnachricht. Und dann jedermanns Handy piept oder vibriert, und es ist einfach unglaublich, denn gut, schauen, was Computer tun kann. Dies funktioniert nur selten richtig es scheint, zum großen Teil weil ich in der Regel schwarzen Liste von Google Mail oder einen anderen Dienst für die tatsächlich versuchen, dies auf der Skala zu tun. Aber lustige Sache ist auch, da wir nicht jeder haben heute hier, Spaßtatsache wir das letzte Mal vor zwei Jahren versucht, diese, Ich glaube, ich schrieb ein Programm, dass in einer Schleife iteriert setzte über alle Schüler in der Klasse, und jedes von ihnen eine Textnachricht, und sie sagte etwas wie, warum sind Sie nicht in der Vorlesung? Liebe, CS50 bot. Sie haben keine Ahnung, wie viele apologetische und Art von schmerzhaften E-Mails Ich habe als Antwort aus dem empfangenen n minus 100 Leute, die nicht hier waren dieser Tag. Und noch lustiger, schändlicher story-- Sie wissen, sagen wir es da draußen. Es ist schon auf Video ein paar Jahre zurück. So werden Sie bald sehen mich schreib eine for-Schleife, wobei es ist sehr einfach, einen Fehler, dass zu schreiben for-Schleife, so dass die erste Zeit durch die Schlaufe, die Sie senden Sie eine Textnachricht. Das zweite Mal durch die Schleife I sollte eine weitere SMS-Nachricht gesendet haben, und dann noch einen Text Nachricht und eine weitere. Aber es stellt sich heraus, ob Sie einen Tippfehler machen bei der Programmierung, manchmal können Programme, die eine Nachricht zu schreiben Textnachricht, dann zwei SMS-Nachrichten, dann drei Textnachrichten an alle, die bereits eine SMS-Nachricht empfangen hat. Und wie Sie wissen, etwas zu tun, zzgl etwas, plus etwas, zzgl etwas, ist ein großes O der Lose Textnachrichten oder n quadriert, oder 0,10 $ eine Textnachricht, $ 20.000. Zum Glück habe Ctrl-C schlug vor, dass passiert ist, aber ich verdanke mindestens eine Ihrer Vorgänger $ 20 für die 200 ein paar seltsame SMS-Nachrichten, dass, nicht nur ging zu seinem Handy, aber auch, es war wie eine ältere Flip-Telefon so dass es wie aus schob Speicher jede andere persönliche Text Nachricht er tatsächlich bekommen. Also haben wir ein Ziel haben heute, nicht, das zu tun. Vielleicht schalten Sie den Flugmodus. Gut. Lassen Sie uns also in einem gehen Programm hier callled-- dass ich Text dot PHP nennen. Und im Voraus, ich habe zwei Dateien hier. Ich eine Datei für nur Personal hat, das muss alle Informationen der Mitarbeiter, alle Namen von der Website der natürlich. Und dann für jetzt ich gerade auf einige gefälschte Nummern 555-1212. Also das wäre nicht wirklich überall zu gehen. Aber beachten Sie das Innere dieser CSV-Datei, was wir über kurz gesprochen, bevor im Zusammenhang mit der Datei IO. Was ist eine CSV-Datei? Komma getrennte Variablen. Und das ist ein bisschen wie ein sehr Leichtbau-Datenbank, wenn man so will. Es ist Art von Art von vier Spalten in dieser Datei, und gezackt, aber die Kommas im wesentlichen stellen Spalten dar, in der Datei. In der ersten Spalte ist der TF oder CA Name. Zweite Spalte ist ihren Nachnamen. Dritte Spalte ist ihre Telefonnummer. Und vierte Spalte anscheinend ist-- vierte Spalte ist offenbar, was? OK, so ist es ihre Träger. So Verizon oder Sprint, oder was nicht. Und wenn ich misspoke früheren, CSV. Comma separated values ​​CSV ist hier. Also, was kann ich tun, mit diesem? Gut, das ist nur eine große Textdatei, und es ist eine Art lange, nicht wahr? Wie dies zu gehen sein Art ärgerlich. Und es stellt sich heraus, obwohl, dass, wenn ich möchte eine Textnachricht an, lassen Sie uns senden sagen Alex hier. Lassen Sie mich in meinem Browser gehen und beenden Sie den Vollbildmodus nur so kann ich hin und her zu wechseln. Es stellt sich heraus, mal sehen, ob ich in gehen hier und melden Sie sich bei Google Mail, alles in Ordnung. An diesem Teil Schauen Sie nicht. Nur bekomme ich, um zu sehen. natürlich die Livestream kann immer noch sehen, was ich tue. Gut. So, hier ist nur mit Google Mail John Harvard Konto. Also, wenn ich eine Nachricht SMS an Alex, Ich kann natürlich eine Nachricht verfassen. Und es stellt sich heraus, und ich habe getestet mit Alex, bevor Sie hier, so können Sie eine bestimmte Domäne anhängen zu nennen, um Telefonnummern der Leute, da es in der Welt existiert Dinge genannt SMS an eine E-Mail-Gateways. Das ist eine andere Art zu sagen alles von uns, die Mobiltelefone haben, dass haben Telefonnummern, natürlich, es wahrscheinlich für Ihre Träger, eine bestimmte Endung wie zu Vtext.com für Verizon Textnachricht dot com, die Sie auf Ihrem anhängen persönliche Telefonnummer, und dann Sie oder Freunden, oder deine Eltern können Text, den Sie an dieser bestimmten Adresse. Und Verizon hat einen Server, eine E-Mail Server, dass nach Erhalt dieser E-Mail, befasst sich mit der numerischen Teil und dann was auch immer nutzt spezielle Branchen Magie sie müssen tatsächlich senden Sie es über der Äther, um Ihre bestimmten Zelle Telefon. Nun, das ist schön, weil ich nicht wirklich wissen, wie eine Textnachricht senden oder Code noch schreiben für mein Handy, und man könnte genau das zu tun, für die ein Abschlussprojekt, aber für jetzt alle Ich habe, ist mein Laptop hier. Deshalb möchte ich über diese CSV laufen Datei, Zeile für Zeile, Zeile, Zeile, greifen jeweils mit Telefonnummern der Mitarbeiter, und deren Träger und programmatisch, verketten, das ist, schließen Sie das Telefon Nummer mit der entsprechenden Domain-Namen und dann schicken Sie eine E-Mail. Also das ist eine Menge von Schritten. Und viel Glück zu tun, dass in C. Es ist ein Alptraum für eine Situation, um eine Datei zu öffnen, um es zu lesen Linie, Zeile, Zeile, wie Sie sehen oder können bald zu sehen mit Problem stellte fünf, wenn nicht Problem Set vier, und dann dynamisch verketten zwei Strings zusammen, denn in C, zwei Strings zu nehmen und kombinieren sie, was willst du minimal- müssen Sie wahrscheinlich zu tun? Sie brauchen, um mehr Speicher zu erklären, oder? Und fragen, malloc, kann ich mehr Speicher? So kann ich die Hälfte davon setzen hier, die Hälfte davon hier. Es ist nur so viele Schritte. Und von diesem Punkt Sie verloren haben Interesse an der dumme kleine Demo in dem Sie lassen jeder Telefon Signalton. Lassen Sie uns diese Art von PHP Stil, wobei wir nur starten Sie mit mehr von diesem Küchenspüle. Und die Ideen sind grundsätzlich die gleiche, aber wir müssen nicht zu kümmern viel von diesem niedrigeren Niveau. Also mal sehen, wie ich könnte gehen über das Tun dies. Und nur damit, dass ich nicht wiederholen die Fehler der Vergangenheit, Ich habe ein paar Notizen für mich hier geschrieben. Und lassen Sie uns sehen, wenn ich uns kann zu Fuß einige der grundlegenden Schritte, und dann für die Zeit willen wir werden Vielleicht haben einige Ecken am Ende abgeschnitten. Ich werde weitermachen und tun, offen Halterung PHP, diese Datei zu starten. Und ich werde weitermachen und tun dies. Datei-Handle, wie Sie bald sehen werden, tatsächlich ruft eine Funktion namens f geöffnet. Und denken Sie daran eine Datei öffnet. Und das Zitat, Zitat Ende, r bedeutet, was wiederum? Öffnen Sie es nur für Lese. Jetzt in p-Set für, haben Sie diese. Und zu handhaben könnte alles sein, fu, Bar, bas, jede Variablennamen. Aber in der Regel ein Computer, Wissenschaftler würde eine geöffnete Datei aufrufen, so dass Sie ein Datei-Handle, etwas, auf sozusagen zu halten. Ich werde einfach zu tun, einige Fehlerprüfung. Also, wenn der Handgriff ist falsch, genau wie in C, ich werde etwas tun, Datei konnte nicht geöffnet, umgekehrten Schrägstrich n. Und dann habe ich werde einfach nach vorne und Ausgang zu gehen. Und es stellt sich heraus, in PHP, Ich bin nicht in einer Funktion. Es gibt keine Hauptfunktion hier. So dass ich nicht zurückkehren, per se. I verlassen. Das im Wesentlichen dasselbe. Und ich bin verlassen mit einem y wahrscheinlich. Ein Mittel nur einen Fehler von einer Art. Es ist nicht Null ist, so ist es ein Fehler ist. Na gut, also, wenn ich hier bin jetzt nach unten in meinem Programm habe ich die Datei geöffnet wird. Ich werde weitermachen und erklären, ein Array namens Adressen, und in C müsste ich das wissen, Größe des Arrays im Voraus, nicht wahr? Oder ich brauchen würde, dies zu erklären, ist ein Zeiger, und verwenden Sie dann malloc. Und dann jedes Mal, wenn ich lese durch eine andere Reihe in der Datei, Ich werde müssen malloc mehr Speicher, malloc mehr Speicher. Das ist ein Schmerz im Nacken. Und Gott sei Dank, PHP und Ruby, und Python und JavaScript, sie Ihre Arrays wachsen automatisch für Sie. No more malloc. Nicht mehr Speicherverwaltung. Der Computer übernimmt, dass. Aber der Preis, den Sie bezahlen. Es ist ein wenig langsamer. Und für ein Programm wie dieses wir werden nicht zu bemerken. Wir werden 100 SMS-Nachrichten senden. Zum Beispiel werde es nicht fühlen. IT wirklich beginnt nur Rolle der Sprache Ihrer Wahl Wenn Ihre Daten oder Ihre Programme bekommen wirklich, wirklich ansehnliche, wie es der Fall sein, um so mehr, Mit unserer Web-basierten Zeug. Aber jetzt wollen wir vorantreiben. Während es stellt sich heraus, es gibt eine Funktion in C genannt F CSV. Datei zu erhalten CSV, das dauert ein Datei-Handle als Argument, und es geht dann, Reihe, von Zeile für Zeile, um eine Zeile zu lesen in. So ist es nur liest eine Zeile der Text aus der Datei. Aber was ist schön zu dieser Funktion es nicht nur geben Sie mir eine Textzeile. Es sieht für die Kommas, und analysiert die Linie. Und, um die Linie zu analysieren bedeutet, zu spalten auf bestimmte Werte in diesem Kontext. Mit anderen Worten, Dollarzeichen Reihe ist eine Variable, ist werde mir ein paar Indizes zu geben. Das wird das sein, erste Spalte in meiner CSV. Das wird der zweite sein Spalte, das wird das dritte sein, und das wird die vierte sein. Weil Rückruf und Excel die nicht kooperieren wir das letzte Mal tat dies, aber wenn ich herunterladen Personal dot CSV. Whoops, nicht umbenannt werden. Wenn ich Mitarbeiter dot downloaden CSV, und versuchen Sie es zu öffnen, Ich habe bereits registered-- oh I hat Excel nicht aktualisiert seit dem letzten Mal. Sie finden, dass in der Personal dot sehen CSV, ich habe vier Spalten. Also, wenn ich in der Lese erste Reihe zum Abby hier, Dollar-Zeichen Zeile 0 ist Abby, Dollar-Zeichen Reihe eins ist Lyons, Dollar-Zeichen Reihe zwei ist ihre Zahl, und dann ihr Telefon Träger. Also das ist alles. Und das ist schön, weil ich nicht haben, um jetzt herauszufinden, wobei alle diese Kommas tatsächlich sind. Also werde ich voran gehen und tun dies, da die Definition, Ich werde sagen, dass ihr Name ist in Zeile Halterung Null, wie versprochen. Und ich werde grab-- und wirklich, weißt du was? Ich werde nicht zu befürchten ihren Namen, in diesem Fall. Ich werde es einfacher, zu halten. Ich werde tun, ihre Nummer in Zeile zwei Bügel, denke ich. Und ihr Träger war wo? Reihe drei, eins über. Also nichts Neues. Es ist nur Null-Indizierung in ein Array. Und jetzt werde ich folgendes tun. Wenn der Träger gleich entspricht AT & T-- Ich werde einfach einen loop-- haben Ich möchte eine E-Mail erstellen Adresse, die so aussieht. Es wird 617-555-1212 sein an, was ist es, text.ATT.net, ist das, was ich tun möchte. So, wie ich das tun? Ich werde folgendes tun. Ihre Adresse wird ihre Zahl sein, und jetzt lassen Sie mich gehen Sie vor und tun dies. Dieses ist etwas flippige Syntax. Ich konnte die prozentuale s Trick zu tun, aber ich kann eigentlich nur tun. Das ist also ein PHP Sache, aber laßt uns überlegen, was ich tue. Dollar unterzeichnen Adresse auf der linke, nur eine Variable. Geben Sie mir eine Variable. Ich habe nicht um den Typ angeben. PHP wird es herausfinden. Auf der rechten Seite, was ist der Datentyp jenes Ganze auf die rechte Seite? Sieht aus wie eine Schnur, denn es gibt Doppel zitiert ganz links und ganz rechts. Jetzt gibt es einige coole neue Syntax hier. Es gibt die geschweiften Klammern, und der Dollar-Zeichen-Nummer. Aber nehmen Sie eine Vermutung, was ist, dass Syntax wahrscheinlich erzählen, um PHP für mich tun? Ja. Gerade dort legen Sie den Wert. Also kein Prozent s. Wir konnten Druck f oder s verwenden Druck f oder so ähnlich, aber PHP und viele höheren Sprachen, Sie gehen, um zu sehen, dass man dasselbe tun funktional, vielleicht sechs verschiedene Arten. Und so beginnt es zu werden eine Frage der Gestaltung und Stil. So ist dies nur eine kryptische Weise suchen zu sagen, gib mir eine E-Mail-Adresse, aber Plug-in der Anzahl in zwischen diesen geschweiften Klammern. Und die geschweiften Klammern werden nicht am Ende in der letzten Adresse. Jetzt können wir über einige überspringen diese Zeilen für Zeit willen. Also, wenn ein Träger ist gleich gleich verHorizon-- hoppla, Verizon-- Ich will etwas tun, sehr ähnlich, wo die Adresse erhält, Zitat, Zitat Ende, Zahl am text.ATT.net. Und dann kann ich die gleiche Art von tun was für den Rest der Träger. Aber ich werde einfach dot, Punkt, Punkt zu tun für jetzt. Und nun an, dass wir Ich möchte Array hinzuzufügen, drücken Sie. Ich möchte, um das Add Array, genannt Adressen. Die Adresse, das ist, wie Sie fügen etwas an ein Array in PHP. Sie brauchen nicht zu malloc zu tun. Sie müssen nicht, um die Anordnung zu ändern. Sie gerade sagen, Array, Push. Was sagen Sie zu push-- was Array möchten Sie wollen etwas auf zu schieben? Adressen. Was Sie wollen, um auf Adressen zu schieben? Adresse. Und in der Tat, wenn Sie wirklich clever sein wollen, einige syntaktischer Zucker Hierzu sozusagen das bedeutet nur, wie können Sie diese in zu tun desto schöner Weg, wäre, dies zu tun. Das hat auch den Effekt der wachsenden die Adressen-Array nach Größe eine, und dann plop, dass zusätzliche E-Mail Adresse in sie. Ja. ZIELGRUPPE: [unverständlich] Sprecher 1: ein Tippfehler auf der sonst if-- oh, Träger. Das ist ok. Es wird auch nicht zu mögen mein Versagen Umsetzung im Rahmen dieses Programms später. Aber danke für kontrollieren. Ein weiterer Fehler. Danke. Wir wollen, dass dies Vtext.com sein. Ja. Gut. Also, wo führt uns das? Wir haben den Code zum Öffnen der Datei geschrieben. Wir haben eine Schleife zu durchlaufen über die Zeilen in der Datei. Wir haben Code, fügt meine Array, eine zu einem Zeitpunkt, der richtig formatierte E-Mail-Adresse ein. Also alles, was wirklich bleibt, ist zu senden eine E-Mail für jede dieser Personen. Also habe ich weitergemacht und machte mich wie folgt. Was werde ich hier ist-- tun und lassen Sie uns gehen Sie vor und fahren Sie mit einigen eigentlichen Code, die wie folgt aussieht. Also hier ist die vorgebackenen Version, die ich schrieb früher. Und beachten Sie, ich fertig Umsetzung Sprint. Ich beendete die Umsetzung von T-Mobile. Ich beendete die Umsetzung Virgin Mobile. Und ich werde im Voraus entschuldigen. Es gibt ein paar Träger, einige Schüler in der Klasse haben dass ich nicht die Mühe Aufzählung in dem Zustand, wenn Sie hier. Also nicht alle Texte erlischt. Aber lassen Sie uns sehen, was ich tun muss. Ich schließen Sie die Datei, nur wie in S. vier. Und dies ist eine neue Syntax. Und wir werden ein wenig zu sehen Bit dieses im Laufe der Zeit, vor allem mit S. sieben und acht. Aber das ist Syntax zum Erstellen eine spezielle Art von Struktur. Es stellt sich heraus gibt es eine Bibliothek, kommt mit PHP, die so genannte PHP-Mailer. Sein Ziel im Leben ist, programmgesteuert E-Mails senden. Es ist Code jemand anderes schrieb, macht es einfacher für uns, E-Mails zu senden, so haben wir nicht zu halten hin und her, um Google Mail, und Einfügen in der Menschen E-Mail-Adressen. Es gibt eine ganze Reihe von Linien hier dass ehrlich, ich nur irgendwie kopiert und aus der Dokumentation eingefügt. Und in der Tat, wenn Sie neugierig, verließ ich alle der URLs der Dokumentation in dem Code, den wir später veröffentlichen. Und beachten Sie, dass unter die Dinge, die ich tue, ist, ich sage diese Bibliothek, Verwendung von Google Mail-Server, oder? SMTP sprachen wir kurz über, wenn wir waren an der Yale darum, einfache Mail Übertragungsprotokoll. Es ist das Protokoll, Server verwendet werden, um E-Mail, und that's-- Gmail hat einer von denen. Ein Port ist dies die TCP-Portnummer. Es ist in Ordnung, wenn Sie noch nicht gesehen habe 587. Genau wissen, dass aus der Dokumentation. Hier ist mein Benutzernamen ein. Ich werde das CF50 Bot verwenden. Und in einem Moment, ich bin gerade dabei, geben eigentliche Passwort des Bots. Und dann hier unten, bemerken, was bleibt. Ich meine von der Adresse bei CS50.net Bot werden. Ich denke, ich werde nicht das Senden bedauere ein SMS an 800 Menschen, die sagt, vermisse dich, Liebe CS50 bot, vielleicht für diejenigen, die heute nicht kommen konnten. Und dann in die Leitung 76, was soll ich tun? Diese Art von aussehen wie C. Also für i gleich 0 ist, n equals-- jetzt zählen ist neu. Es stellt sich heraus, dass, wenn Sie erhalten möchten die Anzahl der Dinge, die in einem Array, Sie müssen nicht, um es nicht mehr erinnern. Sie können fragen Sie einfach ein Funktion namens Graf, und es wird Ihnen sagen, wie viele Adressen sind in diesem Array. Und dann werde ich hinzufügen, die Adresse, an die E-Mail. Und ich weiß das aus Verwendung der Dokumentation. Es ist ein Add-Adresse Funktion. Und jetzt gibt es bemerken, ist ein Stück der Syntax. Wir haben das schon mal gesehen in C im Geiste. Sie können denken, der Dollar-Zeichen Mail als eine Variable, die sie ist. Aber es ist eine struct Innenseite die nicht nur Immobilien, Variablen, wenn man so will. Aber es stellt sich heraus, dass in PHP, die ist eine objektorientierte Programmiersprache Sprache wie Java, wenn Sie nahm APCS. Dollar-Zeichen-Mail, wenn Sie wollen zu-- es hat auch Funktionen innerhalb von ihr, oder Methoden. Also das ist zu sagen, dass spezielle PHP-Mailer Bibliothek, wenn ich eine Variable davon bekam, wenn ich will, um einen Funktionsaufruf, kommt mit dieser Bibliothek, für heutige Zwecke, nur wissen, dass Sie den Pfeil-Notation verwenden. Es gibt keinen Punkt-Notation. Es ist nur der Pfeil. Aber das ist nicht ein Zeiger. Es ist nur von der C-Syntax entlehnt. So rufen hinzufügen Adresse Innenseite dieser Bibliothek Objekt oder eine Variable. Gut. Das ist die magische Linie. So habe ich eine E-Mail zu senden. Das entspricht der Öffnung Gmail, tippen Sie es aus, und das Schlagen zu senden. Aber es wird statt Nachricht senden E-Mail an diese Adresse, mit diesem Körper, aus der CS50 bot. Und jetzt Schlüssel Linie. Diese Linie wurde in abwesend wie 2011 wenn ich denke, dass ich das letzte mal versucht diese. Diese Linie gibt, natürlich, löscht die Adressen. So logisch, wenn ich die Adresse nicht zu löschen nach jeder Iteration, wobei die erste E-Mail oder SMS-Nachricht geht an Alice, die zweite geht an Alice und Bob die dritte geht an Alice und Bob und Charlie, daher der sehr teurer Fehler Ich habe in diesem Jahr. Also mal sehen. Gibt es noch Fragen bevor wir alle einen Text senden Ihnen Meldung mit 10 Prozent Wahrscheinlichkeit? Irgendwelche Fragen? Gut. Lassen Sie mich gehen in hier und Wechsel das Passwort, was funktionieren sollte, wird wahrscheinlich von Google Mail auf die schwarze Liste zu bekommen. So dass sie möglicherweise nicht alle gehen aus, da sie wahrscheinlich mögen uns nicht das Senden von E-Mails 800 in einer for-Schleife alle auf einmal. Da das nicht insbesondere menschlichen Verhaltens. Oh, ich werde eine andere Sache zu ändern. An der Spitze, werde ich sent-- Ändern Sie die Datei, um Studenten dot CSV. Und ich werde nicht zu öffnen, aber das ist eine identische CSV-Datei mit nicht 100 Mitarbeiter, aber 800 Schüler, nur Harvard, Yale, weil weist Oktober Vertiefung in dieser Woche. Und es scheint wie eine Art Ruck Sache zu tun, um alle von ihnen, warum Text sie sind nicht in der Klasse in den Urlaub. Das ist ok. Nur Harvard-Studenten heute innerhalb dieser Datei. Und nun zurück gehen lassen zu meinem Terminal-Fenster. Ich bin ein bisschen nervös. OK so jetzt werde ich in der go Verzeichnis und PHP Text dot PHP. Wie wäre es mit einem mutigen Freiwilligen? Also ich will das nicht auf mich. OK, komm herauf. Wie heißen Sie? MAYA: Maya. Sprecher 1: Maya. Kommen Sie auf, Maya. Gut. Mal sehen, ob das funktioniert. Ich habe meine eigene E-Mail-Adresse in das file-- meine eigene Telefonnummer in der Datei, so dass hoffentlich werde ich eins zu bekommen als auch. Nett, dich zu treffen. MAYA: Ebenso. Sprecher 1: Also alles, was Sie tun müssen ist, Enter drücken, um 800 SMS-Nachrichten senden, wenn ich es nicht vermasseln. Nett. Könnte eine Weile dauern, statistisch, bis wir zu einer E-Mail zu erhalten address-- eine SMS-Nachricht, die ist in den Raum jetzt. Lassen Sie uns zu verweilen und zu sehen. ZIELGRUPPE: [PFEIFEN] Sprecher 1: Oh, ja. ZIELGRUPPE: Oh, gotcha. Sprecher 1: Für Schleifen sind-- diese ist nicht wegen der PHP langsam. Dies ist langsam, weil Google Mail wird Drosselung uns und nicht lassen uns zu senden mehr als wie eine E-Mail pro Sekunde. Alles, was? Das war eine harte Sache für mich, um zu testen, Haus mit nur ich und mein ein Telefon, so. Ist das hoffentlich von der Bot? Ja? Nein? Sag ja. Nein? Es ist von einem Freund? Umständlich. OK. Ziemlich sicher, dass es zwar arbeiten. UH Oh. Sie black-- oh, warten Sie eine Minute. Oh, weißt du was? Einen Moment bitte. Nur Maya und I-- Mia, war es? MAYA: Maya. Sprecher 1: Maya, sind los wissen, was ich hier falsch gemacht haben. Oh, warten Sie eine Minute. Ich denke, dass ich gerade geschickt 100 Textnachrichten an 555-1212. Stehen zu. Ich kann jedes Jahr nicht gewinnen. OK. Maya? Update, das in der Postproduktion. Dammit! Nach der von der Adresse. OK, stehen. Es tut uns leid. Es ist jedes Jahr schmerzhaft. OK, wird gesucht. Das ist gut. Ich bin statt, dies zu tun. Print-Adresse. OK, stehen. Print-Adressen, Halterung i. Ja, das gefällt mir. Dollar sign-- OK werde ich erklären, was ich dabei in einem Moment, nachdem ich diese ausführen. Jedes Jahr. OK, hier gehen wir. Ich habe just-- und ich möchte nicht, an alle, die Telefonnummer zu zeigen, aber Maya kann bestätigen, mit einem Kopfnicken, , dass sie sieht, jeder ist Telefonnummer in der Klasse dass ich gehe, um in zu kopieren ein Programm namens Google Mail. Und wenn in Gmail, was wollen wir sagen? Vermisse dich. Liebe-- das ist nicht von mir. Ich habe nicht einmal getroffen zu senden ist leer. Lassen Sie uns also gehen Sie voran und tun Dies, wenn ich heranzoomen. OK. Also bin ich mit einem Programm namens Google Mail jetzt. Wenn Maya, würden Sie gerne klicken Sie auf die Schaltfläche Senden, wir simulieren, was das Code sollte getan haben. Alles, was? [BEEPS] ZIELGRUPPE: Yep. Sprecher 1: Ja? Salvation? ZIELGRUPPE: Yep. Sprecher 1: Fräulein Sie. Und ich werde zu senden, den Rest erledigen. Ich schickte die Hälfte, weil ich nicht glaube, Gmail ließ diejenigen, durch zu gehen. Also denken Sie daran, heute ist der Tag dass Sie gelernt, dass ich Google Mail verwenden. Das war erschreckend. Ein großer Beifall auf Maya. Danke. In Ordnung, so. was [BEEPS] Wir haben ein paar Töne, ja? Gut. Jetzt werde ich zu 700 wirklich unglücklich E-Mails von Klassenkameraden zurück. So zumindest sehen wir weiter wenn das war es wert. Also, was ist schiefgelaufen? Ich werde herausfinden, was ging falsch nach der Tat, sondern nur schauen, wie einfach es war, dass in PHP zu tun. Also, was können wir eigentlich jetzt das zu tun haben wir diese Ausdruckskraft PHP. Das was-- das war schrecklich. Gut. Also das war, was sollte gegangen. Dies wurde mir die Prüfung an diesem Morgen auf meinem Telefon, tatsächlichen Screenshot von meinem Handy. Aber jetzt betrachten, warum lassen wir tatsächlich Einführung all dieses Zeug in den ersten Platz. Also das Ziel ist nicht, schreiben Sie diese Programme, werden in der Befehlszeile geschrieben, nicht wahr? So schrieb ich eine einfache hallo Programm schrieb ich ein kleines Programm, conditionals tut, und verwendet eine Leseleitung und so weiter. Und in der Theorie, ich schrieb ein Programm, das ausgesandt 800 SMS-Nachrichten, geben oder nehmen 800. Und das Programm war alles noch laufen in der Befehlszeile. Und das ist natürlich nicht die Bahn, oder? Das Ziel ist nun, zu verwenden zu beginnen was ich behaupten, ist ein einfacher zu bedienen Sprache, wage zu behaupten, eine mächtige Sprache in Bezug auf der Features, kommen mit ihm zu starten Schreiben von Code, der Web-Seiten generiert. Also letztes Mal und in der vergangenen Woche, sprachen wir über HTTP und HTML. Und was ist schön zu HTML ist, dass es nur reiner Text. Und Text ist sicher etwas, dass Sie zu drucken, indem sie buchstäblich den Aufruf der Druck f-Funktion oder die Druckfunktion. Und in der Tat, das ist, was PHP ist jetzt gehen, damit wir zu tun. So unter den Beispielen, die wir haben in der heutigen Quellcode, zusätzlich zu einigen der Code daß ich da oben vor einem Augenblick, Wir haben Programme wie dieses zum Beispiel. Froshims oder Freshman Universitätssportarten, war eigentlich eine der ersten extracurriculars Ich habe mich mit der vor Jahren beteiligt. Und mein Mitbewohner und ich, mit einige andere Kinder auf dem Campus, verwendet, um die froshims Programm auszuführen. Ich bekomme jetzt meine SMS-Nachrichten. Jetzt, so dass wir, wieder in den Tag, so dass diese 1996 war oder so gab es eine Internet, aber es war kein process-- es keine Website für froshims. Und so, wenn Sie, um sich für wollte Fußball oder Volleyball spielen oder was auch immer, Sie füllen würde dieses Ding genannt ein Stück Papier, und Sie würden in Harvard zu gehen Hof, und Sie können es gleiten würde in den Briefschlitz des Proctor, der war in Wigglesworth, einem der Schlafsäle. Und das waren Sie registrierte. Und er oder sie dann wäre komponieren eine E-Mail an Sie Hand, ähnlich wie ich habe gerade hier mit Maya, und dann würden Sie bestätigt werden als, gewesen registriert. Das war also wie niedrige hängenden Früchte, so zu sprechen. Es war ziemlich blöd, wir waren mit Papier für diese. Ich wollte, dass wir zu können um nur auf einer Seite zu gehen, oder müssen die Studenten im ersten Jahr gehen auf eine Website, registrieren Sie sich für den Sport, und einfach zu automatisieren eine Menge von diesem Zeug indem sie ihre Namen und E-Mails usw. in eine Datenbank. Und in der Tat ist die erste Version der Website, mit Super hässlich HTML, könnte etwa so ausgesehen haben. Es war eigentlich ironischerweise mehr peinliche Suche als dieser zurück dann. Aber ich habe eine Programmiersprache. Nicht PHP, sondern nannte Perl, Das ist eine ältere Sprache, aber im Geiste sehr ähnlich. Und ich komplett lehrte es mich. Und es dauerte eine Weile, um es herauszufinden, viele Fragen von Freunden. Aber die Ideen gibt waren genau die gleichen. Denn das, was PHP war wirklich entworfen für die ist nicht die Befehlszeile Zeug wir gerade spielte mit, sondern für Web-Programmierung. Es ist wirklich in seiner Funktion gebunden , um die Bahn folgt eingestellt. Dies ist froshims. Und wenn ich wollte, registrieren Sie sich in dieser Form, das ist ziemlich hässlich, gewiß, aber lassen Sie mich gehen Sie vor und seien Sie ein weniger bequem Studenten, und was auch immer Sport für Matthews, klicken Sie auf Registrieren. Was ich will, um in der Lage zu tun ist, werden Vorlage von Informationen aus einem Formular, nicht auf die Google-Server wie wir haben das letzte Mal, komplett betrügen, indem sie ihre Back-End, I möchte meine eigenen Backend-Code zu implementieren. Was bedeutet, Schreib PHP Code, der eine URL lebt dass die Formulardaten können vorgelegt werden. Und dann Ihren Code, in PHP auf einem Server geschrieben, kann dann auf die Benutzereingaben reagieren. Wie sein Name oder Komfortniveau, oder einem Wohnheim, und dann tun Sie etwas mit ihm. In diesem Fall, ich habe gerade dummer druckte es aus als Text, das ist nicht alles, was hübsch. Aber man konnte sicher vorstellen, wenn Sie HTML-Kenntnisse, und Sie werden bald wissen, wie zu generieren HTML mit Druck f und drucken, und ähnlichen Funktionen, können Sie sicher erzeugen ein hübscher Web-Seite, die sagt: hey David, Sie sind jetzt angemeldet. Sie sind ein weniger komfortabel Student aus Matthews, nicht wahr? Sie können nur mit einem ganzen Bündel von% ses, oder die geschweiften Klammern und Dollar-Zeichen Notation habe ich vor einem Augenblick, um erzeugen Text, der benutzerfreundlicher ist als das. Werfen wir also einen Blick auf diese eine Datei. Froshim Nullpunkt PHP sieht wie folgt aus. Als ich neu zu laden CS50 IDE, froshim Null sieht wie folgt aus. Dies ist froshim Nullpunkt PHP. Und was halten Sie von dieser Datei auf? ZIELGRUPPE: [unverständlich] Sprecher 1: Sorry, etwas lauter? ZIELGRUPPE: [unverständlich] Es ist alles in HTML. Und in der Tat ist es, weil Was ist interessant über PHP ist, dass es konstruiert wurde zu sein, für eine bessere oder zum Schlechten, vermischt mit HTML-Code. Und in der Tat, auch wenn dies Datei froshim Nullpunkt PHP, hat eine PHP Kommentar am Anfang von ihm, es ist alles nur HTML. Aber im Gegensatz dazu, wenn ich öffnen, lassen Sie uns sagen wir, registrieren Nullpunkt PHP, die nur hat einen großen Kommentar am Anfang. Das sieht auch fast vollständig wie HTML, mit der Ausnahme, für was? Linie, was, 21 sieht ein wenig seltsam. Aber bemerken Ich Eingabe PHP Modus mit offener Halterung Fragezeichen PHP. Dann habe ich ein paar Sachen habe. Und dann am Ende dieser Leitung Ich habe fast, Fragezeichen PHP. Und das ist das, was ich durch meine vermischten. Sie können HTML zu schreiben, die Sie gerade möchte der Server auszuspucken. Aber wenn Sie etwas tun wollen Dynamik teilweise durch die Seite, wie setzen Sie meinen Namen oder Wohnheim oder Komfortniveau, Ich kann eine Funktion zu verwenden wie Print R, das ist drucken rekursive, das bedeutet nur, Drucken Sie diese Variable, formatieren wie auch immer du willst. Es ist wirklich nicht für menschliche Zwecke, es ist einfach zum Debuggen oder diagnostische Zwecke. Also das ist, wie ich das getan habe. Wenn ich statt zu gehen froshims zwei dot PHP, feststellen, dass die Wirkung dieser Form wird nicht als das eingetragene Nullpunkt PHP old-- die vorherige tatsächlich war. Aber es ist registriert zwei dot PHP. Also schauen wir uns an, wie diese eine verhält sich ein wenig anders. Wenn ich in die Version zwei. Wenn Sie hier, wenn ich mich registrieren, wie David, weniger komfortabel, aus einem Wohnheim des Mathews, Neu registrieren. Also dieser Zeit gesagt, Sie sind eingetragene, nicht wirklich. Mal sehen, was ich hier habe. Wenn ich mir Register zwei dot PHP hat diese etwas mehr PHP-Code. Es ist ein wenig sauberer, auch wenn es noch wickelt ein wenig lang auf dieser Linie. Beachten Sie hier. Drucke ich meine HTML-Tag, mein Kopf-Tag, meine Titel-Tag, der Kopf, der Körper. Und dann fange ich an zu sagen, Dinge wie PHP-Modus geben. Und so, dass Tag, offene Bügel PHP-- Fragezeichen PHP sagt: hey, Server, execute-- interpretieren die folgende Sachen wie PHP bis Sie das Ende-Tag. Und auch wenn Sie vielleicht nicht wissen, jeder andere PHP, als Sie bisher gesehen haben, Sie Art von lesen es ist ziemlich intuitiv. Wenn der Name leer ist oder Komfort leer ist, oder einem Wohnheim ist leer, was soll ich tun? Was brauche ich, um den Benutzer zu sagen? Sie müssen Ihren Namen, Komfort und Schlafsaal, und so weiter. Else, ich sage du bist registriert, auch nicht wirklich. Und das sage ich nicht wirklich weil es keine Datenbank. Ich bin nichts mit den Daten zu tun. Ich bin einfach nur wegzuwerfen zu Demonstrationszwecken. Jetzt bin Art von skimped über die Leitung 22. Es gibt mehrere Syntax da, aber Dollarzeichen streichen Beitrag ist irgendwie interessant. Und das ist, was ist schön zu PHP. In PHP, haben Sie, was genannt werden ein paar Super globalen Variablen. Sie sind Art von noch mehr wichtiger als globale Variablen. Und diese, alle aktivierten als solche werden mit PHP. Also, wenn Sie einen Server haben, das hat eine Web-Server installiert, wie Apache, und Sie haben die Sprache zu installieren Unterstützung für PHP, ganz plötzlich sie beginnen mit diesen Super- globale Variablen in Ihrem Code. Und was ist schön zu PHP ist, dass, wenn Sie nur Schreiben einer Datei, die in Punkt endet PHP, legte es auf einem Web-Server, und dann können Sie eine Form zu unterbreiten über diese Klage-Tag und einer Form-Tag, dass Maßnahmen Attribut in der Form-Tag, PHP und das Web komplett herausfindet, wie zu greifen alle diese Schlüsselwertepaare aus der URL wie Frage Zeichen q gleich Katzen, es herauszufinden, wie man q und Katzen. Wenn Sie ein Foto einreichen, oder einen Benutzernamen, oder ein Passwort, um wie Facebook, PHP wird herausfinden, für Sie wobei all diese Daten ist. Und es wird nur die Hand Sie ein assoziatives Array genannt Dollarzeichen Unterstrich Post, oder Dollar-Zeichen zu unterstreichen zu bekommen, je nachdem, ob Sie mit GET oder POST Einreichungen. Und es wird nur die Hand Sie ein super globale Variable, so dass, wenn Sie auf den Namen bekommen dass der Benutzer über die Web eingereicht Form, die Sie buchstäblich nur sagen, den Namen der Super globale Variable, zitat, unquote, Namen. Und Zitat, unquote Komfort, und Zitat, unquote Wohnheim. Und wir werden in der Lage sein zu tun Dies und noch viel mehr mit PHP. Und obwohl dies ein Wirbelwind Blick darauf, wir tauchen viel mehr nächste Woche. Wir werden eine Datenbank einzuführen so dass Sie wirklich sind geht die Umsetzung zu starten Ihre eigene E-Handel based-- wie eine Website in der nur eine Woche Zeit. Also werden wir Sie das nächste Mal zu sehen, und hoffen, dass Sie die Textnachrichten einsehen. Tschüs. [Musikwiedergabe] [DOOR OPENING] Sprecher 2: Hey. SPEAKER 3: Was ist los? Sprecher 2: Was machst du? SPEAKER 3: Arbeiten an einem Problem Set. Sprecher 2: Nice. High Five. [HIGH FIVE] Was sind-- äh, was machst du denn hier? SPEAKER 3: Just hanging out. Wir kommen gerade aus dem Fitness-Studio zurück. Ich konnte nicht umhin, bemerken, wenn wir Hoch fived, dass Sie ziemlich raue Hände. Gehst du ins Fitnessstudio? Sprecher 2: No. Nein. SPEAKER 3: Dude, du siehst ziemlich groß. Welches ist schlecht, weil jeder weiß, 8-Ball ist der große Mann auf dem Campus. High Five. Sprecher 2: Äh, nein. Nein, ich glaube, ich bin gut. Ich glaube, ich bin gut.