David MALAN: Maligayang pagbabalik, sa lahat. Kaya kahapon, makikita mo isipin ang na kami ay nakatutok sa mga paksang ito dito. Kaya kami ay may apat na overarching topics-- privacy, seguridad, at lipunan; teknolohiya internet; cloud computing; at sa huli, web development. Mayroon bang magkaroon ng bandwidth o ang oras upang panoorin ang isang munting Juan Oliver kagabi? Ito ay talagang pretty nakakaaliw, kung hindi isang maliit na nakakatakot. Ang anumang mga katanungan sa anumang bagay ginawa namin kahapon? Anumang clarifications? Ang anumang mga katanungan na nais mong bang hawakan namin sa araw na ito sa ilang mga paraan? So clean slate. Kaya kung ano ang sa agenda para sa araw na ito? Kaya naisip ko na nais naming magsimula ngayon na may isang pagtingin sa kung ano ay sa pangkalahatan kilala bilang computational thinking-- sa ang panganib ng oversimplifying, iniisip tulad ng isang computer, marahil pag-iisip tulad ng isang engineer, at sinusubukan mong simulan upang ayusin ang iyong mga saloobin o upang bigyan ka ng isang mas mahusay na kahulugan ng kung ano ang kasangkot sa aktwal na namumuno isang computer upang gawin ang isang bagay sa pamamagitan ng paraan ng programming. At itinatago namin ito sa isang pretty mataas na antas, pretty much Ingles, subalit sinusubukang gamitin ng mga pamilyar na halimbawa upang gawing pormal paano mo pumunta tungkol sa paglutas ng mga problema. At kami ay muling bisitahin ang ilang CS mga paksa, tulad ng abstraction, na sumampa sa isang pares ng beses kahapon, algorithm, at pagkatapos ay representasyon. At na kung saan sisimulan namin ngayon sa loob lamang ng ilang sandali. Pagkatapos kami ay kumuha ng isang pagtingin sa programming. Susubukan naming kumuha ng isang pagtingin sa ilan pangunahing constructs na kung saan maaari kang maging pamilyar at maaaring kahit na makahanap ng lubos na madaling maunawaan. Titingnan namin, sa katunayan, sa isang sample programming kapaligiran na napaka naa-access, napaka mapaglaro, at sa katunayan na naka-target para sa edad 12 at pataas. Susubukan naming gumastos ng ilang minuto doon at pagkatapos ay kumuha ng mga bagay sa isang mas mababang antas ng at talagang makipag-usap tungkol sa ilan sa ang algorithm at data istruktura, kaya na magsalita, na programmers karaniwang gamitin upang malutas ang problema malayo mas mahusay kaysa sa maaari ka magawa nang walang mga ito sama-sama. Pagkatapos pagkatapos ng tanghalian, kami ay kumuha ng isang pagtingin sa stacks teknolohiya, kung saan ay lamang isang magarbong paraan ng sinasabi mga koleksyon ng mga teknolohiya na maaari mong gamitin upang malutas ang ilang mga problema. At kami makipag-usap tungkol sa alpabeto sopas ng mga wika na umiiral today-- Java at sawa at C ++ at PHP at Ruby at ang lahat ng uri ng iba pang mga bagay. Susubukan naming kumuha ng isang pagtingin sa madaling sabi sa pattern na disenyo. Programmers, paglipas ng panahon, may pinagtibay methodologies na may posibilidad na makatulong sa kanila malutas ang mga problema mas madali. Kapag nagsimula ka upang makita ang iyong sarili pagsulat ang parehong uri ng code muli at muli, tao gawing pormal ang mga repetitions at ascribe pangalan sa kanila at pagkatapos ay gamitin ang mga ito at itaguyod ang mga ito, sa huli. At kami makipag-usap nang kaunti tungkol sa mobile estratehiya, tulad ng kung ano ang ibig sabihin ng tunay na gumawa ng isang mobile app o isang mobile website. Huwag mong gawin ito para sa Android? mong gawin Gawin ito para sa iOS? mong gawin Gawin ito para sa pareho ng mga? At ano ang mga trade-offs? At pagkatapos ay sa wakas, kami ay kumuha tingnan web programming, na kung saan ay isang collective term talagang naglalarawan anumang oras mong isulat software na sinadya upang tumakbo sa web, kung sa mga telepono o desktop o laptop. Susubukan naming kumuha ng isang maikling tumingin sa database at ang disenyo sa ganyang bagay, kung lamang dahil halos lahat ng anumang kagiliw-giliw na web-based na application mga araw na ito ay may ilang mga uri ng database. Kung hindi man, ay ito maaaring lamang static na nilalaman. At isang database ay nagbibigay-daan sa iyo upang gumawa pagbabago sa paglipas ng panahon, maging ang iyong sarili o mula sa mga gumagamit. At kami isaalang-alang kung paano mo ay pumunta tungkol sa pagdisenyo na database at ang uri ng magulong pag-uusap na maaaring dumating up sa isang engineer talakayan sa isang puting board kapag aktwal na pagpapatupad isang app para sa unang pagkakataon. Kami makipag-usap tungkol sa madaling sabi APIs, kapaki-pakinabang na serbisyo na maaari mong gamitin upang tumayo sa balikat ng iba, kung ang mga kompanya ng o mga indibidwal, at malutas ang iyong sariling mga problema nang mas mabilis. At pagkatapos ay gagamitin namin magkawkaw marahil ng kaunti sa JavaScript, isang programming language na ginagamit pareho sa mga browser mga araw na ito, kundi pati na rin sa server. At marahil, kami muling bisitahin, oras na nagpapahintulot sa, ang ilan sa mga hands-on web bagay-bagay namin ginawa kahapon at pagsamahin ang dalawang sama-sama bago ipinid namin. Kaya sa na- ano ang ahead-- ay Mayroon bang anumang bagay nawawala na kayo nais na siguraduhin ipasok namin at hawakan sa sa ilang mga punto. Kung ito ay spring sa isip, dalhin ito up bago ang haba. Ngunit bakit hindi namin magsimula sa isang tumingin sa computational pag-iisip. At hayaan mo akong magpanukala na computational pag-iisip ay, muli, uri ng mataas na antas ng paglalarawan kung ano ang isang computer siyentipiko ay maaaring gawin. At sa katunayan, sabihin magsimula na may tatlong mga sangkap na maaaring pumunta sa computational pag-iisip. Ito ay isa lamang paraan ng naglalarawan ito. saan namin tukuyin ito sa anumang bilang ng mga paraan. Ngunit ipaalam sa akin imungkahi, para sa kapakanan ng araw na ito, na ang mga problema sa buong mundo, lahat ng problema sa mundo, kapag nilapitan ng isang computer siyentipiko dati matingnan bilang kung ano ang kami ay call inputs, na kung saan kailangan upang makakuha ng fed sa kung ano ang makikita namin tumawag algorithm, na pagkatapos ay magbunga outputs. Sa ibang salita, ang buong mundo ng problema-tuos paghahabol ko maaaring distilled sa mga tatlong ingredients. Kaya kung ano ang ibig sabihin ko sa pamamagitan ng inputs? Inputs ay lamang kung ano ang ikaw ipinasa upang malutas. Halimbawa, narito ang isang lumang problema paaralan. Kung mayroon akong isang phone book dito at Gusto kong tumingin ng isang bagay sa mga ito, ito ay ang aking input. Mayroon akong 1,000 o kaya mga pahina sa isang libro ng telepono. Ito ang input sa aking problema. At gusto kong makahanap ng isang bagay tulad ng Mike Smith, para kaibigan na ang pangalan at numero ay sana sa ganitong address book. Ito ay bago ang araw ng cell phone, kaya ako ay hindi maaaring lamang ng paghahanap para sa mga ito. Kaya kailangan kong gawin ito lumang paaralan at talagang search mga inputs para sa ilang mga sagot. At na sagot ay lamang ng pagpunta tawaging output. Kaya ang input ay ang phone book. Ang algorithm ay kahit anong hanay ng mga hakbang gagamitin ko upang mahanap Mike Smith. At ang output ay, sana, numero ng telepono Mike Smith. At ito pagkatapos ay magiging lamang kinatawan ng karamihan sa anumang problema upang sa ikaw ay ipinasa inputs at nais upang makabuo ng outputs. Kaya bago isaalang-alang namin ang proseso sa pamamagitan ng kung saan maaari naming malutas ang problemang iyon, paghahanap ng Mike Smith at bagay tulad na, sabihin isaalang-alang ang una at ang last-- inputs at outputs. Pisikal, siyempre, ang input dito ay ang maramihang mga papel nakadikit magkasama sa anyo ng isang libro ng telepono. Ngunit mga computer, ng course-- laptops at desktop at kahit phone mga days-- mga ay electronic device. At sa katapusan ng araw, kung ano ang ang tanging input sa isang computer? Well, ito ay isang bagay tulad ng ito kapangyarihan kurdon dito. plug ko ito sa pader, at kumuha ako ng isang daloy ng mga electron, na nagpapahintulot sa akin upang patakbuhin ang machine. O siguro mga electron ay nilikha sa pamamagitan ng paraan ng aking baterya. Ngunit sa pagtatapos ng araw, na ang dahilan ang tanging bagay na pagpunta sa aking laptop. At kaya marami pang mga kagiliw-giliw mga bagay-bagay ay sa huli pagdating sa labas, kung sa pamamagitan ng paraan ng printer o ang screen o audially o mga katulad. Kaya kung mayroon kaming lahat ng aming pangunahing input sa isang computer ay koryente, kaya lang electron pagpunta sa at o sa labas, at kaya kung paano maaari naming gamitin na input upang aktwal na kumakatawan impormasyon? Sa ibang salita, paano namin makakuha ng mula sa isang simpleng daloy ng koryente sa kumakatawan aktwal numero o aktwal na mga titik o aktwal na mga imahe sa screen o aktwal na mga pelikula o mga e-mail o anumang bilang ng mga mas mataas na antas konsepto, kung ikaw ay, na sa pagtatapos ng araw sa anumang paraan ay kailangang naka-imbak sa ito electronic makina aparato gamit lamang ang mga simpleng ingredients-- electron pagdating sa at sa labas? Kaya ito ay tila na, sa pinakasimpleng form, ang tanging uri ng mga estado mayroon ako sa aking mundo, kaya upang speak-- kondisyon sa aking world-- ay alinman Mayroon akong mga electron agos, kuryente umaagos, o ko not-- iba pa, off. At sabihin gawing pormal on at off, bilang isang computer siyentipiko ay maaaring, sa pamamagitan lamang ng 1 at 0. Sabihin lang ilarawan ang ilan arbitrary ngunit pare-pareho number dito. 1 ay nangangahulugan sa, 0 ay nangangahulugan off. O maaari mo ring tingnan ito bilang true paraan sa at false paraan. Maaari mo ring gawin black at puti o pula at bughaw. Ikaw lamang ang kailangan ng dalawang descriptors. At isang computer siyentipiko gagawin karaniwang lamang gamitin ng 0 at 1. Kaya kung iyon ang kaso, ang aking lamang alpabeto ay binubuo ng 0 at 1, paano kaya kong posibleng makakuha sa kahit na ang number 2 sa isang computer, pabayaan mag-isa ang bilang 3 o isang katinig o isang imahe o isang pelikula? Paano namin uri ng bootstrap ating sarili mula sa ito pangunahing prinsipyo ng 0 at 1 at talagang kumakatawan sa isang bagay mas kawili-wiling? Well, hayaan mo ilagay na tanong on hold para sa sandali lamang at isaalang-alang ang isang bagay sana pamilyar, kahit na kung ikaw ay hindi tunay na-iisip tungkol sa ito sa anumang detalye para sa 10, 20, 30, 40, 50 higit pang mga taon. Ito ay kung ano? Paano mo bigkasin ang na? Hindi kahanga-hangang gawa tanong. Ang isang bilang, ngunit ano ito? 1, 2, 3, o 123. At Nagustuhan ko kung paano ang sinabi mo 1, 2, 3, dahil iyon ang isang paraan ng pagtingin dito. 1, 2, 3, ito ay isang pagkakasunod-sunod ng tatlong mga simbolo. Walang mga larawan na namin ngayon ikaw ay may mga salita para sa. At kung ikaw uri ng basahin ang mga ito ang lahat ng sama-sama, isang tipikal na tao sa English sasabihin 123. At iyon ang uri ng isang mas mataas na antas konsepto, nararamdaman tulad ng isang makatwirang malaking numero. Ngunit kung paano did we get there? Well, maaaring ito ay isang habang since na iyong naisip tungkol dito tulad nito, ngunit bumalik sa aking araw, ako uri ng natutunan na ito bilang ang 1 ni column, ang 10 ni haligi, at haligi ng 100. Kaya bilang Lakisa sabi ni, ito ay 1, 2, 3, ngunit ito ay din 123. Ngunit paano namin makuha mula sa ang dating sa huli? Well, gusto mo karaniwang gawin sa haligi ng 100, mayroon akong isang 1. Kaya na ang dahilan tulad ng sinasabi 100 beses 1. At pagkatapos ay sa 10 ng haligi, Mayroon akong 2. Kaya na tulad ng sinasabi ng 10 beses 2. Sa 1 ni column, mayroon akong 3. Kaya na ang dahilan tulad ng sinasabi sa 1 beses 3. At kung idagdag ko ang mga bagay sama-sama, ito, siyempre, ay 100 plus ang 10 plus 3. At oh, na ang dahilan kung bakit ako kumuha ito mas mataas na antas paniwala ng 123. Ito ay lamang ng pangunahing matematika, kung saan ang mga mga simbolo ay may weights sa kanila, kung ikaw ay, placeholder o halaga ng haligi. At sa sandaling i-multiply ko ang lahat out, kumuha ako ang numerong ito. Kaya kung gaano karaming ng alam mo kung paano upang makipag-usap binary-- 0 at 1's-- tulad ng isang computer? OK, perpekto, walang sinuman, o sinoman sa inyo sa tingin mo gawin. Ngunit Gusto ko tubusin mo talaga alam ito na. Kailangan lang namin upang ayusin ng sabunutan aming mga kaisipan modelo ng isang maliit na bit. Ngunit ang proseso ay eksakto ang parehong. Hayaan akong mag-iwan ng isang ito up doon at sa halip hilahin ito pababa para sa isang sandali. Sa mundo ng mga computer, Ang mayroon lamang tayo 0 at 1 ni. At kaya ang bagay na pagpunta sa pagbabago ay kung ano? Well, sa aking mundo ng tao, ang decimal system, Disyembre kahulugan 10, Mayroon akong gaano karaming mga numero sa aking pagtatapon? 10, i-right? 0 hanggang 9, ng mga kurso. At iyon ang dahilan kung bakit mayroon kaming ang 10 ni lugar at lugar ng 100. Kung saan ay na nagmumula? Well, ito ay 10 sa kapangyarihan ng 0. Ito ay 10 sa kapangyarihan ng 1, 10 sa kapangyarihan ng 2, at iba pa. Mo lamang panatilihin ang pag-multiply ang iyong mga haligi sa pamamagitan ng 10, na nagsisimula off na may lamang 1 sa rightmost isa dito. Kaya sa mundo ng mga computer, kung ikaw lamang Mayroon binary-- bi kahulugan 2-- o 0 at 1, kami lang talagang kailangan upang baguhin ang batayan ng matematika na. Kaya sa ibang salita, ngayon kami bibigyan lamang may 1 ni haligi at the-- where is this going-- haligi ng 2 ng, haligi ng 4, at marahil higit pa. Bakit na? Well, ito ay 2 ang 0-ika-kapangyarihan. Ito ay 2 ang 1. Ito ang 2 sa 2, at iba pa. Kaya samantalang dito, mayroon kaming 1, 10 ni, 100, 1,000 's, 10,000 ni, 100,000, ang 1 milyon-milyong, at iba pa, dito kami ay may 1, 2, 4, 8, 16, 32, 64. Mo lamang panatilihin ang pag-multiply sa pamamagitan ng 2, sa halip na panatilihin ang pag-multiply sa pamamagitan ng 10. Kaya ngayon, kung ang layunin sa kamay ay upang kumatawan numero gamit lamang 0 at 1 ni, sabihin isaalang-alang kung paano namin makarating doon. Ito, siyempre, ay ang pattern 0 0 0, ngunit kung ano ang numero conceptually ay kumakatawan ito? Well, 4 na beses 0 plus 2 beses 0 plus 1 beses 0, sabihin magdagdag ng mga sama-sama. 4 na beses 0 ay, siyempre, 0, plus 2 beses 0 ay, siyempre, 0 plus 1 beses 0 ay, siyempre, 0. So ah, ito ay kumakatawan sa number namin ang mga tao malaman bilang 0. Well, ngayon, sabihin napaka mabilis fast forward. Kung sa halip hindi ako na kumakatawan 0 0 0, ngunit sabihin gawin 1 0 1, na maaaring maging kung paano Lakisa, mas maaga, Gusto lang ipakilalang 1 0 1. Ngunit ngayon, paano namin dalhin ito sa mas mataas na antas ang bilang maaaring malaman namin ang mga tao? Kaya kung ano ay ang bilang na ito? Ito ay 5, ang bilang alam namin bilang 5. Well, kung bakit ay na? Well, maaari naming talagang uri ng maglakad sa pamamagitan nito methodically 4 na beses 1, 2 beses 0, 1 beses 1. Magdagdag ng mga magkasama, kaya ito ay 4 plus 0 plus 1. At iyon ang dahilan, sa katunayan, 5. Kaya ito ay nakakakuha ng kaunti nakakapagod ngayon paggawa ng arithmetic muli at muli. Ngunit ang proseso ay eksakto ang parehong. Ang tanging bagay na may nagbago sa ating mundo ay na ang aming mga haligi ay 1, 2, 4, 8, 16, at iba pa, sa halip ng 1, 10, 100, 1,000. At ito lamang dahil ang aming alpabeto ay may shrunk mula 0 hanggang 9 sa makatarungan 0 hanggang 1. Kaya bilang isang maliit na pagsusulit dito, kung paano gagawin kumatawan sa iyo ang bilang 7 in binary? 0? Well, 0, ibig mo bang sabihin 0 0 0? Say ito muli, Karina. Perpekto. Bakit na? Ito ay epektibong 4 plus 2 plus 1. Kaya mabuti. Paano namin kumakatawan sa isang maliit na another-- kung paano tungkol sa number 2? Isara, ngunit paurong. Kaya kung ano ay ito? Is 4 plus 1, kaya na 5 muli. Kaya what's-- Sorry, Karina? 0 1 0. 0 1 0 ay magiging 2, dahil na maguli, ay kung ito uri ng ay hindi tumalon out sa iyo, lamang gawin ang matematika. 4 na beses 0, 0, 2 beses 1 ay 2, 1 beses 0 ay 0. Kaya ito ay ang bilang alam namin bilang 2. Paano ang tungkol sa number 8? Hm? Good. Kaya namin uri ng kailangan ng isa pang placeholder. Kailangan namin 1 0 0 0. At iyan ay totoo kauri natin ng old school decimal system. Paano mo kumakatawan sa bilang 1,000? Well, Gusto ay nagiisip na siya'y uri ng sa isang matigas lugar, kung magtatanong kayo upang kumatawan ang bilang 1,000, dahil kahit na magbibigay sa iyo ng iyong sarili tulad ng 9 sa mga ito, 9 sa mga ito, 0 sa mga ito, kung saan ay ang pinakamalaking bilang mo mayroon, ikaw ay hindi pa makakuha ng 1,000. Kaya't kung ikaw 1,000, kailangan mo lamang ng isa pang posisyon, sa gayon ay maaari mong gawin 1 0 0 0, ergo ang bilang 1,000. Kaya ngayon, sabihin i-map ni ganitong uri ng haka-haka discussion bumalik sa hardware, kung saan muli, ang input ay lamang ito maliit na power cable, kuryente pumapasok at umaagos out. At kaya para sa na upang mai-map mula dito papunta doon, well, ano ang gagawin namin talagang kailangan? Well, maaari mong isipin ng pagiging sa loob ng isang computer, ang maramihang mga ilaw bombilya, kung gagawin mo. talagang ito ay tinatawag na transistors. At transistors ay lamang switch na maaaring maging alinman sa on o off. Kaya maaari mong isipin ng isang transistor na nasa ay nagpapahintulot sa koryente sa daloy at isang transistor na off bilang pagpapahinto kuryente mula sa agos. At sa halip na kumuha ng ibabaw ng mga ilaw dito, bakit hindi ko ito uri ng mga bagong estilo ng paaralan. Kaya ito ay maaaring maging isang 1, isang flashlight pagiging sa, lamang bahagya though. At ito ay maaaring maging isang 0, at ngayon ito ay off. Kaya gamit ang pisikal na aparato, ako ay maaari na ngayong ay kumakatawan sa mga binary system. Kailangan ko lang dalawang estadong ito. Hindi mahalaga kung ano ang kulay ito ay o kung ano ito ay. Lahat na usapin ay na mayroon akong sa isang estado sa at ibang estado off. Kaya gamit ang aking telepono dito, kung paano ko kumakatawan sa bilang alam namin bilang 0? O ilagay equivalently, kung ano number ako na kumakatawan ngayon? 0, dahilan sa ang telepono ay off. At kung gagawin ko ito? At ngayon, kung paano ko kumakatawan sa bilang 2? Maaari ko bang hiramin ang telepono dito, tulad ng ginawa namin kahapon? Kaya sabihin makita, kaya kung gusto ko upang kumatawan ang bilang 2, ay ito ang number 2? Hindi. Anong numero ang am ko sinasadyang na kumakatawan dito? Ito ay talagang ang bilang 3. Kaya kung saan ang isa ang gusto kong i-off? Ang itim na telepono or-- na rin, kung they're-- black telepono o ang puting phone? Ang puting phone. Kaya kapag isinara ko ito off at kami line up ito sa paglipas dito, mayroon kaming isang 1 sa 2 ni lugar at isang 0 sa 1 ni lugar. At kaya ako ngayon na kumakatawan sa bilang 2. At ito, Of course, ay ang number 3, dahil ngayon ang parehong mga ilaw ay sa. At kukunin ko na hihinto dito, ngunit ito ay sa dahilan kung gusto ko upang kumatawan sa number 4 o 8 o mas mataas, Pupunta ako sa kailangan ng higit phone. Ngunit iyon lamang ang lahat na ang nangyayari sa. Kaya kung sakaling mo na narinig na sa loob ng a-- salamat you-- ng computer ay milyon-milyong mga transistors, na ang dahilan lamang milyon-milyong mga maliit na maliit maliit switch. At ang mga ito hindi liwanag bombilya na i-on at off, ngunit ang alinman nila pinapayagan koryente upang dumaloy sa isang lugar o ihinto ito. At kaya may iyong dalawang states-- on o off, on o off. Kaya kami ay tila ngayon na magkaroon ng kakayahan na ito upang kumatawan sa konseptong ito na nais naming sa aktwal na hardware. Ngunit ang lahat na mayroon kami ngayon ay ang kakayahan upang kumatawan numero ito ay tila. Kaya kung paano namin pumunta tungkol sa na kumakatawan sa mga titik ng alpabeto, na kung saan nararamdaman tulad ng susunod na uri ng tampok na iyong ay nais na idagdag sa isang modernong computer sandaling ikaw ay may mga numero? At sa katunayan, kung sa tingin mo tungkol sa ito, kasaysayan, mga computer ay ipinakilala talagang upang maglingkod bilang calculators ayon sa bilang. Pero siyempre, ang mga ito araw, ginagawa nila marami pang iba. Kahit na kapag sila boot up, ikaw karaniwang makita ang isa o higit pang mga salita. Kaya paano kinakatawan mo salita, kung ang lahat ng mayroon kang ay, muli, kuryente sa dulo ng araw, o equivalently 0 at 1 ni? Yeah. Yeah, I mean, namin uri ng ginawa ito kahapon sa ilang mga form, kung saan sa ilang mga punto, Sa tingin ko ako arbitrarily sinabi na, kung gusto naming upang kumatawan sa titik A, maaari naming tumawag lamang na ang isang 1. Ito ay sa konteksto ng cryptography, kung saan kami lamang ang kailangan ng ilang uri ng code, ilang mga uri ng paggawa ng mga mapa. Kaya siguro A ay kinakatawan bilang isang 1, at B ay kinakatawan bilang 2, at Z ay kakatawanin bilang 26, halimbawa. At pagkatapos ay ang tanging caveat ay na kung ako pagpunta upang i-encode titik sa aking mga email o sa aking mga text na mensahe ng mga numero, sa iyo ang lahat kung sumasang-ayon na gamitin ang katulad na hanay ng mga convention. At sa katunayan, ang mundo ay tapos na eksakto na. May ay isang sistema sa mundo tinatawag ASCII, American Standard Code para sa Impormasyon Interchange, na kung saan ay isang desisyon lamang ng ilang taon nakalipas na ang mga tao na ginawa na nagpasya na A ay pagpunta sa pantay, hindi 1, 2, at 26, at iba pa forth-- ito ay isang maliit different-- ngunit 65, 66, 67. At kukunin ko na makuha ang isang tsart sa loob lamang ng ilang sandali. Ngunit ito ay arbitrary. Ngunit ito ay hindi mahalaga na ito ay arbitrary. Ang mundo ay may sa makatarungan maging pare-pareho. Ngayon, mas kamakailan lamang, mayroong isang bagay na may interes tinatawag Unicode, dahil uri ng mundo ng natanto, pagkatapos inventing mga computer, na mayroong higit sa na rin 256 mga simbolo sa mundo na maaari naming nais upang kumatawan, lalo na kapag ikaw ipakilala Asian na mga wika at iba pang mga symbologies na kailangan pa expressiveness kaysa sa iyo maaaring magkasya sa pinakamaagang bersyon ng ang code na ito, na kung saan ay tinatawag na ASCII. Kaya Unicode talagang nagbibigay-daan sa mong gamitin pa 0 at 2. Sa partikular, patuloy mong pakikinig ng salita bytes sa lipunan at kahit na lamang kahapon. At isang byte ay kung ano ulit? Ano ang isang byte? Ito ay lamang ng 8 bits. Kaya kung ano ang tunay na ito? Well, ito ay nangangahulugan na, mas maaga, nang kami ay pakikipag-usap tungkol sa binary at ako ay gumagamit ng arbitrarily tatlong piraso kapag kami ay pakikipag-usap tungkol binary-- ang 1 lugar, ang 2 ni kinaroroonan, at ang 4 place-- well, isang byte lamang ay nangangahulugan na ikaw ay pakikipag-usap hindi sa mga unit ng tatlong ngunit apat, lima, anim, pito walo, na nagbibigay sa amin ng lugar 8 ni, 16 ni, 32 ni, 64, at 128 ni. Sa ibang salita, ang isang bit ay hindi lahat na kapaki-pakinabang ang isang yunit ng panukalang-batas, dahil ito ay tulad ng isang maliit na maliit maliit piraso ng impormasyon, on o off. Kaya ang ilang mga taon na nakalipas, mundo lamang ay nagpasya ito ay bahagyang mas maginhawa upang makipag-usap sa mga tadhana ng bytes, walong bagay sa isang pagkakataon. At kaya sa gayon ay ipinanganak ang pagkaunawa ng isang byte. At kaya kami ay may walong bits dito. At ito ay lumiliko out, masyadong, para sa mga katulad dahilan, ang mundo ay nagpasya taon ang nakalipas na kinakatawan ang isang ASCII sulat, ikaw ay pagpunta sa gamitin ang mga yunit ng 8 bits. Kaya kahit na hindi mo gusto kailangan na marami, ikaw ay palaging pagpunta sa gumamit ng 8 bits upang kumakatawan sa isang titik ng alpabeto. At ito ay maginhawa, dahil pagkatapos kung ikaw makatanggap ng mensahe na may isang 0 0 0 1 1 1 1 0 sinusundan ng isa pang 1 1 1 0 1 0 0 1, kaya kung ikaw ay tumatanggap ng 16 bits, ang mundo maaari lamang ipinapalagay na ang unang 8 mga isang titik at ang ikalawang 8 ay isa pang liham. Ay hindi mahalaga kung gaano karaming mga may mga. Ito lamang ang mahalaga na kami ay lahat ng pare-pareho kapag kami ay pagbibigay-kahulugan ang mga bits. At ito ay lamang ng random. Ito ay nangangahulugan na ang isang bagay, ngunit ako ay hindi talagang isipin ang tungkol kung ano ang ibig sabihin nito. Kaya ito ay isang maliit na maliit na kasinungalingan. Originally, ASCII tunay na ginamit lamang ng 7 bits. At sa ikawalong bit ay tinatawag extended ASCII. Ngunit ang punto ay, sa huli, pareho. Ang mundo sa pangkalahatan ulirang sa 8 bits. Kaya ito ay tila na maging isang maliit takda, dahil ako ay maaari lamang kumakatawan capital A, capital B sa pamamagitan ng capital Z. Ngunit sa katunayan hindi, kung pumunta ako to-- mayroong isang bungkos ng mga mapagkukunan online, halimbawa, asciitable.com, ito ay pagpunta sa maging isang maliit na napakalaki sa unang. Ngunit Kukunin ko ituro kung ano ang mahalaga dito. Ito lamang ang mangyayari sa be-- at kukunin ko walk-- sabihin makita, kung pumunta ako sa paglipas dito. Narito ay, sa decimal haligi, ang bilang 65. At sa kanang kamay ang sulat column character, Chr, ay ang titik A. At maaari mong huwag pansinin, para sa ngayon, ang lahat ng bagay sa gitna. Ito ang hexadecimal, octal, at isang HTML code. Sa site na ito ay lamang sinusubukan upang ihagis isang pulutong ng mga impormasyon sa iyo sa iisang pagkakataon. Ngunit ang lahat ng pag-aalaga namin tungkol sa ay ang decimal haligi at haligi character. Kaya sa pamamagitan ng logic na ito, kung ano ang ang bilang na ang mundo ay nagpasya ay kumakatawan sa isang lowercase a? Yeah, 97. At lamang upang lituhin potensyal na nang bahagya, kung ano ang numero ay nagpasya mundo Gusto kumakatawan sa bilang 1? Right, dahil we-- 49, tila dito, down sa ibabang kaliwa. Ngayon, ano ang ibig sabihin ko sa pamamagitan ng na? Kaya ito lumiliko out na sa mga sistema ng computer, doon ay karaniwang isang pangunahing pagkakaiba sa pagitan ng isang numero at ang isang character. Ang bilang ay ang bagay na namin natutunan lumalaking up kapag kami ay sobrang batang nasa mababang paaralan. Walang bagay bilangin mo sa. Ngunit isang character ay lamang ng isang hugis, isang glyph, kaya na magsalita, sa screen. Ngayon, tayong mga tao uri ng makita isang bagay na ganito ang hitsura. At sinasabi namin, oh, iyon ay ang bilang 2. Subalit hindi, ito lamang ay isang simbolo na mukhang tulad ng kung ano ang alam namin bilang ang bilang 2. At kaya may ito pangunahing pagkakaiba sa pagitan ng aktwal na mga numero at mga character. Ito ay isang numero. Ngunit sa pangkalahatan, sa konteksto ng isang computer, kung ikaw sa halip makita ang isang bagay tulad ng quoted-- ito at hindi mo laging kung makita ito naka-quote, ngunit para sa kapakanan ng discussion-- kung nakikita mo quotes sa paligid ng number, ito ay ngayon ng isang character. Kaya ito number 2 sa ilalim ng hood sa loob ng isang computer ay kinakatawan sa isang pattern ng mga bits na kumakatawan sa bilang 50 ayon sa tsart online. Gayunman, kung ang isang computer lang nakikita ito, ito ay kinakatawan sa pattern ng bit 0 0 0 0 0 0 1 0. Sapagkat, ang character na ito gagawin aktwal na katawanin as-- at ngayon, Nakatanggap ako mag-isip ng kaunti harder-- kaya ito karakter ay kinakatawan sa 0 0 1-- kung ano ang kailangan ko dito? 0 0 1 1 0 0 1 0. Paano ang gagawin ko ito? Well ito ay ang bilang 50, kung ikaw multiply ito out gamit ang mga haligi, ito ay ang bilang 2, at iba pa na ang dahilan kung bakit may ganitong dichotomy. At ito ay lamang ng isang teaser ngayon para sa mga tampok na umiiral sa mga wika programming na kami ay hawakan sa madaling sabi ibang pagkakataon ngayong araw. Sa programming wika, ikaw ay may sa pangkalahatan, ngunit hindi palaging, mga bagay tumawag iba't ibang mga uri ng data. Sa ibang salita, ang isang programmer-- kapag siya ay sumusulat, isang programmer ay makakakuha upang magpasya sa kung ano ang format upang mag-imbak ang kanyang data. Maaari kang mag-store ng data bilang raw mga numero, tulad ng bilang 2. O maaari kang mag-imbak ang mga ito bilang mga string, o pagkakasunud-sunod ng mga character na nais mong karaniwang ipahayag na may quotes sa iyong programming language. Maaari kang magkaroon ng mga bagay-bagay called-- Kukunin ko oversimplify at tawagan ang mga ito real numbers-- kaya numero na ay hindi integers tulad ng bilang 2, ngunit ang mga numero gusto 4.56. Kaya tunay na mga numero ay maaari ring may mga decimal point, kaya na ang isang iba't ibang mga pangunahing piraso ng data sa isang computer. At pagkatapos ay maaari mong kahit na magkaroon ng iba pang mga uri ng data pa rin. Kaya ito lamang ay isang teaser talagang ng ang pinakasimpleng ng mga desisyon na disenyo na ang isang programmer baka gumawa sa ilalim ng hood. Kaya ang anumang mga katanungan lamang pa? Kaya sabihin subukan na gumawa ng Ito ba ay isang maliit na mas real. hardware na ito ay hindi so much ginagamit anymore. Ngunit karamihan sa lahat sa kuwartong ito marahil lumago up sa at pa rin ay gumagamit ng hard drive sa ibang paraan. Kahit na ang karamihan ng aming laptops hindi na may mga aparato na gumana tulad nito, sa halip laptops ngayon sa pangkalahatan may solid drive ng estado na walang paglipat ng mga bahagi. At iyon ay may gawi na maging mas mahal, sa kasamaang-palad, ngunit ang isang maliit na bit mas mabilis at a-- well, madalas, ang isang pulutong ng mas mabilis, kung saan ay isa sa mga dahilan. At ito rin ay hindi makabuo ng mas maraming init. Maaari itong maging mas maliit, kaya sa pangkalahatan ay isang net positive. Ngunit ito ay nagbibigay-daan sa amin upang i-map ang isang kaunti pa concretely ano kami ay pakikipag-usap tungkol sa 0 at 1 ni level ngayon sa isang pisikal na aparato. Ito ay isang bagay para sa akin na makipag-usap tungkol sa 0 at 1 sa mga tuntunin ng aking telepono o abstractly sa mga tuntunin ng switch pagiging on at off. Ngunit ano ang tungkol sa hard drive? Sa iyong laptop, kung ikaw ay may isang mas lumang isa, o sa iyong desktop computer, o tiyak sa mga server araw na ito, kung saan mayroon kang hard drive na mayroon isang terabyte ng space, 4 terabytes ng espasyo, mabuti kung ano ang kahulugan nito? Ang isang hard drive na may 1 terabyte ng puwang paraan mayroong 1 trillion bytes sa loob nito sa anumang paraan, o equivalently 8 trilyon bits sa loob. 1 terabyte ay magiging 8 terabits o 1 trillion bits, na kung saan nangangahulugan na kung ikaw ay may isang hard drive, ikaw ay may sa paanuman o iba pang mga isang trilyong 0 ni at 1 sa loob nito. At kung kami lang kumuha ng isang pagtingin sa isang arbitrary larawan ng isang hard drive kinatawan, ito ay kung ano ang isang hard drive ay maaaring karaniwang hitsura ng loob. Ito, masyadong, ay uri ng tulad isang lumang ponograpo manlalaro ngunit sa pangkalahatan ay may maramihang mga talaan sa loob, kaya upang speak-- maramihang platters, bilang sila ay tinatawag na, metal pabilog disks, at pagkatapos ng isang maliit na pagbabasa ulo, marami tulad ng isang lumang record player. At na ang pagbabasa ulo gumagalaw papunta at balik at sa paanuman nagbabasa ng bits. At kung ano ang sa mga platters, kahit bagaman namin ang mga tao ay hindi maaaring makita ang mga ito, alinman sa katotohanan o sa larawan na ito, mayroong maliit na maliit maliit magnetic particles. At kahit na sa iyo mahaba nakalimutan kung paano koryente gumagana, isang magnetic maliit na butil na sisingilin sa pangkalahatan ay may north dulo at isang timog end-- kaya hilaga at timog. At kaya ang mundo lamang nagpasya ilang oras ang nakalipas na, kung ang isang magnetic protocol mahalagang ay hile-hilera na tulad nito, hilaga-timog, sabihin tumawag na ang isang 1. Kung ito ay sa halip timog-hilaga, sabihin lamang tumawag na ang isang 0. At kaya kung mayroon kang hindi iyong pagtatapon ng isang trilyon maliit na maliit maliit magnetic particles-- at sana, ang hardware talino sa paglikha sa upang i-flip ang mga nakapaligid sa tulad nang nakikita mo fit-- kung nais mong kumakatawan sa isang buong grupo ng mga 0, ikaw kailangan lang 8 magnetic particles lahat nakahanay tulad nito. At kung gusto mong upang kumatawan eight 1 ni, ikaw lamang kailangan 8 magnetic particles nakahanay back to back upang i-back tulad nito. Ano ang ibig sabihin ko sa pamamagitan ng magnetic particles? Nang tapat, lahat ng mga taon mamaya, ang bagay na pa rin pagdating sa aking isip ay ito guy, kung ikaw lumago up sa bagay na ito. Ito ay isang little-- para mga unfamiliar-- isang maliit pagkabata laruan na ay ito hairless tao ba riyan na mayroon ng lahat ng mga maliit na maliit maliit na itim magnetic particles na nanggaling sa mga ito. At gamit na red stick, na kung saan ay lamang ng isang pang-akit, maaari mong uri ng bigyan siya ng isang bigote o eyebrows o buhok o anumang bagay sa kanya. Kaya sa katunayan, kung mag-zoom namin sa, halimbawa, ito ay ang uri ng laro mo maaaring i-play na may Wooly Willy. At ito ay lamang sabihin, ang mga ito ay mas malaki magnetic particles kaysa sa mga tunay na sa isang hard drive, at malayo mas kaunting mga magnetic particles. Ngunit sabihin aktwal na makita pagkatapos ay kung ikaw ay walang maliliit na magnetic particle sa isang hard drive, kung paano maaari mong talagang gamitin ang mga upang kumatawan data. [Video playback] -Ang Hard drive ay kung saan ang iyong PC tindahan karamihan ng kanyang permanenteng data. Para gawin na, ang data paglalakbay mula sa RAM kasama may signal software na sabihin ang hard drive kung paano mag-imbak ng data na iyon. Ang hard drive circuits isalin ang mga signal sa boltahe pagbabago-bago. Ang mga ito, sa turn, kontrolin ang hard drive ni paglipat parts-- ilan sa mga ilang gumagalaw bahagi naiwan sa modernong computer. Ang ilan sa mga signal kontrolin ang isang motor, na spins metal-pinahiran platters. Ang iyong data ay tunay na naka-imbak sa mga platters. Iba pang mga signal ilipat ang basahin / isulat ang ulo na basahin o magsulat ng data sa platters. makinarya na ito ay kaya tumpak na ang isang tao na buhok ay hindi maaaring kahit na pumasa sa pagitan ng mga ulo at umiikot platters. Gayon pa man, ang lahat ng ito ay gumagana sa mga kakila-kilabot na bilis. [END-playback] At maaari mong makita sa huli ng video, may mga karaniwang maramihang platters. At kaya na ang pagbabasa ulo ay hindi lamang sa pagbabasa sa itaas. Ito ay uri ng tulad ng tatlo o apat o higit pang mga ulo sa pagbabasa na ilipat tulad nito, pagbabasa ng data nang sabay-sabay. Kaya mayroong isang pulutong ng mga kumplikado at uri ng timing na kasangkot sa isang hard drive. At ang bagay ay umiikot talagang darn mabilis, kaya doon ay isang pulutong ng pagiging kumplikado. Ngunit mag-zoom in ng kaunti mas malalim hayaan at makita kung saan ay ang mga ito magnetic particles at paano kami ay nakakakuha sa kanila. [Video playback] hitsura -Hayaan sa kung ano ang aming lang nakita sa mabagal na kilos. Kapag ang isang maikling pulso ng koryente ay ipinadala sa basahin / isulat ang ulo, ito flips sa isang maliit na maliit electromagnetic para sa isang bahagi ng isang segundo. magnet ay lumilikha ng isang field, kung aling mga pagbabago ang polarity ng isang maliit na maliit, maliit na maliit bahagi ng ang mga particle metal na amerikana ibabaw bawat platter ni. Ang isang pattern serye ng mga maliliit na sisingilin up mga lugar sa disk kumakatawan sa isang solong piraso ng data sa binary number system na ginagamit ng mga computer. Ngayon, kung ang kasalukuyang ay nagpadala ng isa paraan sa pamamagitan ng basahin / isulat ang ulo, ang lugar ay polarized sa isang direksyon. Kung ang kasalukuyang ay ipinadala sa tapat ng direksyon, ang polariseysyon ay baligtad. Paano mo makakuha ng mga data mula sa hard disk? Just baligtarin ang proseso. Kaya ito ay ang mga particle sa disk na makuha ang kasalukuyang sa basahin / isulat ang ulo gumagalaw. Magkasama milyon-milyong mga mga magnetized segment, at nakuha mo ang isang file. Ngayon, ang mga piraso ng isang solong file ay maaaring nakakalat sa buong platters isang drive ni, uri ng tulad ng gulo ng mga papeles sa iyong desk. Kaya ang isang espesyal na dagdag file mapigil subaybayan ng kung saan lahat ng bagay ay. Huwag nais mo ay bagay tulad na? [END-playback] Kaya ini-alluded sa doon, marahil, ay na topic mula kahapon ng pagtanggal. Kapag tinanggal mo ang isang file, kahapon naming pinagsasabihan na ang isang computer ng mismong kabutihan ano, kapag i-drag mo ang isang bagay sa Recycle bin o basura bin? Ito lamang forgets ito. Ngunit ang 0 at 1 ni, ang magnetic particles na hitsura tulad ng pula at bughaw mga bagay dito, o ang aking braso dito, ay pa rin doon sa hard drive. At kaya may umiiral software-- Norton Utilities at Yesteryear at iba pang mga mas modernong software-- na lang ay i-scan ang isang buong hard drive naghahanap sa lahat ng mga 0 at 1, dahil ito lumiliko out na ang karamihan sa file formats-- Mga dokumento ng Word, Excel file, mga imahe, video files-- lahat ay may tiyak na pattern na ay karaniwan sa mga ito. Ang bawat video file maaaring ang mga may iba't ibang mga video, ngunit ang unang ilang mga bits ay karaniwang ang parehong. O sa huling ilang bits ay karaniwang ang parehong. At kaya may mataas na posibilidad, maaari kang tumingin para sa mga pattern. At kahit na ang file ay nai-nakalimutan, maaari mong sabihin na may mataas na posibilidad na mangyari, ngunit ito ay ganito ang hitsura ng isang dokumento Word, lets mabawi ito at un-kalimutan ito, kung gagawin mo. At kaya na kung paano maaari mong kunin data na mag-naging sinasadyang tinanggal o tinanggal o sadyang tinanggal na para sa kahit anong layunin. Sa pamamagitan ng kaibahan, secure pagtanggal ginagawa kung ano sa konteksto ng isang larawan na tulad nito? Eksakto, gumagawa ng mga ito ang lahat ng random. Kaya ito uri ng gumagalaw ang ilan sa ang mga ito pababa, ang ilan sa mga ito up, umalis ang ilan sa kanila hindi magbabago, at sa pangkalahatan ay gumagawa random na ingay sa labas ng ito, o lang siguro gumagawa ng lahat ng ang mga ito 0 o lahat ng mga ito 1 ni. At na masyadong maaaring pangkalahatan scrub ang iyong data ang layo. Kaya sabihin bumalik ngayon upang ang isyu ng computational pag-iisip, kung saan kami ay may mga inputs formula. At mga algorithm ay nagbibigay sa mong output sa huli. Nakatuon kami ngayon sa input at outputs, dahil ngayon, ako paghahabol kami ay may isang paraan ng na kumakatawan sa mga inputs at outputs. Lamang kami ng pagpunta upang gamitin ang binary. At hindi mahalaga kung ano ang aming gusto upang kumatawan sa araw na ito, maging ito man ay isang numero o isang sulat o libu-libong niyaon sa isang libro ng telepono o mga imahe o mga pelikula, sa dulo ng araw, ito ay ang lahat ng 0 at 1. At i-claim ko na, kahit na ito ay isang napakabilis simpleng mundo na may lamang ng 0 at 1, maaari naming bumuo ng up ng ating sarili. At nakakita kami ng isang halimbawa ng na may mga titik sa gayon ay malayo. Kaya sabihin tumuon ngayon sa ito middle sahog, isang algorithm. At sabihin bumalik sa ito halimbawa ng Mike Smith. Kaya sa phone book, na tinatanggap na, hindi namin gamitin kaya magkano anymore, mayroong isang problema na lutasin. Gusto naming mahanap ang isang tao tulad ng Mike Smith. At kung ano ang maaaring gawin ko upang mahanap ang Mike? Well, hindi ko na lang buksan up na ito book, magsimula sa unang pahina, at mapagtanto, oh, ako sa isang seksyon. Mike ay hindi doon. Kailangan ko ang S seksyon para Smith. Kaya lamang panatilihin ng pag-on sa isang pahina sa isang pagkakataon. Hayaan akong magpanggap na ito ay ang lahat puting mga pahina at hindi dilaw na pahina, dahil hindi namin ay pagpunta upang mahanap Mike sa yellow pages anyway. Ngunit ako sa puting pahina. At ngayon, ako sa seksyon B. Ako pa rin ay hindi natagpuan sa kanya. Kaya ko panatilihin ng pag-on sa isang pahina sa isang pagkakataon. Ito ay isang algorithm. Ito ay isang hanay ng mga tagubilin para sa paglutas ng ilang mga problema. Sa ibang salita, tumingin sa pahina, kung Mike ay hindi sa mga ito, i pahina, at repeats muli at muli at muli, may perpektong naghahanap down habang ikaw ay ginagawa ito. Gayon nga ang algorithm, prosesong ito, tama? Sorry. Hindi, marinig ko ang ilang mga nos. OK, ngunit ito is-- yeah, ito ay tiyak na nakakapagod. Like, kami ay magiging dito sa lahat ng araw kung ako panatilihin ang hinahanap para sa Mike sa bilis na ito. Ngunit hayaan mo akong i-claim ito ay tama. Ito ay hangal, ngunit ito ay tama. Sa katapusan ng araw, hangga't maaari ito tumagal, maghahanap ako ng Mike kung siya ay sa doon at ako nagbabayad ng pansin. At sa huli ako maabot ang kanyang page. At kung makakuha ako masyadong malayo, kung nakukuha ko sa seksyon T, pagkatapos ay maaari kong bahagyang i-optimize at sabihin lamang, hm, ang lahat ng tapos na. Hindi ko kahit na kailangang mag-aaksaya oras ng pagpunta sa Z ni. Ngunit ito ay isang napaka linear diskarte, kung ikaw ay, isang napaka-uri ng kaliwa-papuntang-kanan diskarte, isang tuwid na linya. At nito tama ngunit mabagal. Kaya tandaan ko mula grade school, pag-uuri ng isang pag-optimize mula sa isang unang greyder, kung saan natutunan ko kung paano upang mabilang hindi sa pamamagitan ng mga bago ngunit sa pamamagitan twos-- kaya 2, 4, 6. Ito ay A, pulutong mas mahirap na gawin, ngunit sa teorya, ito ay faster-- 8, 10, 12, 14, at iba pa. Paano ang tungkol sa algorithm na? Ito ba ay mas mahusay? Ito ba ay mas mabilis? Madla: Ito ay mahusay. David MALAN: Oo, kaya ito ay def-- ito ay literal dalawang beses nang mas mabilis, sa pag-aakala ko hindi makakuha ng tripped up sa aking mga daliri. Ito ay dalawang beses bilang mabilis, dahil Ako pag-on sa pamamagitan ng dalawang mga pahina nang sabay-sabay sa halip ng isa, ngunit ito ay potensyal na sa tamang pagkakasunod, dahil bakit? Madla: Ikaw ay laktaw ilang. David MALAN: Right, paano kung Mike mangyayari na sandwiched-- siguro ako kapag ako ay sa ibang pagkakataon sa aklat ng telepono, Mike ang mangyayari sa maging sandwiched sa pagitan ng dalawang mga pahina, at ako lang ang walang taros laktawan sa ibabaw nito. Kaya kailangan namin ng isang maliit na pag-aayos doon. Kapag ako pindutin ang seksyon T, ako ay hindi maaaring lamang confidently sabihin, hindi namin mahanap Mike Smith. Ako marahil ay may upang i-double back. O sa katunayan, sa sandaling maabot ko ang isang tao pinangalanan S-N, sa halip ng S-M para sa Smith, agad-agad, kaya kong i-double likod, dahil baka siya ay sa nakaraang pahina. Ngunit hindi ko na kailangang i-double pabalik sa ngayon. Sa teorya, kung gagawin ko ito sa tamang panahon, ako lamang bumalik sa isang pahina. Kaya ito ay ang pagdaragdag lamang ng isang karagdagang hakbang. Kaya ko na nawala nang dalawang beses nang mas mabilis, ngunit ito gastos sa akin ng isang extrang pahina. Ngunit na nararamdaman tulad ng isang net panalo. Ngunit ito ay hindi kung paano ang karamihan sa tao sa kuwartong ito ay malutas ang problemang ito. Ano ang gusto ng isang tipikal na tao, marahil ng isang ilang taon na ang nakakaraan gawin, upang mahanap ang Mike Smith? Yeah, ay hindi mahanap Mike. Ano ang gagawin ko? Kaya makakuha ng isang maliit na mas malapit, ngunit gagawin ko know-- kung ano ang totoo tungkol sa isang phone book? Madla: Ito ay sequential. David MALAN: Ito ay sequential. Ito ay pang-abakada. At kaya kung ako sa seksyon ng M, Mike ay malinaw na sa kanan, Maaari ko bang literal mapunit ang problema sa half-- ito ay karaniwang mas madali kaysa na- luha ang problema sa kalahati, at iyong itapon, kaya na ngayon, mayroon akong isang problema na hindi na 1,000 pages-- na ay mahirap, dahil sa tingin ko ako talaga torus ang telepono aklat na ito time-- hindi 1,000 mga pahina, ngunit 500. Kaya ang problema ay literal kalahati bilang malaki. At iyon ang medyo nag-uudyok na, dahil sa aking mga nakaraang mga algorithm, bersyon 1 at 2, Lamang ako ay paggawa ng mga problema isang pahina na mas maliit, dalawang pahina na mas maliit sa isang pagkakataon. Sapagkat ngayon, Ginawa ko ito 500 mga pahina mas maliit ang lahat nang sabay-sabay. OK, kaya ngayon, Karim nagmumungkahi na pumunta ako sa kanang kalahati. Kaya ako pagpunta sa pumunta halos sa gitna, bigyan o tumagal. At kung ginawa ko ito mathematically, Kaya kong pumunta karapatan sa gitna. At ngayon, napagtanto ko, oh, Ako sa seksyon T. Ako talaga ay pumunta masyadong malayo. Ngunit maaari kong, muli, mapunit ang problema sa kalahati, itapon ito ang layo. At ang aking bytes hindi bilang malaki. Ito ay lamang, ano, 256 mga pahina o 250 mga pahina, bigyan o tumagal ngayon. Ngunit pa rin ito paraan mas sa isang pahina o dalawang pahina. At kaya ngayon, pumunta ako halos sa gitna. Oh, hindi ko pumunta Medyo malayo sapat na ngayon. Kaya ko ulitin, ulitin, ulitin, ulitin, hanggang ako sana kaliwa na may lamang ng isang pahina. Kaya na ang mga imbitasyon sa mga tanong, kung ako makapagsimula sa halos 1,000 mga pahina, kung gaano karaming mga hakbang ay tumagal sa akin may bersyon 1 ng aking algorithm? Well, kung Mike ay nasa S seksyon, sa pinakamasama kaso, na medyo malapit sa dulo ng alpabeto. Kaya kung ang phone book ay may 1,000 mga pahina, Kukunin ko mahanap Mike sa loob ng 1,000 mga pahina, bigyan o kumuha. Siguro ito ay tulad ng 800 o kaya, ngunit ito ay medyo malapit sa 1,000. Sapagkat, sa ikalawang algorithm, kung gaano karaming pahina lumiliko maximally maaari ko nangangailangan upang mahanap Mike Smith? May 1,000 mga pahina, ngunit ako paggawa ng mga ito ng dalawang sa isang pagkakataon. Right, kaya max tulad 500ish, dahil kung pumunta ako sa pamamagitan ng buong phone book, kung saang punto, maaari ko bang itigil. Ngunit maaari kong mag-ahit off ang ilang sa pamamagitan ng lamang pagpapahinto sa seksyon T. Ngunit ito ay sa pinakamalala kaso 500 mga pahina. Kaya kung gaano karaming beses ang maaari kong hatiin ang isang 1,00o-page phone book sa kalahati muli at muli at again-- mula 1,000 sa 500 na 250 sa 125? Gaano katagal bago ko pindutin isang pahina? Yeah, ito ay tungkol sa 10. Depende sa rounding at tulad, ito ay tungkol sa 10 mga pahina ng kabuuang pangangailangan upang i-turn o mga libro ng telepono na kailangan upang ma-punit-punit. Kaya na medyo malakas na. Namin na nagsimula sa isang problema 1,000-pahinang sa lahat ng tatlong ng mga kuwento. Nguni't sa unang algorithm, ito kinuha sa akin, pinakamasama kaso, 1,000 page lumiliko upang mahanap Mike. Second algorithm, 500 mga pahina upang mahanap Mike. Third algorithm, 10 mga pahina upang mahanap Mike. At ito ay kahit na higit pa malakas na kapag sa tingin mo tungkol uri ng isang kabaligtaran sitwasyon. Ipagpalagay na ang mga kumpanya ng telepono sa tabi taon siguro merges dalawang bayan sama-sama, at ang telepono ng libro ay biglang ito makapal, sa halip na ito na, kaya 2,000 mga pahina sa halip na 1,000. Well, ang aking unang algorithm ay naghahanap para sa Mike Smith sa isang 2,000-pahinang aklat ng telepono, mas masahol pa kaso, ito ay pagpunta sa tumagal kung gaano karaming mga pahina lumiliko sa susunod na taon? Phone book ay 2,000 mga pahina, so-- well, hindi isa pa. Kung ang telepono ng libro ay dalawang beses bilang makapal sa ang unang algorithm, unang algorithm, 2,000, right? Sa pinakamasama kaso, Mike ay talagang isara sa dulo ng libro, kaya 2,000 page liko. Second algorithm pagpunta sa pamamagitan ng twos, tulad 1,000 mga pahina. Ngunit kung paano ang tungkol sa aking ikatlong at pinaka-kamakailan-lamang na algorithm? Kung ang telepono kumpanya doubles ang bilang ng mga pahina mula sa 1,000 sa 2,000, kung gaano karaming mga higit pang mga beses kailangan mapunit ko na ang aklat sa kalahati upang mahanap Mike? Madla: Isa lamang. David MALAN: Lamang ng isa pang, dahil may isang pahina luha, Maaari ko bang literal hatiin at lupigin, kung ikaw ay, na ang problemang sa kalahati pagkuha isang malaki at mabigat kagat sa labas ng mga ito. At kaya ito ay isang halimbawa ng kahusayan at arguably isang algorithm na kung saan lahat tayo ay uri ng intuitively pamilyar. Ngunit ito ay tulad ng tamang bilang aking iba pang mga algorithm may na tweak para ang pangalawang algorithm, ngunit ito ay kaya lubos na mas mahusay. At sa katunayan, kung ano ang isang computer siyentipiko, o siya namang isang programmer, ay karaniwang gawin kapag sumusulat code ay subukan upang malaman kung, lahat ng karapatan, hindi ko gusto ang aking program lamang upang maging tama, Ako din gusto ito upang maging mahusay na at malutas ang problema rin. Isipin sa tunay na mundo ngayon, tulad index ng Google, paghahanap tulad ng bilyun-bilyong ng mga pahina, isipin kung sila ginamit ang unang algorithm upang mahanap cats sa gitna ng isang bilyong pages-- pagtingin sa unang pahina sa kanilang database, ang ikalawa, ang ikatlo, just looking para sa isang cat, naghahanap para sa isang cat. Iyan ay pretty darn mabagal ito ay tila. Sila ay maaaring sa halip gamitin ang isang bagay tinatawag binary paghahanap, na Walang coincidence-- bi ibig sabihin dalawa, kami panatilihin paghahati ng isang bagay sa 2, sa half-- maaari nilang gamitin binary search at marahil mahanap cats kahit na mas mabilis, o ano pa man ito ay ikaw ay naghahanap para sa. At lantaran, may kahit may interes algorithm na makagawa ng higit pa kaysa sa lamang paghahati bagay sa kalahati upang makahanap ng impormasyon nang mabilis. At kami makipag-usap nang kaunti tungkol sa mga pagkatapos ng tanghalian ngayon. Kaya hayaan mo akong subukan lamang upang kumatawan ito. Hindi namin kailangan upang pumunta sa anumang matematika o aktwal na numero. Maaari naming makipag-usap tungkol dito sa abstract. Ngunit ipaalam sa akin lamang ipanukala, kung ikaw ay nagkakaroon ng isang discussion ngayon sa mga inhinyero pagpapanukala ang algorithm na ito at ikaw ay sinusubukan upang gumawa ng isang kinakalkula desisyon, dahil siguro ang engineer magsabi sa iyo, sa iyo malaman kung ano ang, maaari ba akong ipatupad ang isang linear paghahanap sa tulad ng dalawang minuto. Madali ba iyon. Binary paghahanap ay hindi na fancy, ngunit ito ay pagpunta sa dalhin ako tulad ng 10 minuto, kaya 5 beses bilang mahaba. May ay isang kalakalan dito, kahit na sa mga tuntunin ng pagpapasya kung ano ang software na magsulat. Huwag mong isulat ang mas simple algorithm, na kung saan ay lamang ang magdadala sa iyo ng dalawang minuto? O gawin mo gumastos ng mas maraming oras, 10 minuto, pagsusulat ng mga may interes algorithm? Paano mo magpasya na uri ng tanong? O maaari mong gawin itong isang maliit na mas real. Sinasabi ko sa aking boss ito ay pagpunta sa tumagal ng sa akin ang alinman sa isang linggo o 10 linggo upang ipatupad ang software sa paraang ito, kung paano mo magpasya kung aling algorithm upang green-light? Karim? Madla: Ang madla, hulaan ko. David MALAN: Ang audience. Ano ang ibig sabihin sa pamamagitan ng madla? Madla: Kung ito ay pagpunta na ginagamit ng mga gumagamit na [hindi marinig] ng mga gumagamit [hindi marinig]. Ngunit kung ito ay isang bagay na ikaw lamang ng paggawa para sa iyong sarili upang mapadali ang isang problema, [Hindi marinig] mas mabilis. David MALAN: Oo, ito ay mabilis at marumi ay isang mahusay na paraan upang ilarawan ito. Sa katunayan, kung ikaw ay naglalarawan magkano ng aking mga oras sa grad school, kung saan madalas na beses, Ako wrote masamang code sinasadya so-- hindi bababa sa, na kung paano ko rationalized it-- sinasadya kaya, dahil kahit na ako ay sumusulat code na noon ay medyo mabagal-execute, Ako ay magagawang upang isulat ang code mismo medyo mabilis, sa paggastos ng ilang minuto lamang o oras hindi araw. At ito naka-out, ako Minsan kailangan upang matulog. Kaya kahit na ang aking code na kinakailangan 8 oras na tumakbo, well na fine, Kukunin ko pumunta lamang sa pagtulog habang ito ay tumatakbo. Kaya sa oras, Akala ko ito ay napaka-matalino, kahit na ako tila nagtrabaho sa pamamagitan ng aking PhD masyadong mabagal. Ngunit ang pag-usapan ng mga iyon ay na, kung ako ay pagsulat ng software para sa iba pang mga taong mattered higit kay sa akin, well, pagkakaroon ng mga ito maghintay 8 oras upang makabalik sa kanilang mga resulta ng paghahanap ay hindi lahat na nakapanghihimok. At kaya paggastos mas maraming oras up front sumulat ng software na ay mas mahusay, mas tulad ng ating ikatlong algorithm, marahil benepisyo sa mga gumagamit sa paglipas ng panahon. Kaya ito ay talagang depende sa ibabaw time kung paano ang mga gastos magdagdag ng hanggang. Kung ikaw ay pagpunta sa maging pagsulat software na gamitin ito nang isang beses, marahil maaaring pati na rin gawin mabilis at marumi, tulad ng sinasabi nila. Lamang magtapon ito nang magkasama. Walang code na embarrasses iyo, ito ay kaya masama, ngunit ito ay makakakuha ng trabaho tapos na nang tama, kahit na ito ay hindi mabisa. Sa kabaligtaran, ang gusto ninyong gastusin ng mas maraming oras sa isang bagay, kumuha ito lamang kanan. At pagkatapos ay amortized sa paglipas ng panahon, na upfront gastos ng oras ay marahil kapaki-pakinabang, kung ikaw panatilihin ang pag-optimize para sa mga karaniwang kaso. At sa katunayan, na ang isang tema sa programming, o computer science pa sa pangkalahatan, sinusubukan mong i-optimize hindi para sa mga hindi karaniwang mga kaso ngunit ang karaniwang case-- kung ano ang operasyon ay pagpunta sa mangyayari muli at muli? Kung ikaw ay pagpunta sa may bilyun-bilyong ng mga gumagamit ng paghahanap sa iyong website, dapat mong malamang na magpalipas ng dagdag na linggo hanggang harap pagsulat mas mahusay na software, upang ang lahat ng iyong mga gumagamit makinabang. Ngayon, sabihin subukan upang makuha ito ng isang maliit pictorially, ngunit hindi kaya magkano ayon sa bilang. Kaya narito ang lamang ng isang lumang tsart paaralan. At hayaan mo akong sabihin na ito ay oras. At ito ay hindi mahalaga what-- actually, wala, wala kahit oras. ni ilagay na sa kabilang axis Hayaan. Sabihin natin na ito na ang panahon, at ito ay sukat ng problema. At isang computer siyentipiko maaaring pangkalahatan ay tumawag ito lamang n. n ay tulad aming go-to variable, kung saan n ay isang numero, n number, at ito ay ang bilang ng anumang inputs mayroon ka. Kaya sa kasong ito, ang n ay ang bilang ng mga pahina. Kaya maaaring ito ay 1,000 sa ang kaso lang namin sinabi. Kaya oras na maaaring maging anumang yunit ng pagsukat. Siguro, ito ay pangalawang. Siguro, ito ay araw. Siguro, ito ay tulad ng page liko. Ay hindi mahalaga. Anuman ang nais mong bilangin sa, na ay magiging oras o gastos equivalently. Kaya sa na pinakaunang algorithm, kung ako, halimbawa, ay nagkaroon ng isang 1,000-pahinang aklat ng telepono, Pupunta ako upang gumuhit ng isang dot doon, dahil kung ito ay sa 1,000 mga pahina, ito kinuha humigit-kumulang sa 1,000 mga liko pahina, bigyan o tumagal. At pagkatapos ay kung ako ay may isang 2,000-pahinang aklat ng telepono, at pupuntahan ko upang gumuhit ng isang pangalawang tuldok dito, dahil para sa 2,000 mga pahina, ito ay tulad ng 2,000 seconds o pahina ay lumiliko o kahit anong. At kaya kapag sinabi ko mas maaga, ito ay uri ng isang linear relasyon, na noon ay sinadya, dahil Nais kong mamaya on-- right now-- upang gumuhit ng isang linya. Ito ay uri ng isang tuwid na line relasyon. Libis ay 1/1, kung kalooban mo. Samantala, ang pangalawang algorithm Sa gayon, kung nakuha mo na 1,000 mga pahina at ikaw ay gumagamit ng ang pangalawang algorithm, kung saan ako mabibilang sa pamamagitan ng 2, ang pag-on dalawang pahina sa isang pagkakataon, ang dapat kong gumuhit ng isang tuldok sa ibaba o sa itaas ng aking orihinal na tuldok? Madla: Sa ibaba. David MALAN: Sa ibaba, dahil tulad ng nakita natin, ito ay tumatagal ng mas kaunting oras, kalahati ng mas maraming oras. Kaya ang tuldok ay dapat na half na kasingtaas ng isa. At parehong pakikitungo sa paglipas dito, ito dot dapat na marahil ay halos doon. At kaya ang aking ikalawang algorithm, katulad, ay may isang linear na relasyon sa oras. At maaari naming gumuhit ito bilang tulad. Kaya ngayon, ang ikatlong at huling algorithm ay isang maliit na mas mahirap upang gumuhit. Ngunit intuitively, kung Mayroon akong 1,000 mga pahina na may ang aking ikatlong algorithm, ito ay dapat lamang dalhin ako tulad ng 10 hakbang. At kung Mayroon akong 2,000 mga pahina sa aking ikatlong algorithm, dapat itong tumagal sa akin hindi 10 hakbang, ngunit 11, lamang ng isa pang. Kaya kami ay lamang bahagya pagpunta upang makita ito. At ito ay lumiliko out, kung ako mag-zoom in sa ito, ako pagpunta sa magpahigit para sa epekto, ang hugis ng linyang iyon, sa huli, ay hindi isang tuwid line-- dahil, sa katunayan kung ito ay, hitsura nito ay magiging mas katulad ng others-- ito ay talagang isang hindi tuwid na linya na, kung mag-zoom namin sa, ay pagpunta upang tumingin mas tulad nito. It-- well, OK, huwag pansinin ang bahaging ito. Iyon ay ang aking pen pagpunta ng anggulo. Ito ay isang hindi tuwid na linya na palaging pagtaas, palagi, palagi, palaging ang pagtaas, ngunit lamang bahagya lamang. At kaya sa paglipas ng panahon, mayroon kang isang relasyon na mas katulad nito. Ito halos mukhang tuwid. Ngunit ito ay kailanman kaya dahan-dahan ang pagtaas. Ngunit para sa halos lahat ng mga punto sa kahabaan iyong x-axis, pahalang axis, ito ay mas mababa kaysa sa mga iba pang mga linya. Kaya ito ay maaaring maging isang relasyon n, kung saan kung mayroon kang mga pahina n, ay magdadala sa iyo n segundo. Ito ay maaaring maging isang relasyon n / 2. Mayroon kang mga pahina n, ito ay tumatagal ka n / 2 segundo, kalahati ng maraming. At ito ay isang logarithmic relasyon, na kung saan kung isipin mo, mag-log base 2 ng kinukuha n ang ganitong uri ng pag-unlad, kaya na magsalita. Kaya ito ay ang uri ng banal na Kopita kabilang sa mga tatlong ng mga dito, dahil ito ay lamang kaya marami pang iba mahusay, ngunit arguably mas kumplikadong ipatupad. May tanong? Well hayaan mo akong gawin ito, sabihin akong magbukas ng isang text window lamang upang maaari naming subukan upang gawing pormal ang isang bagay dito. Kaya hayaan mo akong magpatuloy ngayon at ipatupad ang algorithm na ito para sa paghahanap ng Mike Smith sa code, kung ikaw ay, pseudocode code. Hindi ako pagpunta upang gamitin ang Java o C ++. Tingin lang ako sa pagpunta sa gamitin ang uri ng Ingles-tulad ng syntax, na kung saan namin ay pangkaraniwang tawag pseudocode code. Dito, mayroon akong isang blangko window. At ako na nagsasabi hakbang 1 ng napaka unang algorithm ay kunin ang phone book. Hakbang 2 ay bukas na libro sa unang pahina. Hakbang 3 ay tumingin sa pahina para sa Mike Smith. Kung sa pahina, tumawag Mike. sino pa ang paririto siya namang pahina at pumunta sa hakbang 3. Tapos, sabihin natin. At kaya ito ay hindi masyadong perpekto, na kung saan kami ay makita sa isang sandali. Ngunit isipin natin kung ano konsepto ko na ipinakilala dito. Kaya hakbang 1 at 2 at 3 ay pretty marami verbs. Ang mga ito ay mga pahayag, actions-- gawin ito. At kaya sa isang programming wika, gusto namin sa pangkalahatan tumawag sa kanila mga pahayag o function o pamamaraan, tawagan ang mga ito sa anumang bilang ng mga bagay. Ngunit lamang ito ay naka-actions-- gawin ito. Hakbang 4 ay sa panimula naiiba, dahil ito ay uri ng pagtatanong ng isang katanungan. Ito ay nagsasabi kami uri ng sa isang tinidor sa kalye. Kung Mike ay sa pahina, tumawag kanya, kaya lumiko pakaliwa, kung ikaw ay. At kung hindi, bumalik sa ilang iba pang page-- o sa halip, sorry, bumalik sa ilang iba pang mga hakbang, kung saan induces ilang mga uri ng looping bumuo. At gawin namin ito muli at muli at muli. At talagang, alam mo kung ano? Yeah. iba kung sa dulo ng aklat na stop. Kaya kailangan namin uri ng isang third kondisyon, dahil ikaw ay hindi maaaring panatilihin ang paggawa sa pahina ng ad nauseum, dahil sa huli, kukunin ko pindutin ang dulo ng aklat. At isang bug sa isang programa ay maaaring maging hindi anticipating na sitwasyon. At pagkatapos ko lang natanto, oh, maghintay isang minuto, kailangan ko ang isang ikatlong senaryo. Kung ako sa labas ng mga pahina, ako dapat talagang lamang ihinto. Kung hindi man, ito ay hindi maliwanag. Ano ang pagpunta sa mangyayari kung patuloy ko sinasabi i-on ang pahina at bumalik, ito ay kapag mga computer freeze o crash, kapag pinindot ninyo ilang unanticipated sitwasyon tulad na. Ngayon, kung ano ang tungkol Mike ikatlong algorithm-- ni Smith kunin ang telepono ng libro, bukas na libro sa first-- sa wala, wala kahit unang pahina oras na ito, upang middle-- oh, well, na gusto ang ikalawang algorithm. Sabihin lang lumaktaw sa third. Madla: Oh, Sorry. David MALAN: Iyon ay pinong. Sabihin lang lumaktaw sa third-- open sa gitna at ngayon ay tumingin para sa Mike Smith. kung sa pahina, tumawag Mike. At pagkatapos ay kung ano ang gusto naming sabihin dito? sino pa ang paririto sa kung ano? Maaari naming ipahayag ito sa anumang bilang ng mga paraan. Walang tamang sagot. OK, kung hindi muli, ngunit kailangan namin upang be-- OK, ang nais nating hatiin sa dalawa, ngunit ang gusto namin upang pumunta kaliwa o pumunta karapatan? Paano ipinahahayag natin na paniwala? Well, sa kaso ni Mike, oo, na makatarungan. Ngunit OK, kaya na talagang isang magandang point. Iyon ay pinong. Susubukan naming panatilihin ang pagpunta sa lohikang ito. So-- Madla: Mas mababa sa kalahati. David MALAN: Oo. Kaya iba kung pahina ay, kami ay sabihin, mas mababa kaysa Smith, sa kaliwa ng Smith, then-- sabihin makita, ay na ito ng pagpunta sa makapagpalubha? iba kung page dumating bago Smith, mapunit sa kalahati, itapon na kalahati? Madla: Akala ko na noon ay [hindi marinig]. David MALAN: ako pagdinig parehong sagot. Madla: Kaliwa. David MALAN: OK, itapon layo kaliwa kalahati, bilang Lakisa sinabi ng mas maaga, sa kaliwa kalahati, pagkatapos ay ako uri ng nais na pumunta lamang to-- Nagpupunta ako sa kanan. O equivalently, at ako na ginawa ng isang maliit na bit ng isang gulo ng simula dito, Ako mabisang makikipagtrabaho nais na pumunta sa hakbang 2 muli, kung saan bukas sa middle-- o open-- yeah, sabihin lamang sabihin, mga pahina sa gitna. At ito Inaayos ito. Ito ay hindi na isang libro. Ito ay lamang ng kalahati ng isang libro, kaya bukas pahina upang gitna. else-- ay halos doon. Hakbang 6, iba kung page nauuna matapos Smith, pilasin sa kalahati, itapon kanang kalahati, pagkatapos ay pumunta sa hakbang 2. sino pa ang paririto umalis, ang ikaapat na sitwasyon kung wala kaming mga pahina sa kaliwa upang i-. Kaya maaari naming linisin ito up. At dapat naming linisin ito up. Ito ay napaka-pseudocode code, kung ikaw ay, napakataas na antas paglalarawan. Ngunit ito ay sa pangkalahatan ay makuha ang ideya. At, muli, sa ganitong sitwasyon, kami kung ang paniwala ng isang kondisyon, isang sanga, isang tinidor sa kalye, paggawa isang decision-- kung ito, pumunta sa ganitong paraan, iba kung, pumunta sa ganitong paraan, iba kung, pumunta na paraan. At ito ay isang napaka-pangkaraniwan programming pamamaraan upang magpasya kung aling mga direksyon upang pumunta, kaya na magsalita. At kami ay mayroon ding ilang mga uri ng looping istraktura, kung saan kami ay gumagawa ng paulit-ulit ng isang bagay. Ngayon, ito ay lumiliko out, marami tulad ng sa halimbawang ito, pagiging super tumpak ay mahalaga. Ngunit din namin na nakita ng isang bagay na ating tuparin ang pagtawag abstraction. Ano ang ibig sabihin upang kunin ang phone book? Lamang kami uri ng pagkuha para sa ipinagkaloob sa kuwartong ito na na may ilang semantiko kahulugan. Lahat ng sa amin lamang uri ng alam, oh, well, kunin ang telepono libro. Ano ang ginagawa na tunay na ibig sabihin? Well, na talagang ay nangangahulugan extend kamay, sandalan sa, palawigin daliri, kurutin book pagitan ng mga daliri, tumayo ka, hilahin kamay patungo sa iyo. At maaari naming maging tunay pilosopo tungkol dito, talagang pagiging super tumpak bilang sa kung ano ako ng paggawa. Subalit ang lahat ng mga hakbang na kapag pinagsama-sama ay ano ang ibig sabihin nito upang kumuha ng phone book. At kaya mas maaga, kapag sinabi ko, ang bawat ng mga unang dalawang mga pahayag ay maaaring iisip ng bilang magpatuloy o isang function, talagang ito ay kumakatawan kung ano ang aming patuloy na pagtawag ng isang abstraction. Ito ay tulad ng isang mataas na antas ng haka-haka paglalarawan ng isang problema na tunay na nagsasangkot ng lubos ng ilang mga hakbang. At kaya ito, masyadong, ay isang paulit-ulit na paksa sa programming, kung saan maaari ko bang magsulat ng isang programa gamit syntax tulad this-- pick_up_phone_book (). At pagkatapos ay syntactically, ako pagpunta sa magnakaw ng isang bagay mula karamihan ng mga wika programming. Ngayon, hakbang 1 mukhang mas mas katulad ng function, bilang isang programista ay tumawag ito. Mukhang code na ang isang tao ay nagbigay ng pangalan sa at ibinigay sa akin na gumamit ng somehow-- sa ibang salita, kung ano ang linya na-highlight ko kumakatawan functionality na siguro Hindi ko kahit na ipatupad ang aking sarili. Isang taong mas matanda, ay matatalino kay sa ako may korte out kung paano ipahayag mo ang paniwala ng pagpili ng up ng isang telepono libro. At ito ay tulad ng ang limang mga hakbang ko na lang rattled off, off sa tuktok ng aking ulo. Ngunit siya na ipinatupad ito, nagbigay ang mga ilang mga hakbang isang pangalan, pick_up_phone_book. At ang mga panaklong ay lamang kung ano ang karamihan sa mga programmer gawin sa dulo ng mga pahayag tulad nito. Ako ngayon ay maaaring tumayo sa kanyang balikat at hindi kailanman muli, isipin ang tungkol sa kung ano ang ibig sabihin nito upang kumuha ng phone book. Maaari ko lang sabihin, kunin ang telepono libro. At iyon mismo ang lahat ng sa amin mga kawani na tao ay dito. Kapag kami ay marahil 1 taong gulang, 2 taong gulang, isang tao ay nagkaroon upang magturo sa amin kung ano ito sinadya upang kumuha ng phone book. At mula pa nang pagkatapos, na lumilipad ang isip namin ang layo mula sa mga napaka-kawili-wili mechanical hakbang. At kami na lang ay isang intuitive-unawa ng kung ano ang ibig sabihin nito upang pick up ng isang libro ng telepono. At maaari mong intindihin mula sa data ngayon sa mas masalimuot bagay- bumuo ng isang gusali. Like, sa ilang mga tao, na talagang may kahulugan. Upang kontratista, sa mga arkitekto, na may ilang mga kahulugan. At ang mga ito ay kung ano ang gagawin, kung Ang sabi ko, pumunta bumuo ng isang gusali. Ngunit karamihan sa atin sa kuwarto ay hindi maaaring pakikitungo sa mga na antas ng abstraction. Kailangan mong sabihin tulad ng sa amin go makakuha ng pala at pumunta makakuha ng kongkreto at kuko ang mga piraso ng kahoy sama-sama at kahit na ano pa ay kasangkot sa pagbuo ng isang gusali. At iyon ay dahil sa kami ay walang pa-program upang maunawaan ano ang ibig sabihin nito upang bumuo ng isang gusali. Wala kaming na abstraction. Wala kaming na pag-andar. At kaya kung ano ang makikita mo sa programming wika, sa pangkalahatan, lalo mas modernong mga wika, tulad ng Java, PHP, Ruby, at Python, ang mga ito ay mas mature kaysa sa mas lumang mga wika, tulad ng C at C ++ at pa iba. At kaya ang mga ito ay may higit pang mga functionality built in. Higit pang mga code ay nakasulat ng mga tao sa nakaraan na maaari naming ngayon tumawag o ipatawag o gamitin, bilang ako hinting sa may ganitong naka-highlight na linya dito. At kaya kahit na hindi namin ay pakikipag-usap tungkol sa programming wika per se, lang pseudocode code, ang lahat ng mga ideya ay pa rin sa discussion na. At ito ay lumiliko out katumpakan ay sobrang mahalaga, bilang ay abstraction. At Tayo'y subukan upang ipaalam sa makipag-usap na ang mga sumusunod. Ko sinasadyang maaaring may sira ito sa pamamagitan ng flashing ng slide sa screen prematurely. Ngunit hayaan mo akong humingi ng isang matapang na volunteer, kung hindi tututol kayo paparating na. Gusto mong maging sa harap ng camera, kung ikaw ay OK na may na. Gusto sinuman nais na dumating up at bigyan mga tagubilin sa iyong mga kasamahan dito? Na lang ay upang dumating sa dito at tumayo sa paglipas dito at sabihin ang ilang mga salita. Victoria is smiling ang pinaka at pag-iwas sa aking mga mata ang pinaka. Gusto mo maging handa na dumating sa up? OK. At kung ang iba sa iyong upuan maaaring tumagal ng isang piraso ng papel na basura, kung gagawin mo. May linya ng papel ay pagmultahin. Dumating sa paligid sa ganitong paraan. O ilan sa mga papel na kung saan bibigyan kahapon, lamang ang anumang mga blangko sheet ng papel, kung maaari mong. At kung hindi ka magkaroon ng anumang, lamang tanungin ang iyong mga kapit-bahay kung maaari mong. Kaya para sa mga sandali, para sa ang halimbawang ito, Victoria ay pagpunta upang i-play ang papel ng isang programmer, isang engineer, na pangangailangan sa programa sa inyong lahat, bilang mga computer, upang gawin ang isang bagay. At kami makita kung ano ang pagpapalagay magpasya kang gumawa ng. Susubukan naming makita kung paano tumpak na pinipili niya upang maging. At kung ito demonstration napupunta pedagogically well, maraming ng mga pagkakamali ay gagawin, na kami ay pagkatapos ay gamitin na bilang isang pagkakataon para sa talakayan. Ngunit ang hamon para sa iyo ay dapat ay upang maiwasan ang mga pagkakamali, maging isang magandang programista. At kaya ang hamon sa kamay, kung Gusto nagustuhan mo sa paglalakad sa paglipas dito, nasa tapat ng Victoria sa screen here-- at sana, ang sinoman sa inyo tandaan na ito kapag ako ay flashed sa screen. At huwag i-sa paligid sa lahat, dahil may isa pang screen sa kuwartong ito na maaari kong i-off. Kaya huwag i-sa paligid. Sa harap ng sa Victoria ang siya ring hiyawan. At ang kanyang trabaho ngayon ay upang sabihin sa iyo ang lahat sa iyong piraso ng papel kung ano ang gumuhit. At makikita natin, batay sa pandiwang tagubilin nag-iisa, computer na code, kung ikaw ay, kung paano tumpak ang iyong mga guhit are-- iyong pagpapatupad ay. Magkaroon ng kahulugan? Madla: Oo. David MALAN: OK, execute. Madla: Gumuhit ng isang parisukat. [TAWA] David MALAN: At walang mga katanungan na maaaring ay tatanungin. Maaari lamang gawin kung ano ang iyong sinabi. Oh, at kung mayroon kang mga slide ngayong araw magbubukas sa tab, huwag tumingin sa iyong tab. OK? Madla: OK, gumuhit ng isang bilog. A slope-- maaari kong sabihin slope? David MALAN: Hanggang sa iyo. Madla: A slope. At isang tatsulok. David MALAN: Lahat ng karapatan. At manatili dito para sa sandali lamang. At ako pagpunta sa darating sa paligid sa loob lamang ng ilang sandali. At hindi na kailangan upang ilagay ang iyong pangalan sa mga ito. Hayaan akong dumating sa paligid at kolektahin ang iyong mga guhit, kung hindi tututol kayo pansiwang ito sa labas. Narito ang kung ano ang aming got back. Kukunin ko i-project ang mga ito sa screen. Nakakakita ako ng isang parisukat, isang lupon, isang libis, at isang tatsulok. Kaya na ay isang sagot doon. At let's-- Whoops. Salamat. Narito ang isa pang assortment, at isa sa likod nito. Kaya lahat sila mukhang upang makuha ang espiritu. Salamat. May isa pang, at narito ang isa pa. Ang slope interpretasyon ay isang maliit na naiiba, maliit curvy. At ang pinakamalapit na, alinman dahil sa mga kahanga-hangang pagtitiyak na kung saan na sa iyo inilarawan, o marahil ka uri ng nakita ito bago, ito ay sa katunayan ano Victoria ay talagang naglalarawan. Ngunit ngayon, sa mga mo na ay hindi makakuha ng ito masyadong tama, hayaan nag-aalok ng ilang mga objections dito. Kaya Victoria unang sinabi gumuhit ng isang parisukat. At ngayon, maaari naming ipagpalagay para sa kapakanan ng mga araw na na alam ng lahat kung paano upang gumuhit ng isang parisukat. Ngunit hindi iyon ang ganap na pag-clear, right? Paano pa ang maaari mong magkaroon ng iguguhit isang parisukat, o kung saan ay maaaring maging ang ilan sa mga ambiguities dito para sa computer? Madla: Lokasyon at laki. David MALAN: Location, right? Lahat kayo ay nagkaroon ng isang papel ng ilang mga hugis, pangkalahatan parihaba, ngunit bahagyang iba't ibang laki. Ngunit ikaw ay tiyak na maaaring magkaroon ng iguguhit, kung ikaw ay wanted, isang malaking parisukat, siguro isang maliit na maliit na parisukat. Siguro, ito ay Pinaikot. Hindi sa tingin ko Nakita namin na. Ngunit maaaring ito ay mas diamond tulad ngunit pa rin, gayunman, mathematically isang parisukat. Kaya na ay arguably hindi siguradong. Nang magkagayo'y sinabi niya, gumuhit ng isang bilog. Ang ilan sa iyo ay gumuhit ito sa tabi ng ito, kung saan ay hindi wala sa katwiran, dahil ang mga tao ay may posibilidad na sa tingin o basahin karapatan sa kaliwa sa karamihan ng mga wika, kaya hindi isang masamang hula. Ngunit na bilog ay maaaring magkaroon ng naging sa loob ng square, sana naging sa paligid ng square, sana naging ibang lugar sa sheet, kaya arguably hindi siguradong. Slope maaaring naging siguro paglalaan ng pinaka-kalayaan pasalita sa kung ano ang ibig sabihin nito. At ang ilan sa inyo interpreted ito bilang isang squiggly linya o isang tuwid na linya o mga katulad. At pagkatapos ay tatsulok, masyadong, ay maaaring magkaroon ng ay nakatuon sa anumang bilang ng mga paraan. Kaya sa maikling salita, kahit na may isang bagay na mong sulyap at ikaw ay tulad ng, wow, kaya simple, ang isang bata ay maaaring gumuhit ito, well hindi talaga, maliban kung ikaw ay super, super mapanghikayat at sabihin sa ang computer eksakto kung ano ang gagawin. Kaya kung magagawa namin, kung mayroon kang isa pang sheet ng papel, sabihin subukan ito minsan pa. At ako pagpunta sa magbibigay sa Victoria isa iba pang mga halimbawa sa screen dito. At muli, huwag i-sa paligid at huwag tumingin sa iyong mga slide. At kukunin ko na magbigay sa kanya ng isang sandali upang isipin ang tungkol sa kung paano upang ilarawan ito. Huwag hayaan silang makita ang takot sa iyong mga mata. [TAWA] At muli, ito pakikinabangan oras ang ilan sa mga takeaways at subukan upang makakuha ng halos lahat ng tao ng hindi bababa sa ang tamang sagot. Madla: OK, kumuha ng isang piraso ng papel, tumingin sa gitna ng na piraso ng papel. Sa gitna ng piraso na ng papel, gumuhit ng isang kubo. [TAWA] David MALAN: Ano ang mayroon natutunan namin? Hindi namin kaya close. OK, ulitin kung maaari mong, para sa lahat. Madla: Sa gitna ng piraso ng papel, gumuhit ng isang bagay, na kamukha ng isang kubo. David MALAN: OK, na ang dahilan lahat ng ka makakuha upang gumana sa. Payagan sa akin upang maging analytical at hindi kaya magkano kritikal, ngunit upang gawin ang mga claim na Victoria tiyak anyong-iisip sa tunay mataas na antas abstractions, na kung saan ay hindi walang katwiran. Dahil kung hindi man, gusto namin ang lahat maging medyo dysfunctional, kung kami ay may upang maging napaka-tumpak sa lahat ng aming ginagawa sa mundo. Ngunit sinasabi pumunta sa middle-- ko naisip namin sa tulad ng isang magandang track doon, tulad ng pumunta sa pinakadulo gitna ng pahina, at pagkatapos ay gumuhit ng isang kubo. Kaya siya ay nag-iisip sa abstractions, dahil siya ay tumitingin pa rin kung ano ang sa screen bilang katunayan ng isang kubo. Ngunit mayroong kaya maraming mga pagkakataon para sa interpretasyon doon. At sa katunayan, may mga kaya maraming mga iba pang mga paraan na maaari mong ipahayag ang na, kung saan kukunin ko imungkahi sa isang sandali. Kaya dito kami ay may isa incarnation ng ang larawang whoops-- isa pagkakatawang-tao ng mga larawan, kaya ang isang maliit na tatlong dimensionality dito, na kung saan ay nice. Narito ang isa pang isa, kung saan ikaw ay may parehong, kahit na ito ay uri ng isang bukas na kubo. Ang ilang mga tao kinuha ito ng isang maliit na mas flat, dalawang dimensional. At iyon ang fine. Kaya doon, sa katunayan sa gitna ng papel. Isa na ito sa tingin ko makikita mo tulad ng, dahil kung pumunta kami dito, ito ay kung ano siya ay naglalarawan. Kaya ngayon, hayaan mo akong magpanukala paano pa maaari naming ilarawan ang sitwasyong ito. Bumalik sa araw, isa sa mga pinaka mas karaniwang mga paraan upang malaman ang mga programa ay sumulat ng code, writes mga linya ng mga tagubilin, na kinokontrol ng isang maliit na pagong sa screen. Logo at iba pang mga variant ng ito ay ang pangalan ng wika. At ang pagong ay nanirahan sa isang mundo. Kaya ipagpalagay na ito hugis-parihaba space ay ang kanyang mundo. At gusto mong simulan sa pamamagitan assuming-- ko hindi talaga alam kung paano upang gumuhit pagong, kaya sabihin gawin ito tulad nito. At pagkatapos siya ay nakuha ng isang shell at pagkatapos ay marahil ilang mga paa. Kaya maaari kang magkaroon ng ito maliit na karakter sa screen. At ang bagay na ito ng programming language ay upang pilitin ang pagong upang pumunta up, down, kaliwa, kanan at upang ilagay ang kanyang panulat down o pumili ng kanyang panulat up, kaya siya ay maaaring aktwal na gumuhit sa screen sa ganitong parihabang very flat mundo. Kaya kung saan Akala ko maaari kang maging pagpunta, at kung saan dapat mong isaalang-alang diving pababa sa itak kapag naglalarawan mga tagubilin mas pangkalahatang paraan, Gusto ko i-claim, ay ilagay ang iyong panulat down sa middle-- at kami makakuha ng mapupuksa ang mga pagong, dahil hindi ko makakaya talagang panatilihin ang pagguhit sa kanya nang mahusay. At ngayon, paano pa dati sinasabi ko gumuhit ng isang kubo? Well, maaari naming sabihin isang bagay tulad ng mabubunot isang dayagonal linya hilagang-silangan, halimbawa, o sa isang 45-degree anggulo paitaas. At na maaaring may gotten sa akin dito. At ako ay medyo malayo mula sa isang kubo. Ngunit ngayon, maaari ko bang sabihin ng isang bagay tulad i 90 degrees sa kaliwa at gumuhit ng isang linya ng pantay na haba hilagang-kanluran. At kaya kong magpatuloy na may katulad na mga direksyon. At ito ay hindi pagpunta sa maging madali. At lantaran, kami ay marahil gagawin ay dito sa loob ng limang minuto. Pero siguro gusto naming may gotten sa isang bagay na, sa dulo ng araw, nagtatapos up pagiging isang kubo, ngunit hindi namin dived sa loob ng abstraction na na gawin ito sa tulad na isang mababang antas na maaari mong hindi talaga makita kung ano ang iyong ginagawa hanggang sa buong bagay ay talagang doon sa pahina. At kaya ito ay isang pangkalahatang prinsipyo, muli, ng programming-- ideya na ito ng abstraction. Ito ay kaya kamangha-mangha makapangyarihan, dahil muli, siya lamang ang sinabi, gumuhit ng isang kubo, na ang lahat ng sa amin medyo magkano ang nais grok masyadong mabilis. Gusto lang namin maintindihan, OK, gumuhit ng isang kubo. Hindi namin maaaring malaman ang orientation, kaya maaari kaming maging isang maliit na mas tiyak, ngunit maaari naming karaniwang larawan o malaman kung ano ang isang kubo ay. At iyon ang kapaki-pakinabang, dahil kung sa bawat oras na naupo bilang isang programista sa iyong keyboard upang isulat ang code, kung ikaw ay nagkaroon na mag-isip sa tulad isang mababang antas, wala sa amin ay kailanman makakuha ng kahit ano tapos na. At tiyak, wala sa amin ng gagawin tamasahin ang mga proseso ng pagsulat code. Gusto Ito ay tulad ng pagsulat sa 0 at 1, na lantaran ay hindi lahat na matagal na ang nakalipas mga kawani na tao ay sumusulat code sa 0 at 1. At hindi na namin masyadong mabilis ay dumating up sa mga mas mataas na antas languages-- C ++ at Java at iba pa. Kaya sabihin subukan ito nang isa pang beses lamang upang i-flip ang mga talahanayan, upang ang lahat ng sa amin magkaroon ng pagkakataon na mag-isip sa halip ang parehong paraan. Puwede naming makakuha ng isa pang volunteer na ito oras na dumating up sa board at gumuhit, hindi makasagot? Yeah, OK. Ben, dumating sa up. At, Ben, sa kasong ito, sa sandaling ikaw harapin ang board, huwag tumingin sa kaliwa, hindi tumingin sa kanan. Lamang gawin kung ano ang iyong kasamahan dito sabihin sa iyo. At para sa lahat ng iba pa sa room, ikaw ngayon ay ang mga programmer. Siya ay ang computer. At ang mga larawan na pinili ko dito nang maaga ay ang isang ito dito. Sila ay just-- nila pinag-iisipan ng isang nakakatawa joke lang. Kaya Gusto ang isang tao nais na magboluntaryo ang unang pagtuturo o pahayag na dapat utos Ben pen? At kami gawin ito kapag pinagsama-sama, siguro isang pagtuturo mula sa bawat tao. Patawad? Madla: Gumuhit ng isang bilog. David MALAN: Gumuhit ng isang bilog ay ang unang bagay na narinig ko. Madla: Up tuktok. David MALAN: Up tuktok. OK, maaari naming ipaalam sa iyo na tanggalin, i-undo. At ngayon, isang tao pa. Dan, ay ikaw ay umaliw nag-aalok ang susunod na pagtuturo? Madla: Sure, gumuhit ng center ng ibaba ng bilog, may small-- isang maliit na maliit na espasyo sa na, gumuhit ng isang tuwid na linya pababa sa tatlong tirahan ng mga paraan down ang board isang bahagyang anggulo sa iyong kaliwa. David MALAN: Good. Madla: Bahagyang anggulo. David MALAN: I-undo, Control-Z. OK. Andrew, na nais mong mag-alok ang susunod na pagtuturo? Madla: Oo naman. Mula sa ilalim ng na linya, isang karagdagang bahagyang angle-- whoops-- siguro tungkol sa isang third ng haba [hindi marinig], bahagyang anggulo pababa at tulad ng isang ikatlo ng ang haba ng [hindi marinig]. So yeah, mula sa puntong iyon, gumuhit ng isang linya sa isang third ng haba ng nakaraang line karagdagang sa kaliwa. David MALAN: OK That? Tuwid na linya, na OK lang? OK, Olivier, na nais mong ialay ang mga susunod? Madla: [hindi marinig] mula sa ibaba ng bilog, [hindi marinig]. Gumuhit sa kanang bahagi of [hindi marinig] sentimetro. [TAWA] David MALAN: Sa tingin ko ikaw ay pagpunta sa kung i-convert na pulgada dito. Madla: Itigil. [TAWA] David MALAN: OK. [? Ara,?] Gusto mong ialay ang mga susunod? Madla: Gumuhit ng isang [hindi marinig] itaas na [hindi marinig] pareho. [Hindi marinig] bilog, gumuhit sa [Hindi marinig] at gumuhit [hindi marinig]. David MALAN: OK, wala nang undo. Tayo'y gawin ang isa o dalawang karagdagang mga tagubilin Hayaan. Chris, na nais mong mag-alok ng isa? Madla: Sa ibaba ng bilog, [hindi marinig] gumuhit ng isang pantay-pantay na linya slopping pababa sa kaliwa [hindi marinig]. David MALAN: OK. Andrew? did-- Kami Karim? Madla: Simula mula sa tamang linya, dulo ng kaliwang linya, sa ibaba, ikaw ay pagpunta sa pumunta karapatan tungkol ang parehong haba bilang na linya kung nasaan ka, ang guhit sa ang karapatan [hindi marinig]. [Hindi marinig] degrees, kaya [hindi marinig] degrees sa kanang bahagi. David MALAN: Lahat ng karapatan. ni-pause Hayaan. Huwag i-sa paligid pa. ni-pause Hayaan, at sabihin subukan ang isa sa iba pang mga pagtatangka bago namin ipakita sa Ben kung ano siya ay nai-drawing. Maaari mong kaladkarin ang mga paa Ben upang ang right-- o talaga, no, sabihin lamang magbibigay sa iyo ng kabilang tabla, mas mahusay. Kaya Gusto isang tao ngayon gusto na kumuha ng higit pa sa mga diskarte na Victoria kinuha mas maaga sa, kung saan atin namang sinasalita sa isang mas mataas na antas ng abstraction at sa loob lamang ng isang pangungusap o dalawang ilarawan sa Ben kung ano ang gumuhit ng walang pagkuha sa mga damo, kaya na magsalita, sa ito sa isang mas mababang antas? Victoria. [TAWA] Madla: Gumuhit ng isang figure ng daanang tao. At ang kaniyang mga binti at armas kailangang maging sa kanang bahagi. David MALAN: OK, na ang lahat makakuha ka. Lahat tama. Bakit hindi namin ihayag sa Ben kung ano siya did. Kaya isang ikot ng papuri. Iyon ay ang hardest marahil. Kaya kahit na pinag-uusapan natin sa medyo uto tuntunin tungkol lamang pagguhit larawan, inaasahan namin na kayo maaari tunay pahalagahan ang mga antas ng expressiveness na maaaring kailangan upang sabihin sa isang computer kung ano ang gagawin. At sa katunayan, ang katotohanan na Ben ay able sa gumuhit ito kaya mabilis ay isang uri ng testamento sa ang paggamit ng isang wika, marahil ng isang mas mataas na antas bersyon ng Ingles, na nagbibigay-daan sa kanya gamitin lamang ang mga salita, o marinig ang mga salita mula sa Victoria, na nagbibigay-daan sa kanya mga abstractions-- lamang gumuhit isang pigura paglalakad sa right-- na uri ng mga may ilang semantiko kahulugan sa mga ito na ito ay hindi halos bilang halata kapag ikaw lamang na sinasabi, ilagay ang iyong mga panulat down, gumuhit sa kanan, gumuhit sa kaliwa. At kaya ito, masyadong, ay napaka karaniwan sa programming. Ito ay maaaring sinabi na maging tulad ng isang napakababang antas ng wika, programming sa 0 at 1 kung ikaw ay. At ito ay magiging isang mas mataas na antas wika programming sa Java, o isang bagay tulad na. A bit ng isang oversimplification, ngunit iyan ay ang uri ng tulad ng emosyonal na pakiramdam na sa tingin mo kapag gamit ang isa uri ng mga bagay o iba pang. A bit ng pagkabigo dito sa pamamagitan ng ang pangangailangan para sa mga tulad na katumpakan, ngunit ang mga pagkakataon na maging isang maliit na may looser ang pagbibigay kahulugan dito. Ngunit siyempre, mga bug maaaring lumabas dahil bilang isang resulta. Kung gusto mo sa home-- namin hindi gawin ang isang ito sa class-- ngunit kung nais mong dalhin ang isang ito sa bahay, Akala ko Gusto namin sumisid sa ito. Kaya kung nais mong i-play ito laro sa iyong mga makabuluhang iba pang o mga bata o mga katulad, mo maaaring masiyahan din iyon. Kaya sabihin sige at tumingin sa isang huling bagay dito para sa computational pag-iisip. At na pinagsasama-amin sa John Oliver, hindi para sa mga clip maaaring nakakita ka kagabi, ngunit sa isang medyo kamakailang isyu. Ang ilang buwan likod, Volkswagen kinuha lubos ng kaunti ng flak sa anong kadahilanan, kung iyong nalalaman? Ano ang ginawa nila makipag-problema para sa? Oo, kaya emissions-- sila ay sinusubukan upang talunin ang emissions pagsusulit sa pamamagitan ng mahalagang pagkakaroon ng kanilang mga cars pagdumi sa kapaligiran mas mababa kapag ang kanilang mga kotse ay sinusuri at salaulain ang kapaligiran mas kapag ang mga kotse ay hindi sinusuri. At kung ano ang kawili-wiling increasingly sa mundo, tulad ng maaari kang magkaroon ng inferred mula sa mga talakayan ng like-- kung ano ang it-- CarPlay, software Apple para sa mga kotse at ang katunayan na ang maraming mga sa atin increasingly may mga screen ugnay sa aming mga kotse, mayroong isang nakakatakot na halaga ng software sa mamamayan cars ngayon, na lantaran ay bubukas sa isang buong lata ng bulate kapag ito ay dumating sa seguridad at pisikal na panganib. Ngunit para sa ngayon, sabihin tumutok sa lamang kung ano ang kasangkot sa pagsulat ng software na maaaring magkaroon ng gamed sistema. Para sa kahulugan ng mga problema, para sa mga pamilyar, sabihin tumagal ng isang pagtingin sa John Oliver. At para sa mga pamilyar sa ang problema, sabihin tumingin sa ito sa isang masaya lens sa pamamagitan ng John Oliver pati na rin. Kaya hayaan mo akong pindutin ang play sa ito, ako mag-isip, tatlong-minutong pagpapakilala. Mapapahamak ang mga ito. [Video playback] -Cars-- David MALAN: Nang walang alinlangan, sa YouTube, it's-- - --ang Smartest character sa ang Fast and Furious movies. Sa linggong ito, German automaker Volkswagen natagpuan ang sarili sa gitna ng isang iskandalo ng potensyal na kriminal sukat. -Volkswagen Ay pagkakabit para sa mga bilyun-bilyong sa mga multa, posibleng kriminal na mga singil para sa kanyang executive, pati na ang kumpanya ay humihingi ng paumanhin para palubid at palayag 11 milyong mga kotse sa tulungan itong matalo emissions pagsubok. -Certain Diesel modelo ay dinisenyo may sopistikadong software na sa paggamit ng impormasyon, kabilang ang posisyon ng manibela at sasakyan bilis, upang matukoy ang mga kotse ay sumasailalim emissions testing. Sa ilalim pangyayari na, ang engine ay mabawasan toxic emissions. Ngunit ang kotse ay rigged upang bypass na kapag ito ay ini-driven. Emisyon nadagdagan sa 10 sa 40 beses sa itaas ng antas na tinatanggap EPA. -Wow, 10 sa 40 beses mas malaki kaysa sa EPA ay nagbibigay-daan. Iyon ay ang pinakamasama bagay Volkswagen ay kailanman tapos na, ay isang bagay na maaari mong sabihin kung hindi mo gusto narinig ng World War II. Pero siguro ang surest sign ng kung paano maraming problema Volkswagen ay nasa, ay ang mga tao sa pinakadulo top na stepped down. Ang CEO nagbitiw sa Miyerkules pagkatapos scrambling upang gawin pinsala control, na nagsasabi siya ay endlessly sorry, kung saan tunog mahusay hanggang sa ito naka-out siya ay lamang ng 10% ng paumanhin ngunit ay rigged kanyang bibig upang artipisyal na pataasin ang kanyang sorriness. At samantala, Volkswagen US chief ay nagkaroon ng isang paghingi ng tawad ng kanyang sarili. -Hayaan Maging malinaw tungkol dito, ang aming kumpanya ay hindi tapat. At sa aking mga salita Aleman, kami may ganap screwed up. -Yeah, Ngunit lubos na screwed up ay hindi German gawa. At ang wikang Aleman ay may maraming magagandang mga parirala upang ilarawan sitwasyon tulad ng ito, tulad ng [GERMAN], na nangangahulugan na may katigasan, ang kalungkutan na nagmumula mula sa negosyo na may kaugnayan kasinungalingan, o [GERMAN], na isasalin bilang shaming mga ama na kinasasangkutan ulap ng gasolina. Ito ay isang magandang wika. Ito lamang sails off ang dila. At sa pamamagitan ng ang paraan, habang na ng tao apology maaaring may sounded sincere, ito ay nagkakahalaga ng noting na siya ay nagsasalita sa isang opisyal na launch party para sa 2016 Volkswagen Passat, ibig sabihin na sa ilang sandali pagkatapos ng sinasabi ng paumanhin, sinabi niya na ito. -Salamat Sa inyo para sa darating. Tangkilikin ang gabi. Up susunod ay Lenny Kravitz. [MUSIC nagpe-play] -OK, OK, na nagtatapos ang iyong apology na may hanggang susunod na Lenny Kravitz ay hindi hiyawan matino pagsisisi. Ito screams, tinanong namin Bon Jovi, at sinabi niya no. Volkswagen tatak ay ay di-wastong nasira. At lantaran, ang kanilang bagong ad kampanya ay hindi eksakto pagtulong. - [GERMAN], kami ay sa Volkswagen gusto humihingi ng paumanhin para deceiving sa iyo ng aming mga sasakyan. [END-playback] David MALAN: Kaya ito ay isang rotonda paraan of-- sorry-- ito ay isang rotonda paraan ng pagpapasok ng isang pundamental na problema sa software, na kung saan ay na kayo kailangan na matagpuan ilang mga kundisyon. At sa gayon ang tanong sa kamay dito ay, kung paano ang isang kotse potensyal na, bilang ipinatupad sa software sa pamamagitan ng mga programmer, nahuli na ito ay aktwal na sinusuri? Kaya upang maging sobrang malinaw, ano ang kanilang ginagawa ay, sa kapaligiran na kung saan ang programmer korte ang kotse ay pagiging nasubok, ang mga ito sa paanuman ginawa ang kotse humalimuyak mas mababa emissions, mas kaunting emissions, kaya mas mababa dahil sa lason fumes at tulad. Ngunit kapag ito ay normal pagmamaneho sa kalsada, ito would makatarungan naglalabas ng mas maraming polusyon dahil ito gusto. Kaya kung paano maaari naming isulat ang pseudocode para sa algorithm? Paano namin maaaring isulat ang pseudocode para sa mga software na tumatakbo sa loob ng sasakyan? Ibig kong sabihin, sa maikling sabi, umaasa lang ito down sa isang bagay tulad nito. kung sinusubok, humalimuyak mas mababa. sino pa ang paririto emits higit pa. Ngunit iyon lamang ang isang maliit na masyadong mataas na antas, i-right? Subukan nating makisalamuha bilang sa kung ano ito Hayaan abstraction ng pagiging nasubok paraan. Sa ibang salita, kahit na alam mo wala tungkol sa mga kotse, anong uri ng mga katanungan Maaaring hilingin sa iyo upang matukoy kung ka na sinusuri, kung ikaw ay ang kotse? Ano ang mga katangian ay maaaring maging ipakita kung ang isang sasakyan ay sinusuri? Madla: Pagsubok equipment. David MALAN: Pagsubok equipment. Kaya kung pagsubok kagamitan malapit, pagkatapos ay naglalabas ng mas mababa. Kaya maaari kong isipin pagpapatupad na may ilang mga uri ng mga camera o pag-detect kung ano ang nasa paligid mo. At hayaan mo akong imungkahi, na lamang feels masyadong kumplikado upang aktwal na magkaroon ng mga karagdagang hardware lamang para sa layunin. Madla: Kung ikaw ay nasa park, kung ang iyong hood ay bukas. David MALAN: Sa parke o hood bukas, kaya na maganda. Madla: At kotse tumatakbo. David MALAN: Kaya na ang isang maliit na mas concrete-- at kotse na tumatakbo. Kaya ito ay ang pagsama ng isang ilang iba't-ibang mga kondisyon, kung ikaw ay. Kaya kung ang sasakyan ay sa park, at kahit bagaman ito ay isang napaka mechanical bagay kadalasan, kaya kong isipin pagsulat software, lalo na dahil mayroong madalas na isang ilaw doon mga araw na ito, kaya kong isipin palibhasa'y software na maaaring i-query ang shifter o kung ano ang hindi, ikaw ay nasa park, ay sa iyo sa drive, ikaw ay nasa reverse. At maaari ba akong makakuha ng likod ng isang answer na ay alinman sa oo o hindi sa mga uri ng mga katanungan. At kaya ako ay maaaring din marahil sagutin isang katanungan tulad ng, ay ang hood bukas. Siguro, may ilang mga uri ng sensor na ang alinman ay nagbibigay sa akin sa likod ng isang 1 o 0, tama o mali, ang hood ay bukas. At pagkatapos ay kotse tumatakbo, maaari ko bang makita ang na kahit papaano ay sa pamamagitan ng kung ano ang mekanismo? Like, ang kotse ay tumatakbo, ako maaaring tuklasin na ito ay sa, Kaya kong makita sa anumang paraan na ang kotse ay gumagalaw? Madla: RPMs. David MALAN: Oo, kaya mayroong palaging na karayom ​​na ay nagsasabi sa iyo kung gaano karaming mga rotations kada minuto ang mga gulong ay nakakaranas. At kaya ako ay maaaring tumingin sa na. At kung ito ay hindi 0, na marahil ay nangangahulugan na ang kotse ay gumagalaw. Ngunit kami ay upang maging isang maliit na maingat doon, because-- sabihin pasimplehin this-- kung kami lang sinabi, kung kotse tumatakbo, Hindi namin nais na lamang humalimuyak mas mababa, gusto naming kung ang kotse ay tumatakbo at ito ay sinusuri. Kaya may mga ilang mga iba pang mga sangkap na kakailanganin ng mga tao may hypothesized ang software ay paggawa, dahil absent ang aktwal na source code, maaari ka lamang uri ng magpakilala mula sa pisikal na mga epekto ng kotse bilang sa kung ano maaaring nangyayari sa ilalim ng hood sa software. Kaya kung car tumatakbo at siguro, sabihin nating, likod na gulong hindi gumagalaw, maaaring ito nagpapakilala ng ilang mga uri ng pagsubok? Ano ako hinting sa dito? Yeah, siguro, ito ay sa isa sa mga bagay roller, kung saan tulad ng mga wheels ay magkakaroon sa harap o sa likod, depende sa kung ito ay front wheel o rear wheel drive, kaya kalahati ng mga gulong ay gumagalaw, ngunit ang iba pang dalawang ay hindi, na ay isang kakaibang sitwasyon sa tunay na mundo. Kung ikaw ay pagmamaneho sa road, na hindi dapat mangyari. Ngunit kung ikaw ay sa isang warehouse sa ilang mga uri ng roller system, na maaaring sa katunayan mangyari. Sa tingin ko folks din iminungkahi na marahil, kung ang kotse ay tumatakbo at steering wheel hindi gumagalaw, na masyadong ay maaaring maging isang signal, dahil na makatwirang para tulad ng isang kagayat sa isang kalsada. Ngunit kahit na pagkatapos, ang mga tao ay marahil gumagalaw ito nang kaunti o tiyak sa loob ng ilang segundo. O kaya naman ang kurso ng isang minuto, logro ay hindi ito pagpunta sa ay fixated sa eksakto ang parehong posisyon. Kaya sa ibang salita, kami maaaring tumagal ng pagbabawas, ikaw ay sinusuri, at break down na pag-andar sa mga component ingredients. At iyon ang tunay na kung ano ang Volkswagen ni inhinyero sa paanuman ginawa. Sila wrote software sinasadya sa detect kung ang kotse ay sinusuri, samakatuwid humalimuyak mas mababa, iba humalimuyak sa karaniwang paraan. At ang problema dito, masyadong, ay na software ay hindi isang bagay na maaari mo ba talagang makita maliban kung mayroon kang ang tinatawag na source code. Kaya mayroong dalawang iba't ibang uri ng code-- hindi bababa sa dalawang iba't-ibang uri ng code sa buong mundo. May isang bagay na tinatawag na pinagmulan code, na kung saan ay hindi hindi katulad kung ano ang kami ay pagsusulat, source code. Ito ay source code na nakasulat sa isang wika na tinatawag pseudocode, na kung saan ay lamang ng isang bagay Ingles-tulad ng. Walang pormal na kahulugan ng mga ito. Ngunit C, at Java, C ++, ang mga ay ang lahat ng pormal na wika na, kapag sumulat ka sa mga ito, kung ano ang iyong ay isang text file na naglalaman ng source code. Ngunit mayroon ding isang bagay sa mundo na tinatawag machine code. At machine code, sa kasamaang palad, ay lamang ng 0 at 1 ni. Kaya machine code ay kung ano ang machines maunawaan, siyempre. Source code ay kung ano ang mga tao na maunawaan. At sa pangkalahatan, ngunit hindi laging, may isang program na ang isang programmer ay gumagamit na tumatagal pinagmulan code at lumiliko ito sa machine code. At programa na ay karaniwang tinatawag na isang tagatala. Kaya ang iyong input ay source code, ang iyong output ay machine code, at ang tagatala ay isang piraso ng software na gumagana prosesong iyon. Kaya ito aktwal na mga mapa ng mabuti sa aming inputs, mga algorithm, outputs. Ngunit ito ay isang napaka-tukoy na pagkakatawang-tao ng na, kung saan ay upang sabihin na, kahit na pag-aari mo ang isa sa Volkswagen ni kotse na nagiging salarin sa pagpapatay na ito, ito ay hindi tulad maaari mo lamang buksan ang hood o buksan manual ng gumagamit, o hihintayin sa source code, dahil sa oras ito umabot sa iyong kotse sa iyong driveway, na ito ay naging convert sa 0 at 1 ni. At ito ay napakahirap, hindi imposible, ngunit napakahirap upang mamulot magkano ng anumang bagay mula lamang ng pagtingin sa mga pinagbabatayan 0 at 1 ni. Kaya maaari mong malaman ito, sa huli, kung nauunawaan mo kung paano ang isang machine operates-- Intel inside-- kung naiintindihan mo ang Intel architecture, ngunit ito ay lubhang oras-ubos. At kahit na doon, maaari ka hindi mo magagawang upang makita ang lahat ng bagay na ang code ay maaaring aktwal na gawin. Ang anumang mga katanungan tungkol sa mga ito o ito uri ng proseso sa mas pangkalahatang? At talagang, maaari naming itali ang talakayang ito sa discussion kahapon ng Apple. Ito, masyadong, ay kung bakit ang FBI ay hindi maaaring lamang pumunta at tumingin sa phone ng suspek at hanapin ang mga linya ng code, para sa Halimbawa, na paganahin ang passcode o paganahin na ang 80-millisecond delay. Dahil sa oras na ito ay sa iPhone ang kapwa, na ito ay naging convert sa 0 at 1 ni. Well, sabihin i-pause dito para sa aming tumingin sa computational pag-iisip. Bakit hindi kumuha kami ng isang 15 minutong break. At kapag bumalik kami, kami bistahan programming kanyang sarili at simulan upang i-map ang ilang sa mga mataas na antas concepts sa isang aktwal na, kung mapaglaro, programming language.