DAVID Malan: Benvingut de nou, tothom. Així que ahir, com es recordarà que ens centrem en aquests temes aquí. Així que vam tenir quatre topics-- general privacitat, seguretat, i la societat; les tecnologies d'Internet; la computació en núvol; i en última instància, el desenvolupament web. Algú va tenir la ample de banda o el moment a veure una mica de John Oliver ahir a la nit? En realitat és bastant divertida, si no és una mica de por. Per a qualsevol dubte sobre qualsevol cosa que vam fer ahir? Els aclariments? Qualsevol pregunta que vulgui fer Segur que toquem avui alguna manera? pissarra tan net. Així que el que està a l'ordre del dia d'avui? Així que vaig pensar que podríem començar avui amb una mirada al que és en general conegut com pensando-- computacional en el risc de simplificar massa, pensant com un ordinador, potser pensar com un enginyer, i tractant de començar a organitzar els seus pensaments o per donar-li un millor sentit de el que està involucrat en realitat al comandament un ordinador per fer alguna cosa a manera de programació. I cal guardar l'en una bonica alt nivell, pràcticament Anglès, però tracti d'utilitzar familiaritzat exemples de com formalitzar va a anar sobre la solució de problemes. I anem a revisar alguns CS temes, com l'abstracció, que li havia sortit un parell de vegades ahir, algoritmes, i llavors la representació. I aquí és on anem a començar avui en dia en un moment. A continuació, anem a fer una ullada a la programació. Anem a fer una ullada a alguns constructes fonamentals amb el qual podria estar familiaritzat i fins i tot podria trobar bastant intuïtiva. Anem a veure, de fet, en una programació de mostres ambient que és molt accessible, molt juganer, i de fet apuntat per a majors de 12 anys. Anem a passar uns minuts hi i després prendre les coses a un nivell inferior i en realitat parlar d'algunes de els algoritmes i estructures de dades, per així dir-ho, que programadors solen utilitzar per resoldre problemes molt més eficientment del que es podria ser capaç de prescindir-ne completament. A continuació, després de dinar, anem a fer una ullada en piles de tecnologia, que és just una forma elegant de dir col·leccions de tecnologies que es pogués utilitzar per resoldre algun problema. I parlarem sobre l'alfabet Sopa de les llengües que existeixen avui-- Java i Python i C ++ i PHP i Ruby i tota mena d'altres coses. Anem a fer una ullada breument en els patrons de disseny. Els programadors, amb el temps, comptar amb metodologies adoptades que tendeixen a ajudar-los resoldre problemes més fàcilment. Quan es comença a veure a si mateix escrivint el mateix tipus de codi i una altra, persones formalitzen aquestes repeticions i els noms d'atribuir-los i després usar-los i promoure-les, en última instància. I parlarem una mica sobre les estratègies mòbils, com el que significa que en realitat fer una aplicació mòbil o un lloc web per a mòbils. Ho fas per Android? Ho fas per iOS? Ho fas per a ambdues coses? I quins són els avantatges i desavantatges? I, finalment, anem a prendre una mirada programació web, la qual és un terme col·lectiu Realment descriure qualsevol moment s'escriu programari que és pensat per funcionar a la web, ja sigui en els telèfons o sobretaula o portàtils. Anem a fer una breu ullada a bases de dades i el disseny en ella, si més no perquè gairebé qualsevol interessant aplicació basada en web en aquests dies té algun tipus de base de dades. Altrament, faria acaba de ser contingut estàtic. I una base de dades li permet fer canvis en el temps, ja sigui a si mateix o dels usuaris. I anem a considerar com aniria sobre el disseny aquesta base de dades i el tipus d'argot que puguin sorgir en un enginyer de discussió en un tauler blanc quan en realitat la implementació una aplicació per primera vegada. Anem a parlar breument sobre APIs, serveis útils que es pot utilitzar per estar al les espatlles dels altres, si les empreses o individus, i resoldre la seva propis problemes amb més rapidesa. I després anem a fiquen potser una mica amb el llenguatge Java, un llenguatge de programació que s'utilitza tant en els navegadors d'avui en dia, sinó també en els servidors. I potser, anem a revisitar, el temps ho permet, algunes de les mans al web que la matèria van fer ahir i integrar els dos junts abans d'aixecar la sessió. Així que amb que-- el que hi ha és ahead-- Hi ha una cosa que cal que es li agradaria assegurar-se que inserim i tocar en algun moment. Si es tracta de venir a la ment, portar-lo fins després de poc temps. Però, per què no comencem amb una mirar al pensament computacional. I permetin-me proposo pensament computacional és, de nou, tipus de la descripció d'alt nivell de el que és un científic de la computació podria fer. I, de fet, començarem amb tres ingredients que podria entrar en el pensament computacional. Aquesta és només una forma de descriure-ho. Certament es podria definir això en qualsevol nombre de maneres. Però permetin-me proposar, pel bé d'avui en dia, que els problemes del món, tots els problemes del món, en ser abordats per una informàtic podia ser vist com el que farem entrades de trucada, que necessitarà aconseguir alimentat en el que anomenarem algoritmes, que després produeixen sortides. En altres paraules, la totalitat món de la reivindicació I de resolució de problemes pot ser destil • lada en aquests tres ingredients. Llavors, què vull dir amb entrades? Entrades és just el que ets lliurat per tal de resoldre. Per exemple, aquí està un vell problema escolar. Si tinc una llibreta de telèfons i aquí Vull veure alguna cosa en ella, aquesta és la meva entrada. Tinc 1.000 o menys les pàgines d'un llibre de telèfon. Aquesta és l'entrada al meu problema. I vull trobar alguna cosa com Mike Smith, així que un amic el nom i número és esperem que en aquesta llibreta d'adreces. Això és abans dels dies de la cèl·lula mòbils, pel que poden no només la recerca de la mateixa. Així que he de fer-ho d'edat l'escola i en realitat la recerca aquestes entrades per a alguna resposta. I aquesta resposta és només va que es dirà la sortida. Pel que l'entrada és la guia telefònica. L'algoritme és qualsevol conjunt de passos que utilitzen per trobar Mike Smith. I la sortida és, amb sort, El telèfon de Mike Smith. I això, llavors seria just representant de la majoria de qualsevol problema a la qual està entrades esquerrans i voler produir sortides. Així que abans de considerar el procés de pel qual podem resoldre aquest problema, Mike Smith i trobar Alguna cosa així, considerarem el primer i last-- les entrades i sortides. Físicament, per descomptat, l'entrada d'aquí és un munt de paper enganxades en forma d'una llibreta de telèfons. Però els ordinadors, ordinadors portàtils de clar-- i d'escriptori i fins i tot els telèfons aquests days-- aquests són dispositius electrònics. I al final del dia, el que és l'única entrada a un ordinador? Bé, és una mena aquest cable d'alimentació aquí. Em tapo a la paret, i Em surt un flux d'electrons, el que em permet fer funcionar la màquina. O potser aquests electrons són creat per mitjà de la meva bateria. Però al final del dia, això és l'única cosa que va en el meu ordinador portàtil. I tant interessant material és en última instància, que surt, si per mitjà de la impressora o la pantalla o audially o similars. Així que si tot el que tenim com el nostre input fonamental a un ordinador és l'electricitat, de manera que només electrons que entren i o fora, i així com podem usar aquesta entrada que en realitat representen la informació? En altres paraules, com podem arribar des d'un simple flux d'electricitat a la representació real nombres o lletres reals o imatges reals a la pantalla o pel·lícules reals o correus electrònics o qualsevol nombre d'elles conceptes de nivell superior, si es vol, que en el final del dia d'alguna manera han de ser emmagatzemats en aquesta dispositiu mecànic electrònic usant només aquells senzilla ingredients-- electrons que entren i surten? Per tant, semblaria que, en la forma més simple, l'única classe d'estats Tinc en el meu món, per la a condicions speak-- en el meu món-- és qualsevol Tinc electrons que flueix, l'electricitat que flueix, o he de fer no-- així successivament, fora. I anem a formalitzar dins i fora, com un científic de la computació podria, amb només 1 i 0. Anem a descriure alguns arbitrària però el nombre coherent a aquesta. 1 significa en, 0 vol dir off. O també poden veure això com veritable mitjà de mitjans i falses. També pot fer negre i blanc o vermell i blau. Vostè només té dos descriptors. I un grup de científics en informàtica en general, només ha d'utilitzar 0 i 1. Així que si aquest és el cas, el meu únic alfabet està constituït per 0 i 1., com podria jo arribar a igualar el nombre 2 en un ordinador, i molt menys el número 3 o una lletra de l'alfabet o una imatge o una pel·lícula? Com espècie de Bootstrap nosaltres mateixos d'aquest principi bàsic de 0 i 1. i en realitat representar alguna cosa més interessant? Bé, anem a posar aquesta pregunta en espera d'un moment i considerar alguna cosa esperem familiar, encara que no ha pensat en que en cap detall per a 10, 20, 30, 40, 50 més anys. Això és el que? Com es pronuncia? No és una pregunta amb trampa. Un nombre, però què és? 1, 2, 3, o 123. I em va agradar la forma en què vas dir 1, 2, 3, perquè aquesta és una forma de veure-ho. 1, 2, 3, és una seqüència de tres símbols. És imatges que ens ara tenen paraules per. I si una espècie de llegir-los tots en conjunt, un ésser humà típic en Anglès diria 123. I això és una mena de alt nivell de concepte, se sent com un nombre bastant gran. Però, com hem arribat fins aquí? Bé, pot ser que sigui un temps des vostè ha pensat en això com això, però en els meus temps, em aquest tipus d'aprendre com la columna de l'1, dels 10 columna, i la columna de la 100. Així com diu Lakisa, és 1, 2, 3, però també és 123. Però, com podem obtenir a partir la primera a la segona? Bé, el més habitual és fer-ho en La columna de la 100, que té 1 gen. Així que això és com dir 1 100 vegades. I a continuació, a la columna de 10, tinc 2. Així que això és com dir 10 vegades 2. A la columna de la 1, tinc 3. Així que això és com dir 1 Temps març. I si afegeixo aquestes coses junts, això, per descomptat, és 100 més el 10 més 3. I, oh, per això em surt això alt nivell de noció 123. És només matemàtiques bàsiques, de manera que aquests símbols tenen pesos a ells, si va, marcador de posició o valors de columna. I una vegada que tot el multiplique fora, amb si aquest número. Llavors, quants de vostès saben parlar de binary-- 0 i 1's-- com un ordinador? OK, perfecte, ningú, ni cap del que creu. Però m'agradaria afirmar que En realitat ja saben això. Només necessitem una espècie d'ajustar nostre model mental una mica. Però el procés és exactament el mateix. Permetin-me deixo aquest fins allà i en canvi treure això per un moment. En el món dels ordinadors, només tenim de 0 i 1 de. I així, la cosa que és canviarà és el que? Bé, en el meu món dels humans, la sistema decimal, 10 des significat, Tinc el nombre de dígits a la meva disposició? 10, oi? Del 0 al 9, és clar. I és per això que tenim la lloc de 10, i el lloc del 100. On ve això? Bé, això és 10 elevat a la potència de 0. Això és 10 a la potència de 1, 10 a la potència de 2, i així successivament. Només segueix multiplicant les seves columnes per 10, començant amb només 1 en el de la dreta aquí. Pel que en el món de la ordinadors, si només tenen un significat bi binary-- 2-- o 0 i 1., només realment necessita per canviar la base que les matemàtiques. Així, en altres paraules, ara només tindrem tenen la columna de l'1 i ell-- On està aquest going-- la columna de la 2, La columna de la 4, i potser més enllà. Perquè és això? Doncs bé, aquest és el poder febrer 0-èsim. Aquesta és la 2 gen. Això és 2 a la 2, i així successivament. Així que, aquí, tenim 1, de 10, 100, de 1000, de 10.000 de 100.000, de, 1 milions, i així successivament, aquí tenim 1, 2, 4, 8, 16, 32, 64. Només segueix multiplicant per 2, en lloc de continuar multiplicant per 10. Així que ara, si el perill a l' la mà és representar nombres utilitzant només de 0 i 1, de considerarem com arribar-hi. Això, per descomptat, és el patró de 0 0 0, però el que el nombre conceptualment representa? Bé, 4 vegades més 0 0 2 vegades més 1 vegades 0, anem a afegir els junts. 4 vegades 0 és, per descomptat, 0, més 2 Temps 0 és, per descomptat, més el 0 0 1 vegades és, per descomptat, 0. Així ah, això representa el Nombre dels éssers humans saben com 0. Doncs bé, ara, anem molt Avançar ràpidament ràpid. Si en canvi no estic representant 0 0 0, però farem 1 0 1, que podria ser la forma Lakisa, abans, s'acaba de pronunciar 1 0 1. Però ara, com ho portem a la major anivellar el nombre dels éssers humans podrien saber? Llavors, què és aquest nombre? És 5, el número que coneixem com 5. Bé, per què? Bé, podem realment una mena de caminar a través d'ell metòdicament 4 temps 1, 2 temps 0, 1 Temps 1. Afegir els junts, per la qual això és més 4 0 1 plus. I això és, de fet, maig. Pel que està fent una mica tediosa ara fent l'aritmètica i una altra. Però el procés és exactament el mateix. L'únic que té canviat en el nostre món és que els nostres columnes són 1, 2, 4, 8, 16, i així successivament, en lloc d'1, 10, 100, 1000. I això és només perquè el nostre alfabet té encongit de 0 a 9 a 0 a 1 sol. Així com un petit examen aquí, com ho faria que representen el número 7 en binari? 0? Bé, 0, que significa 0 0 0? Digues-ho una altra vegada, Karina. Perfecte. Perquè és això? És efectivament abril més 2 més 1. Molt bo. Com ens representem una mica another-- què tal el número 2? A prop, però a l'inrevés. Així que Què és això? És 4 més 1, pel que és 5 de nou. Així what's-- Ho sento, Karina? 0 1 0. 0 1 0 2 seria, perquè, de nou, fins i tot si una espècie de no salta a la vista, acaba de fer els càlculs. 4 temps 0, 0, 2 vegades 1 és 2, 1 vegades 0 és 0. Així que aquest és el nombre que coneixem com 2. Què tal el número 8? Hm? Bé. Així que tipus de falta un altre marcador de posició. Necessitem 1 0 0 0. I això és cert de la nostra espècie del sistema decimal de la vella escola. Com es representa el nombre 1000? Bé, semblaria ser tipus de en una situació difícil, si demano que representen el nombre 1000, perquè fins i tot si vostè es dóna com 9 d'aquests, 9 d'aquests, 0 d'aquests, que és el nombre més gran que vostè té, que no acabava d'arribar a 1.000. Així que si 1.000, només té una altra posició, de manera que es pot fer 1 0 0 0, ergo el nombre 1000. Així que ara, anem a un mapa Aquest tipus de discussió conceptual de nou a maquinari, on de nou, l'entrada era només aquest petit cable d'alimentació, electricitat que entra i que surt. I així, perquè això sigui assignada des d'aquí d'aquí, bé, ¿què és el que realment necessitem? Bé, es pot pensar d'estar dins d'un ordinador, un munt de bombetes, si es vol. En realitat estan cridats transistors. I els transistors són només canvia que pot ser o bé encès o apagat. Així que vostè pot pensar en una transistor que està en està permetent que flueixi l'electricitat i un transistor que està fora com aturar electricitat flueixi. I en lloc de prendre sobre les llums d'aquí, ¿Per què no faig aquest tipus del nou estil de l'escola. Pel que aquest podria ser un 1, una llanterna sent des d'ara, només tot just però. I això podria ser un 0, i ara és apagat. Per tant l'ús d'aquest dispositiu físic, em ara pot representar el sistema binari. Només necessito dos estats. No importa el el color que és o el que és. L'única cosa que importa és que tinc en un estat i un altre estat fora. Així que utilitzar el meu telèfon aquí, com fer jo representar el nombre que coneixem com 0? O dit de forma equivalent, la qual Nombre estic representant ara? 0, a causa que el dispositiu està apagat. I si faig això? I ara, com puc representar el número 2? Puc demanar prestat el telèfon aquí, com ho vam fer ahir? Així que anem a veure, pel que si vull representar el número 2, és aquest el número 2? No. Quin nombre sóc jo accidentalment representant aquí? Això és en realitat el número 3. Així que un és el que vull per apagar? El telèfon negre o-bé, si they're-- telèfon negre o el telèfon blanc? El telèfon blanc. Així que si al seu torn això endavant i nosaltres alinéalo per aquí, tenim gener 1 en el lloc del 2 i un 0 en lloc de la 1. I així que estic ara que representa el número 2. I això, per descomptat, seria el nombre 3, perquè ara aquestes dues llums estan encesos. I vaig a parar aquí, però és lògic pensar si vull representar la número 4 o 8 o superior, Vaig a necessitar més mòbils. Però això és tot el que està passant. Així que si alguna vegada has escoltat que A-- interior de l'equip gràcies usted-- és milions de transistors, això és només milions de petits interruptors diminuts. I no són la llum bombetes que s'encenen i s'apaguen, però sí que permeten ja sigui d'electricitat a fluir en algun lloc o aturar-lo. I el que no és el seu dos Units-- encès o apagat, encès o apagat. Per tant, semblaria ara tenir aquesta capacitat per representar aquest concepte que ens agradaria en el maquinari real. Però tot el que tenim ara és la capacitat per representar els números del que sembla. Llavors, com fem perquè representa lletres de l'alfabet, els quals se sent com el següent tipus de funció, voldria afegir a un ordinador modern una vegada que tingui els números? I de fet, si es pensa TI, històricament, ordinadors es van introduir realment per servir com calculadores numèricament. Però, és clar, aquests dies, ho fan molt més. Fins i tot quan s'iniciï, solen veure una o més paraules. Llavors, com representar paraules, si tot el que té és, de nou, electricitat al final de la dia, o equivalentment 0 d'1 i de? Sí. Sí, és a dir, que tipus de fet això ahir en una certa forma, on en algun moment, Crec que de manera arbitrària Dit això, si volem representar la lletra A, podríem cridar a això gener 1. Va ser en el context de la criptografia, on només necessitem algun tipus de codi, mateix tipus de mapes. Així que potser A es representa com una 1 i B seran representats com 2, i Z estarà representada com 26, per exemple. I llavors l'única advertència és que si estic va a codificar les lletres en els meus correus electrònics o en els meus missatges de text com números, tots vostès posar-se d'acord per utilitzar el mateix conjunt de convencions. I, en efecte, el món ha fet exactament això. Hi ha un sistema en el món denominat ASCII, American Standard Codi per a l'Intercanvi d'Informació, que és simplement una decisió d'alguns anys Fa que els éssers humans fan que Un decidir que serà igual, no 1, 2, i 26, i així forth-- és una diferent-- poc però el 65, 66, 67. I vaig a tirar d'una gràfic en un moment. Però és arbitrària. Però no importa que és arbitrari. El món ha de acaba de ser coherent. Ara, més recentment, hi ha una mica més de luxe anomenat Unicode, perquè espècie del món es van adonar, després de la invenció de les computadores, que no hi ha més que bé 256 símbols en el món que el que es vol representar, especialment quan s'introdueix idiomes asiàtics i altres simbologies que necessiten més del que l'expressivitat pot cabre en la versió més antiga de aquest codi, que va ser cridat ASCII. Així Unicode permet en realitat que utilitzi més de 0 i 2. En particular, si segueixen escoltant la bytes de la paraula en la societat i fins i tot només ahir. I un byte és el nou? Què és un byte? És només 8 bits. Llavors, què significa això realment? Bé, això vol dir que, abans, quan érem parlant binari i que estava fent servir arbitràriament tres bits quan vam estar parlant de binary-- lloc de l'1, el lloc del 2 i el 4 de lloc-- així, un byte només significa que vostè està parlant no en unitats de tres però quatre, cinc, sis, set, vuit, el que ens dóna el lloc de 8, de 16, de 32, de 64, i 128 de. En altres paraules, una mica no és tot que la utilitat d'una unitat de mesura, perquè és com una diminuta peça d'informació, dins o fora. Així, fa uns anys, el món acaba de decidir És una mica més convenient parlar de termes de bytes, vuit coses alhora. I per tant, va néixer la noció d'un byte. I així tenim vuit bits aquí. I resulta que, també, per similars raons, el món van decidir anys Fa que representen a una carta ASCII, vostè va a utilitzar unitats de 8 bits. Així que fins i tot si no ho fa necessita que molts, ets Sempre utilitzarà 8 bits de representar una lletra de l'alfabet. I això és convenient, perquè llavors si rebre un missatge que té un 0 0 1 0 1 1 1 0 seguit d'un altre 1 1 1 0 1 0 0 1, pel que si vostè rep 16 els bits, el món només pot Suposem que el primer 8 són una lletra i la segona 8 són una altra carta. No importa quants n'hi ha. Només importa que tots som coherents quan estem interpretació d'aquests bits. I això va ser només l'atzar. Això vol dir alguna cosa, però no ho vaig fer Realment pensar en el que significa. Així que és una petita mentida blanca. Originalment, ASCII efectivament utilitzats només 7 bits. I el vuitè bit és anomenat ASCII estès. Però el punt és, en última instància, el mateix. El món en general estandarditzat en 8 bits. Així que aquest sembla ser una mica limitant, perquè només pot constituirà un fons A, capital de la B a la Z. de capital Però de fet no és així, si vaig A-- hi ha un munt de recursos en línia, per exemple, asciitable.com, aquest va a ser una mica aclaparador al principi. Però vaig a assenyalar el que és important aquí. Això només passa a ser-- i vaig a walk-- veurem, si me'n vaig d'aquí. Aquí està, al decimal columna, el nombre 65. I en la lletra de la columna de la dreta caràcter, Chr, és la lletra A. I es pot ignorar, per ara, tot en el medi. Això és hexadecimal, octal, i un codi HTML. Per a aquest lloc només està tractant de tirar una gran quantitat d'informació en la qual alhora. Però l'únic que importa és el decimal columna i la columna de caràcters. Esta és la lògica, el que és el nombre que el món ha decidit representa una minúscula? Sí, 97. I només per confondre potencialment, alguna cosa, quin nombre ha decidit el món representaria el número 1? És clar, perquè nosaltres-- 49, sembla aquí, a la part inferior esquerra. Ara, què vull dir amb això? Així resulta que en els sistemes informàtics, hi ha generalment una diferència fonamental entre un nombre i un caràcter. Un nombre és el que ens après créixer quan estàvem molt jove a l'escola primària. És el que vostè compta amb. No obstant això, un caràcter és només una forma, un glifo, per així dir-ho, a la pantalla. Ara, nosaltres els humans veiem una mena de alguna cosa que s'assembla a això. I diem, oh, que és el número 2. Però no, això és només un símbol que es veu de la mateixa manera que el que coneixem com el número 2. I el que no aquesta distinció fonamental entre els nombres reals i caràcters. Aquest és un nombre. Però, en general, al context d'un ordinador, Si en lloc de veure alguna cosa com això quoted-- i no ho fa sempre cal veure-ho citat, però pel bé de si discussion-- que es veu entre cometes el nombre, això és ara un personatge. Així que aquest número 2 sota la caputxa a l'interior d'un ordinador seria representat amb un patró de bits que representen el nombre 50 d'acord amb la taula en línia. No obstant això, si un ordinador simplement veu això, aquesta es representaria amb el patró de bits 0 0 0 0 0 0 1 0. Atès que, amb aquest personatge ho faria en realitat ser representat com- i ara, He de pensar una mica pel que aquest harder-- caràcter estaria representada amb 0 0 1-- Què necessito aquí? 0 1 0 1 0 0 1 0. Com puc fer això? Bé, aquest és el número 50, si es multiplica a terme utilitzant aquestes columnes, aquest és el número 2, i així per això existeix aquesta dicotomia. I això és només una sumari ara per característiques que hi ha en els llenguatges de programació que anem a tocar breument el dia d'avui. En els llenguatges de programació, vostè té en general, però no sempre, les coses trucar a diferents tipus de dades. En altres paraules, un programmer-- quan ell o ella està escrivint, un programador pot decidir en quina format per emmagatzemar les seves dades. Pot emmagatzemar dades com nombres en brut, com el número 2. O es pot emmagatzemar com cadenes, o seqüències de caràcters que li solen expressar amb cites en el seu llenguatge de programació. Pot tenir coses called-- Vaig a simplificar en excés i cridar-los numbers-- reals de manera que els números no són nombres enters com el número 2, però els números com 4.56. Així que els nombres reals també poden tenen punts decimals, així que és un diferent fonamental peça de dades en un ordinador. I després, es pot tenir altres tipus de dades fixes. Així que això és només un avanç realment de la més simple de les decisions de disseny que un programador podria fer sota de la campana. Així que qualsevol pregunta de moment? Així que anem a tractar de fer això una mica més real. Aquest no és el maquinari tant en ús més. Però gairebé tothom en aquesta habitació probablement créixer amb i segueix utilitzant discs durs d'alguna manera. Encara que la majoria els nostres ordinadors portàtils ja no tenir dispositius que operen d'aquesta manera, en canvi els ordinadors portàtils d'avui en general tenen unitats d'estat sòlid sense parts mòbils. I que tendeix a ser més car, per desgràcia, però una mica més ràpid A-- i així, sovint, molt més ràpid, que és una de les raons. I també no ho fa genera tanta calor. Pot ser més petit, pel que és generalment un net positiu. Però això ens permet mapejar 1 poc més concretament el estem parlant en el 0 i de 1 plantes ara a un dispositiu físic. És una cosa per a mi parlar aproximadament de 0 i 1 en termes de del meu telèfon o de manera abstracta en termes interruptors de ser encès i apagat. Però què passa amb els discs durs? En els seus ordinadors portàtils, si vostè té una més antiga un, o en el seu ordinador de sobretaula, o segurament en els servidors avui en dia, on es té discs durs que tenen un terabyte d'espai, 4 terabytes d'espai, bé el que vol dir això? Un disc dur amb 1 terabyte de mitjans espacials hi ha 1 bilió de bytes dins d'ella d'alguna manera, o equivalentment 8 bilions de bits a l'interior. 1 terabyte seria de 8 terabits o 1 bilió de bits, el que vol dir que si vostè té un disc unitat, vostè té algun o altres d'un bilió de 0 i d'1 a l'interior de la mateixa. I si només fer una ullada a una foto arbitrària d'un disc dur representativa, això és el que un disc unitat normalment podria ser com a l'interior. És, també, és una mena un vell fonògraf però en general amb diversos registres interior, pel a speak-- múltiple plats, com se'ls anomena, discos circulars de metall, i a continuació, un petit cap de lectura, igual que un vell tocadiscs. I que el cap de lectura es mou cap enrere i successivament i d'alguna manera llegeix els bits. I el que és en aquests discos, fins i tot Tot i que els humans no poden veure, ja sigui en la realitat o en aquesta imatge, hi ha partícules magnètiques petites diminutes. I fins i tot si no tens molt oblidat com funciona l'electricitat, una partícula magnètica que està carregat en general té un extrem nord i un sud end-- tan al nord i al sud. I així el món just va decidir fa algun temps que, si un protocol magnètic essencialment està alineat com aquest, nord-sud, anem a trucar a que un 1. Si es tracta del seu lloc de sud a nord, Anem a cridar que un 0. I pel que si vostè té pel seva disposició un bilió diminut magnètica particles-- i és d'esperar, l'enginy de maquinari en Per voltejar els que l'envolten com es veu fit-- si desitja representen un manat sencer de 0 de, vostè només té 8 partícules magnètiques tots alineats com aquest. I si vostè vol representar 1 de vuit, que acaba necessitarà 8 partícules magnètiques alineades esquena amb esquena amb esquena com aquest. Què vull dir pel partícules magnètiques? Francament, després de tants anys, la El que encara ve a la ment és aquest tipus, si créixer amb aquesta cosa. Aquest és un poc-- per els unfamiliar-- 1 petita joguina infantil que té aquest home sense pèl aquí que té totes aquestes minúscul negre partícules magnètiques que vénen amb ell. I l'ús d'aquest pal vermell, que és només un imant, que tipus de li pot donar un bigoti o celles o el pèl o qualsevol cosa sobre ell. Així que de fet, si ens acostem en, per exemple, aquest és el tipus de joc que pot jugar amb Wooly Willy. I això és només dir que aquests són partícules magnètiques molt més grans que són en realitat en un disc dur, i moltes menys partícules magnètiques. Però anem a veure realment a continuació, si vostè té minúscules partícules magnètiques en una disc dur, com en realitat es pot utilitzar les dades per representar. [REPRODUCCIÓ DE VÍDEO] -El Disc dur és on el seu PC la majoria de les botigues de les seves dades permanents. Per fer això, les dades viatja des de la memòria RAM al llarg amb els senyals que li indiquen al programari disc dur de com emmagatzemar aquestes dades. Els circuits del disc dur es tradueixen els senyals en les fluctuacions de voltatge. Aquests, al seu torn, el control de la unitat de disc parts-- moure alguns dels pocs en moviment parts van deixar a la informàtica moderna. Algunes de les senyals de control d'un motor, que gira safates recobertes de metall. Les seves dades és en realitat emmagatzemada en aquests discos. Altres senyals es mouen els caps de lectura / escriptura per llegir o escriure dades als discs. Aquesta maquinària és tan precisa que un cabell humà no podria fins i tot passar entre els caps i plats giratoris. No obstant això, tot funciona a velocitats fenomenals. [FI DE REPRODUCCIÓ] I es pot veure al extrem de cua del vídeo, generalment hi ha múltiples fonts. I perquè el cap de lectura no és només la lectura de la part superior. És una cosa així com tres o quatre o més caps de lectura que es mouen d'aquesta manera, la lectura de dades de forma simultània. Així que hi ha una gran quantitat de complexitat i tipus de temporització que està involucrat en un disc dur. I ho està fent girar realment maleït ràpid, així que hi ha una gran quantitat de complexitat. Però anem a apropar una mica més i veure on són aquestes partícules magnètiques i com es van a obtenir en ells. [REPRODUCCIÓ DE VÍDEO] La mirada d'-Let en el que acabo de veure en càmera lenta. Quan un breu pols d'electricitat s'envia al capdavant de lectura / escriptura, es volteja en una petita electromagnètica per una fracció d'un segon. L'imam crea un camp, que canvia la polaritat d'una petita, diminuta porció de les partícules metàl·liques que recobreixen la superfície de cada disc. Una sèrie patró d'aquests diminuts carregades fins a les zones del disc representa un sol bit de dades en el sistema de numeració binari que utilitzen els ordinadors. Ara, si el corrent s'envia una camí a través del cap de lectura / escriptura, la zona està polaritzada en una direcció. Si el corrent s'envia a la direcció oposada, la polarització s'inverteix. Com s'obté les dades des del disc dur? Només revertir el procés. Pel que és les partícules en la disc que arribar el corrent al cap de lectura / escriptura en moviment. Armar milions d' aquests segments magnetitzats, i vostè té un arxiu. Ara, les peces d'un sol arxiu pot ser escampats per tot plats d'una unitat, alguna cosa així com el desordre de papers sobre el seu escriptori. Així que un arxiu extra especial manté realitzar un seguiment d'on està tot. No t'agradaria tenir Alguna cosa així? [FI DE REPRODUCCIÓ] Així s'al·ludeix allà, potser, és aquest tema d'ahir de la seva eliminació. Quan s'elimina 1 arxiu, ahir vam dir que fa un ordinador realitat la qual cosa, quan s'arrossega una mica a la paperera de reciclatge o contenidor d'escombraries? Simplement oblida. Però el 0 i d'1, les partícules magnètiques aquesta mirada com el vermell i el blau coses aquí, o aquí, el meu braç encara hi són al disc dur. I pel que no existeix software-- Norton Utilities i antany i una altra més modern software-- que acaba escaneja un disc dur sencer mirant a totes aquelles de 0 i 1, ja que de Resulta que la majoria Formatos-- arxiu documents de Word, Excel, imatges, archivos-- de vídeo tots tenen certa patrons que són comuns entre ells. Cada arxiu de vídeo podria ser d'un vídeo diferent, però els primers bits són generalment els mateixos. O els últims diversos bits solen ser els mateixos. I així, amb alta probabilitat, vostè pot buscar aquests patrons. I fins i tot si l'arxiu s'ha oblidat, es pot dir amb alta probabilitat, però això s'assembla a un document de Word, deixa per recuperar-lo i poc oblidar-ho, si es vol. I així és com es pot recuperar dades que estan ja sigui accidentalment estat eliminat o suprimit o deliberadament suprimit amb quins propòsits. Per contra, l'eliminació segura del que fa en el context d'una imatge com aquesta? Exactament, les fa a l'atzar. Pel que es mou tipus d'alguns cap avall, alguns d'ells cap amunt, deixa alguns d'ells sense canvis, i en general, fa soroll aleatori fora d'ell, o potser simplement fa que tots 0 d'ells o tots ells d'1. I que també pot fer-ho en general fregar les dades de distància. Així que anem a tornar ara a la qüestió de pensament computacional, la qual cosa tenim les entrades de la fórmula. I algoritmes dóna que en última instància sortides. Ens centrem ara en les entrades i sortides, perquè ara, reclam que tenim una forma de en representació de les entrades i sortides. Només utilitzarem binari. I no importa el que voler representar avui en dia, si es tracta d'un número o una lletra o milers dels mateixos en un directori telefònic o imatges o pel·lícules, al final del dia, tot és de 0 i 1 de. I afirmo que, tot i que aquesta És un món molt senzilla amb només 0 de i 1 de, podem construir nosaltres mateixos. I hem vist un exemple de que amb les lletres fins al moment. Així que ens centrarem ara en aquest ingredient mig, un algoritme. I anem a tornar a aquest exemple de Mike Smith. Així que en aquest llibre de telèfon, el que és cert, no fem servir tant com abans, hi ha un problema que cal resoldre. Volem trobar algú com Mike Smith. I el que podria jo fer per trobar Mike? Així, tan sols pogués obrir aquest llibre, s'inicia a la primera pàgina, i adonar-se, oh, estic a la secció A. Mike no hi és. Necessito la secció S de Smith. Així que segueixi girant una pàgina alhora. Vull donar la impressió que això és tot pàgines blanques i pàgines grogues, no perquè no trobarem Mike a les pàgines grogues de totes maneres. Però estic en les pàgines blanques. I ara, estic a la secció B. Encara no ho he trobat. Així que segueixo girant una pàgina alhora. Aquest és un algoritme. És un conjunt d'instruccions per resoldre algun problema. En altres paraules, mira pàgina, si Mike no està en ell, pàgina de la volta, i es repeteix una i altra vegada i una altra, idealment mirant cap avall com ho està fent. Així és aquest algoritme, aquest procés, correcte? Ho sento. No, he sentit algunes nn. OK, però és-- sí, sens dubte és tediós. Igual, estarem aquí tot el dia si seguir buscant a Mike a aquesta velocitat. Però deixeu-me diuen que és correcte. És estúpid, però és correcte. Al final del dia, sempre que podria tom, vaig a trobar a Mike si ell hi és i jo estic prestant atenció. I, finalment, arribar a la seva pàgina. I si amb si massa lluny, si Arribo a la secció en T, llavors puc optimitzar lleugerament i dir, hm, tot fet. Ni tan sols necessito perdre el temps d'anar a la Z. Però aquesta és una molt enfocament lineal, si va, un tipus d'esquerra a dreta enfocament, una línia recta. I la seva correcta però lent. Pel que recordo de l'escola primària, una espècie d'una optimització d'un nen de primer grau, on vaig aprendre com no compta per uns altres, però pel twos-- 2, 4, 6. És A, molt més difícil de fer, però en teoria, és faster-- 8, 10, 12, 14, i així successivament. Què hi ha d'aquest algoritme? És més eficient? És més ràpid? PÚBLIC: És eficient. DAVID Malan: Sí, pel que és def-- és literalment, el doble de ràpid, que suposant No es deixi ensopegar amb els dits. És dues vegades més ràpid, perquè Estic girant a través de dues pàgines alhora en lloc d'un, però és potencialment, a correcta, perquè ¿per què? AUDIÈNCIA: Vostè està ometent alguns. DAVID Malan: Dret, el que passa si Mike per a ser sandwiched-- potser quan estic més tard en la guia telefònica, Mike passa a ser intercalat entre aquestes dues pàgines, i jo només cegament a saltar sobre ella. Així que necessitem una mica de correcció d'allà. Una vegada que vaig arribar a la secció T, I no es pot dir simplement amb confiança, no hem trobat Mike Smith. Probablement tinc a doble volta. O, de fet, una vegada que arribi a algú anomenat S-N, en lloc de S-M per Smith, immediatament, podria duplicar enrere, perquè potser ell era a la pàgina anterior. Però jo no he de tornar sobre el moment. En teoria, si ho faig a la dreta temps, acabo de tornar d'una pàgina. Pel que és l'addició d'un sol pas addicional. Així que he anat dues vegades més ràpid, però em va costar una pàgina addicional. Però que se sent com un guany net. Però això no és com la majoria de la gent en aquesta sala podria resoldre aquest problema. Com seria una persona típica, potser una Fa alguns anys ho fan, per trobar Mike Smith? Sí, no va trobar Mike. Què faig? Així que una mica més a prop, però ho faig saber-- el que és cert sobre una guia telefònica? PÚBLIC: És seqüencial. DAVID Malan: És seqüencial. És alfabètic. I pel que si estic a la secció H, Mike és clarament cap a la dreta, literalment em puc trencar el problema en half-- en general és més fàcil que la llàgrima que- el problema per la meitat i llençar-la, de manera que ara, tinc un problema que és Ja no pages-- 1000 que era difícil, perquè crec que en realitat vaig arrencar la guia telefònica això no temps-- 1.000 pàgines, però 500. Així que el problema és, literalment, la meitat de gran. I això és bastant convincent, perquè amb els meus algoritmes anteriors, versió 1 i 2, l'únic que estava fent el problema una pàgina més petites, dues pàgines més petites en un moment. Mentre que ara, ho vaig fer 500 pàgines més petites alhora. D'acord, de manera que ara, Karim proposa que vaig a la meitat dreta. Així que vaig a anar més o menys a la meitat, més o menys. I si fes això matemàticament, Podria anar a la dreta cap al centre. I ara, m'adono, oh, Sóc a la secció T. De fet, m'he anat massa lluny. Però puc, un cop més, trencar la problema a la meitat, llençar-la. I els meus bytes no és tan gran. És només, el que, 256 o 250 pàgines pàgines, més o menys en aquest moment. Però tot i així és molt més d'una pàgina o dues pàgines. I pel que ara, vaig més o menys a la meitat. Oh, jo no anar força lluny ara. Així que repeteixo, repetir, repetir, repetir, fins que estic amb sort l'esquerra amb una sola pàgina. Pel que convida a la pregunta, si jo començat amb aproximadament 1.000 pàgines, quants passos em va prendre amb la versió 1 de la meva algoritme? Bé, si Mike és a l'S secció, en el pitjor dels casos, això és bastant a prop al final de l'alfabet. Així que si el directori té 1.000 pàgines, Vaig a trobar a Mike a menys de 1.000 pàgines, més o menys. Potser és com 800 o així, però que és bastant a prop de 1.000. Atès que, en el segon algoritme, quants voltes de pàgina màxim que podria requerirà per trobar Mike Smith? Hi ha 1.000 pàgines, però estic fent d'ells de dos en dos. Bé, així com màx 500ish, perquè si vaig a través de tot el llibre de telèfon, i en aquest moment, puc parar. Però puc afaitar d'uns pocs per acaba amb parada a la secció T. Però és en el pitjor dels casos 500 pàgines. Llavors, quantes vegades puc dividir una 1,00o-pàgina del llibre de telèfon a la meitat altra vegada i una i una altra vegada-- de 1000-500 a 250-125? Quant de temps abans que colpege una pàgina? Sí, es tracta de 10. En funció d'arrodoniment i tal, és prop de 10 pàgines de la necessitat total de girar-se o guies telefòniques necessiten ser estripat. Així que és bastant potent. Comencem amb un problema de 1.000 pàgines en els tres d'aquestes històries. Però en el primer algoritme, es em va portar, pitjor dels casos, de 1.000 pàgines es torna a trobar Mike. En segon algorisme, 500 pàgines per trobar Mike. En tercer algoritme, 10 pàgines per trobar Mike. I és encara més poderosa quan es pensa sobre una espècie d'escenari oposat. Suposem que la companyia telefònica proper any potser es fusiona dues ciutats juntes, i la guia telefònica és de cop i volta aquest gruix, en lloc d'això que, pel que 2.000 pàgines en lloc de 1.000. Bé, el meu primer algoritme busca Mike Smith en una guia telefònica de 2.000 pàgines, pitjor dels casos, es prendrà el nombre de voltes de pàgina el proper any? directori telefònic és de 2.000 pàgines, tan-- bé, ni un més. Si la guia telefònica és dues vegades més gruixut en el primer algoritme, primer algoritme, 2000, oi? En el pitjor dels casos, Mike és realment prop de la final del llibre, pel que és de 2.000 voltes de pàgina. Segon algoritme passant per dos en dos, igual que 1.000 pàgines. Però què hi ha en el meu tercer i l'algoritme més recent? Si la companyia telefònica duplica el nombre de pàgines de 1.000 a 2.000, Quantes vegades més necessito em esquinç aquest llibre per la meitat per trobar Mike? PÚBLIC: Només un. DAVID Malan: Només un més, perquè amb una llàgrima pàgina, literalment em puc dividir i conquerir, si es vol, aquest problema enmig presa un mos massiva fora d'ell. I pel que aquest és un exemple de l'eficiència i podria dir-se que un algoritme amb la qual tots som tipus de forma intuïtiva familiar. Però és tan correcta com els meus altres algoritmes amb aquest pessic de el segon algorisme, però és molt més eficient. I de fet, el que un ordinador científic, o, al seu torn un programador, típicament fer l'escriure codi és intentar esbrinar, bé, jo no vull que el meu programa només per ser correcta, Jo també vull que sigui eficient i resoldre problemes bé. Imagineu en el món real d'avui, de la mateixa manera que els índexs de Google, les recerques de la mateixa manera que milers de milions de pàgines, imagina si utilitzat el primer algoritme per trobar els gats entre 1000000000 pages-- mirant la primera pàgina a la base de dades, la segona, la tercera, només busca per a un gat, a la recerca d'un gat. Això és bastant maleït lent del que sembla. En el seu lloc, podria servir alguna cosa diu recerca binària, la qual hi ha bi coincidence-- significa dues, seguir dividint alguna cosa en 2, en half-- que podrien utilitzar la cerca binària i potser trobar gats encara més ràpid, o el que sigui que estiguis buscant. I francament, no hi ha fins i tot els algoritmes més elegants de fer molt més que simplement dividint les coses per la meitat per tal de trobar informació ràpidament. I parlarem una mica sobre els quals després de dinar d'avui. Així que permetin-me simplement tracte de representar això. No necessitem entrar a matemàtiques o qualsevol nombre real. Podem parlar d'això en el resum. Però permetin-me proposar que, si estaven tenint una discussió ara amb els enginyers proposant aquest algoritme i que està tractant de fer una decisió calculada, perquè potser la enginyer diu a vostè, vostè saber què, puc posar en pràctica una cerca lineal en com dos minuts. És així de fàcil. Hi binària no és tan sofisticat, però que em va a prendre com 10 minuts, de manera 5 vegades més. Hi ha un comerç aquí, fins i tot en termes de decidir quin programari per a escriure. S'escriu l'algoritme més simple, el qual només el portarà dos minuts? O es passa més temps, 10 minuts, escriure l'algoritme més elegant? Com es decideix quin tipus de pregunta? O bé, podria fer-ho una mica més real. Li dic al meu cap que prendrà em sigui d'una setmana o 10 setmanes per implementar la programari d'aquesta manera, com Com es decideix què algoritme de donar llum verda a? Karim? AUDIÈNCIA: L'audiència, suposo. DAVID Malan: El públic. Què vol dir pel públic? AUDIÈNCIA: Si es va per a ser utilitzat pels usuaris que [inaudible] els usuaris [inaudible]. Però si és una cosa que ets acaba de fer per si mateix per facilitar un problema, [Inaudible] més ràpid. DAVID Malan: Sí, és ràpid i bruta és una bona manera de descriure-ho. De fet, si estàs que descriu gran part del meu temps a l'escola de postgrau, de manera que moltes vegades, Vaig escriure malament codi conscientment tan-- almenys, així és com em racionalitzat it-- conscientment, perquè tot i que estava escrivint codi que era relativament lent per executar, Jo era capaç d'escriure el codi en si bastant ràpid, a pocs minuts de despesa o no hores dies. I va resultar, em de tant en tant és necessari per dormir. Així que encara que el vostre codi requereix agost hores per córrer, així que està molt bé, Vaig a anar a dormir mentre s'executa. Així que en aquest moment, vaig pensar que això era molt intel·ligent, tot i que aparentment treballat a través del meu doctorat molt lentament. Però al revés de la qual és que, si el programari estigués escrivint per a altres persones que importava més que a mi, així, tenir-los esperar 8 hores tornar als seus resultats de cerca No és tot el que convincent. I així passar més temps a la bestreta per escriure programari que és més eficient, més com el nostre tercer algoritme, probablement beneficia els usuaris amb el temps. Així que realment depèn més de temps com aquests costos es sumen. Si vostè va a estar escrivint programari per a usar-lo una vegada, probablement com bé podria fer-ho ràpid i brut, com se sol dir. Només tiren junts. És el codi que avergonyeix vostè, és tan dolent, però fa la feina correctament, tot i que no és eficient. Per contra, es passa més temps en alguna cosa, sigui prou bona. I després amortitzats amb el temps, cost que la bestreta de temps és probable que valgui la pena, si es manté l'optimització per al cas comú. I de fet, això és un tema en programació o ciències de la computació més en general, es tracta d'optimitzar no per al cas poc comú però els cas-- comuns Quina operació que ocorrerà una i altra vegada? Si vas a tenir milers de milions dels usuaris que busquen en el seu lloc web, probablement hauria de passar l'extra setmanes per avançat per escriure un millor programari, de manera que tots els usuaris es beneficien. Ara, anem a tractar de capturar aquesta 1 poc il·lustrat, però no tant numèricament. Així que aquí és només una vella carta de l'escola. I permetin-me dir que aquest és el temps. I no importa què-- En realitat, no, no el temps. Anem a posar que en l'altre eix. Diguem que aquest és el moment, i aquest és la mida de problema. I un informàtic podria anomenar general això només n. n és igual nostre anar a la variable, on n és un nombre, n nombre, i és la qualsevol nombre d'entrades que té. Així doncs, en aquest cas, n és el nombre de pàgines. El que podria ser en 1000 el cas que acaba de dir. Així que el temps pot ser qualsevol unitat de mesura. Potser, és segon. Potser, és dies. Potser, és com canviar de pàgina. No importa. El que vostè vol explicar en què serà de durada o cost equivalent. Així que amb aquest primer algoritme, si, per exemple, tenia una llibreta de telèfons de 1.000 pàgines, Vaig a dibuixar un punt allà, perquè si és de 1.000 pàgines, que va prendre aproximadament 1.000 voltes de pàgina, més o menys. I després si tingués una 2.000 pàgines llibreta de telèfons, i vaig a dibuixar un segon dot aquí, perquè per a 2.000 pàgines, és com 2.000 segons o voltes de pàgina o el que sigui. I així, quan he dit abans, és tipus d'una relació lineal, que era deliberada, perquè volia més tard en-- dret ara-- per dibuixar una línia. És una espècie d'una recta relació de línia. El pendent és 1/1, si es vol. Mentrestant, el segon algoritme Dit això, si vostè té 1.000 pàgines i que estava fent servir el segon algorisme, on vaig explicar per 2 de, girant dues pàgines alhora, hauria de traçar una dot sota o per sobre de la meva punt original? AUDIÈNCIA: Baix. DAVID Malan: A continuació, ja que com hem vist, Es triga menys temps, la meitat del temps. Així que el punt mig ha d'estar tan alta com l'altra. I la mateixa quantitat per aquí, aquest punt probablement hauria de ser més o menys allà. I pel que el meu segon algorisme, de manera similar, té una relació lineal amb el temps. I podem treure com a tal. Així que ara, la tercera i última algoritme és una mica més difícil de dibuixar. No obstant això, intuïtivament, si ho he entès 1.000 pàgines amb el meu tercer algoritme, només em de prendre com 10 passos. I si tinc 2.000 pàgines amb la meva tercera algoritme, hauria de ser jo no prengui 10 passos, però el 11, només un més. Així que estem només tot just va a veure això. I resulta que, si El zoom en això, jo sóc anar a exagerar per a l'efecte, la forma de la línia, en última instància, no és una recta line-- perquè, de fet, si ho fos, que es veuria més com el altres- en realitat és una línia corba que, si ens apropem, es va mirar molt de la mateixa família. It-- bé, està bé, ignorar aquesta part. Aquesta va ser la meva ploma va de l'angle. És una línia corba que és sempre augmentant, sempre, sempre, sempre augmentant, però només tot just. I així, amb el temps, té una relació que és de la mateixa família. Gairebé sembla recta. Però és sempre tan lentament creixent. Però per a gairebé tots els punts al llarg el seu eix X, eix horitzontal, és més baixa que les altres línies. Pel que aquesta podria ser una relació n, de manera que si té n pàgines, n segons que triga. Això podria ser una relació n / 2. Vostè té n pàgines, es necessita que n / 2 segons, la meitat. I aquest és un logarítmica relació, que Si recorden, la base 2 de n log captures aquest tipus de creixement, per dir-ho. Així que aquest és el tipus de santa Grial entre els tres d'aquests aquí, perquè és només molt més eficient, però sens dubte més complexa per implementar. Qualsevol pregunta? Doncs m'ho dius a mi fer això, deixa a obrir una finestra de text només perquè puguem tractar de formalitzar alguna cosa aquí. Així que permetin-me anar per davant i ara aplicar aquest algoritme per trobar Mike Smith en el codi, si es vol, codi de pseudocodi. No vaig a utilitzar Java o C ++. Jo només vaig a utilitzar una espècie de Anglès-com la sintaxi, el que ens generalment es diu codi de pseudocodi. Aquí, tinc una finestra en blanc. I jo estic dient el pas 1 de la molt primer algoritme és recollida en la guia telefònica. Pas 2 és llibre obert a la primera pàgina. Pas 3 serà miri pàgina per Mike Smith. Si a la pàgina, truqueu a Mike. La pàgina d'una altra volta i aneu al pas 3. Fet, diguem. I el que no és del tot perfecte, el qual veurem en un moment. Però considerarem el conceptes que hem introduït aquí. Així passos 1 i 2 i 3 són més o menys els verbs. Són declaracions, actions-- fan això. I així, en una programació llengua, que li atorga en general cridar-los o declaracions funcions o procediments, ells trucar a qualsevol nombre de coses. Però només estan actions-- fer això. Pas 4 és fonamentalment diferent, perquè és tipus d'una pregunta. És com dir que estem espècie d'a una forquilla a la carretera. Si Mike està en la pàgina, truqueu ell, així que giri a l'esquerra, si es vol. I si no, tornar a alguns una altra page-- o més aviat, ho sento, tornar a algun altre pas, el qual indueix algun tipus de construcció de bucle. I ho fem una i altra vegada i una altra. I en realitat, saps què? Sí. més si al final de la parada de llibre. Així que necessitem un tercer tipus de afecció, ja que no pot seguir girant la pàgina d'anuncis fins al cansament, perquè, al final, em quedo colpejar al final del llibre. I un error en un programa podria ser no anticipar aquest escenari. I llavors em acabo de donar compte, oh, espera un minut, necessito un tercer escenari. Si estic fora de pàgines, en realitat hauria simplement parar. Altrament, és indefinit. ¿Què passarà si segueixo dient volta a la pàgina i tornar, Això és quan els ordinadors congeli o caigui, quan es premi alguna situació no prevista per l'estil. Ara, què passa amb Mike tercer algorithm-- de Smith recollir el llibre de telèfon, llibre obert perquè primer-- no, no és la primera pàgina d'aquest temps, a middle-- oh, bé, que havia el segon algoritme. Anem a saltar a la tercera. AUDIÈNCIA: Oh, ho sento. DAVID Malan: Això està bé. Anem a saltar a l'oberta third-- a mig i ara mira per Mike Smith. Si a la pàgina, truqueu a Mike. I llavors, què és el que volem dir aquí? no què? Podem expressar aquesta en qualsevol nombre de maneres. No hi ha una resposta correcta. OK, si no més, però necessitem ser-- bé, nosaltres volem dividir en dues, però volem anar a l'esquerra o la dreta? Com expressem aquesta idea? Doncs bé, en el cas de Mike, sí, això és just. Però bé, pel que en realitat és un bon punt. Està bé. Seguirem endavant amb aquesta lògica. Tan-- AUDIÈNCIA: Menys de la meitat. DAVID Malan: Sí. Per la resta, si la pàgina és, direm, menys de Smith, a l'esquerra de Smith, llavors-- veurem, és això complicarà? més si la pàgina està abans que Smith, estrip a la meitat, llençar a les escombraries dels quals la meitat? AUDIÈNCIA: Vaig pensar que va ser [inaudible]. DAVID Malan: Estic escoltant les dues respostes. AUDIÈNCIA: Esquerra. DAVID Malan: OK, llançar distància deixat a la meitat, com Lakisa es va dir anteriorment, l'esquerra la meitat, llavors jo tipus de voler anar A-- Vaig a la dreta. O el que és equivalent, i he fet una mica mica d'un desastre d'començament aquí, Jo vull efectiva aneu al pas 2 de nou, on oberta al middle-- o open-- si, diguem, pàgines a mitjà. I això ho arregla. Ja no és un llibre. És només la meitat d'un llibre, pàgines tan oberta a la mitjana. else-- eren gairebé allà. Pas 6, en cas contrari, si la pàgina es produeix després de Smith, trencar per la meitat, llençar la meitat de distància a la dreta, a continuació, aneu al pas 2. una altra cosa deixar de fumar, un quart escenari, si no hi ha pàgines que encara es giri. Així que podríem netejar això. I hem de netejar això. Aquest és un codi molt pseudocodi, si voluntat, vista molt alt nivell. Però això generalment capturar la idea. I, de nou, en aquest escenari, tenir la noció d'una condició, una branca, una forquilla a la carretera, el que fa una a decisió si això, anar d'aquesta manera, més si, anar per aquest camí, més si, anar en aquesta direcció. I aquesta és una molt comuna tècnica de programació per decidir quina direcció per anar, per dir-ho. I també tenim una espècie de bucle estructura, on estem fent alguna cosa una i altra vegada. Ara, resulta que, tant com en aquest exemple, ser super exacte és important. Però també hem vist alguna cosa que seguim cridant a l'abstracció. Què significa per a recollir la guia telefònica? Estem prenent tipus de per fet en aquesta sala que això té algun significat semàntic. Tots nosaltres només tipus de saber, oh, així, recollir la guia telefònica. El que vol dir això realment? Bé, això vol dir en realitat s'estenen banda, s'inclini sobre, estendre els dits, pessigar llibre entre els dits, aixecar-se, estirar mà cap amunt. I podríem ser realment pedant sobre això, Realment és molt precisa pel que fa al que estic fent. Però totes aquestes mesures són col·lectivament el que significa agafar una llibreta de telèfons. I així abans, quan vaig dir, cadascun d'aquests dos primers estats pot ser pensat com una procedir o una funció, realment representa el que ens seguir cridant a una abstracció. És com un alt nivell conceptual Descripció d'un problema que en realitat implica un bon nombre de passos. I així, això també és una recurrent tema en la programació, pel que jo podria escriure un programa utilitzant la sintaxi així- pick_up_phone_book (). I a continuació, sintàcticament, estic va a robar alguna cosa en la majoria dels llenguatges de programació. Ara, el pas 1 es veu encara més com una funció, com a programador en diria. Sembla que el codi que algú ha donat un nom i donada a a mi per utilitzar en una altra somehow-- És a dir, el que la línia que he destacat representa la funcionalitat que potser Ni tan sols a mi mateix implement. Algú més gran, més sàvia que Em vaig adonar que ja com s'expressa la noció d'escollir una llibreta de telèfons. I és com els cinc passos que acabo va recitar, de la part superior del cap. No obstant això, ell o ella ja executats, això, va donar aquests diversos passos un nom, pick_up_phone_book. I els parèntesis és just el que la majoria dels programadors fer al final de declaracions com aquesta. Ara puc estar en el seu espatlles i mai més, pensar en el que significa per recollir una guia telefònica. Jo només puc dir, recollir la guia telefònica. I això és exactament el tots de nosaltres els éssers humans van fer aquí. Quan estàvem probablement gener anys d'edat, 2 anys d'edat, algú havia de ensenyar-nos el que la intenció de recollir una guia de telèfons. I des de llavors, hem abstret dels quals molt poc interessant passos mecànics. I només tenim una comprensió intuïtiva del que significa recollir una guia de telèfons. I es pot extrapolar ara a més complicat coses-- construir un edifici. Igual que, per a algunes persones, que en realitat té sentit. Per als contractistes, als arquitectes, que té algun significat. I sabrien què fer, si Vaig dir, vaig construir un edifici. Però la majoria de nosaltres a l'habitació no podia fer front a aquest nivell d'abstracció. Vostè necessita dir que ens agrada anar a buscar la pala i anar a buscar el formigó i clavar les peces de fusta juntes i qualsevol altra cosa està involucrat en la construcció d'un edifici. I això és perquè no ho hem fet encara estat programat per entendre el que significa construir un edifici. No hem de l'abstracció. No tenim aquesta funcionalitat. I així, el que es veurà en llenguatges de programació, en general, idiomes sobretot, més modernes, com Java, PHP, Ruby i Python, que són molt més madur que les llengües més antigues, com C i C ++ i altres més. I pel que vénen amb més funcionalitat incorporada. Més codi ha estat escrit per la gent en el passat que ara podem trucar o invocar o fer servir, ja que estic insinuant en aquesta línia va destacar aquí. I així, tot i que no estem parlant sobre llenguatges de programació en si, codi només pseudocodi, la totalitat de la idees estan encara en aquesta discussió. I resulta que la precisió és super important, com és l'abstracció. I anem a tractar comuniquen que com segueix. Accidentalment podria haver fet malbé això mitjançant el parpelleig d'una diapositiva a la pantalla prematurament. Però m'ho dius a mi demanar un voluntari valent, si no t'importa pujar. Vostè seria davant de la càmera, si estàs bé amb això. A algú li agradaria venir i donar instruccions als seus col·legues aquí? Només cal venir aquí i parar-se aquí i dir algunes paraules. Victòria està somrient al màxim i evitant els ulls de la majoria. ¿Vostè estaria disposat a venir a un màxim? D'ACORD. I si tots els altres en els seus seients podria dur a terme un tros de paper de rebuig, si es vol. paper ratllat està molt bé. Dóna la volta d'aquesta manera. O part del paper que li van donar ahir, qualsevol full en blanc de paper, si pogués. I si vostè no en té cap, simplement pregunti al seu veí si pogués. Així de moment, per aquest exemple, Victòria es jugarà el paper de un programador, un enginyer, que que ha de programar tot, com els ordinadors, per fer alguna cosa. I veurem quins supòsits decideix fer. Veurem com necessita que tria ser. I si aquesta demostració va pedagògicament bé, un munt d'errors seran fets, que a continuació utilitzarem que com una oportunitat per al debat. No obstant això, el repte per als que hauria de de ser evitar aquests errors, ser un bon programador. I el que el repte que ens ocupa, si que li va agradar a caminar per aquí, que està davant de Victòria a la pantalla aquí-- i és d'esperar, cap de vostès recordar això quan va aparèixer a la pantalla. I no donar la volta en absolut, perquè hi ha una altra pantalla en aquesta sala que puc apagar. Així que no donar la volta. Davant de Victòria és el mateix crit. I el seu treball ara és dir-li a tots en el seu tros de paper el que a dibuixar. I veurem, sobre la base de instruccions verbals només, codi d'ordinador, si es vol, la forma exacta els seus dibuixos són-- les seves implementacions són. Té sentit? AUDIÈNCIA: Sí. DAVID Malan: OK, executar. AUDIÈNCIA: Dibuixa un quadrat. [El] DAVID Malan: I sense se'ls pot demanar preguntes. només pot fer el que se't diu. Ah, i si vostè té diapositives d'avui obrir en una pestanya, no es veuen a la pestanya. D'ACORD? AUDIÈNCIA: OK, dibuixar un cercle. Un slope-- pot dir que el pendent? DAVID Malan: Fins a vostè. AUDIÈNCIA: Un pendent. I un triangle. DAVID Malan: Està bé. I romandre aquí per un moment. I vaig a venir tot en un moment. I no cal posar els seus noms en ella. Déjame entrar en raó i recollir els seus dibuixos, si no t'importa esquinçant cap a fora. Això és el que tornem. Vaig a projectar-la a la pantalla. Veig un quadrat, un cercle, un pendent, i un triangle. Així que va ser una resposta allà. I let's-- crits. Gràcies. Aquí hi ha una altra varietat, i un darrere d'ell. Així que tots ells semblen capturar l'esperit. Gràcies. Hi ha un altre, i aquí hi ha un altre. La interpretació pendent és una mica diferent, poc corbes. I el més proper, ja sigui per la meravellosa especificitat amb la qual vostè té descrit, o potser tipus de va veure abans, això és de fet Victòria el que en realitat estava descrivint. Però ara, els que no ho van fer del tot bé, oferirem algunes objeccions aquí. Així que primer va dir Victòria dibuixar un quadrat. I ara, podem assumir pel bé d'avui que tothom sap com dibuixar un quadrat. Però això no és del tot clar, oi? Com més es pot tenir dibuixat un quadrat, o quan podrien ser algunes de les ambigüitats aquí per l'equip? AUDIÈNCIA: localització i la mida. DAVID Malan: Ubicació, oi? Tots vostès tenien un paper d'alguna forma, en general, rectangles, però lleugerament diferents mides. Però que sens dubte podria haver dibuixat, si volia, una enorme plaça, potser una petita plaça. Potser, es fa girar. No crec que vam veure. Però podria haver estat més diamants com però tot i així, però, matemàticament una plaça. Així que podria dir-se que era ambigua. Després va dir, dibuixar un cercle. Alguns de vostès es van treure al costat de , El que no és raonable, perquè els éssers humans tendeixen a pensar o llegir dreta a esquerra en la majoria dels idiomes, per la qual cosa no una mala suposició. Però aquest cercle podria tenir estat dins de la plaça, podria haver donat la volta al quadrat, que podria haver estat en un altre lloc en el full, de manera que possiblement ambigua. Pendent podria haver estat millor tenint la majoria de les llibertats verbalment amb el que això significa. I alguns de vostès interpretar com una línia ondulada o una línia recta o similars. I a continuació, triangle, també, podria tenir estat orientat en qualsevol nombre de maneres. Així que en resum, fins i tot amb alguna cosa que vostè fes un cop d'ull i vostè és com, wow, per la qual simple, un nen podria dibuixar això, així que no realment, llevat que estiguis super, super persuasiva i dir-li a l'ordinador exactament què fer. Així que si poguéssim, si vostè té un altre full de paper, anem a provar això una vegada més. I vaig a donar una Victòria un altre exemple a la pantalla aquí. I de nou, no donar la volta i no es fixen en les diapositives. I jo li donaré un moment per pensar en com descriure això. No deixi veure la por en els seus ulls. [El] I de nou, aquesta vegada el palanquejament alguns d'aquests robatoris de pilota i tractar d'aconseguir gairebé tothom almenys la resposta correcta. AUDIÈNCIA: OK, prendre una tros de paper, mira enmig d'aquest tros de paper. Enmig d'aquesta peça de paper, dibuixar un cub. [El] DAVID Malan: Què hem après? Estàvem tan a prop. OK, repetir si es pogués, per a tothom. PÚBLIC: Al mig de la tros de paper, dibuixar un objecte, que s'assembla a una galleda. DAVID Malan: OK, això és tot el que arribar a treballar. Permet-me ser analítica i no tant crític, però per fer la reclamació que Victoria definitivament sembla estar pensant en molt abstraccions d'alt nivell, que No és irraonable. Perquè en cas contrari, estaríem tots ser bastant disfuncional, si haguéssim de ser sempre tan precisa amb tot el que fem al món. Però dir que vagi a la middle-- pensem que estàvem en una bona pista tan allà, com anar al mateix centre de la pàgina i, a continuació, dibuixeu una galleda. Així que està pensant en abstraccions, perquè ella encara està veient el que està en la pantalla com en efecte una galleda. Però hi ha tantes oportunitats per a la interpretació allà. I de fet, hi ha tants altres maneres en què podria expressar això, el que em proposo en un moment. Així que aquí tenim una encarnació de la whoops-- picture-- encarnació de la imatge, de manera que una poc tridimensionalitat a la mateixa, la qual cosa és bo. Hi ha un altre, on vostè té la mateix, tot i que és una espècie de cub obert. Algunes persones van prendre una mica més plana, de dues dimensions. I això està bé. Així que hi ha, de fet, en el centre del paper. Aquest crec que estarà de la mateixa manera, perquè si ens anem aquí, això és el que estava descrivint. Així que ara, permetin-me proposar de quina altra podríem descriure aquesta situació. De tornada en el dia, un dels més formes més comunes per aprendre programació era escriure codi, escriu línies d'instruccions, que controlava una mica tortuga a la pantalla. Logotip i altres variants d'aquest era el nom de la llengua. I la tortuga vivia en un món. Així que suposo que això rectangulars l'espai és el seu món. I seria començar pel assuming-- realment no sabem com dibuixar tortuga, així que anem a fer-ho d'aquesta manera. I llavors ell té una petxina i després potser alguns peus. El que podria tenir aquesta petita caràcter a la pantalla. I l'objecte d'aquesta llenguatge de programació era obligar la tortuga per anar cap amunt, avall, esquerra, dreta i posar la seva ploma o recollir la seva ploma cap amunt, pel que en realitat podria dibuixar a la pantalla en aquest món rectangular molt plana. Així en el que vaig pensar que podria estar passant, i on s'ha de tenir en compte el busseig mentalment a l'hora de descriure Instruccions de manera més general, M'agradaria reclamar, es posa a la seva ploma al middle-- i anem a desfer-se de les tortuga, perquè no puc realment mantenir-lo dibuix molt bé. I ara, com podrien Dic dibuixar un cub? Bé, podríem dir alguna cosa així com sorteig una línia diagonal nord-est, per exemple, o en un angle de 45 graus cap amunt. I això podria m'han arribat aquí. I estic bastant lluny d'un cub. Però ara, jo podria dir alguna cosa de la mateixa manera que un gir de 90 graus a l'esquerra i traçar una línia de igual al nord-oest longitud. I podria seguir amb adreces similars. I no serà fàcil. I, francament, és probable que ho faria han estat aquí durant cinc minuts. Però potser hauríem arribat a cosa que, al final del dia, acaba sent una galleda, però practicat a l'interior d'aquesta abstracció fer-ho en tals mínima nivell que realment no es pot veure el que està fent fins que el conjunt El que realment està allà a la pàgina. I pel que aquest és un principi general, de nou, d'programming-- aquesta idea d'abstracció. És tan meravellosament de gran abast, perquè, de nou, que acaba de dir, dibuixar una galleda, que tots Ens pràcticament estaríem assimilar molt ràpidament. Ens agradaria simplement comprendre, OK, dibuixar un cub. Pot ser que no sapiguem l'orientació, així que podria ser una mica més precisos, però podem imaginar general o saber el que és una galleda. I això és útil, perquè si cada vegada que es assegut com a programador en el teclat per escriure codi, si ha de pensar en tals un nivell baix, cap de nosaltres tornaria a fer res. I, per descomptat, cap de nosaltres ho faria gaudir el procés d'escriure codi. Seria com escriure en 0 i 1., que francament no era tot el que fa molt temps els éssers humans estaven escrivint codi a 0 i 1 .. I nosaltres molt ràpidament va passar Les Llengües aquests major nivell C ++ i Java i altres. Així que anem a provar això una vegada més, només per voltejar les taules, de manera que tots tenir l'oportunitat de pensar en lloc de la mateixa manera. Podríem aconseguir un voluntari més aquest temps per arribar a la pissarra i dibuixar, No recitar? Sí, està bé. Ben, anem a dalt. I, Ben, en aquest cas, una vegada que es davant de la junta, no miri a l'esquerra, no es veuen bé. Només fer el que el seu col·legues aquí li diuen. I per a tots els altres en el quart, que ara són el programador. És l'equip. I la imatge que he escollit amb antelació és aquest d'aquí. Estan sol-- que estan pensant d'una broma divertida és tot. Així que seria algú no desitja voluntàriament la primera instrucció o declaració que ha de La ploma de comandament de Ben? I farem això en conjunt, potser una instrucció de cada persona. Ho sento? AUDIÈNCIA: Dibuixeu un cercle. DAVID Malan: Dibuixa un cercle és el primer que vaig sentir. AUDIÈNCIA: A sobre de la tapa. DAVID Malan: A sobre de la tapa. OK, podem deixar que s'elimina, desfer. I ara, a una altra persona. Donen, hauria de ser còmode oferint la següent instrucció? AUDIÈNCIA: És clar, dibuixar el centre de la part inferior del cercle, amb un small-- una mica petit espai d'això, dibuixar una línia recta fins a tres quarts de la manera baix del tauler un lleuger angle a l'esquerra. DAVID Malan: Bé. AUDIÈNCIA: angle lleu. DAVID Malan: Desfer, Control-Z. D'ACORD. Andrew, que volen oferir fins a la següent instrucció? AUDIÈNCIA: És clar. Des del fons d'aquesta línia, un lleuger angle-- més whoops-- potser al voltant d'un terç de la longitud [inaudible], lleuger angle cap avall i com una terç de la longitud de [inaudible]. Així que sí, a partir d'aquest punt, traçar una línia d'un tercer de la longitud de l'anterior la línia més a l'esquerra. DAVID Malan: Això està bé? línia recta, que està bé? OK, Olivier, que desitja per oferir la propera? AUDIÈNCIA: [inaudible] en el part inferior del cercle, [inaudible]. Dibuixar en el costat dret de [inaudible] centímetres. [El] DAVID Malan: Crec que va a ha de convertir això és polzades aquí. AUDIÈNCIA: Stop. [El] DAVID Malan: OK. [? Ara ,?] Voleu per oferir la propera? AUDIÈNCIA: Dibuixeu un [inaudible] la part superior [inaudible] de la mateixa. [Inaudible] cercle, dibuixar a la [Inaudible] i dibuixar [inaudible]. DAVID Malan: bé, no més de desfer. Anem a fer una o dues instruccions més. Chris, que desitja oferir un? PÚBLIC: A la part inferior del cercle, [inaudible] dibuixar una línia igual slopping cap a baix a l'esquerra [inaudible]. DAVID Malan: OK. Andrew? Ens did-- Karim? AUDIÈNCIA: A partir de la línia dreta, el final de la línia esquerra, la part inferior, aniràs a la dreta sobre la mateixa longitud que la línia de estàs en, dibuix la dreta [inaudible]. [Inaudible] graus, de manera que [inaudible] graus al costat dret. DAVID Malan: Està bé. Fem una pausa. No donar la volta encara. Fem una pausa, i que anem provar un altre intent Abans de revelar a Ben el que ha estat dibuixant. ¿Es pot barrejar Ben la dreta- o en realitat, no, anem a donar-li l'altra taula, encara millor. Així que ara m'agradaria que algú prendre més de l'enfocament que Victòria va prendre abans, on parlem en un nivell més alt d'abstracció i en tan sols una oració o dues descriuen a Ben què dibuixar sense ficar-se en la mala herba, per així dir-ho, en aquest un nivell més baix? Victòria. [El] AUDIÈNCIA: Dibuixeu una figura l'home que camina. I les seves cames i braços ha de ser el costat dret. DAVID Malan: OK, això és tot el que obté. Tot bé. Per què no ens revelem a Ben que va fer. Així que un aplaudiment. Aquest va ser el més dur, potser. Així que tot i que estem parlant en termes bastant ximples sobre tot just dibuix fotos, esperem que pugui es pot apreciar realment el grau de expressivitat que podria ser necessari per tal de dir-li a un ordinador què fer. I de fet, el fet que Ben era capaç de dibuixar això tan ràpidament és una mena de prova d'ús d'un idioma, potser un nivell més alt versió d'Anglès, que li permet utilitzar només paraules o escoltar les paraules de Victòria, que li permetrà aquests es basen simplement abstractions-- una figura que caminava a la dreta- aquest tipus de compte un significat semàntic a ella que no és gairebé tan obvi quan estàs a dient: posar la seva ploma, dibuixar a la dreta, assenyalant a l'esquerra. I així això, també, és molt comú en la programació. Això es diu que és com una llenguatge de molt baix nivell, la programació en de 0 i 1 de si es vol. I això seria un nivell més alt el llenguatge de programació en Java, o alguna cosa aixi. Una mica d'una simplificació excessiva, però això és la classe com emocional la sensació que se sent quan utilitzant un tipus de cosa o una altra. Una mica de frustració aquí per la necessitat per tal precisió, però l'oportunitat a ser una mica més flexible amb la interpretació aquí. Però, és clar, els errors pot sorgir com a resultat. Si desitja que a la casa- no va a executar en class-- però si voleu portar un gol, Vaig pensar que anava a submergir-se en això. Així que si t'agrada jugar a aquest joc amb el seu altre significatiu o els nens o similars, es podria gaudir d'això també. Així que seguirem endavant i mirar a una darrera El ací pel pensament computacional. I això ens porta a John Oliver, no per al clip que podria haver vist la nit anterior, sinó a un tema relativament recent. Fa uns mesos, Volkswagen prendre una mica de foc antiaeri per quina raó, si saps? Què van obtenir en problemes per? Sí, pel que emissions-- estaven tractant de superar les emissions proves essencialment per tenir la seva cotxes contaminen menys el medi ambient quan s'estan provant els seus cotxes i contaminar el medi ambient més quan no s'estan provant els cotxes. I el que és cada vegada més interessant al món, ja que pot tenir inferit de les discussions del que és com- it-- carplay, el programari d'Apple per als cotxes i el fet que molts cada vegada més de nosaltres tenen pantalles tàctils en els nostres cotxes, hi ha una quantitat alarmant del programari en la gent cotxes avui, francament, s'obre una llauna sencera de cucs quan es tracta de la seguretat i el risc físic. Però per ara, anem a centrar-se només en el que és involucrat en programari d'escriptura que podria haver gamed el sistema. Per a la definició de la problema, per als que no coneixen, anem a fer una ullada a John Oliver. I per a aquells familiaritzats amb el problema, anem a veure el en una lent a través de la diversió John Oliver també. Així que permetin-me colpejar joc en això, pensar, la introducció de tres minuts. Maleït sigui. [REPRODUCCIÓ DE VÍDEO] -Cars-- DAVID Malan: Òbviament, a YouTube, és-- - --el Personatges més intel·ligents les pel·lícules de Ràpid i Furiós. Aquesta setmana, fabricant d'automòbils alemany Volkswagen es va trobar enmig d'un escàndol de proporcions potencialment criminals. -Volkswagen Es prepara per a milers de milions en multes, possibles càrrecs criminals per als seus executius, com la companyia es disculpa per manipular 11 milions de cotxes a l' ajudar-la a vèncer les proves d'emissions. -Certs Models dièsel van ser dissenyats amb un sofisticat programari que ha utilitzat la informació, incloent-hi la posició de la roda de direcció i el vehicle velocitat, per determinar el cotxe era de sotmetre a les proves d'emissions. Sota aquesta circumstància, el motor reduiria les emissions tòxiques. Però el cotxe va ser manipulada a la derivació que quan s'estava sent conduït. Les emissions van augmentar de 10 a 40 vegades per sobre dels nivells d'EPA acceptables. -Wow, De 10 a 40 vegades més gran que l'EPA permet. Això és el pitjor Volkswagen ha fet mai, és una cosa que es pot dir si que mai havia sentit parlar de la Segona Guerra Mundial. Però potser el signe més segur de com molts problemes Volkswagen està en, és que les persones en el superior han renunciat. El CEO va renunciar dimecres després de lluitant per fer control de danys, dient que era infinitament ho sento, la qual cosa sonava molt bé fins que va resultar ell era només el 10% ho sento però hi havia manipulat la seva boca per inflar artificialment la seva sorriness. I mentrestant, els Estats Units de Volkswagen cap tenia una disculpa de la seva pròpia. -Anem A ser clars sobre això, la nostra empresa va ser deshonest. I en les meves paraules en alemany, ens s'han cargolat totalment cap amunt. Sí, però totalment cargolat dalt no són obres alemanyes. I la llengua alemanya té moltes frases boniques per descriure situacions com aquesta, com ara [Alemany], el que significa més o menys, la tristesa que ve de les mentides relacionades amb el negoci, o [Alemany], el que es tradueix com avergonyir als pare que implica núvols de la gasolina. És un idioma bonic. Simplement navega fora de la llengua. I, per cert, mentre que l'home de disculpa pot haver sonat sincera, val la pena assenyalar que estava parlant en un partit oficial de llançament per al 2016 Volkswagen Passat, el que significa que en breu després de dir ho sento, va dir que això. que -gràcies molt per venir. Gaudir de la nit. El següent és Lenny Kravitz. [MÚSICA] -ok, OK, posant fi a la seva disculpa amb fins al pròxim Lenny Kravitz no ho fa cridar contrició sòbria. És un crit, ens preguntem Bon Jovi, i ell va dir que no. marca de Volkswagen té estat greument danyada. I, francament, el seu nou anunci campanya no està exactament ajudant. - [Alemany], que a Volkswagen agradaria per disculpar-se per enganyar amb vostè els nostres vehicles. [FI DE REPRODUCCIÓ] DAVID Malan: Així que això era una marrada de-- sorry-- això era una manera indirecta de la introducció d'un problema fonamental en programari, que és que es necessitarà per detectar certes condicions. I així, la qüestió que ens ocupa aquí És a dir, com funciona un cotxe potencialment, com s'aplica en el programari per aquests programadors, detectar que en realitat està sent provat? Així que per ser súper clara, el que estaven fent era, en ambients on els programadors van pensar el cotxe estava sent provat, que d'alguna manera van fer el cotxe emet menys emissions, menys les emissions de fums, almenys tòxiques i tal. Però quan és normalment conducció a la carretera, seria simplement emetre tanta la contaminació, ja que volia. Llavors, com podríem escriure la pseudocodi per a aquest algorisme? Com podríem escriure el pseudocodi per al programari que s'executa al cotxe? És a dir, en poques paraules, es redueix a alguna cosa com això. si es prova, emetre menys. una altra cosa emet més. Però això és una mica nivell massa alt, oi? Anem a tractar de bussejar en quant al que aquest abstracció de ser mitjans assajats. En altres paraules, encara que no sap res sobre els cotxes, quin tipus de preguntes poden demanar la fi de determinar si que està sent sotmès a prova, si vostè és el cotxe? Quines característiques podria ser presentar si un cotxe està sent provat? AUDIÈNCIA: Equipament de proves. DAVID Malan: Equipament de proves. Així que si l'equip de prova a prop, a continuació, emetre menys. Pel que podia imaginar la implementació que amb algun tipus de càmeres o la detecció del que l'envolta. I permetin-me proposar, que només se sent massa complicat que en realitat tenen addicional de maquinari només per a aquest fi. AUDIÈNCIA: Si estàs en parc, si la campana està oberta. DAVID Malan: En parc o capó obert, pel que és bo. AUDIÈNCIA: I cotxe en marxa. DAVID Malan: Així que és una mica més concrete-- i cotxe en marxa. Així que aquesta seria la conjunció d'una algunes condicions diferents, si es vol. Així que si el cotxe està al parc, i fins i tot encara que això és una cosa molt mecànic normalment, vaig poder imaginar un programari d'escriptura, sobretot perquè no hi ha sovint hi ha una llum en aquests dies, Em podia imaginar que hi hagi programari que es pot consultar la palanca de canvis o el que no, ¿està vostè en el parc, són que en la unitat, vostè és al revés. I que pugui tornar un contestar això és un sí o no a aquest tipus de preguntes. I perquè pogués respondre també, probablement, una pregunta com és el capó obert. Potser, hi ha algun tipus de sensor que o bé em retorna un 1 o 0, veritable o fals, el capó està obert. I després cotxe en marxa, que podria detectar que d'alguna manera a través de quin mecanisme? Igual, el cotxe està funcionant, la qual podria detectar que es tracta del, podria detectar alguna manera que el vehicle està en moviment? Públic: RPM. DAVID Malan: Sí, pel que hi ha sempre que l'agulla que li indica quantes rotacions per hora de les rodes estan experimentant. I pel que jo vaig poder veure això. I si no és 0, que, probablement, vol dir que el cotxe està en moviment. Però hem de ser una poc curós allà, porque-- anem a simplificar això- si acabem de dir, si el cotxe en marxa, no volem que acaba d'emetre menys, volem si el cotxe està en marxa i està sent provat. Així que hi ha alguns altres Els ingredients que la gent han plantejat la hipòtesi que el programari està fent, perquè absent el codi font real, només es pot espècie de deduir de la efectes físics del cotxe pel que fa al que podria estar passant per sota la campana en el programari. Així que si cotxe en marxa i potser, per exemple, les rodes del darrere no es mou, Quin podria ser indicativa d'algun tipus de prova? Què estic insinuant aquí? Sí, potser, és sobre 1 d'aquestes coses de rodets, on igual que les rodes estan girant al front oa la part posterior, depenent de si es tracta de la roda davantera o tracció posterior, així que la meitat de les rodes estan en moviment, però el altres dos no, que És una situació estranya en el món real. Si vostè està conduint al carretera, que no hauria de passar. Però si estàs en un magatzem en algun tipus de sistema de rodets, que, efectivament, podria succeir. Crec que la gent també van proposar que potser, si el cotxe està en marxa i de direcció no roda en moviment, que també podria ser un senyal, perquè això és raonable per com una recta en una carretera. Però fins i tot llavors, l'humà és probablement moure una mica o dubte en uns pocs segons. O el curs d'una minuts, les probabilitats són que no és serà fixat en exactament la mateixa posició. Així, en altres paraules, pot prendre resta, està sent provat, i trencar aquesta funcionalitat en aquests ingredients components. I això és realment el que Volkswagen enginyers d'alguna manera ho van fer. Ells van escriure el programari conscientment detectar si el vehicle està sent provat, Per tant, emeten menys, una altra cosa emetre en la forma habitual. I el problema aquí, també, és que el programari no és cosa que realment pot veure a menys vostè té l'anomenat codi font. Així que hi ha dos tipus diferents de code-- almenys dos tipus diferents de codi al món. Hi ha una cosa que es diu font codi, que no és a diferència del que hem estat escrivint, codi font. Aquest és el codi font escrit en un llenguatge anomenat pseudocodi, que és una cosa semblant a l'anglès. No hi ha una definició formal del mateix. Però C, i Java, C ++, les són tots els llenguatges formals que, quan s'escriu en ells, el que té és un arxiu de text que conté el codi font. Però també hi ha alguna cosa en el món anomenat codi màquina. I codi de màquina, per desgràcia, és només de 0 i 1 de. Així codi de màquina és el màquines entenen, és clar. El codi font és el que entenen els humans. I, en general, però no sempre, hi ha un programa d' que utilitza un programador que pren font codi i el converteix en codi màquina. I aquest programa és generalment es diu un compilador. Pel que la seva entrada és codi font, seva sortida és el codi màquina, i el compilador és un tros de programari que fa que el procés. Pel que aquest fet molt bé als mapes les nostres entrades, sortides, algoritmes. Però això és una encarnació molt específica d'això, el que vol dir que, fins i tot si vostè és propietari d'una de Volkswagen cotxes que és culpable d'això, no és que només es pot obrir la caputxa o obrir el manual de l'usuari o buscar en el codi font, perquè de moment que arribi al seu cotxe en el seu camí d'entrada, ja han passat convertit en 0 i 1 de. I és molt difícil, per no dir impossible, però és molt difícil deduir molt de res de només mirar la subjacent de 0 i 1 de. Perquè pugui esbrinar-ho, en última instància, si a entendre com una màquina operates-- Intel dins-- si s'entén l'arquitectura Intel, però és molt consumidora de temps. I fins i tot allà, és possible que no ser capaç de veure tot que el codi pot fer realment. Qualsevol pregunta sobre aquest o aquesta tipus de procés més general? I, de fet, podem relacionar aquesta discussió a la discussió d'ahir d'Apple. Això, també, és per això que l'FBI no pot simplement anar a buscar al telèfon del sospitós i trobar les línies de codi, per exemple, que permetrà el codi d'accés o permetre que el retard de 80 mil·lisegons. A causa de que en el moment en què és en l'iPhone dels companys, ja han passat convertit a 0 i 1 de. Bé, anem a fer una pausa aquí per al nostre mirar al pensament computacional. Per què no prenem un descans de 15 minuts. I quan tornem, anem a fer una ullada a la programació en si i començar a traçar alguns d'aquests conceptes d'alt nivell a una transferència real, si lúdic, llenguatge de programació.