[Jouer de la musique] ENCEINTE 1: Ceci est CS50 et ceci est la fin de la septième semaine. Aujourd'hui est peut-être où nous vraiment vous enseigner les langues. Nous avons introduit dans les deux dernières semaines HTML et CSS, qui ne sont les langages de programmation. Et en effet, même si nous ne l'avons pas regarder presque tous les balises que le HTML est livré avec et presque tous des propriétés CSS est livré avec, que ce genre de pour HTML et CSS. Nous allons juste généralement commencer en supposant que vous comprendre les idées générales de balises et les attributs, et les pages étant envoyés du client au serveur. Parce que nous commençons aujourd'hui à regarder un autre langage de programmation, PHP. Nous allons faire ce super rapide. On ne va pas vous apprendre PHP en soi, tout comme nous ne l'avons pas aspirons à vous enseigner C, en soi, mais plutôt la programmation. Et en effet, l'un des objectifs de ce cours est de ne pas vous apprendre C, ou HTML, ou CSS ou PHP, ou un nombre quelconque d'autres mots à la mode ou des acronymes, mais plutôt l'informatique et comment programmer fondamentalement. Et en effet, aujourd'hui, nous commençons à prendre ces roues de formation hors tout plus loin en volant à travers un appelé langage PHP, comme suit. Voici ce que cette langue ressemble. Il apparaît qu'il n'y a pas besoin de une fonction principale dans un programme écrit dans un langage appelé PHP. Alors que cela semble déjà un peu plus simple que C, avec lesquels nous sommes familiers. Il se trouve que si vous vouloir déclarer une variable, vous le faites presque identique à C. Mais il ya clairement une différence ici quand je déclare une chaîne, ou peut-être deux différences. Qu'est-ce que l'air différent? AUDIENCE: Le signe du dollar. ENCEINTE 1: Oui, il ya dollar signons, que nous avons jamais vu auparavant. Et qu'est-ce qui manque? Ouais? AUDIENCE: [inaudible] ENCEINTE 1: Ouais, il n'y a aucun type de données. Donc, il se trouve que PHP est ce que nous appeler un langage faiblement typé, où C est fortement typé. Faiblement typé signifie simplement que il existe différents types de données, il ya des cordes, et ints, et des flotteurs. Mais les chiffres informatiques cela. Vous le programmeur humaine ne pas avoir à le comprendre. Donc, tout ce que vous avez à faire pour déclarer une variable est signe de dollar, le nom de votre variable, puis, par exemple, entre guillemets, bonjour monde. Eh bien voici ce que un état ressemble en PHP. Des différences? Non. Donc, il se trouve ils sont identiques. Et vous pourriez avoir moins branches ou plusieurs branches, mais les tours de syntaxe exactement la même chose. Expressions booléennes peuvent être commandé en même temps. Expressions booléennes peut être anded ensemble. Vous avez encore des commutateurs. Même si vous ne l'avez pas utilisé ceux-ci, ceux-ci existent dans C et ils sont fonctionnellement équivalent en PHP. Et en fait, ils sont en PHP un peu plus puissant. En C, vous ne pouvez comparer certaine types de données comme ints et chars, alors que dans PHP, vous pouvez réellement comparer chaînes de plein envol sans avoir à vous soucier de pointeurs et autres. Alors, voici une boucle for. Ceci est juste pseudo code, si vous voulez. Mais il est structurellement identique à C. Voici boucle while, un pseudo- therefore-- identique à C. Voici un Do While loop-- identiques. Et donc il est le genre de ce modèle ici lequel il ya quelques autres syntaxique caractéristiques Nous sommes en effet aller voir. En fait, voici une belle manière PHP lequel, si vous voulez parcourir sur un tableau, et vous ne veulent pas sauter à travers la cerceaux mentales et syntaxiques d'avoir int i est égal à 0, i moins que n, i plus plus-- qui est juste beaucoup de syntaxe ennuyeux. Vous pouvez dire un peu plus de manière fluidique à chacun des nombres que le nombre, où dans ce cas numéros de signe de dollar, je suppose, est comme un numéro de tableau appelé. Et puis je suis en supposant que le nombre, singulier, va être une variable. Et ce que PHP va faire pour moi comme je itérer au cours de cette boucle est, à chaque itération, il va mettre à jour le nombre variable le ième élément en nombre, au pluriel. Donc, il gère à peu tout cela pour moi. Pas de crochets, pas signe de dollar, aucun des points-virgules. Il est juste un peu plus simple. Eh bien, si vous voulez un tableau, il se trouve que vous peut faire quelque chose assez similaire à C. La syntaxe est un peu différent. Mais voici un tableau appelé dollar des nombres signés. Et je l'utilise, en PHP, carré crochets, il se trouve. Et nous allons voir ces nouveau dans JavaScript-- encore une autre langue. Je viens d'utiliser la notation crochet d'avoir une liste séparée par des virgules d'entiers, dans ce cas. Mais cela me donne un tableau. Mais encore plus puissant en PHP, nous avons aussi ce sont généralement appelé tableaux associatifs. Et beaucoup de langues avoir ces ainsi. La chose à propos des tableaux C est que les indices pour un tableau, la chose que vous utiliser entre crochets par lequel vous accédez éléments, doit être quoi? AUDIENCE: [inaudible] ENCEINTE 1: Ils doivent être des nombres ou entiers, en particulier à partir de zéro sur place. Eh bien, en PHP, et, il se dehors, dans d'autres langues, vous pouvez commencer à avoir indices qui ne sont pas numérique. Mais ils sont en fait des mots ou phrases, de sorte que, plutôt que essayez de vous rappeler où quelque chose est, ou stockées dans une variable i, vous pouvez réellement utiliser un mot et dire that-- vous pouvez dire un mot de ce genre. Donc signe du dollar est la citation nom d'une variable ici. Cette syntaxe est un peu froussard qui est l'association de deux valeur de clé paires pour cette variable. Concrètement, cela me donne un tableau qui est de longueur 2. Mais les index ne sont pas 0 et 1. Les indices sont entre guillemets symbole et devis prix unquote. Et les valeurs de ces indices, respectivement, est FB pour Facebook et 79,53 $, lors de ma dernière vérifié un prix pour cela. Qu'est-ce que cela veut dire? Eh bien, cela signifie que au lieu d'écrire du code comme ça, où je l'habitude de faire quelque chose comme sign-- dollar ou plutôt, dans C Je voudrais même pas un signe de dollar. Je voudrais faire quelque chose comme citations et puis Je ferais support i à obtenir à un certain arbitrairement indexé numériquement valeur. A partir d'aujourd'hui en PHP, si vous vouloir obtenir à une certaine valeur, nous sorte de avons plus expressivité sémantique. Juste une façon élégante de dire que nous pouvons il suffit d'appeler les choses ce qu'elles sont. Et si vous voulez obtenir au symbole de quelque chose, maintenant vous faites littéralement citer symbole unquote entre crochets au lieu d'un simple numéro. Donc, il est bien pratique. Et cela est une sorte de tout pour l'instant. Il ya des bouquets de d'autres fonctionnalités en PHP. Et en effet, PHP est livré avec l'évier de cuisine proverbiale. Des dizaines, des centaines de fonctions viennent avec PHP-- donc beaucoup plus que venu avec C. Et cela ne vise pas à submerger mais plutôt aider vous vous rendez compte que nous ne avoir plus de temps à écrire du code qui est en quelque sorte ici conceptuellement. Maintenant, nous ne pouvons tout simplement commencer à prendre avantage de beaucoup de fonctions plus avancées que les langues telles que PHP ont. Donc, nous ne devons pas nous inquiéter à propos déplacer des choses dans la mémoire. Nous ne devons pas nous inquiéter à propos de malloc et tous ces éléments niveau inférieur, détails puissants que vous luttez avec, si pas lutter avec, pset5, mais vous pouvez commencer à bientôt prendre pour acquis. En fait, nous allons rédiger un super- programme simple en PHP, comme suit. Je vais aller la tête dans CS50 IDE ici, et ce que je vais faire est de créer un nouveau fichier, ce très simplement va être appelé bonjour dot PHP. Donc au lieu de point c, il est va être appelé dot PHP. Et puis, dans ce fichier, Je peux commencer à taper. Mais il se trouve que la une chose que je dois savoir est que tout fichier PHP en général, a besoin de commencer avec une syntaxe particulière. Esprit similaire à HTML, mais encore une fois, PHP est un langage de programmation, non un langage de balisage. Ainsi, chaque fichier, et il est en quelque sorte la recherche de stupide, je l'admets. Ouvrir le support, d'interrogation, PHP. Et cela est juste la la façon de dire de la langue, hey, ordinateur voici un peu de code écrite dans un langage appelé PHP. Et puis à la fin de votre fichier, vous sorte de sorte de le contraire. Vous ne pas écrire à nouveau PHP, vous venez faire d'interrogation, équerre. Et puis tout ce que vous mettez à l'intérieur de ces deux balises, pour ainsi dire, sera, ou devrait être, du code PHP. Alors, faisons quelque chose de super simple. Je vais aller de l'avant et de faire impression def, Bonjour tout le monde, barre oblique inverse n, sauver. Et maintenant, mon invite, je vais fais, fais hello-- non, je vais faire, dot slash bonjour. Non, slash dot, hm. Donc, quelque chose est différent. Et en effet, ceci est une différence essentielle entre PHP et langues comme C C est ce qu'on appelle un langage compilé. Qu'est-ce que cela signifie pour C à être compilé? Quelle a été l'implication? Ouais. AUDIENCE: il a écrit en code machine de sorte qu'il peut être exécuté par l'ordinateur. ENCEINTE 1: Exactement. Nous devons d'abord convertir en soi-disant code machine, zéros et de uns, avant qu'il sera effectivement exécutable et compris par l'ordinateur. Par Intel à l'intérieur. Par la CPU à l'intérieur de l'ordinateur. PHP, en revanche, est ce qu'on appelle un langage interprété, qui signifie que vous ne compilez en zéros et de uns, code machine, vous quittez la place comme le code source. Et vous passez à la place comme entrée pour un programme, un interprète quelqu'un d'autre a écrit que Il ya des années que le comprend ligne par ligne, caractère pour caractère. En d'autres termes, il écrit sur les humains un programme qui se penchera à votre code ligne par ligne, et de comprendre ce l'ordinateur doit faire, sans conversion directement à zéros et de uns. Donc, si il voit une boucle, cette soi-disant interprète va être comme, tout droit, je devrais faire quelque chose encore et encore et encore. Que dois-je faire? Permettez-moi de regarder la ligne suivante. Permettez-moi de regarder la ligne suivante. Et il interprète véritablement ligne par ligne. Donc, pour l'exécuter, je ne l'utilise maquillage. Je ne l'utilise dot slash dans ce cas. Je fais la place PHP, qui est le nom d'un programme, alias Un interprète, qui est pré-installé dans CS50 IDE, et maintenant je dois passer un commande argument de ligne, qui est tout simplement le nom du fichier qui je veux interpréter. Ou de façon plus décontractée, que je veux courir. Et si je appuyez sur Entrée, il nous l'avons. Bonjour le monde. Maintenant, il se trouve que je d'impression usagées def délibérément pour nous combler de C à PHP. La plupart des programmeurs PHP, comme vous le verrez, ne même pas la peine d'impression utilisant def. Ils utilisent simplement une fonction appelée impression, ce qui n'a pas eu C. Et si je ReRun maintenant, il fait se comporte fonctionnellement les mêmes. Je ne peux pas utiliser le pour cent s et i pour cent et ainsi de suite, mais il ya d'autres façons en PHP de le faire. Mais cela ne doit dire que syntaxiquement, autre que des choses étranges en hausse dessus, et quelques personnages étranges bas en bas, les concepts de l'entreprise la programmation dans cette autre langue vont être exactement la même. En fait, nous allons faire un autre exemple. Donc, je vais aller de l'avant et clore ce dossier. Permettez-moi de créer un autre qui Je vais appeler 1 point conditions PHP. Donc pas de zéro, parce que ce que je faisais étais-je regardé en arrière il ya quelques semaines, nous avions un fichier appelé conditions 1 point C. Et ce Je ne suis converti dans mon tête, et ici sur le papier, et bientôt sur le cours de site web, ligne par ligne en PHP. Ainsi, dans la version C, nous avons fait quelque chose comme chaîne s obtient obtenir chaîne. Donc, il est un peu différent de le faire en PHP. Au lieu de cela, je vais juste à faire, ou plutôt, je aurait fait int n obtient obtenir int, en l'exemple précédent. Ainsi, au lieu de cela, je vais faire n Récupère la ligne lire, je voudrais un nombre entier, S'il vous plaît. Donc, cela est juste mon invite. Et il se trouve, et Je voudrais seulement savoir ce d'avoir lu ou vu la fonction avant, lire les lignes de la fonction en PHP prend un argument qui est une invite pour l'homme, et son but dans la vie est de lire une ligne de texte qu'il ou elle en types. Et puis il stocke que texte dans la variable n. Et maintenant, je pourrais avoir besoin de faire quelque chose comme je le faisais il ya quelques semaines, en semaine comme une de la classe. Si n est supérieur à zéro, alors, je vais à emprunter cette syntaxe nous venons de voir, Imprimer def, vous avez choisi un nombre positif, n barre oblique inverse. Sinon, si n est égal à égal à zéro, je suis aller de l'avant et de dire, imprimer def, vous avez choisi de zéro barre oblique inverse n. Sinon, le cas ici devrait bien sûr, l'impression def, vous avez choisi un nombre négatif. Et nous pouvons certainement mettre en œuvre la logique de cette chose dans un tas de différents façons, mais le point ici qui est syntaxiquement, peine tout est nouveau. Il est juste le signe de dollar et une nouvelle fonction et ligne de lecture. Mais fondamentalement, ce qui est nouveau est maintenant je interpréter cela. Je suis de passage comme entrée à un autre programme. Donc, si je veux courir cela, si Je ne fais pas d'erreurs, Je vais exécuter PHP, de 1 point conditions PHP, entrer, Je vais taper le numéro 50, et supposons que pour l'instant cela fonctionne. Parce que la logique est la même étoffe que la première semaine. Très bien, alors qui est assez décevante, non? Nous pourrions le faire en tout nombre de langues. Faisons quelque chose de manière plus puissante. Le problème d'arrivée de laisser reposer cinq. Donc, je vais aller de l'avant et de le faire. Je vais créer un fichier appelé dictionnaire dot PHP, et inclinée que vous seriez peut-être pour brouiller bas beaucoup de notes, les notes seront seulement aider vous si vous êtes autorisé de mettre en œuvre les problèmes mis cinq en PHP. Mais nous allons voir comment rapidement maintenant nous peut mettre en œuvre ce même jeu de problème. Donc dans le dictionnaire dot PHP, je vais à supposer qu'il existe déjà un fichier dans le monde appelé Speller. Et en effet, je l'ai fait à l'avance, et nous ne serons pas marcher à travers cette ligne par ligne, mais si vous êtes curieux veulent plus tard et vraiment pour envelopper votre esprit autour de la différences entre C et PHP, comparer littéralement ce fichier, Speller, à partir du code source d'aujourd'hui que nous posterons plus tard aujourd'hui, contre p ensemble cinq Speller point c que nous vous donnons, et il est presque la même ligne par ligne. Il ya quelques signes plus en dollars. A couple fonctionne sont un peu différent. Mais il est une belle façon de sorte de voir comment vous traduisez une langue à l'autre. Et il est en ligne presque identique pour la ligne. Mais je vais supposer que ce existe, et ce que je vais faire ici est d'essayer de faire sauter votre l'esprit par réimplémentant l'intégralité du problème posé cinq manière plus rapide que vous avez fait jusqu'à présent. Ainsi, par exemple, je vais d'abord déclarer une variable globale appelée taille, et mettez-le égal à zéro. Maintenant que ya pas beaucoup d'économies. Les chances sont que vous mis en œuvre taille à peu près la même, ou hint hint, sera ce soir ou demain, simplement en utilisant une variable globale appelée la taille et le mettre égal à zéro. Cela ne veut pas un particulier spoiler incroyable. Donc, quelles étaient vos structures de données de choix, ceux d'entre vous qui ont plongé et lire la spec, quelles structures de données ont plupart d'entre vous ont eu recours? Une table de hachage ou d'essayer, peut-être quelques variantes. Donc, la mise en œuvre d'une table de hachage au moins, est une sorte de beaucoup de lignes de code, droit? Et pas tous d'entre eux pourraient être fonctionnelle à ce point dans la semaine, mais cela est très bien. Parce que dans PHP, si je voulez une table de hachage, fait. Droit? Donc, cette variable que je l'ai vient de déclarer est évidemment appelé dollar signe table, par l'introduction avant. Mais je veux vraiment juste, au la fin de la journée, d'un tableau. Mais pas un index numérique tableau, parce que ce que deux semaines choses, lorsque nous avons parlé des tableaux. Je veux une table de hachage. Mais une table de hachage est vraiment juste une façon concrète de dire, vous voulez un tableau associatif. Vous voulez être en mesure de clés associés avec des valeurs. Clés avec des valeurs. Qu'est-ce qu'un dictionnaire, vraiment? Eh bien, il ya tout un tas de touches. Des mots comme la pomme, la poire, la banane et, et tous ces mots anglais que nous vous remettons. Et les valeurs que vous êtes effectivement insérer dans votre dictionnaire sont soit vrai, ou l'absence, de faux. En d'autres termes vous insérez tout un tas de paires clé-valeur, pomme, vrai, la poire, la vraie, la banane, le vrai. De sorte que lorsque vous récupérez ou regardez jusqu'à ce que les données dans votre table de hachage avec votre fonction de contrôle, vous êtes soit revenir une réponse, Oui, je l'ai trouvé dans mon complexe la table de hachage, ou pas, il n'y est pas, si vous revenez faux. Donc, pour ce faire, tout ce que je besoin est les données structure comme je proposé avant. Je dois juste être en mesure à associer des mots comme, entre guillemets, symbole, avec une valeur comme, vrai. Donc, il ya ma table de hachage. Disons utiliser effectivement. Donc, il ya quelques fonctions Je dois mettre en application. Je vais aller de l'avant et de mordre hors une taille de fonction appelée. Il ne prend aucun argument. Je ne dois pas embêter avec le mot, nulle en PHP. Je vais simplement revenir taille. Et en passant, PHP a ce détail minorly ennuyeux, où si quelque chose est mondiale, vous devez dire la fonction dans laquelle vous utilisez il, hé, ceci est une variable globale. Donc, la bêtise mineur, mais vous avoir à le faire quand même. Alors que sur la charge? Je vais mettre en œuvre une charge de fonction appelée qui prend au nom de dictionnaire, tout comme dans problème posé cinq. Et avant que je procède, remarquerez que je ne ai pas tapant été tout à fait les mêmes choses. Ce qui est évidemment différente en PHP propos comment vous déclarez une fonction par rapport à C? Ouais. AUDIENCE: [inaudible] ENCEINTE 1: Aucun type de retour. Et en effet, que ce soit le cas, PHP dans la mesure où il est faiblement typé, est aussi un peu bâclé dans ce sens. Vous ne spécifiez pas que le programmeur ce que cette fonction retourne. Vous auriez à effectivement regarder le code pour comprendre cela. Ou lire les commentaires ou la documentation. Donc avantages et les inconvénients de ces types de décisions. Mais je dois dire le mot-clé, la fonction. Et quand nous apprenons JavaScript dans quelques semaines nous allons voir la même chose à nouveau, mais il est la même idée. Le nom de la fonction, son argument ou arguments ou leur absence, et l'entreprise ici est la mise en œuvre. Donc, je vais couper quelques coins tout d'être dramatique pour un instant. Mais je vais aller de l'avant et de dire cela. Voilà comment je peux charger un fichier dans un tableau. Il ya une fonction en PHP appelé fichier. Vous lui donnez le nom d'un fichier. Il vous remet un tableau arrière, à l'intérieur qui est chaque ligne du fichier. De zéro, un, sur place à n moins 1 lignes. Ça y est, non? Il n'y a pas f lecture. Il n'y a pas F s. Il n'y a pas de pour cent. Il n'y a pas de maux de tête. Il n'y a pas feof. Tous ces trucs avec lesquels vous avez peut-être été aux prises, avec p fixé quatre et cinq, disparaît. Donc, je viens de lire ces lignes dans le fichier, et puis vous savez quoi? Si je veux itérer sur ces mots, Je peux le faire, pour chaque ligne que la ligne. Rappelez-vous que ce était une sorte de intelligent façon de itération sur un tableau, l'indice par index, et à chaque itération d'appel la ligne actuelle, le dollar ligne de signe. Et ici, je vais aller dire table, console, en ligne, devient vrai. En d'autres termes, voilà comment je insérer dans ma table de hachage en PHP. Je dis dollar signe table, qui est mon tableau associatif qui était vide par la ligne de code au-dessus. Je indice alors en elle pas, en utilisant un nombre, mais en utilisant la lettre mot-clé que je me soucie. Peut-être qu'il est pomme ou une poire ou de la banane ou autre, mais spécifiquement Je indexation en elle comme je proposais plus tôt. Je prends le nom de mon tableau associatif, et puis je utiliser entre guillemets dans le crochets avec une chaîne, au lieu d'un nombre réel. Et donc voilà. La fonction de charge est effectuée. Une fois que itération de la boucle, je l'ai mis le tout dans la table de hachage. Maintenant petit avertissement, il ya une quelques choses que je ne dois corriger. Et la version je posterai en ligne aura toutes les nuances, mais il est surtout juste va être un peu contrôle d'erreur et quelques modifications mineures. Mais cela est en effet l'essentiel de celui-ci. Si je veux maintenant mettre en œuvre la fonction appelée vérifier, qui attend un mot comme argument, Comment pourrais-je m'y prendre? Eh bien, je vais simplement dire que, si à l'intérieur de ma table, à l'emplacement mot, si est réglé. Donc, si il est-- en fait, vous savez quoi? Je vais le faire en un peu de pseudo-code. Mais l'idée est la même. Si cela équivaut vrai, retourne vrai. Bien. Else-- vous pouvez sorte de voir où cela est going-- retourner faux. Terminé. Vérification est effectuée. Pretty nice, non? Et alors est-ce vraiment en venir? Et cela aussi, je coupe quelques coins. Regardez la version en ligne pour toutes les nuances légères. Mais voilà l'essentiel. Indice dans votre tableau associatif, alias Table de hachage, voir si il ya une valeur là, si elle est définie sur true, et si oui, return true. Nous avons donc amenuisé la totalité de la complexité. Alors sorte de l'esprit souffle, non? Je ne vais pas finir avec ce déchargement, parce que dans fact-- oh, vous savez quoi? Ouais, finissons avec déchargement. Décharger dans une table de hachage pourrait ressembler comme la fonction déchargement, revenir. OK alors que ce déchargement. Parce qu'il n'y a rien pour décharger, non? Il n'y a pas malloc. Je ne demandais pas explicitement le système d'exploitation pour rien. Je viens de commencer l'utilisation de variables. Et cela aussi est une manifestation de caractéristiques des langages de plus haut niveau. Encore une fois, la plupart de ce terme nous avons affaire ici avec C. niveau super bas. Vous pouvez voir la mémoire de l'ordinateur. Vous pouvez toucher tout ce que vous voudrez dans la RAM de votre ordinateur, pour le meilleur ou pour le pire. Jusqu'à ici, nous allons à renoncer à ce pouvoir. Mais mon dieu, regardez comment beaucoup moins de code je l'ai écrit. En fait si je ne parle pas et de parler sur ma frappe, nous aurions été fait avec cet exemple il ya cinq minutes. Alors quel est le prix à payer? Eh bien, nous allons jeter un coup d'oeil. Nous allons jeter un coup d'oeil. Je vais aller de l'avant et exécuter CS50. Permettez-moi d'aller d'abord en Les exemples d'aujourd'hui où Je dois le répertoire des textes comme avant. Je vais courir la solution qui il est livré avec problème posé cinq appelé Speller, qui est dans le compte du CS50. Et je vais courir sur quelque chose grande comme la Bible King James, juste pour que nous avons vraiment mis le des solutions de personnel à l'épreuve. Or parfois Internet est un peu plus lent, un peu plus vite, pourrait prendre un certain temps pour faire défiler. Mais il a fallu un total de .56 secondes de vérifier l'orthographe de la King James Bible en utilisant la solution du personnel. Donc assez bonne. Les vôtres peuvent être beaucoup plus lent, et voilà tout à fait bien. Mais il est exact ici. Voilà donc la solution du personnel. Si je vais dans et nettoyer la version de PHP. Et je vais faire un peu de comme la cuisson spectacle chose. Nous allons prendre le code je l'ai écrit plus tôt, il est donc tout à fait correct. Parce que le code écrit, je ne va pas pour être parfaitement correcte en ce moment. Mais si je lance la version de PHP, que dois-je renoncer à aujourd'hui? Il m'a fallu cinq minutes pour mettre en œuvre p mis cinq ans, je prétends. Quel prix suis-je payé? Ouais. AUDIENCE: Vitesse. ENCEINTE 1: Speed. Que voulez-vous dire? Public: Ça va prendre plus de temps. ENCEINTE 1: Très bien. Voyons. Ça va prendre plus de temps, de ne pas écrire, mais pour l'exécuter. Ouais. Essayons donc de cela. Donc ici, je vais aller de l'avant et à faire PHP Speller, et parce que le fichier de appelé Speller. Donc, je ne vais pas courir le dictionnaire, rappel, Je l'exécution du programme appelé Speller. Je vais passer de la même fichier, King James de la cinquième. Il vole par. Ce pourrait être simplement la vitesse d'Internet, alors ne lisez pas trop dans cela. Mais il ne se sent plus sûr. 1,26 secondes. Voilà qui est encore assez sacrément rapide, non? Et la seule raison qui ressemblait plus comme trois, ou quatre, ou cinq secondes, qui est juste parce que Internet a été étant lente. Le temps d'ordinateur passé était de 1,26 secondes, contre je pense que 0,56. Donc, plus de deux fois plus lent. Voilà qui est encore sacrément rapide, mais il est une manifestation de, en effet, que le prix exact. Parce que nous sommes l'interprétation dans le code ligne par ligne, et que ce programme PHP est en train de lire mon Code de haut en bas, de gauche à droite, il a à faire plus de réflexion. Il doit genre de convertir à l'intérieur de lui-même correspondant à la machine Code à la volée, pour ainsi dire, même si la mécanique sont un peu différentes. Au lieu de simplement l'alimentation de la CPU Intel les zéros et de uns premières qu'il comprend nativement. Donc, absolument, haut la main, nous avons payé un prix. Et le code écrit dans une langue comme PHP a tendance à être plus lent. Mais mon dieu. Alors maintenant, quand je vérifier l'orthographe de mon fichier, je passe un supplément de 0,7 ou alors secondes contre 20 heures pour mettre en œuvre un vérificateur rapide sort, non? Il est une sorte de compromis. Et si vous êtes débutant p mettre cinq, peut-être pas 20 heures. Pourrait être beaucoup moins que cela. Mais il est un compromis, pour de vrai. Et si vous êtes à l'exécution de code sur les très gros des ensembles de données, ou sur du matériel encore plus ancienne, ces types de différences peut certainement ajouter. Vous avez des questions à ce jour? Ouais. AUDIENCE: [inaudible] ENCEINTE 1: Désolé, peut vous dites une fois de plus? AUDIENCE: [inaudible] ENCEINTE 1: vous donnez le temps. Eh bien, alors oui. Vous économisez du temps en ne pas avoir à compiler, si cela est ce que vous demandez. Et en effet, dans CS50, la plupart des programmes, même si elles pourraient prendre un certain temps à écrire, ils sont relativement courte. Quelques dizaines, quelques centaines de lignes de code, et donc ils compilent assez rapidement. Mais quand vous commencez écrire des programmes plus gros, comme si vous êtes Microsoft ou que vous soyez Google et l'écriture de gros programmes en C, ou C ++, ou similaire compilé langues, pourraient prendre plusieurs secondes, ou même quelques minutes ou plus pour compiler des millions de lignes de code. Et là aussi, que différence va ajouter jusqu'à. Et en fait, une fois que nous transition aujourd'hui, même jour aujourd'hui, pour la programmation web en utilisant PHP, vous êtes allez trouver ce juste tellement plus agréable d'écrire du code lorsque vous ne disposez pas de faire ces stupides des mesures comme le changement à votre terminal fenêtre, tapez make bonjour, re exécuter, rechargez la fenêtre. Juste tellement stupide mesures mécaniques juste obtenir dans la façon de faire l'intéressant, le travail amusant. Et en effet, nous jetons que loin avec PHP. Et nous pouvons interagir avec plus rapidement. Ouais. AUDIENCE: [inaudible] ENCEINTE 1: Bien sûr. Puis-je préciser ce qu'il signifie être interprété? Lorsque vous compilez une langue comme le C, il descend comme nous le disions à la machine code, zéros et de uns. Et Intel a décidé il ya des années que certains modes de zéros et de uns représenter plus, ou la soustraction, ou imprimer, ou d'autres opérations de base. Dans le monde d'un langage interprété comme PHP ou JavaScript ou Python, ou rubis, ou des grappes de les autres, à la place quelqu'un a écrit un interpreter-- dans ce cas, il est aussi appelé PHP, identique à la le nom de la substance qui language-- a une grande boucle en elle qui itère sur l'ensemble des lignes du code que je nourris comme entrée, comme bonjour dot PHP, ou un dictionnaire dot PHP. Et puis vous pouvez penser de leur grande boucle comme ayant un grand nombre de conditions. Et ces conditions disent, si le humaine a écrit le mot-clé pour, commencer à faire son Code encore et encore. Ou si l'humain a écrit la ligne de code, si seulement exécuter leur prochaine ligne conditionnellement. Donc, il est vraiment comme l'interprétation dans un sens humain, ligne par ligne, et qui prend juste du temps. Il faut au-dessus. Et donc ce est un price-- bonne question-- nous payons. Alors, faisons une autre démo qui est un peu plus dramatique. Il est, je dirais, un stade de baseball à cette une probabilité de ne pas horriblement de 90%, mais vous serez surpris avec 10% de probabilité. Ainsi, chaque année, nous essayons pour ce faire, par lequel nous essayer d'écrire un programme qui passe par problème réglé à zéro, pour lequel vous avez soumis vos numéros de téléphone et un beaucoup d'autres informations démographiques, et on programme vous envoyer un message texte. Et puis tout le monde de téléphone émet des bips ou vibre, et il est tout simplement incroyable, parce Eh bien, regardez ce que les ordinateurs peuvent faire. Cela fonctionne rarement correctement il semble, en grande partie parce que je reçois généralement sur la liste noire par Gmail ou un autre service pour effectivement essayer de le faire à l'échelle. Mais chose drôle est aussi, puisque nous ne pas avoir tout le monde ici aujourd'hui, fait amusant de la dernière de nous de temps essayé il ya deux ans, Je pense que je l'ai écrit un programme qui était assis dans une itération de la boucle sur tous les élèves de la classe, et chacun d'eux un message de texte, et il a dit quelque chose comme: pourquoi n'êtes-vous pas en lecture? Amour, CS50 bot. Vous avez aucune idée de combien de apologétique et e-mails sorte de douloureuses Je l'ai reçu en réponse à partir de la n moins 100 personnes qui ne sont pas ici Ce jour là. Et encore plus drôle story--, plus honteux vous le savez, nous allons le mettre là-bas. Il est déjà sur la vidéo il ya quelques années. Donc, vous me verrez bientôt écrire une boucle for, lequel il est très facile d'écrire un bug dans ce de boucle, de telle sorte que la première fois, dans la boucle, vous envoyer un message texte. Le deuxième passage dans la boucle I aurait envoyé un autre message texte, et puis un texte plus message, et un de plus. Mais il se trouve si vous faites une faute de frappe lors de la programmation, parfois vous peut écrire des programmes qui envoient un message texte, puis deux messages texte, puis trois messages texte à tous qui a déjà reçu un message texte. Et comme vous le savez, de faire quelque chose, plus quelque chose, plus quelque chose, plus quelque chose, est grand O d'un lot de messages textuels, ou n au carré, ou à 0,10 $ un message texte, 20 000 $. Heureusement je frappe Control-C avant cette est arrivé, mais je ne dois au moins un de vos prédécesseurs $ 20 pour le 200 des messages texte bizarres qui, non seulement allé à son téléphone, mais aussi il était comme un rabat du téléphone plus ancien il aime poussé hors de son mémoire tout autre texte personnelle message qu'il avait effectivement obtenu. Donc, nous avons un objectif aujourd'hui, ne pas le faire. Peut-être activer le mode avion. Bien. Allons donc dans un programme ici callled-- que je vais appeler texte dot PHP. Et à l'avance, je dois deux fichiers ici. Je fis un fichier pour tout le personnel, qui a obtenu toutes les infos sur la personnel, tous les noms le site Web de la formation. Et puis, pour l'instant je viens de mettre certains faux numéros 555-1212. Donc, elles ne seraient pas effectivement aller nulle part. Mais remarquez l'intérieur de ce fichier CSV, dont nous avons parlé brièvement avant dans le contexte de fichier IO. Qu'est-ce qu'un fichier CSV? Comma variables séparées. Et cela est un peu comme une très base de données légère, si vous voulez. Il est le genre de type de quatre colonnes dans ce dossier, et il y en dents de scie, mais les virgules essentiellement représenter les colonnes du fichier. La première colonne est le TF ou le nom de CA. La deuxième colonne est leur nom de famille. Troisième colonne est leur numéro de téléphone. Et quatrième colonne est-- apparemment quatrième colonne est apparemment quoi? OK, il est donc leur transporteur. Donc, Verizon, Sprint ou, ou ce pas. Et si je me suis mal exprimé plus tôt, CSV. Comma Separated Values ​​est CSV ici. Alors qu'est-ce que je peux faire avec ça? Eh bien cela est juste un gros fichier texte, et il est une sorte de longue, non? Comme cela va être assez ennuyeux. Et il se trouve, cependant, que si je vouloir envoyer un message texte à, disons Alex dire ici. Laissez-moi aller dans mon navigateur et quitter le mode plein écran pour que je puisse basculer. Il se trouve, voyons, si je vais dans ici, et vous connecter à Gmail, tout droit. Ne regardez pas cette partie. Juste que je peux voir. bien sûr le livestream peuvent vois encore ce que je fais. Bien. Donc ici est juste avec Gmail Le compte de John Harvard. Donc, si je veux envoyer un texte message à Alex, Je ne peux bien sûr composer un message. Et il se trouve, et je l'ai testé avec Alex avant ici, de sorte que vous pouvez ajouter un certain domaine nommer aux numéros de téléphone de personnes, car il existe dans le monde les choses ont appelé SMS à des passerelles de messagerie. Ce qui est une façon élégante de dire tout d'entre nous qui ont des téléphones mobiles avoir des numéros de téléphone, bien sûr, il est probablement pour votre support, un certain suffixe comme à Vtext.com pour Verizon message texte dot com, que vous pouvez ajouter à votre propre numéro de téléphone personnel, et ensuite vous ou vos amis, ou vos parents peuvent texte vous à cette adresse particulière. Et Verizon dispose d'un serveur, un e-mail serveur, que lors de la réception de ce courriel, regarde la partie numérique et ensuite utilise quelque magie particulière de l'industrie ils ont réellement l'envoyer sur les ondes de votre cellule particulière téléphone. Maintenant que ce soit agréable parce que je ne vraiment savoir comment envoyer un message texte ou encore d'écrire du code pour mon téléphone mobile, et vous pourriez faire exactement cela pour un projet final, mais pour l'instant tout Je dois mon ordinateur portable est ici. Je tiens donc à itérer dessus CSV fichier, ligne, par ligne, par ligne, par ligne, saisir chacun des numéros de téléphone du personnel, et de leur support et programatically, concaténer, qui est, connecter le téléphone nombre avec le nom de domaine approprié et ensuite envoyer un email. Donc, ça fait beaucoup d'étapes. Et bonne chance le faire en C. Il est un cauchemar d'une situation pour ouvrir un fichier, de le lire ligne, par ligne, par ligne, comme vous voient, ou peut-être bientôt voir avec problème posé cinq, sinon problème réglé quatre, puis pour concaténer dynamiquement deux cordes ensemble, car en C, de prendre deux chaînes et de les combiner, ce que vous faites minimalement besoin de faire le plus probable? Vous devez déclarer plus de mémoire, non? Et demander, malloc, je peux avoir plus de mémoire? Donc, je peux mettre la moitié de cette ici, la moitié de cette ici. Il est tellement nombreuses étapes. Et en ce moment, vous avez perdu intérêt dans la petite démo stupide où vous faites téléphone le bip de tout le monde. Faisons ce genre de PHP de style, de sorte que nous venons commencer à utiliser plus de cette évier de cuisine. Et les idées sont fondamentalement les mêmes, mais nous ne devons pas nous inquiéter trop beaucoup sur ce niveau inférieur. Donc, nous allons voir comment je pourrais s'y prendre. Et juste pour que je ne fais pas répéter les erreurs du passé, Je l'ai écrit quelques notes pour moi ici. Et nous allons voir si je peux marcher nous à travers certaines des étapes fondamentales, puis pour l'amour de temps nous allons peut-être couper quelques coins à la fin. Je vais aller de l'avant et faire ouverte support de PHP pour lancer ce fichier. Et je vais aller de l'avant et le faire. Poignée de fichiers, comme vous allez bientôt, en fait appelle une fonction appelée f ouverte. Et rappelez-vous ceci ouvre un fichier. Et le entre guillemets, r signifie quoi, encore? Il suffit d'ouvrir pour lecture. Maintenant, dans le jeu de p pour, vous l'avez fait. Et gérer pourrait être quelque chose, fu, bar, bas, un nom de variable. Mais généralement, un ordinateur scientifique serait appeler un fichier ouvert, vous donnant un descripteur de fichier, quelque chose à retenir pour ainsi dire. Je vais juste faire la vérification d'erreur. Donc, si la poignée est faux, comme Just en C, je vais faire quelque chose comme, ne pouvait pas ouvrir le fichier, barre oblique inverse n. Et puis, je vais juste aller de l'avant et de sortie. Et il se trouve, en PHP, Je ne suis pas dans une fonction. Il n'y a pas la fonction principale ici. Donc, je ne reviens pas, en soi. Je sors. Qui est essentiellement la même chose. Et je suis sortie avec un Y probablement. Une signifie simplement une erreur de quelque sorte. Il est non-nulle, il est donc une erreur. Très bien, si je suis ici aujourd'hui dans mon programme, je l'ai ouvert le fichier. Je vais aller de l'avant et de déclarer un tableau appelé adresses, et C Je dois connaître la taille du tableau à l'avance, non? Ou je devrais déclarer est un pointeur, puis utiliser malloc. Et puis, chaque fois que je lis par une autre ligne dans le fichier, Je vais avoir besoin de malloc plus de mémoire, plus de mémoire malloc. Voilà une douleur dans le cou. Et heureusement, PHP et Ruby, et Python et JavaScript, ils augmentera vos tableaux pour vous automatiquement. Pas plus malloc. Pas plus la gestion de la mémoire. L'ordinateur prend soin de cela. Mais le prix que vous payez. Il est un peu plus lent. Et pour un programme comme celui- on ne va pas à remarquer. Nous allons envoyer 100 messages texte. Par exemple ne vais pas le sentir. IT ne commence vraiment à importance langue de votre choix lorsque vos données ou vos programmes obtenir vraiment, vraiment importante, comme ce sera le cas, d'autant plus avec nos affaires sur le web. Mais pour l'instant, nous allons foncer. Alors il se trouve qu'il ya une fonction en C appelé F CSV. Fichier obtenir CSV, qui prend une déposer poignée comme argument, et il procède alors, rangée, par ligne, ligne par ligne, à lire dans une rangée. Alors il lit juste une ligne du texte à partir du fichier. Mais ce qui est bien avec cette fonction, il n'a tout simplement pas la main-moi une ligne de texte. Il semble pour les virgules, et analyse la ligne. Et pour analyser la ligne signifie pour diviser sur certaines valeurs dans ce contexte. En d'autres termes, le signe dollar ligne est une variable qui est va me donner un tas d'indices. Cela va être le première colonne dans mon CSV. Ce sera la deuxième colonne, cela va être la troisième, et cela va être le quatrième. Parce que le rappel, et Excel le pas coopérer la dernière fois que nous avons fait cela, mais si je télécharge personnel parsèment CSV. Oups, renommez pas. Si je télécharge personnel dot CSV, et essayez de l'ouvrir, Je l'ai déjà registered-- oh je ne pas mettre à jour Excel depuis la dernière fois. Vous verrez que dans le personnel dot CSV, je possède quatre colonnes. Alors, quand je lis dans la première rangée pour Abby ici, signe dollar rangée 0 est Abby, dollar signe la première rangée est de Lyon, dollar signe la deuxième ligne est son numéro, puis le support de son téléphone. Donc, voilà tout. Et cela est bien, parce que je ne pas avoir à comprendre maintenant hors où tous ces virgules sont en réalité. Donc, je vais aller de l'avant et le faire, compte tenu de cette définition, Je vais dire que son nom est dans la rangée support zéro, comme promis. Et je vais grab-- et en fait, vous savez quoi? Je ne vais pas à vous soucier de son nom, dans ce cas. Je vais le garder simple. Je vais faire son numéro est dans la rangée étrier deux, je pense. Et sa carrière était en où? Ligne trois, un sur. Donc rien de nouveau. Il est juste de zéro indexation dans un tableau. Et maintenant, je vais faire ce qui suit. Si le transporteur est égal à égal à AT & T-- Je vais avoir un loop-- Je veux créer un e-mail adresse qui ressemble à ceci. Il va y avoir 617-555-1212 à, quel est-il, text.ATT.net, est ce que je veux faire. Alors, comment dois-je faire cela? Je vais faire ce qui suit. Son adresse va être son numéro, et maintenant, laissez-moi aller de l'avant et le faire. Ceci est une syntaxe funky. Je pouvais faire l'affaire pour cent s, mais je ne peux en fait juste le faire. Donc, cela est une chose de PHP, mais nous allons examiner ce que je fais. Dollars signent adresse sur la gauche, juste une variable. Donnez-moi une variable. Je ne dois spécifier le type. PHP va comprendre. Sur le côté droit, quel est le type de données de ce tout sur le côté droit de la main? On dirait une chaîne, car il est le double Citations sur l'extrême gauche et l'extrême droite. Maintenant, il ya une nouvelle syntaxe génial ici. Il ya des accolades, et le nombre de signe dollar. Mais prendre une proposition quelle est cette syntaxe dire probablement PHP de le faire pour moi? Ouais. Il suffit d'insérer la valeur il. Donc, pas de pour cent s. Nous pourrions utiliser print f ou s Imprimer f ou quelque chose comme ça, mais PHP et beaucoup de langages de plus haut niveau, vous allez voir que vous pourriez faire la même chose fonctionnellement, peut-être six façons différentes. Et il commence à devenir une question de conception ou de style. Donc, cela est juste une façon aspect crypté de dire, donnez-moi une adresse électronique, mais plug-in dans le nombre entre ces accolades. Et les accolades ne sera pas finir dans l'adresse finale. Maintenant, nous pouvons sauter certains de ces lignes pour des raisons de temps. Donc, si un transporteur est égal à égaux verHorizon-- whoops, Verizon-- je veux faire quelque chose très similaire, où l'adresse obtient, entre guillemets, au nombre text.ATT.net. Et puis, je peux faire le même genre de chose pour le reste des transporteurs. Mais je vais juste faire dot, dot, dot pour le moment. Et maintenant, supposons que Je veux ajouter tableau, pousser. Je tiens à ajouter à la tableau, appelé adresses. Cette adresse, voici comment vous ajouter quelque chose à un tableau en PHP. Vous ne devez faire malloc. Vous ne devez pas redimensionner le tableau. Vous venez de dire ensemble, pousser. Que voulez-vous à ce tableau push-- voulez-vous pousser quelque chose sur? Adresses. Qu'est-ce que vous voulez pousser sur les adresses? Adresse. Et en fait, si vous vraiment envie d'être intelligent, un peu de sucre syntaxique pour cela, pour ainsi dire, ce qui signifie simplement comment pouvez-vous faire cela dans la manière jolie, serait de le faire. Qui a trop l'effet de la croissance Les adresses tableau en taille un, puis que plop supplémentaires adresse e-mail en elle. Ouais. AUDIENCE: [inaudible] ENCEINTE 1: Une faute de frappe sur le d'autre si-- oh, transporteur. C'est bon. Il sera également ne pas aimer mon échec à mettre en œuvre le cadre de ce programme plus tard. Mais je vous remercie pour la capture. Un bug plus. Merci. Nous voulons que ce soit Vtext.com. Oui. Bien. Alors, où en sommes-nous? Nous avons écrit le code pour ouvrir le fichier. Nous avons une boucle pour itérer sur les lignes dans le fichier. Nous avons un code qui ajoute à mon matrice, un à la fois, le correctement adresse e-mail formaté. Donc, tout ce qui reste vraiment est d'envoyer un e-mail à chacune de ces personnes. Donc, je suis allé de l'avant et me préparait comme suit. Qu'est-ce que je vais faire ici est-- et nous allons aller de l'avant et passer à un peu de code réelle, qui ressemble à ceci. Voici donc la pré-cuit version que je l'ai déjà écrit. Et notez que je fini mise en œuvre de Sprint. Je finis la mise en œuvre de T-Mobile. Je finis la mise en œuvre de Virgin Mobile. Et je vais présenter des excuses à l'avance. Il ya quelques transporteurs qui certains élèves de la classe ont que je ne dérange pas l'énumération dans la condition if ici. Donc pas tous les textes vont sortir. Mais nous allons voir ce que je dois faire. Je ferme le fichier, juste comme dans p fixé quatre. Et cela est une nouvelle syntaxe. Et nous verrons un peu peu de ce temps, surtout avec p mis sept et huit. Mais cela est une syntaxe pour la création un type spécial de la structure. Il se trouve qu'il ya une bibliothèque qui est livré avec PHP, appelé mailer PHP. Son but dans la vie est de envoyer des e-mails par programmation. Il est le code de quelqu'un d'autre a écrit que il est plus facile pour nous d'envoyer des e-mails, de sorte que nous ne devons pas garder des allers-retours à Gmail, et de le coller dans les adresses e-mail des gens. Il ya tout un tas de lignes ici que honnêtement, je viens de sorte de copié et collé à partir de la documentation. Et en fait, si vous êtes curieux, je suis parti tout des URL de la documentation dans le code que nous posterons plus tard. Et remarquez que parmi les choses que je fais est, je dis cette bibliothèque, utiliser le serveur de Gmail, non? SMTP Nous avons parlé brièvement lorsque nous étaient à Yale d'être simple mail protocole de transfert. Il est le protocole que serveurs utilisés pour envoyer des courriels, et that's-- Gmail a un de ceux. Un port, ceci est le numéro de port TCP. Il est très bien si vous ont pas vu 587 auparavant. Il suffit de savoir que de la documentation. Voici mon nom d'utilisateur. Je vais utiliser le bot de CF50. Et dans un moment, je vais juste tapez le mot de passe réel du bot. Et puis ici, notez ce qui reste. Je mis mon partir de l'adresse être au bot CS50.net. Je pense que je ne regretterez pas l'envoi d'un message texte à 800 personnes qui dit, vous manquez, bot amour CS50, peut-être pour ceux qui ne pouvaient pas le faire aujourd'hui. Et puis dans la ligne 76, je fais quoi? Ce genre de regards comme C. Donc, pour i est égal à 0, n equals-- compter maintenant est nouveau. Il se trouve que si vous voulez obtenir le nombre de choses dans un tableau, vous ne devez pas vous rappeler plus. Vous pouvez poser une fonction appelée comptage, et il vous dira combien de adresses sont dans ce tableau. Et puis, je vais ajouter l'adresse à l'email. Et je sais par en utilisant la documentation. Il ya une fonction de l'adresse d'ajout. Et maintenant il remarquer est une pièce de la syntaxe. Nous avons vu cela avant en C. similaires dans l'esprit. Vous pouvez penser signe dollar courriel comme une variable, qui il est. Mais il est une structure au sein de qui ne sont pas seulement des biens, les variables si vous voulez. Mais il se trouve que dans PHP, qui est une programmation orientée objet la langue, comme Java si vous avez pris APCS. Dollar signe courrier, si vous voulez to-- il possède également des fonctions de celui-ci à l'intérieur, ou méthodes. Donc cela est de dire que mailer PHP spéciale bibliothèque, si je dois une variable de celui-ci, si je veux appeler une fonction qui est livré avec cette bibliothèque, pour les besoins d'aujourd'hui, savez que vous utilisez la notation de flèche. Il n'y a pas notation par points. Il est juste sur la flèche. Mais ce est pas un pointeur. Il est juste emprunté à la syntaxe de C. Alors, appelez ajouter adresse à l'intérieur de l'objet ou une variable de cette bibliothèque. Bien. Telle est la ligne magique. Voilà comment je envoyer un email. Cela est l'équivalent de l'ouverture Gmail, tapant sur, et en appuyant sur envoyer. Mais il va envoyer à la place d'un e-mail à cette adresse, avec ce corps, du bot CS50. Et maintenant la ligne clé. Cette ligne a été absent dans comme 2011 quand je pense que je essayé cette dernière. Cette ligne là, bien sûr, efface les adresses. Donc, logiquement, si je ne désactivez pas l'adresse après chaque itération, la première courriel ou message texte va à Alice, la seconde passe à Alice et Bob, le troisième va à Alice et Bob et Charlie, donc l'erreur très coûteuse Je fis cette année. Voyons donc. Est-ce qu'il y a des questions avant de vous envoyer tout un texte message avec 10 pour cent de probabilité? Des questions? Bien. Disons-moi aller ici et le changement le mot de passe de ce qui devrait travailler, obtiendrez probablement sur la liste noire par Gmail. Donc, ils pourraient ne pas tous y aller dehors, car ils probablement ne nous aiment envoyer 800 e-mails dans une boucle à un seul coup. Depuis ce ne est pas comportement particulièrement humaine. Oh, je vais changer une autre chose. Au sommet, je vais sent-- modifier le fichier aux étudiants parsèment CSV. Et je ne vais pas ouvrir, mais ceci est un fichier CSV identique à pas 100 membres du personnel, mais 800 étudiants, simplement de Harvard, Yale, car a évidement Octobre de cette semaine. Et il semble être une sorte de chose jerk à faire au texte toutes les raisons pour lesquelles ils ne sont pas en classe en vacances. C'est bon. Seulement les étudiants de Harvard aujourd'hui à l'intérieur de ce fichier. Et maintenant, revenons à ma fenêtre de terminal. Je suis un peu nerveux. OK alors maintenant je vais aller dans le répertoire, et le texte de PHP dot PHP. Que diriez-vous un bénévole courageux? Donc, je ne veux pas de moi. OK, venez sur place. Comment t'appelles tu? MAYA: Maya. ENCEINTE 1: Maya. Allez jusqu'à, Maya. Bien. Voyons voir si cela fonctionne. Je mets ma propre adresse e-mail dans le file-- mon propre numéro de téléphone dans le fichier, de sorte que je espère que je vais en avoir un aussi. Enchanté de faire votre connaissance. MAYA: même. ENCEINTE 1: Donc, tout ce que vous avez à faire est appuyez sur Entrée pour envoyer 800 messages texte, si je ne l'ai pas bousiller. Agréable. Pourrait prendre un certain temps, statistiquement, jusqu'à ce que nous arrivons à un email address-- un message de texte qui est dans la salle en ce moment. Disons attarder et voir. AUDIENCE: [SIFFLEMENT] ENCEINTE 1: Oh, oui. AUDIENCE: Oh, Gotcha. ENCEINTE 1: Pour les boucles soient: ce ne tarde pas à cause de PHP. Ceci est lent car Gmail est de nous étrangler et non nous laisser envoyer plus comme un e-mail par seconde. N'importe quoi? Ce fut une chose difficile pour moi de tester au maison avec juste moi et mon seul téléphone, donc. Est-ce que je l'espère du bot? Oui? Non? Dis oui. Non? Il est d'un ami? Gênant. D'ACCORD. Jolie assurer qu'il fonctionne bien. Uh oh. Ils black-- Oh, attendez une minute. Oh, vous savez quoi? Un instant s'il vous plaît. Seulement Maya et I-- Mia, était-ce? MAYA: Maya. ENCEINTE 1: Maya, vont sais ce que je fait de mal ici. Oh, attendez une minute. Je pense que je viens d'envoyer 100 des messages texte à 555-1212. Etre prêt. Je ne peux pas gagner une année. D'ACCORD. Maya? Corriger cela dans la post-production. Merde! Suite de l'adresse. OK, rester en attente. Pardon. Il est douloureux chaque année. OK, un moment. C'est bon. Je vais à la place de le faire. Adresses d'impression. OK, rester en attente. Adresses d'impression, le support i. Ouais, je aime ça. Dollar sign-- OK Je vais vous expliquer ce que je suis faire dans un moment, après que je suis à court de cette. Chaque année. OK, on ​​y va. Je dois just-- et je ne veux pas pour montrer le numéro de téléphone de tout le monde, Maya mais peut confirmer avec un hochement de la tête, qu'elle voit tout le monde est numéro de téléphone dans la classe que je vais copier dans un programme appelé Gmail. Et si dans Gmail, que voulons-nous dire? Tu me manques. Love-- ce ne est pas de moi. Je l'ai même pas touché envoyer encore. Allons donc de l'avant et faire cela, si je peut zoomer. D'ACCORD. Donc, je suis en utilisant un programme appelé Gmail maintenant. Si Maya, vous souhaitez cliquez sur le bouton Envoyer, nous allons simuler ce que Code aurait dû le faire. N'importe quoi? [BIP] AUDIENCE: Yep. ENCEINTE 1: Oui? Salut? AUDIENCE: Yep. ENCEINTE 1: Mlle vous. Et je vais envoyer le reste. Je ai envoyé la moitié parce que je ne pense pas Gmail serait que ceux passer. Alors rappelez-vous juste, aujourd'hui est le jour que vous avez appris que je peux utiliser Gmail. Ce fut horrible. Un grand bravo à Maya. Merci. Très bien, alors. quoi [BIP] Nous avons eu quelques bips, oui? Bien. Maintenant, je vais me faire vraiment 700 e-mails malheureux retour de ses camarades de classe. Ainsi, au moins, nous verrons si cela en valait la peine. Alors qu'est-ce qui a mal tourné? Je vais comprendre ce qui se mal après le fait, mais il suffit de regarder comment facile il était de le faire en PHP. Alors, que pouvons-nous faire maintenant que fait nous avons cette expressivité de PHP. Ce était-- qui était horrible. Bien. Alors que ce qui aurait été sorti. Cette me teste ce matin sur mon téléphone, écran réelle de mon téléphone. Mais maintenant, nous allons examiner pourquoi nous sommes effectivement introduction toutes ces choses en premier lieu. Donc, le but est de ne pas écrire ces programmes qui sont écrits à la ligne de commande, non? Donc, je l'ai écrit d'un simple programme bonjour, je l'ai écrit un petit programme qui fait conditionnelles, et utilisé une ligne de lecture et ainsi de suite. Et en théorie, je viens d'écrire un programme qui a envoyé 800 messages texte, donner ou prendre 800. Et ce programme était tout courir encore à la ligne de commande. Et cela est bien sûr pas le web, non? L'objectif est maintenant de commencer à utiliser ce que je demande est un plus facile à utiliser la langue, ose dire un plus langage puissant en termes des caractéristiques qui venir avec elle, pour commencer écrire du code qui génère des pages Web. Donc, la dernière fois et la semaine dernière, nous avons parlé HTTP et HTML. Et ce qui est bien sur HTML est qu'il est juste texte pur. Et le texte est certainement quelque chose que vous pouvez imprimer en appelant littéralement le print fonction f, ou la fonction d'impression. Et en effet, voilà ce que PHP est maintenant va nous permettre de faire. Donc, parmi les exemples que nous avoir dans le code source d'aujourd'hui, en plus d'une partie du code que je mets en place il ya un instant, nous avons des programmes comme celui-ci par exemple. Froshims ou Freshman Intra-muros Sports, était en fait l'une des premières extracurriculars Je me suis impliqué depuis des années. Et mon colocataire et moi, avec d'autres enfants sur le campus, utilisé pour exécuter le programme de froshims. Je reçois mes messages texte maintenant. Maintenant donc nous, retour dans la journée, donc ce était 1996 ou alors, il y avait un Internet, mais il n'y a pas là process-- avait pas de site Web pour froshims. Et donc si vous voulez vous inscrire pour football ou au volley-ball ou autre chose, vous remplissez cette chose appelé un morceau de papier, et vous voulez traverser Harvard cour, et vous glisser en courrier la fente du surveillant, qui était dans l'arrêt Wigglesworth, l'un des dortoirs. Et cela, vous étiez inscrit. Et il ou elle serait alors composer un email pour vous manuellement, un peu comme je juste fait ici avec Maya, et puis vous sera confirmé comme ayant été enregistré. Donc, ce fut comme faible fruits suspendus, pour ainsi dire. Il était un peu stupide que nous étions en utilisant du papier pour cela. Je voulais que nous soyons en mesure juste aller sur un site Web, ou ont les étudiants de première année vont sur un site, inscrivez-vous pour les sports, et juste automatiser un grand nombre de ce genre de choses en mettant leurs noms et courriels et ainsi de suite dans une base de données. Et en fait, la toute première version du site Web, à l'aide HTML de super laid, aurait pu ressembler à quelque chose comme ça. Il était en fait, ironiquement, plus recherche embarrassant que ce retour puis. Mais je utilisé un langage de programmation. Non PHP, mais plutôt appelé Perl, qui est une langue plus ancienne, mais très similaire dans l'esprit. Et je viens de complètement enseigné à moi-même. Et il m'a fallu un certain temps pour comprendre, poser beaucoup de questions d'amis. Mais les idées là-bas étaient exactement les mêmes. Parce que ce que PHP a été vraiment conçu pour est pas l'étoffe de ligne de commande nous avons juste joué avec, mais pour la programmation web. Il est vraiment liée à sa fonction mettre sur le web, comme suit. Ceci est froshims. Et si je voulais enregistrer sous cette forme, ce qui est très laid, certes, mais laissez-moi aller de l'avant et être un étudiant moins à l'aise, et quel que soit le sport pour Matthews, cliquez sur Enregistrer. Ce que je veux être en mesure de le faire est soumettre des informations à partir d'un formulaire, ne pas le serveur de Google comme nous avons fait la dernière fois, complètement tricher en utilisant leur backend, je vouloir mettre en place mon propre code de backend. Qui signifie en écriture PHP code qui vit à une URL que les données de formulaire peut être soumis à. Et puis votre code, écrit en PHP sur un serveur, peut alors répondre à cette entrée d'utilisateur. Comme son nom, ou niveau de confort, ou dortoir, puis faire quelque chose avec elle. Dans ce cas, je viens bêtement imprimé it out comme du texte, qui ne fait pas tout ce que jolie. Mais vous pourriez certainement Imaginez, si vous connaissez le HTML, et vous allez bientôt savoir comment générer HTML avec impression f, et d'impression, et des fonctions similaires, vous pouvez certainement générer une page web plus jolie qui dit, hey David, vous êtes maintenant inscrit. Vous êtes un moins à l'aise étudiant de Matthews, non? Vous pouvez simplement utiliser tout un tas de% de SES, ou les accolades et signe dollar Je notation utilisé il ya un instant, à générer du texte qui est plus convivial que cela. Donc, nous allons jeter un oeil à ce seul fichier. Froshim zéro point PHP ressemble à ceci. Lorsque je recharge CS50 IDE, zéro froshim ressemble à ceci. Ceci est froshim zéro point PHP. Et qu'est-ce que vous remarquez à propos de ce dossier? AUDIENCE: [inaudible] ENCEINTE 1: Désolé, un peu plus fort? AUDIENCE: [inaudible] Tout est en HTML. Et en fait, il est, parce ce qui est intéressant à propos de PHP est qu'il a été conçu être, pour le meilleur ou pour le pire, entremêlés avec le code HTML. Et en fait, même si cela fichier, froshim zéro point PHP, a un commentaire de PHP au sommet de celui-ci, il est tout simplement HTML. Mais par contre, si je Open Up, nous allons disons, inscrivez zéro point PHP, qui a juste une grosse commentaire au sommet. Cela ressemble trop presque entièrement comme le HTML, sauf pour quoi? Line, quoi, 21 semble un peu bizarre. Mais je remarque entrer en mode PHP avec support ouverte interrogation PHP. Ensuite, je dois quelques trucs. Ensuite, à la fin de cette ligne presque je dois, d'interrogation PHP. Et voici ce que je veux dire par entremêlés. Vous pouvez écrire en HTML que vous venez le serveur doit cracher. Mais si vous voulez faire quelque chose à mi-chemin à travers la page dynamique, comme insérer mon nom ou dortoir ou niveau de confort, Je peux utiliser une fonction comme l'impression r, qui est imprimer récursif, ce qui signifie simplement imprimer cette variable, le formatage comme tu veux. Il est vraiment pas pour fins humaines, il est juste pour le débogage ou à des fins de diagnostic. Voilà donc comment je l'ai fait. Si je vais à la place froshims deux points PHP, remarquer que l'action de ce formulaire est pas inscrit zéro point que le PHP old-- la précédente était réellement. Mais il est enregistré deux points PHP. Alors regardons comment celui-ci se comporte un peu différemment. Si je vais dans la version deux. Si ici, si je inscrire comme David, moins confortable, de dortoir de Mathews, registre. Alors, cette fois, il a dit, vous sont enregistrés, pas vraiment. Voyons voir ce que je faisais ici. Si je regarde registre à deux points PHP, ce qui a un peu de code PHP plus. Il est un peu plus propre, même si elle enroule encore un peu de temps sur cette ligne. Remarquez ici. Je imprimer ma balise HTML, ma tête tag, ma balise de titre, la tête, le corps. Et puis je commence à dire des choses comme entrer en mode PHP. Et si cette balise, parenthèse ouverte PHP-- interrogation PHP dit, hey, serveur, execute-- interpréter le truc suivant comme PHP jusqu'à ce que vous voyez la balise de fin. Et même si vous ne pourriez pas savoir quelle autre PHP que vous avez vu jusqu'à présent, vous pouvez sorte de lire il assez intuitivement. Si le nom est vide, ou le confort est vide, ou le dortoir est vide, je fais quoi? Que dis-je à l'utilisateur? Vous devez fournir votre nom, confort, et dortoir, et ainsi de suite. Sinon, je dis que vous êtes enregistré, bien pas vraiment. Et je ne dis pas vraiment parce qu'il n'y a pas de base de données. Je ne vais pas faire quelque chose avec les données. Je suis juste le jeter à des fins de démonstration. Maintenant, je sorte de lésiné sur la ligne 22. Il ya plus de syntaxe là, mais signe dollar soulignent poste est assez intéressant. Et cela est ce qui est agréable à propos de PHP. En PHP, vous avez ce qu'on appelle quelques variables globales de super. Ils sont en quelque sorte encore plus important que les variables globales. Et ceux-ci, tous capitalisés en tant que telle, venir avec PHP. Donc si vous avez un serveur qui a une serveur Web installé, comme Apache, et que vous installez la langue le support de PHP, tout d'un coup vous peut commencer à utiliser ces super- variables globales dans votre code. Et ce qui est bien sur PHP est que si vous venez écrire un fichier qui se termine en dot PHP, le mettre sur un serveur web, et puis vous soumettez un formulaire à elle par l'intermédiaire de ce tag d'action et une balise de formulaire, cet attribut d'action dans le balise form, PHP et le web chiffres complètement comment saisir toutes ces paires de valeurs clés sur de l'URL comme question marque q est égal chats, il va comprendre comment q et chats. Si vous soumettez une photo, ou un nom d'utilisateur, ou un mot de passe comme Facebook, PHP va comprendre pour vous où toutes ces données est. Et ce sera juste la main vous un tableau associatif appelé signe dollar soulignement poste, ou le signe dollar soulignent obtenir, selon que vous êtes utilisant GET ou POST soumissions. Et il va juste vous remettre une variable globale de super, de sorte que si vous voulez obtenir au nom que l'utilisateur a soumis via ce Web formulaire, vous littéralement juste dire le nom de la variable globale de super, devis, Ils ont dit, le nom. Et devis, confort unquote, et devis, dortoir unquote. Et nous allons être en mesure de le faire cela et bien plus avec PHP. Et même si cela était un coup d'oeil à ce tourbillon, nous allons plonger dans beaucoup plus la semaine prochaine. Nous allons présenter une base de données de sorte que vous êtes réellement va commencer la mise en œuvre votre propre e-commerce based-- comme site dans un délai de seulement une semaine. Donc, nous vous verrons la prochaine fois, et espère que vous avez les messages texte. Au revoir. [Jouer de la musique] [OUVERTURE DE LA PORTE] SPEAKER 2: Hey. Intervenant 3: Quoi de neuf? SPEAKER 2: Que faites-vous? Intervenant 3: Travailler sur un ensemble de problème. SPEAKER 2: Nice. Tope là. [TOPE LÀ] Que soient: euh, que faites-vous ici? Intervenant 3: Juste traîner. Nous venons de rentrer de la salle de gym. Je ne pouvais pas aider mais remarquerez quand nous high-tapa dans la main, que vous avez les mains assez rugueux. Pensez-vous aller à la gym? SPEAKER 2: Non Non. Intervenant 3: Mec, tu es assez grand. Ce qui est mauvais, parce que chacun sait 8-ball est le grand homme sur le campus. Tope là. SPEAKER 2: Euh, non. Non, je crois que je suis bon. Je crois que je suis bon.