DAVID Маланом: Добро пожаловать, все. Так вчера, вы помните, что мы сосредоточились на эти темы здесь. Таким образом, мы имели четыре всеобъемлющие topics-- конфиденциальность, безопасность и общество; интернет-технологии; облачные вычисления; и в конечном счете, веб-разработки. Кто-нибудь есть пропускная способность или время чтобы посмотреть немного Джона Оливер прошлой ночью? Это на самом деле довольно забавно, если не немного пугает. Любые вопросы по чему мы сделали вчера? Любые разъяснения? Любые вопросы, которые вы хотите сделать что мы затронем сегодня в той или иной форме? Так с чистого листа. Так что на повестке дня на сегодняшний день? Так что я думал, что мы начнем сегодня с взглядом на то, что в целом известный как вычислительной thinking-- в риск упрощаю, мышления как компьютер, может быть, думать, как инженер, и пытается начать организовать свои мысли или дать вам лучше понять, что вовлечено в фактически командует компьютер, чтобы сделать что-то путем программирования. И мы будем держать его в довольно высокий уровень, в значительной степени английский, но попытаться использовать знакомых примеры формализации, как вы бы идти о решении проблем. И мы вернемся немного CS темы, как абстракции, который придумал пару раз вчера, алгоритмы, а затем представление. И вот, когда мы начнем Сегодня в мгновение. Тогда мы посмотрим на программирование. Мы будем смотреть на некоторые основные конструкции с которыми вы можете быть знакомы и, возможно, даже найти вполне интуитивно. Мы будем смотреть, на самом деле, при программировании образца среда, которая очень доступна, очень игривая, и действительно ориентированы для лиц до 12 лет и старше. Мы проведем несколько минут там а затем взять вещи на более низкий уровень а на самом деле говорить о некоторых алгоритмы и структуры данных, так сказать, что программисты обычно используют для решения проблем гораздо больше эффективно, чем вы могли бы быть в состоянии обойтись без них вообще. Затем, после обеда, мы будем смотреть в технологических стеков, который только причудливый способ сказать Коллекции технологий что вы могли бы использовать для решить некоторые проблемы. И мы будем говорить об алфавите суп из языков, которые существуют раз сегодня Java и Python и C ++ и PHP и Рубин и всякие другие вещи. Мы будем смотреть на короткое время в шаблоны проектирования. Программисты, с течением времени, Приняты методологии которые, как правило, чтобы помочь им решать проблемы с большей готовностью. Когда вы начинаете видеть себя писать такой же код снова и снова, люди формализовать эти повторы и имена приписывать к ним а затем использовать их и продвигать их, в конечном счете. И мы будем говорить немного о мобильных стратегий, как то, что это значит на самом деле сделать мобильное приложение или мобильный сайт. Вы делаете это для Android? Вы делаете это для прошивкой? Вы делаете это для обоих из них? А какие компромиссы? И, наконец, мы возьмем веб-программирование внешний вид, который является собирательным термином действительно описывая любое время Вы пишете программное обеспечение, что это предназначены для запуска в Интернете, будь то телефоны или настольные компьютеры или ноутбуки. Мы кратко рассмотрим на баз данных и дизайн в нем, если только потому, что практически любой интересно веб-приложение в эти дни имеет какой-то базы данных. В противном случае, он бы просто статический контент. И база данных позволяет сделать изменения с течением времени, то ли сами или от пользователей. И мы рассмотрим, как вы будет идти о разработке что базы данных и своего рода жаргон которые могут возникнуть в инженера обсуждение на белой доске когда на самом деле реализации приложение в первый раз. Мы кратко поговорим о API, полезные сервисы что вы можете использовать, чтобы стоять на плечи других, будь то компании или отдельных лиц, и решить ваши собственные проблемы более быстро. И тогда мы будем барахтаться, возможно, немного с JavaScript, язык программирования, который используется как в браузерах в эти дни, но и в серверах. И, возможно, мы будем вернуться, если позволит время, некоторые из рук-на веб-материал, который мы сделал вчера и интегрировать два вместе, прежде чем мы закрою. Так что с that-- что ahead-- является Есть что-нибудь, что не хватает вам хотел бы, чтобы убедиться, что мы вводим и коснуться в некоторой точке. Если это приходит на ум, довести его до того долго. Но почему бы нам не начать с смотреть на вычислительной мышления. И позвольте мне предположить, что вычислительная мышление, опять же, своего рода описания высокого уровня какой ученый мог бы сделать. И в самом деле, давайте начнем с тремя компонентами, которые может перейти в вычислительной мышления. Это лишь один из способов ее описания. Мы могли бы, конечно, определить это в любом числе путей. Но позвольте мне предложить, ради сегодняшнего дня, что проблемы в мире, все проблемы в мире, когда подошел ученый мог можно рассматривать как то, что мы будем вызовов входов, которые нужно надоедает в то, что мы будем называть алгоритмы, которые затем дают результаты. Другими словами, все Мир решения проблем я требую могут быть переработаны в эти три компонента. Так что же я имею в виду входы? Входы это только то, что вы передал для решения. Например, вот старая школа проблема. Если у меня есть книга телефона здесь и Я хочу посмотреть что-то в него, это мой вход. У меня есть 1000 или так страниц в телефонной книге. Это вход к моей проблеме. И я хочу, чтобы найти что-то как Майк Смит, так что друг чье имя и номер надеюсь, в этой адресной книге. Это до дней клетки телефоны, так что я не могу просто искать. Так что я должен сделать это старый школы и на самом деле поиск эти входы для какой-то ответ. И этот ответ просто будет называться выход. Таким образом, вход телефонной книги. Алгоритм любой набор шаги я использую, чтобы найти Майка Смита. А выход, как мы надеемся, номер телефона Майка Смита. И это тогда было бы просто представитель большинства любой задачи чтобы с вами вручаются входы и хотят производить выходы. Поэтому, прежде чем мы рассмотрим процесс с помощью которого мы можем решить эту проблему, найти Mike Smith и что-то вроде того, давайте рассмотрим первый и на last-- входы и выходы. Физически, конечно, вход здесь это целая куча бумаги склеены в виде телефонной книги. Но компьютеры, ноутбуки из course-- и настольные компьютеры и даже телефоны эти days-- те электронные устройства. И в конце концов, что единственный вход на компьютер? Ну, это что-то вроде этот шнур здесь. Я подключить его к стене, и Я получаю поток электронов, который позволяет запускать машину. Или, может быть, эти электроны созданный путем моей батареи. Но в конце концов, это единственное, что происходит в моем ноутбуке. И так много интересного материал в конечном счете, выходит, будь то посредством принтера или экран или audially или тому подобное. Так что, если все, что мы имеем, как наши фундаментальный ввод в компьютер электричество, так что просто электроны собираются в и или вне, и так как мы можем использовать этот вход на самом деле представляют информацию? Другими словами, как мы получаем от простого потока электричества к представлению фактической цифры или буквы, фактические или фактические изображения на экране или фактические фильмы или по электронной почте или любое количество из них более высокие понятия уровня, если вы будете, что на конец дня как-то должны храниться в этом электронное механическое устройство используя только те простые ingredients-- электроны поступают и вне дома? Так что, казалось бы, что, в простейшей форме, единственный вид государств У меня есть в моем мире, поэтому чтобы speak-- условия в моем world-- либо У меня есть электроны течет, электричество течет, или я делаю не-- так далее, оф. И давайте формализовать и выключаться, как ученый мог бы, только с 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. И это своего рода выше концепции уровня, чувствует себя достаточно большое количество. Но как же мы туда попадем? Ну, это может быть время, так как Вы думали об этом, как это, но еще в мой день, я вид узнал об этом как колонны 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-х, 10 000-х, 100 000, в 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, 2 раза 0, 1 раз 1. Добавьте их вместе, так это 4 плюс 0 плюс 1. И это, на самом деле, 5. Таким образом, это становится немного утомительным прямо сейчас делает арифметику снова и снова. Но процесс точно такой же. Единственное, что имеет изменилось в нашем мире в том, что наши столбцы 1, 2, 4, 8, 16, и так далее, а не 1, 10, 100, 1000. И это только потому, что наш алфавит имеет сократилась от 0 до 9 только от 0 до 1. Так как немного викторины здесь, как бы вы представляете число 7 в двоичной системе? 0? Ну, 0, вы имеете в виду 0 0 0? Скажи это еще раз, Карина. Отлично. Почему это? Это эффективно 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 из них, который является самым большим число, которое вы есть, вы не совсем добраться до 1000 человек. Так что если у вас 1000, вам просто нужно другое положение, так что вы можете сделать 1 0 0 0, эрго номер 1000. Так что теперь, давайте карту такого рода концептуальное обсуждение обратно в аппаратных средствах, где опять же, вход был просто этот маленький кабель питания, электричество входя и вытекания. И так, что будет отображаться здесь чтобы там, ну, что нам действительно нужно? Ну, вы можете думать, чтобы быть внутри из компьютер, целая куча лампочек, если вы будете. Они на самом деле называется транзисторов. И транзисторы только переключатели который может либо быть включена или выключена. Таким образом, вы можете думать о транзистор, который находится на это позволяет электричество течь и транзистор, который выключен как остановка электричество от вытекания. И вместо того, чтобы за огни здесь, почему я не делать такого рода нового стиля школы. Так что это может быть 1, фонарик будучи на, только чуть-чуть, хотя. И это может быть 0, и теперь он выключен. Таким образом, используя это физическое устройство, я теперь может представлять двоичную систему. Мне просто нужно два состояния. Не имеет значения, что цвет это или что это такое. Все, что имеет значение в том, что у меня есть одно государство, и другое состояние выключено. Таким образом, используя свой телефон здесь, как я могу представляют собой число, мы знаем как 0? Или, что то же самое, то, что номер я теперь представляющий? 0, так как устройство выключено. И если я это сделать? А теперь, как я могу представляют номер 2? Могу ли я взять свой телефон здесь, как мы это делали вчера? Итак, давайте посмотрим, так что если я хочу, чтобы представить номер 2, это число 2? Нет. Какой номер я я случайно представляющий здесь? Это на самом деле число 3. Так какой из них я хочу, чтобы отключить? Черный телефон или-- хорошо, если they're-- черный телефон или белый телефон? Белый телефон. Так что если я повернуть это и мы линия его здесь, у нас есть 1 в 2 своего места и а 0 вместо 1 в. И вот теперь я представляющий число 2. И это, конечно, было бы число 3, потому что теперь оба этих огней находятся на. И я буду здесь останавливаться, но само собой разумеется, если я хочу, чтобы представлять номер 4 или 8 или выше, Я буду нуждаться больше телефонов. Но это все, что происходит. Так что если вы когда-либо слышали, что внутри a-- поблагодарить you-- компьютер миллионы транзисторов, это только миллионы крошечных переключателей. И они не горят лампочки, которые зажигаются и гаснут, но они либо позволяют электричество течь куда-то или остановить его. И таким образом, есть ваши два states-- включения или выключения, включения или выключения. Таким образом, мы бы, кажется, в настоящее время чтобы иметь эту способность чтобы представить эту концепцию, мы хотели бы в реальном оборудовании. Но все, что мы имеем теперь возможность для представления чисел, казалось бы. Так как же нам идти о представляющих буквы алфавита, которые чувствует себя подобно следующему рода функции вы хотел бы добавить к современному компьютеру когда у вас есть номера? И в самом деле, если вы думаете о это, исторически, компьютеры были введены действительно служить калькуляторов численно. Но, конечно, эти дней, они делают гораздо больше. Даже когда они загружаются, вы обычно видим одно или несколько слов. Так как же вы представляете слова, если все у вас есть, опять же, электричество в конце день, или, что эквивалентно 0 и 1.? Да. Да, я имею в виду, мы как-то сделали это вчера в той или иной форме, где в какой-то момент, Я думаю, что угодно говорит, что, если мы хотим, чтобы представлять буква А, мы могли бы просто назвать это 1. Именно в контексте криптографию, где мы просто нужен какой-то код, своего рода отображение. Так что, может быть, будет представлена ​​в виде 1, и B будет представлен в виде 2, и Z будут представлены как 26, например. И тогда единственный нюанс в том, что если я будет кодировать буквы в моей электронной почты или в моих текстовых сообщений как числа, вы все должны согласиться использовать тот же набор конвенций. И в самом деле, мир сделал именно это. Существует система в мире называется ASCII, американский стандарт Код для обмена информацией, который является просто решение несколько лет назад, что люди сделали, что решил, что будет равняться, а не 1, 2, и 26, и таким образом forth-- это немного different-- но 65, 66, 67. И я буду тянуть вверх диаграмма в мгновение. Но это произвольно. Но это не имеет значения что это произвольно. Мир должен просто быть последовательным. Теперь, совсем недавно, есть что-то любитель называется Unicode, так как-то в мире реализованного, после изобретения компьютеров, что есть больше, чем хорошо 256 символов в мире что мы могли бы представить, особенно, когда вы приведете Азиатских языков и других символик что нужно больше выразительности, чем вы может поместиться в самой ранней версии этот код, который называется 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. Но на самом деле нет, если я иду, целью которых есть куча ресурсов в Интернете, например, 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 Вилли. И это только сказать, эти гораздо более крупные магнитные частицы чем на самом деле на жестком диске, и гораздо меньше магнитных частиц. Но давайте на самом деле увидеть затем, если у вас есть крошечные магнитные частицы в жесткий диск, как вы можете на самом деле использовать их для представления данных. [ПРОИГРЫВАНИЕ ВИДЕО] -The Жесткий диск, где ваш компьютер хранит большую часть своих постоянных данных. Чтобы сделать это, данные путешествует из ОЗУ по с программными сигналами, которые говорят жесткий диск, как хранить эти данные. Схемы жестких дисков перевести те сигналы в колебания напряжения. Это, в свою очередь, контроль жесткого диска перемещение parts-- некоторые из немногих движущихся части оставили в современном компьютере. Некоторые из сигналов управления двигателем, который вращается пластин с металлическим покрытием. Ваши данные на самом деле хранящиеся на этих пластинах. Другие сигналы перемещения головок чтения / записи для чтения или записи данных на пластинах. Этот механизм настолько точен, что человеческие волосы не могли даже проходят между головками и спиннинг пластин. Тем не менее, все это работает на потрясающих скоростях. [КОНЕЦ ВОСП] И вы можете видеть на задний конец видео, там, как правило, несколько пластин. И так, что чтение головы не просто читать сверху. Это вроде как три или или еще четыре головки чтения этот шаг, как это, считывания данных одновременно. Таким образом, есть много сложность и вид времени что участвует в жестком диске. И дело крутится действительно штопать быстро, так что есть много сложности. Но давайте увеличивать немного глубже и увидеть, где эти магнитные частицы и как мы получаем на них. [ПРОИГРЫВАНИЕ ВИДЕО] Взгляд -Давайте на то, что мы только что видел в замедленном движении. Когда краткий пульс электричества отправляется головки чтения / записи, он переворачивается на маленьком электромагнитном за доли секунды. Магнит создает поле, которое изменяет полярность крошечное, крошечное часть частиц металла которые покрывают поверхность каждой пластины в. Шаблон серии этих крошечных кайфом области на диске представляет собой один бит данных в двоичная система счисления используется компьютерами. Теперь, если ток посылается один путь через головку чтения / записи, площадь поляризован в одном направлении. Если ток посылается в в противоположном направлении, поляризация восстанавливается. Как получить данные с жесткого диска? Просто обратный процесс. Так что частицы на диск, получить ток в головке чтения / записи движения. Соединенный миллионы эти намагниченные сегменты, и у вас есть файл. Теперь, куски одного файла может быть разбросаны по всему тарелках кластеров диска, вроде как беспорядок документов на вашем столе. Таким образом, специальный дополнительный файл сохраняет трек, где все. Разве вы не хотели бы иметь что-то вроде того? [КОНЕЦ ВОСП] Таким образом, будучи упоминается там, пожалуй, что тема со вчерашнего дня от удаления. При удалении файл, вчера мы говорили что компьютер на самом деле делает что, когда вы что-то перетащить в корзины или мусорное ведро? Он просто забывает. Но 0 и 1-х, магнитные частицы которые выглядят как красный и синий вещи здесь, или моя рука здесь, все еще есть на жестком диске. И поэтому существует software-- Нортон Утилиты и Yesteryear и другие более современные software--, что просто будет сканировать весь жесткий диск ищет во всех этих 0 и 1-х, потому что Оказывается, что большинство файлов formats-- Текстовые документы, файлы Excel, изображения, видео files-- все имеют определенное узоры, которые являются распространенными среди них. Каждый видео файл может быть другого видео, но первые несколько биты обычно одинаковы. Или последние несколько битов как правило, то же самое. И поэтому с большой долей вероятности, вы можете посмотреть на эти модели. И даже если файл был забыт, Вы можете сказать, с высокой вероятностью, но это выглядит как документ Word, позволяет восстановить его и снимите забыть, если вы будете. И вот как вы можете восстановить данные, которые либо были случайно удален или удален или намеренно удален для любых целей. В противоположность этому, безопасное удаление делает что в контексте картины, как это? Точно, делает их все случайное. Так что это своего рода перемещает некоторые из их вниз, некоторые из них вверх, оставляет некоторые из них без изменений, а как правило, делает случайный шум из него, или просто, может быть, делает все Them 0 'или все из них 1-х. И это тоже может вообще скраб ваши данные прочь. Так давайте теперь вернемся к вопросу вычислительного мышления, в результате чего мы имеем формулу входов. И алгоритмы дает вы в конечном итоге выводит. Сейчас мы сосредоточены на входах и выходы, потому что теперь я претензии у нас есть способ представляющие входы и выходы. Мы просто будем использовать бинарный файл. И независимо от того, что мы хочу представить сегодня, будь то номер или письмо или тысячи их в телефонной книге или изображений или видео, в конце дня, все это 0 и 1.. И я утверждаю, что, даже если это это супер просто мир только с 0-х годов и 1-х, мы можем построить себя вверх. И мы уже видели один пример что с письмами до сих пор. Так что давайте сосредоточимся теперь в этом средний компонент, алгоритм. И давайте вернемся к этому вопросу Пример Майк Смит. Так что в этой телефонной книге, которая по общему признанию, мы не используем так много больше, есть проблема, которую нужно решить. Мы хотим, чтобы найти кого-то, как Майк Смит. А что я мог бы сделать, чтобы найти Майк? Ну, я мог бы просто открыть этот Книга, начните с первой страницы, и понимаю, о, я в секции А. Майк не там. Мне нужен раздел S для Смита. Так просто держать поворот на одну страницу за один раз. Позвольте мне делать вид, что все это белых страниц, а не желтые страницы, потому что мы не собираемся, чтобы найти Майк в желтых страницах в любом случае. Но я на белых страницах. А теперь, я нахожусь в разделе B. Я до сих пор не нашел его. Так что я продолжаю поворачивая одну страницу за один раз. Это алгоритм. Это набор инструкций для решения какой-то проблемы. Другими словами, обратите внимание на страница, если Майк не на нем, повернуть страницу, и повторы Снова и снова и снова, в идеале, глядя вниз, как вы делаете это. Так что этот алгоритм, этот процесс, правильно? Сожалею. Нет, я слышу некоторые NOS. Хорошо, но is-- да, это, конечно, утомительно. Мол, мы будем здесь весь день, если я продолжайте искать Майка на этой скорости. Но позвольте мне утверждать, что это правильно. Это глупо, но это правильно. В конце концов, пока она может принять, я найду Майк, если он там и я обратить внимание. И я в конце концов достичь своей страницы. И если я получаю слишком далеко, если Я получаю в раздел T, то я могу немного оптимизировать и просто сказать, гм, все сделано. Я даже не нужно тратить Время идти к Заболоцкого. Но это очень линейный подход, если вы будет, очень вид слева-направо подход, прямая линия. И его правильно, но медленно. Так что я помню из начальной школы, сортировать из оптимизации от первого грейдера, где я научился не рассчитывать единицами, но по twos-- так 2, 4, 6. Это А, намного сложнее делать, но в теории, это faster-- 8, 10, 12, 14, и так далее. Как насчет этого алгоритма? Является ли это более эффективным? Является ли это быстрее? АУДИТОРИЯ: Это эффективно. DAVID Маланом: Да, так что это def-- это буквально в два раза быстрее, если предположить, я не получают подставляли с моими пальцами. Это в два раза быстрее, потому что Я превращаюсь через два страниц сразу вместо одного, но это потенциально правильно, потому что, почему? АУДИТОРИЯ: Вы пропуская некоторые из них. DAVID Маланом: Верно, что, если Майк происходит быть sandwiched-- может быть, когда я позже в телефонной книге, Майк, случается, зажаты между этими двумя страницами, и я просто слепо пропустить его. Таким образом, нам нужно немного исправить там. После того, как я попал в раздел T, I не могу просто с уверенностью сказать, мы не нашли Майка Смита. Я, вероятно, придется загнуть. Или в самом деле, когда я достигаю кого-то названный S-N, вместо С-М для Смита, немедленно, я мог бы удвоить назад, потому что, возможно, он был на предыдущей странице. Но у меня нет загнуть далеко. В теории, если я делаю это в нужное время время, я просто вернуться одну страницу. Так что это добавление только один дополнительный шаг. Так что я пошел в два раза быстрее, но это стоило мне одну дополнительную страницу. Но что чувствует, как чистая победа. Но это не так, как большинство людей в Этот номер будет решить эту проблему. Что бы типичный человек, может быть, Несколько лет назад сделать, чтобы найти Майка Смита? Да, не нашли Майка. Что я делаю? Так что немного ближе, но я знаю--, что правда о телефонной книге? АУДИТОРИЯ: Это последовательный. DAVID Маланом: Это последовательный. Это алфавитный. И поэтому, если я нахожусь в разделе M, Майк явно вправо, Я могу буквально разорвать проблема в half-- как правило, легче, чем that-- слезу проблема пополам и выбросить, так что теперь, у меня есть проблема, что это уже не 1000 pages--, что было трудно, потому что я думаю, что я на самом деле разорвала телефонная книга это не time-- 1000 страниц, но 500. Таким образом, проблема буквально вдвое меньше. И это довольно убедительным, потому что с моими предыдущими алгоритмами, версия 1 и 2, я только что делает проблему на одной странице, меньшие две страницы меньшие вовремя. В то время как сейчас, я сделал это 500 страницы меньше, все сразу. ОК, так что теперь, Карим предлагает что я иду в правую половину. Так что я собираюсь идти примерно к середине, дать или принять. И если бы я сделал это математически, Я мог бы пойти прямо к центру. А теперь, я понимаю, о, Я нахожусь в секции T. Я на самом деле слишком далеко. Но я могу, опять же, рвать Проблема пополам, выбросить. И мои байты не столь большой. Это только, что, 256 страниц или 250 страниц, давать или принимать прямо сейчас. Но это все еще намного больше чем на одной странице или двух страниц. И вот теперь, я иду примерно до середины. О, я не пошел достаточно далеко сейчас достаточно. Поэтому я повторяю, повторяю, повторяю, Повторяю, пока я надеюсь, осталось только с одной страницы. Так что предлагает вопрос, если я началось примерно с 1000 страниц, сколько шагов это брало меня с версией 1 моего алгоритма? Ну, если Майк находится в S раздел, в худшем случае, это довольно близко к конец алфавита. Так что, если телефонная книга имеет 1000 страниц, Я найду Майка в пределах 1000 страниц, дай или возьми. Может быть, это как 800 или около того, но это довольно близко к 1,000. Принимая во внимание, во втором Алгоритм, сколько страница оказывается максимально может я требует, чтобы найти Майка Смита? Там в 1000 страниц, но я делает их два одновременно. Правильно, так как максимум 500ish, потому что если я иду через всю телефонную книгу, в какой момент я могу остановиться. Но я могу сбрить несколько по просто остановка на участке Т. Но это в худшем случае 500 страниц. Так что, сколько раз я могу разделить 1,00o страницах телефонной книги в половине снова и снова и again-- от 1000 до 500 до 250 до 125? Как долго, прежде чем я попал на одну страницу? Да, это около 10. В зависимости от закругления и такие, это около 10 всего страниц должны быть включены или телефонные книги должны быть разорваны. Так что это довольно мощный. Мы начали с проблемой в 1000 страниц во всех трех этих историй. Но в первом алгоритме, его взял меня, худший случай, 1000 стр Оказывается, чтобы найти Майк. Второй алгоритм, 500 страницы, чтобы найти Майк. Третий алгоритм, 10 страниц, чтобы найти Майк. И это еще больше мощный, когда вы думаете о своего рода противоположного сценария. Предположим, что в телефонной компании следующей год, может быть, объединяет два города вместе, и телефонная книга внезапно Грубый, вместо этого, что, так 2000 страниц вместо 1000. Ну, мой первый алгоритм ищет Майк Смит в телефонной книге 2000 страниц, худший случай, он собирается принять сколько поворотов страницы в следующем году? Телефонная книга составляет 2000 страниц, so-- хорошо, а не еще один. Если телефонная книга в два раза толще в первый алгоритм, первый алгоритм, 2000, не так ли? В худшем случае, Майк действительно Ближе к концу книги, так что 2000 страниц по очереди. Второй алгоритм идя двоек, как и 1000 страниц. Но как в моей трети и самый последний алгоритм? Если телефонная компания удваивает количество страниц от 1000 до 2000, сколько еще раз нужно Я разрываю что книга пополам, чтобы найти Майк? ЗРИТЕЛИ: Только один. DAVID Маланом: Только еще один, потому что с одной страницы слеза, Я могу буквально разделить и победить, если вы будете, что проблема в половине взятия массивный укус из него. И таким образом это является примером коэффициент полезного действия и, возможно, алгоритм с которыми все мы своего рода интуитивно знакомы. Но это так же, как правильно как мои другие алгоритмы с этим подстройке для Второй алгоритм, но это гораздо более эффективным. И в самом деле, что компьютер ученый, или в свою очередь, программист, обычно делают при написании код попытаться выяснить, все в порядке, я не хочу, чтобы мои программа просто, чтобы быть правильным, Я также хочу, чтобы быть эффективным и решать проблемы хорошо. Представьте себе, в реальном мире сегодня, как Google индексы, поиски как миллиарды страниц, представьте себе, если они используется первый алгоритм, чтобы найти кошек среди миллиард pages-- глядя на первая страница в их базе данных, второй, третий, просто глядя для кошки, ищет кота. Это довольно штопать замедлить казалось бы. Вместо этого они могли бы использовать что-то называемый бинарный поиск, который не coincidence-- би означает два, мы держать что-то разделив на 2, в half-- они могли бы использовать бинарный поиск и, возможно, найти кошек еще быстрее, или то, что вы ищете. И, честно говоря, есть даже более причудливые алгоритмы что сделать гораздо больше, чем просто разделяя вещи пополам для того, чтобы быстро находить нужную информацию. И мы будем говорить немного о тех, кто после обеда сегодня. Итак, позвольте мне просто попытаться представить это. Нам не нужно вдаваться в любые математические или реальные цифры. Мы можем говорить об этом абстрактно. Но позвольте мне предложить, если вы были с обсуждения в настоящее время с инженерами предлагая этот алгоритм и вы пытаетесь сделать рассчитанное решение, потому что, может быть, инженер говорит вам, вы знаю, что я могу реализовать линейный поиск в как две минуты. Это так просто. Двоичный поиск не то, что фантазии, но она собирается взять меня, как 10 минут, так в 5 раз до тех пор. Там в торговой здесь, даже с точки зрения решения, что программное обеспечение для записи. Вы пишете более простой алгоритм, который будет просто вас две минуты? Или вы проводите больше времени, 10 минут, написание охотницы алгоритм? Как вы решаете, что такой вопрос? Или вы могли бы сделать его немного более реальным. Я говорю своему боссу, что собирается взять я ни за одну неделю или 10 недель для реализации программное обеспечение таким образом, как вы решаете, какие алгоритм зеленый свет? Карим? ЗРИТЕЛИ: Зрители, я думаю. DAVID Маланом: Зрители. Что вы имеете в виду под аудиторией? ЗРИТЕЛИ: Если это происходит которые будут использоваться пользователями которые [неразборчиво] пользователями [неразборчиво]. Но если это что-то вы просто делает для себя чтобы облегчить задачу, [Неразборчиво] быстрее. DAVID Маланом: Да, это быстро и грязный это хороший способ, чтобы описать это. На самом деле, если вы описывая большую часть моего времени в аспирантуре, в результате чего часто времена, Я написал плохой код сознательно so-- по крайней мере, это то, как я рационализировать it-- сознательно так, потому что даже если я пишу код что было относительно медленным, чтобы выполнить, Я был в состоянии написать сам код довольно быстро, расходы всего в нескольких минутах или часов не дней. И оказалось, я иногда нужно спать. Так что даже если мой код требуется 8 часов для работы, так что это нормально, Я буду просто пойти спать, пока он работает. Так что в то время, я думал, что это было очень умный, хотя я по-видимому, работал через мой кандидат очень медленно. Но обратное, что является что, если бы я писал программное обеспечение для других людей, которые имела большее значение, чем у меня, ну, имея их ждать 8 часов получить обратно свои результаты поиска не все, что убедительными. И поэтому тратить больше времени фронт, чтобы написать программное обеспечение что является более эффективным, более как нашего третьего алгоритма, вероятно, приносит пользу пользователям в течение долгого времени. Так что это действительно зависит от более время, как эти затраты складываются. Если вы собираетесь писать программное обеспечение, чтобы использовать его один раз, вероятно, могли бы также сделать быстрый и грязный, как они говорят. Просто выбросить его вместе. Это код, который загоняют вы, это так плохо, но она выполняет свою работу правильно, несмотря на то, что это не эффективно. С другой стороны, вы проводите больше времени на что-то, получить его в самый раз. А потом амортизируется в течение долгого времени, что первоначальные затраты времени наверное стоит, если вы держите оптимизации для общего случая. И в самом деле, это тема программирование, информатика или более как правило, пытается оптимизировать не для необычного случая но общие case-- какая операция произойдет снова и снова? Если вы собираетесь иметь миллиарды пользователей поиска на вашем сайте, Вы, вероятно, следует провести дополнительные недель фронт писать лучшее программное обеспечение, так что все ваши пользователи получают выгоду. Теперь давайте попробуем захватить это немного изобразительно, но не так много, численно. Так вот как раз старая школа диаграмма. И позвольте мне сказать, что это время. И это не имеет значения что-- на самом деле, нет, не время. Давайте положим, что на другой оси. Допустим, что это время, и это размер проблемы. И ученый может позвонить в целом это просто п. п походит наш идти к переменной, где п представляет собой число, п число, и это количество любых входов у вас есть. Так что в этом случае п количество страниц. Так что это может быть 1000 в случай мы только что сказали. Так что время может быть любая единица измерения. Может быть, это второе. Может быть, это дни. Может быть, это как поворотов страницы. Не имеет значения. Что бы вы хотели рассчитывать на, что будет время или стоит что то же самое. Так что с самого первого Алгоритм, если я, например, имел телефонную книгу на 1000 страниц, Я собираюсь нарисовать точку там, потому что, если это 1000 страниц, он взял примерно 1000 поворотов страницы, дать или принять. А потом, если бы я был 2000 страниц телефонной книги, и я собираюсь нарисовать вторую точка здесь, потому что на 2000 страниц, это как 2000 секунд или поворотов страницы или любой другой. И вот, когда я уже говорил ранее, это вид линейной зависимости, что было преднамеренным, потому что я хотел позже on-- право now--, чтобы нарисовать линию. Это своего рода прямой линия отношения. Склон 1/1, если вы будете. В то же время, второй алгоритм сказал, что если у вас есть 1000 страниц и вы использовали второй алгоритм, где я насчитал на 2-х, поворачиваясь две страницы в то время, я должен рисовать точка выше или ниже моей исходной точкой? ЗРИТЕЛИ: Ниже. DAVID Маланом: Ниже, потому что, как мы видели, это занимает меньше времени, в два раза меньше времени. Таким образом, точка должна быть наполовину столь же высоко, как и другие. И та же сделка здесь, это точка следует, вероятно, примерно там. И вот мой второй алгоритм, так же, имеет линейную зависимость со временем. И мы можем сделать это как таковой. Так что теперь, третий и последний Алгоритм немного сложнее сделать. Но интуитивно, если у меня 1000 страницы с моего третьего алгоритма, он должен принять меня только как 10 шагов. И если у меня есть 2000 страниц с моим третьим алгоритмом, он должен принять меня не 10 шаги, но 11, только еще один. Таким образом, мы едва будем видеть это. И получается, если Я увеличить на это, я собирается преувеличивать для эффекта, форма этой линии, в конечном счете, не является прямой line-- потому что, в самом деле, если бы это было, это будет выглядеть как others-- это на самом деле изогнутые линии что, если мы приближать, собирается смотреть гораздо больше, как это. It-- хорошо, хорошо, игнорировать эту часть. Это было мое перо собирается угла. Это изогнутая линия, которая всегда растет, всегда, всегда, всегда растет, но только чуть-чуть. И так в течение долгого времени, у вас есть Отношения, которые больше похоже на это. Это выглядит почти прямо. Но это очень медленно растет. Но для почти всех точек вдоль ваша ось х, горизонтальная ось, это ниже, чем те, другие линии. Так что это может быть отношения п, причем если у вас есть п страниц, принимает вас н секунд. Это может быть отношение N / 2. У вас есть п страниц, он принимает Вы п / 2 секунды, вдвое меньше, чем. И это логарифмическая отношения, которые если вспомнить, логарифм 2 из п захватами такой рост, так сказать. Так что это своего рода святой Грааль среди трех из них здесь, потому что это просто так гораздо больше эффективный, но, возможно, более сложный реализовать. Любые вопросы? Ну позвольте мне сделать это, пусть мне открыть текстовое окно только так мы можем попытаться формализовать что-то здесь. Итак, позвольте мне идти вперед сейчас и реализовать этот алгоритм для нахождения Майка Смита в коде, если вы будете, псевдокод код. Я не собираюсь использовать Java или C ++. Я просто собираюсь использовать своего рода Английский-подобный синтаксис, который мы как правило, вызывать код псевдокода. Вот, у меня есть пустое окно. И я шаг 1 очень говоря Первый алгоритм подобрать телефонную книгу. Шаг 2 открыта книга для первой страницы. Шаг 3 будет смотреть на страница для Майка Смита. Если на странице, вызовите Майк. другой поворот страницы и перейдите к шагу 3. Готово, скажем. И поэтому это не совсем совершенна, который мы увидим в минуту. Но давайте рассмотрим, что Понятия я представил здесь. Так шаги 1 и 2 и 3 довольно много глаголов. Они заявления, actions-- сделать это. И так в программировании язык, мы, как правило, называть их заявления или функции или процедуры, называть их любое количество вещей. Но они просто actions-- сделать это. Шаг 4 принципиально отличается, потому что это своего рода задает вопрос. Это говорит, что мы своего рода из на развилке дорог. Если Майк на странице, вызовите его, так что повернуть налево, если вы будете. А если нет, то вернуться к некоторым другой page-- или, скорее, извините, вернуться к какой-либо другой шаг, который индуцирует некоторый вид циклов, в. И мы делаем это снова и снова и снова. И на самом деле, вы знаете, что? Да. иначе, если в конце книги остановки. Так что нам нужно вид третьего состояние, потому что вы не может держать перевернуть страницу объявление тошноты, потому что в конце концов, я буду попал в конце книги. И ошибка в программе может быть не ожидая такого сценария. А потом я просто понял, ой, подождите минуту, мне нужен третий сценарий. Если я из страниц, я должны действительно просто остановить. В противном случае, это не определено. Что произойдет, если я держу говоря перевернуть страницу и вернуться, это когда компьютеры заморозить или аварии, когда вы нажмете некоторые непредвиденные ситуации, как это. Теперь, что касается Mike третий algorithm-- Смита возьмите телефонную книгу, открытая книга для first-- к нет, не первая страница на этот раз, к middle-- ой, ну, что бы быть второй алгоритм. Давайте просто пропустить третий. ЗРИТЕЛИ: Ой, мне очень жаль. DAVID Маланом: Это нормально. Давайте просто перейти к third-- открытым к середине и теперь ищет Майк Смит. если на странице, вызовите Майк. И тогда то, что мы хотим сказать? еще что? Мы можем выразить это в любом числе путей. Там нет правильного ответа. Хорошо, если не раз, но нам нужно be-- ОК, мы хотим разделить на две части, но мы хотим, чтобы пойти налево или идти прямо? Как мы выражаем это понятие? Ну, а в случае Майка, да, это справедливо. Но хорошо, так что это на самом деле хорошая точка. Хорошо. Мы будем продолжать идти с этой логикой. Так-- ЗРИТЕЛИ: Менее половины. DAVID Маланом: Да. Так что иначе, если страница, мы скажем, меньше чем Смит, слева от Смита, then-- давайте посмотрим, является это будет усложнять? иначе, если страница предшествует Смит, слезу пополам, выбросить какую половину? АУДИТОРИЯ: Я думал, это было [неразборчиво]. DAVID Маланом: Я слышу, как ответы. ЗРИТЕЛИ: слева. DAVID Маланом: OK, бросить прочь левая половина, а Lakisa сказал ранее, левый половина, то я как бы хочу просто идти я иду, целью которых вправо. Или что то же самое, и я сделал немного немного беспорядок начала здесь, Я хочу эффективно перейдите к шагу 2 снова, где открыт для middle-- или open-- да, давайте просто скажем, страницы в середине. И это фиксирует это. Это уже не книга. Это всего лишь половина книги, поэтому открытые страницы в середине. else-- были почти там. Шаг 6, иначе, если страница приходит после того, как Смит, разорвать пополам, выбросить правую половину, затем перейдите к шагу 2. еще бросить курить, четвертый сценарий, если у нас нет страниц не осталось, чтобы повернуть. Таким образом, мы могли бы очистить это. И мы должны очистить это. Это очень псевдокод код, если вы будет, описание очень высокий уровень. Но это, как правило захватить эту идею. И, опять же, в этом сценарии, мы есть понятие состояния, ветвь, развилка, что делает decision--, если это, идти по этому пути, иначе, если, идти по этому пути, иначе, если, идти по этому пути. И это очень распространенная методика программирования чтобы решить, в каком направлении идти, так сказать. И у нас также есть какой-то пробегаем структуры, где что мы делаем что-то снова и снова. Теперь, оказывается, гораздо как в этом примере, быть супер точным важно. Но мы также видели что-то что мы продолжать называть абстракции. Что это значит, чтобы поднять телефонную книгу? Мы только отчасти принимая как само собой разумеющееся в этой комнате что это имеет некоторое смысловое значение. Все мы только отчасти знаем, о, ну, поднимите телефонную книгу. Что это на самом деле означает? Ну, это на самом деле означает продлить руки, наклониться, расширьте пальцы, зажать книгу между пальцами, встать, тянуть руку к вам. И мы могли бы быть на самом деле педантичным об этом, на самом деле быть супер точным относительно того, что я делаю. Но все эти шаги коллективно что это значит, чтобы поднять телефонную книгу. И вот раньше, когда я сказал, каждый из этих первых двух утверждений можно рассматривать как продолжить или функцию, на самом деле она представляет собой то, что мы продолжают называть абстракции. Это походит на высокий уровень концептуальной Описание проблемы, которая на самом деле включает в себя довольно много шагов. И вот это тоже является повторяющиеся темы в программировании, в результате чего я мог бы написать программу используя синтаксис как this-- pick_up_phone_book (). А потом синтаксически, я собирается украсть что-то от большинства языков программирования. Теперь, шаг 1 выглядит даже больше как функции, как программист назвал бы это. Похоже, что кто-то код дал имя и дал мне использовать somehow-- в других словами, что линия я выделил представляет функциональные возможности, которые, возможно, Я даже не реализовать себя. Кто-то старше, мудрее я уже разобрался как вы выражаете понятие собирания телефонную книгу. И это как пять шагов, которые я просто отбарабанила, с верхней части моей головы. Но он или она уже реализована это, дал те несколько шагов имя, pick_up_phone_book. И скобками только то, что большинство программистов делать в конце заявлений, как это. Теперь я могу стоять на его или ее плечи и никогда, думать о том, что это значит чтобы поднять телефонную книгу. Я могу просто сказать, возьмите телефонную книгу. И это именно то, что все мы люди делали здесь. Когда мы были, вероятно, 1 летний, 2-х лет, кто-то должен научить нас, что это имел в виду, чтобы поднять телефонную книгу. И с тех пор, мы абстрагируемся от очень неинтересные механические шаги. И мы просто иметь интуитивное понимание что это значит возьмите телефонную книгу. И вы можете экстраполировать прямо сейчас к более сложным things-- построить здание. Мол, для некоторых людей, что на самом деле имеет смысл. Для подрядчиков, архитекторов, что имеет какое-то значение. И они будут знать, что делать, если Я сказал, иди построить здание. Но большинство из нас в комнате не мог иметь дело с этим уровнем абстракции. Вы должны сказать нам как пойти получить лопату и пойти получить бетон и гвоздь куски дерева вместе и все остальное участвует в строительстве здания. И это потому, что мы не имеем все же был запрограммирован, чтобы понять, что значит построить здание. У нас нет этой абстракции. У нас нет этой функциональности. И так, что вы будете видеть в языки программирования, в общем, особенно более современные языки, как Java, PHP, Ruby и Python, они гораздо более зрелым чем более старых языков, как С и С ++, и все же другие. И поэтому они приходят с более Функциональность встраивается. Больше код был написан люди в прошлом что теперь мы можем назвать или призвать или использовать, так как я намекал при этом с линии маршрута здесь. И поэтому, даже если мы не говорим о языках программирования самих по себе, просто псевдокод код, все из идеи все еще в этой дискуссии. И получается, точность супер важно, как это абстракция. И давайте попробуем сообщить, что следующим образом. Я случайно мог бы испорчен это миганием слайд на экране преждевременно. Но позвольте мне попросить храброго добровольца, если вы не возражаете, подходя. Вы бы в передней части камеры, если вы в порядке с этим. кто хотел бы, чтобы придумать и дать инструкции для ваших коллег здесь? Просто должны прийти сюда и стоять здесь и сказать несколько слов. Виктория улыбается самый и избегая глаза больше всего. Вы были бы готовы прийти на вверх? ОК. И если все остальные на своих местах может вынуть кусок макулатуры, если вы будете. Подкладка бумага хорошо. Приходите таким образом. Или некоторые из бумаги, Вам дали вчера, просто любой чистый лист бумаги, если вы могли бы. И если у вас нет какой-либо, просто спросите своего соседа, если вы могли бы. Так что на данный момент, для В этом примере, Виктория будет играть роль программист, инженер, который необходимо запрограммировать вам все, как и компьютеры, чтобы сделать что-то. И мы посмотрим, какие предположения Вы решили сделать. Мы посмотрим, насколько точно она хочет быть. И если эта демонстрация идет педагогически хорошо, много ошибок будет сделано, что мы будем затем использовать что в качестве возможности для обсуждения. Но проблема для вас должен быть, чтобы избежать этих ошибок, быть хорошим программистом. И поэтому задача под рукой, если вы бы любил гулять здесь, находится в передней части Виктории на экране here-- и, надеюсь, никто из вас помните об этом, когда я мелькают на экране. И не оборачивайся вообще, потому что есть еще один экран в этой комнате что я могу выключить. Так что не оборачиваться. В передней части Виктория это тот же крик. И ее работа сейчас рассказать вам все на вашем листе бумаги, что рисовать. И мы увидим, основываясь на устные инструкции в одиночку, компьютерный код, если вы будете, насколько точны ваши рисунки are-- ваши реализаций. Имеет смысл? ЗРИТЕЛИ: Да. DAVID Маланом: OK, выполнить. ЗРИТЕЛИ: Нарисуйте квадрат. [СМЕХ] DAVID Маланом: И нет могут быть заданы вопросы. Можно только делать то, что вы сказали. Да, и если у вас есть современные горки открыть на вкладке, не смотрите на вкладке. ОК? ЗРИТЕЛИ: ОК, нарисуйте круг. Slope-- я могу сказать, наклон? DAVID Маланом: До вас. ЗРИТЕЛИ: Склон. И треугольник. DAVID Маланом: Хорошо. И остаться здесь на мгновение. И я собираюсь приехать вокруг всего минуту. И не нужно ставить свои имена на нем. Позвольте мне вокруг и собрать свои рисунки, если вы не возражаете, разрывая их. Вот то, что мы вернулись. Я буду проецировать его на экране. Я вижу, квадрат, круг, склон, и треугольник. Так что был один ответ там. И let's-- возгласы. Спасибо. Вот другой ассортимент, и один за ним. Так что все они, кажется, чтобы захватить дух. Спасибо. Там другая, и вот еще один. Интерпретация наклона является немного отличается, немного соблазнительная. И ближе, либо из-за замечательная специфика, с которой вы имеете описано, или, может быть, вы вроде видел его раньше, это действительно что Виктория была на самом деле с описанием. Но теперь, те из вас, кто не получить его совсем верно, давайте предложить некоторые возражения здесь. Так что Виктория сначала сказал нарисовать квадрат. И теперь, мы можем предположить, ради сегодняшнего дня что все знают как рисовать квадрат. Но это не совсем понятно, правда? Как еще вы могли бы рисуется квадрат, или где могут быть некоторые неясности здесь для компьютера? ЗРИТЕЛИ: Расположение и размер. DAVID Маланом: Местоположение, не так ли? Все вы имели бумагу какой-то форме, как правило, прямоугольниками, но немного различные размеры. Но вы, конечно, могли бы нарисованы, если вы хотите, огромный квадрат, может быть, крошечный квадрат. Может быть, это был повернут. Я не думаю, что мы увидели, что. Но это могло бы быть более алмазов как, но до сих пор, тем не менее, математически квадрат. Так что, возможно, было неоднозначным. Потом она сказала, нарисуйте круг. Некоторые из вас сделал сделать его рядом с он, который не является необоснованным, потому, что люди склонны думать, или читать справа налево в большинстве языков, поэтому не плохое предположение. Но этот круг может иметь был внутри квадрата, могло быть вокруг квадрат, мог бы быть в другом месте на листе, так что, возможно, неоднозначный. Наклон может быть, может быть, принимая самые свободы в устной форме с тем, что это значит. И некоторые из вас интерпретированы это как волнистая линия или прямая линия или тому подобное. А потом треугольник, тоже может иметь был ориентирован в любом числе путей. Короче говоря, даже с чем-то, что вы смотрите и вы как, ничего себе, так просто, ребенок может нарисовать, а не на самом деле, если вы не супер, супер убедительными и сказать компьютеру точно, что делать. Так что, если мы могли бы, если у вас есть другой лист бумаги, давайте попробуйте это еще раз. И я собираюсь дать Виктории один Другой пример на экране здесь. И опять же, не оборачивайся и не смотрите на слайдах. И я дам ей на мгновение, чтобы думать о том, как описать это. Не позволяйте им видеть страх в ваших глазах. [СМЕХ] И снова, на этот раз рычаги некоторые из этих еды на дом и попытаться получить почти всех по крайней мере, правильный ответ. АУДИТОРИЯ: Хорошо, возьмите кусок бумаги, посмотрите в середине этого куска бумаги. В середине этого куска бумаги, рисовать куб. [СМЕХ] DAVID Маланом: Что мы узнали? Мы были так близки. Хорошо, повторите, если вы могли бы, для всех. ЗРИТЕЛИ: В середине лист бумаги, нарисуйте объект, который выглядит как куб. DAVID Маланом: Хорошо, это все, что вы получите, чтобы работать с. Позвольте мне быть аналитическим и не столько критично, но сделать заявку что Виктория определенно кажется, думает в очень абстракциями высокого уровня, которые не является необоснованным. Потому что в противном случае, мы бы все быть довольно дисфункциональным, если мы должны были быть очень точным со всем, что мы делаем в мире. Но сказать, перейти к middle-- I думали, что мы были на такой хорошей трассе там, как перейти к самому центру страницы, а затем нарисуйте куб. Таким образом, она думает в абстракциях, потому что она по-прежнему просмотра что на экране, как на самом деле куб. Но есть очень много возможностей для интерпретации там. И в самом деле, есть так много другие способы, которыми Вы могли бы выразить что, что я предлагаю в минуту. Так что здесь у нас есть одно воплощение из picture-- whoops-- одного воплощение картины, так немного трехмерности к нему, что приятно. Вот еще одна, где у вас есть то же самое, хотя это своего рода открытый куб. Некоторые люди взяли его немного более плоским, двумерным. И это прекрасно. Так что, на самом деле в центр бумаги. Это тот, который я думаю, что вы будете как, потому что если мы идем сюда, это то, что она описывала. Так что теперь, позвольте мне предложить, как еще мы могли бы описать эту ситуацию. Назад в день, один из самых более распространенные способы научиться программированию должен был написать код, пишет линии инструкций, которая управляла немного черепаха на экране. Логотип и другие варианты этого было название языка. И черепаха жила в мире. Итак, пусть это прямоугольный пространство его мир. А вы бы начать с assuming-- I на самом деле не знаю, как рисовать черепаху, так что давайте делать это так. А потом у него снаряд а затем, возможно, некоторые ноги. Таким образом, вы могли бы иметь этот маленький символ на экране. И предмет этого язык программирования должен был заставить черепаху идти вверх, вниз, влево, вправо и положить перо вниз или забрать его пера вверх, так что он может на самом деле рисовать на экране в этом очень плоский прямоугольный мир. Так где я думал, что ты мог бы идти, и где вы должны рассмотреть дайвинг вниз мысленно при описании инструкции в более общем плане, Я бы утверждать, это положить ваши перо вниз в middle-- и мы избавиться от черепаха, потому что я не могу сохранить рисунок его очень хорошо. А теперь, как еще мог Я говорю рисовать куб? Ну, мы могли бы сказать что-то вроде ничьей диагональная линия на северо-восток, к примеру, или под углом 45 градусов вверх. И это, возможно, получили меня здесь. И я довольно далеко от куба. Но теперь, я мог бы сказать что-то как повернуть на 90 градусов влево и нарисовать линию равной длины к северо-западу. И я мог бы продолжить с аналогичными направлениями. И это не будет легко. И, честно говоря, мы, вероятно, был здесь в течение пяти минут. Но, возможно, мы получили бы, чтобы то, что, в конце концов, заканчивает тем, что куб, но мы нырнул внутри этой абстракции сделать это при такой низкой уровень, который вы не можете реально увидеть, что вы делаете, пока все вещь, на самом деле есть на странице. И так это общий принцип, опять же, programming-- этой идеи абстракции. Это так чудесно мощный, потому что снова, она просто сказала, рисовать куб, который все мы довольно много бы обращал внимания очень быстро. Мы бы просто понять, Хорошо, рисовать куб. Мы не могли бы знать ориентацию, таким образом, мы могли бы быть немного более точным, но мы можем представить себе, как правило или знаете, что такое куб. И это полезно, потому что если каждый раз, когда вы сел программистом в клавиатура для написания кода, если вы должны были думать в таких низкий уровень, никто из нас будет когда-нибудь что-нибудь сделать. И, конечно же, никто из нас не будет получать удовольствие от процесса написания кода. Было бы, как писал в 0 и 1-х, который откровенно не так давно люди были написания кода в 0 и 1-х. И мы очень быстро придумали это более высокий уровень languages-- C ++ и Java, и другие. Так давайте попробуем это еще раз просто переворачивать столы, так что все из нас имеют возможность подумать в довольно таким же образом. Можем ли мы получить еще один доброволец этот время, чтобы подойти к доске и рисовать, не читать? Да, ок. Бен, давай вверх. И, Бен, в этом случае, как только вы лицом к доске, не смотреть влево, не смотрите прямо. Только сделайте то, что ваш коллеги здесь сказать вам. А для всех остальных в комнаты, вы теперь программист. Он компьютер. И картина, которую я выбрал здесь Заранее это один здесь. Они просто-- они думают смешные шутки все. Так будет ли кто-то хотел бы добровольцем первую инструкцию или утверждение, что должно перо командного Бен? И мы сделаем это все вместе, может быть, одна команда от каждого человека. Прости? ЗРИТЕЛИ: Нарисуйте круг. DAVID Маланом: Нарисуйте круг это первое, что я услышал. ЗРИТЕЛИ: наверху. DAVID Маланом: наверху. Хорошо, мы можем позволить вам удалить, отменить. А теперь кто-то другой. Дэн, вы были бы удобными предлагая следующую инструкцию? АУДИТОРИЯ: Конечно, рисовать центр в нижней части круга, с small-- немного небольшое пространство от того, нарисовать прямую линию вниз до трех четверти пути вниз доски под небольшим углом к ​​левой стороне. DAVID Маланом: Хорошо. ЗРИТЕЛИ: небольшой угол. DAVID Маланом: Undo, Control-Z. ОК. Андрей, вы хотите предложить до следующей инструкции? АУДИТОРИЯ: Конечно. Из нижней части этой линии, дальнейшее незначительное angle-- whoops-- может быть около трети длины [неразборчиво], небольшой угол вниз и, как треть длины [неразборчиво]. Так что да, с этого момента, нарисовать линию на треть длины предыдущего линия дальше влево. DAVID Маланом: Это хорошо? Прямая линия, это нормально? Хорошо, Оливье, вы хотите предложить на следующий? ЗРИТЕЛИ: [неразборчиво] из нижней части круга, [неразборчиво]. Нарисуйте на правой стороне из [неразборчиво] сантиметров. [СМЕХ] DAVID Маланом: Я думаю, что вы собираетесь должны преобразовать это дюйма здесь. АУДИТОРИЯ: Стоп. [СМЕХ] DAVID Маланом: OK. [? Ара,?] Вы хотите предложить на следующий? ЗРИТЕЛИ: рисовать [неразборчиво] верхняя [неразборчиво] то же самое. [Неразборчиво] круг, привлечь к [Неразборчиво] и рисовать [неразборчиво]. DAVID Маланом: Хорошо, больше не отменить. Давайте сделаем еще одну или две команды. Крис, вы хотите предложить один? ЗРИТЕЛИ: На дне окружности, [неразборчиво] нарисовать линию, равную выносных вниз влево [неразборчиво]. DAVID Маланом: OK. Андрей? Мы did-- Karim? ЗРИТЕЛИ: Начиная с правой линии, конец левой линии, в нижней части, вы собираетесь идти прямо о такой же длины, как линии вы на, привлекая к правый [неразборчиво]. [Неразборчиво] градусов, так что [неразборчиво] градусов на правой стороне. DAVID Маланом: Хорошо. Давайте паузу. Не оборачивайся пока. Давайте паузу, и давайте попробовать еще одну попытку прежде чем открыть Бен что он рисовал. Можете ли вы перетасовать Бена right-- или на самом деле, нет, давайте просто дать вам другая доска, еще лучше. Так что бы кто-то сейчас нравится принять более подхода что Виктория приняла ранее, где мы говорим на более высоком уровне абстракции и всего предложения или два описания Бен что рисовать без попадая в сорняках, так сказать, на этом более низком уровне? Виктория. [СМЕХ] ЗРИТЕЛИ: Нарисуйте фигуру пешего человека. И его ноги и руки должны быть правая сторона. DAVID Маланом: Хорошо, это все, что вы получите. Отлично. Почему бы нам не открыть Бен, что он сделал. Так аплодисментами. Это было самое трудное, пожалуй. Так что даже если мы говорим в довольно глупые сроки о просто рисунок фотографии, надеюсь, вы может реально оценить степень выразительность, которые могут быть необходимы для того, чтобы сообщить компьютеру, что делать. И в самом деле, тот факт, что Бен был в состоянии сделать это так быстро является своего рода завещание с использованием язык, может быть, более высокий уровень версия английского языка, что позволяет ему просто использовать слова или услышать слова от Виктории, которые позволяют ему эти abstractions-- просто рисовать фигура ходить к right-- такого рода имеет некоторые смысловое значение для него этого не почти столь же очевидно, когда вы только говоря, положить ручку вниз, рисовать вправо, рисовать влево. И вот это тоже очень распространены в программировании. Это было бы сказать, что подобно очень низкий уровень языка, программирование в 0 и 1, если вы будете. И это было бы более высокий уровень Язык программирования в Java, или что-то типа того. Немного упрощением, но это своего рода как эмоциональный ощущение, что вы чувствуете, когда используя один вид вещь или другой. Немного разочарования здесь необходимостью для такой точности, но возможность чтобы быть немного свободнее с интерпретация здесь. Но, конечно, ошибки может возникнуть в результате. Если вы хотите на home-- мы не будет делать это одно в class-- но если вы хотите довести этот один дом, Я думал, что мы погрузимся в это. Так что если вы хотите играть в эту игра с другими значительными или дети или тому подобное, вы могли бы наслаждаться, что хорошо. Так что давайте идти вперед и смотреть на один последний вещь здесь для вычислительного мышления. И это подводит нас к Джону Оливер, а не для клипа Вы, возможно, видели прошлой ночью, но несколько недавних выпусков. Несколько месяцев назад, Volkswagen взял совсем немного зенитной по какой причине, если вы знаете? Что они получили неприятности из-за? Да, так что они emissions-- пытались бить выбросов Тесты по существу, имея их автомобили загрязняют окружающую среду меньше когда их автомобили испытывались и загрязняют окружающую среду более когда автомобили не были испытаны. И что все более и более интересным в мире, так как вы можете подразумеваемые от обсуждений like--, что it-- CarPlay, программное обеспечение от Apple для автомобилей а также тот факт, что многие из нас все больше и больше имеют сенсорные экраны в наших автомобилях, есть пугающее количество программного обеспечения в Народном автомобили сегодня, что откровенно открывает целую банку с червями, когда речь идет о безопасности и физической опасности. Но на сегодняшний день, давайте сосредоточиться только на то, что участие в написании программного обеспечения что могло бы манипуляциям систему. Для определения проблема, для тех, кто не знаком, давайте взглянем на Джона Оливера. А для тех, кто знаком с проблема, давайте посмотрим на него в увлекательной игровой линзы через Джон Оливер, а также. Итак, позвольте мне ударил играть на этом, я думаю, трехминутный введение. Черт возьми. [ПРОИГРЫВАНИЕ ВИДЕО] -Легковые автомобили-- DAVID Маланом: Очевидно, на YouTube, it's-- - --the умные персонажи Форсаж фильмы. На этой неделе, немецкий автопроизводитель Volkswagen оказался в середине скандала потенциально криминальные пропорции. -Volkswagen Готовится миллиарды штрафов, возможные уголовные обвинения для ее руководителей, а компания извиняется за фальсификацию 11 миллионов автомобилей в помочь ему победить испытания на выбросы. -Certain Дизельные модели были разработаны со сложным программным обеспечением, использовали информацию, в том числе положение рулевого колеса и транспортного средства Скорость, чтобы определить, что автомобиль был проходят испытания на выбросы. В соответствии с этим обстоятельством, двигатель приведет к сокращению выбросов токсичных веществ. Но машина была оснащена обойти что, когда он был гонят. Выбросы увеличились от 10 до 40 раза выше допустимых уровней EPA. -Wow, От 10 до 40 раз больше, чем EPA позволяет. Это самое худшее, Volkswagen когда-либо делал, что-то вы могли бы сказать, если вы никогда не слышали о Второй мировой войне. Но, возможно, самый верный признак того, как много хлопот Volkswagen находится, является то, что люди на самом сверху шагнули вниз. Генеральный директор подал в отставку в среду после того, как взбираются, чтобы сделать ремонтно-восстановительные работы, сказав, что он бесконечно жаль, что звучали великолепно, пока не получилось он был всего лишь 10% жаль но подстроил его рот чтобы искусственно завысить его sorriness. А между тем, Volkswagen в США главным было извинение его собственной. -Давайте Быть ясно говорит об этом, наша компания была нечестным. И в моих немецких слов, мы были полностью облажался. -Ага, Но полностью ввинчивается до не немецкие работы. И немецкий язык имеет много красивых фраз описывать ситуации, так же, как это, таких, как [Германская], что означает, грубо говоря, печаль, которая приходит от бизнеса, связанных лжи, или [НЕМЕЦКИЙ], который переводит а стыдить одни отца с участием облака бензина. Это красивый язык. Он просто отплывает язык. И, кстати, в то время как мужской извинение может звучать искренняя, стоит отметить, что он говорил на официальный запуск партия за 2016 год Volkswagen Passat, а это означает, что в ближайшее время после того, как говорил жаль, что он сказал это. -Спасибо Большое, что пришли. Насладитесь вечером. До следующего Ленни Кравиц. [МУЗЫКА] -Хорошо, OK, окончание вашего Извинение с до следующего Ленни Кравиц не кричать трезвый раскаяние. Он кричит, мы попросили Bon Jovi, и он сказал, что нет. Марка Volkswagen имеет были сильно повреждены. И, честно говоря, их новое объявление кампания точно не помогает. - [НЕМЕЦКИЙ], мы в Volkswagen хотел бы извиниться за обман вас наши транспортные средства. [КОНЕЦ ВОСП] DAVID Маланом: Так что это было окольный путь of-- sorry-- это был окольный путь представляя фундаментальную проблему в программном обеспечении, которое является то, что вам необходимо обнаружить определенные условия. И поэтому вопрос здесь под рукой это, как делает автомобиль потенциально, как это реализовано в программном обеспечении этими программистами, обнаружить, что это на самом деле проходит испытания? Таким образом, чтобы быть супер ясно, что они делали был, в средах, где программисты фигурный автомобиль был быть испытано, они каким-то образом сделал автомобиль выбрасывают меньше выбросов, меньше выбросы, тем меньше токсичных паров и тому подобное. Но когда это нормально вождение на дороге, было бы просто испускать столько загрязнение окружающей среды, как она хотела. Итак, как мы могли бы написать псевдокод для этого алгоритма? Как мы могли бы написать псевдокод для программного обеспечения, работающего в машине? Я имею в виду, в двух словах, он кипит вниз к чему-то вроде этого. если тестируется, излучают меньше. еще излучает больше. Но это немного Слишком высокий уровень, не так ли? Давайте попробуем нырнуть, как к чему это абстракция быть проверенными средствами. Другими словами, даже если вы ничего не знаете о машинах, какие вопросы вы могли бы попросить, чтобы определить, является ли вы испытывается, если вы автомобиль? Какие характеристики могут быть представить, если автомобиль проходит испытания? ЗРИТЕЛИ: Испытательное оборудование. DAVID Маланом: Испытательное оборудование. Так что, если испытательное оборудование рядом, а затем излучают меньше. Так что я мог себе представить, реализации что с какой-камер или обнаружение того, что вокруг вас. И позвольте мне предложить, что просто чувствует себя слишком сложно на самом деле есть дополнительная аппаратное обеспечение только для этой цели. ЗРИТЕЛИ: Если вы находитесь в парк, если ваш капот открыт. DAVID Маланом: В парке или капот открыт, так что это хорошо. ЗРИТЕЛИ: И машина работает. DAVID Маланом: Так что это немного более concrete-- и машина работает. Так что это было бы стечение несколько различных условий, если вы будете. Так что, если автомобиль находится в парке, и даже хотя это очень механическая вещь как правило, я мог представьте себе написание программного обеспечения, особенно потому, что есть часто свет там в эти дни, Я мог себе представить, чтобы там быть программное обеспечение, которое может запросить рычаг переключения или то, что нет, ты в парке, являются Вы в приводе, ты в обратном направлении. И я могу получить обратно ответить на это либо да не или нет к тем видам вопросов. И таким образом я мог бы также, вероятно, ответить вопрос, как, является открытым капотом. Может быть, есть какой-то датчик что либо дает мне обратно 1 или 0, истинным или ложным, капот открыт. А потом машина работает, я мог бы обнаружить что-то с помощью какого механизма? Мол, автомобиль работает, я может обнаружить, что он включен, я мог обнаружить каким-то образом что автомобиль движется? АУДИТОРИЯ: РПМ. DAVID Маланом: Да, так что есть всегда, что игла, которая говорит вам, сколько оборотов в минутные колеса испытывают. И таким образом я мог смотреть на это. И если это не 0, что, вероятно, означает, что автомобиль движется. Но мы должны быть немного там осторожно, because-- давайте упростить this-- если мы только что сказали, если машина работает, мы не хотим, чтобы просто выбрасывают меньше, мы хотим, если автомобиль работает и это проверяется. Таким образом, есть несколько других ингредиенты, которые люди предположили, что программное обеспечение делает, потому что отсутствующего фактического исходного кода, вы можете только своего рода выводим из физические эффекты автомобиля относительно того, что могло идти дальше под капот в программном обеспечении. Так что, если машина работает и, возможно, скажем, задние колеса не двигаются, может ли это быть показательно какой-то тест? Что я здесь намекаете? Да, может быть, это на один из этих роликовых вещей, где, как колеса поворачиваются в передней или в задней части, в зависимости от того, является ли это переднее колесо или задний привод колес, так что половина колес движутся, но Два других нет, что это странная ситуация в реальном мире. Если вы за рулем на дороги, что не должно произойти. Но если вы на складе на какой-то роликовой системы, что действительно может произойти. Я думаю, что люди также предложил, что, возможно, если автомобиль работает и рулевое управление Колесо не движется, что тоже может быть сигналом, потому что это разумно как не откладывая на дороге. Но даже тогда, человек, вероятно, перемещая его немного или, конечно, в течение нескольких секунд. Или ходе минута, шансы это не будет фиксироваться в точно такое же положение. Итак, другими словами, мы может взять вычитание, вы тестируется, и сломать эту функциональность в этих составных компонентов. И это действительно то, что Фольксваген инженеры как-то сделал. Они написали программное обеспечение сознательно обнаружить, если автомобиль проходит испытания, поэтому излучают меньше, остальное испускают обычным способом. И проблема здесь тоже, в том, что программное обеспечение не является то, что вы не можете реально увидеть, если у вас есть так называемый исходный код. Таким образом, есть два различных типа code-- по крайней мере, два различных типа кода в мире. Там что-то называется источник код, который не является в отличие от того мы писали, исходный код. Это исходный код, написанный на язык называется псевдокод, который только что-то на английском, как. Там нет официального определения этого. Но С и Java, C ++, те, все официальные языки, которые, когда вы пишете в них, что у вас есть представляет собой текстовый файл, содержащий исходный код. Но есть и что-то в мир называется машинный код. И машинный код, к сожалению, это только 0 и 1-х. Так машинный код, что машины понимают, конечно. Исходный код это то, что люди понимают. И вообще, но не всегда, есть программа что программист использует, который принимает источник код и превращает его в машинный код. И эта программа обычно называют компилятор. Таким образом, ваш вклад исходный код, ваш выход машинный код, и компилятор является частью программное обеспечение, которое делает этот процесс. Так что это на самом деле карты красиво наши входы, алгоритмы, выходы. Но это очень специфическое воплощение о том, что сказать, что, даже если у вас есть один из Фольксваген автомобилей, что виновны в этом, это не так, как вы можете просто открыть капот или открыть руководство пользователя или посмотреть в исходном коде, потому что к тому времени, он достигает вашего автомобиля в дороге, это уже было преобразуется в 0 и 1-х. И это очень трудно, но не невозможно, но очень трудно почерпнуть много всего от просто глядя на лежащий в основе 0 и 1-х. Таким образом, вы можете понять это, в конечном счете, если вы понимаете, как машина operates-- Intel inside--, если вы понимаете, архитектура Intel, но это очень много времени. И даже там, вы могли бы не быть в состоянии увидеть все что код может реально сделать. Есть вопросы по этому поводу или это Такой процесс в более общем плане? И на самом деле, мы можем связать эту дискуссию вчерашнего обсуждения Apple. Это тоже, почему ФБР не может просто пойти и посмотреть в телефон подозреваемого и найти строки кода, для например, что позволит код доступа или включить эту задержку 80 миллисекунд. Потому что к тому времени, это на iPhone стипендиата, это уже было преобразуется в 0 и 1-х. Что ж, давайте остановимся здесь для нашего смотреть на вычислительной мышления. Почему бы нам не взять 15-минутный перерыв. И когда мы вернемся, мы будем взглянуть на программирование само по себе и начать карту некоторые из этих концепций высокого уровня к фактическому, если игривый, язык программирования.