[REPRODUCCIÓN DE MÚSICA] ALTAVOZ 1: Este es CS50 y este es el final de la semana de siete. Hoy es quizás donde realmente enseñando idiomas. Hemos introducido en el último par de semana HTML y CSS, ninguno de los cuales son lenguajes de programación. Y, en efecto, a pesar de que no mirar a casi todas las etiquetas que viene con HTML y casi todos de las propiedades que viene con CSS, eso es algo que para HTML y CSS. Tendremos general comenzar suponiendo que entender las ideas generales de etiquetas y atributos, y las páginas que se envían desde el cliente al servidor. Porque hoy empezamos a mirar otro lenguaje de programación, PHP. Vamos a hacer esto muy rápido. No vamos a enseñarte PHP per se, al igual que nosotros no aspiramos a enseñar C, per se, sino más bien de programación. Y, en efecto, uno de los metas para este curso No se que le enseñe C, o HTML o CSS o PHP, o cualquier número de otra palabras de moda o acrónimos, sino más bien la informática y cómo programar fundamentalmente. Y, de hecho, hoy empezamos a tomar esas ruedas de entrenamiento fuera de toda la aún más por volar a través de una lenguaje llamado PHP, como sigue. Esto es lo que se ve este lenguaje similar. Resulta que no hay necesidad de una función principal en un programa escrito en un lenguaje llamado PHP. Así que ya suena un poco más simple que C, con la que estamos familiarizados. Resulta que si quiero declarar una variable, lo hace de manera casi idéntica a C. Pero claramente hay una diferencia aquí cuando me declaro una cadena, o tal vez dos diferencias. Lo que se ve diferente? AUDIENCIA: El signo de dólar. ALTAVOZ 1: Sí, hay dólar firmamos, que nunca hemos visto antes. Y lo que falta? ¿Sí? AUDIENCIA: [inaudible] ALTAVOZ 1: Sí, no hay ningún tipo de datos. Así que resulta que PHP es lo que llamar a un lenguaje débilmente tipado, donde C es fuertemente tipado. Sin apretar escrito sólo significa que hay diferentes tipos de datos, hay cadenas y enteros, y carrozas. Pero las cifras de computadoras que fuera. Usted programador humano no tienen que entenderlo. Así que todo lo que tiene que hacer para declarar una variable es signo de dólar, el nombre de su la variable y, a continuación, por ejemplo, entre comillas, hola mundo. Bueno, esto es lo que un condición parece en PHP. Cualquier diferencia? No. Así que resulta que son idénticos. Y es posible que tenga menos sucursales o más ramas, pero los giros de sintaxis exactamente el mismo. Expresiones booleanas pueden pedirse juntos. Expresiones booleanas se puede anded juntos. Usted todavía tiene interruptores. Incluso si usted no ha utilizado estos, éstas existen en C y son funcionalmente equivalente en PHP. Y de hecho, en PHP son un poco más potente. En C, sólo se puede comparar seguro tipos de datos como enteros y caracteres, mientras que en PHP se puede comparar en realidad cuerdas fledge completos sin tener que preocuparse de punteros y similares. Así que aquí está un bucle for. Esto es sólo pseudocódigo código, si se quiere. Pero es estructuralmente idéntica a C. Aquí hay un bucle while, pseudocódigo therefore-- idéntica a C. Aquí es un do mientras loop-- idénticos. Y así hay una especie de este patrón aquí por el cual hay algunos otros sintáctica características que están de hecho va a ver. De hecho, aquí es un buen forma en PHP mediante el cual, si desea repetir sobre una matriz, y no quieren saltar a través de la aros mentales y sintácticas de tener int i es igual a 0, i menos que n, i, más que plus-- es sólo un montón de sintaxis molesto. Se puede decir un poco más de manera fluida para cada uno de los números como el número, donde en este caso número de signos de dólar, estoy asumiendo, es como una matriz llamada números. Y entonces yo estoy asumiendo número, singular, va a ser una variable. ¿Y qué PHP va a hacer por mí, ya que iterar sobre este bucle es, en cada iteración, que va actualizar el número variable de ser el elemento i-ésimo en los números, en plural. Por lo que sólo se encarga de todo eso para mí. No hay corchetes, sin signo de dólar, no hay punto y coma. Es sólo un poco más simple. Bueno, si quieres una matriz, resulta que puede hacer algo muy similar a C. La sintaxis es un poco diferente. Pero aquí está una serie llamada dólar firmó números. Y uso, en PHP, cuadrado soportes, resulta. Y vamos a ver a estos de nuevo en JavaScript-- otro idioma. Acabo de utilizar la notación de corchetes tener una lista separada por comas de enteros, en este caso. Pero eso me da una matriz. Pero aún más poderosa en PHP, también tenemos lo que son en general llamado matrices asociativas. Y un montón de idiomas tener estos también. Lo que pasa con las matrices C es que los índices para una matriz, lo que utilizar entre corchetes a través del cual acceso elementos, debe ser qué? AUDIENCIA: [inaudible] ALTAVOZ 1: Tienen que ser números o enteros, concretamente desde cero en adelante. Pues bien, en PHP, y, resulta fuera, en otros idiomas, usted puede comenzar a tener índices que no son numéricos. Pero en realidad son palabras o frases, por lo que en lugar de trate de recordar que algo está, o almacenado en una variable de i, en realidad se puede usar una palabra y decir que-- se puede decir una palabra como esta. Así que la cita es el signo de dólar nombre de una variable aquí. Esta es la sintaxis un tanto cobarde esa es la asociación de dos valores clave pares para esta variable. En concreto, esto me está dando una matriz que es de longitud 2. Sin embargo, los índices no son 0 y 1. Los índices están entre comillas símbolo y cotización fin de la cita. Y los valores de dichos índices, respectivamente, es FB para Facebook y $ 79.53, la última vez facturado un precio por ello. ¿Que significa eso? Bueno, significa que en lugar de escribir código como éste, donde solía hacer algo como dólar sign-- o más bien, en C Ni siquiera tendría un signo de dólar. Me gustaría hacer algo como cotizaciones y después Yo haría soporte de i para conseguir en algún arbitrariamente numéricamente valor indexado. A partir de hoy en PHP, si que desee obtener en algún valor, tenemos suerte de tener más expresividad semántica. Sólo una forma elegante de decir que podemos simplemente llamar a las cosas como son. Y si usted desea conseguir algo símbolo, ahora que, literalmente, hacer citar símbolo fin de la cita entre corchetes en lugar de un simple número. Así que es una buena comodidad. Y eso es una especie de todo por ahora. Hay racimos de otras características en PHP. Y, en efecto, viene con PHP el fregadero de la cocina proverbial. Decenas, cientos de funciones vienen con PHP-- tantos más que vino con C. Y eso no es la intención de abrumar sino más bien ayudar a te das cuenta de que hay ya tener que escribir código que es una especie de aquí abajo conceptualmente. Ahora sólo podemos empezar a tomar ventaja características de mucho más avanzadas que lenguajes como PHP tienen. Así que no tenemos que preocuparnos por mover las cosas en la memoria. Nosotros no tenemos que preocuparnos por malloc y todas ellas nivel inferior, detalles de gran alcance que se le Wrestle con, si no luchar con, pset5, pero usted puede comenzar a pronto dar por sentado. De hecho, vamos a escribir un super sencillo programa en PHP, como sigue. Voy a ir a la cabeza en CS50 IDE aquí, y lo que voy a hacer es crear un nuevo archivo, que de manera muy sencilla va a ser llamado hola PHP punto. Así que en lugar de punto c, es va a ser llamado punto PHP. Y luego, en este archivo, Puedo empezar a escribir. Pero resulta que el una cosa que tengo que saber es que cualquier archivo PHP en general, necesita para comenzar con una sintaxis especial. Similares en espíritu a HTML, pero de nuevo, PHP es un lenguaje de programación, no un lenguaje de marcas. Así que cada archivo, y es una especie de aspecto estúpido lo admito. Soporte Abrir, signo de interrogación, PHP. Y eso es sólo el el camino de la lengua de decir, bueno, equipo aquí viene algo de código escrito en un lenguaje llamado PHP. Y luego al final de su archivo, haces tipo de clase de lo contrario. Usted no volver a escribir PHP, sólo hacer el signo de interrogación, soporte angular. Y entonces cualquier cosa que pongas en el interior de estas dos etiquetas, por así decirlo, será, o debería ser, el código PHP. Así que vamos a hacer algo super simple. Voy a seguir adelante y hacerlo de impresión def, hola mundo, barra invertida n, guardar. Y ahora en mi sistema, voy a hago, hago hello-- no, yo voy a hacer, punto slash hola. No, slash dot, hm. Así que algo es diferente. Y de hecho, esta es una diferencia clave entre PHP y lenguajes como C. C era una lengua llamada compilado. ¿Qué significó para C para compilar? ¿Cuál fue la consecuencia? Sí. AUDIENCIA: lo escribió en código máquina por lo que podría ser ejecutado por el ordenador. ALTAVOZ 1: Exactamente. Tenemos que convertir primero en llamado código máquina, ceros y unos, antes de que en realidad será ejecutable y entendido por el ordenador. Por Intel en su interior. Por la CPU en el interior de la computadora. PHP, por el contrario, es lo que se llama un lenguaje interpretado, lo que significa que usted no compilarlo en ceros y unos, código de máquina, que en lugar de salir como código fuente. Y en lugar de pasar como entrada a un programa, un intérprete que alguien más escribió Hace años que lo entiende línea por línea, carácter a carácter. Así, en otras palabras, los seres humanos por ahí escribieron un programa que se verá en su código línea por línea, y averiguar lo que el equipo debe hacer, sin convertirlo directamente a ceros y unos. Así que si ve un bucle for, este así llamado intérprete va a ser así, está bien, lo que debería hacer algo una y otra vez y otra vez. ¿Qué debería hacer? Deja que te mire la siguiente línea. Deja que te mire la siguiente línea. Y realmente lo interpreta línea por línea. Así que para ejecutarlo, yo no uso maquillaje. No consumo barra de puntos en este caso. Yo en cambio hago PHP, que es el nombre de un programa, también denominado El intérprete, que es preinstalado en CS50 IDE, y ahora tengo que pasar una argumento de la línea de comandos, que es simplemente el nombre de la archivo que quiero interpretar. O más informal, que quiero correr. Y si pulsa enter, ahí lo tenemos. Hola mundo. Ahora resulta que yo def impresión utilizado deliberadamente para tender un puente de C a PHP. La mayoría de los programadores de PHP, como se verá, ni siquiera se molestan usando def impresión. Ellos sólo tiene que utilizar una función llamada impresión, que C no tenía. Y lo que si me vuelve a ejecutar ahora, en realidad se comporta funcionalmente el mismo. No puedo usar el porcentaje s y i ciento y así sucesivamente, pero hay otras maneras en PHP de hacer eso. Pero esto es sólo para decir que sintácticamente, aparte de algunas cosas raras hasta superior, y algunos caracteres extraños abajo en la parte inferior, los conceptos de ahora programación en este otro idioma van a ser exactamente lo mismo. De hecho, vamos a hacer otro ejemplo. Así que voy a seguir adelante y cerrar el archivo. Déjame crear otro que Voy a llamar a las condiciones 1 punto PHP. Así que no cero, porque lo que hice era yo miré hacia atrás hace unas semanas, teníamos un archivo llamado condiciones 1 punto C. Y lo Yo me convertí en mi cabeza, y aquí en el papel, y pronto en el curso de sitio web, línea por línea en PHP. Así que en la versión C, hicimos algo como cadena s consigue llegar cadena. Así que es un poco diferente hacerlo en PHP. En su lugar, yo sólo voy hacer, o mejor dicho, podría haber hecho int n se hace llegar int, en este ejemplo anterior. Así que en lugar de eso, yo voy a hacer n Obtiene una línea de leer, me gustaría un entero, Por favor. Así que esto es sólo mi pronta. Y así resulta que y Yo sólo lo saben de haber leído o visto la función antes, leer las líneas de la función en PHP toma un argumento que es un símbolo para el ser humano, y su propósito en la vida es leer una línea de texto que él o ella en tipos. Y luego se almacena que texto en la variable n. Y ahora yo podría querer hacer algo como lo hice hace unas semanas, en la semana como uno de la clase. Si n es mayor que cero, entonces, voy pedir prestado que la sintaxis que acabamos de ver, def impresión, que eligió un número positivo, n barra invertida. Porque si n es igual es igual a cero, estoy va a seguir adelante y decir: def impresión, que eligió cero barra invertida n. Si no, el caso aquí debe por supuesto, def impresión, que eligió un número negativo. Y sin duda podemos aplicar la lógica de esta cosa en un montón de diferentes maneras, pero el punto aquí es que sintácticamente, apenas nada es nuevo. Es sólo el signo de dólar y una nueva función y la línea de leer. Pero fundamentalmente, ¿qué hay de nuevo ahora es que estoy interpretando esto. Estoy pasándolo como entrada a otro programa. Así que si quiero ejecutar esto, si No hice ningún error, Voy a correr PHP, de condiciones 1 punto PHP, ENTER, Voy a escribir el número 50, y supongamos que por ahora funciona. Debido a que la lógica es la misma materia que la semana uno. Muy bien, así que es bastante decepcionante, ¿verdad? Podríamos hacer esto en cualquier número de idiomas. Vamos a hacer algo mucho más poderoso. Vamos problema acabado establece cinco. Así que voy a seguir adelante y hacer esto. Voy a crear un archivo llamado Diccionario de puntos PHP, e inclinada como podría ser que luchar por un montón de notas, las notas sólo ayudará si se le permite para poner en práctica los problemas establecen cinco en PHP. Pero vamos a ver lo rápido que ahora puede aplicar el mismo conjunto de problemas. Así que en punto PHP diccionario, voy asumir que ya existe un archivo en el mundo llamado abecedario. Y de hecho, lo hice por adelantado, y no vamos a caminar a través de esta línea por línea, pero si usted es curioso que desee tarde y realmente para envolver su mente alrededor de la diferencias entre c y PHP, literalmente comparar este archivo, abecedario, a partir del código fuente de hoy que publicaremos más adelante hoy, en contra de p conjunto de cinco ortografía punto c que le demos, y es casi la misma línea por línea. Hay algunos más signos de dólar. Un par de funciones son un poco diferente. Pero es una buena manera del tipo de ver cómo traducir un idioma a otro. Y es la línea casi idéntica para la línea. Pero yo voy a asumir que esa existe, y lo que voy a hacer aquí es tratar de volar tu mente por reimplementar la totalidad del problema fijó cinco manera más rápido que usted ha estado haciendo hasta ahora. Así, por ejemplo, voy a primero declarar una variable global llamada tamaño, y déjela a un igual a cero. Ahora eso no es mucho ahorro. Las probabilidades son que implementan tamaño más o menos la misma, o pista pista, lo hará esta noche o mañana, simplemente utilizando una variable global llamada tamaño, y se establece igual a cero. Eso no es un particular alerón increíble. Así que ¿cuáles fueron sus estructuras de datos de elección, aquellos de ustedes que han buceado en y leer las especificaciones, las estructuras de datos lo han la mayoría de ustedes han estado usando? Una tabla hash o tratan, tal vez algunas variantes de los mismos. Así que la implementación de una tabla hash, al menos, es una especie de una gran cantidad de líneas de código, ¿derecho? Y no todos ellos podrían ser funcional a estas alturas de la semana, pero eso está bien. Debido a que en PHP, si quieren una tabla hash, hecho. ¿Correcto? Así que esa variable que tengo simplemente declarado es, obviamente, llamada mesa de signo de dólar, por la introducción antes. Pero realmente sólo quiero, al el final de la día, una matriz. Pero no es un indexado numéricamente matriz, porque eso es como la segunda semana cosas, cuando hablamos acerca de las matrices. Quiero una tabla hash. Pero una tabla hash es realmente sólo una forma concreta de decir, Quieres una matriz asociativa. ¿Quieres ser capaz de claves asociados con valores. Teclas con valores. ¿Qué es un diccionario, en realidad? Bueno, es todo un manojo de llaves. Palabras como manzana, pera y plátano, y todas estas palabras en inglés que le entregamos. Y los valores que son efectivamente insertando en su diccionario son verdaderas, o la ausencia, falsa. En otras palabras, usted está insertando un montón de pares de valores clave, manzana, la verdadera, la pera, el verdadero, el plátano, la verdadera. Así que al recuperar o mira hasta que los datos en su tabla hash con su función de control, eres ya sea volver una respuesta, sí, me encontré en mi complejo hash de mesa, o no, no está ahí, así que regrese falso. Así que para hacer eso, todo lo que necesito es que los datos estructura como que propuso antes. Sólo tengo que ser capaz de asociar palabras como, entre comillas, símbolo, con un valor similar, cierto. Así que ahí está mi tabla hash. Vamos en realidad lo utilizan. Así que hay un par de funciones Tengo que poner en práctica. Voy a seguir adelante y morder fuera de un tamaño función llamada. Lleva sin argumentos. Yo no tengo que molestar con la palabra, nula en PHP. Simplemente voy a tamaño volver. Y como un aparte, PHP tiene este detalle minorly molesto, donde si algo es global, hay que decirle a la función en la que usted está utilizando que, bueno, esto es una variable global. Por lo tanto, menor la estupidez, pero hay que hacerlo, no obstante. ¿Qué pasa con la carga? Voy a poner en práctica una carga función llamada que lleva en el nombre de un diccionario, al igual que en el problema de establecer cinco. Y antes de continuar, cuenta de que yo no tengo estado escribiendo bastante las mismas cosas. ¿Qué es obviamente diferente en PHP sobre cómo se declara una función frente a C? Sí. AUDIENCIA: [inaudible] ALTAVOZ 1: Ningún tipo de devolución. Y, de hecho, ese es el caso, PHP en la medida en que está vagamente escrito, También es un poco descuidado en ese sentido. No se especifica como el programador lo que devuelve esta función. Usted tendría que mirar realmente en el código para darse cuenta de eso. O leer los comentarios o la documentación. Así ventajas y desventajas de este tipo de decisiones. Pero yo tengo que decir la palabra clave, función. Y cuando aprendemos JavaScript en un par de semanas vamos a ver lo mismo de nuevo, pero es la misma idea. El nombre de la función, su argumento o argumentos o falta de ella, y ahora aquí es la implementación. Así que me voy a cortar algunas esquinas solo ser dramático para un momento. Pero yo voy a seguir adelante y decir esto. Así es como me puedo cargar un archivo en una matriz. Hay una función en PHP llamado archivo. Se le pasa el nombre de un archivo. Se le da vuelta una matriz, en el interior de los cuales es cada línea del archivo. A partir de cero, uno, en un máximo a n menos 1 líneas. Eso es todo, ¿verdad? No hay f lectura. No hay f get s. No hay ciento s. No hay dolores de cabeza. No hay feof. Todas esas cosas con las que usted ha estado luchando tal vez, con p fijó cuatro y cinco, se va. Así que acabo de leer esas líneas en el archivo, y luego ¿sabes qué? Si quiero para repetir esas palabras, Que puedo hacer, para cada uno de las líneas como la línea. Recuerda que esto era una especie de inteligente manera de iterar sobre una matriz, índice por el índice, y en cada llamada iteración la línea actual, la línea de signo de dólar. Y aquí me voy a ir a dicen mesa, soporte, línea, consigue cierto. En otras palabras, así es como yo insertar en mi tabla hash en PHP. Digo mesa signo del dólar, lo que es mi matriz asociativa que era vacío por la línea de código por encima. Entonces índice en ella no, utilizando un número, pero, literalmente, utilizando el palabra clave que me importa. Tal vez sea manzana o pera o plátano o lo que sea, sino específicamente estoy indexación en ella me gusta Me propuse antes. Tomo el nombre de mi matriz asociativa, y luego me usar fin de la cita cita en el corchetes con una cadena, en vez de un número real. Y así, eso es todo. La función de carga está hecho. Una vez que repite en bucle, he puesto todo en la tabla hash. Ahora pequeño descargo de responsabilidad, hay una par de cosas que necesito para arreglar. Y la versión voy a publicar en línea tendrá todos los matices, pero es más que nada va a ser un poco comprobación de errores y algunos ajustes menores. Pero eso es de hecho la esencia de la misma. Si yo ahora quiero poner en práctica la función llamada comprobar, que espera un palabra como su argumento, ¿Cómo podría yo ir haciendo eso? Bueno, estoy simplemente va a decir, si interior de mi mesa, en lugar de palabras, Si se ha establecido. Así que si hay es-- En realidad, ¿sabes qué? Voy a hacerlo en un poco de pseudocódigo. Pero la idea es la misma. Si eso es igual a true, devolverá true. Correcto. Else-- puedes tipo de ver dónde esto se going-- volver falsa. Hecho. Comprobar que se hace. Bastante bonito, ¿verdad? Y así, lo que es esto realmente ir a parar? Y esto también, corté algunos rincones. Busque en la versión online para todos los matices leves. Pero esa es la esencia de la misma. Índice en su matriz asociativa, alias Tabla hash, ver si hay un valor allí, si se establece en true, y si es así, return true. Para ello hemos whittled abajo toda la complejidad. Así especie de alucinante, ¿verdad? No me molestaré terminar con descarga, porque en fact-- oh, ¿sabes qué? Sí, vamos a terminar con descarga. Descargue en una tabla hash puede tener un aspecto al igual que la función de descarga, volver. OK, así que es de descarga. Porque no hay nada para descargar, ¿verdad? No hay malloc. Yo no pedí explícitamente la sistema operativo para cualquier cosa. Acabo de empezar el uso de variables. Y así, esto también es una manifestación de características de lenguajes de alto nivel. Así que de nuevo, la mayor parte de este término hemos estado tratando aquí con C. súper bajo nivel. Usted puede ver la memoria del ordenador. Puede tocar cualquier cosa que quiere en la memoria RAM de su ordenador, Para bien o para mal. Hasta aquí, vamos a renunciar a ese poder. Pero, Dios mío, mira cómo mucho menos código que escribí. De hecho si no estuviera hablando y hablando sobre mi escritura, nos habrían hecho con este ejemplo hace cinco minutos. Entonces, ¿cuál es el precio que se paga? Bueno, vamos a echar un vistazo. Echemos un vistazo. Voy a seguir adelante y ejecutar CS50. Déjame primero ir a ejemplos de hoy donde Tengo el directorio de textos como antes. Voy a correr la solución que viene con un problema de cinco set llamado corrector ortográfico, que está en la cuenta del CS50. Y yo voy a correr en algo grande como la Biblia King James, sólo para que realmente nos ponemos el soluciones de personal a la prueba. Ahora a veces el Internet es una poco más lento, un poco más rápido, podría tomar un tiempo para desplazarse. Pero tuvieron que pasar un total de .56 segundos para revisar la ortografía de la King James Biblia usando la solución personal. Así que muy bien. El tuyo puede ser mucho más lento, y eso es totalmente bien. Pero es correcto aquí. Así que esa es la solución personal. Si entro y limpiar la versión PHP. Y yo voy a hacer un poco como hornear espectáculo cosa. Vamos a tomar el código que escribí antes, por lo que es perfectamente correcto. Dado que el código que escribí no va para ser perfectamente correcta en este momento. Pero si se me acaba la versión de PHP, ¿qué tengo que renunciar a día de hoy? Me tomó cinco minutos para aplicar p fijó cinco, yo reclamo. ¿Qué precio he pagado? Sí. AUDIENCIA: velocidad. ALTAVOZ 1: velocidad. ¿Qué quieres decir? AUDIENCIA: Se va a tomar más tiempo. ALTAVOZ 1: De acuerdo. Vamos a ver. Se va a tomar más tiempo, no escribir, pero para ejecutarlo. Sí. Así que vamos a probar esto. Así que aquí voy a seguir adelante y hacer PHP de ortografía, y porque el archivo de llamada ortografía. Así que no estoy corriendo el diccionario, recuerdo, Estoy corriendo el programa llamado abecedario. Voy a pasar en el mismo archivo, el rey Jaime el quinto. Está volando. Esto podría ser sólo la velocidad de Internet, así que no leer demasiado en eso. Pero se siente ya seguro. 1,26 segundos. Ahora que es todavía bastante maldita rápido, ¿verdad? Y la única razón por la que se sentía como más como tres, o cuatro, o cinco segundo, eso es sólo porque Internet estaba siendo lento. El tiempo en la computadora pasado fue 1,26 segundo, frente creo que 0,56. Así más de dos veces más lento. Ahora que es todavía bastante maldito rápido, pero es una manifestación de, en efecto, que el precio exacto. Debido a que estamos interpretando en el código línea por línea, y que el programa PHP está leyendo mi código de arriba a abajo, de izquierda a derecha, que tiene que ver más pensamiento. Tiene que tipo de convertir dentro de sí mismo a la máquina correspondiente código sobre la marcha, por así decirlo, a pesar de que la mecánica son un poco diferentes. En lugar de simplemente alimentar a la Intel CPU los ceros y unos primas que entiende de forma nativa. Así que absolutamente, sin duda, hemos pagado un precio. Y el código escrito en un lenguaje como PHP tiende a ser más lento. Pero, Dios mío. Así que ahora cuando me ola comprobar mi archivo, me paso un extra de 0,7 más o menos 20 segundos vs horas para implementar un rápido corrector ortográfico, ¿verdad? Es una especie de una solución de compromiso. Y si usted está empezando p establecer cinco, podría no ser de 20 horas. Podría ser mucho menos que eso. Pero es una solución de compromiso, de verdad. Y si se está ejecutando código en muy grande conjuntos de datos, o en el hardware aún más antigua, ese tipo de diferencias sin duda puede sumar. Para cualquier duda hasta el momento? Sí. AUDIENCIA: [inaudible] ALTAVOZ 1: Lo sentimos, se puede usted dice que una vez más? AUDIENCIA: [inaudible] ALTAVOZ 1: Usted está renunciando a tiempo. Bueno, así que sí. Ahorre tiempo no tener que compilarlo, si eso es lo que estás pidiendo. Y de hecho, en el CS50, la mayoría de los programas, a pesar de que podría tomar un tiempo escribir, son relativamente corto. Pocas docenas, unos cientos de líneas de código, y por lo que compilan con bastante rapidez. Pero cuando empiezas escribir programas más grandes, como si estás Microsoft o eres Google y escribir realmente grandes programas en C o C ++, o similar compilado lenguas, podrían tomar muchos segundos, o incluso minutos o más a compilar millones de líneas de código. Y allí también, que diferencia se va a sumar. Y, de hecho, una vez que transición hoy en día, el mismo día hoy, para la programación web usando PHP, eres va a encontrar tantas cosas más agradable escribir código cuando no tienes que hacer estos estúpidos medidas como el cambio a su terminal ventana, tipo de maquillaje hola, re ejecutarlo, recargar la ventana. Sólo tantos estúpidos pasos mecánicos que acaba de obtener en la forma de hacer el interesante, el trabajo divertido. Y de hecho nos desperdiciarlo con PHP. Y podemos interactuar con ello más rápidamente. Sí. AUDIENCIA: [inaudible] ALTAVOZ 1: Claro. ¿Puedo aclarar lo que significa ser interpretado? Al compilar un idioma como C, baja como hemos dicho a la máquina código, ceros y unos. Y Intel decidió hace años que ciertos patrones de ceros y unos representar adición o sustracción, o de impresión, o de otras operaciones básicas. En el mundo de un lenguaje interpretado como PHP o JavaScript o Python, o Ruby, o manojos de otros, en cambio alguien ha escrito un interpreter-- en este caso, también se llama PHP, idéntica a la nombre de la language-- que, esencialmente, tiene un gran lazo en él que itera sobre la totalidad de las líneas del código de que me alimento como entrada, como hola dot PHP, o un punto diccionario PHP. Y entonces usted puede pensar en su gran bucle como tener un montón de condiciones. Y esas condiciones suele decir, si el humana ha escrito la palabra clave para, empezar a hacer su código de nuevo y otra vez. O si el humano tiene por escrito la línea de código, Si, solamente ejecutar su siguiente línea condicional. Así que es realmente como interpretar en un sentido humano, la línea por línea, y eso lleva tiempo. Se necesita por encima. Y eso es un precio: el buena pregunta-- pagamos. Así que vamos a hacer otra demostración eso es un poco más dramático. No, yo diría, un estadio de béisbol en este un 90% de probabilidad de fallar horriblemente, pero usted se sorprenderá con 10% de probabilidad. Así que cada año intentamos para hacer esto, en que podamos tratar de escribir un programa que pasa por problema ajustado a cero, para el que tienes presentado sus números de teléfono y un gran cantidad de otra información demográfica, y programación le enviaremos un mensaje de texto. Y entonces el teléfono de todo el mundo empieza a sonar o vibrar, y es simplemente increíble, porque así, mira lo que las computadoras pueden hacer. Esto rara vez funciona correctamente al parecer, en gran parte, porque normalmente consigo la lista negra por Gmail o algún otro servicio para realmente tratando de hacer esto en la escala. Pero lo curioso es demasiado, ya que no tener a todos aquí hoy, hecho de la diversión la última vez que intentado esto hace dos años, Creo que escribí un programa que se sentó en una iteración de bucle sobre todos los alumnos de la clase, y cada uno de ellos un mensaje de texto, y decía algo así como: ¿por qué no estás en la conferencia? El amor, CS50 bot. No tienes ni idea de cuántos de disculpa y correos electrónicos tipo de dolorosas He recibido en respuesta de la n menos 100 personas que no estaban aquí Ese día. Y aún más divertido, historia-- más vergonzoso ya sabes, vamos a ponerlo por ahí. Ya está en el vídeo hace unos años. Así que pronto me veréis escribir un bucle, en el que que es muy fácil escribir un bug en que para el bucle, de manera que la primera vez a través del bucle, enviar un mensaje de texto. La segunda vez a través del bucle I debería haber enviado un mensaje más texto, y luego un texto más mensaje, y uno más. Pero resulta que si comete un error tipográfico en la programación, a veces puede escribir programas que envían un solo mensaje de texto, a continuación, dos mensajes de texto, luego tres mensajes de texto a todo el mundo que ya ha recibido un mensaje de texto. Y como usted sabe, hacer algo, más algo, además de algo, más algo, es gran O de un lote de mensajes de texto, o n al cuadrado, oa $ 0.10 por mensaje de texto, $ 20.000. Afortunadamente me golpeó Control-C antes de que pasó, pero yo debo al menos un de sus predecesores $ 20 para el 200 algunos mensajes de texto impares que, no sólo fue a su teléfono, pero También era como un teléfono plegable más viejo por lo que le gusta empujado fuera de su memoria cada otro texto personal mensaje de que en realidad había conseguido. Así que tenemos un objetivo hoy en día, no se debe hacer eso. Convertir Tal vez el modo avión. Correcto. Así que vamos a ir en un programa aquí callled-- que voy a llamar el texto del punto PHP. Y de antemano, tengo dos archivos aqui. Hice un archivo para el personal justo, eso tiene todos los datos del personal, todos los nombres desde la web del curso. Y luego, por ahora acabo de poner algunos números falsos 555-1212. Así que estos no serían en realidad ir a ninguna parte. Pero note el interior de este archivo CSV, que nos referimos brevemente antes en el contexto de archivo IO. ¿Qué es un archivo CSV? Separados por comas variables. Y esto es algo así como un base de datos ligera, si se quiere. No es algo de tipo de cuatro columnas en este archivo, y no irregular, pero las comas esencialmente representan columnas en el archivo. La primera columna es el TF o el nombre de CA. La segunda columna es su apellido. Tercera columna es su número de teléfono. Y cuarta columna parecer es-- cuarta columna es aparentemente lo que? OK, así que es su portador. Así Verizon o Sprint, o lo que no. Y si me equivoqué antes, CSV. Valores separados por comas CSV es aquí. Entonces, ¿qué puedo hacer con esto? Bueno, esto es sólo un archivo de texto grande, y que es un poco largo, ¿no? ¿Te gusta esta va a ser un poco molesto. Y resulta que, sin embargo, que si yo que desee enviar un mensaje de texto, vamos a Alex decir aquí. Déjame ir a mi navegador y salir del modo de pantalla completa para que yo pueda alternar. Resulta que, vamos a ver, si me voy en aquí, e inicie sesión en Gmail, de acuerdo. No mires a esta parte. Sólo puedo ver. por supuesto, el livestream puede Todavía veo lo que estoy haciendo. Correcto. Así que aquí es sólo con Gmail El relato de Juan Harvard. Así que si quiero enviar un mensaje de texto a Alex, Yo puedo componer, por supuesto, un mensaje. Y resulta, y no tengo probado con Alex antes de que aquí, así que usted puede añadir un cierto dominio nombrar a los números de teléfono de las personas, porque existe en el mundo cosas llaman SMS a correo electrónico pasarelas. Lo que es una forma elegante de decir todo los que tienen teléfonos móviles que tienen números de teléfono, por supuesto, probablemente es para su compañía, un determinado sufijo como en Vtext.com de mensaje de texto de Verizon punto com, que puede añadir a su propio número de teléfono personal, y luego usted o amigos, o sus padres pueden usted texto en esa dirección particular. Y Verizon cuenta con un servidor, un correo electrónico servidor, que al recibir este mensaje, mira a la parte numérica y después utiliza lo que sea especial magia industria que tienen que realmente enviarlo a lo largo de las ondas de radio a su celda en particular teléfono. Ahora bien, esto es bueno porque no lo hago realmente saben cómo enviar un mensaje de texto o escribir código sin embargo, para mi teléfono móvil, y es posible hacer exactamente eso para un proyecto final, pero por ahora todo Que tengo es mi portátil aquí. Así que quiero para repetir que CSV archivo, línea, por línea, por línea, por línea, agarrar cada uno de los números de teléfono del personal, y de su portador y programáticamente, concatenar, es decir, conectar el teléfono número con el nombre de dominio adecuado y luego enviar un correo electrónico. Así que eso es un montón de pasos. Y buena suerte haciendo que en C. Es una pesadilla de una situación para abrir un archivo, para leerlo línea, por línea, por línea, como usted están viendo, o pronto puede ver con el problema de establecer cinco, si no problema fijó cuatro, y luego para concatenar dinámicamente dos cuerdas juntas, ya que en C, tomar dos cadenas y combinarlos, lo que hacer mínimamente necesita hacer más probable? Usted necesita declarar más memoria, ¿no? Y pedir, malloc, puedo tener más memoria? Así que puedo poner la mitad de esta aquí, la mitad de esto aquí. Es tan muchos pasos. Y en ese momento que has perdido interés en la pequeña demostración estúpida donde usted hace pitido teléfono de todos. Vamos a hacer este tipo de PHP estilo, por lo que acabamos de empezar a utilizar más de ese fregadero de la cocina. Y las ideas son fundamentalmente el mismo, pero no tenemos que preocuparnos demasiado mucho de ese nivel inferior. Así que vamos a ver cómo me podría ir haciendo esto. Y de la misma manera que no lo hago repetir los errores del pasado, He escrito algunas notas para mí aquí. Y vamos a ver si nos puede caminar a través de algunos de los pasos fundamentales, y luego por el amor de vez vamos a quizás cortar algunas esquinas en el extremo. Voy a seguir adelante y hacerlo abierta PHP soporte para iniciar este archivo. Y yo voy a seguir adelante y hacer esto. Identificador de archivo, como usted pronto veremos, en realidad llama a una función llamada f abierta. Y recuerda que esto abre un archivo. Y la cita, fin de la cita, r significa qué, otra vez? Sólo tiene que abrir para lectura. Ahora en conjunto p para, usted hizo esto. Y manejar podría ser cualquier cosa, fu, bar, bas, cualquier nombre de variable. Pero en general, un ordenador científico llamaría un archivo abierto, que le da un identificador de archivo, algo que aferrarse por así decirlo. Yo sólo voy a hacer alguna comprobación de errores. Así que si el mango es falsa, al igual que en C, que voy a hacer algo así, no pudo abrir el archivo, la barra invertida n. Y entonces yo sólo voy seguir adelante y salir. Y resulta que, en PHP, No estoy dentro de una función. No hay función principal aquí. Así que yo no regreso, per se. Yo salgo. Lo cual es esencialmente la misma cosa. Y estoy saliendo con una sola y probablemente. Uno sólo significa un error de algún tipo. Es distinto de cero, por lo que es un error. Muy bien, por lo que si estoy aquí ahora en mi programa he abierto el archivo. Voy a seguir adelante y declarar una matriz llamada direcciones, y en C que tendría que conocer la tamaño de la matriz de antemano, ¿no? O yo tendría que declararlo es un puntero, y luego usar malloc. Y entonces cada vez que leo a través de otra fila en el archivo, Voy a tener que malloc más memoria, malloc más memoria. Eso es un dolor en el cuello. Y por suerte, PHP y Ruby, y Python y JavaScript, que crecerán sus matrices de forma automática. No más malloc. No más la gestión de memoria. El ordenador se encarga de eso. Pero el precio que usted paga. Es un poco más lento. Y para un programa como este no vamos a notar. Vamos a enviar 100 mensajes de texto. Por ejemplo, no va a sentir. En realidad, sólo empieza a importar el idioma de su elección cuando sus datos o sus programas llegar muy, muy importante, como será el caso más aún con nuestras cosas basado en la web. Pero por ahora vamos a seguir adelante. Si bien resulta que hay una función en C llamado f llegar CSV. Archivo llegar CSV, que lleva un presentar mango como su argumento, y procede a continuación, fila, por fila, por fila, para leer en una fila. Así que sólo lee una línea del texto del archivo. Pero lo bueno de esta función, que no me acaba de entregar una línea de texto. Se ve por esas comas, y analiza la línea. Y para analizar la línea significa dividir en ciertos valores en este contexto. En otras palabras, el signo de dólar fila es una variable que es me va a dar un montón de índices. Este va a ser el primera columna en mi CSV. Este va a ser el segundo columna, esto va a ser el tercero, y esto va a ser el cuarto. Debido a que el recuerdo y Excel la no cooperar la última vez que hicimos esto, pero si puedo descargar el personal salpican CSV. Vaya, no cambiar el nombre. Si descargo dot personal CSV, y tratar de abrirlo, Ya he registered-- oh no actualizar Excel desde la última vez. Verás que en el punto personal CSV, tengo cuatro columnas. Así que cuando leí en el primera fila para Abby aquí, signo de dólar fila 0 es Abby, signo de dólar fila es Lyons, signo de dólar fila dos es su número, y luego portador de su teléfono. Así que eso es todo. Y eso es bueno, porque yo no tienen que averiguar ahora donde todas esas comas realmente son. Así que voy a seguir adelante y ello, teniendo en cuenta que la definición, Voy a decir que su nombre es en soporte de fila cero, como se había prometido. Y yo voy a grab-- y En realidad, ¿sabes qué? Yo no voy a preocuparse su nombre, en este caso. Voy a mantenerlo simple. Yo voy a hacer su número es en la fila soporte de dos, creo. Y su compañía estaba en dónde? Fila tres, uno más. Así que nada nuevo allí. Es sólo cero indexación en una matriz. Y ahora, voy a hacer lo siguiente. Si el transportista es igual a igual a AT & T- Yo sólo voy a tener una loop-- Quiero crear un correo electrónico dirección que se parece a esto. Va a ser 617-555-1212 a, ¿qué es, text.ATT.net, es lo que yo quiero hacer. Entonces, ¿cómo lo hago? Voy a hacer lo siguiente. Su dirección va a ser su número, y ahora, déjame ir adelante y hacer esto. Esta es una sintaxis funky. Que podía hacer el porcentaje s truco, pero yo sólo puedo hacer realidad esto. Así que esto es una cosa de PHP, pero vamos a considerar lo que estoy haciendo. Dólares firman dirección en la izquierda, justo una variable. Dame una variable. Yo no tengo que especificar el tipo. PHP entenderlo. Al lado derecho, ¿cuál es el tipo de datos de toda esa cosa en ¿el lado derecho? Parece que una cadena, porque hay doble cita en el extremo izquierdo y el extremo derecho. Ahora hay una nueva sintaxis cobarde aquí. Hay las llaves, y el número de la muestra de dólar. Pero tomar una conjetura cuál sea la sintaxis Probablemente diciendo PHP para hacer por mí? Sí. Sólo tiene que insertar el valor allí. Así que no hay ciento s. Podríamos utilizar la impresión f, o s print f o algo parecido, pero PHP y una gran cantidad de lenguajes de alto nivel, vas a ver que se podía hacer lo mismo funcionalmente, tal vez seis maneras diferentes. Y por lo que empieza a ser una cuestión de diseño o estilo. Así que esto es sólo una manera de mirar críptica de decir, me da una dirección de correo electrónico, pero el plug-in en el número entre estas llaves. Y las llaves no lo hará terminar en la dirección final. Ahora podemos pasar por alto algunos de estas líneas para el bien de momento. Así que si un vehículo es igual iguales verHorizon-- gritos, Verizon-- Quiero hacer algo muy similar, donde la dirección se pone, Lo dijeron ellos, el número al text.ATT.net. Y entonces yo puedo hacer el mismo tipo de cosa para el resto de los portadores. Pero sólo voy a hacer punto, punto, punto por ahora. Y ahora supongamos que Quiero añadir variedad, empujar. Quiero añadir a la matriz, denominada direcciones. Esta dirección, así es como se añadir algo a un array en PHP. Usted no tiene que hacer malloc. Usted no tiene que cambiar el tamaño de la matriz. Usted acaba de decir matriz, empujar. ¿Qué es lo que quieres push-- lo array Qué quiere empujar algo sobre? Direcciones. Lo que usted quiere empujar en direcciones? Dirección. Y de hecho, si realmente quiere ser inteligente, un poco de azúcar sintáctica para esto, por así decirlo, que sólo significa que ¿cómo se puede hacer esto en la manera más bonita, sería para hacer esto. Eso también tiene el efecto de crecimiento la matriz de direcciones por el tamaño de uno, y luego de que plop adicional dirección de correo electrónico en el mismo. Sí. AUDIENCIA: [inaudible] ALTAVOZ 1: Un error tipográfico en la otra cosa si: oh, portadora. Eso está bien. Tampoco le va a gustar mi falta de poner en práctica parte de este programa mas tarde. Pero gracias por la captura. Un error más. Gracias. Queremos que esto sea Vtext.com. Sí. Correcto. ¿A dónde nos lleva esto? Hemos escrito el código para abrir el archivo. Tenemos un bucle para iterar sobre las filas en el archivo. Tenemos código que añade a mi array, uno a la vez, la correctamente dirección de correo electrónico con formato. Así que todo lo que realmente queda es enviar un correo electrónico a cada una de estas personas. Así que me he ido por delante y mí mismo preparado como sigue. Lo que voy a hacer aquí es-- y vamos seguir adelante y saltar a algún código real, que se parece a esto. Así que aquí es la pre-cocido versión que escribí antes. Y noto que terminé la implementación de Sprint. Terminé la implementación de T-Mobile. Terminé la implementación de Virgin Mobile. Y voy a pedir disculpas por adelantado. Hay algunas compañías que algunos estudiantes de la clase tienen que no me molesté enumerando en el caso de condiciones aquí. Así que no todos los textos se apagarán. Pero vamos a ver qué más tengo que hacer. Cierro el archivo, como en la p en cuatro sets. Y esta es una nueva sintaxis. Y vamos a ver un poco poco de esto con el tiempo, especialmente con p establecido siete y ocho. Pero esto es sintaxis para crear un tipo especial de estructura. Resulta que hay una biblioteca que viene con PHP, denominado mailer PHP. Su propósito en la vida es enviar mensajes de correo electrónico mediante programación. Es código de otra persona escribió que hace que sea más fácil para nosotros enviaremos correos electrónicos, así que no tenemos que mantener yendo y viniendo a Gmail, y pegar en direcciones de correo electrónico de las personas. Hay un montón de líneas aquí que honestamente, sólo tipo de copiado y pegado de la documentación. Y de hecho, si usted es curioso, dejé todo de las direcciones URL de la documentación en el código que publicaremos más tarde. Y notar que entre las cosas que estoy haciendo es que estoy contando esta biblioteca, utilizar el servidor de Gmail, ¿verdad? SMTP hablamos brevemente sobre cuándo estaban en Yale sobre estar correo simple protocolo de transferencia. Es el protocolo que servidores usados ​​para enviar correo electrónico, Eso es-- y Gmail tiene uno de esos. Un puerto, este es el número de puerto TCP. Está bien si no han visto 587 antes. Sólo tienes que saber que a partir de la documentación. Aquí está mi nombre de usuario. Voy a utilizar el bot CF50. Y en un momento, yo sólo voy a escriba la contraseña actual del robot. Y luego aquí abajo, observe lo que queda. Me puse mi de la dirección para ser bot en CS50.net. Creo que no se arrepentirá de envío de un mensaje de texto a 800 personas que dice, te echo de menos, bot amor CS50, tal vez para los que no pudieron hacerlo hoy. Y luego, en la línea 76, ¿qué hago? Este tipo de miradas como C. Así que para i es igual a 0, n equals-- ahora contar es nuevo. Resulta que si usted desea conseguir el número de cosas en una matriz, usted no tiene que recordar más. Usted sólo puede hacer una función llamada recuento, y le dirá cuántos direcciones están en esa matriz. Y luego voy a añadir la dirección al correo electrónico. Y sé esto desde utilizando la documentación. Hay una función de dirección de complemento. Y ahora cuenta no es una pieza de la sintaxis. Hemos visto esto antes en C. similares en espíritu. Usted puede pensar en el signo de dólar enviar por correo como una variable, que se encuentra. Pero es una estructura interior de que no son sólo las propiedades, las variables si se quiere. Pero resulta que en PHP, que es una programación orientada a objetos lenguaje, como Java, si usted tomó APCS. Electrónico Signo de dólar, si quieres a-- sino que también tiene funciones en el interior de la misma, o métodos. Así que esto es decir que anuncio publicitario especial PHP biblioteca, si tengo una variable del mismo, si quiero llamar a una función que viene con esa biblioteca, para los propósitos de la actualidad, Sólo sepan que usted usa la notación de flecha. No hay notación de punto. Es sólo la flecha. Pero eso no es un puntero. Es sólo tomó prestado de la sintaxis de C. Así que llame a agregar la dirección interior de objeto o variable de esta biblioteca. Correcto. Esta es la línea mágica. Así es como me envío un correo electrónico. Ese es el equivalente de la apertura Gmail, escribiéndola, y golpear a enviar. Pero va a enviar una vez correo electrónico a esta dirección, con este cuerpo, Del bot CS50. Y ahora la línea clave. Esta línea estaba ausente en 2011 como cuando pienso en el pasado he intentado esto. Esa línea allí, por supuesto, borra las direcciones. Así que, lógicamente, si no desactive la dirección después de cada iteración, el primero correo electrónico o mensaje de texto va a Alice, el segundo va a Alice y Bob, el tercero va a Alice y Bob y Charlie, por lo tanto, el error muy caro Hice ese año. Así que vamos a ver. Hay alguna pregunta antes de enviarle todo un texto mensaje con el 10 por ciento de probabilidad? ¿Alguna pregunta? Correcto. Vamos a que me vaya de aquí y cambio la contraseña para lo que debe trabajar, probablemente obtendrá la lista negra de Gmail. Así que puede ser que no todos ir a cabo, ya que, probablemente, no nos gusta el envío de mensajes de correo electrónico 800 en un bucle for todos a la vez. Dado que no es comportamiento especialmente humano. Oh, yo voy a cambiar una cosa más. Hasta en la parte superior, que voy a sent-- cambiar el archivo a estudiantes salpican CSV. Y no voy a abrir esto, pero esto es un archivo CSV idéntico no 100 funcionarios, pero 800 estudiantes, simplemente de Harvard, Yale, porque tiene receso octubre esta semana. Y parece que una especie de cosa idiota hacer al texto todos ellos de por qué no están en clase el día de fiesta. Eso está bien. A tan sólo los estudiantes de Harvard hoy en el interior de ese archivo. Y ahora vamos a volver a mi ventana de terminal. Estoy un poco nervioso. Aceptar lo que ahora voy a entrar en el directorio y texto PHP PHP punto. ¿Qué tal un valiente voluntario? Así que no quiero esto en mí. OK, vamos para arriba. ¿Cómo te llamas? MAYA: Maya. ALTAVOZ 1: Maya. Vamos arriba, Maya. Correcto. Vamos a ver si esto funciona. Puse mi propia dirección de correo electrónico en el file-- mi propio número de teléfono en el archivo, por lo que se espera que voy a conseguir uno también. Encantada de conocerte. MAYA: De la misma manera. ALTAVOZ 1: Así que todo lo que tienes que hacer es pulse Enter para enviar 800 mensajes de texto, si no me equivoco. Agradable. Podría tomar un tiempo, estadísticamente, hasta que lleguemos a un correo electrónico address-- un mensaje de texto que es en la sala en este momento. Vamos a descansar y ver. AUDIENCIA: [SILBANTE] ALTAVOZ 1: Oh, sí. AUDIENCIA: Oh, te pillé. ALTAVOZ 1: Para bucles trate: este no es lento debido a PHP. Este es lento debido a Gmail nos está estrangulando y no dejarnos enviaremos más al igual que un correo electrónico por segundo. ¿Cualquier cosa? Esto era una cosa difícil para mí prueba en casa con sólo yo y mi único teléfono, así. ¿Es que se espera desde el bot? ¿Sí? ¿No? Decir que sí. ¿No? Es de un amigo? Awkward. OK. Bastante seguro de que funciona sin embargo. UH oh. Ellos black-- oh, espera un minuto. Oh, ¿sabes qué? Un momento por favor. Sólo Maya y yo-- Mia, ¿verdad? MAYA: Maya. ALTAVOZ 1: Maya, van a sé lo que hice mal aquí. Oh, espera un minuto. Creo que acabo de enviar 100 mensajes de texto a 555-1212. Colocarse. No puedo ganar cualquier año. OK. Maya? Fijar que en post-producción. ¡Maldita sea! Después de la dirección. OK, una pausa. Apenado. Es doloroso cada año. Ok, un momento. Esto es bueno. Estoy en vez iba a hacer esto. Direcciones de impresión. OK, una pausa. Direcciones de impresión, soporte i. Sí, me gusta eso. Sign-- OK Dólar voy a explicar lo que soy haciendo en un momento, después me he encontrado esto. Cada año. Está bien, aquí vamos. Tengo sólo-- y yo no quiero para mostrar el número de teléfono de todos, pero Maya puede confirmar con un gesto de la cabeza, que ve todo el mundo es número de teléfono en la clase que voy a copiar en un programa llamado Gmail. Y si en Gmail, ¿qué queremos decir? Te extraño. Amor-- eso no es de mí. Ni siquiera he golpeado enviar todavía. Así que vamos a seguir adelante y hacer esto, si me puede acercar la imagen. OK. Así que estoy utilizando un programa llamado Gmail ahora. Si Maya, desea haga clic en el botón Enviar, vamos a simular lo que código debería haber hecho. ¿Cualquier cosa? [BIP] AUDIENCIA: Sí. ALTAVOZ 1: ¿Sí? Salvación? AUDIENCIA: Sí. ALTAVOZ 1: Te echo de menos. Y yo voy a enviar el resto. Envié medio porque yo no creo Gmail dejaría que los atraviesan. Así que recuerda, hoy es el día que has aprendido que puedo usar Gmail. Eso fue horrible. Un gran aplauso a Maya. Gracias. Muy bien, así. qué [BIP] Nos dieron unos cuantos pitidos, sí? Correcto. Ahora me voy a poner 700 realmente correos electrónicos infelices espalda de sus compañeros de clase. Así, al menos, ya veremos si eso era la pena. Entonces, ¿qué salió mal? Voy a averiguar lo que salió mal después de los hechos, pero basta con ver lo fácil era hacerlo en PHP. Entonces, ¿qué podemos realmente hacer ahora que tenemos esta expresividad de PHP. Eso era-- que era horrible. Correcto. Así que eso fue lo que debería haber salido. Esto se me probando esta mañana en mi teléfono, pantalla real de mi teléfono. Pero ahora vamos a considerar por qué en realidad estamos introduciendo todas estas cosas en el primer lugar. Así que el objetivo no es escribir estos programas que están escritos en la línea de comandos, ¿verdad? Así que escribí un sencillo hola programa, escribí un pequeño programa que hace condicionales, y se utiliza una línea de lectura y así sucesivamente. Y en teoría, que acabo de escribir un programa que envía 800 mensajes de texto, más o menos 800. Y ese programa era todo Todavía correr a la línea de comandos. Y eso, por supuesto, es No la web, ¿no? El objetivo ahora es comenzar a usar lo que pretendo es un fácil de usar idioma, una más daresay lenguaje poderoso en términos de las características que vienen con él, para empezar escribir código que genera páginas web. Así que la última vez y la semana pasada, hablamos de HTTP y HTML. Y lo que es bueno de HTML es que es sólo texto puro. Y el texto es, sin duda algo que pueda imprimir literalmente llamando a la impresión f función o la función de impresión. Y de hecho, eso es lo que PHP es ahora va a permitir que hagamos. Así, entre los ejemplos que tener en el código fuente de hoy, Además de algunos de los códigos que puse ahí arriba hace un momento, tenemos programas como este, por ejemplo. Froshims o Freshman Intramural Sports, era en realidad uno de los primeros extracurriculars Me involucré con la de hace años. Y mi compañero y yo, con algunos otros niños en la escuela, utilizado para ejecutar el programa froshims. Me estoy poniendo mis mensajes de texto ahora. Ahora por lo que, en su día, por lo que este 1996 era más o menos, hubo un internet, pero no había proceso-- existe no fue una página web para froshims. Y por lo que si usted quería inscribirse en fútbol o voleibol o lo que sea, usted llene esta cosa llamado un trozo de papel, y que sería caminar a través de la Universidad de Harvard patio, y que sería deslícelo en la ranura de correo del supervisor, quien estaba en Wigglesworth, uno de los dormitorios. Y esto que se registraron. Y él o ella haría a continuación, redactar un correo electrónico a usted manualmente, al igual que yo acaba de hacer aquí con Maya, y luego se confirmaría como si hubiera sido registrada. Así que esto era como baja fruta colgando, por así decirlo. Era una especie de estúpido que estábamos usando papel para esto. Yo quería que seamos capaces ir sólo en un sitio web, o tienen los estudiantes de primer año van en un sitio web, registrarse en el deporte, y simplemente automatizar una gran cantidad de este material poniendo sus nombres y correos electrónicos y así sucesivamente en una base de datos. Y de hecho, la primera versión de la página web, utilizando súper feo HTML, podría haber buscado algo como esto. En realidad, fue, irónicamente, más vergonzoso guapo que esta de vuelta después. Pero he usado un lenguaje de programación. No PHP, sino más bien llamado Perl, que es una lengua más antigua, pero muy similares en espíritu. Y acabo por completo lo enseñó a mí mismo. Y me tomó un tiempo para averiguarlo, hacer muchas preguntas de amigos. Pero las ideas allí eran exactamente lo mismo. Porque lo que PHP fue realmente diseñado por no decir las cosas de línea de comandos que acabamos de jugar con, pero para la programación web. Es realmente atado en su función establece en la web, de la siguiente manera. Esto es froshims. Y si quería inscribirse en este formulario, esto es bastante feo, sin duda, pero déjame ir por delante y ser un estudiante menos cómodo, y cualquiera que sea el deporte para Matthews, haga clic en Registrar. Lo que yo quiero ser capaz de hacer es enviar información de un formulario, no al servidor de Google como hicimos la última vez, por completo engaño por medio de su back-end, que desee implementar mi propio código backend. Lo que significa escritura PHP código que vive en una URL que los datos del formulario se pueden enviar. Y luego su código, escrito en PHP en un servidor, a continuación, puede responder a que la entrada del usuario. Al igual que su nombre, o el nivel de confort, o dormitorio, y luego hacer algo con él. En este caso, sólo estúpidamente impresa hacia fuera como texto, que no es tan bonita. Pero ciertamente se podría imaginar, si sabes HTML, y pronto sabrás cómo generar HTML con la impresión f, e imprimir, y funciones similares, que sin duda puede generar una página web más bonita que dice: Hey David, que ahora está registrado. Eres un menos cómodo estudiante de Matthews, ¿verdad? Usted sólo puede usar un montón de% ses, o las llaves y signo de dólar notación usé hace un momento, a generar texto que es más fácil de usar que esto. Así que vamos a echar un vistazo a este archivo. Froshim cero punto PHP tiene este aspecto. Cuando vuelvo a cargar IDE CS50, cero froshim se parece a esto. Esta es froshim cero punto PHP. Y ¿qué es lo que usted nota sobre este archivo? AUDIENCIA: [inaudible] ALTAVOZ 1: Lo siento, un poco más fuerte? AUDIENCIA: [inaudible] Todo está en HTML. Y de hecho, que es, porque lo interesante de PHP es que fue diseñado ser, para una mejor o para mal, entremezclado con código HTML. Y de hecho, a pesar de que este archivo, froshim cero punto PHP, tiene un comentario de PHP en la parte superior de ella, todo es sólo HTML. Pero por el contrario, si abro, vamos a digamos, regístrese cero punto PHP, que solo tiene un gran comentario en la parte superior. Esto también se ve casi en su totalidad como HTML, excepto por qué? Línea, lo que, 21 se ve un poco raro. Pero noto que estoy entrar en el modo PHP con el soporte abierto signo de interrogación PHP. Entonces tengo algunas cosas. Y luego, al final de esa línea Casi tengo, Signo de interrogación PHP. Y esto es lo que quiero decir con entremezclados. Usted puede escribir HTML que acaba de quiere que el servidor para escupir. Pero si quieres hacer algo partway dinámico a través de la página, como insertar mi nombre o dormitorio o nivel de comodidad, Puedo utilizar una función como la impresión r, que es imprimir recursivo, que sólo significa imprimir esta variable, formatearlo como quieras. En realidad no es para propósitos humanos, es sólo con fines de diagnóstico o de depuración. Así que esa es la forma en que lo hice. Si en cambio voy froshims dos puntos PHP, cuenta de que la acción de esta forma no está registrado cero punto PHP como la old-- la anterior era en realidad. Pero ha registrado dos puntos PHP. Así que vamos a ver cómo éste se comporta un poco diferente. Si entro en la versión dos. Si aquí, si me registro como David, menos cómoda, desde el dormitorio de Mathews, registrarse. Así que esta vez, dijo, que se registran, en realidad no. Vamos a ver lo que hice aquí. Si miro registro dos puntos PHP, esto tiene un poco más de código PHP. Es un poco más limpio, aunque Todavía se ajusta un poco largo en esta línea. Nótese aquí. Imprimo mi etiqueta HTML, mi etiqueta de la cabeza, mi etiqueta del título, la cabeza, el cuerpo. Y entonces me pongo a decir cosas como entrar en el modo PHP. Y para que la etiqueta, soporte abierto PHP-- signo de interrogación PHP dice, bueno, servidor, execute-- interpretar las siguientes cosas como PHP hasta que vea la etiqueta final. Y a pesar de que usted puede no saber ninguna otra PHP de lo que has visto hasta ahora, puedes tipo de lectura bastante intuitiva. Si el nombre está vacío, o la comodidad es vacío, o dormitorio está vacía, ¿qué hago? ¿Qué le digo al usuario? Usted debe proporcionar su nombre, comodidad y dormitorio, y así sucesivamente. Si no, digo que eres registrado, así no realmente. Y yo no digo de verdad porque no hay ninguna base de datos. No voy a hacer nada con los datos. Sólo estoy tirando a la basura con fines de demostración. Ahora me tipo de escatimado borde 22. Hay más de sintaxis allí, pero el signo de dólar subrayan post es bastante interesante. Y esto es lo que es bueno de PHP. En PHP, usted tiene lo que se llama algunas variables globales súper. Ellos son una especie de aún más importante que las variables globales. Y estos, todo en mayúsculas como tal, viene con PHP. Así que si usted tiene un servidor que tiene un servidor web instalado, como Apache, y de instalar el idioma soporte para PHP, de repente usted puede empezar a utilizar estos súper variables globales en el código. Y lo que es bueno de PHP es que si sólo escribir un archivo que termina en punto PHP, lo puso en un servidor web, y luego envía un formulario a ella a través de esa etiqueta de acción y una etiqueta de formulario, ese atributo de acción en el etiqueta de formulario, PHP y la web completamente se da cuenta de cómo agarrar todos esos pares de valores clave a cabo del URL como pregunta marca q es igual a los gatos, será encontrar la manera de q y gatos. Si envía una foto o un nombre de usuario, o una contraseña para como Facebook, PHP averiguar para usted donde todos los que los datos se. Y se acaba de entregar que una matriz asociativa llamado dólar puesto de signo de subrayado, o signo de dólar subrayan conseguir, dependiendo de si usted es utilizando GET o POST presentaciones. Y sólo te hará entrega una variable global súper, de modo que si usted desea conseguir en el nombre que el usuario presentó a través de esa red forma, que, literalmente, acaba de decir el nombre de la variable global súper, cita, fin de la cita, el nombre. Y cita, comodidad fin de la cita, y cita, dormitorio fin de la cita. Y nosotros vamos a ser capaces de hacer esto y mucho más con PHP. Y a pesar de que esto era una mirada torbellino en ello, vamos a bucear en mucho más la próxima semana. Nos introduciremos una base de datos por lo que eres en realidad va a empezar a aplicar su propio based-- e-comercio like en el tiempo sólo una semana. Así que nos vemos la próxima vez, y Espero que tengas todos los mensajes de texto. Adiós. [REPRODUCCIÓN DE MÚSICA] [PUERTA ABIERTA] ALTAVOZ 2: Hey. ALTAVOZ 3: ¿Qué pasa? ALTAVOZ 2: ¿Qué estás haciendo? ALTAVOZ 3: Trabajo en un conjunto de problemas. ALTAVOZ 2: Niza. Choca esos cinco. [HIGH FIVE] Qué trate: eh, ¿qué estás haciendo aquí? ALTAVOZ 3: Apenas colgando hacia fuera. Acabo de volver del gimnasio. Yo no podía dejar de notar cuando-alta chocó palmas, que tiene las manos muy ásperas. ¿Vas al gimnasio? ALTAVOZ 2: No. No. ALTAVOZ 3: Amigo, te ves bastante grande. ¿Qué es malo, porque todo el mundo sabe 8-ball es el hombre grande en el campus. Alta y cinco. ALTAVOZ 2: Uh, no. No, creo que se me da bien. Creo que estoy bien.