DAVID Malan: Benvido de volta, todo o mundo. Entón, onte, vai lembrar que Nós nos concentrados sobre estes temas aquí. Por iso, tivemos catro topics-- global privacidade, seguridade e sociedade; tecnoloxías de internet; cloud computing; e, finalmente, o desenvolvemento web. Alguén ten a ancho de banda ou tempo para asistir a un pouco de John Oliver última noite? É realmente moi divertido, se non un pouco asustado. Calquera preguntas sobre calquera cousa que fixemos onte? Posibles aclaracións? Todas as preguntas que quere facer Asegúrese de que tocamos hoxe dalgún xeito? Slater tan limpo. Entón, o que está na axenda para hoxe? Entón eu penso que ía comezar hoxe cun ollar para o que adoita coñecido como thinking-- computacional en o risco de simplificar demasiado, pensando como un ordenador, é posible pensar como un enxeñeiro, e intentando empezar a organizar os seus pensamentos ou para lle dar unha mellor sensación de que toma parte en realidade comandando un ordenador para facer algo por medio de programación. E nós imos mantelo nunha fermosa de alto nivel, moi ben inglés, pero tentar empregar de familiares exemplos de formalizar como ía sobre a resolución de problemas. E imos revisitar algúns CS temas, como abstracción, que subiu un par de veces onte algoritmos e logo representación. E é aí onde imos comezar hoxe en só un momento. Entón imos dar un ollo a programación. Imos dar un ollo a algúns construcións fundamentais co cal pode estar familiarizado e pode ata atopar bastante intuitivo. Veremos, de feito, nunha mostra de programación ambiente que é moi accesible, moi brincallón, e de feito obxectivo para as idades de 12 e por riba. Imos pasar uns minutos hai e logo, levar as cousas a un nivel máis baixo e realmente falar sobre algunhas das os algoritmos e estruturas de datos, por así dicir, que programadores adoitan usar para resolver problemas moito máis eficientemente que pode ser capaz de facer sen eles completamente. Logo despois do xantar, imos dar un ollo en pilas de tecnoloxía, que é só un xeito elegante de dicir coleccións de tecnoloxías que pode usar para resolver problemas. E imos falar do alfabeto Sopa de linguas que existen today-- Java e Python e C ++ e PHP e Ruby e todo tipo de cousas. Imos dar unha breve ollada en patróns de deseño. Programadores, co paso do tempo, teñen metodoloxías adoptadas que tenden a axudalos resolver os problemas máis facilmente. Cando comezar a ver-se escribir o mesmo tipo de código de novo e de novo, persoas formalizar estas repeticións e nomes atribúen a eles e logo, usalos e promove-los, en última instancia. E nós imos falar un pouco sobre estratexias móbiles, como o que significa, en realidade, facer unha aplicación móbil ou un sitio web móbil. Facelo para Android? Facelo para iOS? Facelo por tanto daqueles? E cales son as vantaxes e desvantaxes? E entón, finalmente, imos dar unha programación web ollar, que é un termo colectivo Realmente describindo calquera momento escribir software que é destínase a realizar na web, en teléfonos ou escritorios ou portátiles. Imos dar unha breve ollada en bases de datos e deseño nel, mesmo porque case calquera aplicación baseado na web interesante nos días de hoxe ten algún tipo de base de datos. En caso contrario, sería ser só contido estático. E unha base de datos permítelle cambios ao longo do tempo, a si mesmo ou usuarios. E nós imos considerar como ía sobre a creación Esta base de datos e do tipo de xerga que poida xurdir en un enxeñeiro de discusión nun cadro branco cando realmente aplicar unha aplicación por primeira vez. Imos falar brevemente sobre APIs, servizos útiles que pode usar para estar na ombreiros dos outros, as empresas ou individuos, e resolver o seu propios problemas máis rapidamente. E entón nós imos xogar quizais algo con JavaScript, unha linguaxe de programación que se usa tanto en navegadores nos días de hoxe, pero tamén en servidores. E, quizais, imos revisitar, se o tempo permitir, algúns dos hands-on que stuff web fixo onte e integrar os dous xuntos, antes de pechar. Así, con isso-- que é ahead-- é Hai algo falta que Quere estar seguro de que introduce e tocar nalgún punto. Se é vén á mente, trae-lo antes do tempo. Pero por que non comezar cun ollar pensamento computacional. E déixeme propoñer que pensamento computacional é, de novo, unha especie de descrición de alto nivel de o que un científico da computación pode facer. E, de feito, imos comezar con tres ingredientes que Pode poñerse en pensamento computacional. Esta é só unha forma de describilo. Nós seguramente podería definir isto en calquera número de formas. Pero déixeme propoñer, por unha cuestión de hoxe, que os problemas do mundo, todos os problemas do mundo, cando foi abordado por un científico da computación podería ser visto como o que imos entradas de chamadas, os cales se alimentado no que chamaremos algoritmos, que, a continuación, producen saídas. Noutras palabras, a totalidade mundo da reivindicación I de solución de problemas pode ser destilada en estes tres ingredientes. Entón, o que quero dicir con entradas? Entradas é o que está a entregado, a fin de resolver. Por exemplo, aquí está un problema antigo da escola. Se eu tivera un libro de teléfono aquí e Quero ollar algo dentro del, esta é a miña entrada. Teño 1.000 ou así páxinas dun libro de teléfono. Esta é a entrada ao meu problema. E quero atopar algo como Mike Smith, entón correo cuxo nome e número é espero que este libro de enderezos. Este é antes dos días de célula teléfonos, para que eu poida non só buscalo. Entón eu teño que facelo de idade escola e, de feito, a investigación estas entradas para algunha resposta. E esa resposta é só ir a ser chamado de saída. Así, a entrada é a lista telefónica. O algoritmo é todo o conxunto de pasos que eu uso para atopar Mike Smith. E a saída é, esperanza, número de teléfono de Mike Smith. E este, logo sería só representante máis ningún problema para con vostede son entradas handed e queren producir resultados. Entón, antes de considerar o proceso polo que podemos resolver este problema, atopar Mike Smith e algo así, imos considerar a primeira e as entradas e saídas last--. Fisicamente, por suposto, a entrada aquí é unha morea de papel pegadas en conxunto baixo a forma dunha lista telefónica. Pero os ordenadores, portátiles course-- e escritorios e mesmo teléfonos estes son os dias-- dispositivos electrónicos. E ao final do día, o que está a única entrada para un ordenador? Ben, é algo así como este cable de alimentación aquí. Eu liga-lo na parede, e Eu recibín un fluxo de electróns, o que me permite realizar a máquina. Ou que eses electróns son creado por medio da miña batería. Con todo, ao final do día, que é o único que vai no meu portátil. É moi interesante material é, en definitiva saíndo si por medio da impresora ou a pantalla ou audially ou similares. Entón, se todo o que temos como a nosa entrada fundamental para un ordenador é a electricidade, entón só electróns entrando e ou fóra, e así como podemos utilizar esta entrada para realmente representar a información? Noutras palabras, como é que imos chegar a partir dun simple fluxo de electricidade de representar real números ou letras reais ou imaxes reais na pantalla ou películas reais ou correos electrónicos ou calquera número destas conceptos de nivel superior, se quixeren, que, no final do día, de algunha maneira, han de ser almacenados nesta dispositivo mecánico electrónico usando só aqueles simples ingredients-- electróns que entran e saen? Así, parece que, Na forma máis simple, o único tipo de estados Teño no meu mundo, entón para speak-- condicións Na miña mundo-- sexa Teño electróns fluíndo, electricidade fluír, ou fago não-- etc., off. E imos formalizar dentro e fóra, como un científico da computación pode, con só 1 e 0. Nós só describir algunhas arbitraria pero número consistente a el. 1 significa en, 0 significa desactivado. Ou tamén pode ver iso como verdadeiro medio de falsos e medios. Tamén pode facer negro e negro ou vermello e azul. Só ten que dous descritores. E un ordenador científicos xeralmente só usar 0 e 1. Polo tanto, se este é o caso, o meu único alfabeto está formado por 0 e 1 é, como podería chegar ata o número 2 nun ordenador, e moito menos o número 3 ou unha letra do alfabeto ou unha imaxe ou unha película? Como podemos tipo de arrincar -Nos a este principio básico de 0 e 1, e de feito, representar algo máis interesante? Ben, imos poñer esta pregunta agardando por un momento e considerar algo espero familiarizado, mesmo se realmente non teño pensado sobre Lo en calquera detalle a 10, 20, 30, 40, 50 máis anos. Isto é o que? Como pronúnciase iso? Non é unha pregunta capciosa. Un número, pero o que é? 1, 2, 3, ou 123. E eu me gustou como dixo 1, 2, 3, porque esta é unha forma de velo. 1, 2, 3, que é unha secuencia de tres símbolos. É imaxes que nos Agora temos palabras para. E se tipo de le-los todos en conxunto, un ser humano típico, en inglés diría 123. E iso é unha especie de concepto de nivel superior, Se sente como un número razoabelmente grande. Pero como é que imos chegar alí? Ben, pode ser un tempo dende xa penso niso como este, pero volta no meu día, eu tipo de aprendín iso como a columna do 1, os 10 de columna, ea columna 100 de. Así como di Lakisa, é 1, 2, 3, pero tamén é 123. Pero como é que imos comezar a partir de a primeira á segunda? Ben, normalmente facer en columna a 100 do, eu teño un 1. Entón, iso é como dicir 100 veces 1. E, a continuación, na columna 10 da, eu teño 2. Entón, iso é como dicir 10 veces 2. Na columna 1 do, teño 3. Entón, iso é como dicir 1 veces 3. E se eu engadir isto en conxunto, isto, por suposto, é 100 máis o 10 máis 3. E oh, é por iso que eu recibín este maior noción de nivel de 123. É só matemática básica, en que estes símbolos teñen pesos a eles, se Vai, espazo reservado ou valores da columna. E xa que se multiplican todo a fóra, eu recibín este número. Entón, como moitos de vostedes saben falar binary-- 0 e 1's-- como un ordenador? OK, perfecto, ninguén, ou ningún de pensas que facer. Pero gustaríame afirmar que en realidade xa saben diso. Nós só necesitamos tipo de axustar o noso modelo mental algo. Pero o proceso é exactamente o mesmo. Déixeme deixar un presente alí enriba e en vez tirar isto para abaixo por un momento. No mundo dos ordenadores, temos só 0 e 1 .. E así a cousa que é cambiará é o que? Ben, o meu mundo humano, a sistema decimal, decembro significado 10, Teño cantos díxitos á miña disposición? 10, non? 0 a 9, claro. E é por iso que temos a lugar 10 do lugar e os 100 da. Onde é que vén? Ben, isto é 10 elevado á potencia de 0. Este é 10 elevado á potencia de 1, 10 á potencia de 2, e así por diante. Simplemente continúa multiplicando as súas columnas 10, comezando con só 1 en o máis á dereita aquí. Así, no mundo de ordenadores, se só significou bi binary-- 2-- ou 0 e 1., nós só realmente precisa cambiar a base do que a matemática. Polo tanto, noutras palabras, agora imos ten a columna 1 e as-- onde está ese going-- columna do 2, columna do 4, e quizais máis aló. Por que é iso? Ben, este é 2 o poder 0-th. Este é 2 a 1. Esta é 2 a 2, e así por diante. Así, mentres que aquí, temos 1, 10 do, 100, de 1000, de 10.000, 100.000 da de, 1 millóns, etc., aquí que 1, 2, 4, 8, 16, 32, 64. Simplemente continúa multiplicando por 2, no canto de manter multiplicando por 10. Entón, agora, se o obxectivo de man é representar números usando só 0 e 1s, imos considerar como chegar alí. Isto, naturalmente, é o patrón de 0 0 0, pero o número conceptualmente que iso representa? Ben, 4 veces 0, máis 2 veces 0, máis 1 veces 0, imos engadir os xuntos. 4 0 veces, por suposto, 0, dous veces 0 é, por suposto, 0 máis 1 veces 0 é, por suposto, 0. Así ah, iso representa o número que seres humanos saben 0. Ben, agora, imos moi Avanzar rapidamente rápido. Se eu non estou representando vez 0 0 0, pero imos facer 1 0 1, que podería ser como Lakisa, máis cedo, sería só pronuncialo lo 1 0 1. Pero agora, como é que imos levala ao maior nivelar o número de nós, seres humanos podería saber? Entón, cal é ese número? E 5, o número que coñecemos como 5. Ben, por que isto? moi ben, podemos tipo de atravesa-la metodicamente 4 veces 1, 2 veces 0, 1 veces 1. Engadir os xuntos, entón isto é 4 + 0 + 1. E iso é, en realidade, 5. Entón, está quedando un pouco entediante agora facendo a aritmética de novo e de novo. Pero o proceso é exactamente o mesmo. O único que ten cambiou o noso mundo é que as nosas columnas son 1, 2, 4, 8, 16, etc., en vez de 1, 10, 100, 1000. E iso é só porque o noso alfabeto ten encollido de 0 a 9 para só 0-1. Así como unha pequena proba aquí, como sería Representa o número 7 en binario? 0? Ben, 0, quere dicir 0 0 0? Dicilo de novo, Karina. Perfecto. Por que é iso? É efectivamente 4 máis 2 máis 1. Boísimo. Como representamos algo another-- como sobre o número 2? Close, pero detrás. Entón, o que é iso? É 4 máis 1, de xeito que é 5 de novo. Entón what's-- Sinto moito, Karina? 0 1 0. 0 1 0 sería 2, porque unha vez máis, mesmo se especie de non ir para fóra en ti, só facer a matemática. 4 veces 0, 0, 2 veces 1 e 2, 1 veces 0? 0. Polo tanto, este é o número que coñecemos como 2. Como sobre o número 8? Hm? Bo. Entón nós medio que precisa outro espazo reservado. Necesitamos 1 0 0 0. E iso é verdade da nosa especie do sistema decimal da vella escola. Como representan o número 1000? Ben, parecería ser tipo de nunha situación difícil, Se pedirlle para representar o número 1000, porque, mesmo se se dá como 9 Destes, 9 destes, 0 Destes, que é o maior número que ten, non chegou a alcanzar a 1.000. Entón, se 1000, só precisa doutro posición, de modo que pode facer 1 0 0 0, ergo o número 1.000. Entón, agora, imos mapear este tipo de discusión conceptual de volta ao hardware, onde unha vez máis, a entrada era só este pequeno cable de alimentación, electricidade entrando e saíndo. E así, por que ser mapeados dende aquí para alí, así, o que realmente necesitamos? Ben, pode pensar de estar dentro dun ordenador, unha morea de lámpadas, se quere. Están realmente chamados transistores. E transistores son só cambia que tanto pode ser activado ou desactivado. Así, pode pensar nun transistor que está está permitindo que a electricidade flúa e un transistor que está fóra como deixar electricidade a partir de fluír. E no canto de tomar sobre as luces aquí, por que non podo facer este tipo de novo estilo escola. Polo tanto, este pode ser un 1, unha lanterna estar en, só un pouco aínda. E iso pode ser un 0, e agora está fóra. Entón, usando este dispositivo físico, eu poden agora representar o sistema binario. Eu só teño dous estados. Non importa o que color que é ou o que é. Todo o que importa é que eu teño un estado en e outro estado desconectado. Entón, usando o meu teléfono aquí, como fago representan o número que coñecemos como 0? Ou, dito de forma equivalente, o que número que estou representando agora? 0, porque o dispositivo está apagado. E se eu fai iso? E agora, como fago representan o número 2? Me pode prestar o seu teléfono aquí, como fixemos onte? Entón imos ver, entón se eu queira representar o número 2, que é o número 2? Non. Número son eu accidentalmente representando aquí? Este é realmente o número 3. Entón, cal é o que quero para desactivar? O teléfono negro ou- ben, se they're-- teléfono negro ou o teléfono branco? O teléfono branco. Entón, se eu desactivar isto e nós aliñar-lo aquí, temos un 1 no lugar de 2 e un 0 no lugar o 1 de. E por iso estou agora representando o número 2. E, por suposto, sería o número 3, porque agora ambas estas luces están ligados. E eu vou deixar por aquí, pero é lóxico se eu queira representar o o número 4 ou 8 ou superior, Vou ter máis teléfonos. Pero iso é todo o que está pasando. Entón, se xa escoitou falar que dentro um-- agradecer ordenador você-- é millóns de transistores, que é só a millóns de pequenos conmutador pouco. E non son luz lámpadas que se ligan e desconectan, pero non quere permitir que a electricidade a fluír en algún lugar ou para-lo. E entón hai o dous Unidos-- activado ou desactivado, activado ou desactivado. Por iso, parece agora ter esa capacidade para representar este concepto que nós queremos hardware real. Pero todos temos agora é a capacidade para representar números que parece. Entón, como é que imos representar letras do alfabeto, os cales Parece que o próximo tipo de recurso que Quere engadir a un ordenador moderno xa que ten números? E, de feito, se pensar sobre TI, historicamente, ordenadores aparecen realmente para servir como calculadoras numericamente. Pero, por suposto, estes días, eles fan moito máis. Mesmo cando comezar, ten adoita ver unha ou máis palabras. Así como representar palabras, Se todo o que tes é, de novo, electricidade ao final do día, ou equivalentemente 0 e 1.? Si. Si, quero dicir, nós medio que fixo iso onte dalgún xeito, en que, nalgún momento, Eu creo que eu arbitrariamente dixo que, se queremos representar o letra A, poderíamos só chamar aquilo de 1. Foi no contexto de cifrado, onde nós só precisaba dalgún tipo de código, algún tipo de cartografía. Así, se cadra a será representada como 1, e B será representada como 2, e Z será representado como 26, por exemplo. E entón a única excepción é que, se eu son indo para codificar letras nos meus correos electrónicos ou nas miñas mensaxes de texto como números, todos vostedes Ten que de acordo en usar o mesmo conxunto de convencións. E, de feito, o mundo fixo exactamente iso. Hai un sistema no mundo chamado ASCII, American Standard Código para intercambio de información, que é simplemente unha decisión algúns anos atrás, que os seres humanos fixo que decidiu que un será igual, non 1, 2, e 26, e por iso é un forth-- pouco diferente-- pero 65, 66, 67. E eu vou tirar unha gráfico en só un momento. Pero é arbitraria. Pero iso non importa que é arbitraria. O mundo ten só ser consistente. Agora, máis recentemente, hai algo máis extravagante chamado Unicode, xa que o tipo do mundo que conta, logo de inventar ordenadores, que hai máis do que ben 256 símbolos no mundo que pode querer representar, especialmente cando introducir idiomas asiáticos e outras simboloxías que precisan de máis expresividade do que pode caber na versión máis antiga do este código, que foi chamado ASCII. Entón Unicode realmente permite use máis 0 e 2. En particular, queda escoitando o bytes palabra na sociedade e mesmo só onte. E un byte é o que de novo? ¿Que é un byte? É só 8 bits. E o que iso realmente significa? Ben, iso significa que, en principio, cando estabamos falando de par e eu estaba a usar arbitrariamente tres bits cando estabamos falando binary-- lugar o 1 de, 2 do lugar, ea 4 de lugar-- ben, un byte só significa que está falando non en unidades de tres mais catro, cinco, seis, sete e oito, o que nos dá lugar 8 de, 16 de 32, de 64, de, e 128 do. Noutras palabras, un bit non é todo tan útil unha unidade de medida, porque é só como un minúsculo peza de información, activado ou desactivado. Entón, hai uns anos, o mundo só decidiu É un pouco máis cómodo falar en termos de bytes, oito cousas á vez. E así así naceu a noción dun byte. E así temos oito bits aquí. E verifícase se, tamén, para semellante razóns, o mundo decidiu anos atrás que para representar carta ASCII, está indo a usar unidades de 8 bits. Así, mesmo se non fai precisa que moitos, está sempre vai utilizar 8 bits para representan unha letra do alfabeto. E iso é conveniente, porque entón se recibe unha mensaxe que ten un 0 0 0 1 1 1 1 0 seguido por outra 1 1 1 0 1 0 0 1, polo que se recibe 16 bocados, o mundo pode só supoñer que o primeiro 8 é unha carta eo segundo 8 son outra carta. Non importa cantos existen. Só importa que estamos todos de acordo cando estamos interpretando estes bits. E este foi só aleatoria. Isto significa algo, pero eu non fixen realmente pensar sobre o que quere dicir. Polo tanto, é unha pequena mentira branca. Orixinalmente, ASCII realmente utilizado soamente 7 bits. E o oitavo bit é chamado ASCII estendido. Pero o punto é, en definitiva, o mesmo. O mundo en xeral estándar en 8 bits. Polo tanto, este parece ser un pouco limitante porque eu só podo representan o capital A, capital de B a Z. capitais Pero, en realidade non, se eu for a-- hai unha morea de recursos en liña, por exemplo, asciitable.com, este vai ser un pouco esmagadora en primeiro lugar. Pero vou salientar o que é importante aquí. Isto só acontece de ser-- e eu vou walk-- veremos, se eu pasar por riba aquí. Aquí está, no decimal columna, o número 65. E na carta columna da dereita carácter, Chr, é a letra A. E pode ignorar, polo momento, todo no medio. Este é hexadecimal, octal, e un código HTML. Para este sitio está só tentando xogar unha morea de información para ti dunha vez. Pero todo o que nos interesa é o decimal columna ea columna de caracteres. Entón, por esta lóxica, o que é o número que o mundo decidiu representa unha minúscula un? Si, 97. E só para confundir potencialmente algo, o número ten o mundo decidiu representaría o número 1? Seguro, porque nós-- 49, parece aquí, abaixo na parte inferior esquerda. Agora, o que quero dicir con isto? Así, verifícase que en sistemas de ordenador, hai xeralmente un diferenza fundamental entre un número e un personaxe. Un número é o que aprendeu crecendo cando nós super mozo na escola. É cousas que contan con. Pero un personaxe é só unha forma, un glifo, por así dicir, na pantalla. Agora, nós, humanos, especie de ver algo que se parece con isto. E nós dicimos, oh, que é o número 2. Pero non, iso é só un símbolo que parece como o que sabemos como o número 2. E así hai esa distinción fundamental entre os números reais e personaxes. Este é un número. Pero, xeralmente, na contexto dun ordenador, Se en vez ver algo así quoted-- e non sempre Ten que ver citado, pero por unha cuestión de discussion-- se ve comiñas en torno do número, este é agora un personaxe. Entón ese número 2 por baixo a capa interior dun ordenador sería representada cun estándar de bits que representa o número 50 segundo o gráfico en liña. Con todo, se un ordenador só ve iso, esta sería representada co patrón de bits 0 0 0 0 0 0 1 0. Tendo en conta que, este personaxe sería en realidade, ser representado as-- e agora, Teño que pensar un pouco harder-- de xeito que este personaxe ía ser representado con 0 0 1-- o que eu teño aquí? 0 0 1 1 0 0 1 0. Como eu fixen iso? Ben, este é o número 50, se multiplicala lo usando estas columnas, este é o número 2, e así é por iso que hai esa dicotomía. E este é só un provocación agora a recursos que hai en linguaxes de programación que imos tocar pronto máis tarde hoxe. En linguaxes de programación, ten, xeralmente, pero non sempre, as cousas chamar diferentes tipos de datos. Noutras palabras, un programmer-- cando el ou ela está escribindo, programador comeza a decidir o que formato para almacenar os seus datos. Pode almacenar datos como números brutos, como o número 2. Ou pode almacena-los como cordas, ou secuencias de caracteres que, en xeral, expresa con citas na súa linguaxe de programación. Pode que as cousas called-- Vou simplificar e chamalos Números de real, de xeito que os números non son números enteiros, como o número 2, pero os números como 4,56. Entón números reais tamén pode teñen puntos decimais, de xeito que é unha persoa diferente fundamentais peza de datos nun computador. E entón pode ata ter outros tipos de datos aínda. Entón, iso é só un teaser realmente de a máis simple das decisións de deseño que un programador pode fan debaixo do capó. Entón dúbidas só aínda? Entón, imos tratar de facer iso un pouco máis real. Este equipo non é moito máis en uso. Pero a maioría de todos nesta sala probablemente medrei con e aínda usa discos duros dalgún modo. Aínda que a maioría dos nosos portátiles non teñen dispositivos que operan como este, en vez portátiles hoxe en xeral teñen unidades de estado sólido sen partes móbiles. E que tende a ser máis caros, sentímolo, pero un pouco máis rápido e um-- ben, moitas veces, moito máis rápido, que é unha das razóns. E tamén non fai xera tanto calor. Pode ser menor, polo que é xeralmente un líquido positivo. Pero iso permítenos mapear unha pouco máis concretamente o que estamos a falar sobre a 0 e nivel 1 da empresa a un dispositivo físico. É unha cousa para min falar preto de 0 e 1 en termos de do meu teléfono ou abstractamente en termos de interruptores sendo conexionado e apagado. Pero o que acontece cos discos duros? Nos seus portátiles, se ten un maior un, ou no seu ordenador de escritorio, ou seguro en servidores hoxe, onde ten discos duros que teñen un terabyte de espazo, 4 terabytes de espazo, ben o que significa isto? Un disco duro de 1 terabyte de medios espaciais hai 1 billón de bytes dentro del de algunha maneira, ou equivalentemente 8 billóns de bits dentro. 1 terabyte sería 8 terabits ou 1 billón de bits, o que significa que se ten un disco duro, ten de algunha maneira ou outros de un billón de 0 do e 1 de dentro del. E se nós simplemente dar un ollo a un imaxe arbitraria dun disco duro representante, iso é o que un disco unidade pode tipicamente ollar como no interior. É, tamén, é tipo como un lector de fonógrafo vello pero normalmente con varios rexistros dentro, polo tanto, para speak-- múltiple sopandas, como son chamados, discos circulares de metal, e a continuación, unha cabeza de lectura pouco, moi parecido un xogador gravado ancián. E que a cabeza de lectura se move cara atrás e adiante e de algunha maneira le os bits. E o que é sobre estas sopandas, mesmo aínda que, humanos, non pode velos, quere en realidade é, neste marco, hai minúsculas partículas magnéticas pequenas. E mesmo se ten tempo esquecido como a electricidade funciona, unha partícula magnética que cobra en xeral ten unha extremidade norte e un sur end-- tan norte e sur. E así o mundo só decidiu hai algún tempo atrás que, se un protocolo esencialmente magnética está aliñado como este, norte-sur, imos chamar que unha 1. Se é en vez sur-norte, imos chamar iso dunha 0. E por iso, se ten polo súa disposición dun billón minúsculo magnética particles-- e, esperamos, inxenuidade hardware Para inverter os que a rodean como ve fit-- se quere representan un grupo enteiro de 0 do, vostede só precisa 8 partículas magnéticas todos aliñados así. E se queres para representar oito 1s, só Debe 8 partículas magnéticas aliñadas volta atrás para facer así. O que quero dicir con partículas magnéticas? Francamente, todos estes anos máis tarde, o que aínda me vén á mente é este cara, se Medrei con esa cousa. Este é un little-- para aqueles unfamiliar-- un brinquedinho infancia que ten este home calvo aquí que ten todos eses pequeno negro partículas magnéticas que veñen con el. E usar esta vara vermello, que é só un imán, pode clasificar de darlle un bigote ou cellas ou o pelo ou algo sobre el. Así, en realidade, aumentar en, por exemplo, esta é o tipo de xogo que pode xogar con wooly Willy. E iso é só para dicir que estes son partículas magnéticas moito maiores que son realmente en un disco duro, e moito menos partículas magnéticas. Pero imos realmente ver logo se ten minúsculas partículas magnéticas nunha disco duro, como pode realmente Utiliza-los para representar datos. [Reprodución de vídeo] -A Unidade de disco duro é onde o seu PC tendas maioría dos seus datos permanentes. Para iso, os datos viaxa ao longo da RAM con sinais de software que contan a disco duro como almacenar eses datos. Os circuítos do disco duro traducir os sinais en flutuacións de voltaxe. Estes, á súa vez, controla a unidade de disco movendo parts-- algúns dos poucos en movemento partes deixar no ordenador moderno. Algúns dos sinais de control dun motor, que xira pratos revestidos por metal. Os seus datos son, en realidade, almacenado nestas sopandas. Outros signos de mover as cabezas de lectura / escritura para ler ou gravar datos sobre os pratos. Esta máquina é tan preciso que un cabelo humano non podería mesmo pasar entre as cabezas e xirando sopandas. Con todo, todo funciona en velocidades incribles. [FIN DE REPRODUCIÓN] E podes ver na extremo da cola do vídeo, xeralmente hai múltiples sopandas. E así que a cabeza de lectura Non é só a lectura do cume. É tipo como de tres ou ou catro cabezas de lectura este movemento como este, a lectura de datos ao mesmo tempo. Polo tanto, hai unha morea de complexidade e tipo de sincronismo que está implicado nun disco duro. E a cousa está xirando moi danado rápido, entón non hai moita complexidade. Pero imos ampliar un pouco máis profundo e vexa onde están esas partículas magnéticas e como é que está quedando para eles. [Reprodución de vídeo] ollar -Imos ao que só vin en cámara lenta. Cando un breve pulso de electricidade é enviado a cabeza de lectura / escritura, el vira nunha pequena electromagnética para unha fracción dun segundo. O imán crea un campo, que cambia a polaridade dun pequeno, pequenas porción das partículas de metal que revestir a superficie de cada prato. Unha serie estándar de estes minúsculos cargadas de áreas no disco representa un único bit de datos no sistema numérico binario usado polos ordenadores. Agora, se a corrente é enviada unha camiño a través da cabeza de lectura / escritura, a área sexa polarizada nunha dirección. Se a cadea é enviado no sentido oposto, a polarización é invertida. Como obter datos fóra do disco duro? Basta inverter o proceso. Por iso é que as partículas no disco que comeza a cadea na cabeza de lectura / escritura en movemento. Xuntos millóns de eses segmentos magnetizadas, e ten un arquivo. Agora, as pezas dun único arquivo pode ser espallados por todo sopandas dunha unidade, como o tipo de desorde de papeis na súa mesa. Así, un arquivo extra especial mantén o control de onde está todo. Non quere ter algo así? [FIN DE REPRODUCIÓN] Así sendo aludido alí, quizais, é este tema de onte de eliminación. Cando exclúe unha arquivo, onte dixemos que un ordenador realmente fai o que, cando arrastrar algo ao lixo ou lata de lixo? Ela só esquece. Pero a 0 e 1s, as partículas magnéticas que se parecen con vermello e azul cousas aquí, ou o meu brazo aquí, aínda están alí no disco duro. E así hai software-- Norton Utilities e Yesteryear e outra máis moderna software-- que só fará a exploración de un disco duro enteiro buscando a quen 0 e 1. porque Acontece que a maioría formatos-- arquivo documentos de Word, ficheiros de Excel, imaxes, video files-- todos teñen certa patróns que son comúns entre eles. Cada arquivo de vídeo pode ser un vídeo diferente, pero o primeiro de varios os bits son xeralmente o mesmo. Ou os últimos anacos son xeralmente o mesmo. E así, con alta probabilidade, pode ollar para estes patróns. E aínda que o arquivo foi esquecido, pode dicir con gran probabilidade, pero isto parece un documento de Word, permite recuperala lo e un-esquece-lo, se quere. E é así que pode recuperar datos que está ou se accidentalmente suprimida ou eliminada ou deliberadamente suprimido, a calquera título. Por outra banda, exclusión segura fai o que no contexto dun cadro como este? Exactamente, fai todo aleatorio. Por iso, tipo de move algúns dos Los abaixo, ata algunhas delas, deixa algúns deles inalterada e xeralmente fai ruído aleatorio fóra del, ou quizais só fai todo deles 0 de ou todos eles 1s. E que tamén pode xeralmente esfregue seus datos de distancia. Entón, imos volver agora á cuestión de pensamento computacional, en que que as entradas de fórmula. E algoritmos dá vostede emite en última instancia. Imos concentrar agora nas entradas e saídas, porque agora, eu reivindicación temos unha forma de representando entradas e saídas. Nós só estamos indo a usar binario. E non importa o que nós querer representar hoxe, se é un número ou unha letra ou miles destes nun libro de teléfono ou imaxes ou películas, a finais do día, é todo 0 e 1s. E eu afirmo que, aínda que este é un mundo super sinxelo con só 0 do e 1 de, podemos construír connosco superior. E vimos un exemplo de que, con letras de momento. Entón, imos concentrar agora nesta ingrediente medio, un algoritmo. E imos voltar a este exemplo de Mike Smith. Polo tanto, neste libro de teléfono, o que si é certo, Non usamos moito máis, hai un problema a ser resolto. Queremos atopar alguén como Mike Smith. E o que eu podería facer para atopar Mike? Ben, eu podería simplemente abrir este libro, comezar na primeira páxina, e entender, oh, eu estou na sección A. Mike non está alí. Necesito da sección S Smith. Entón, só tes que seguir xirando unha páxina de cada vez. Déixeme finxir que isto é todo páxinas brancas e páxinas amarelas, non porque non estamos indo para atopar Mike nas páxinas amarelas de calquera maneira. Pero estou nas páxinas brancas. E agora, estou no apartado B. Eu aínda non o atopou. Entón eu sigo virando unha páxina de cada vez. Este é un algoritmo. É un conxunto de instrucións para resolver problemas. Noutras palabras, ollar páxina, se Mike non é sobre el, pasar páxina, e repite de novo e de novo e de novo, Ideal mirando para abaixo mentres está facendo iso. Entón é este algoritmo, Neste proceso, correcto? Sentímolo. Non, eu oín algúns nos. OK, pero é-- si, certamente é tedioso. Como, estaremos aquí todo o día se eu manter a procura de Mike a esta velocidade. Pero déixeme din que é correcto. É estúpido, pero é correcto. Ao final do día, sempre que pode tomar, eu vou atopar Mike se está alí e eu estou prestando atención. E finalmente chegar a súa páxina. E se eu ficar lonxe, se I chegar á sección T, entón podo lixeiramente optimizar e só dicir, hm, todo feito. Eu nin sequera precisa perder tempo de ir ao Z de. Pero este é un moi visión lineal, se vai, moi especie de esquerda a dereita visión, unha liña recta. E a súa correcta, pero lento. Entón, eu me lembro da escola de clase, tipo dunha optimización dun alumno da primeira serie, onde eu aprendín como contar non por outras pero por twos-- así 2, 4, 6. É A, moito máis difícil de facer, pero, en teoría, é faster-- 8, 10, 12, 14, e así por diante. Como sobre este algoritmo? É máis eficiente? É máis rápido? Audiencia: É eficiente. DAVID Malan: Si, por iso é que é def-- literalmente dúas veces máis rápido, asumindo I non tropezar cos dedos. É dúas veces máis rápido, porque Estou virando a través de dous páxinas á vez no canto de un, pero é potencialmente correcta, por que? Audiencia: Está ignorando algúns. DAVID Malan: Certo, e se Mike pasa sendo sandwiched-- quizais cando eu son máis tarde no libro de teléfono, Mike pasa a ser ensanduichada entre estas dúas páxinas, e eu só cega ignore-lo. Entón, necesitamos un pouco de corrección alí. Unha vez eu bati na sección T, I Non pode simplemente dicir con confianza, non atopamos Mike Smith. Eu probablemente terá que dobrar cara atrás. Ou de feito, xa que eu falar con alguén chamado S-N, en vez de S-M para Smith, Inmediatamente, eu podería dobrar volta, porque quizais estaba na páxina anterior. Pero non ten que dobrar cara atrás distante. En teoría, se eu fai iso á dereita tempo, eu só volver a páxina. Por iso, está engadindo só unha etapa extra. Entón eu fun dúas veces máis rápido, pero custoume unha páxina extra. Pero iso parece unha vitoria neta. Pero isto non é como a maioría da xente en Este cuarto resolvería este problema. O que sería unha persoa normal, quizais un Hai algúns anos facer, para atopar Mike Smith? Si, non atopou Mike. Que fago? Polo tanto, obter un pouco máis preto, pero eu fago sabe-- que é verdade sobre un libro de teléfono? Audiencia: É secuencial. DAVID Malan: É secuencial. É alfabética. E por iso, se eu estou na sección M, Mike é claramente a dereita, I pode literalmente rasgar o problema en half-- é xeralmente máis fácil do que bágoa isso-- o problema á metade e xoga-lo fóra, de xeito que agora, eu teño un problema que é Non 1.000 pages-- que era difícil, porque eu creo que realmente rasgos o libro de teléfono que non tempo-- 1.000 páxinas, pero 500. Polo tanto, o problema é, literalmente, a metade do tamaño. E iso é moi atractivo, porque cos meus algoritmos anteriores, versión 1 e 2, eu estaba só facendo o problema unha páxina menores, dúas páxinas menores á vez. Mentres que agora, eu fixen iso 500 páxinas menor dunha soa vez. OK, entón agora, Karim propón que vaia á metade dereita. Entón, eu estou indo a ir máis ou menos para o medio, máis ou menos. E se eu fixen iso matematicamente, Podería ir á dereita para o medio. E agora, eu entendo, oh, Estou na sección T. En realidade, eu fun lonxe de máis. Pero podo, unha vez máis, rasgar o problema á metade, xoga-lo fóra. E os meus bytes non tan grande. É só o que, 256 páxinas ou 250 páxinas, máis ou menos no momento. Senón que é moito máis dunha páxina ou dúas páxinas. E entón agora eu vou aproximadamente polo medio. Oh, eu non ir moi lonxe o suficiente agora. Entón eu repetir, repetir, repetir, repetir, ata que eu son esperamos deixou con só unha páxina. Así que o convida a pregunta, se eu comezou con preto de 1.000 páxinas, cantos pasos tardou me coa versión 1 do meu algoritmo? Ben, se Mike está no S sección, no peor caso, iso é moi preto de a fin do alfabeto. Entón, se o libro de teléfono ten 1.000 páxinas, Eu vou atopar Mike dentro de 1.000 páxinas, máis ou menos. Quizais sexa como 800 ou así, pero é moi preto de 1.000. Tendo en conta que, no segundo algoritmo, cantas viradas de páxina máximo pode I esixen para atopar Mike Smith? Hai 1.000 páxinas, pero estou facéndose os dous dunha vez. Seguro, entón max como 500ish porque se eu pasar por todo o libro de teléfono, en que punto, podo parar. Pero podo raspar algúns por só parando na sección T. Pero é no peor dos casos 500 páxinas. Entón, cantas veces podo dividir unha 1,00o-páxina do libro de teléfono no medio novo e de novo e de novamente-- 1000 a 500 a 250-125? Canto antes de bater unha páxina? Si, é preto de 10. Dependendo redondeo e tal, é preto de 10 páxinas necesidade total a transformaron ou libros de teléfono que ser rasgado. Entón, iso é moi poderoso. Comezamos cun problema 1.000 páxinas en todos os tres destas historias. Pero o primeiro algoritmo, el Levei, peor dos casos, con 1.000 páxinas vólvese para atopar Mike. Segundo algoritmo, 500 páxinas para atopar Mike. Terceiro algoritmo, 10 páxinas para atopar Mike. E é aínda máis poderosa cando pensa sobre unha especie de escenario contrario. Supóñase que a empresa de telefonía próxima ano quizais se funde dúas cidades xuntas, eo libro de teléfono é de súpeto esta espesor, en vez de esa que, tan 2.000 páxinas, no canto de 1000. Ben, o meu primeiro algoritmo busca Mike Smith nunha lista telefónica de 2.000 páxinas, peor caso, que vai levar cantas viradas de páxina o próximo ano? libro de teléfono é de 2.000 páxinas, assim-- ben, non máis. Se a lista telefónica é dúas veces máis espesa en o primeiro algoritmo, primeiro algoritmo, 2.000, non? No peor dos casos, o Mike é realmente Preto do fin do libro, por iso é 2.000 viradas de páxina. Segundo algoritmo pasando por twos, como 1.000 páxinas. Pero como sobre o meu terceiro e algoritmo última? Se a empresa de telefonía dobra o número de páxinas de 1000 a 2000, cantas veces máis precisa Eu trazo este libro ao medio para atopar Mike? Audiencia: Só un. DAVID Malan: Só unha, porque con unha páxina bágoa, Eu pode literalmente dividir e conquistar, se quixeren, este problema ao medio toma unha mordida enorme fóra del. E por iso este é un exemplo de eficiencia e, sen dúbida, un algoritmo co cal todos somos tipo de intuitivamente familiar. Pero é só como correcta como os meus outros algoritmos con este axuste para O segundo algoritmo, pero é moito máis eficiente. E, de feito, o que é un ordenador científico, ou á súa vez, un programador, que adoita facer cando se escribe código é tentar descubrir, todo ben, eu non quero que o meu programa só para ser correcto, Eu tamén quero que sexa eficiente e resolver problemas ben. Imaxina que no mundo real hoxe, como Google indexa, investigacións como miles de millóns de páxinas, imaxine se utilizado o primeiro algoritmo para atopar gatos entre mil millóns pages-- mirando a primeira páxina no seu banco de datos, a segunda, terceira, mirando só para un gato, buscando un gato. Isto é moi danado lento que parece. Poderían, en vez usar algo chamado busca binaria, que hai bi coincidence-- significa dous, seguir dividir algo en 2, en half-- eles poderían usar busca binaria e quizais atopar gatos aínda máis rápido, ou sexa o que sexa que está a procurar. E, francamente, non hai mesmo algoritmos extravagantes que facer moito máis que dividir as cousas a medias a fin de atopar información rapidamente. E nós imos falar un pouco sobre aqueles despois do xantar hoxe. Entón deixe-me tentar representar isto. Non necesitamos ir calquera matemáticas ou números reais. Podemos falar sobre iso no resumo. Pero déixeme só propoñer, se estabamos tendo un debate agora cos enxeñeiros propoñendo este algoritmo e está intentando facer unha decisión calculada, debido quizais a enxeñeiro di a vostede, sabe, eu pode aplicar un busca lineal en como dous minutos. É tan fácil. busca binaria que non é chique, pero vai me levar como 10 minutos, por iso 5 veces máis tempo. Hai un comercio aquí, mesmo en termos de decidir o software para escribir. Escribe o algoritmo máis simple, que só vai leva-lo dous minutos? Ou gastar máis tempo, 10 minutos, escribir o algoritmo máis sofisticado? Como decide que tipo de pregunta? Ou pode facelo un pouco máis real. I dicir ao meu xefe que vai levar me quere unha semana ou 10 semanas para aplicar o software deste xeito, como decide cal algoritmo para verde luz? Karim? Público: O público, eu creo. DAVID Malan: A audiencia. O que quere dicir co público? Audiencia: Se vai para ser usado por usuarios que [inaudível] por usuarios [inaudível]. Pero se é algo que está só facendo a si mesmo para facilitar un problema, [Inaudível] máis rápido. DAVID Malan: Si, é rápido e sucia é unha boa forma de describilo. En realidade, se está describindo moito do meu tempo na posgrao, sendo que moitas veces, Eu escribín un código malo conscientemente assim-- polo menos, é así que eu racionalizar ele-- conscientemente así, porque aínda que eu estaba escribindo código que era relativamente lento para realizar, Eu era capaz de escribir o propio código moi rápido, gastan só uns minutos ou non horas días. E saíu, eu de cando en vez precisaba durmir. Así, aínda que o meu código necesario 8 horas para ser executado, así, iso é bo, Eu só vou durmir mentres corre. Entón, no momento, eu penso que este era moi intelixente, a pesar de, ao parecer, traballou a través do meu PhD moi lentamente. Pero o inverso do que é que, software, se eu estivese escribindo para outras persoas que era máis importante que eu, así, telos esperar 8 horas para volver os seus resultados de busca Non é todo o que atractivo. E así pasar máis tempo diante para escribir software que é máis eficiente, máis como o noso terceiro algoritmo, probablemente beneficia aos usuarios ao longo do tempo. Entón, realmente depende máis tempo como eses custos súmanse. Se está indo a ser escrito software para usalo unha vez, Probablemente podería moi ben facer rápida e sucia, como se adoita dicir. Simplemente xoga-lo xuntos. É un código que embaraça vostede, é tan malo, pero comeza o traballo feito correctamente, aínda que non é eficiente. Por outra banda, gasta máis tempo en algo, obtelo só dereito. E entón amortizado co paso do tempo, custo que upfront do tempo é probablemente paga a pena, se continúa optimización para o caso común. E, de feito, iso é un tema en programación, ou ordenador ciencia máis xeralmente, intentando optimizar Non para o caso inusual pero os case-- comúns que operación vai ocorrer de novo e de novo? Se está indo a ter millóns dos usuarios buscar na súa páxina web, vostede probabelmente debería pasar o extra semanas diante de escribir mellor software, de xeito que os seus usuarios se benefician. Agora, imos intentar capturar esta unha pouco pictorially, pero non tanto numericamente. Entón aquí é só un gráfico da vella escola. E deixe-me dicir que este é o tempo. E non importa what-- en realidade, non hai nin tempo. Imos poñer isto no outro eixe. Imos dicir que este é o momento, e este é o tamaño do problema. E un científico da computación pode xeralmente chamamos iso só n. n é como o noso go-to variable, onde n é un número, n número, e é a número de calquera entradas que ten. Polo tanto, neste caso, n é o número de páxinas. Así, pode ser 1.000 en o caso de que acabamos dixo. Así, o tempo pode ser calquera unidade de medida. Quizais, é segundo. Quizais, e días. Quizais, é como páxina voltas. Non importa. Todo o que quere contar, para que a será tempo ou custo equivalente. Entón, con iso primeiro algoritmo, se eu, por exemplo, tiña un libro de teléfono 1000 páxinas, Eu estou indo a deseñar un punto alí, porque si é de 1.000 páxinas, levou uns 1.000 viradas de páxina, máis ou menos. E entón se eu tivese un libro de teléfono de 2.000 páxinas, e eu estou indo a deseñar un segundo dot aquí, porque a 2.000 páxinas, é como 2.000 segundos ou viradas de páxina ou calquera outra cousa. E así, cando dixo anteriormente, é tipo de unha relación lineal, que foi deliberado, porque eu quería despois on-- dereito agora-- para debuxar unha liña. É unha especie de un straight relación liña. A inclinación é 1/1, se quere. Mentres tanto, o segundo algoritmo Dito isto, se ten 1.000 páxinas e estaba usando o segundo algoritmo, onde contou por 2, xirando dúas páxinas á vez, eu debería tomar unha punto por baixo ou por riba do meu punto orixinal? Audiencia: Abaixo. DAVID Malan: Abaixo, porque, como xa vimos, leva menos tempo, a metade do tempo. Así, o punto debe ser a metade tan alta como o outro. E aínda negocio por aquí, este punto probablemente debe ser máis ou menos alí. E así o meu segundo algoritmo, do mesmo xeito, ten un relación lineal co tempo. E podemos deseña-lo como tal. Entón, agora, a terceira e última algoritmo é un pouco máis difícil de deseñar. Pero intuitivamente, se eu teño 1,000 páxinas co meu terceiro algoritmo, el só debe me levar uns 10 pasos. E se eu teño 2.000 páxinas co meu terceiro algoritmo, debe me levar non 10 pasos, pero 11, só un. Entón, nós estamos só un pouco vai ver isto. E resulta que, se I zoom iso, eu son vai esaxerar para o efecto, a forma da liña que, en definitiva, non é unha liña recta linha-- porque, en realidade, se fose, quedaría máis parecido ao outros- é ​​realmente unha liña curva que, se aumentar o zoom, vai a ollar máis como este. Ele-- ben, OK, ignorar esta parte. Esa foi a miña pena vai de ángulo. É unha liña curva que sempre aumentando, sempre, sempre, sempre aumentar, pero só por pouco. E así ao longo do tempo, ten un relación que é máis como este. Parece case en liña recta. Pero cada vez é máis tan devagar. Pero, para case todos os puntos ao longo o eixe x, eixe horizontal, é menor que as outras liñas. Polo tanto, este pode ser unha relación n, no que se ten n páxinas, lévase a n segundos. Esta podería ser unha relación n / 2. Ten n páxinas, leva vostede n / 2 segundos, a metade dese número. E esta é unha logarítmica relación, que se se lembra, base 2 n capturas de rexistro este tipo de crecemento, por así dicir. Polo tanto, este é o tipo de santo Graal entre os tres destes aquí, porque é só moito máis eficiente, pero sen dúbida máis complexa para aplicar. Algunha pregunta? Ben, deixe-me facelo, deixe me abrir unha ventá de texto só así podemos probar formalizar algo aquí. Entón deixe-me ir adiante agora e aplicar este algoritmo para atopar Mike Smith en código, se, código de pseudocódigo. Non vou usar Java ou C ++. Eu estou indo só para usar tipo de Inglés-como a sintaxe, que sería normalmente chamar código pseudocódigo. Aquí, eu teño unha ventá en branco. E eu digo etapa 1 do moi primeiro algoritmo é incorporarse o libro de teléfono. Paso 2 é libro aberto para a primeira páxina. Paso 3 será vexa A páxina de Mike Smith. Na páxina, chame Mike. Page e á súa vez, senón vai para o paso 3. Feito, digamos. E por iso non é moi perfecto, que veremos en un momento. Pero imos considerar o que conceptos que eu teño presentado aquí. Así, os pasos 1 e 2 e 3 son practicamente verbos. Son declaracións, actions-- facelo. E así, nunha programación linguaxe, teriamos xeral chamalos de declaracións ou funcións ou procedementos, chamalos de calquera número de cousas. Pero eles están só actions-- facelo. Paso 4 é fundamentalmente diferente, porque é o tipo de facer unha pregunta. É dicir que estamos tipo de nunha bifurcación na estrada. Se Mike está na páxina, chame el, entón Xire á esquerda, se quere. E se non, volverá a algunha outra página-- ou mellor, desculpe, voltar algún outro paso, que induce a algún tipo de construción de loop. E facemos iso de novo e de novo e de novo. E, de feito, xa sabe o que? Si. else if no final da parada libro. Por iso, cómpre tipo dun terzo condición, porque non pode continuar xirando o anuncio de páxina nauseum, porque, finalmente, eu vou acadar o fin do libro. E un erro nun programa pode ser non anticipar ese escenario. E entón eu entender, oh, agarde un minuto, eu teño un terceiro escenario. Se eu estou fóra de páxinas, que realmente parar. Se non, ela non está definida. O que vai ocorrer se eu continuar dicindo pasar páxina e volver, Isto é, cando os ordenadores conxelar ou falla, cando bate algunha situación inesperada como este. Agora, o que pasa con Mike terceiro algorithm-- de Smith incorporarse o libro de teléfono, libro aberto para first-- para Non, non é primeira páxina desta vez, para middle-- oh, así, que ser o segundo algoritmo. Nós só pasar á terceira. Audiencia: Oh, eu sinto moito. DAVID Malan: Isto é bo. Nós só ir ao aberto third-- a medio e agora ollar para Mike Smith. na páxina, chame Mike. E entón o que queremos dicir aquí? entón o que? Podemos expresar esta en calquera número de formas. Non hai unha resposta correcta. OK, se non de novo, pero precisamos ser-- OK, queremos dividir en dous, pero non queremos ir á esquerda ou desprácese á dereita? Como podemos expresar esa noción? Ben, no caso de Mike, si, iso é xusto. Pero OK, entón iso é realmente un bo punto. Está ben. Nós imos seguir con esa lóxica. assim-- Audiencia: Menos da metade. DAVID Malan: Yeah. Entón else if páxina é, imos dicir, a menos de Smith, á esquerda de Smith, entăo-- veremos, é isto vai complicar? else if páxina vén antes de Smith, bágoa no medio, xogue fóra cal metade? Audiencia: Eu penso que foi [inaudível]. DAVID Malan: Estou escoitando ambas as respostas. Audiencia: Esquerda. DAVID Malan: OK, xogar afastado metade esquerda, como Lakisa dixo anteriormente, a esquerda metade, entón eu medio que Quere só ir a-- que vaia á dereita. Ou equivalentemente, e eu fixen un pouco bocado dunha confusión do comezo aquí, Eu efectivamente quere vaia para o paso 2 de novo, onde aberto ao middle-- ou open-- si, imos só dicir, páxinas ao medio. E iso resolve o problema. Non é un libro. É só a metade dun libro, páxinas para abrir a medio. else-- estaban case alí. Paso 6, else if páxina vén despois de Smith, rasgar ao medio, xogar media dereita, a continuación, vai para o paso 2. algo saír, un cuarto escenario se Non temos páxinas que aínda pode virar. Así, poderiamos borrar iso. E temos que limpar isto. Este é un código moi pseudocódigo, se Vai, descrición moi alto nivel. Pero iso xeralmente capturar a idea. E, de novo, neste escenario, ten a noción dunha condición, unha rama, unha bifurcación na estrada, facendo un decision-- este, ir por este camiño, else if, ir por este camiño, else if, ir por ese camiño. E iso é moi común técnica de programación para decidir cal dirección para ir, por así dicir. E tamén temos algún tipo Looping de estrutura, onde estamos facendo algo novo e de novo. Agora, ao parecer, moi como neste exemplo, ser super preciso é importante. Pero tamén vimos algo que seguir conectando abstracción. Que significa para incorporarse libro de teléfono? Estamos só unha especie de tomar para concedida nesta sala que que ten algún significado semántico. Todos só unha especie de sabe, oh, ben, incorporarse o libro de teléfono. O que isto realmente significa? Ben, iso realmente significa ampliar banda, inclinarse, a estender os dedos, beliscar libro entre os dedos, levantar, tirar a man na súa dirección. E poderíamos ser realmente pedante sobre iso, realmente ser super precisos como o que eu estou facendo. Pero todos estes pasos son colectivamente o que significa incorporarse un libro de teléfono. E así antes, cando dixo, cada destas dúas primeiras instrucións pode ser pensado como un continuar ou unha función, realmente representa o que nós seguir chamando unha abstracción. É como un alto nivel conceptual Descrición dun problema que realmente implica algúns pasos. E así por iso, tamén, é unha Temas recurrentes na programación, en que eu podería escribir un programa mediante a sintaxe como isto-- pick_up_phone_book (). E, a continuación, sintaticamente, eu son vai roubar algo da maioría das linguaxes de programación. Agora, paso 1 parece aínda máis como unha función, como un programador estaba chamalo. Parece que o código que alguén deu un nome para e dado -me de usar somehow-- noutra palabras, o que a liña Eu destacou representa a función que quizais Eu nin sequera aplicar min. Alguén máis vello, máis sabio do que me xa descubriu como expresa a noción de coller un libro de teléfono. E é que as cinco etapas Só desfiou, fóra do cumio da cabeza. Pero el ou ela xa aplicadas este, deuse eses varios pasos un nome, pick_up_phone_book. E os parénteses está só o que a maioría dos programadores facer a finais de declaracións como esta. Agora podo estar no seu ombros e nunca máis, pensar sobre o que iso significa para incorporarse un libro de teléfono. Podo só dicir, incorporarse o libro de teléfono. E iso é o que todos os seres humanos fixeron aquí. Cando fomos probablemente 1 anos de idade, 2 anos de idade, alguén para ensinar o que significaba para incorporarse un libro de teléfono. E desde entón, temos abstraída daqueles moi desinteressante pasos mecánicos. E só temos un comprensión intuitiva do que significa a pegar un libro de teléfono. E pode extrapolar agora para coisas- máis complicado construír un edificio. Como, para algunhas persoas, que realmente ten significado. Para provedores de servizos, para os arquitectos, que ten algún significado. E saben o que facer, se Eu dixen, vai construír un edificio. Pero a maioría de nós no cuarto non podería xestionar ese nivel de abstracción. Debe dicir a nós como ir buscar a pa e ir buscar o formigón con uñas e os anacos de madeira xuntos e todo o máis toma parte na construción dun edificio. E iso é porque non temos aínda foi programado para entender o que significa construír un edificio. Non temos que abstracción. Non temos esa función. E entón o que podes ver en linguaxes de programación, en xeral, linguas especialmente máis modernos, como Java, PHP, Ruby e Python, son moito máis maduro de linguaxes máis antigas, como C e C ++ e outros aínda. E así eles veñen con máis funcionalidade incorporada. Máis código foi escrito por persoas que no pasado que agora podemos chamar ou invocar ou usar, como eu estou insinuando no con esta liña destacada aquí. E por iso mesmo que non estamos falando sobre linguaxes de programación por si só, código só pseudocódigo, as ideas aínda están en que a discusión. E verifícase a precisión é super importante, como é abstracción. E imos tratar comunicar que deste xeito. Eu accidentalmente podería estragado este, chiscando un slide na pantalla prematuramente. Pero déixeme pedir un voluntario valente, Se non lle importa chegando. Vostede quedaría diante do cámara, se está OK con iso. Alguén quere vir cara arriba e dar instrucións aos seus compañeiros aquí? Só teño que vir aquí e estar aquí e dicir algunhas palabras. Victoria está sorrindo máis e evitando os meus ollos a máis. Estaría disposto a vir enriba? OK. E se todos os outros nos seus lugares podería sacar un pedazo de papel, se quere. papel pautado é bo. Veña arredor deste xeito. Ou algún papel que que lle foi dada onte só calquera folla en branco de papel, se puidese. E se non ten ningún, só Pregunta ó seu veciño se puidese. Entón, no momento, para Neste exemplo, Victoria Vai desempeñar o papel programador, un enxeñeiro, que Debe programar a todos, como os ordenadores, para facer algo. E imos ver o que suposicións decide facer. Imos ver como que que escolle para ser. E se esta demostración vai pedagoxicamente ben, moitos erros farase, que imos entón usar que como unha oportunidade para a discusión. Pero o reto para vostede debe ser o de evitar estes erros, ser un bo programador. E así o reto na man, se lle gustaba de andar por aquí, está diante de Victoria en pantalla aqui-- e, esperamos, ningún de vós Lembre-se diso cando chiscou na pantalla. E non virar-se en todo, porque hai outra pantalla nesta sala que podo desconectar. Polo tanto, non se virar. Fronte de Victoria é que aínda berro. E o seu traballo agora é dicirlle todo no seu anaco de papel que debuxar. E veremos, en base a instrucións verbais por si só, código de ordenador, se queres, o grao de precisión dos seus debuxos é-- súas implementacións son. Ten sentido? Audiencia: É. DAVID Malan: OK, executar. Audiencia: Deseñar un cadrado. [Risas] DAVID Malan: E non preguntas poden ser feitas. só pode facer o que dixo. Ah, e se tes láminas de hoxe aberto nunha pestana, non ollar para o seu guía. OK? Audiencia: OK, debuxar un círculo. A slope-- podo dicir inclinación? DAVID Malan: Ata ti. Audiencia: Unha inclinación. E un triángulo. DAVID Malan: Todo ben. E estar aquí por só un momento. E eu vou vir arredor en só un momento. E non hai necesidade de poñer os seus nomes nel. Deixe-me ir ao redor e recoller os seus debuxos, Se non lle importa rasgar-los. Aquí está o que temos de volta. Vou proxecto-la na pantalla. Vexo un cadrado, un círculo, unha ladeira, e un triángulo. Entón iso foi unha resposta alí. E let's-- berros. Grazas. Aquí está outra variedade, e un detrás del. Entón, todos eles parecen captar o espírito. Grazas. Hai outro, e aquí está outro. A interpretación inclinación é unha pouco distinto, algo curvilínea. E o máis próximo, ou por mor da especificidade marabilloso co que descrito, ou que tipo de vin isto antes, esta é realmente o que Victoria estaba realmente describindo. Pero agora, os que non entendín moi ben, imos ofrecer algunhas obxeccións aquí. Entón Victoria primeiro dixo deseñar un cadrado. E agora, podemos asumir por unha cuestión de hoxe que todos coñecen como deseñar un cadrado. Pero iso non é enteiramente clara, non? De que outra forma podería ter deseñado un cadrado, ou cando pode ser algunhas das ambigüidades aquí para o ordenador? Audiencia: localización e tamaño. DAVID Malan: Localización, non? Todos vostedes tiveron un papel de algunha maneira, xeralmente rectángulos, pero lixeiramente diferentes tamaños. Pero certamente podería tirado, se quería, unha enorme praza, quizais unha pequena praza. Quizais, foi rodado. Eu non creo que nós vimos isto. Pero podería ser máis diamante como, pero aínda con todo, Matematicamente un cadrado. Así que foi indiscutiblemente ambigua. Entón ela dixo, debuxar un círculo. Algúns de vostedes se deseña-lo xunto Lo, o que non é razoable, porque os seres humanos tenden a pensar ou ler dereita a esquerda na maioría dos idiomas, polo tanto, non un palpite mal. Pero ese círculo podería foi dentro do cadrado, podería ser en torno ao cadrado, podería ser noutro lugar na folla, de xeito que, sen dúbida, ambigua. Slope podería ser posible tendo a maioría das liberdades verbalmente co que iso significa. E algúns de vostedes interpretado Lo como unha liña ondulada ou unha liña recta ou similares. E, a continuación, triángulo, tamén, pode ter foi orientado en calquera número de formas. Así, en breve, mesmo con algo que ollar e está como, uau, de xeito simple, un neno podería deseñar ese, así, non Realmente, a menos que está super, super-persuasiva e dicir ao ordenador o que facer. Entón, se nós poderíamos, se ten outra folla de papel, imos tente iso unha vez máis. E eu vou dar un Victoria outro exemplo na pantalla aquí. E, de novo, non se virar e non mirar para os seus diapositivas. E eu vou darlle un momento para pensar en como describir iso. Non deixalos ver o medo nos seus ollos. [Risas] E unha vez máis, esta vez alavancagem algúns destes delivery e tentar obter case todos polo menos, a resposta correcta. Audiencia: OK, bótalle un anaco de papel, busque no medio daquel anaco de papel. No medio dese anaco de papel, deseñar un cubo. [Risas] DAVID Malan: o que aprenden? Estabamos tan preto. OK, repita se puidese, para todos. Audiencia: No medio do anaco de papel, deseñar un obxecto, que se parece un cubo. DAVID Malan: OK, iso é todo o que tes para traballar. Permítame ser analítica e non moi crítica, pero para facer a solicitude que Victoria definitivamente parece estar a pensar en moi abstraccións de alto nivel, que Non é razoable. Porque, se non, estariamos todos ser moi disfuncional, se tivésemos de estar sempre tan preciso con todo o que facemos no mundo. Pero dicir ir á I middle-- penso que estabamos no bo camiño, tales alí, como ir ata o medio da páxina, e despois deseñar un cubo. Entón, se está a pensar en abstraccións, porque aínda está a ver o que está na pantalla como, de feito, un cubo. Pero hai tantas oportunidades interpretación para alí. E, de feito, hai tantos outras formas que pode expresar que, o que eu vou propoñer, en un momento. Polo tanto, temos aquí unha encarnación do un whoops-- picture-- encarnación da imaxe, de xeito pouco tridimensionalidade a el, que é bo. Aquí está un máis, onde ten a mesmo, pero é unha especie de cubo aberto. Algunhas persoas tomou un pouco máis plana, bidimensional. E iso é bo. Polo tanto, hai, de feito, no centro do papel. Ese creo que vai como, porque se nós aquí, Isto é o que estaba describindo. Entón, agora, déixeme propoñer que outra poderiamos describir esta situación. De volta ao día, un dos máis formas máis comúns para aprender programación era escribir código, escribe liñas de instrucións, que controlaba un pouco tartaruga na pantalla. Logo e outras variantes deste foi o nome da linguaxe. E a tartaruga vivía nun mundo. Entón supoño que iso rectangular o espazo é seu mundo. E ía comezar por assuming-- I Realmente non sei como deseñar tartaruga, entón imos facelo así. E entón el ten un shell e entón pode que algúns pés. Entón vostede pode ter este pequeno personaxe na pantalla. E o obxecto deste linguaxe de programación foi para impoñer a tartaruga para ir cara arriba, abaixo, esquerda, dereita e de poñer a súa pluma abaixo ou incorporarse a pluma para arriba, para que puidese realmente deseñar na pantalla neste mundo rectangular moi plana. Entón, onde eu penso que podería estar a suceder, e onde ten que considerar mergullo mentalmente ata describir instrucións de xeito máis xeral, Desexa afirmar, é poñer o seu pluma abaixo na middle-- e imos librar da tartaruga, porque eu realmente non podo manter tirando-o moi ben. E agora, como podería Digo deseñar un cubo? Así, poderiamos dicir algo así como sorteo unha liña diagonal a nordeste, por exemplo, ou a un ángulo de 45 graos cara arriba. E que podería me chegou aquí. E eu estou moi lonxe de un cubo. Pero agora, eu podería dicir algo como virar 90 graos á esquerda e debuxar unha liña de igual a noroeste lonxitude. E eu podería continuar con orientacións similares. E non vai ser doado. E, francamente, é probable que aquí hai cinco minutos. Pero quizais teriamos chegado a algo que, ao final do día, acaba sendo un cubo, pero mergullou dentro desa abstracción para facelo en tal un baixo nivel que non pode realmente ver o que está facendo ata que toda cousa é realmente alí na páxina. E por iso este é un principio xeral, de novo, de programming-- esta idea de abstracción. É tan marabillosas poderoso, porque unha vez máis, ela só dixo, deseñar un cubo, que todas -Nos practicamente ía Grokar moi rapidamente. Nós só ía entender, OK, deseñar un cubo. Podemos non saber a orientación, por iso, podería ser algo máis preciso, pero xeralmente podemos imaxinar ou ver o que un cubo é. E iso é útil, porque, se cada vez que sentou-se como un programador en teclado para escribir o código, se tiña que pensar en tal un nivel baixo, ningún de nós xamais ía facer nada. E, por suposto, ningún de nós apreciar o proceso de escribir código. Sería como escribir en 0 e 1., que, francamente, non era todo o que hai moito tempo os seres humanos estaban escribindo código en 0 e 1 .. E moi rapidamente xurdiu con estes maior languages-- nivel C ++ e Java e outros. Entón, imos tentar que unha vez só para Xire as mesas, de xeito que todos nós teñen a oportunidade de pensar en vez do mesmo xeito. Poderiamos estar máis un voluntario este tempo para chegar ata a tarxeta e deseñar, non recitar? Si, OK. Ben, imos para arriba. E, Ben, neste caso, unha vez que afrontar o consello, non ollar para a esquerda, non parecen estar correctas. facer só o que a súa compañeiros aquí dicirlle. E para todos os demais no cuarto, agora é o programador. El é o ordenador. E a imaxe que eu escollín aquí con antelación é este aquí. Están só-- están pensando dunha broma divertido é todo. Entón, sería que alguén quere voluntariamente a primeira instrución ou declaración que debe A pluma de mando Ben? E nós imos facelo colectivamente, quizais unha instrución de cada persoa. Síntoo? Audiencia: Debuxe un círculo. DAVID Malan: Debuxe un círculo é o primeiro que escoitei. Audiencia: Por riba da parte superior. DAVID Malan: Por riba da parte superior. OK, podemos deixalo borrar, desfacer. E agora, outra persoa. Dan, estaría cómodo ofrecendo a seguinte instrución? Audiencia: Por suposto, chamar ao centro da parte inferior do círculo, cun small-- algo pequeno espazo que, debuxar unha liña recta ata tres cuartos do camiño para abaixo a tarxeta unha lixeira inclinación cara á esquerda. DAVID Malan: Good. Audiencia: ángulo lixeira. DAVID Malan: Undo, Control-Z. OK. Andrew, que pretende ofrecer ata a próxima instrución? Audiencia: Por suposto. A partir da parte inferior da referida liña, unha lixeira angle-- whoops-- quizais preto dun terzo da lonxitude [inaudível] leve ángulo abaixo e como terzo da lonxitude de [inaudível]. Entón, si, a partir dese punto, debuxar unha liña dun terzo da lonxitude da anterior liña máis á esquerda. DAVID Malan: Isto OK? liña recta, que é OK? OK, Olivier, quere para ofrecer a seguinte? Audiencia: [inaudível] dende o parte inferior do círculo, [inaudível]. Debuxe no lado dereito de [inaudível] centímetros. [Risas] DAVID Malan: Eu creo que vai Ten que converter isto polgadas aquí. Audiencia: Pare. [Risas] DAVID Malan: OK. [? Ara ,?] Quere para ofrecer a seguinte? Audiencia: Deseñar un [inaudível] o superior [inaudível] o mesmo. [Inaudível] círculo, chamar a [Inaudível] e deseñar [inaudível]. DAVID Malan: OK, non máis desfacer. Imos facer unha ou dúas instrucións. Chris, que pretende ofrecer un? Audiencia: Na parte inferior do círculo, [inaudível] debuxar unha liña slopping igual abaixo, á esquerda [inaudível]. DAVID Malan: OK. Andrew? Nós fez-- Karim? Audiencia: A partir da liña dereita, o fin da liña esquerda, a parte inferior, está indo a ir á dereita sobre a mesma lonxitude que a liña de está, chegando ao dereito [inaudível]. [Inaudível] graos, de xeito [inaudível] clases para o lado dereito. DAVID Malan: Todo ben. Imos facer unha pausa. Non Xire aínda. Imos facer unha pausa, e imos tente outra tentativa antes de revelar a Ben o que vén deseñando. podes embaralhar Ben o direita-- ou realmente, non, imos só darlle outra tarxeta, mellor aínda. Así que alguén agora quere a ter máis de achegamento Victoria que levou anteriormente, onde falamos nunha abstracción de nivel superior e en só unha frase ou dous describen a Ben o que deseñar sen metendo as herbas daniñas, por así dicir, neste nivel máis baixo? Victoria. [Risas] Audiencia: Debuxe unha figura do home a pé. E as súas pernas e brazos ten que ser o lado dereito. DAVID Malan: OK, iso é todo o que comeza. Todo ben. Por que non imos revelar a Ben o que fixo. Así, unha salva de palmas. Iso foi o máis difícil é posible. Así, aínda que estamos a falar en termos moi tolas sobre só un debuxo fotos, espero que Pode realmente apreciar o grao de expresividade que pode ser necesario a fin de contar unha computadora que facer. E, de feito, o feito de Ben foi capaz de deseñar este tan axiña é unha especie de testamento para utilizar un linguaxe, quizais un nivel versión do inglés, que permite que usar só palabras, é escoitar palabras de Victoria, que lle permiten estes abstractions-- só deseñar unha figura camiñando ao direita-- este tipo de conta algún significado semántico para que isto non é case tan obvio cando é só dicindo, introduza o seu bolígrafo abaixo, debuxe á dereita, debuxe á esquerda. E así por iso, tamén, é moi común en programación. Este sería dito para ser como unha moi baixo linguaxe de nivel, programación en 0 e 1 do que quere. E este sería un nivel Linguaxe de Programación en Java, ou algo así. Un pouco de un simplificación esaxerada, pero iso é o tipo de como emocional sentindo que sente cando usando un tipo de cousa ou outra. Un pouco de frustración aquí pola necesidade para tal precisión, pero a oportunidade a ser un pouco máis flexible con a interpretación aquí. Pero, por suposto, erros poden xurdir como resultado. Se desexa casa-- nós Non vai facer este en class-- pero se quere levar un regalo para casa, Pensei que ía mergullar neste. Entón, se quere xogar este xogo co seu outro significativo ou fillos ou similares, que pode aproveitar iso tamén. Entón, imos adiante e ollar a unha última cousa aquí para pensamento computacional. E iso lévanos a John Oliver, non para o clip podes ver na noite pasada, pero a un problema relativamente recente. Uns meses, a Volkswagen tomou un pouco de crítica para o que razón, se sabe? O que estar en apuros para? Si, entón eles emissions-- estaban tentando gañar as emisións probas por esencialmente a coches contaminar o ambiente menos cando os seus coches foron sendo probado e contaminar o ambiente máis cando os coches non estaban a ser probado. E o que é cada vez máis interesante no mundo, como pode ter inferido das discusións sobre o que é como-- ele-- CarPlay, software de Apple para coches eo feito de que moitos de nós cada vez máis teñen pantallas táctiles nos nosos coches, hai unha cantidade asustado de software no pobo de coches de hoxe, que francamente abre unha lata de vermes cando se trata de seguridade e risco físico. Pero para hoxe, imos centrar só o que é envolto software de gravación que pode ter cazado o sistema. Para a definición do problema, para quen non coñece, imos dar un ollo John Oliver. E para aqueles familiarizados con o problema, imos ollar para el nunha lente a través de desfrute John Oliver ben. Entón deixe-me bateu xogar sobre iso, eu creo que, a introdución de tres minutos. Carallo. [Reprodución de vídeo] -Cars-- DAVID Malan: Obviamente, en YouTube, it's-- - --os Personaxes máis intelixentes as películas Veloces e Furiosos. Esta semana, a montadora alemá Volkswagen atopou-se no medio dun escándalo de proporcións potencialmente penais. -Volkswagen Está preparado para millóns en multas, posibles cargos criminais para os seus directivos, como a empresa pide desculpas para aparellos 11 millóns de coches para axudala a gañar a probas de emisións. modelos diésel -Certos foron deseñados co software sofisticado que información utilizadas, incluíndo a posición do volante e do vehículo velocidade, para determinar o coche era sometidos a probas de emisións. Nesa circunstancia, o motor reduciría as emisións tóxicas. Pero o coche foi fraude para ignorar que cando estaba sendo conducido. As emisións aumentaron 10 a 40 veces por encima dos niveis de EPA aceptables. -A Nosa, 10 a 40 veces maior que a EPA permite. Esta é a peor cousa Volkswagen xa fixo, é algo que ten que dicir se nunca tiña oído falar da Segunda Guerra Mundial. Pero quizais o sinal máis seguro de como moita dificultade Volkswagen está, é que a xente no moi top renunciaron. O CEO, renunciou o mércores despois loitando para controlar os danos, dicindo que era infinitamente moito, que parecía óptimo ata que acabou el era só un 10% Sentímolo pero tiña manipulado boca para inflar artificialmente o seu arrepentimento. E mentres tanto, US de Volkswagen xefe tivo unha petición de desculpas de súa autoría. -Imos Ser claro sobre isto, A nosa empresa foi deshonesto. E nas miñas palabras alemás, nós teñen totalmente asneira. -Si, Pero totalmente aparafusado se non son obras alemás. E a lingua alemá Ten moitas frases bonitas para describir situacións como esta, como [ALEMÁN], que significa aproximadamente, a tristeza que vén das mentiras de negocios relacionados, ou [Alemán], o que se traduce como avergoñar aqueles pai inclúen nubes de gasolina. É unha lingua fermosa. El só navega fóra da lingua. E, a propósito, mentres que o do home desculpa pode soado sincero, Paga a pena notar que estaba falando en unha festa oficial de lanzamento para 2016 Volkswagen Passat, o que significa que en breve despois de dicir moito, el dixo iso. -Moitas Grazas por vir. Disfruta da noite. O seguinte é Lenny Kravitz. [Reprodución de música] -OK, OK, terminando a súa desculpa con ata próxima Lenny Kravitz non berrar contrición sobrio. Ela berra, pedimos Bon Jovi, e el dixo que non. marca de Volkswagen ten foi moi mal. E, francamente, o seu novo anuncio campaña non é exactamente axudando. - [Alemán], nos de Volkswagen quere pedindo desculpas por enganar-lo con nosos vehículos. [FIN DE REPRODUCIÓN] DAVID Malan: Entón esta foi unha forma indirecta de-- sorry-- esta foi unha forma indirecta de a introdución dun problema fundamental en software, o que é o que que detectar determinadas condicións. E así a cuestión en apreciado aquí é, como é que un coche potencialmente, como aplicado no programa por estes desenvolvedores, detectar que realmente está a ser probado? Así, para ser super claro, o que estaban facendo foi, en ambientes onde os programadores figurado o coche estaba sendo probado, eles dalgunha forma o coche emiten menos emisións, menos emisións, fumes de xeito menos tóxicos e tal. Pero cando adoita a condución en estrada, sería só emiten tanto a contaminación, xa que quería. Así como poderiamos escribir o pseudocódigo para este algoritmo? Como poderiamos escribir pseudocódigo para o software en execución no coche? É dicir, en poucas palabras, que ferve abaixo para algo así. se a ser probado, emiten menos. outra emite máis. Pero iso é algo nivel moi alto, non? Intentaremos mergullo, como o que este abstracción do que significa ser probado. Noutras palabras, mesmo se non sabe nada sobre coches, que tipo de preguntas Pode preguntar, a fin de determinar se está a ser probado, se é o coche? O que se pode características presentar un coche está a ser probado? Audiencia: Probando equipo. DAVID Malan: Equipos de test. Entón, se o equipo de proba nas proximidades, a continuación, emiten menos. Entón eu podería imaxinar implementación que, con algún tipo de cámaras ou detectar o que está ao seu redor. E déixeme propoñer, que só se sente moi complicado para realmente ter adicional hardware só para esa finalidade. Audiencia: Se vostede está en parque, se o capó está aberto. DAVID Malan: No parque ou capo aberto, de xeito que é bo. Audiencia: E coche de carreiras. DAVID Malan: Entón, iso é un pouco máis concrete-- e coche de carreiras. Polo tanto, esta sería a conxunción dun algunhas condicións diferentes, se quere. Entón, se o coche está no parque, e mesmo aínda que iso é unha cousa moi mecánica Normalmente, eu podería Imaxina escribir software, sobre todo porque non hai moitas veces unha luz alí estes días, Podería imaxinar que haxa software que pode consultar o Shift ou que non, está no parque, son Lo na unidade, está en sentido inverso. E podo volver un responder a iso é tanto si ou non a estes tipos de preguntas. E así eu tamén podería probablemente responder unha pregunta como é o capó aberto. Quizais, hai algún tipo de sensor de que tanto me dá de volta un 1 ou 0, verdadeiro ou falso, o capó está aberto. E, a continuación, coche correndo, eu podería detectar que dalgún xeito a través de cal mecanismo? Como, o coche funciona, eu podería detectar que está ligada, Podería detectar algún que o coche está en movemento? Audiencia: RPMs. DAVID Malan: Si, por iso hai sempre que agulla que informa cantas revolucións por hora as rodas están experimentando. E así eu podería ollar para iso. E se non é 0, que, probablemente, significa que o coche está en movemento. Pero temos que ser un pouco coidado aí, porque-- imos simplificar isto-- se acaba de dicir, o coche de carreiras, Non queremos só emiten menos, queremos que o coche está en execución e está a ser probado. Polo tanto, hai algunhas outras Ingredientes que persoas teñen a hipótese de que o software está facendo, porque ausente o código fonte real, só se pode tipo de inferir a partir da efectos físicos do coche, como o que pode estar a suceder baixo o capó en software. Entón, se coche funcionando e quizais, digamos, rodas traseiras non movendo, isto pode ser un indicativo dalgún tipo de proba? O que estou suxerindo aquí? É, quizais, é nun destas cousas de rolos, onde como as rodas están xirando na parte da fronte ou na parte de atrás, dependendo se é roda dianteira ou tracción traseira, para a metade das rodas están movendo, pero o outros dous non son, o que é unha situación estraña no mundo real. Se está dirixido na estrada, que non debería ocorrer. Pero se está en un almacén en algún tipo de sistema de rolos, que realmente pode acontecer. Creo que a xente tamén propuxo que quizais se o coche está en execución e dirección non roda en movemento, que Tamén pode ser un sinal, porque iso é razoable para como un inmediato nunha estrada. Pero, aínda así, o humano está probablemente movelo un pouco ou seguramente durante uns segundos. Ou o curso dun minutos, as posibilidades son de que non será fixado exactamente na mesma posición. Así, noutras palabras, nós pode levar a resta, está a ser probado, e romper esa función para estes ingredientes que o compoñen. E iso é realmente o que Volkswagen do enxeñeiros de algunha maneira o fixo. Eles escribiron software conscientemente detectar se o coche está a ser probado, polo tanto, emiten menos, outra emiten na forma habitual. E o problema aquí, tamén, é que o software non é algo que realmente pode ver a menos ten o chamado código fonte. Polo tanto, hai dous tipos de code--, polo menos, dous tipos de código no mundo. Hai algo chamado aberto de código, o que non é o que a diferenza que teño escrito, o código fonte. Este é o código fonte escrito en unha linguaxe chamada pseudo-código, que é só algo inglés-like. Non hai ningunha definición formal da mesma. Pero C e Java, C ++, os son todas as linguaxes formais que, cando escribe neles, o que ten é un ficheiro de texto que contén código fonte. Pero tamén hai algo en o mundo chama código de máquina. E código de máquina, por desgraza, Está só a 0 e 1 .. Así, o código de máquina é o que máquinas de entender, por suposto. O código fonte é o que os seres humanos entender. E, xeralmente, non mais sempre, hai un programa que usa un programador que leva fonte código e transforma-lo en código máquina. E este programa é xeralmente chamado de un compilador. Polo tanto, a súa entrada é o código fonte, súa saída é o código de máquina, eo compilador é unha peza de software que fai este proceso. Entón, iso realmente mapea moi ben para nosos insumos, algoritmos saídas. Pero esta é unha encarnación moi específico de que, o que quere dicir que, mesmo se ten unha das Volkswagen coches que é culpable disto, Non é como pode simplemente abrir o exaustores ou abrir a guía do usuario ou mirar o código fonte, xa que no momento en chega o seu coche na súa garaxe, xa convertido 0 e 1 .. E é moi difícil, non imposible, pero moi difícil de recoller moita cousa a partir de só mirando para o subxacente a 0 e 1 do. Así, pode descubrir que, en definitiva, se entende como unha máquina operates-- Intel dentro-- se entender a arquitectura Intel, pero é moi lento. E aínda alí, pode non poder ver todo que o código pode realmente facer. Calquera dúbida sobre este ou este tipo de proceso máis xeralmente? E, de feito, podemos amarrar esa discusión a discusión de onte de Apple. Isto, tamén, é por iso que o FBI non pode só ir e ollar no teléfono do sospeitoso e atopar as liñas de código, por exemplo, que permiten que o código de acceso ou permitan que esa demora 80 milisegundos. Porque no momento en que é no iPhone do compañeiro, xa convertidos en 0 e 1 .. Ben, imos facer unha pausa aquí para o noso ollar pensamento computacional. Por que non imos facer unha pausa de 15 minutos. E cando volver, imos dar un ollo a programación -se e comezar a mapear algúns destes conceptos de alto nivel a un real, se brincallón, linguaxe de programación.