DAVID Малан: Добре дошли отново, всички.
Така вчера, ще припомним, че ние се фокусирахме върху тези теми тук.
Така че имахме четири всеобхватна topics-- неприкосновеността на личния живот, сигурността и обществото;
интернет технологии; изчислителни облаци; и в крайна сметка, уеб програмиране.
>> Дали някой имат честотна лента или времето
да гледате малко John Oliver снощи?
Това всъщност е доста забавен, ако не е малко плашещо.
Всякакви въпроси за нищо ние направихме вчера?
Всички разяснения?
Всички въпроси, които искате да направите сме сигурни, че засегна днес в някаква форма?
Така че чисто.
>> Така че това, което е на дневен ред за днес?
Така че аз смятахме, че ще започне днес с поглед към това, което е като цяло
известен като изчислителна thinking-- в риска от oversimplifying, мислейки
като компютър, може би мислене като инженер,
и се опитва да започне да организиране на вашите мисли
или да ви даде по-добро чувство за за какво става дума в действителност командващ
компютър, за да се направи нещо по пътя на програмирането.
И ние ще я държи на доста високо ниво, доста много английски,
но се опитват да използват на познат примери за формализиране как
ще отидат за решаване на проблемите.
>> И ние ще преразгледаме някои CS теми, като абстракция,
който излезе няколко пъти вчера,
алгоритми, и след това представителство.
И това е мястото, където ще започнем днес в един момент.
След това ние ще разгледаме по програмиране.
Ние ще разгледаме в някакъв основните конструкции
с които може да сте запознати и дори може да се намери доста интуитивен.
>> Ние ще разгледаме, в действителност, при програмиране на проба
среда, която е много достъпна, много игриво, а всъщност целенасочена
за възрасти 12 и нагоре.
Ние ще прекара няколко минути там и след това да вземе нещата до по-ниско ниво
и всъщност говорим за някои от алгоритмите и структурите от данни,
така да се каже, че програмисти обикновено използват
за решаване на проблеми, много повече ефикасно, отколкото може да
да може да разчита на тях напълно.
Тогава, след обяд, ние ще разгледаме при технологични купчини, което е просто
един луксозен начин на казвайки колекции от технологии
които може да използвате, за да решаване на някакъв проблем.
И ние ще говорим за азбуката супа от езици, които съществуват today--
Java и Python и C ++ и PHP и Ruby и всякакви други неща.
>> Ние ще отнеме кратко поглед при моделите на дизайна.
Програмистите, с течение на времето, ПРИЕХА методологии
че са склонни да им помогне решаване на проблемите по-лесно.
Когато започнете да виждате себе си писмено един и същи вид на код отново и отново,
хора формализират тези повторения и имена приписваме на тях
и след това да ги използвате и насърчаване на тях, в крайна сметка.
И ние ще говорим малко по- за мобилни стратегии,
като това, което означава да всъщност направи мобилно приложение или мобилен уебсайт.
Смятате ли да го направи за Android?
Смятате ли да го направи за IOS?
Смятате ли да го направи и за двете тези?
И какви са компромисите?
И накрая, ние ще се уеб програмиране поглед, който
е събирателен термин Наистина, описваща всяко време
пишете софтуер, който е означаваше да тече в интернет,
дали на телефони или настолни компютри или лаптопи.
Ще вземем един кратък преглед на бази данни и дизайна
в него, дори и само защото почти всеки интересна уеб-базирано приложение
тези дни има някаква база данни.
В противен случай би Просто се статично съдържание.
И на база данни ви позволява да направите промени с течение на времето, независимо дали сами
или от потребителите.
И ние ще разгледаме как можете ще отидат за проектиране
тази база данни и вида на жаргон че може да излезе в един инженер
обсъждане на бяла дъска когато действително прилагане
приложение за първи път.
>> Ще поговорим накратко за API, полезни услуги
които можете да използвате, за да застане на раменете на другите, независимо дали фирми
или физически лица, както и решаване на вашия собствени проблеми по-бързо.
И тогава ние ще се бъркам може би малко с JavaScript,
език за програмиране, който се използва както в браузърите тези дни, но също така
в сървърите.
И може би, ние ще отново, времето позволява,
някои от най-практичните неща в мрежата ние вчера и се интегрират двете
заедно преди да се отложи.
>> Така че с that-- какво е ahead-- е Има ли нещо липсва, че сте
бихме искали да сме сигурни, поставете и засегна в някакъв момент.
Ако това е извор на ум, това доведе до преди дълго.
Но защо да не започнем с Посетете изчислителна мислене.
>> И нека да предложа изчислителна мислене е, отново,
сортиране на описанието на високо ниво на какво може да се направи компютърен учен.
И наистина, нека да започнем с три съставки,
може да отиде в изчислителната мислене.
Това е само един от начините за това описване.
Ние със сигурност може да се определи това във всяка редица начини.
>> Но нека да предложи, за по-голяма днес,
че проблемите на света, всички проблеми на света,
когато подхожда с компютърен специалист би могъл
да се разглежда като това, което ние ще повиквания входове, които
Трябва да се подава в това, което ние ще наричаме алгоритми, които след това дават резултати.
С други думи, цялата свят на решаване на проблеми I претенция
може да се дестилира в тези три съставки.
Така че това, което мога да кажа от входа?
Входове е точно това, което сте подаде, за да се реши.
>> Например, ето старото училище проблем.
Ако имам телефонен указател тук и Искам да гледам нещо в нея,
това е моят принос.
Аз имам 1000 или така страници в телефонния указател.
Това е входът към моя проблем.
И аз искам да се намери нещо като Майк Смит, така приятел
чието име и номер е надявам се в тази адресна книга.
>> Това е преди дните на клетка телефони, така че не може просто да го търсят.
Така че аз трябва да го направя стари училище и действително търсене
тези входове за някакъв отговор.
И този отговор е просто ще да се нарича изхода.
Така че входът е в телефонния указател.
Алгоритъмът е каквото и набор от стъпки да използвам, за да намерите Майк Смит.
И изходът е, да се надяваме, телефонен номер Майк Смит.
И това след това ще бъде просто представител на най-никакъв проблем
да с вас се предават входове и искат да произвеждат продукция.
>> Така че, преди да помисли за процеса от които можем да решим този проблем,
намиране на Майк Смит и нещо такова,
нека разгледаме първата и на last-- входове и изходи.
Физически, разбира се, на входа тук е цял куп хартия слепени
под формата на телефонен указател.
Но компютри, на course-- лаптопи и настолни компютри и дори телефони
тези days-- това са електронни устройства.
>> И в края на деня, това, което е единственият вход към компютър?
Е, това е нещо като този захранващ кабел тук.
Аз го включете в стената, и Получавам поток от електрони,
което ми позволява да стартирате машината.
Или може би тези електрони са създаден по силата на моята батерия.
Но в края на деня, това е единственото нещо, което става в моя лаптоп.
И толкова много интересно неща е в крайна сметка
излиза, дали по пътя на принтера
или на екрана или audially или други подобни.
>> Така че, ако всичко, което имаме като наш основен принос към компютър
ток, така че просто електрони вървят в и или навън,
и така, как можем да използваме този вход да всъщност представляват информация?
С други думи, как да стигнем от прост поток електроенергия
да, представляващ действителните номера или действителни писма
или действителни изображения на екрана или действителни филми или имейли
или произволен брой от тях концепции-високо ниво,
ако щете, че в край на деня по някакъв начин
трябва да се съхраняват в този Електронната механично устройство
използвайки само тези, които просто ingredients-- електрони, идващи в и извън?
>> Така изглежда, че, в най-простата форма,
единственият вид на състояния Имам в моя свят, така че
да speak-- условия в моя world-- е било
Имам електрони, вливащи, ток тече, или правя not-- така нататък, на разстояние.
И нека да се формализира и изключване, като компютърен учен мощ,
само с 1 и 0.
Нека просто да опиша някои произволно но последователен номер, за да го.
1 означава върху, 0 означава изключване.
Или може би също разглеждаме това като истинските средства за и фалшиви средства.
Вие също може да се направи черен и бяло или червено и синьо.
Ти просто трябва две описания.
И компютър учени би обикновено просто използвайте 0 и 1.
>> Така че, ако това е така, ми само азбука състояща се от 0 и 1 е, как
бих могъл да стигне до изравняване на броя 2 в компютъра си, да не говорим за номер 3
или буква от азбуката или изображение или филм?
Как ние някак работят поетапно себе си от този основен принцип
0 и 1 и действително представляват нещо по-интересно?
>> Е, нека да поставим този въпрос задържана само за миг
и помисли за нещо надяваме запознати,
дори ако не сте наистина мислех за то във всеки детайл, за 10, 20, 30, 40, 50
повече години.
Това е, което?
Как бихте се произнесе, че?
Не е подвеждащ въпрос.
Редица, но какво е това?
1, 2, 3, или 123.
И ми хареса как се казва 1, 2, 3, защото това е един от начините за това гледане.
1, 2, 3, това е последователност от три символа.
Това е снимки, които ние Сега имаме думи за.
И ако нещо ги чете заедно, типична човешка на английски език
бих казал, 123.
И това е нещо като по-висока концепция ниво,
чувства като разумно голям брой.
>> Но как се стигна до там?
Е, това да мине известно време, тъй като сте мислил за това по този начин,
Но да се върнем в моя ден, I вид научил това
като колона за 1-те, 10-те си колона, и на 100 години колона.
Така че, както казва Lakisa, че е 1, 2, 3, но тя също е 123.
Но как да се получи от първата до последната?
>> Е, вие обикновено ще направи в колона от 100 години, имам 1.
Така че това е като да кажеш 100 пъти 1.
И след това в колона 10, аз имам 2.
Така че това е като да кажеш, 10 пъти по 2.
В колона на 1 е, имам 3.
Така че това е като да кажеш, 1 пъти 3.
>> И ако добавите тези неща заедно, това, разбира се,
е 100 плюс 10 плюс 3.
И, о, това е защо аз се получи това по-високо ниво понятие от 123.
Това е просто основна математика, при което те символи имат тежести за тях, ако
ще, Заместител или стойности на колони.
И след като съм се размножават всичко навън, да получа този номер.
>> Така че колко от вас знаят как да говорят binary-- 0 и 1's-- като компютър?
ОК, перфектен, никой, или никой от вас не мисля, че правя.
Но аз ще ви претендира всъщност, че това вече.
Ние просто трябва да се подреди на ощипване нашия мисловен модел малко.
Процесът обаче е точно същото.
>> Нека оставим това там горе и вместо дръпнете това надолу за миг.
В света на компютрите, имаме само 0 и 1 в.
И така, това, което е няма да се промени е това, което?
Е, в моя човешки свят, в десетична система, декември смисъл 10,
Имам колко цифри на мое разположение?
10, нали?
От 0 до 9, разбира се.
>> И затова ние имаме 10 на място и на 100 години място.
Къде е, че идва от?
Е, това е 10 на степен 0.
Това е 10 на степен 1, 10 на силата на 2, и така нататък.
Можете просто да се умножи вашите колони от 10, като се започне с просто 1
в най-дясната този тук.
>> Така че в света на компютри, ако само
Трябва binary-- двупосочно значение 2-- или 0 и 1, ние просто
Наистина трябва да се промени на базата на които математиката.
Така че, с други думи, сега просто ще има колона за 1 и the--
къде е този going-- колона на 2-те години, колона на 4, а може би и отвъд.
Защо така?
Е, това е 2 на 0-ия властта.
Това е 2 на 1.
Това е 2 до 2 и така нататък.
>> Така че тук, имаме 1, 10-те години, 100-те, 1000-те години, 10000 100000, на 1
милиони, и така нататък, тук имаме 1, 2, 4, 8, 16, 32, 64.
Можете просто да се умножи по 2, вместо да се запази умножи по 10.
Така че сега, ако целта на ръка е да представлява
номера, използвайки само 0 и 1-те години, нека да разгледаме как да стигнем дотам.
>> Това, разбира се, е модел 0 0 0, но това, което редица концептуално
представлява тя?
Е, 4 пъти 0 плюс 2 пъти 0 плюс 1 пъти 0, нека добавим онези заедно.
4 пъти 0 е, разбира се, 0, плюс 2 0 пъти е, разбира се, 0 плюс 1 пъти 0
е, разбира се, 0.
Така ах, това представлява Номер ние, хората знаят, като 0.
>> Е, сега, нека много бързо превъртане напред.
Ако вместо това не съм представляващи 0 0 0, но нека да направим 1 0 1,
че може да бъде как Lakisa, по-рано, просто ще го 1 0 1 произнася.
Но сега, как ще го отведе до по-висока изравни броя ние, хората, за да знаят?
И така, какво е този номер?
Това е 5, броят знаем като 5.
>> Е, защо е това?
Е, ние можем наистина нещо минеш през нея методично
4 пъти по 1, 0 2 пъти, 1 пъти 1.
Добавете тези заедно, така че това е 4 плюс 0 плюс 1.
И това е, наистина, 5.
Така че е по-малко досаден сега правене на аритметиката отново и отново.
Процесът обаче е точно същото.
>> Единственото нещо, което има променена в нашия свят
е, че нашите колони са 1, 2, 4, 8, 16, и т.н., вместо на 1, 10, 100,
1,000.
И това е само защото нашата азбука има свива от 0 до 9 само 0-1.
>> Така че като малък тест тук, как ще Вие сте представител на числото 7 в двоичен?
0?
Е, 0, значи 0 0 0?
Кажи го отново, Карина.
Perfect.
Защо така?
Това е ефективно 4 плюс 2 плюс 1.
Толкова добър.
>> Как да представляват малко another-- как за номер 2?
Затвори, но назад.
И така, какво е това?
Има 4 плюс 1, така че това е 5 отново.
>> Така what's-- Съжалявам, Карина?
0 1 0.
0 1 0 ще бъде 2, защото отново, дори ако нещо не се хвърли върху вас,
просто направи по математика.
4 0, 0, 2 пъти 1 е 2, 1 0 е 0.
Така че това е броят знаем като 2.
>> Какво ще кажете за броя 8?
Хм?
Добър.
Така че ние вид трябва друг контейнер.
Ние се нуждаем 1 0 0 0.
И това е вярно на нашия сортиране на стария десетичната училищна система.
Как да ви представлява броят 1000?
>> Е, изглежда, че е вид в трудно положение,
ако ви помоля да представляват броя 1000,
защото дори и да се даде като 9 от тях, 9 от тях 0 на тези,
който е най-големият брой ви има, не сте съвсем стигнем до 1,000.
Така че, ако 1000, просто трябва друг позиция, така че можете да направите 1 0 0 0,
Ergo броя 1,000.
>> Така че сега, нека картата този вид концептуална дискусия обратно към хардуер,
където отново, входът е само този малък захранващ кабел, ток
подадена и изтичащи.
И така, за които да бъдат картирани от тук да има, добре, какво наистина се нуждаем?
Е, може да се мисли, че е вътре в компютър, цял куп електрически крушки,
ако обичаш.
Те са наистина нарича транзистори.
И транзистори са само превключва че може да бъде или включен или изключен.
Така че може да се мисли за транзистор, който е на
се позволява ток да тече и транзистор, че е изключен като спиране
ток от течаща.
И вместо да вземат над светлините тук,
защо не правя този вид на нов стил на училище.
Така че това може да бъде 1, фенерче е включен, само едва пак.
И това може да е 0, а сега е изключен.
>> Така че използването на този физическо устройство, I Сега може да представлява двоична система.
Трябва ми само две състояния.
Няма значение какво цвят е или какво е то.
Всичко, което има значение е, че имам едно състояние на и друга държава, на разстояние.
Така че използването на телефона ми тук, как да направя представлява броят знаем като 0?
Или казано по еднакъв, какво номер съм представляващи сега?
0, защото устройството е изключено.
>> И ако го направя това?
И сега, как да направя представлява броят 2?
Мога ли да взема назаем телефона си Тук, както направихме вчера?
Така че нека да видим, така че, ако искате да представлява номер 2, е този номер 2?
Не.
Какво номер съм аз случайно представляващи тук?
Това е всъщност броят 3.
>> Така че кой искам да се изключи?
Черният телефона or-- добре, ако they're-- черен телефон или на бял телефона?
Белият телефона.
Така че, ако изключите тази функция и ние Онлайн то до тук, ние имаме 1
в 2-на място и 0 в място на 1 е.
И така, аз съм сега представляващо броя 2.
Това, разбира се, ще бъде броя 3, защото сега и двете от тези светлини
са включени.
>> И аз ще спра дотук, но очевидно е,
ако искам да представлява номер 4 или 8 или по-висока,
Отивам да се нуждаят от повече телефони.
Но това е всичко, което се случва.
Така че, ако някога сте чували, че вътре на A-- благодаря you-- компютър
е милиони транзистори, че е само на милиони мънички ключове.
И те не са светлина крушки, които се включват и изключват,
но те или да позволява на електроенергия да тече някъде или да го спре.
И така, има си две states-- или изключване, включване или изключване.
>> Така че ние ще изглежда сега да имат тази способност
да представлява тази концепция, която ние бихме искали в действителната хардуер.
Но всички ние имаме сега, е способността да представлява номера Тя ще изглежда.
И как ще стане, представляваща букви от азбуката, които
се чувства като на следващия вид на функция, ще искате да добавите към една модерна компютърна
след като имате номера?
>> И наистина, ако мислите, че за IT, Исторически, компютри
бяха въведени наистина да служат като калкулатори числено.
Но, разбира се, тези дни, те правят много повече.
Дори когато те се стартират, вие обикновено видите една или повече думи.
Е, как да представляват думи, ако всичко, което трябва, е, отново,
електроенергия в края на ден, или еквивалентно 0 и 1 е?
>> Да.
Да, искам да кажа, ние вид направил това вчера в някаква форма,
когато в един момент, Мисля, че произволно
каза, че, ако искаме да представлява буква А, бихме могли просто да се обадя, че 1.
Това е в контекста на криптография, където ние просто е необходимо някакво код,
някакъв вид картиране.
>> Така че може би ще бъде представен като 1, и В ще бъде представена като 2,
и Z ще бъде представен като 26, например.
И тогава Единственото предупреждение е, че ако аз съм Ще се кодират буквите в моите имейли
или в моите текстови съобщения като номера, вие всички
Трябва да се съглася за употреба същия набор от конвенции.
И наистина, в света е направил точно това.
>> Има система в света нарича ASCII, American Standard
Код за информационен обмен, което е просто решение няколко години
Преди това хората правят, че реши, че ще е равно, не
1, 2 и 26, и така forth-- това е малко different-- но 65, 66, 67.
И аз ще спра по- диаграма в един момент.
Но това е произволно.
Но това няма значение че това е произволно.
Светът трябва да е просто последователен.
>> Сега, по-скоро, има нещо по-красиви
наречен Unicode, защото вид в света на реализирани, след изобретяването на компютри,
че там е повече от добре 256 символи в света
че ние може да искате да представлява, особено когато се въведе
Азиатски езици и други symbologies че се нуждаят от повече изразителност, отколкото си
може да се побере в най-ранната версия на този код, който се нарича ASCII.
Така Unicode всъщност позволява можете да използвате повече 0 и 2.
По-специално, да поддържате изслуша Думата байта в обществото и дори само на
вчера.
И един байт е това, което отново?
>> Какво е един байт?
Това е само на 8 бита.
Е, какво значи това наистина означава?
Е, това означава, по-рано, когато бяхме говорим за двоичен и бях с
произволно три бита, когато сме били говорим за binary-- място на 1 е,
на 2 на място, а 4-те place-- добре, байт просто означава, че вие ​​говорите
не в единици от по три, но четири, пет, шест, седем и осем,
което ни дава 8 на място, 16-те, 32-те, 64, а 128 години.
>> С други думи, по-малко не е всичко че полезна единица мярка,
защото това е точно като един мъничък част от информацията, включена или изключена.
Така че преди няколко години, света просто реши
това е малко по-удобно да се говори в от гледна точка на байта, осем неща едновременно.
И така, по този начин се е родил представата за един байт.
И така, ние имаме осем бита тук.
>> И се оказва, също за подобен причини света решават години
Преди това да представлява писмо ASCII, започваш да се използват единици от 8 бита.
Така че дори и да не правим нужда, че много, ти си
Винаги ще се използва 8 бита за представляват буква от азбуката.
И това е удобно, защото след това, ако
получите съобщение, че има 0 0 0 1 1 1 1 0, последвано от още 1 1 1 0 1 0
0 1, така че ако получите 16 бита, светът може просто
предположи, че първите 8 са едно писмо и втората 8 са още едно писмо.
>> Няма значение колко са.
Тя просто има значение, че всички сме последователна
когато сме тълкуването на тези битове.
И това е само случайна.
Това означава, че нещо, но не го направих наистина мисля за това какво означава това.
>> Така че това е една малка бяла лъжа.
Първоначално, ASCII в действителност се използва само 7 бита.
И на осмия бит е наречената разширена ASCII.
Но точка е в крайна сметка същото.
Светът като цяло стандартизиран по 8 бита.
>> Така че това би било да бъде малко по- ограничаване, защото само аз мога да
представляват капитал A, капитал B чрез капитал Z.
Но наистина не, ако аз отида to-- има един куп ресурси
онлайн, например, asciitable.com, този
ще бъде по-малко поразителен на първо време.
Но аз ще посоча това, което е важно тук.
>> Това просто се случва да be-- и аз ще walk-- нека да видим, ако отида тук.
Ето, в десетичната колона, 65 броя.
И на писмото дясната колона характер, Chr, е буквата А.
И вие може да се игнорира, за сега, всичко в средата.
Това е шестнадесетичен, осмична, и на HTML код.
За този сайт просто се опитва да хвърли много информация при вас наведнъж.
Но всички ние се грижим за е десетичната колона и колоната характер.
>> Така че по тази логика, това, което е броят, че светът
реши представлява малки букви а?
Да, 97.
И само за да обърка потенциално леко,
какъв номер е решил света ще представлява числото 1?
Точно, защото we-- 49, изглежда, тук, предвидени в долния ляв ъгъл.
>> Сега, това, което мога да кажа от това?
Така се оказва, че в компютърните системи,
там обикновено е фундаментална разлика
между номер и символ.
Редица е нещо, което ние Научих расте, когато
ние бяхме супер млад в началното училище.
Това е неща, които се броят с.
Но герой е просто форма, а глиф, така да се каже, на екрана.
>> Сега, ние, хората, някак виж нещо, което прилича това.
И ние казваме, ох, че е номер 2.
Но не, това е просто символ, който изглежда като това, което ние знаем като номер 2.
И така, има тази фундаментална разлика
между реалните числа и символи.
Това е номер.
Но обикновено, в контекст на компютър,
ако вместо виж нещо като това quoted--
и вие не винаги трябва да се види, че цитира,
но в името на discussion-- ако виждате кавички около броя,
това вече е характер.
Така че този номер 2 отдолу качулката вътрешността на компютъра
ще бъдат представени с модел битове, които представляват броя
50 според диаграмата онлайн.
>> Въпреки това, ако един компютър просто вижда това, този
ще бъде представена с модел на битова 0 0 0 0 0 0 1 0.
Като има предвид, този герой би действително да бъде представен as-- и сега,
Трябва да мислим малко harder-- така че това характер ще бъде представена с 0
0 1-- какво трябва тук?
0 0 1 1 0 0 1 0.
Как да направя това?
Ами това е броят 50, ако тя се размножава, като се използват тези колони,
това е номер 2, и така Ето защо съществува тази дихотомия.
>> И това е само един закачка сега за функции
че съществува в програмните езици че ние ще се докоснат на кратко по-късно днес.
В езиците за програмиране, имате по принцип,
но не винаги, нещата наричаме различни типове данни.
С други думи, по-programmer-- когато той или тя е писмено,
програмист получава да реши в каква формат за съхраняване на неговите данни.
Можете или съхранение на данни като суровите цифри, като броят 2.
Или можете да ги съхранявате като струни, или последователност от символи
че вие ​​обикновено ще изразят с котировки във вашия език за програмиране.
>> Можете да имате неща called-- Ще свръхопростяването и ги наричаме
недвижими numbers-- така номера, които не са цели числа, като номер 2,
но номера искали 4.56.
Така че реалните числа могат също имат знака след десетичната запетая,
така че това е различно от основно значение част от данните в компютър.
И тогава дори може да има други типове данни на едно място.
Така че това е просто една закачка наистина на най-простият от дизайнерски решения
че един програмист мощ направи под предния капак.
>> Така че някакви въпроси, просто все още?
Така че нека да се опитаме да направим това е малко по-реално.
Този хардуер не е толкова много в употреба вече.
Но повечето хора в тази стая, вероятно Израснах с и все още използва твърди дискове
по някакъв начин.
>> Въпреки че повечето от вече нашите лаптопи не
има устройства, които работят по този начин, вместо лаптопи днес като цяло
имат твърди дискове без движещи се части.
Това обикновено е по-скъпо, за съжаление, но малко по-бързо
и A-- добре, често, много по-бързо, което е една от причините.
И също така не го прави генерира най-много топлина.
Тя може да бъде по-малък, така че е общо нетно положително.
>> Но това ни позволява да присвоите малко по-конкретно какво
ние не говорим за най-0-те и 1 на ниво сега да физическо устройство.
Това е едно нещо за мен да се говори около 0 и 1 от гледна точка
на моя телефон или абстрактно по отношение на ключове са и изключване.
Но какво да кажем за твърди дискове?
В своите лаптопи, ако имате по-стара един, или в настолния си компютър,
или сигурност в сървъри днес, където ще трябва
твърди дискове, които имат един терабайт пространство,
4 терабайта пространство, добре какво означава това?
>> А твърд диск с 1 терабайт на космически средства
Има 1 трилион байта вътре в него по някакъв начин,
или еквивалентно 8 трилиона бита вътре.
1 терабайт ще бъде 8 терабита или 1 трилион бита, които
означава, че ако имате твърд с кола, трябва по някакъв начин
или други трилион 0 на и 1 е вътре в него.
И ако ние просто да разгледаме един произволна снимка на твърдия диск
представител, това е, което е трудно диск може обикновено изглежда като вътре.
>> Това също е нещо като един стар грамофон играч
но като цяло с множество записи вътре, така
да speak-- множествена плата, както ги наричат,
метални кръгли дискове, и След малко главата четене,
много прилича на един стар грамофон.
И че главата четене движи напред и назад и някак си чете битовете.
И това, което е на тези плочи, дори Въпреки, че ние, хората, не могат да ги видят,
или в реалността или в тази картина, Има мънички магнитни частици.
И дори ако сте дълго забравил как работи електричество,
магнитна частица който е обвинен като цяло
има север край и на юг end-- толкова на север и на юг.
И така, в света просто реши преди време
че ако магнитна протокол същество е изравнен по този начин, север-юг,
нека наречем, че 1.
Ако това е вместо юг-север, нека просто се обади, че е 0.
И така, ако имате най- ваше разположение един трилион
мъничък магнитен particles-- и да се надяваме,
изобретателността хардуер в За да се обърне на тези около
както виждате fit--, ако искате да представляват един куп 0, вие
Просто трябва 8 магнитни частици всички подравнени като този.
А ако искате да представлява осем 1, можете просто
нужда от 8 магнитни частици подравнени успоредно на резервно такова.
>> Какво имам предвид от магнитни частици?
Честно казано, всички тези години по-късно, на нещо, което все още ми идва на ум
е този човек, ако Израснах с това нещо.
Това е little-- за тези unfamiliar-- на
малко детството играчка, че има това без козина човек тук
че има всички тези малки малка черна магнитни частици, които идват с нея.
И с помощта на които червената пръчка, който е само на магнит,
ти нещо да му даде мустаци или веждите или косата или нищо за него.
Така че в действителност, ако ние я увеличите в, например, този
е вид игра може да играе с Wooly Willy.
>> И това е само да се каже, те са много по-големи магнитни частици
отколкото са в действителност на твърдия диск, и много по-малко магнитни частици.
Но нека действително виж След това, ако е нужно
малки магнитни частици в твърд диск, как всъщност можете да
използвате тези за представяне на данните.
>> [Възпроизвеждане на видео]
>> -В Твърд диск е мястото, където вашето PC магазини повечето от неговите постоянни данни.
За да направите това, данните, пътува от RAM заедно
със софтуерни сигнали, които разказват за твърд диск за съхранение на тези данни.
твърдия диск вериги превод на тези, сигнали в колебанията на напрежението.
Това, на свой ред, управление на твърдия диск-те години преместване parts-- някои от най-малко движещи
части, останали в съвременния компютър.
>> Някои от контролни сигнали мотор, който се върти покрити с метал плата.
Вашите данни са всъщност съхранявана на тези плочи.
Други сигнали се движат четене / запис глави да се чете или записва данни на плата.
Тази техника е толкова прецизно че човешки косъм дори не можеше да
мине между главите и въртящ плата.
И все пак, всичко това работи в страхотна скорост.
[END PLAYBACK]
И можете да видите в опашката края на видеото,
като цяло има множество плата.
И така, че главата да четеш не е просто четене на върха.
Това е нещо като три или четири или повече четящи глави
този ход като този, четене на данни едновременно.
>> Така че има много сложност и сортиране на времето
че е замесен в един твърд диск.
И това нещо се върти наистина дяволски бързо, така че има много на сложност.
Но нека да увеличите малко по-дълбоко и видим къде са тези магнитни частици
и как се ставаме все по тях.
>> [Възпроизвеждане на видео]
>> поглед -Let е в това, което ние Току-що видях в забавен кадър.
Когато един кратък импулс на ток се изпраща на главата за четене / запис,
тя се обръща на една малка електромагнитна за част от секундата.
Магнитът създава поле, което се променя
полярността на една малка, малка част от металните частици
които палто повърхност всяко блюдо се.
A модел серия от тези малки таксувани области на диска
представлява едно малко на данни в бройна система, използвана от компютри.
>> Сега, ако токът е изпратен един път през главата за четене / запис,
областта е поляризирана в една посока.
Ако токът се изпраща в обратна посока,
поляризацията е обърната.
Как да получите данни от твърдия диск?
Точно обратен процес.
Така че това е частиците на диск, който получи на тока
в главата за четене / запис на движещи се.
Взети заедно милиони тези магнитни сегменти,
и имаш файл.
>> Сега, парчета от един файл могат да бъдат разпръснати по целия плата Пробив е,
нещо като бъркотията на документи на бюрото си.
Така специален допълнителен файл запазва следите, където всичко е.
Да не ти се иска да имаше нещо такова?
>> [END PLAYBACK]
>> Така се намекна за там, може би, е че темата от вчера на заличаване.
Когато изтриете файл, вчера казахме
че един компютър всъщност прави какво, когато плъзнете нещо
в кошчето или кошчето за боклук?
Тя просто го забрави.
Но за 0 и 1 е, магнитните частици
които приличат на червено и синьо нещата тук или ръката ми тук,
са все още там, на твърдия диск.
>> И така, съществува software-- Norton Utilities и недалечното минало
и други по-модерни software-- че просто
ще сканира целия твърд диск търси при всички тези 0 и 1-те години, тъй като тя
Оказва се, че най-файл формати-- Word документи, Excel файлове, изображения,
видео files-- всички имат определена модели, които са често срещани сред тях.
Всеки видео файл може да да бъде от различен видео,
но първата няколкото бита обикновено са еднакви.
Или последния няколко бита обикновено са еднакви.
>> И така, с висока степен на вероятност, можете да погледнете за тези модели.
И дори, ако файлът е бил забравен, може да се каже с висока степен на вероятност,
но това изглежда като документ на Word, нека го възстанови и да го махнете забравя,
ако обичаш.
И така, това е начина, по който може да се възстанови данни, че е било случайно
изтрити или изтрити или умишлено изтрит за каквито и да е цели.
>> За разлика от това, сигурно изтриване какво прави в контекста на една картина като тази?
Точно така, ги прави всичко случаен.
Така че това нещо се движи някои от ги надолу, някои от тях нагоре,
оставя някои от тях без промяна, и обикновено прави случаен шум от него,
или просто може би прави всичко ги 0 е или всички от тях 1-те години.
И това също може като цяло търкат данните си далеч.
>> Така че нека да се върнем сега към въпроса на изчислителната мислене, при което
имаме формула входове.
И алгоритми дава ви извежда в крайна сметка.
Ние се фокусираме сега на входа и изходи, защото сега,
претенция имаме начин на представляваща входове и изходи.
Ние просто ще се използва двоичен.
>> И без значение какво сме Искам да представя днес,
дали това е номер или писмо или хиляди от тях в телефонен указател
или снимки или филми, в края на деня, всичко е 0 и 1 в.
И аз твърдя, че, въпреки че това е супер прост свят само с 0 е
и 1, ние можем да се изгради.
И сме виждали един пример за че с писма до този момент.
>> Така че нека да се съсредоточи сега по този средната съставка, един алгоритъм.
И нека да се върнем към този Например на Майк Смит.
Така че в този телефонен указател, който разбира се, ние не използваме толкова много повече,
има проблем да бъде решен.
Ние искаме да се намери някой като Майк Смит.
>> И това, което може да направите, за да се намери Майк?
Е, аз може просто да се отвори тази книга, започнете от първата страница,
и осъзнават, о, аз съм в раздел А.
Майк не е там.
Имам нужда от секцията S за Смит.
Така че просто да се обърна една страница в даден момент.
Нека да се преструваме, че това е всичко, бели страници и не жълти страници,
защото ние няма да се намери Майк в жълтите страници или иначе.
Но аз съм в бели страници.
И сега, аз съм в раздел Б.
Аз все още не са го намерили.
Така че аз продължавам да се обърна една страница в даден момент.
>> Това е алгоритъм.
Това е набор от инструкции за решаване на някакъв проблем.
С други думи, погледнете страница, ако Майк не е върху него,
превърне страница, и повторения отново и отново,
идеално гледа надолу, както го правите.
Така е този алгоритъм, този процес, е правилно?
>> Извинете.
Не, аз чувам някои номера.
ОК, но това is-- да, със сигурност това е досадно.
Подобно, ние ще бъдем тук по цял ден, ако аз продължавайте да търсите за Mike при тази скорост.
Но нека да претендира, че е правилно.
Това е глупаво, но това е правилно.
>> В края на деня, докато той може да вземат, аз ще намеря Майк, ако той е там
и аз съм се обръща внимание.
И в крайна сметка да достигне неговата страница.
И ако получа твърде далеч, ако Да стигна до секцията T,
тогава мога да леко оптимизиране и само да кажа, хм, всичко направено.
Аз дори не трябва да губим път отива на Z-те години.
Но това е много линеен подход, ако
ще, много нещо наляво-надясно подход, по права линия.
И неговата вярна, но бавно.
>> Така че аз си спомням от началното училище, сортиране на оптимизация от първокласник,
където се научих как да не се брои от тези, но от twos-- така 2, 4, 6.
Това е A, много по-трудно да се направя, но на теория, това е
faster-- 8, 10, 12, 14, и така нататък.
Какво ще кажете, че алгоритъм?
Дали е по-ефективен?
Дали е по-бързо?
>> АУДИТОРИЯ: Това е ефективен.
>> DAVID Малан: Да, така че е def-- това е буквално два пъти по-бързо, ако приемем, че
Да не се получи спънал с пръстите ми.
Това е два пъти по-бързо, защото Аз съм се обърна чрез две
страници наведнъж, вместо на един, но това е потенциално по правилен, защото защо?
>> АУДИТОРИЯ: Вие прескочите някои.
DAVID Малан: Добре, какво ще стане ако Майк се случва да се sandwiched-- може би, когато съм по-късно
в телефонния указател, Майк се случва да бъде сандвич между тези две страници,
и аз просто сляпо прескачане над него.
Така че ние се нуждаем от малко корекция там.
След като се удари в секцията T, I Не може просто да уверено да се каже,
не намерихме Майк Смит.
Аз може би трябва да се удвои обратно.
Или всъщност, след като аз достигне някой наречен S-N, вместо S-М за Смит,
веднага, аз може да се удвои назад, защото може би той
беше на предишната страница.
>> Но не е нужно да се удвои обратно далеч.
На теория, ако мога да го направя в дясно време, аз просто се върнете една страница.
Така че това е добавянето на само една допълнителна стъпка.
Така че аз съм отишъл два пъти по-бързо, но това ми струва едно допълнително страница.
Но, че се чувства като нетна печалба.
>> Но това не е как повечето хора в тази стая ще реши този проблем.
Какво би типичен човек, може би Преди няколко години да направят, за да се намери Майк Смит?
Да, не беше намерен Майк.
Какво да правя?
Така че да се получи малко по-близо, но аз правя know-- това, което е вярно за телефонен указател?
АУДИТОРИЯ: Това е последователен.
DAVID Малан: Това е последователен.
Това е азбучен.
И така, ако аз съм в раздела M, Майк е ясно в дясно,
Аз буквално може да се скъса задачата half--
това е обикновено по-лесно, отколкото that-- сълза проблема на половина и да го изхвърлим,
така че сега, имам един проблем, който е вече не 1000 pages--, че е трудно,
защото мисля, че аз всъщност се отскубна телефонния указател това не time--
1000 страници, но 500.
>> Така че проблемът е буквално наполовина по-голям.
И това е доста убедителна, защото с моите предишни алгоритми, версия
1 и 2, правех само проблема една страница по-малки, две страници по-малки
на време.
Като има предвид, сега, аз го направи 500 страници малки наведнъж.
>> ОК, така че сега, Карим предлага че отивам на дясната половина.
Така че аз ще отида грубо до центъра, или да се даде.
И ако го направя това математически, Мога да отида право на средата.
И сега, аз осъзнавам, о, Аз съм в раздела T.
Аз всъщност отидох твърде далеч.
>> Но мога да, отново, разкъса проблем в половината, хвърлят го далеч.
И моите байта не толкова голям.
Това е само, какво, 256 страници или 250 страници, дават или вземат точно сега.
Но тя все още е много по- от една страница или две страници.
>> И така, сега, аз отивам горе-долу в средата.
О, аз не отиде твърде далеч достатъчно сега.
Така че повтарям, повторение, повтарям, Повтарям, докато аз съм с надежда
остави само с една страница.
>> Така че кани на въпроса, ако аз започна с около 1000 страници,
колко стъпки отне ми с версия 1 на моя алгоритъм?
Е, ако Майк е в S раздел, в най-лошия случай,
това е доста близо до края на азбуката.
Така че, ако телефонния указател има 1000 страници, Ще намеря Майк рамките 1000 страници,
дай или вземи.
Може би това е като 800 или така, но това е доста близо до 1,000.
>> Като има предвид, във втория алгоритъм, колко
страница оказва максимално мощ I изисква да се намери Майк Смит?
Има 1000 страници, но аз съм ги две прави в даден момент.
Точно, така макс като 500ish, защото ако отида през целия телефонен указател,
в този момент, не мога да спра.
Но мога да обръсне няколко от просто спря в секцията T.
Но това е в най-лошия случай 500 страници.
>> Така че колко пъти мога да разделяте 1,00o-страницата на телефонния указател на половина отново
и отново и again-- от 1000 500 до 250-125?
Колко време преди да се удари една страница?
Да, това е около 10.
В зависимост от закръгляване и такива, това е около 10 страници общо нужда да се превърнат
или телефонни указатели трябва да бъде разкъсан.
>> Така че това е доста мощен.
Ние започнахме с проблем с 1000-страница във всички три от тези истории.
Но в първата алгоритъм това, Отне ми, най-лошия случай, 1000 страница
Оказва се, за да намерите Майк.
Второ алгоритъм 500 страници, за да намерят Майк.
Трето алгоритъм, 10 страници, за да намерят Майк.
И това е още по- мощен, когато си мислиш
за сортиране на обратен сценарий.
Да предположим, че телефонната компания следващия година може би се слива два града заедно,
и телефонния указател е внезапно тази дебелина, вместо това, че
така 2,000 страници, вместо на 1000.
Е, първата ми алгоритъм търси Майк Смит в телефонния указател на 2000-страница,
лошия случай, това ще отнеме колко страница се превръща през следващата година?
>> Телефонен указател е 2000 страници, so-- добре, не по-един.
Ако телефонният указател е два пъти по-дебел в първи алгоритъм, първо алгоритъм,
2000, нали?
В най-лошия случай, Майк е наистина В близост до края на книгата,
така че това е 2000 страници завои.
Второ алгоритъм става чрез двойки, като 1000 страници.
>> Но какво ще кажеш в моята трета и най-новата алгоритъм?
Ако телефонната компания удвоява брой страници от 1000 до 2000,
колко повече пъти се наложи да се скъса че книгата на половина, за да намерите Майк?
>> АУДИТОРИЯ: Само един.
>> DAVID Малан: Само един повече, защото с една страница сълза,
Аз буквално може да се раздели и владей, ако щете,
че проблем в половината поемане масивна ухапване от него.
И така, това е пример за ефективност и може би един алгоритъм
с които всички ние сме сортиране на интуитивно запознати.
Но това е просто като правилно като другите ми алгоритми
с които ощипване за втората алгоритъм,
но това е толкова много по-ефективно.
>> И в действителност, това, което един компютър учен, или на свой ред програмист,
обикновено би направил при писане код е да се опитаме да разбера,
Добре, аз не искам моето програма, само за да бъде вярна,
Аз също искам тя да бъде ефективна и решаване на проблемите добре.
Представете си в реалния свят днес, като Google индекси, търсения
като милиарди страници, представете си, ако те използва първия алгоритъм за намиране котки
сред милиард pages-- гледа На първата страница в тяхната база данни,
втората, третата, просто гледам за една котка, търси котка.
Това е дяволски много бавно би изглеждало.
Вместо това те биха могли да използват нещо нарича двоично търсене, което
не coincidence-- BI означава две, ние държа се раздели нещо в 2, в half--
те биха могли да използват двоичен търсене и може би намери котки дори по-бързо,
или каквото и да е, което търсите.
>> И честно казано, има дори по-красиви алгоритми
че направи много повече от това просто да раздели нещата на половина
за да намерите бързо информация.
И ние ще говорим малко по- за тези, които след обяд днес.
Така че нека просто се опитват да представят това.
Ние не се нуждаем, за да отидат в всяко математика или реални числа.
Можем да говорим за това в резюмето.
>> Но нека просто да предложи, ако са като дискусия сега
с инженерите предлагането на този алгоритъм
и вие се опитвате да направите изчислена решение,
защото може би инженер, казва за вас, вие
знам какво мога да приложи линейно търсене като две минути.
Толкова е лесно.
Binary търсене не е, че фантазия, но то се случва да ме вземе като 10 минути,
така 5 пъти по-дълго.
>> Има търговията тук, дори и от гледна точка на вземане на решение какъв софтуер да пишат.
Смятате ли, напиши по-простия алгоритъм, които просто ще ви отнеме две минути?
Или искаш да прекарват повече време, 10 минути, писането на любител алгоритъм?
Как решавате, че вид на въпрос?
Или пък може да го направи малко по-реално.
Аз кажа на шефа си, че това ще отнеме ми или една седмица или 10 седмици
За да се приложат софтуер по този начин, как
да решите, които алгоритъм за зелена светлина?
Карим?
>> АУДИТОРИЯ: Публиката, предполагам.
>> DAVID Малан: Публиката.
Какво искаш да кажеш с публиката?
>> АУДИТОРИЯ: Ако това се случва да се използва от потребители
който [недоловим] от потребители [недоловим].
Но ако това е нещо, че си Просто правя за себе си
за да се улесни проблем [Недоловим] по-бързо.
DAVID Малан: Да, това е бърз и мръсна е добър начин да го опиша.
В действителност, ако сте описвайки голяма част от времето си
в град училище, при което често пъти, Написах лош код съзнателно so--
най-малко, това е как аз рационализирано it-- съзнателно така,
защото въпреки че пишех код че е сравнително бавен, за да се изпълни,
Аз бях в състояние да пише в самия код доста бързо, разходите само за няколко минути
или не за часове дни.
И се оказа, че от време на време е необходимо, за да заспи.
Така че, дори ако ми код изисква 8 часа, за да се движат, и това е добре,
Аз просто ще отида да спя, докато тя работи.
>> Така че в момента, аз мислех, че това е много умно, въпреки че очевидно
работил през моя д-р много бавно.
Но обратното на това е че, ако пишех софтуер
за други хора, които значение повече от мен, добре,
като ги чакам 8 часа до получите обратно своите резултати от търсенето
не е всичко, което непреодолими.
И така прекарва повече време отпред, за да напише софтуер
че е по-ефективно, по- като трета нашия алгоритъм,
вероятно е от полза за потребителите с течение на времето.
Така че това наистина зависи над време как тези разходи се натрупват.
Ако ти започваш да се пише софтуер, за да го използвате веднъж,
Вероятно може и да се направи бърз и мръсен, както се казва.
Просто го хвърлят заедно.
Това е код, който затруднява ти, това е толкова лошо,
но това върши работа правилно, въпреки че това не е ефективно.
Обратно на това, което прекарвате повече време на нещо, да го точно.
И тогава амортизира с течение на времето, че първоначалните разходи на време
вероятно е полезно, ако продължаваш оптимизиране на общия случай.
>> И наистина, това е една тема, в програмиране, или компютърни науки повече
като цяло, като се опитва да оптимизира не за необичайно случая
но най-често срещаните case-- какви операция ще се случи отново и отново?
Ако ще да има милиарди на потребителите търсене на вашия сайт,
вероятно ще трябва да прекарат допълнителни седмици отпред пишат по-добър софтуер,
така че всички ваши потребители се възползват.
Сега, нека се опитаме да улови този на малко живописно, но не толкова много,
числено.
>> Така че тук е просто един стар училище диаграма.
И нека да кажа, че това е времето.
И това не е от значение what-- всъщност, не, не време.
Нека да поставим, че от друга ос.
Да кажем, че това е времето, и това е размера на проблема.
>> И компютърен учен може обикновено наричаме
това просто п. п е като нашата зелена до променлива, където
п е число, N брой, и това е най- брой на каквито и да е материали, които имате.
Така че в този случай, п е броя на страниците.
Така че може да е 1000 в случай ние просто казано.
>> Така че времето може да бъде всяка единица мярка.
Може би, това е второто.
Може би, това е ден.
Може би, това е като страница завои.
Няма значение.
Каквото и да искате да се брои в, че ще бъде време, или да струва еквивалентно.
>> Така че с това много първи алгоритъм, ако, например,
имаше телефонен указател 1000-страница, Отивам да се направи една точка там,
защото, ако това е 1000 страници, отне приблизително 1000 страница оказва, или да се даде.
И след това, ако имах 2000-те страници на книгата телефон,
и аз отивам да се направи втора Дот тук, защото за 2000 страници,
това е като 2,000 секунди или страница Оказва или каквото.
И така, когато казах по-рано, това е вид на линейна зависимост,
че е било умишлено, защото исках по-късно on-- полето now-- да се направи линия.
Това е вид на една права Онлайн връзка.
Наклонът е 1/1, ако щете.
>> Междувременно, втори алгоритъм каза, ако имаш 1000 страници
и сте използвали втория алгоритъм, където преброих от 2-те години, превръщайки
две страници в даден момент, трябва да се направи точка отдолу или отгоре първоначалното ми точка?
>> АУДИТОРИЯ: По-долу.
>> DAVID Малан: По-долу, защото както видяхме, това отнема по-малко време, двойно по-малко време.
Така че точката трябва да бъде половината по-висока от другата.
И същата сделка тук, тази точка вероятно трябва да бъде грубо там.
И така, моят втори алгоритъм, по същия начин, има линейна връзка с времето.
И ние можем да го привлече като такива.
>> Така че сега, третата и последна алгоритъм е малко по-трудно да се направи.
Но интуитивно, ако аз имам 1000 страници с третото ми алгоритъм,
тя трябва да ме вземе само като 10 стъпки.
И ако аз имам 2000 страници с третото ми алгоритъм,
тя трябва да ми отнеме не 10 стъпки, но 11, само още един.
Така че ние сме само едва ще видите това.
>> И се оказва, ако Аз се фокусирам върху това, че съм
ще преувеличават за действие, формата на тази линия, в крайна сметка,
не е права line-- защото, наистина, ако беше,
тя ще изглежда по-скоро като others-- това всъщност е крива линия
че, ако ние я увеличите, ще да изглежда много по-този начин.
It-- добре, ОК, игнорира тази част.
Това беше моята писалка става на ъгъл.
Това е крива линия, която е винаги увеличаване, винаги, винаги, винаги
увеличава, но само на сантиметри.
>> И така с течение на времето, че имате връзка, която е по-скоро това.
Тя почти изглежда прав.
Но това е все така бавно се увеличава.
Но в продължение на почти всички точки по Вашата х-ос, хоризонтална ос,
това е по-ниска от тези на други линии.
>> Така че това може да бъде една връзка п, при което, ако имате н страници,
ви н секунди отнема.
Това може да бъде една връзка п / 2.
Имате н страници, е необходимо вие N / 2 секунди, два пъти по-голяма.
И това е логаритмична отношения, които
Ако си спомняте, влезте база 2 на п улавя този вид растеж, така да се каже.
Така че това е нещо свято Граал сред тримата от тях
тук, защото това е просто много по- ефикасен, но може би по-сложна
за изпълнение.
Някакви въпроси?
>> Ами нека да направим това, нека ми отвори текстов прозорец
само така можем да се опитаме да формализират нещо тук.
Така че нека да вървим напред сега и приложи този алгоритъм
за намиране на Майк Смит в код, ако щете, Псевдокод код.
Аз няма да се използва Java или C ++.
Аз съм просто ще използвате нещо като Английски-подобен синтаксис, който ние
обикновено наричаме Псевдокод код.
Ето, аз имам един празен прозорец.
И аз казвам, етап 1 от най- първи алгоритъм е вземете телефонния указател.
Стъпка 2 е отворена книга за първа страница.
Стъпка 3 ще бъде погледнем страница за Майк Смит.
Ако на страница, обадете се на Майк.
друг свой ред страница и преминете към стъпка 3.
Съставено, да речем.
>> И така, това не е съвсем перфектна, които ще видим в един миг.
Но нека да разгледаме какво концепции съм въведени тук.
Така стъпки 1 и 2 и 3 са доста много глаголи.
Те са изявления, actions-- направите това.
И така, в един програмен език, бихме обикновено
ги наричат ​​отчети или функции или процедури,
ги наричат ​​произволен брой неща.
Но те просто сте actions-- направите това.
>> Стъпка 4 е коренно различна, защото това е вид на задаване на въпрос.
Той казва, че сме вид на по-разклонение на пътя.
Ако Майк е на страницата, наричаме него, така завийте наляво, ако щете.
И ако не, да се върна към някои друга page-- или по-скоро, съжалявам,
се върнем към някои други стъпки, които предизвиква някаква примка конструкт.
И ние го правим отново и отново и отново.
>> И всъщност, знаеш ли какво?
Да.
иначе, ако в края на книгата спирка.
Така че ние се нуждаем от рода на трета състояние, защото
Не може да продължите да въртите рекламата на страница nauseum, защото в крайна сметка, аз ще
удари в края на книгата.
И бъг в една програма може да бъде не предвиждане на този сценарий.
И тогава аз просто осъзнах, о, изчакайте една минута, имам нужда от трети сценарий.
Ако аз съм от страници, I трябва наистина просто спрете.
В противен случай, това е неопределено.
Какво ще се случи, ако аз държа казвайки обърнем страницата и да се върна,
Това е, когато компютрите замразяване или катастрофа, когато ви удари
някои неочаквани ситуации като тази.
>> Сега, какво да кажем за Mike Третият algorithm-- Смит
вземете телефонния указател, отворена книга за first-- да
Не, не на първа страница този път, да middle-- ох, добре, че бихме
е втората алгоритъм.
Нека просто да прескочите до третия.
>> АУДИТОРИЯ: О, съжалявам.
>> DAVID Малан: Това е добре.
Нека просто да прескочите до third-- открито до средата и сега търсят Майк Смит.
ако на страница, обадете се на Майк.
И след това, което искаме да кажем тук?
друго какво?
Ние можем да изразим това във всяка редица начини.
Няма по-верен отговор.
ОК, ако не отново, но ние трябва да се be-- ОК, ние искаме да се разделят на две,
но искаме да отиде наляво или отидете нали?
Как можем да изразим това понятие?
Е, в случай на Майк, да, това е честно.
Но ОК, така че това е всъщност една добра точка.
Това е добре.
Ние ще продължим с тази логика.
Така--
>> АУДИТОРИЯ: По-малко от половината.
DAVID Малан: Да.
Така че иначе, ако страницата е, ние ще кажем, по-малко от Смит, отляво на Смит,
then-- нека да видим, е това ще усложни?
иначе, ако страница идва преди Смит, разрив в половината, изхвърляме коя половина?
>> АУДИТОРИЯ: Мислех, че е [недоловим].
>> DAVID Малан: чувам, така отговори.
>> АУДИТОРИЯ: Ляв.
DAVID Малан: ОК, хвърлят далеч лявата половина, като Lakisa
каза по-рано, в ляво половината, тогава аз вид
Искам просто да отида to-- отида надясно.
Или еквивалентно, и аз направих малко малко от една каша от началото тук,
Аз действително искате да отидете отново на стъпка 2,
където отворена за middle-- или open-- Да, нека просто кажем, страници до средна.
И това го поправя.
Това вече не е една книга.
Това е само половината от една книга, толкова отворени страници в средата.
>> else-- са почти там.
Стъпка 6, иначе ако страница идва след Smith, разкъса на две, изхвърляме дясната половина,
След това преминете към стъпка 2.
друго откажат, четвърти сценарий, ако ние нямаме страници оставени да се обърнат.
Така че бихме могли да се почисти това нагоре.
И ние трябва да се почисти това нагоре.
Това е много Псевдокод код, ако ще, описание на много високо ниво.
Но тя не обикновено улови идеята.
>> И, отново, в този сценарий, ние има понятието условие,
клон, а разклонение на пътя, което прави а decision-- ако това, отиде по този начин,
иначе, ако отидете този начин, иначе, ако отидете по този начин.
И това е много често срещан техниката на програмиране
да реши в коя посока да отида, така да се каже.
И ние също имаме някакъв вид на примка структура, където
правим нещо отново и отново.
>> Сега се оказва, че много по- като в този пример,
е супер точен е важно.
Но ние също така съм виждал нещо че ние продължаваме да се обадите абстракция.
Какво означава да вдигнеш телефона книга?
Ние просто вид като за даденост в тази стая
, че има някои семантична значение.
Всички ние просто вид знам, о, добре, вземете телефонния указател.
Какво означава, че наистина означава?
Е, това наистина означава удължаване ръката, навеждайте над удължи с пръсти,
захванете книга между пръстите, изправя, дръпнете ръка към вас.
И ние може да бъде наистина педантичен за това,
Наистина е супер точен като за това, което правя.
Но всички тези стъпки колективно са какво означава да вземете един телефонен указател.
>> И така по-рано, когато казах, всеки на тези първите две твърдения
може да се мисли като пристъпи или функция,
Наистина той представлява това, което ние запази обажда абстракция.
Това е като на високо ниво идеен описание на един проблем, който
всъщност включва доста няколко стъпки.
И така, това също е повтарящи тема в програмирането,
с което бих могъл да напише програма с помощта на синтаксиса като this--
pick_up_phone_book ().
И тогава синтактично, аз съм ще открадне нещо
от повечето програмни езици.
>> Сега, стъпка 1 изглежда още по-скоро като функция,
като програмист ще го наречем.
Тя изглежда като код, че някой е дал име, за да и даде
за мен да се използва somehow-- в друга думи, това, което линията съм подчертани
представлява функционалност, която може би Аз дори не се прилагат.
Някой по-възрастните, по-мъдър от ми вече разбра
как се изразяват понятието на бране на телефонния указател.
И това е като петте стъпки, аз просто разтърси, разстояние от върха на главата ми.
>> Но той или тя вече се прилага това дава тези няколко стъпки
име, pick_up_phone_book.
И скобите е Просто това, което повечето програмисти
направи в края на твърдения като това.
Сега може да устои на неговата или нейната раменете и никога отново,
мисля за това какво означава това да вземете един телефонен указател.
Не мога просто да кажа, вземете телефонния указател.
И това е точно това, което всички от нас, хората правеха тук.
>> Когато бяхме вероятно 1 годишен, 2-годишна възраст,
някой трябва да ни научи какво е означаваше да вземем един телефонен указател.
И оттогава, ние сме абстрахира
от тези, които много безинтересно механични стъпки.
И ние просто имаме интуитивно разбиране
за това какво означава да вземете един телефонен указател.
>> И вие може да се екстраполира сега до по-сложно things--
изграждане на сграда.
Подобно, за някои хора, че действително има значение.
За изпълнители, архитекти, че има някакъв смисъл.
И те ще знаят какво да правят, ако Казах, отидете построи сграда.
>> Но повечето от нас в залата не можаха се справят с това ниво на абстракция.
Вие трябва да кажете ни харесва иди лопата и иди се бетона
и ноктите на парчета дърво заедно и всичко останало
участва в изграждането на една сграда.
И това е, защото ние не трябва все още не са програмирани да се разбере
какво означава да се построи сграда.
Ние не разполагаме че абстракция.
Ние не разполагаме с тази функционалност.
>> И така, какво ще видите в програмни езици, като цяло,
особено по-модерни езици, като Java, PHP, Ruby, и Python,
те са много по-зрял отколкото по-старите езици,
като C и C ++ и още други.
И така, те идват с по- функционалност построен инча
Повече код е написан от хората в миналото
че сега можем да се обадите или призове или да използвате, тъй като аз съм намеквайки
при с това подчерта линия тук.
И така, въпреки че ние не говорим за езици за програмиране по себе си,
Просто Псевдокод код, всички от идеи са все още в тази дискусия.
И се оказва, точност е супер важно, тъй като е абстракция.
И нека да се опитаме да съобщава, че, както следва.
>> Аз случайно можеше да развали това от мига на слайд на екрана
преждевременно.
Но нека да попитам за един смел доброволец, ако нямате нищо против да идва.
Вие искате да бъде в предната част на фотоапарат, ако сте ОК с това.
Някой иска да излезе и да даде инструкции на колегите си тук?
Просто трябва да дойдат тук и стоя тук и да кажа няколко думи.
>> Виктория се усмихва най-много и избягване на очите ми най-много.
Бихте ли били склонни да дойде нагоре?
ДОБРЕ.
И ако всички останали в местата си може да вземе парче от парче хартия,
ако обичаш.
Каширана хартия е добре.
Хайде около този начин.
Или някои от хартията, която ти бяха дадени вчера,
просто някакъв празен лист на хартия, ако можеше.
И ако не разполагат с никакви, просто питам съседа си, ако можеше.
>> Така че за момента, за този пример, Виктория
ще играе ролята на програмист, инженер, който
Необходимо е да програмирате всички, като компютрите, за да се направи нещо.
И ще видим какво предположения решите да направите.
Ще видим как точна тя избира да бъде.
И ако тази демонстрация отива педагогически добре, много грешки
ще бъде направена, че след това ще използваме че като възможност за дискусия.
Но предизвикателството за необходимата е да се избегнат тези грешки,
да бъде добър програмист.
И така предизвикателството под ръка, ако бихте харесали да ходи тук,
е пред Виктория на екрана here-- и да се надяваме, никой от вас
запомни това, когато аз светна на екрана.
И не се обърнеш към всички, защото има и друг екран в тази стая
че мога да се изключи.
Така че не се обръща.
>> В предната част на Виктория е, че един и същ писък.
И работата си сега, е да ви кажа всичко на вашия лист хартия какво да се направи.
И ние ще видим, въз основа на вербални инструкции сам,
компютърен код, ако щете, как точно вашите рисунки
are-- си реализации са.
Има смисъл?
>> АУДИТОРИЯ: Да.
DAVID Малан: ОК, изпълни.
>> АУДИТОРИЯ: Начертайте квадрат.
>> [СМЯХ]
>> DAVID Малан: И никой могат да се задават въпроси.
Може да направи само това, което е казал.
О, и ако имате днешните пързалки отвори в раздела, не гледам на раздела.
ДОБРЕ?
>> АУДИТОРИЯ: ОК, начертайте кръг.
А slope-- мога да кажа наклон?
DAVID Малан: До вас.
АУДИТОРИЯ: A наклон.
И един триъгълник.
>> DAVID Малан: Добре.
И остана тук само за миг.
И аз ще дойда наоколо в един момент.
И няма нужда да се сложи имената ви върху него.
Нека дойде около и събира вашите рисунки,
ако нямате нищо против да ги разкъсване.
>> Ето какво се върнахме.
Аз ще го проектира на екрана.
Виждам, квадрат, кръг, наклон, и триъгълник.
Така че това е един от отговорите там.
И let's-- Опа.
Благодаря.
Ето още един асортимент, и един зад него.
>> Така че всички те изглежда да улови духа.
Благодаря.
Има и още, и ето още един.
тълкуването на наклон е малко по-различна, малко по-закръглена.
И най-близо, или защото на чудесен специфичност, с които сте
описано, или може би ти вид Видях го преди, това е наистина
какво Victoria е всъщност описване.
>> Но сега, тези от вас, които не успя да го съвсем прав,
нека да предложи някои възражения тук.
Така Виктория първо каза начертаете квадрат.
И сега, можем да предположим, заради днес
че всеки знае, как да се направи квадрат.
Но това не е изцяло ясно, нали?
Как иначе може да имате съставен квадрат, или когато
може да бъде част от неяснотите тук за компютъра?
АУДИТОРИЯ: Местоположение и размер.
DAVID Малан: Местоположение, нали?
Всички сте имали хартия на някои форма, обикновено правоъгълници, но малко по-
различни размери.
Но вие със сигурност може да са изготвени, ако искаш, огромен площад, може би
малък квадрат.
Може би, това е завъртян.
Не мисля, че видяхме, че.
Но можеше да бъде и по-диамант като, но все пак, въпреки всичко,
математически квадрат.
Така че това е може би най двусмислен.
>> Тогава тя каза, начертайте кръг.
Някои от вас го направи до това, което не е неразумно,
защото хората са склонни да мислят или да чете дясно на ляво в повечето езици, така че не
грешно предположение.
Но този кръг може да има бил вътре в квадрата,
може да са били около квадрат, може да са били на друго място
на листа, така че може би двусмислен.
>> Наклон може да са били може би като най-много свободи устно
с какво означава това.
И някои от вас се тълкува то като деформирано линия
или по права линия или други подобни.
И тогава триъгълник, също биха могли да имат е разположено в редица начини.
Така че в кратко, дори с нещо, което ти поглед и да сте като, уау, така
прост, едно дете може да изготви този, добре не
Наистина, освен ако не сте супер, супер убедителен
и кажете на компютъра точно какво да правят.
Така че, ако бихме могли, ако имате друг лист хартия, нека
опитайте още веднъж.
И аз ще дам Victoria един друг пример на екрана тук.
И отново, не се обърнеш и не гледам на слайдовете.
И аз ще я дам малко време да мисля за това как да се опише това.
Не им позволявайте да видите страха в очите ти.
>> [СМЯХ]
>> И отново, този път на лоста някои от тези храна за вкъщи
и се опитайте да получите почти всеки поне правилния отговор.
>> АУДИТОРИЯ: ОК, да вземе парче хартия, изглежда
в средата на това парче хартия.
В средата на това парче на хартия, направи куб.
>> [СМЯХ]
DAVID Малан: Какво научихме?
Бяхме толкова близо.
ОК, повтарям, ако може, за всеки.
>> АУДИТОРИЯ: В средата на парче хартия, направи един обект,
който прилича на куб.
>> DAVID Малан: ОК, това е всичко ти се да се работи.
Позволете ми да бъде аналитично и не толкова критична,
но да се направи твърдението че Виктория определено
изглежда да се мисли в много абстракции от високо ниво, които
Не е неразумно.
Защото в противен случай, всички ние бихме бъде доста нефункционално,
ако ние трябваше да бъде все така прецизен с всичко, което правим в света.
>> Но казвайки отидете на middle-- I мислех, че сме на такава добра песен
там, като отидете на много средата на страницата, и след това се направи куб.
Така че тя си мисли в абстракции, защото тя е все още гледане
това, което е на екрана, както е наистина един куб.
Но има толкова много възможности за тълкуване там.
И в действителност, има толкова много други начини, по които биха могли да изразят
че, който ще предложи в един миг.
Така че тук имаме едно въплъщение на picture-- whoops-- този,
въплъщение на снимката, толкова по- малко три размерност към него,
което е хубаво.
>> Ето още един, където имате същото, въпреки че това е вид на отворен куб.
Някои хора го взеха малко по-плосък, двуизмерен.
И това е добре.
Така че, наистина в център на хартията.
Това мисля, че ще като, защото ако се върнем тук,
това е, което тя описваше.
Така че сега, нека да предложи как иначе ние може да се опише тази ситуация.
>> Обратно, в деня, един от най- по-общи начини да се научи програмиране
беше да се напише код, пише линии на инструкции,
че контролира малко костенурка на екрана.
Лого и други варианти на този е името на езика.
И костенурката е живял в един свят.
>> Така че предполагам, че тази правоъгълна пространство е неговият свят.
И вие ще започнете от assuming-- I наистина не знам как да се направи костенурка,
така че нека да го направя по този начин.
И тогава той има черупка и след това може би някои крака.
Така че може да се наложи тази малка характер на екрана.
>> И обекта на настоящото език за програмиране
беше да се принудят костенурката да отиде нагоре, надолу, наляво, надясно
и да постави писалката надолу или вземете писалка си,
така че той в действителност може да се направи на екрана в тази много плоска правоъгълна свят.
Така че, когато си мислех, че може би ще, и къде трябва да помисли за гмуркане
до психически, когато се описват инструкции по-общо,
Аз твърдя, е сложиш писалка надолу в middle--
и ние ще се отървете от костенурка, защото аз наистина не може да
пази го рисуване много добре.
>> И сега, как иначе би могъл Казвам се направи куб?
Е, може да се каже нещо подобно равенство диагонална линия на североизток, например,
или под ъгъл от 45 градуса нагоре.
И това може да ми спечелиха тук.
И аз съм доста далеч от куба.
Но сега, мога да кажа нещо като се обърнат на 90 градуса наляво
и начертайте линия на еднаква дължина северозапад.
И мога да продължа с подобни посоки.
И това няма да бъде лесно.
И честно казано, ние вероятно ще са били тук в продължение на пет минути.
Но може би щяхме да сме стигнали до нещо, което в края на деня,
завършва като един куб, но ние хвърли вътре, че абстракция
да го направи при такава ниска ниво, че наистина не може да
виж това, което правите, докато цялото нещо е всъщност има на страницата.
И така, това е общ принцип, отново, на programming-- тази идея
на абстракция.
Това е толкова прекрасно мощен, защото отново,
Тя току-що каза, нарисувате куб, който всички ни почти ще гроквам много бързо.
Ние просто ще се разбере, ОК, нарисувате куб.
Ние може и да не знаят ориентацията, така че ние може да бъде малко по-точни,
но най-общо можем да си представим или какво е куб.
И това е полезно, защото ако всеки ти път
седна като програмист в клавиатурата, за да пишат код,
ако трябваше да мисли по такъв ниско ниво, никой от нас
някога ще се върши нищо.
И разбира се, никой от нас не би наслаждавайте на процеса на писане на код.
Това би било като писане в 0 и 1 е, който честно казано не беше всичко, което отдавна
хората пишеха код в 0 и 1 в.
И ние много бързо дойде с тези по-високи languages-- ниво
C ++ и Java и др.
>> Така че нека се опитаме това още веднъж, само за да флип масите, така че всички от нас
има шанс да се мисли в доста по същия начин.
Можем ли да получите още един доброволец тази време, за да излезе на дъската и да изготви,
Не четеш?
Да, ОК.
Бен, хайде нагоре.
И, Бен, в този случай, след като изправени пред дъската, не погледнете наляво,
не изглеждат добре.
Само прави това, което си колеги тук да ви кажа.
А за всички останали в стая, вече сте програмист.
Той е на компютъра.
И на снимката съм избрал тук предварително е този тук.
Те just-- си мислят на забавен виц е всичко.
>> Така ще се някой искал да доброволец първата инструкция
или изявление, че трябва писалка командването на Бен?
И ние ще направим това заедно, може би една инструкция от всеки човек.
Съжалявам?
>> АУДИТОРИЯ: Начертайте кръг.
DAVID Малан: Начертайте кръг е първото нещо, което чух.
>> АУДИТОРИЯ: До върха.
>> DAVID Малан: До върха.
ОК, ние можем да ви позволи да изтриете, отмените.
И сега, някой друг.
Дан, ще ви бъде удобно предлага следващата инструкция?
>> АУДИТОРИЯ: Разбира се, привлече центъра от дъното на кръга,
с small-- малко малко пространство от това,
нарисувате права линия до три четвърти от пътя надолу борда
лек ъгъл на лявата си страна.
>> DAVID Малан: Добро.
>> АУДИТОРИЯ: лек ъгъл.
>> DAVID Малан: Undo, Control-Z. ДОБРЕ.
Андрю, който искате да предлагаме до следващата инструкция?
>> АУДИТОРИЯ: Разбира се.
От дъното на тази линия, още леко angle--
whoops-- може би около една трета от дължината [недоловим],
лек ъгъл надолу и като трета от дължината на [недоловим].
Така че, да, от тази точка, начертайте линия трета
от дължината на предходната Онлайн отдалечен вляво.
>> DAVID Малан: Това ОК?
Права линия, това е ОК?
ОК, Оливие, който искате да предложи на следващата?
>> АУДИТОРИЯ: [недоловим] от дъното на кръга, [недоловим].
Равен на дясната ръка на [недоловим] сантиметра.
>> [СМЯХ]
>> DAVID Малан: Мисля, че ти започваш да се Трябва да конвертирате, че е инча тук.
>> АУДИТОРИЯ: Спрете.
>> [СМЯХ]
>> DAVID Малан: OK.
[? Ara,?], Който искате да предложи на следващата?
>> АУДИТОРИЯ: Начертайте [недоловим] горната [недоловим] същото.
[Недоловим] кръг, привлече към [Недоловим] и изготви [недоловим].
>> DAVID Малан: ОК, не повече отмените.
Нека да направим един или два повече инструкции.
Крис, който искате да предложим един?
>> АУДИТОРИЯ: На дъното на кръга, [недоловим]
изготвяне на равна линия разплиска надолу в ляво [недоловим].
>> DAVID Малан: OK.
Андрю?
Ние did-- Карим?
>> АУДИТОРИЯ: Като се започне от дясната линия, края на лявата линия, на дъното,
започваш да се прави за със същата дължина като тази линия
сте, изготвяне на правото [недоловим].
[Недоловим] градуса, така че [недоловим] градуси от дясната страна.
>> DAVID Малан: Добре.
Нека пауза.
Не се обръщай все още.
Нека пауза, и нека си опитате един друг опит
преди да разкрие на Бен това, което той е бил рисуване.
Можете ли да разбъркате Бен да на right-- или Всъщност,
Не, нека просто да ви дам друга дъска, още по-добре.
Така че би някой сега харесва да отнеме повече от подхода
че Виктория се по-рано, когато ние говорим в по-високо ниво абстракция
и само едно изречение или две опише с Бен
какво да се направи, без да Първи в плевелите,
така да се каже, при това по-ниско ниво?
Виктория.
[СМЯХ]
АУДИТОРИЯ: Начертайте фигура на пешеходно човек.
И краката и ръцете му трябва да бъде от дясната страна.
>> DAVID Малан: ОК, това е всичко, което получаваш.
Добре.
Защо да не разкрие на Бен, което той направи.
Така аплодисменти.
Това беше най-трудното може би.
>> Така че, въпреки че ние не говорим в доста глупави термини
около просто рисунка снимки, се надяваме, че
наистина могат да оценят степента на изразителност, че може да е необходимо
с цел да се каже компютър какво да правя.
И в действителност, че Бен е в състояние да направи това толкова бързо
е нещо като доказателство за използване на език, може би по-високо ниво
версия на английски език, която го позволява да се използва само думи, или чуят думи
от Виктория, че го позволи тези abstractions-- просто изготвя
цифра, ходене до right-- че нещо има
някои семантична смисъл на това, че не е почти толкова очевидни, когато сте просто
казвайки, сложи си писалка надолу, изготвят надясно, направи се на ляво.
>> И така, това също е много често при програмиране.
Това ще се каже, че като много ниско ниво на езика, програмиране
в 0 и 1, ако щете.
И това ще бъде по-високо ниво език за програмиране в Java,
Или нещо такова.
Малко по-на опростяване, но това е
на нещо като емоционална чувството, че се чувствате, когато
с помощта на един вид на нещо, или друго.
Малко на безсилие тук от необходимостта за такава точност, но възможност
да бъде малко по-свободен с тълкуването тук.
Но, разбира се, буболечки може да се получи като резултат.
>> Ако искате най-home-- ние няма да направи това един в class--
но ако искате да донесе този дом,
Мислех, че ще се потопите в това.
Така че, ако искате да играете тази игра с вашата значими други
или деца или други подобни, вие може да се ползва от това, както добре.
>> Така че нека да вървим напред и да разгледаме един последен нещо тук за изчислителна мислене.
И това ни води до John Oliver, не за клипа
може да си видял снощи, но в по-малко от последните броеве.
Няколко месеца по-назад, Volkswagen взе доста критики
поради каква причина, ако знаете?
Какви са попаднали в беда за?
>> Да, така emissions-- те се опитват да победи емисии
тестове по същество като им коли замърсяват околната среда по-малко
когато колите им са били тествани и замърсяват околната среда повече
когато колите не са били тествани.
И това, което е все по-интересно в света, тъй като може да се наложи подразбираща
от дискусии на like-- какво е it-- CarPlay, софтуер на Apple за автомобили
и факта, че много на нас все по-често
имат сензорни екрани в нашите автомобили, има една плашеща сума
на софтуер в народната коли днес, което
честно казано отваря цяло кутията на Пандора, когато става въпрос за сигурност и физическа опасност.
Но за днес, нека съсредоточи върху точно това, което е
участва в писането на софтуер които може да са gamed системата.
>> За определянето на проблем, за незапознатите,
Нека да разгледаме най-Джон Оливър.
А за тези, запознати с проблема, нека да разгледаме това
по един забавен обектив чрез Джон Оливър, както добре.
Така че нека ме удари атака по това, аз мисля, три минути въвеждане.
По дяволите.
[Възпроизвеждане на видео]
-Cars--
DAVID Малан: Очевидно е, че на YouTube, it's--
- --Правила умните герои в Бързи и яростни филмите.
Тази седмица, немски автомобилен производител Volkswagen се озова
в центъра на скандал на потенциално наказателни пропорции.
>> -Volkswagen Се подготвят за милиарди в глоби, възможни наказателни такси
за нейните ръководители, като компанията се извинява
за манипулиране на 11 милиона автомобила до помогне да го победи изпитвания за емисии.
>> -Certain Дизелови модели са предназначени с усъвършенстван софтуер, който
употребяван информация, включително позицията на волана и превозното средство
скорост, за да се определи колата подложени на изпитване на емисиите.
По силата на това обстоятелство, двигателят ще намали вредните емисии.
Но колата е нагласено да байпас че когато е се задвижва.
Емисиите увеличени 10 до 40 пъти над допустимите нива на EPA.
>> -Wow, От 10 до 40 пъти по-голяма от ЗООС позволява.
Това е най-лошото нещо, Volkswagen някога е направил,
е нещо, което може да се каже, ако никога не бях чувал за Втората световна война.
Но може би най-сигурният знак за това как много проблеми Volkswagen е в,
е, че хората в самото отгоре са се оттегли.
Главният изпълнителен директор подаде оставка в сряда, след като кодиране, за да се направи контрол щети,
казвайки, че е безкрайно съжалявам, които звучеше страхотно, докато се оказа,
той е бил само 10% съжалявам но бе нагласено устата си
за изкуствено повишаване на sorriness му.
А междувременно, САЩ на Volkswagen Главният имаше извинение на собствените си.
>> -Let Да сме наясно с това, Нашата компания е нечестно.
И в моите немски думи, ние са напълно прецаках.
>> -Да, Но тотално прецакани нагоре не са германски творби.
И на немски език има много красиви фрази
за да опише ситуации точно като този, като [немски], което означава приблизително,
тъгата, която идва от свързани с бизнеса лъжи,
или [НЕМСКИ], което се превежда като порицаване баща такива, включващи
облаци от бензин.
Това е един красив език.
Тя просто отплава от езика.
И между другото, докато този човек извинение може да звучи искрено,
това е да се отбележи, че говори в официален старт парти за 2016 г.
Volkswagen Passat, което означава, че скоро след като каза съжалявам, той каза, че това.
>> вие -Благодаря, че дойдохте.
Насладете се на вечерта.
До следващата е Лени Кравиц.
>> [МУЗИКА]
>> -OK, OK, която приключва на вашия извинение с до следващото
Лени Кравиц не прави крещя трезвен разкаяние.
Тя крещи, попитахме Bon Jovi, и той каза не.
марка на Volkswagen има бил силно повреден.
И честно казано, тяхната нова реклама кампания не е точно помага.
>> - [НЕМСКИ], ние от Volkswagen би желал да се извини за вас мами с
нашите превозни средства.
>> [END PLAYBACK]
DAVID Малан: Така че това е заобиколен начин of-- sorry--
това беше заобиколен начин на въвеждане на основен проблем
в областта на софтуера, което е, че трябва да се открие определени условия.
И така въпросът в ръка тук е, как една кола потенциално,
както са въведени в софтуера от тези програмисти,
открива, че всъщност това е, което се изпитва?
Така че, за да бъде супер ясно, това, което правеха
е, в среда, където програмистите измислили
колата беше тествани, те някак
колата отделят по-малко емисии, по-малко емисиите, така че по-малко токсични изпарения
и такива.
Но когато това е нормално шофиране на пътя,
той просто ще излъчват най-много замърсяване, както го исках.
>> И така, как бихме могли да напише Псевдокод за този алгоритъм?
Как бихме могли да напише Псевдокод за софтуер, работещ в колата?
Искам да кажа, по-накратко, то се свежда до нещо подобно.
ако се изпитва, отделят по-малко.
друго излъчва повече.
Но това е малко твърде високо ниво, нали?
>> Да се ​​опитаме да се потопите в това какво тази абстракция, че са тествани средства.
С други думи, дори и да не знаят нищо за коли, какъв вид на въпроси
може да ви попитам, за да се определи дали , което се изпитва, ако сте в колата?
Какви характеристики може да бъде Представяме ако една кола се тества?
>> АУДИТОРИЯ: Тестване оборудване.
>> DAVID Малан: оборудване за изпитване.
Така че, ако тестване оборудване наблизо, след което отделят по-малко.
Така че бих могъл да си представя прилагане че с някакъв вид камери
или откриване на това, което става около вас.
И нека да предложи, че просто се чувства твърде сложно
действително да има допълнителен хардуер само за тази цел.
>> АУДИТОРИЯ: Ако сте в парк, ако си качулка е отворен.
>> DAVID Малан: В парка или качулка отворен, така че е добре.
>> АУДИТОРИЯ: И колата работи.
>> DAVID Малан: Така че това е по-малко повече concrete-- и колата работи.
Така че това ще бъде съюзът на няколко различни условия, ако щете.
Така че, ако колата е в парка, и дори макар че това е един много механично нещо
Обикновено, можех представете си за написването на софтуер,
особено, защото има често светло там тези дни,
Мога да си представя да е софтуер, който може да задава въпроси на скоростния лост
или не какво, вие сте в парка, са ти в кола, вие сте в обратната.
И мога да се върна на отговоря, че е или да
или не на тези видове въпроси.
>> И така, аз също може би отговоря въпрос като, е капака отворен.
Може би, има някакъв вид сензор че или ми дава обратно на 1 или 0,
вярно или невярно, предния капак е отворен.
И след това колата си, бих могъл да се открие че по някакъв начин чрез какъв механизъм?
Подобно, колата е в ход, I може да се открие, че това е по,
бих могъл да се открие по някакъв начин че колата е в движение?
>> Публика: RPMs.
>> DAVID Малан: Да, така че има винаги, че игла, че
ви казва колко оборота в минутни колелата изпитват.
И за да мога да гледам това.
И ако това не е 0, че най-вероятно означава, колата е в движение.
Но ние трябва да бъдем по- малко внимателни там,
because-- нека да опрости this-- ако ние току-що каза, ако колата си,
ние не искаме просто да отделят по-малко, ние искаме, ако колата се движи
и това е, което се изпитва.
>> Така че има няколко други съставки, които хората
са хипотеза, софтуерът се прави, защото отсъства действителната изходния код,
можете само нещо като извод от физическите ефекти на колата за това какво
би могло да се случва под качулката в областта на софтуера.
Така че, ако колата работи и може би, да речем, задните колела не се движат,
може това да бъде показателно на някакъв тест?
Какво съм аз намеква тук?
Да, може би, това е на една на тези ролкови неща,
където като колелата се обръщат в предната или в задната част,
в зависимост от това дали е предно колело или задни задвижващи колела, така че половината от колелата
се движат, но Другите двама не са, които
е странно ситуация в реалния свят.
Ако се шофира на път, че не трябва да се случи.
Но ако сте в склад на някакъв вид валяк система,
че може наистина да се случи.
>> Мисля, че хората също предложените че може би, ако колата се движи и кормилната
Не колело се движи, че твърде може да е сигнал,
защото това е разумно като веднага по пътя.
Но дори и тогава, човекът е вероятно преместване тя малко или сигурност
в продължение на няколко секунди.
Или хода на минути, шансовете това са не
Ще се фиксират в точно същото положение.
>> С други думи, може да отнеме изваждане,
са ви се изпитва, и съборят тази функционалност
в тези съставни компоненти.
И това е наистина това, което на Volkswagen инженери по някакъв начин направиха.
Те пише софтуер съзнателно да се открие, ако колата се тества,
следователно отделят по-малко, в противен излъчват по обичайния начин.
>> И проблемът тук, твърде, е, че софтуерът не е
нещо, което наистина може да види, освен ако имате т.нар изходния код.
Така че има два различни типа code-- поне два различни вида
на код в света.
Има нещо, което се нарича източник код, който не е за разлика от това, което
ние сме били писане, изходния код.
>> Това е изходен код, написани на на език, наречен Псевдокод,
което е просто нещо, английски, подобни.
Няма никаква официална дефиниция за него.
Но С и Java, C ++, тези, са всички официални езици, които,
когато пишете в тях, това, което трябва е текстов файл, съдържащ изходния код.
>> Но има и нещо в свят, наречен машинен код.
И машинен код, за съжаление, е само 0 и 1 в.
Така машинен код, е това, което машини разбират, разбира се.
Изходния код е това, което хората разбират.
>> И обикновено, но не винаги има програма
че един програмист използва това отнема източник код и го превръща в машинен код.
И тази програма е обикновено се нарича компилатор.
Така че вашият принос е изходния код, вашата продукция е машинен код,
и съставител е на парче софтуер, който прави този процес.
Така че това всъщност карти добре да нашите входове, алгоритми, изходи.
>> Но това е една много специфична въплъщение на това, което е да се каже, че,
дори ако притежавате една от Фолксваген автомобили, които са виновни за това,
това не е като това може просто отворете качулка или отворите ръководството на потребителя, или да потърсите
в изходния код, тъй като по времето, тя достига колата си в алеята,
той вече е бил превръща в 0 и 1 на.
И това е много трудно, не е невъзможно, но много трудно да се събере много от всичко
от просто търси в в основата на 0 и 1 в.
Така че можете да го разбера, в крайна сметка, ако да разберете как една машина operates--
Intel inside-- ако разбирате на Intel архитектура,
но това е отнема много време.
И дори там, може да се не бъде в състояние да видите всичко
че кодът може действително да се направи.
>> Всякакви въпроси относно този или този вид процес като цяло?
И действително, ние можем да връзвам тази дискусия за вчерашната дискусия на Apple.
Това също е защо ФБР не може просто да отидете и погледнете в телефона на заподозрения
и намерите реда код, за Например, че даде възможност на паролата:
или позволяват на това закъснение 80 милисекунди.
Тъй като времето е на колегите си iPhone,
той вече е бил превръща в 0 и 1 на.
>> Ами, нека да спрете тук за нашата Посетете изчислителна мислене.
Защо не вземе 15 минути почивка.
И когато се върнем, ние ще да разгледаме програмиране
себе си и започнете да очертае някои на тези концепции на високо ниво
до едно действително, ако игрив, език за програмиране.