DAVID MALAN: Bienvenido de nuevo, todo el mundo. Así que ayer, como se recordará que nos centramos en estos temas aquí. Así que tuvimos cuatro topics-- general privacidad, seguridad, y la sociedad; las tecnologías de Internet; computación en la nube; y en última instancia, el desarrollo web. ¿Alguien tuvo la ancho de banda o el momento a ver un poco de John Oliver anoche? En realidad es bastante divertida, si no es un poco de miedo. Para cualquier duda sobre cualquier cosa que hicimos ayer? Las aclaraciones? Cualquier pregunta que desee realizar Seguro que tocamos hoy en alguna forma? pizarra tan limpio. Así que lo que está en el orden del día de hoy? Así que pensé que podríamos comenzamos hoy con una mirada a lo que es en general conocido como pensando-- computacional en el riesgo de simplificar demasiado, pensando como una computadora, tal vez pensar como un ingeniero, y tratando de empezar a organizar sus pensamientos o para darle un mejor sentido de lo que está involucrado en realidad al mando una computadora para hacer algo a modo de programación. Y hay que guardar el en una bonita alto nivel, prácticamente Inglés, pero trate de utilizar familiarizado ejemplos de cómo formalizar va a ir sobre la solución de problemas. Y vamos a revisar algunos CS temas, como la abstracción, que le había salido un par de veces ayer, algoritmos, y entonces la representación. Y ahí es donde vamos a empezar hoy en día en un momento. A continuación, vamos a echar un vistazo a la programación. Vamos a echar un vistazo a algunos constructos fundamentales con el que podría estar familiarizado e incluso podría encontrar bastante intuitiva. Vamos a ver, de hecho, en una programación de muestras ambiente que es muy accesible, muy juguetón, y de hecho apuntado para mayores de 12 años. Vamos a pasar unos minutos hay y luego tomar las cosas a un nivel inferior y en realidad hablar de algunas de los algoritmos y estructuras de datos, por así decirlo, que programadores suelen utilizar para resolver problemas mucho más eficientemente de lo que cabría ser capaz de prescindir de ellos por completo. A continuación, después del almuerzo, vamos a echar un vistazo en pilas de tecnología, que es justo una forma elegante de decir colecciones de tecnologías que se pudiera utilizar para resolver algún problema. Y hablaremos sobre el alfabeto Sopa de las lenguas que existen hoy-- Java y Python y C ++ y PHP y Ruby y todo tipo de otras cosas. Vamos a echar un vistazo brevemente en los patrones de diseño. Los programadores, con el tiempo, contar con metodologías adoptadas que tienden a ayudarles resolver problemas más fácilmente. Cuando se empieza a verse a sí mismo escribiendo el mismo tipo de código y otra vez, personas formalizan esas repeticiones y los nombres de atribuirles y luego usarlos y promoverlas, en última instancia. Y hablaremos un poco acerca de las estrategias móviles, como lo que significa que en realidad hacer una aplicación móvil o un sitio web para móviles. Lo haces para Android? ¿Lo haces para iOS? ¿Lo haces para ambas cosas? Y ¿cuáles son las ventajas y desventajas? Y, por último, vamos a tomar una mirada programación web, la cual es un término colectivo Realmente describir cualquier momento se escribe software que es pensado para funcionar en la web, ya sea en los teléfonos o sobremesa o portátiles. Vamos a echar un breve vistazo a bases de datos y el diseño en ella, aunque sólo sea porque casi cualquier interesante aplicación basada en web en estos días tiene algún tipo de base de datos. De lo contrario, haría acaba de ser contenido estático. Y una base de datos le permite hacer cambios en el tiempo, ya sea a sí mismo o de los usuarios. Y vamos a considerar cómo iría sobre el diseño dicha base de datos y el tipo de jerga que puedan surgir en un ingeniero de discusión en un tablero blanco cuando en realidad la implementación una aplicación por primera vez. Vamos a hablar brevemente sobre APIs, servicios útiles que se puede utilizar para estar en el los hombros de los demás, si las empresas o individuos, y resolver su propios problemas con mayor rapidez. Y luego vamos a meten quizá un poco con el lenguaje Java, un lenguaje de programación que se utiliza tanto en los navegadores de hoy en día, sino también en los servidores. Y tal vez, vamos a revisitar, el tiempo lo permite, algunas de las manos a la web que la materia hicieron ayer e integrar los dos juntos antes de levantar la sesión. Así que con que-- lo que hay es ahead-- Hay algo que falta que se le gustaría asegurarse de que insertamos y tocar en algún momento. Si se trata de venir a la mente, llevarlo hasta después de poco tiempo. Pero, ¿por qué no empezamos con una mirar en el pensamiento computacional. Y permítanme propongo pensamiento computacional es, de nuevo, tipo de la descripción de alto nivel de lo que es un científico de la computación podría hacer. Y, de hecho, vamos a empezar con tres ingredientes que podría entrar en el pensamiento computacional. Esta es sólo una forma de describirlo. Ciertamente se podría definir esto en cualquier número de maneras. Pero permítanme proponer, por el bien de hoy en día, que los problemas del mundo, todos los problemas del mundo, al ser abordados por una Informático podía ser visto como lo que vamos a entradas de llamada, que necesitará conseguir alimentado en lo que llamaremos algoritmos, que luego producen salidas. En otras palabras, la totalidad mundo de la reivindicación I de resolución de problemas puede ser destilada en estos tres ingredientes. Entonces, ¿qué quiero decir con entradas? Entradas es justo lo que eres entregado con el fin de resolver. Por ejemplo, aquí está un viejo problema escolar. Si tengo una libreta de teléfonos y aquí Quiero ver algo en ella, esta es mi entrada. Tengo 1.000 o menos las páginas de un libro de teléfono. Esta es la entrada a mi problema. Y quiero encontrar algo como Mike Smith, así que un amigo cuyo nombre y número es esperemos que en esta libreta de direcciones. Esto es antes de los días de la célula móviles, por lo que pueden no sólo la búsqueda de la misma. Así que tengo que hacerlo de edad la escuela y en realidad la búsqueda estas entradas para alguna respuesta. Y esa respuesta es sólo va que se llamará la salida. Por lo que la entrada es la guía telefónica. El algoritmo es cualquier conjunto de pasos que utilizan para encontrar Mike Smith. Y la salida es, con suerte, El teléfono de Mike Smith. Y esto, entonces sería justo representante de la mayoría de cualquier problema a la que está insumos zurdos y querer producir salidas. Así que antes de considerar el proceso de por el cual podemos resolver ese problema, Mike Smith y encontrar algo como eso, vamos a considerar el primer y last-- las entradas y salidas. Físicamente, por supuesto, la entrada de aquí es un montón de papel pegadas en forma de una libreta de teléfonos. Pero los ordenadores, ordenadores portátiles de supuesto-- y de escritorio e incluso los teléfonos estos days-- esos son dispositivos electrónicos. Y al final del día, lo que es la única entrada a un ordenador? Bueno, es algo así como este cable de alimentación aquí. Me tapo en la pared, y Me sale un flujo de electrones, lo que me permite hacer funcionar la máquina. O tal vez esos electrones son creado por medio de mi batería. Pero al final del día, eso es la única cosa que va en mi ordenador portátil. Y tanto interesante material es en última instancia, que sale, si por medio de la impresora o la pantalla o audially o similares. Así que si todo lo que tenemos como nuestro insumo fundamental a un ordenador es la electricidad, por lo que sólo electrones que entran y o fuera, y así ¿cómo podemos usar esa entrada que en realidad representan la información? En otras palabras, ¿cómo podemos llegar desde un simple flujo de electricidad a la representación real números o letras reales o imágenes reales en la pantalla o películas reales o correos electrónicos o cualquier número de ellas conceptos de nivel superior, si se quiere, que en el final del día de alguna manera tienen que ser almacenados en esta dispositivo mecánico electrónico usando sólo aquellos sencilla ingredients-- electrones que entran y salen? Por lo tanto, parecería que, en la forma más simple, la única clase de estados Tengo en mi mundo, por lo a condiciones speak-- en mi mundo-- es cualquiera Tengo electrones que fluye, la electricidad que fluye, o debo hacer no-- así sucesivamente, fuera. Y vamos a formalizar dentro y fuera, como un científico de la computación podría, con sólo 1 y 0. Vamos a describir algunos arbitraria pero el número coherente a la misma. 1 significa en, 0 significa off. O también pueden ver esto como verdadero medio de medios y falsas. También puede hacer negro y blanco o rojo y azul. Usted sólo tiene dos descriptores. Y un grupo de científicos en informática en general, sólo tiene que utilizar 0 y 1. Así que si ese es el caso, mi único alfabeto está constituido por 0 y 1., ¿cómo podría yo llegar a igualar el número 2 en un ordenador, y mucho menos el número 3 o una letra del alfabeto o una imagen o una película? ¿Cómo especie de Bootstrap nosotros mismos de este principio básico de 0 y 1. y en realidad representar algo más interesante? Bueno, vamos a poner esa pregunta en espera de un momento y considerar algo esperemos familiar, incluso si usted no ha pensado en que en ningún detalle para 10, 20, 30, 40, 50 más años. ¿Esto es lo que? ¿Cómo se pronuncia? No es una pregunta con trampa. Un número, pero ¿qué es? 1, 2, 3, o 123. Y me gustó la forma en que dijiste 1, 2, 3, porque esa es una forma de verlo. 1, 2, 3, es una secuencia de tres símbolos. Es imágenes que nos ahora tienen palabras para. Y si una especie de leerlos todos en conjunto, un ser humano típico en Inglés diría 123. Y eso es una especie de alto nivel de concepto, se siente como un número bastante grande. Pero, ¿cómo hemos llegado hasta aquí? Bueno, puede ser que sea un tiempo desde usted ha pensado en ello como esto, pero en mis tiempos, me este tipo de aprender como la columna de la 1, de los 10 columna, y la columna de la 100. Así como dice Lakisa, es 1, 2, 3, pero también es 123. Pero ¿cómo podemos obtener a partir la primera a la segunda? Bueno, lo más habitual es hacerlo en La columna de la 100, que tiene un 1. Así que eso es como decir 1 100 veces. Y a continuación, en la columna de 10, tengo 2. Así que eso es como decir 10 veces 2. En la columna de la 1, tengo 3. Así que eso es como decir 1 Tiempos 3. Y si añado estas cosas juntos, esto, por supuesto, es 100 más el 10 más 3. Y, oh, por eso me sale esto alto nivel de noción 123. Es sólo matemáticas básicas, por lo que éstos símbolos tienen pesos a ellos, si va, marcador de posición o valores de columna. Y una vez que todo lo multiplico fuera, consigo este número. Entonces, ¿cuántos de ustedes saben hablar de binary-- 0 y 1's-- como una computadora? OK, perfecto, nadie, ni ninguno de lo que cree. Pero me gustaría afirmar que En realidad ya saben esto. Sólo necesitamos una especie de ajustar nuestro modelo mental un poco. Pero el proceso es exactamente el mismo. Permítanme dejo éste hasta allí y en cambio sacar esto por un momento. En el mundo de los ordenadores, sólo tenemos de 0 y 1 de. Y así, la cosa que es va a cambiar es lo que? Bueno, en mi mundo de los humanos, la sistema decimal, diciembre 10 significado, Tengo el número de dígitos a mi disposición? 10, ¿verdad? Del 0 al 9, por supuesto. Y es por eso que tenemos la lugar de 10, y el lugar del 100. Donde viene eso? Bueno, esto es 10 elevado a la potencia de 0. Esto es 10 a la potencia de 1, 10 a la potencia de 2, y así sucesivamente. Sólo sigue multiplicando sus columnas por 10, comenzando con sólo 1 en el de la derecha aquí. Por lo que en el mundo de la ordenadores, si sólo tienen un significado bi binary-- 2-- o 0 y 1., sólo realmente necesita para cambiar la base de que las matemáticas. Así, en otras palabras, ahora sólo tendremos tienen la columna de la 1 y el-- ¿dónde está este going-- la columna de la 2, La columna de la 4, y tal vez más allá. ¿Porqué es eso? Pues bien, este es el poder 2 0-ésimo. Esta es la 2 1. Esto es 2 a la 2, y así sucesivamente. Así que, aquí, tenemos 1, de 10, 100, de 1000, de 10.000 de 100.000, de, 1 millones, y así sucesivamente, aquí tenemos 1, 2, 4, 8, 16, 32, 64. Sólo sigue multiplicando por 2, en lugar de continuar multiplicándose por 10. Así que ahora, si el peligro en el la mano es representar números utilizando solamente de 0 y 1, de vamos a considerar cómo llegar allí. Esto, por supuesto, es el patrón de 0 0 0, pero lo que el número conceptualmente representa? Bueno, 4 veces más 0 0 2 veces más 1 veces 0, vamos a añadir los juntos. 4 veces 0 es, por supuesto, 0, más 2 Tiempos 0 es, por supuesto, más el 0 0 1 veces es, por supuesto, 0. Así ah, esto representa el Número de los seres humanos saben como 0. Pues bien, ahora, vamos muy Avanzar rápidamente rápido. Si en cambio no estoy representando 0 0 0, pero vamos a hacer 1 0 1, que podría ser la forma Lakisa, antes, se acaba de pronunciar 1 0 1. Pero ahora, ¿cómo lo llevamos a la mayor nivelar el número de los seres humanos podrían saber? Entonces, ¿qué es este número? Es 5, el número que conocemos como 5. Bueno, ¿por qué? Bueno, podemos realmente una especie de caminar a través de él metódicamente 4 tiempos 1, 2 tiempos 0, 1 Tiempos 1. Añadir los juntos, por lo esto es más 4 0 1 plus. Y eso es, de hecho, 5. Por lo que está haciendo un poco tediosa ahora haciendo la aritmética y otra vez. Pero el proceso es exactamente el mismo. Lo único que tiene cambiado en nuestro mundo es que nuestros columnas son 1, 2, 4, 8, 16, y así sucesivamente, en lugar de 1, 10, 100, 1000. Y eso es sólo porque nuestro alfabeto tiene encogido de 0 a 9 a 0 a 1 solo. Así como un pequeño examen aquí, ¿cómo lo haría que representan el número 7 en binario? 0? Bueno, 0, que significa 0 0 0? Dilo otra vez, Karina. Perfecto. ¿Porqué es eso? Es efectivamente 4 más 2 más 1. Tan bueno. ¿Cómo nos representamos un poco another-- ¿qué tal el número 2? Cerca, pero al revés. Así que ¿qué es esto? Es 4 más 1, por lo que es 5 de nuevo. Así what's-- Lo siento, Karina? 0 1 0. 0 1 0 2 sería, porque, de nuevo, incluso si una especie de no salta a la vista, acaba de hacer los cálculos. 4 tiempos 0, 0, 2 veces 1 es 2, 1 veces 0 es 0. Así que este es el número que conocemos como 2. ¿Qué tal el número 8? Hm? Bueno. Así que tipo de falta otro marcador de posición. Necesitamos 1 0 0 0. Y eso es cierto de nuestra especie del sistema decimal de la vieja escuela. ¿Cómo se representa el número 1000? Bueno, parecería ser tipo de en una situación difícil, si pido que representan el número 1000, porque incluso si usted se da como 9 de estos, 9 de estos, 0 de éstos, que es el número más grande que usted tiene, que no acababa de llegar a 1.000. Así que si 1.000, sólo tiene otra posición, por lo que se puede hacer 1 0 0 0, ergo el número 1000. Así que ahora, vamos a un mapa Este tipo de discusión conceptual de nuevo a hardware, donde de nuevo, la entrada era sólo este pequeño cable de alimentación, electricidad que entra y que sale. Y así, para que eso sea asignada desde aquí de ahí, bueno, ¿qué es lo que realmente necesitamos? Bueno, se puede pensar de estar dentro de un computadora, un montón de bombillas, Si tu quieres. En realidad están llamados transistores. Y los transistores son sólo cambia que puede ser o bien encendido o apagado. Así que usted puede pensar en una transistor que está en está permitiendo que fluya la electricidad y un transistor que está fuera como detener electricidad fluya. Y en lugar de tomar sobre las luces de aquí, ¿por qué no hago este tipo del nuevo estilo de la escuela. Por lo que este podría ser un 1, una linterna siendo en adelante, sólo apenas sin embargo. Y esto podría ser un 0, y ahora es apagado. Por lo tanto el uso de este dispositivo físico, me ahora puede representar el sistema binario. Sólo necesito dos estados. No importa lo el color que es o lo que es. Lo único que importa es que tengo en un estado y otro estado fuera. Así que usar mi teléfono aquí, ¿cómo hacer yo representar el número que conocemos como 0? O dicho de forma equivalente, lo Número estoy representando ahora? 0, debido a que el dispositivo está apagado. Y si hago esto? Y ahora, ¿cómo puedo representar el número 2? Me puedes prestar tu telephono aquí, como lo hicimos ayer? Así que vamos a ver, por lo que si quiero representar el número 2, es éste el número 2? No. ¿Qué número soy yo accidentalmente representando aquí? Esto es en realidad el número 3. Así que uno es lo que quiero para apagar? El teléfono negro o- bien, si they're-- teléfono negro o el teléfono blanco? El teléfono blanco. Así que si a su vez esto adelante y nosotros alinéalo por aquí, tenemos un 1 en el lugar del 2 y un 0 en lugar de la 1. Y así que estoy ahora que representa el número 2. Y esto, por supuesto, sería el número 3, porque ahora estas dos luces están en. Y voy a parar aquí, pero es lógico pensar si quiero representar la número 4 o 8 o superior, Voy a necesitar más móviles. Pero eso es todo lo que está pasando. Así que si alguna vez has escuchado que A-- interior del equipo gracias usted-- es millones de transistores, eso es sólo millones de pequeños interruptores diminutos. Y no son la luz bombillas que se encienden y apagan, pero sí permiten ya sea de electricidad a fluir en alguna parte o detenerlo. Y lo que no es su dos Unidos-- encendido o apagado, encendido o apagado. Por lo tanto, parecería ahora tener esta capacidad para representar este concepto que nos gustaría en el hardware real. Pero todo lo que tenemos ahora es la capacidad para representar los números de lo que parece. Entonces, ¿cómo hacemos para que representa letras del alfabeto, los cuales se siente como el siguiente tipo de función, querría añadir a un ordenador moderno una vez que tenga los números? Y de hecho, si se piensa TI, históricamente, ordenadores se introdujeron realmente para servir como calculadoras numéricamente. Pero, por supuesto, éstos días, lo hacen mucho más. Incluso cuando se inicie, suelen ver una o más palabras. Entonces, ¿cómo representar palabras, si todo lo que tiene es, de nuevo, electricidad al final de la día, o equivalentemente 0 de 1 y de? Sí. Sí, es decir, que tipo de hecho esto ayer en una cierta forma, donde en algún momento, Creo que de manera arbitraria Dicho esto, si queremos representar la letra A, podríamos llamar a eso un 1. Fue en el contexto de la criptografía, donde sólo necesitamos algún tipo de código, mismo tipo de mapas. Así que tal vez A se representa como una 1 y B serán representados como 2, y Z estará representada como 26, por ejemplo. Y entonces la única advertencia es que si estoy va a codificar las letras en mis correos electrónicos o en mis mensajes de texto como números, todos ustedes que ponerse de acuerdo para utilizar el mismo conjunto de convenciones. Y, en efecto, el mundo ha hecho exactamente eso. Hay un sistema en el mundo denominado ASCII, American Standard Código para el Intercambio de Información, que es simplemente una decisión de algunos años Hace que los seres humanos hacen que Un decidió que va a ser igual, no 1, 2, y 26, y así forth-- es una diferente-- poco pero el 65, 66, 67. Y voy a tirar de una gráfico en un momento. Pero es arbitraria. Pero no importa que es arbitrario. El mundo tiene que acaba de ser coherente. Ahora, más recientemente, hay algo más de lujo llamado Unicode, porque especie del mundo se dieron cuenta de, después de la invención de las computadoras, que no hay más que bien 256 símbolos en el mundo que lo que se quiere representar, especialmente cuando se introduce idiomas asiáticos y otras simbologías que necesitan más de lo que la expresividad puede caber en la versión más antigua de este código, que fue llamado ASCII. Así Unicode permite en realidad que utilice más de 0 y 2. En particular, si siguen escuchando la bytes de la palabra en la sociedad e incluso sólo ayer. Y un byte es lo nuevo? ¿Qué es un byte? Es sólo 8 bits. Entonces, ¿qué significa esto realmente? Bueno, eso significa que, antes, cuando éramos hablando binario y que estaba usando arbitrariamente tres bits cuando estuvimos hablando de binary-- lugar del 1, el lugar del 2 y el 4 de lugar-- así, un byte sólo significa que usted está hablando no en unidades de tres pero cuatro, cinco, seis, siete, ocho, lo que nos da el lugar de 8, de 16, de 32, de 64, y 128 de. En otras palabras, un poco no es todo que la utilidad de una unidad de medida, porque es como una diminuta pieza de información, dentro o fuera. Así, hace unos años, el mundo acaba de decidir Es un poco más conveniente hablar de términos de bytes, ocho cosas a la vez. Y por lo tanto, nació la noción de un byte. Y así tenemos ocho bits aquí. Y resulta que, también, para similares razones, el mundo decidieron años Hace que representan a una carta ASCII, usted va a utilizar unidades de 8 bits. Así que incluso si no lo hace necesita que muchos, eres Siempre va a utilizar 8 bits de representar una letra del alfabeto. Y esto es conveniente, porque entonces si recibir un mensaje que tiene un 0 0 1 0 1 1 1 0 seguido de otro 1 1 1 0 1 0 0 1, por lo que si usted recibe 16 los bits, el mundo solo puede Supongamos que el primer 8 son una letra y la segunda 8 son otra carta. No importa cuántos hay. Sólo importa que todos somos coherentes cuando estamos interpretación de estos bits. Y esto fue sólo al azar. Eso quiere decir algo, pero no lo hice Realmente pensar en lo que significa. Así que es una pequeña mentira blanca. Originalmente, ASCII efectivamente utilizados sólo 7 bits. Y el octavo bit es llamado ASCII extendido. Pero el punto es, en última instancia, el mismo. El mundo en general estandarizado en 8 bits. Así que este parece ser un poco limitante, porque sólo puede constituirá un fondo A, capital de la B a la Z. de capital Pero de hecho no es así, si voy a-- hay un montón de recursos en línea, por ejemplo, asciitable.com, este va a ser un poco abrumador al principio. Pero voy a señalar lo que es importante aquí. Esto sólo pasa a ser-- y voy a walk-- vamos a ver, si me voy de aquí. Aquí está, en el decimal columna, el número 65. Y en la letra de la columna de la derecha carácter, Chr, es la letra A. Y se puede ignorar, por ahora, todo en el medio. Esto es hexadecimal, octal, y un código HTML. Para este sitio sólo está tratando de tirar una gran cantidad de información en la que a la vez. Pero lo único que importa es el decimal columna y la columna de caracteres. Así por esta lógica, lo que es el número que el mundo ha decidido representa una minúscula? Sí, 97. Y sólo para confundir potencialmente, algo, qué número ha decidido el mundo representaría el número 1? Claro, porque nosotros-- 49, parece aquí, en la parte inferior izquierda. Ahora, ¿qué quiero decir con eso? Así resulta que en los sistemas informáticos, hay generalmente una diferencia fundamental entre un número y un carácter. Un número es lo que nos aprendido crecer cuando estábamos muy joven en la escuela primaria. Es lo que usted cuenta con. Sin embargo, un carácter es sólo una forma, una glifo, por así decirlo, en la pantalla. Ahora, nosotros los humanos vemos una especie de algo que se parece a esto. Y decimos, oh, que es el número 2. Pero no, eso es sólo un símbolo que se ve al igual que lo que conocemos como el número 2. Y lo que no esta distinción fundamental entre los números reales y caracteres. Este es un número. Pero, en general, en el contexto de un ordenador, Si en lugar de ver algo como esto quoted-- y no lo hace siempre hay que verlo citado, pero por el bien de si discussion-- que se ve entre comillas el número, esto es ahora un personaje. Así que este número 2 debajo la capucha en el interior de un ordenador sería representado con un patrón de bits que representan el número 50 de acuerdo con la tabla en línea. Sin embargo, si un ordenador simplemente ve esto, esta se representaría con el patrón de bits 0 0 0 0 0 0 1 0. Considerando que, con este personaje lo haría en realidad ser representado como- y ahora, Tengo que pensar un poco por lo que este harder-- carácter estaría representada con 0 0 1-- ¿Qué necesito aquí? 0 1 0 1 0 0 1 0. ¿Cómo puedo hacer esto? Bueno, este es el número 50, si se multiplica a cabo utilizando estas columnas, este es el número 2, y así por eso existe esta dicotomía. Y esto es sólo una sumario ahora para características que existen en los lenguajes de programación que vamos a tocar brevemente el día de hoy. En los lenguajes de programación, usted tiene por lo general, pero no siempre, las cosas llamar a diferentes tipos de datos. En otras palabras, un programmer-- cuando él o ella está escribiendo, un programador puede decidir en qué formato para almacenar sus datos. Puede almacenar datos como números en bruto, como el número 2. O se puede almacenar como cadenas, o secuencias de caracteres que le suelen expresar con citas en su lenguaje de programación. Puede tener cosas called-- Voy a simplificar en exceso y llamarlos numbers-- reales de modo que los números no son números enteros como el número 2, pero los números como 4.56. Así que los números reales también pueden tienen puntos decimales, así que es un diferente fundamental pieza de datos en un ordenador. Y después, se puede tener otros tipos de datos fijas. Así que eso es sólo un avance realmente de la más simple de las decisiones de diseño que un programador podría hacer debajo de la campana. Así que cualquier pregunta por el momento? Así que vamos a tratar de hacer esto un poco más real. Este no es el hardware tanto en uso más. Pero casi todo el mundo en esta habitación probablemente creció con y sigue utilizando discos duros de alguna manera. Aunque la mayoría de nuestros ordenadores portátiles ya no tener dispositivos que operan de esta manera, en cambio los ordenadores portátiles de hoy en general tienen unidades de estado sólido sin partes móviles. Y que tiende a ser más caro, por desgracia, pero un poco más rápido A-- y así, a menudo, mucho más rápido, que es una de las razones. Y también no lo hace genera tanto calor. Puede ser más pequeño, por lo que es generalmente un neto positivo. Pero esto nos permite mapear una poco más concretamente lo estamos hablando en el 0 y de 1 planta ahora a un dispositivo físico. Es una cosa para mí hablar aproximadamente de 0 y 1 en términos de de mi teléfono o de manera abstracta en términos interruptores de ser encendido y apagado. Pero ¿qué pasa con los discos duros? En sus ordenadores portátiles, si usted tiene una más antigua uno, o en su ordenador de sobremesa, o seguramente en los servidores hoy en día, donde se tiene discos duros que tienen un terabyte de espacio, 4 terabytes de espacio, ¿Bueno, qué significa eso? Un disco duro con 1 terabyte de medios espaciales hay 1 billón de bytes dentro de ella de alguna manera, o equivalentemente 8 billones de bits en el interior. 1 terabyte sería de 8 terabits o 1 billón de bits, lo que significa que si usted tiene un disco unidad, usted tiene alguna u otros de un billón de 0 y de 1 en el interior de la misma. Y si sólo echar un vistazo a una foto arbitraria de un disco duro representativa, esto es lo que un disco unidad normalmente podría ser como en el interior. Es, también, es algo así como un viejo fonógrafo pero en general con varios registros interior, por lo a speak-- múltiple platos, como se les llama, discos circulares de metal, y a continuación, una pequeña cabeza de lectura, al igual que un viejo tocadiscos. Y que la cabeza de lectura se mueve hacia atrás y sucesivamente y de alguna manera lee los bits. Y lo que es en estos discos, incluso A pesar de que los humanos no pueden ver, ya sea en la realidad o en esta imagen, hay partículas magnéticas pequeñas diminutas. E incluso si no tienes mucho olvidado cómo funciona la electricidad, una partícula magnética que está cargado en general tiene un extremo norte y un sur end-- tan al norte y al sur. Y así el mundo justo decidió hace algún tiempo que, si un protocolo magnético esencialmente está alineado como este, norte-sur, vamos a llamar a que un 1. Si se trata de su lugar de sur a norte, Vamos a llamar que un 0. Y por lo que si usted tiene por lo su disposición un billón diminuto magnética particles-- y es de esperar, el ingenio de hardware en Para voltear los que lo rodean como se ve fit-- si desea representan un manojo entero de 0 de, usted sólo tiene 8 partículas magnéticas todos alineados como este. Y si usted quiere representar 1 de ocho, que acaba necesitará 8 partículas magnéticas alineadas espalda con espalda con espalda como este. ¿Qué quiero decir por el partículas magnéticas? Francamente, después de tantos años, la Lo que todavía viene a la mente es este tipo, si creció con esta cosa. Este es un poco-- para los unfamiliar-- una pequeño juguete infantil que tiene este hombre sin pelo aquí que tiene todas estas minúsculo negro partículas magnéticas que vienen con él. Y el uso de ese palo rojo, que es sólo un imán, que tipo de le puede dar un bigote o cejas o el pelo o cualquier cosa sobre él. Así que de hecho, si nos acercamos en, por ejemplo, este es el tipo de juego que puede jugar con Wooly Willy. Y esto es sólo decir que estos son partículas magnéticas mucho más grandes que son en realidad en un disco duro, y muchas menos partículas magnéticas. Pero vamos a ver realmente a continuación, si usted tiene minúsculas partículas magnéticas en una disco duro, cómo en realidad se puede utilizar los datos para representar. [REPRODUCCIÓN DE VÍDEO] -El Disco duro es donde su PC la mayoría de las tiendas de sus datos permanentes. Para hacer eso, los datos viaja desde la memoria RAM a lo largo con las señales que le indican al software disco duro de cómo almacenar esos datos. Los circuitos del disco duro se traducen los señales en las fluctuaciones de voltaje. Estos, a su vez, el control de la unidad de disco parts-- mover algunos de los pocos en movimiento partes dejaron en la informática moderna. Algunas de las señales de control de un motor, que gira bandejas recubiertas de metal. Sus datos es en realidad almacenada en estos discos. Otras señales se mueven las cabezas de lectura / escritura para leer o escribir datos en los discos. Esta maquinaria es tan precisa que un cabello humano no podría incluso pasar entre las cabezas y platos giratorios. Sin embargo, todo funciona a velocidades fenomenales. [FIN DE REPRODUCCIÓN] Y se puede ver en el extremo de cola del video, generalmente hay múltiples fuentes. Y para que la cabeza de lectura no es sólo la lectura de la parte superior. Es algo así como tres o cuatro o más cabezas de lectura que se mueven de esta manera, la lectura de datos de forma simultánea. Así que hay una gran cantidad de complejidad y tipo de temporización que está involucrado en un disco duro. Y lo está haciendo girar realmente maldito rápido, así que hay una gran cantidad de complejidad. Pero vamos a acercar un poco más y ver dónde son estas partículas magnéticas y ¿cómo se van a obtener en ellos. [REPRODUCCIÓN DE VÍDEO] La mirada de -Let en lo que acabo de ver en cámara lenta. Cuando un breve pulso de electricidad se envía a la cabeza de lectura / escritura, se voltea en una pequeña electromagnética por una fracción de un segundo. El imán crea una campo, que cambia la polaridad de una pequeña, diminuta porción de las partículas metálicas que recubren la superficie de cada disco. Una serie patrón de estos diminutos cargadas hasta las zonas del disco representa un solo bit de datos en el sistema de numeración binario que utilizan los ordenadores. Ahora, si la corriente se envía una camino a través de la cabeza de lectura / escritura, la zona está polarizada en una dirección. Si la corriente se envía en la dirección opuesta, la polarización se invierte. ¿Cómo se obtiene los datos desde el disco duro? Sólo revertir el proceso. Por lo que es las partículas en la disco que llegar la corriente en la cabeza de lectura / escritura en movimiento. Armar millones de estos segmentos magnetizados, y usted tiene un archivo. Ahora, las piezas de un solo archivo puede ser esparcidos por todo platos de una unidad, algo así como el desorden de papeles sobre su escritorio. Así que un archivo extra especial mantiene realizar un seguimiento de dónde está todo. ¿No te gustaría tener ¿algo como eso? [FIN DE REPRODUCCIÓN] Así se alude allí, tal vez, es ese tema de ayer de su eliminación. Cuando se elimina una archivo, ayer dijimos que hace una computadora realidad lo que, cuando se arrastra algo a la papelera de reciclaje o contenedor de basura? Simplemente olvida. Pero el 0 y de 1, las partículas magnéticas esa mirada como el rojo y el azul cosas aquí, o aquí, mi brazo todavía están allí en el disco duro. Y por lo que no existe software-- Norton Utilities y antaño y otra más moderno software-- que acaba escanea un disco duro entero mirando a todas aquellas de 0 y 1, ya que de Resulta que la mayoría Formatos-- archivo documentos de Word, Excel, imágenes, archivos-- de vídeo todos tienen cierta patrones que son comunes entre ellos. Cada archivo de vídeo podría ser de un vídeo diferente, pero los primeros bits son generalmente los mismos. O los últimos varios bits suelen ser los mismos. Y así, con alta probabilidad, usted puede buscar esos patrones. E incluso si el archivo se ha olvidado, se puede decir con alta probabilidad, pero esto se parece a un documento de Word, deja para recuperarlo y poco olvidarlo, Si tu quieres. Y así es como se puede recuperar datos que están ya sea accidentalmente sido eliminado o suprimido o deliberadamente suprimido con qué propósitos. Por el contrario, la eliminación segura de lo que hace en el contexto de una imagen como esta? Exactamente, las hace al azar. Por lo que se mueve tipo de algunos de hacia abajo, algunos de ellos hacia arriba, deja algunos de ellos sin cambios, y en general, hace ruido aleatorio fuera de él, o tal vez simplemente hace que todos 0 de ellos o todos ellos de 1. Y que también puede hacerlo en general fregar los datos de distancia. Así que vamos a volver ahora a la cuestión de pensamiento computacional, lo cual tenemos las entradas de la fórmula. Y algoritmos da que en última instancia salidas. Nos centramos ahora en los insumos y salidas, porque ahora, reclamo que tenemos una forma de en representación de las entradas y salidas. Sólo vamos a utilizar binario. Y no importa lo que querer representar hoy en día, si se trata de un número o una letra o miles de los mismos en un directorio telefónico o imágenes o películas, al final del día, todo es de 0 y 1 de. Y afirmo que, a pesar de que esta Es un mundo muy sencilla con sólo 0 de y 1 de, podemos construir nosotros mismos. Y hemos visto un ejemplo de que con las letras hasta el momento. Así que vamos a centrarnos ahora en este ingrediente medio, un algoritmo. Y vamos a volver a este ejemplo de Mike Smith. Así que en este libro de teléfono, lo que es cierto, no usamos tanto como antes, hay un problema que hay que resolver. Queremos encontrar a alguien como Mike Smith. Y lo que podría yo hacer para encontrar Mike? Así, tan sólo pudiera abrir este libro, se inicia en la primera página, y darse cuenta, oh, estoy en la sección A. Mike no está allí. Necesito la sección S de Smith. Así que siga girando una página a la vez. Quiero dar la impresión de que esto es todo páginas blancas y páginas amarillas, no porque no vamos a encontrar Mike en las páginas amarillas de todos modos. Pero estoy en las páginas blancas. Y ahora, estoy en la sección B. Todavía no lo he encontrado. Así que sigo girando una página a la vez. Este es un algoritmo. Es un conjunto de instrucciones para resolver algún problema. En otras palabras, mira página, si Mike no está en él, página de la vuelta, y se repite una y otra y otra vez, idealmente mirando hacia abajo como lo está haciendo. Así es este algoritmo, este proceso, ¿correcto? Lo siento. No, he oído algunas nn. OK, pero es-- sí, sin duda es tedioso. Al igual, vamos a estar aquí todo el día si seguir buscando a Mike a esta velocidad. Pero déjeme dicen que es correcto. Es estúpido, pero es correcto. Al final del día, siempre que podría tomo, voy a encontrar a Mike si él está ahí y yo estoy prestando atención. Y, finalmente, llegar a su página. Y si consigo demasiado lejos, si Llego a la sección en T, entonces puedo optimizar ligeramente y decir, hm, todo hecho. Ni siquiera necesito perder el tiempo de ir a la Z. Pero esta es una muy enfoque lineal, si va, un tipo de izquierda a derecha enfoque, una línea recta. Y su correcta pero lento. Por lo que recuerdo de la escuela primaria, una especie de una optimización de un niño de primer grado, donde aprendí cómo no cuenta por otros, pero por lo twos-- 2, 4, 6. Es A, mucho más difícil de hacer, pero en teoría, es faster-- 8, 10, 12, 14, y así sucesivamente. ¿Qué hay de ese algoritmo? ¿Es más eficiente? ¿Es más rápido? PÚBLICO: Es eficiente. DAVID MALAN: Sí, por lo que es def-- es literalmente, el doble de rápido, que suponiendo No se deje tropezar con los dedos. Es dos veces más rápido, porque Estoy girando a través de dos páginas a la vez en lugar de uno, pero es potencialmente, en correcta, porque ¿por qué? AUDIENCIA: Usted está omitiendo algunos. DAVID MALAN: Derecho, lo que pasa si Mike para ser sandwiched-- tal vez cuando estoy más tarde en la guía telefónica, Mike pasa a ser intercalado entre estas dos páginas, y yo sólo ciegamente a saltar sobre ella. Así que necesitamos un poco de corrección de allí. Una vez que llegué a la sección T, I no se puede decir simplemente con confianza, no hemos encontrado Mike Smith. Probablemente tengo a doble vuelta. O, de hecho, una vez que llegue a alguien llamado S-N, en lugar de S-M para Smith, de inmediato, podría duplicar atrás, porque tal vez él estaba en la página anterior. Pero yo no tengo que volver sobre el momento. En teoría, si lo hago a la derecha tiempo, acabo de volver de una página. Por lo que es la adición de un solo paso adicional. Así que he ido dos veces más rápido, pero me costó una página adicional. Pero que se siente como una ganancia neta. Pero esto no es como la mayoría de la gente en esta sala podría resolver este problema. ¿Cómo sería una persona típica, tal vez una Hace algunos años lo hacen, para encontrar Mike Smith? Sí, no encontró Mike. ¿Qué debo hacer? Así que un poco más cerca, pero lo hago saber-- lo que es cierto acerca de una guía telefónica? PÚBLICO: Es secuencial. DAVID MALAN: Es secuencial. Es alfabético. Y por lo que si estoy en la sección H, Mike es claramente hacia la derecha, literalmente me puedo romper el problema en half-- por lo general es más fácil que la lágrima que- el problema por la mitad y tirarlo a la basura, de modo que ahora, tengo un problema que es Ya no pages-- 1000 que era difícil, porque creo que en realidad arranqué la guía telefónica esto no tiempo-- 1.000 páginas, pero 500. Así que el problema es, literalmente, la mitad de grande. Y eso es bastante convincente, porque con mis algoritmos anteriores, versión 1 y 2, lo único que estaba haciendo el problema una página más pequeñas, dos páginas más pequeñas a la vez. Mientras que ahora, lo hice 500 páginas más pequeñas a la vez. Aceptar, por lo que ahora, Karim propone que voy a la mitad derecha. Así que voy a ir más o menos a la mitad, más o menos. Y si hiciera esto matemáticamente, Podría ir a la derecha hacia el centro. Y ahora, me doy cuenta, oh, Estoy en la sección T. De hecho, me he ido demasiado lejos. Pero puedo, una vez más, romper la problema a la mitad, tirarlo a la basura. Y mis bytes no es tan grande. Es sólo, lo que, 256 ó 250 páginas páginas, más o menos en este momento. Pero aún así es mucho más de una página o dos páginas. Y por lo que ahora, voy más o menos a la mitad. Oh, yo no ir bastante lejos ahora. Así que repito, repetir, repetir, repetir, hasta que estoy con suerte la izquierda con una sola página. Por lo que invita a la pregunta, si yo comenzado con aproximadamente 1.000 páginas, cuántos pasos me tomó con la versión 1 de mi algoritmo? Bueno, si Mike es en el S sección, en el peor de los casos, eso es bastante cerca el final del alfabeto. Así que si el directorio tiene 1.000 páginas, Voy a encontrar a Mike a menos de 1.000 páginas, Da o toma. Tal vez es como 800 o así, pero que es bastante cerca de 1.000. Considerando que, en el segundo algoritmo, cuántos vueltas de página máximo que podría requerirá para encontrar Mike Smith? Hay 1.000 páginas, pero estoy haciendo de ellos de dos en dos. Bien, así como máx 500ish, porque si voy a través de todo el libro de teléfono, y en ese momento, puedo parar. Pero puedo afeitar de unos pocos por acaba con parada en la sección T. Pero es en el peor de los casos 500 páginas. Entonces, ¿cuántas veces puedo dividir una 1,00o-página del libro de teléfono en la mitad otra vez y una y otra vez-- de 1000 a 500 a 250 a 125? ¿Cuánto tiempo antes de que golpee una página? Sí, se trata de 10. En función de redondeo y tal, es cerca de 10 páginas de la necesidad total de girarse o guías telefónicas necesitan ser desgarrado. Así que es bastante potente. Empezamos con un problema de 1.000 páginas en los tres de estas historias. Pero en el primer algoritmo, se me llevó, peor de los casos, de 1.000 páginas se vuelve a encontrar Mike. En segundo algoritmo, 500 páginas para encontrar Mike. En tercer algoritmo, 10 páginas para encontrar Mike. Y es aún más poderosa cuando se piensa sobre una especie de escenario opuesto. Supongamos que la compañía telefónica próximo año tal vez se fusiona dos ciudades juntas, y la guía telefónica es de repente este espesor, en lugar de esto que, por lo que 2.000 páginas en lugar de 1.000. Bueno, mi primer algoritmo busca Mike Smith en una guía telefónica de 2.000 páginas, peor de los casos, se va a tomar el número de vueltas de página el próximo año? directorio telefónico es de 2.000 páginas, tan-- bien, ni uno más. Si la guía telefónica es dos veces más grueso en el primer algoritmo, primero algoritmo, 2000, ¿verdad? En el peor de los casos, Mike es realmente cerca de la final del libro, por lo que es de 2.000 vueltas de página. Segundo algoritmo pasando por dos en dos, al igual que 1.000 páginas. Pero ¿qué hay en mi tercer y el algoritmo más reciente? Si la compañía telefónica duplica el número de páginas de 1.000 a 2.000, ¿Cuántas veces más necesito me desgarro ese libro por la mitad para encontrar Mike? PÚBLICO: Sólo una. DAVID MALAN: Sólo uno más, porque con una lágrima página, literalmente me puedo dividir y conquistar, si se quiere, ese problema en medio toma un bocado masiva fuera de él. Y por lo que este es un ejemplo de la eficiencia y podría decirse que un algoritmo con la que todos somos tipo de forma intuitiva familiar. Pero es tan correcta como mis otros algoritmos con ese pellizco de el segundo algoritmo, pero es mucho más eficiente. Y de hecho, lo que un ordenador científico, o, a su vez un programador, típicamente hacer al escribir código es tratar de averiguar, bien, yo no quiero que mi programa sólo para ser correcta, Yo también quiero que sea eficiente y resolver problemas bien. Imagínese en el mundo real de hoy, al igual que los índices de Google, las búsquedas al igual que miles de millones de páginas, imagina si utilizado el primer algoritmo para encontrar los gatos entre un mil millones pages-- mirando la primera página en su base de datos, la segunda, la tercera, sólo busca para un gato, en busca de un gato. Eso es bastante maldito lento lo que parece. En su lugar, podría usar algo llama búsqueda binaria, la cual hay bi coincidence-- significa dos, seguir dividiéndose algo en 2, en half-- que podrían utilizar la búsqueda binaria y tal vez encontrar gatos aún más rápido, o lo que sea que estés buscando. Y francamente, no hay incluso los algoritmos más elegantes que hacer mucho más que simplemente dividiendo las cosas por la mitad con el fin de encontrar información rápidamente. Y hablaremos un poco sobre los que después del almuerzo de hoy. Así que permítanme simplemente trato de representar esto. No necesitamos entrar en matemáticas o cualquier número real. Podemos hablar de esto en el resumen. Pero permítanme proponer que, si estaban teniendo una discusión ahora con los ingenieros proponiendo este algoritmo y que está tratando de hacer una decisión calculada, porque tal vez la ingeniero dice a usted, usted saber qué, puedo poner en práctica una búsqueda lineal en como dos minutos. Es fácil. La búsqueda binaria no es tan sofisticado, pero que me va a tomar como 10 minutos, de modo 5 veces más. Hay un comercio aquí, incluso en términos de decidir qué software para escribir. Se escribe el algoritmo más simple, el cual sólo le llevará dos minutos? ¿O se pasa más tiempo, 10 minutos, escribir el algoritmo más elegante? ¿Cómo se decide que tipo de pregunta? O bien, podría hacerlo un poco más real. Le digo a mi jefe que va a tomar me sea de una semana o 10 semanas para implementar la software de esta manera, cómo Cómo se decide qué algoritmo de dar luz verde a? Karim? AUDIENCIA: La audiencia, supongo. DAVID MALAN: El público. ¿Qué quiere decir por el público? AUDIENCIA: Si se va para ser utilizado por los usuarios que [inaudible] los usuarios [inaudible]. Pero si es algo que eres acaba de hacer por sí mismo para facilitar un problema, [Inaudible] más rápido. DAVID MALAN: Sí, es rápido y sucia es una buena manera de describirlo. De hecho, si estás que describe gran parte de mi tiempo en la escuela de posgrado, por lo que muchas veces, Escribí mal código conscientemente tan-- al menos, así es como me racionalizado it-- conscientemente, porque a pesar de que estaba escribiendo código que era relativamente lento para ejecutar, Yo era capaz de escribir el código en sí bastante rápido, a pocos minutos de gasto o no horas días. Y resultó, me de vez en cuando es necesario para dormir. Así que incluso si mi código requiere 8 horas para correr, así que está muy bien, Voy a ir a dormir mientras se ejecuta. Así que en ese momento, pensé que esto era muy inteligente, a pesar de que aparentemente trabajado a través de mi doctorado muy lentamente. Pero a la inversa de la que es que, si el software estuviera escribiendo para otras personas que importaba más que a mí, así, tenerlos esperar a 8 horas volver a sus resultados de búsqueda No es todo lo que convincente. Y así pasar más tiempo por adelantado para escribir software que es más eficiente, más como nuestro tercer algoritmo, probablemente beneficia a los usuarios con el tiempo. Así que realmente depende más de tiempo como estos costos se suman. Si usted va a estar escribiendo software para usarlo una vez, probablemente como bien podría hacerlo rápido y sucio, como se suele decir. Sólo tiran juntos. Es el código que avergüenza usted, es tan malo, pero hace el trabajo correctamente, a pesar de que no es eficiente. Por el contrario, se pasa más tiempo en algo, sea lo bastante buena. Y luego amortizados con el tiempo, costo que por adelantado de tiempo es probable que valga la pena, si se mantiene la optimización para el caso común. Y de hecho, eso es un tema en programación o ciencias de la computación más en general, se trata de optimizar no para el caso poco común pero los caso-- comunes ¿Qué operación que va a ocurrir una y otra vez? Si vas a tener miles de millones de los usuarios que buscan en su sitio web, probablemente debería pasar el extra semanas por adelantado para escribir un mejor software, de manera que todos los usuarios se benefician. Ahora, vamos a tratar de capturar esta una poco ilustrado, pero no tanto numéricamente. Así que aquí es sólo una vieja carta de la escuela. Y permítanme decir que este es el tiempo. Y no importa qué-- En realidad, no, no el tiempo. Vamos a poner que en el otro eje. Digamos que este es el momento, y este es el tamaño de problema. Y un informático podría llamar general esto sólo n. n es igual nuestro ir a la variable, donde n es un número, n número, y es la cualquier número de entradas que tiene. Así pues, en este caso, n es el número de páginas. Lo que podría ser en 1000 el caso que acaba de decir. Así que el tiempo puede ser cualquier unidad de medida. Tal vez, es segundo. Tal vez, es días. Tal vez, es como cambiar de página. No importa. Lo que usted quiere contar en que será de duración o costo equivalente. Así que con ese primer algoritmo, si, por ejemplo, tenía una libreta de teléfonos de 1.000 páginas, Voy a dibujar un punto allí, porque si es de 1.000 páginas, que tomó aproximadamente 1.000 vueltas de página, más o menos. Y luego si tuviera una 2.000 páginas libreta de teléfonos, y voy a dibujar un segundo dot aquí, porque para 2.000 páginas, es como 2.000 segundos o vueltas de página o lo que sea. Y así, cuando he dicho antes, es tipo de una relación lineal, que era deliberada, porque quería más tarde en-- derecho ahora-- para dibujar una línea. Es una especie de una recta relación de línea. La pendiente es 1/1, si se quiere. Mientras tanto, el segundo algoritmo Dicho esto, si usted tiene 1.000 páginas y que estaba usando el segundo algoritmo, donde conté por 2 de, girando dos páginas a la vez, debería trazar una dot debajo o por encima de mi punto original? AUDIENCIA: Abajo. DAVID MALAN: A continuación, ya que como hemos visto, Se tarda menos tiempo, la mitad del tiempo. Así que el punto medio debe estar tan alta como la otra. Y la misma cantidad por aquí, este punto probablemente debería ser más o menos allí. Y por lo que mi segundo algoritmo, de manera similar, tiene una relación lineal con el tiempo. Y podemos sacar como tal. Así que ahora, la tercera y última algoritmo es un poco más difícil de dibujar. Sin embargo, intuitivamente, si lo he entendido 1.000 páginas con mi tercer algoritmo, sólo me debe tomar como 10 pasos. Y si tengo 2.000 páginas con mi tercera algoritmo, debería ser yo no tome 10 pasos, pero el 11, sólo uno más. Así que estamos sólo apenas va a ver esto. Y resulta que, si El zoom en esto, yo soy ir a exagerar para el efecto, la forma de la línea, en última instancia, no es una recta line-- porque, de hecho, si lo fuera, que se vería más como el otros- en realidad es una línea curva que, si nos acercamos, se va mirar mucho de la misma familia. It-- bien, está bien, ignorar esta parte. Esa fue mi pluma va del ángulo. Es una línea curva que es siempre aumentando, siempre, siempre, siempre aumentando, pero sólo apenas. Y así, con el tiempo, tiene una relación que es de la misma familia. Casi parece recta. Pero es siempre tan lentamente creciente. Pero para casi todos los puntos a lo largo su eje X, eje horizontal, es más baja que las otras líneas. Por lo que esta podría ser una relación n, por lo que si tiene n páginas, n segundos que tarda. Esto podría ser una relación n / 2. Usted tiene n páginas, se necesita que n / 2 segundos, la mitad. Y este es un logarítmica relación, que Si recuerdan, la base 2 de n log capturas este tipo de crecimiento, por así decirlo. Así que este es el tipo de santa Grial entre los tres de estos aquí, porque es sólo mucho más eficiente, pero sin duda más compleja para implementar. ¿Alguna pregunta? Pues déjame hacer esto, deja a abrir una ventana de texto sólo para que podamos tratar de formalizar algo aquí. Así que déjame ir por delante y ahora aplicar este algoritmo para encontrar Mike Smith en el código, si se quiere, código de pseudocódigo. No voy a usar Java o C ++. Yo sólo voy a utilizar una especie de Inglés-como la sintaxis, lo que nos generalmente se llama código de pseudocódigo. Aquí, tengo una ventana en blanco. Y yo estoy diciendo el paso 1 de la muy primer algoritmo es recogida en la guía telefónica. Paso 2 es libro abierto a la primera página. Paso 3 será mira página para Mike Smith. Si en la página, llame a Mike. La página de otra vuelta y vaya al paso 3. Hecho, digamos. Y lo que no es del todo perfecto, el cual veremos en un momento. Pero vamos a considerar lo conceptos que hemos introducido aquí. Así pasos 1 y 2 y 3 son más o menos los verbos. Son declaraciones, actions-- hacen esto. Y así, en una programación lengua, que le otorga en general llamarlos o declaraciones funciones o procedimientos, ellos llamar a cualquier número de cosas. Pero sólo están actions-- hacer esto. Paso 4 es fundamentalmente diferente, porque es tipo de una pregunta. Es como decir que estamos especie de a un tenedor en la carretera. Si Mike está en la página, llame él, así que gire a la izquierda, si se quiere. Y si no, volver a algunos otra page-- o más bien, lo siento, volver a algún otro paso, el cual induce algún tipo de construcción de bucle. Y lo hacemos una y otra vez y otra vez. Y en realidad, ¿sabes qué? Sí. más si al final de la parada de libro. Así que necesitamos un tercer tipo de afección, ya que no puede seguir girando la página de anuncios hasta el cansancio, porque, al final, me quedo golpear el final del libro. Y un error en un programa podría ser no anticipar ese escenario. Y entonces me acabo de dar cuenta, oh, espera un minuto, necesito un tercer escenario. Si estoy fuera de páginas, en realidad debería simplemente parar. De lo contrario, es indefinido. ¿Qué va a pasar si sigo diciendo vuelta a la página y volver, Esto es cuando los ordenadores congele o se caiga, cuando se pulse alguna situación no prevista por el estilo. Ahora, ¿qué pasa con Mike tercer algorithm-- de Smith recoger el libro de teléfono, libro abierto para que primero-- no, no es la primera página de este tiempo, a middle-- oh, bueno, que había el segundo algoritmo. Vamos a saltar a la tercera. AUDIENCIA: Oh, lo siento. DAVID MALAN: Eso está bien. Vamos a saltar a la abierta third-- a medio y ahora mira para Mike Smith. Si en la página, llame a Mike. Y entonces, ¿qué es lo que queremos decir aquí? no qué? Podemos expresar esta en cualquier número de maneras. No hay una respuesta correcta. OK, si no más, pero necesitamos ser-- bien, nosotros queremos dividir en dos, pero queremos ir a la izquierda o a la derecha? ¿Cómo expresamos esa idea? Pues bien, en el caso de Mike, sí, eso es justo. Pero bueno, por lo que en realidad es un buen punto. Esta bien. Vamos a seguir adelante con esta lógica. Asi que-- AUDIENCIA: Menos de la mitad. DAVID MALAN: Sí. Por lo demás, si la página es, vamos a decir, menos de Smith, a la izquierda de Smith, entonces-- vamos a ver, es esto va a complicar? más si la página está antes que Smith, desgarro en la mitad, tirar a la basura los cuales la mitad? AUDIENCIA: Pensé que fue [inaudible]. DAVID MALAN: Estoy escuchando ambas respuestas. AUDIENCIA: Izquierda. DAVID MALAN: OK, lanzar distancia dejado a la mitad, como Lakisa se dijo anteriormente, la izquierda la mitad, entonces yo tipo de querer ir a-- Voy a la derecha. O lo que es equivalente, y he hecho un poco poco de un desastre de comienzo aquí, Yo quiero efectiva vaya al paso 2 de nuevo, donde abierta al middle-- o open-- si, digamos, páginas a medio. Y esto lo arregla. Ya no es un libro. Es sólo la mitad de un libro, páginas tan abierta a la media. else-- eran casi allí. Paso 6, de lo contrario, si la página se produce después de Smith, romper por la mitad, tirar la mitad de distancia a la derecha, a continuación, vaya al paso 2. otra cosa dejar de fumar, un cuarto escenario, si no hay páginas que aún se gire. Así que podríamos limpiar esto. Y debemos limpiar esto. Este es un código muy pseudocódigo, si voluntad, descripción muy alto nivel. Pero esto generalmente capturar la idea. Y, de nuevo, en este escenario, tener la noción de una condición, una rama, un tenedor en la carretera, lo que hace una en decisión si esto, ir de esta manera, más si, ir por este camino, más si, ir en esa dirección. Y esta es una muy común técnica de programación para decidir qué dirección para ir, por así decirlo. Y también tenemos una especie de bucle estructura, donde estamos haciendo algo una y otra vez. Ahora, resulta que, tanto como en este ejemplo, ser super exacto es importante. Pero también hemos visto algo que seguimos llamando a la abstracción. ¿Qué significa para recoger la guía telefónica? Estamos tomando tipo de por sentado en esta sala que eso tiene algún significado semántico. Todos nosotros sólo tipo de saber, oh, así, recoger la guía telefónica. Lo que significa esto realmente? Bueno, eso significa en realidad se extienden parte, se incline sobre, extender los dedos, pellizcar libro entre los dedos, levantarse, tirar de mano hacia usted. Y podríamos ser realmente pedante acerca de esto, Realmente es muy precisa en cuanto a lo que estoy haciendo. Pero todas esas medidas son colectivamente lo que significa coger una libreta de teléfonos. Y así antes, cuando dije, cada uno de estos dos primeros estados puede ser pensado como una proceder o una función, realmente representa lo que nos seguir llamando a una abstracción. Es como un alto nivel conceptual Descripción de un problema que en realidad implica un buen número de pasos. Y así, esto también es una recurrente tema en la programación, por lo que yo podría escribir un programa utilizando la sintaxis así- pick_up_phone_book (). Y a continuación, sintácticamente, estoy va a robar algo en la mayoría de los lenguajes de programación. Ahora, el paso 1 se ve aún más como una función, como programador lo llamaría. Parece que el código que alguien ha dado un nombre y dada a a mí para usar en otra somehow-- Es decir, lo que la línea que he destacado representa la funcionalidad que tal vez Ni siquiera a mí mismo implemento. Alguien mayor, más sabia que Me di cuenta de que ya cómo se expresa la noción de escoger una libreta de teléfonos. Y es como los cinco pasos que acabo recitó, de la parte superior de la cabeza. Sin embargo, él o ella ya ejecutados, esto, dio esos varios pasos un nombre, pick_up_phone_book. Y los paréntesis es justo lo que la mayoría de los programadores hacer al final de declaraciones como esta. Ahora puedo estar en su hombros y nunca más, pensar en lo que significa para recoger una guía telefónica. Yo sólo puedo decir, recoger la guía telefónica. Y eso es exactamente lo todos de nosotros los seres humanos hicieron aquí. Cuando estábamos probablemente 1 años de edad, 2 años de edad, alguien tenía que enseñarnos lo que la intención de recoger una guía de teléfonos. Y desde entonces, hemos abstraído de los que muy poco interesante pasos mecánicos. Y sólo tenemos una comprensión intuitiva de lo que significa recoger una guía de teléfonos. Y se puede extrapolar ahora a más complicado cosas-- construir un edificio. Al igual que, para algunas personas, que en realidad tiene sentido. Para los contratistas, a los arquitectos, que tiene algún significado. Y sabrían qué hacer, si Dije, voy construir un edificio. Pero la mayoría de nosotros en la habitación no podía hacer frente a ese nivel de abstracción. Usted necesita decir que nos gusta ir a buscar la pala y ir a buscar el hormigón y clavar las piezas de madera juntas y cualquier otra cosa está involucrado en la construcción de un edificio. Y eso es porque no lo hemos hecho todavía sido programado para entender lo que significa construir un edificio. No tenemos que la abstracción. No tenemos esa funcionalidad. Y así, lo que se verá en lenguajes de programación, en general, idiomas sobre todo, más modernas, como Java, PHP, Ruby y Python, que son mucho más maduro que las lenguas más antiguas, como C y C ++ y otros más. Y por lo que vienen con más funcionalidad incorporada. Más código ha sido escrito por la gente en el pasado que ahora podemos llamar o invocar o utilizar, ya que estoy insinuando en esta línea destacó aquí. Y así, a pesar de que no estamos hablando sobre lenguajes de programación en sí, código sólo pseudocódigo, la totalidad de la ideas están todavía en esa discusión. Y resulta que la precisión es super importante, como es la abstracción. Y vamos a tratar comunican que como sigue. Accidentalmente podría haber echado a perder esto mediante el parpadeo de una diapositiva en la pantalla prematuramente. Pero déjame pedir un voluntario valiente, si no te importa subir. Usted sería frente a la cámara, si estás bien con eso. ¿A alguien le gustaría venir y dar instrucciones a sus colegas aquí? Sólo hay que venir aquí y pararse aquí y decir algunas palabras. Victoria está sonriendo al máximo y evitando los ojos de la mayoría. ¿Usted estaría dispuesto a venir en un máximo? DE ACUERDO. Y si todos los demás en sus asientos podría llevar a cabo un trozo de papel de desecho, Si tu quieres. papel rayado está muy bien. Da la vuelta de esta manera. O parte del papel que le dieron ayer, cualquier hoja en blanco de papel, si pudiera. Y si usted no tiene ninguna, simplemente pregunte a su vecino si pudiera. Así por el momento, para este ejemplo, Victoria se va a jugar el papel de un programador, un ingeniero, que que tiene que programar todo, como las computadoras, para hacer algo. Y veremos qué supuestos decide hacer. Veremos cómo precisa que elige ser. Y si esta demostración va pedagógicamente bien, un montón de errores serán hechos, que a continuación vamos a utilizar que como una oportunidad para el debate. Sin embargo, el reto para los que debiera ser evitar esos errores, ser un buen programador. Y lo que el reto que nos ocupa, si que le gustó a caminar por aquí, que está delante de Victoria en la pantalla aquí-- y es de esperar, ninguno de ustedes recordar esto cuando apareció en la pantalla. Y no dar la vuelta en absoluto, porque hay otra pantalla en esta sala que puedo apagar. Así que no dar la vuelta. Delante de Victoria es el mismo grito. Y su trabajo ahora es decirle a todos en su pedazo de papel lo que a dibujar. Y veremos, sobre la base de instrucciones verbales solamente, código de computadora, si se quiere, la forma exacta sus dibujos son-- sus implementaciones son. ¿Tener sentido? AUDIENCIA: Sí. DAVID MALAN: OK, ejecutar. AUDIENCIA: Dibuja un cuadrado. [RISA] DAVID MALAN: Y sin se les puede pedir preguntas. sólo puede hacer lo que se te dice. Ah, y si usted tiene diapositivas de hoy abrir en una pestaña, no se ven en la pestaña. ¿OKAY? AUDIENCIA: OK, dibujar un círculo. Un slope-- puede decir que la pendiente? DAVID MALAN: Hasta usted. AUDIENCIA: Una pendiente. Y un triángulo. DAVID MALAN: Está bien. Y permanecer aquí por un momento. Y voy a venir todo en un momento. Y no hace falta poner sus nombres en ella. Déjame entrar en razón y recoger sus dibujos, si no te importa rasgando hacia fuera. Esto es lo que regresamos. Voy a proyectarla en la pantalla. Veo un cuadrado, un círculo, una pendiente, y un triángulo. Así que fue una respuesta allí. Y let's-- gritos. Gracias. Aquí hay otra variedad, y uno detrás de él. Así que todos ellos parecen capturar el espíritu. Gracias. Hay otro, y aquí hay otro. La interpretación pendiente es una poco diferente, poco curvas. Y el más cercano, ya sea por la maravillosa especificidad con la que usted tiene descrito, o tal vez tipo de vio antes, esto es de hecho Victoria lo que en realidad estaba describiendo. Pero ahora, los que no lo hicieron del todo bien, vamos a ofrecer algunas objeciones aquí. Así que primero dijo Victoria dibujar un cuadrado. Y ahora, podemos asumir por el bien de hoy que todo el mundo sabe cómo dibujar un cuadrado. Pero eso no es del todo claro, ¿verdad? ¿Cómo más se puede tener dibujado un cuadrado, o cuando podrían ser algunas de las ambigüedades aquí para el equipo? AUDIENCIA: localización y el tamaño. DAVID MALAN: Ubicación, ¿verdad? Todos ustedes tenían un papel de alguna forma, en general, rectángulos, pero ligeramente diferentes tamaños. Pero que sin duda podría haber dibujado, si quería, una enorme plaza, tal vez una pequeña plaza. Tal vez, se hace girar. No creo que vimos. Pero podría haber sido más diamantes como pero aún así, no obstante, matemáticamente una plaza. Así que podría decirse que era ambigua. Luego dijo, dibujar un círculo. Algunos de ustedes se sacaron al lado de , lo que no es razonable, porque los seres humanos tienden a pensar o leer derecha a izquierda en la mayoría de los idiomas, por lo que no una mala suposición. Pero ese círculo podría tener estado dentro de la plaza, podría haber dado la vuelta al cuadrado, que podría haber sido en otro lugar en la hoja, por lo que posiblemente ambigua. Pendiente podría haber sido mejor teniendo la mayoría de las libertades verbalmente con lo que eso significa. Y algunos de ustedes interpretarse como una línea ondulada o una línea recta o similares. Y a continuación, triángulo, también, podría tener sido orientado en cualquier número de maneras. Así que en resumen, incluso con algo que usted echa un vistazo y usted es como, wow, por lo simple, un niño podría dibujar esto, así que no realmente, a menos que estés super, super persuasiva y decirle a la computadora exactamente qué hacer. Así que si pudiéramos, si usted tiene otra hoja de papel, vamos a probar esto una vez más. Y voy a dar una Victoria otro ejemplo en la pantalla aquí. Y de nuevo, no dar la vuelta y no se fijan en las diapositivas. Y yo le daré un momento para pensar en cómo describir esto. No deje ver el miedo en sus ojos. [RISA] Y de nuevo, esta vez el apalancamiento algunos de esos robos de balón y tratar de conseguir casi todo el mundo al menos la respuesta correcta. AUDIENCIA: OK, tomar una pedazo de papel, mira en medio de ese pedazo de papel. En medio de esa pieza de papel, dibujar un cubo. [RISA] DAVID MALAN: ¿Qué hemos aprendido? Estábamos tan cerca. OK, repetir si se pudiera, para todo el mundo. PÚBLICO: En el medio de la pedazo de papel, dibujar un objeto, que se parece a un cubo. DAVID MALAN: OK, eso es todo lo que llegar a trabajar. Permíteme ser analítica y no tanto crítico, pero para hacer la reclamación que Victoria definitivamente parece estar pensando en muy abstracciones de alto nivel, que No es irrazonable. Porque de lo contrario, estaríamos todos ser bastante disfuncional, si tuviéramos que ser siempre tan precisa con todo lo que hacemos en el mundo. Pero decir que vaya a la middle-- pensamos que estábamos en una buena pista tan allí, como ir al mismo centro de la página y, a continuación, dibuje un cubo. Así que está pensando en abstracciones, porque ella todavía está viendo lo que está en la pantalla como en efecto un cubo. Pero hay tantas oportunidades para la interpretación allí. Y de hecho, hay tantos otras maneras en que podría expresar eso, lo que me propongo en un momento. Así que aquí tenemos una encarnación de la whoops-- picture-- encarnación de la imagen, por lo que una poco tridimensionalidad a la misma, lo cual es bueno. Aquí hay otro, donde usted tiene la mismo, a pesar de que es una especie de cubo abierto. Algunas personas tomaron un poco más plana, de dos dimensiones. Y eso está bien. Así que hay, de hecho, en el centro del papel. Éste creo que estará al igual, porque si nos vamos aquí, esto es lo que estaba describiendo. Así que ahora, permítanme proponer de qué otra podríamos describir esta situación. De vuelta en el día, uno de los más formas más comunes para aprender programación era escribir código, escribe líneas de instrucciones, que controlaba un poco tortuga en la pantalla. Logotipo y otras variantes de este era el nombre de la lengua. Y la tortuga vivía en un mundo. Así que supongo que esto rectangulares el espacio es su mundo. Y sería empezar por lo assuming-- realmente no sabemos cómo dibujar tortuga, así que vamos a hacerlo de esta manera. Y entonces él tiene una concha y luego tal vez algunos pies. Lo que podría tener esta pequeña carácter en la pantalla. Y el objeto de esta lenguaje de programación era obligar a la tortuga para ir hacia arriba, abajo, izquierda, derecha y poner su pluma o recoger su pluma hacia arriba, por lo que en realidad podría dibujar en la pantalla en este mundo rectangular muy plana. Así en el que pensé que podría estar pasando, y donde se debe tener en cuenta el buceo mentalmente a la hora de describir Instrucciones de manera más general, Me gustaría reclamar, se pone a su pluma en el middle-- y vamos a deshacerse de las tortuga, porque no puedo realmente mantenerlo dibujo muy bien. Y ahora, ¿cómo podrían Digo dibujar un cubo? Bueno, podríamos decir algo así como sorteo una línea diagonal noreste, por ejemplo, o en un ángulo de 45 grados hacia arriba. Y eso podría me han llegado aquí. Y estoy bastante lejos de un cubo. Pero ahora, yo podría decir algo al igual que un giro de 90 grados a la izquierda y trazar una línea de igual al noroeste longitud. Y podría seguir con direcciones similares. Y no va a ser fácil. Y, francamente, es probable que lo haría han estado aquí durante cinco minutos. Pero tal vez habríamos llegado a algo que, al final del día, termina siendo un cubo, pero practicado en el interior de esa abstracción hacerlo en tales mínima nivel que realmente no se puede ver lo que está haciendo hasta que el conjunto Lo que realmente está allí en la página. Y por lo que este es un principio general, de nuevo, de programming-- esta idea de abstracción. Es tan maravillosamente de gran alcance, porque, de nuevo, que acaba de decir, dibujar un cubo, que todos Nos prácticamente estaríamos asimilar muy rápidamente. Nos gustaría simplemente comprender, OK, dibujar un cubo. Puede que no sepamos la orientación, así que podría ser un poco más precisos, pero podemos imaginar general o saber lo que es un cubo. Y eso es útil, porque si cada vez que se sentado como programador en su teclado para escribir código, si tiene que pensar en tales un nivel bajo, ninguno de nosotros volvería a hacer nada. Y, desde luego, ninguno de nosotros lo haría disfrutar el proceso de escribir código. Sería como escribir en 0 y 1., que francamente no era todo lo que hace mucho tiempo los seres humanos estaban escribiendo código en 0 y 1.. Y nosotros muy rápidamente ocurrió Las Lenguas éstos mayor nivel C ++ y Java y otros. Así que vamos a probar esto una vez más, sólo para voltear las tablas, por lo que todos tener la oportunidad de pensar en lugar de la misma manera. Podríamos conseguir un voluntario más este tiempo para llegar a la pizarra y dibujar, No recitar? Sí, ok. Ben, vamos arriba. Y, Ben, en este caso, una vez que se frente a la junta, no mire a la izquierda, no se ven bien. Sólo hacer lo que su colegas aquí le dicen. Y para todos los demás en el cuarto, que ahora son el programador. Es el equipo. Y la imagen que he escogido con antelación es este de aquí. Están solo-- que están pensando de una broma divertida es todo. Así que sería alguien no desea voluntariamente la primera instrucción o declaración que debe La pluma de comando de Ben? Y haremos esto en conjunto, tal vez una instrucción de cada persona. ¿Lo siento? AUDIENCIA: Dibuje un círculo. DAVID MALAN: Dibuja un círculo es el primero que oí. AUDIENCIA: Encima de la tapa. DAVID MALAN: Encima de la tapa. OK, podemos dejar que se elimina, deshacer. Y ahora, a otra persona. Dan, tendría que ser cómodo ofreciendo la siguiente instrucción? AUDIENCIA: Claro, dibujar el centro de la parte inferior del círculo, con un small-- un poco pequeño espacio de eso, dibujar una línea recta hasta tres cuartos de la manera abajo del tablero un ligero ángulo a la izquierda. DAVID MALAN: Bueno. AUDIENCIA: ángulo leve. DAVID MALAN: Deshacer, Control-Z. DE ACUERDO. Andrew, que quieren ofrecer hasta la siguiente instrucción? AUDIENCIA: Claro. Desde el fondo de esa línea, un ligero angle-- más whoops-- tal vez alrededor de un tercio de la longitud [inaudible], ligero ángulo hacia abajo y como una tercio de la longitud de [inaudible]. Así que sí, a partir de ese punto, trazar una línea de un tercer de la longitud de la anterior la línea más a la izquierda. DAVID MALAN: Eso está bien? línea recta, que está bien? OK, Olivier, que desea para ofrecer la próxima? AUDIENCIA: [inaudible] en el parte inferior del círculo, [inaudible]. Dibujar en el lado derecho de [inaudible] centímetros. [RISA] DAVID MALAN: Creo que va a tiene que convertir eso es pulgadas aquí. AUDIENCIA: Stop. [RISA] DAVID MALAN: OK. [? Ara,?] Desea para ofrecer la próxima? AUDIENCIA: Dibuje un [inaudible] la parte superior [inaudible] de la misma. [Inaudible] círculo, dibujar a la [Inaudible] y dibujar [inaudible]. DAVID MALAN: bien, no más de deshacer. Vamos a hacer una o dos instrucciones más. Chris, que desea ofrecer uno? PÚBLICO: En la parte inferior del círculo, [inaudible] dibujar una línea igual slopping hacia abajo a la izquierda [inaudible]. DAVID MALAN: OK. ¿Andrés? Nos did-- Karim? AUDIENCIA: A partir de la línea derecha, el final de la línea izquierda, la parte inferior, vas a ir a la derecha sobre la misma longitud que la línea de estás en, al dibujo la derecha [inaudible]. [Inaudible] grados, por lo que [inaudible] grados en el lado derecho. DAVID MALAN: Está bien. Hagamos una pausa. No dar la vuelta todavía. Hagamos una pausa, y de que vamos probar uno de otro intento Antes de revelar a Ben lo que ha estado dibujando. ¿Se puede mezclar Ben la derecha- o en realidad, no, vamos a darle la otra tabla, aún mejor. Así que ahora me gustaría que alguien tomar más del enfoque que Victoria tomó antes, donde hablamos en un nivel más alto de abstracción y en tan sólo una oración o dos describen a Ben qué dibujar sin meterse en la maleza, por así decirlo, en este un nivel más bajo? Victoria. [RISA] AUDIENCIA: Dibuje una figura del hombre que camina. Y sus piernas y brazos tiene que ser el lado derecho. DAVID MALAN: OK, eso es todo lo que obtiene. Todo bien. ¿Por qué no nos revelamos a Ben lo que hizo. Así que un aplauso. Ese fue el más duro, tal vez. Así que a pesar de que estamos hablando en términos bastante tontas sobre apenas dibujo fotos, esperamos que pueda se puede apreciar realmente el grado de expresividad que podría ser necesario con el fin de decirle a un ordenador qué hacer. Y de hecho, el hecho de que Ben era capaz de dibujar esto tan rápidamente es una especie de prueba de uso de un idioma, tal vez un nivel más alto versión de Inglés, que le permite utilizar sólo palabras o escuchar las palabras de Victoria, que le permitirá éstos se basan simplemente abstractions-- una figura que caminaba a la derecha- ese tipo de cuenta un significado semántico a ella que no es casi tan obvio cuando estás a diciendo: poner su pluma, dibujar a la derecha, señalando a la izquierda. Y así esto, también, es muy común en la programación. Esto se dice que es como una lenguaje de muy bajo nivel, la programación en de 0 y 1 de si se quiere. Y esto sería un nivel más alto el lenguaje de programación en Java, o algo así. Un poco de una simplificación excesiva, pero eso es la clase como emocional la sensación de que se siente cuando utilizando un tipo de cosa u otra. Un poco de frustración aquí por la necesidad para tal precisión, pero la oportunidad a ser un poco más flexible con la interpretación aquí. Pero, por supuesto, los errores puede surgir como resultado. Si desea que en la casa- no va a hacer éste en class-- pero si desea traer un gol, Pensé que iba a sumergirse en esto. Así que si te gusta jugar a este juego con su otro significativo o los niños o similares, se podría disfrutar de eso también. Así que vamos a seguir adelante y mirar a una última Lo aquí por el pensamiento computacional. Y eso nos lleva a John Oliver, no para el clip que podría haber visto la noche anterior, sino a un tema relativamente reciente. Hace unos meses, Volkswagen tomó un poco de fuego antiaéreo por qué razón, si sabes? ¿Qué obtuvieron en problemas por? Sí, por lo que emissions-- estaban tratando de superar las emisiones pruebas esencialmente por tener su coches contaminan menos el medio ambiente cuando se están probando sus coches y contaminar el medio ambiente más cuando no se están probando los coches. Y lo que es cada vez más interesante en el mundo, ya que puede tener inferido de las discusiones de lo que es como- it-- carplay, el software de Apple para los coches y el hecho de que muchos cada vez más de nosotros tienen pantallas táctiles en nuestros coches, hay una cantidad alarmante del software en la gente coches hoy, francamente, se abre una lata entera de gusanos cuando se trata de la seguridad y el riesgo físico. Pero por hoy, vamos a centrarse sólo en lo que es involucrado en software de escritura que podría haber gamed el sistema. Para la definición de la problema, para los que no conocen, vamos a echar un vistazo a John Oliver. Y para aquellos familiarizados con el problema, vamos a ver lo en una lente a través de la diversión John Oliver también. Así que permítanme golpear juego en esto, pensar, la introducción de tres minutos. Maldición. [REPRODUCCIÓN DE VÍDEO] -Carros-- DAVID MALAN: Obviamente, en YouTube, es-- - --el personajes más inteligentes las películas de Rápido y Furioso. Esta semana, fabricante de automóviles alemán Volkswagen se encontró en medio de un escándalo de proporciones potencialmente criminales. -Volkswagen Se prepara para miles de millones en multas, posibles cargos criminales para sus ejecutivos, como la compañía se disculpa por manipular 11 millones de coches al ayudarla a vencer las pruebas de emisiones. -Ciertos modelos diesel fueron diseñados con un sofisticado software que ha utilizado la información, incluyendo la posición de la rueda de dirección y el vehículo velocidad, para determinar el coche era de someterse a las pruebas de emisiones. Bajo esta circunstancia, el motor reduciría las emisiones tóxicas. Pero el coche fue manipulada a la derivación que cuando se estaba siendo conducido. Las emisiones aumentaron de 10 a 40 veces por encima de los niveles de EPA aceptables. -Wow, De 10 a 40 veces mayor que la EPA permite. Eso es lo peor Volkswagen ha hecho nunca, es algo que se puede decir si que nunca había oído hablar de la Segunda Guerra Mundial. Pero tal vez el signo más seguro de cómo muchos problemas Volkswagen está en, es que las personas en el superior han renunciado. El CEO renunció el miércoles después de luchando para hacer control de daños, diciendo que era infinitamente lo siento, lo cual sonaba muy bien hasta que resultó él era sólo el 10% lo siento pero había manipulado su boca para inflar artificialmente su sorriness. Y mientras tanto, los Estados Unidos de Volkswagen jefe tenía una disculpa de su propia. -Vamos A ser claros acerca de esto, nuestra empresa fue deshonesto. Y en mis palabras en alemán, nos han atornillado totalmente hacia arriba. Sí, pero totalmente atornillado arriba no son obras alemanas. Y la lengua alemana tiene muchas frases bonitas para describir situaciones como ésta, tales como [Alemán], lo que significa más o menos, la tristeza que viene de las mentiras relacionadas con el negocio, o [Alemán], lo que se traduce como avergonzar a los padre que implica nubes de la gasolina. Es un idioma hermoso. Simplemente navega fuera de la lengua. Y, por cierto, mientras que el hombre de disculpa puede haber sonado sincera, vale la pena señalar que estaba hablando en un partido oficial de lanzamiento para el 2016 Volkswagen Passat, lo que significa que en breve después de decir lo siento, dijo que esto. -Muchas gracias por venir. Disfruta la tarde. Lo siguiente es Lenny Kravitz. [REPRODUCIENDO MÚSICA] -OK, OK, poniendo fin a su disculpa con hasta el próximo Lenny Kravitz no lo hace gritar contrición sobria. Es un grito, nos preguntamos Bon Jovi, y él dijo que no. marca de Volkswagen tiene sido gravemente dañada. Y, francamente, su nuevo anuncio campaña no está exactamente ayudando. - [Alemán], que en Volkswagen gustaría para disculparse por engañar con usted nuestros vehículos. [FIN DE REPRODUCCIÓN] DAVID MALAN: Así que esto era una rodeo de-- sorry-- esto era una manera indirecta de la introducción de un problema fundamental en software, que es que se necesitará para detectar ciertas condiciones. Y así, la cuestión que nos ocupa aquí Es decir, ¿cómo funciona un coche potencialmente, como se aplica en el software por estos programadores, detectar que en realidad está siendo probado? Así que para ser súper clara, lo que estaban haciendo era, en ambientes donde los programadores pensaron el coche estaba siendo probado, que de alguna manera hicieron el coche emite menos emisiones, menos las emisiones de humos, por lo menos tóxicas y tal. Pero cuando es normalmente conducción en la carretera, sería simplemente emitir tanta la contaminación, ya que quería. Entonces, ¿cómo podríamos escribir la pseudocódigo para este algoritmo? ¿Cómo podríamos escribir el pseudocódigo para el software que se ejecuta en el coche? Es decir, en pocas palabras, se reduce a algo como esto. si se prueba, emitir menos. otra cosa emite más. Pero eso es un poco nivel demasiado alto, ¿verdad? Vamos a tratar de bucear en cuanto a lo que este abstracción de ser medios ensayados. En otras palabras, incluso si usted no sabe nada sobre los coches, ¿qué tipo de preguntas pueden pedir el fin de determinar si que está siendo sometido a prueba, si usted es el coche? ¿Qué características podría ser presentar si un coche está siendo probado? AUDIENCIA: Equipamiento de pruebas. DAVID MALAN: Equipamiento de pruebas. Así que si el equipo de prueba cerca, a continuación, emitir menos. Por lo que podía imaginar la implementación que con algún tipo de cámaras o la detección de lo que le rodea. Y permítanme proponer, que sólo se siente demasiado complicado que en realidad tienen adicional de hardware sólo para ese fin. AUDIENCIA: Si estás en parque, si la campana está abierta. DAVID MALAN: En parque o capó abierto, por lo que es bueno. AUDIENCIA: Y coche en marcha. DAVID MALAN: Así que es un poco más concrete-- y coche en marcha. Así que esta sería la conjunción de una algunas condiciones diferentes, si se quiere. Así que si el coche está en el parque, e incluso aunque esto es una cosa muy mecánico normalmente, pude imaginar un software de escritura, sobre todo porque no hay a menudo hay una luz en estos días, Me podía imaginar que exista software que se puede consultar la palanca de cambios o lo que no, ¿está usted en el parque, son que en la unidad, usted es a la inversa. Y que pueda volver una contestar eso es un sí o no a ese tipo de preguntas. Y para que pudiera responder también, probablemente, una pregunta como es el capó abierto. Tal vez, hay algún tipo de sensor que o bien me devuelve un 1 o 0, verdadero o falso, el capó está abierto. Y luego coche en marcha, que podría detectar que de alguna manera a través de qué mecanismo? Al igual, el coche está funcionando, lo podría detectar que se trata de el, podría detectar alguna manera que el vehículo está en movimiento? Público: RPM. DAVID MALAN: Sí, por lo que hay siempre que la aguja que le indica cuántas rotaciones por hora de las ruedas están experimentando. Y por lo que yo pude ver eso. Y si no es 0, que, probablemente, significa que el coche está en movimiento. Pero tenemos que ser una poco cuidadoso allí, porque-- vamos a simplificar esto- si acabamos de decir, si el coche en marcha, no queremos que acaba de emitir menos, queremos si el coche está en marcha y está siendo probado. Así que hay algunos otros Los ingredientes que la gente han planteado la hipótesis de que el software está haciendo, porque ausente el código fuente real, sólo se puede especie de deducir de la efectos físicos del coche en cuanto a lo que podría estar pasando por debajo la campana en el software. Así que si coche en marcha y tal vez, por ejemplo, las ruedas traseras no se mueve, Cuál podría ser indicativa de algún tipo de prueba? ¿Qué estoy insinuando aquí? Sí, tal vez, es sobre uno de esas cosas de rodillos, donde al igual que las ruedas están girando en el frente o en la parte posterior, dependiendo de si se trata de la rueda delantera o tracción trasera, así que la mitad de las ruedas están en movimiento, pero el otros dos no, que Es una situación extraña en el mundo real. Si usted está conduciendo en el carretera, que no debería ocurrir. Pero si estás en un almacén en algún tipo de sistema de rodillos, que, efectivamente, podría suceder. Creo que la gente también propusieron que tal vez, si el coche está en marcha y de dirección no rueda en movimiento, que también podría ser una señal, porque eso es razonable para como una recta en una carretera. Pero incluso entonces, el humano es probablemente moverlo un poco o duda en unos pocos segundos. O el curso de una minutos, las probabilidades son que no es va a ser fijado en exactamente la misma posición. Así, en otras palabras, puede tomar resta, está siendo probado, y romper esa funcionalidad en estos ingredientes componentes. Y eso es realmente lo que Volkswagen ingenieros de alguna manera lo hicieron. Ellos escribieron el software conscientemente detectar si el vehículo está siendo probado, Por lo tanto, emiten menos, otra cosa emitir en la forma habitual. Y el problema aquí, también, es que el software no es algo que realmente puede ver a menos usted tiene el llamado código fuente. Así que hay dos tipos diferentes de code-- al menos dos tipos diferentes de código en el mundo. Hay algo que se llama fuente código, que no es a diferencia de lo hemos estado escribiendo, código fuente. Este es el código fuente escrito en un lenguaje llamado pseudocódigo, que es algo similar al Inglés. No hay una definición formal del mismo. Pero C, y Java, C ++, las son todos los lenguajes formales que, cuando se escribe en ellos, lo que tiene es un archivo de texto que contiene el código fuente. Pero también hay algo en el mundo llamado código máquina. Y código de máquina, por desgracia, es sólo de 0 y 1 de. Así código de máquina es lo máquinas entienden, por supuesto. El código fuente es lo que entienden los humanos. Y, en general, pero no siempre, hay un programa de que utiliza un programador que toma fuente código y lo convierte en código máquina. Y ese programa es generalmente se llama un compilador. Por lo que su entrada es código fuente, su salida es el código máquina, y el compilador es un pedazo de software que hace que el proceso. Por lo que este hecho muy bien a los mapas nuestras entradas, salidas, algoritmos. Pero esto es una encarnación muy específica de eso, lo que quiere decir que, incluso si usted es dueño de una de Volkswagen coches que es culpable de esto, no es que sólo se puede abrir la capucha o abrir el manual del usuario o buscar en el código fuente, porque por el momento que llegue a su coche en su camino de entrada, ya han pasado convertido en 0 y 1 de. Y es muy difícil, por no decir imposible, pero es muy difícil deducir mucho de nada de sólo mirar la subyacente de 0 y 1 de. Para que pueda averiguarlo, en última instancia, si a entender cómo una máquina operates-- Intel dentro-- si se entiende la arquitectura Intel, pero es muy consumidora de tiempo. E incluso allí, es posible que no ser capaz de ver todo que el código puede hacer realmente. Cualquier pregunta sobre este o esta tipo de proceso más general? Y, de hecho, podemos relacionar esta discusión a la discusión de ayer de Apple. Esto, también, es por eso que el FBI no puede simplemente ir a buscar en el teléfono del sospechoso y encontrar las líneas de código, por ejemplo, que permitirá el código de acceso o permitir que el retraso de 80 milisegundos. Debido a que en el momento en que es en el iPhone de los compañeros, ya han pasado convertido a 0 y 1 de. Bueno, vamos a hacer una pausa aquí para nuestro mirar en el pensamiento computacional. ¿Por qué no tomamos un descanso de 15 minutos. Y cuando volvamos, vamos a echar un vistazo a la programación en sí y empezar a trazar algunos de estos conceptos de alto nivel a una transferencia real, si lúdico, lenguaje de programación.