Привет. Меня зовут Ник Парланте, и это курс, в котором рассматриваются основные
свойства компьютеров. Как они работают, что они могут и не могут делать.
Он совершенно не требует наличия образования в сфере компьютеров и предназначен для всех.
Прежде, чем я начну, я бы хотел улучить минутку и поблагодарить Гугл за поддержку
моих начальных изысканий в этой теме, что в конечном итоге помогло подготовить этот курс.
Краткая информация о формате курса. Он состоит не только из видео. Для каждой видеолекции
есть своего рода письменный документ, который я здесь прокручиваю,
он идет параллельно с объяснениями, содержит диаграммы, примеры программ и прочее.
В любой момент вы можете переключаться между видео и документом, если
хотите перечитать объяснения или попробовать один из примеров и т.д.
Есть большая разница между тем, чтобы просто смотреть, как я что-то делаю, и затем попыткой сделать это самостоятельно.
Я бы посоветовал, во многих случаях, в конце лекции у нас будут
упражнения. Таким образом, перед тем, как делать их, вы можете решить,
готовы ли вы сразу перейти к упражнениям или хотели бы вернуться
к документу и попробовать некоторые из опытов самостоятельно, чтобы
закрепить знания? Вам стоит по меньшей мере знать, что он есть
для каждой из этих лекций. Я скажу, что основное уравнение для компьютера -
что компьютер равняется мощь плюс глупость. Он мощный в том плане, что компьютеры могут
выполнять миллиарды операций. Они работают непостижимо быстро. Но
операции глупы в том смысле, что операции, которые может выполнить компьютер,
очень простые, они полностью механические. В них не содержится ничего, что
вы могли бы описать как понимание человеком того, чем он занимается. Это таинственное
сочетание значительной мощи с механической глупостью.
Этот принцип проявится очень ясно, когда мы будем работать с этими маленькими
примерами программ, чтобы поиграть в компьютерный мир.
Сейчас я веду себя провокационно, вроде как высмеиваю компьютер - о, они такие глупые,
но, с другой стороны, мы видим что компьютеры чрезвычайно полезны.
В некотором смысле курс будет именно об этом. С одной стороны, посетить этот
забавный компьютерный мир - он механистичный, и затем связать его с
вещами вроде электронной почты, и аудио в формате МР3. С вещами, которые в реальном мире
очень полезны. Попытаться связать эти 2 мира и показать вам, как
работает компьютер, и как он вписывается в мир. Моя цель в том, чтобы, закончив этот курс,
вы понимали, как работают компьютеры, и как они вписываются в мир.
И в некотором смысле, чтобы вы не были запуганы компьютером. Чтобы вы не думали о нем как о
волшебном, невероятном ящике. Также у меня есть тайный план. В мире слишком мало
специалистов в компьютерной сфере. Существует масса проблем, для которых мы хотели бы найти
решения, но людей для того, чтобы написать нужные программы, не хватает.
Мой тайный план состоит в том, чтобы открыть вам глаза на мир компьютеров и то, как он работает,
некоторые из вас, возможно, обнаружат, что им было бы интересно в будущем заниматься
компьютерными науками. Итак, в первом приближении я намерен посмотреть на то,
как работает компьютер? его внутренности и правда приводятся в движение с помощью программ.
И немного позже мы рассмотрим это подробнее. Это будет только наш первый взгляд.
Здесь я сделал небольшой рисунок компьютера. И программа внутри компьютера
состоит из этих простых указаний. Одно из них может быть - сложить два числа,
ну, сосчитать, сколько будет 1 плюс 1, или проверить, что 2 меньше 10.
Что делает компьютер - с первого взгляда, он просто выполняет этот
перечень указаний. Каждое из них очень простое и компьютер просто шаг за шагом
выполняет весь список - хотя и делает это очень быстро.
Но каждое указание - очень механистическое. То есть я хочу сказать, что
я думаю, это ведет к естественному вопросу: хорошо, если компьютер
такой механистический, он просто выполняет указания, как же выходит, что
в мире существует так много полезных функций? Для этого случая я подготовил вот такую диаграмму.
С правой стороны я намерен представить некоторые полезные свойства. Например,
устранение эффекта красных глаз, или обмен сообщениями через интернет. И я скажу, что для этого обсуждения
ваш телефон, ваш цифровой фотоаппарат - это все - компьютеры. Так что справа
у меня эта полезная функция - устранение эффекта красных глаз. А слева -
компьютер, который просто выполняет эти свои простые
механистические инструкции. Итак, что же связывает эти 2 части? Ответ -
компьютерное программирование. Это человек,
программист, у которого сначала есть идея: о, нам бы нужно
устранить эффект красных глаз - это было бы очень полезно. И они используют свою креативность и
воображение, чтобы придумать, что бы такого полезного мог сделать
компьютер. Вслед за этим программисты структурируют проблему и
и разбирают ее на части - так, чтобы компьютер мог с ней справиться. Они отдают указания
и структурируют вещи таким образом, чтобы компьютер мог сделать вот эту
полезную штуку. Вот в чем состоит компьютерное программирование. Фактически всё,
что вы делаете со своей цифровой камерой, или мобильным телефоном, или
компьютером - за кулисами всего этого был человек, который сделал это возможным.
И мне очень нравится такое сочетание. В том смысле, что программист, человек,
привносит свою креативность и понимание мира, свои мысли о том, что было бы
полезно сделать - это его часть проблемы. А компьютер
привносит то, в чем он хорош. И я бы сказал, что компьютер хорош в том,
что в конечном счете он весьма недорогой. И компьютер способен выполнить все эти указания
очень, очень быстро, и в итоге у нас получается это отличное
сочетание. И в некотором роде именно поэтому в мире так много компьютеров
выполняющих так много полезных функций. Это говорит о том, что это хорошее партнерство
между человеком и компьютером. В каком-то смысле эта диаграмма - часть
краткого изложения всего этого курса. Мы посетим левую сторону, чтобы увидеть
как выглядит компьютерный мир. И взглянем на связь между
реальными функциями, которыми вы пользуетесь, чтобы понять как компьютер вписывается в
мир и выполняет все это. Во второй части этого раздела я планирую
начать делать маленькие примеры программ. И я должен отметить, что
это потребует немного терпения. Я намерен начать программировать. И наши
первые примеры программ будут очень простыми. Они не будут выдавать ничего
сверкающего. Я бы сказал, это будет немного похоже на кирпичики ЛЕГО. Каждый кусочек кода, который мы
выучим - это еще один кирпичик, и в конечном итоге мы будем способы собрать их
вместе и сделать что-то весьма изящное. Но в этих первых нескольких разделах
нам нужно с чего-то начать, и эти первые примеры - очень простые. Я прошу
вас быть терпеливыми и обещаю, что с этим материалом мы доберемся до чего-то весьма искусного.
И, собственно, здесь я немного забегаю вперед - на самом деле
после нескольких часов лекций мы начнем делать визуальные спецэффекты.
И мы обыграем известную, показанную здесь проблему обезьяны, луны и банана. Итак, это
просто небольшой анонс того, чем мы будем заниматься. А сегодня мы выполним
простые кусочки кода. Для этих упражнений по программированию мы будем использовать
язык программирования, который называется JavaScript. JavaScript - очень популярный язык.
Он работает в новых веб-браузерах, вот почему он так невероятно популярен. И вот почему он
отлично подходит для этого курса. Потому что мы работаем в веб-браузере,
а это значит, что наша программа будет легко работать. Мы будем использовать JavaScript плюс
некоторые расширения, которые я добавил только для этого курса. Это не будет выглядеть
в точности так, как профессиональный JavaScript. Мы будем работать с программными выражениями
которые в конечном счете достаточно короткие для того, чтобы понять, в чем суть, четко изложить материал,
который я хочу до вас донести и провести в некотором роде исследование компьютеров, но без того,
чтобы втягивать сюда еще кучу всего, что понадобилось бы для написания профессиональных программ.
Хорошо, вот мой первый пример программы. Каким образом программа будет у нас работать?
У нас есть эта небольшая прямоугольная область. И этот текст внутри вот здесь -
это программа. Еще у нас всегда есть кнопка выполнения здесь внизу. Когда я нажимаю
кнопку "выполнить", что происходит - компьютер идет сюда наверх и
выполняет эти строки. Итак, он будет, как мы сказали, он будет выполнять
каждую строчку. Он будет делать что тут сказано. В этом случае что нам нужно -
функция печати. Это просто слово "print". Каким образом работает функция печать.
Таким, что здесь есть слово "print", а затем левая скобка. А затем -
ряд вещей. Здесь я просто поставил число 6. И, в конечном итоге,
строка заканчивается правой скобкой и точкой с запятой. И что делает функция печати?
Она берет то, что написано между скобками, и печатает это.
Так что, если вы посмотрите сюда, с правой стороны, это
вывод после того, как я нажимаю кнопку "выполнить", То есть если я изменю это, например, и задам напечатать 42
и запущу это, то мы видим здесь 42. Это из первой строки печати, и когда
я скажу напечатать "1, 2" - то мы увидим здесь 1 и 2.
Вот таким образом это работает. Я говорил, что наши первые примеры не очень
показательны - и здесь это действительно так. Я могу попытаться и добавить
здесь еще несколько вещей. Я могу сказать ".47". Когда я выполню это, ок, теперь мы видим, что мы
получили 1 и 2 и .47. Также для того, чтобы показать, что эти строки
мы взяли один раз, я скопирую вот это, и затем я могу вставить несколько раз,
у меня получится много строк. Если я выполню это, теперь мы можем сказать, ладно,
знаете, у нас только что получилось повторение любого вывода.
Есть кое-что, на что я хочу обратить внимание. Это синтаксис этой программы.
Он вовсе не произвольный - напротив, он очень структурированный. Это так и должно быть
для того, чтобы компьютер его понял. И это и есть отражение внутренней природы
компьютера. Он неизменно механистичен, и язык,
который он способен понимать, тоже должен быть механистическим и четким.
Вначале это кажется немного странным - то, что вы просто можете начать и в этой пустой форме
просто написать что-то по-английски и компьютер это выполнит. Подумайте об этом
как о вашем первом уроке. И природе компьютеров. Или можете подумать
в том ключе, что в чужой монастырь со своим уставом не ходят. Я приглашаю вас
посетить мир компьютера. Мы собираемся немного поработать на языке
компьютеров. Вначале ощущения будут несколько странными. Но в действительности
это вовсе не сложно. Синтаксис - может быть, возможно - структура, но и это
достаточно просто. Итак, я бы предложил вам не пугаться этой
структурированной механистической особенности этого языка. Он позволит нам
сделать кое-что замечательное. Хорошо, это был мой первый пример, давайте попробуем второй.
В моем первом примере были просто цифры. В компьютерных программах есть также нечто,
называемое строкой. И вот первый пример строки. В кавычках -
строка это просто последовательность букв, и в программе она пишется между
двойных кавычек. Вот почему я так сделал. В функцию print можно вставлять цифры и выводить их
на печать, но оказывается, она может печатать и строки. Она интерпретирует строку
как последовательность букв и всего остального - она просто выводит их на печать
вот здесь. Вы можете изменить это. Я могу это поменять - она говорит "Hi", можно поменять это на
"Good day". В строке могут быть пробелы. И если я запущу это, то вот здесь
мы получим "good day". В компьютерной программе, строки и числа
встречаются очень, очень часто. Так что строка в компьютерной программе может использоваться
например для URL, который вы только что напечатали, или в текстовом процессоре - каждыйо
абзац, над которым вы работаете, может храниться как строка. То есть строка - это в основном
последовательность букв. В компьютере это очень распространенный тип данных.
Второе, что показывает этот пример кода - это вот эта первая строчка, называемая
комментарием, и в JavaScript комментарии начинаются с двух косых черточек,
и как он работает - начиная с двух косых черточек, все, что находится справа в этой строке,
компьютер игнорирует. Так что я могу пользоваться этим, чтобы написать какие-то пометки о - ну,
вот здесь у меня 2 строки. Какие-то небольшие заметки для меня самого или какую-то
информацию о коде. И когда я запускаю это, компьютер знает, что нужно это игнорировать,
потому что это просто комментарий. В некоторых из моих дальнейших примеров вы увидите
разбросанные комментарии - я делал пометки о том, что происходит.
Один пример, который я могу тут выполнить, немного хитрый. Я намерен вставить слово
print внутрь этой строки. И мы увидим, что он напечатает. Сейчас
во второй строке он печатал hello. Что произойдет, - слово print
внутри строки не воспринимается как команда для выполнения, в отличие от слова print снаружи -
там это функция, к которой обращается программа. Так что когда оно внутри двойных кавычек, как
здесь - это просто данные. Это различие внутри кода.
Порядок. В конце этого раздела у нас будет несколько упражнений,
в которых вы сможете написать кусочки кода, как я это делал. Как я ранее отмечал,
программа работает в системе с очень структурированным и ограниченным синтаксисом.
И это на самом деле очень общая ошибка - даже профессиональные программисты,
которые целыми днями пишут программы - когда они набирают какой-то код,
возможны небольшие синтаксические ошибки, которые появляются в коде - возможно, не хватает правой
скобки или есть опечатка в одном из слов. И эти синтаксические ошибки
очень просто исправить. Это значит, что когда вы первый раз нажимаете кнопку "выполнить",
очень часто обнаруживаются небольшие опечатки, которые нужно исправить.
И я хочу, чтобы вы это понимали. Эти маленькие ошибки не отражают какого-то глубокого
непонимания с вашей стороны или какого-то изъяна - это просто маленькие поверхностные ошибки,
которые постоянно случаются во время программирования. И профессиональные программисты все время
их допускают, и мы их просто исправляе - при этом даже не вспоминаем
о них больше. Так что я думаю, что когда люди впервые начинают программировать,
это может их немного расстроить - все эти маленькие
синтаксические ошибки - это выбивает их из колеи, хотя на самом деле все
делают такие ошибки - в этом абсолютно ничего такого нет. Чтобы помочь немного разрешить эту
проблему, я выполню несколько примеров, в которых.
Здесь я подготовлю несколько примеров, в которых у меня будут типичные маленькие синтаксические ошибки.
И я хочу показать вам, как выглядит ошибка когда вы нажимаете кнопку "выполнить". Хорошо?
Что произойдет - когда вы нажмете кнопку "выполнить", это не будет работать. У меня будет
маленькая ошибка. Я хочу показать вам процесс - есть ошибка,
и нужно исправить небольшую синтаксическую проблему, просто чтобы вы привыкли.
Когда вы в первый раз нажимаете кнопку "выполнить", очень часто случается
подобное. Давайте это сделаем. Итак, я нажимаю кнопку
"выполнить", и вместо выполнения и вывода на экран, я здесь
получаю маленькое сообщение об ошибке. Иногда такие сообщения
описывают, что произошло. Давайте прочитаем это первое. Здесь говорится,
ошибка, не определен P-r, PR , PRlnt is not defined. В чем здесь дело - в функции печати.
Вот это второе здесь, во второй линии - и в этом случае
оно не всегда сработает, но во многих случаях оно подсвечивает строку,
в которой есть проблема. Проблема здесь с опечаткой - здесь не print, а P R L N T
Если я заменю это на i, теперь оно работает. Эта маленькая программа
просто печатает а, 1 и В, 2 и С, 3, так что это просто маленький бессмысленный пример,
который я сделал. Конечно, я напечатал L потому что пытался найти букву, которая
выглядит как I. Вам придется внимательно смотреть,
здесь я был так себе как профессор. Хорошо, давайте попробуем другое.
Я нажму кнопку "выполнить" здесь. Оно говорит - ошибка, незаконченная строка, и
подсвечивает вторую строку. Я смотрю на вторую строку слева
направо. Вы видите 1, В, так что проблема здесь в том, что
это строка. Мы намеревались, чтобы это была строка B, но не хватает закрывающих кавычек.
Нужна пара кавычек - теперь это работает. Я попробую третий пример.
Давайте посмотрим - ошибка, не хватает правой скобки. Опять же, строка подсвечена.
В данном случае сообщение об ошибке очень хорошее -
оно говорит: вот, посмотри. Как и с кавычками, левой скобкой и
правой скобкой - они должны быть парными. Как здесь - должна
быть правая скобка, вот здесь, для функции печати. Теперь это работает.
Хорошо, вот последний пример. Что-то не так, оно говорит: ошибка, не хватает правой скобки.
Сообщение об ошибке неправильное. Иногда в случае синтаксической ошибки
компьютер сбит с толку и не может диагностировать проблему за вас -
в сообщении об ошибке он может сказать - что-то здесь не в порядке со 2-й строкой.
Я советую просто внимательно посмотреть слева направо, и здесь - выглядит
вполне разумно. Бывает, как в этом случае - не хватает запятой.
И я думаю, что это может быть примером различия между компьютерами и людьми. Человек
мог посмотреть на это и увидеть ваши намерения. Как - о, я вижу, тут намеревались
вывести на печать 1 и В. Но компьютер с этой своей механистичностью
- для него все должно быть как следует, так что запятую
нельзя пропустить - она обязательно должна быть, и мы не сдвинемся, пока не исправим.
Хорошо. Теперь это работает. ОК. Это наш первый раздел базовой
печати чисел и строк. У меня есть один пример проблемы - я попробую, это
то, как во многих случаях будут выглядеть упражнения. Хотя следующие упражнения
будут повеселее - обещаю. Здесь написано: измените код внизу,
чтобы при выполнении он выдавал вот такой результат. Он говорит 1, 2, скобка, это из -
популярного детского стишка. Этот код здесь - он что-то
делает, но это не то, что нужно и нам нужно изменить его.
Давайте посмотрим. Вот единица, и что я сделаю - я добавлю 2, затем
я должен не забыть поставить запятую, затем я меняю эту строку
чтобы была скобка. Теперь я могу выполнить его - посмотрим, что он сделает. Я предлагаю вам
если у вас есть какая-то идея или вы просто хотите что-то попробовать,
то вы ничего не сломаете, если просто что-то напечатаете здесь и нажмете
неправильную кнопку. Хорошо иметь желание экспериментировать.
/то первая строка. И я проверю вторую строку. Три, запятая, четыре, запятая,
стук. Хорошо. Теперь это работает. Часто когда я выполняю маленькие примеры
в документе - вроде этого, может быть, что на видел я делаю много примеров,
и вы можете захотеть попробовать, вам будет интересен
второй пример - вы хотите перейти к нему, пробуете какой-то вариант и сами нажимаете
неправильную кнопку - это абсолютно нормально и правильно.
Часто в документе у меня есть маленькая кнопка "показать решение".
Вы можете перейти сюда, и здесь пусто, так что вы можете провести эксперимент.
Но если вам затем станет интересно, какой код был у меня, то его тоже
можно увидеть в документе - вы можете сравнить его со своим решением.
Или если вы хотите его скопировать, или с любой другой целью - пожалуйста. Хорошо.
На этом наш первый раздел заканчивается, посмотрите на эти упражнения по программированию.