Люди иногда говорят, что компьютер подобен мозгу. Это не так. Если изъять кусочек мозга, мозг компенсирует это, создав обходные пути. Вспомните об операции, которую пережила конгрессмен из Аризоны Габби Гиффордс в 2011 г. Во время встречи с избирателями на парковке магазина Safeway вооруженный человек, Джаред Ли Лофнер, в упор выстрелил ей в голову. В результате дальнейшей беспорядочной стрельбы Лофнер убил шесть человек и ранил 18. До этого он преследовал Гиффордс.
Интерн Даниэль Эрнандес поддерживал Гиффордс в вертикальном положении, удерживая давление на ране, пока вокруг свистели пули. В конце концов присутствующим удалось схватить Лофнера, а вскоре на место происшествия прибыли полиция и скорая. Гиффордс находилась в критическом состоянии. Докторам пришлось проводить срочную операцию на мозге и затем ввести ее в искусственную кому, чтобы позволить мозгу восстановиться. Спустя четыре дня с момента нападения Гиффордс открыла глаза. Она не могла говорить, едва могли видеть, но была жива.
Гиффордс храбро встретила все испытания на долгом пути к выздоровлению. Благодаря интенсивным занятиям она снова научилась говорить. Как и у большинства тех, кто перенес подобную травму, ее голос звучал иначе, нежели до покушения. Новый голос Гиффордс звучал медленно и вымученно. Разговоры очень ее утомляли. Ее мозгу пришлось вместо разрушенных создать новые связи. Это одна из самых удивительных способностей мозга: при очень специфических условиях и весьма специфическим способом он самовосстанавливается.
Компьютер на такое не способен. Если вы удалите из компьютера его часть, то он просто перестанет работать. Все, что находится в памяти компьютера, имеет определенный физический адрес. Черновик этой книги содержится в определенном месте жесткого диска на компьютере. И, если бы именно этот кусок жесткого диска был поврежден, написанные мной страницы оказались бы утрачены. Было бы нехорошо: у меня сорвались бы сроки сдачи книги. Хотя, конечно, идеи остались бы в моей голове, так что я могла бы воссоздать черновик при необходимости. Мозг – более гибкая и адаптивная структура, нежели жесткий диск.
Это – одна из многих полезных вещей, которые я узнала в Lockheed. Я также узнала, что в технологических компаниях на каждом шагу можно обнаружить детали устаревших компьютеров – они появляются из-за того, что люди обновляют компьютеры либо просто уходят из компании. Каждому из нас выдали корпус компьютера Apple II, электронную плату, несколько микросхем памяти, ярких шлейфов проводов, и россыпь других частей, собранных по разным отделам (возможно, атомного) предприятия. Когда мы соединили все детали, преподаватель объяснил, за что отвечает каждая из них. Корпуса были грязными, клавиатуры липкими, а платы – пыльными. Но нас это не смутило, ведь мы собирали свои собственные компьютеры, это было весело. После сборки нас научили программировать на простом языке программирования под названием BASIC, а в конце семестра разрешили оставить компьютеры себе.
Я рассказала эту историю, потому что необходимо понимать, что компьютер – это объект, который может быть собран и собирается человеком. Нередко студенты, которых я вижу на компьютерных курсах для журналистов, оказываются смущены. Они переживают, что могут сломать компьютер или совершить какую-то катастрофическую оплошность. «Вы можете сломать компьютер только при помощи молотка», – говорю я им. И поначалу они не верят мне, но к концу семестра чувствуют себя более уверенно. И, даже если делают что-то не так, они понимают, что смогут это исправить. Эта уверенность – ключ к технологической грамотности.
Но вы не на моем курсе, так что я не могу просто дать вам компьютер. Но рекомендую разобрать старый. Наверняка у вас такой где-то лежит; также старый ненужный компьютер можно найти в комиссионках, они недорогие. Либо спросите на работе: обычно у системных администраторов найдется что-то подходящее, нечто, что они используют для украшения или просто не отдали на переработку. Для этой задачи лучше всего подходит настольный компьютер.
Разберем его на части. Вам понадобится маленькая отвертка, если вы собираетесь разбирать ноутбук. Внутренности настольного компьютера, скорее всего, выглядят как на рис. 2.2.
Посмотрите на детали, как они соединены. Проследите за проводами (порты USB, аудио-, видеопорты и т. д.) и посмотрите, куда они подключены. Прикоснитесь к прямоугольным деталям, похоже, намертво скрепленным с платой. Найдите процессорные микросхемы – на них наверняка написано Intel – это ключевой элемент всей затеи. Найдите разъем, соединяющий всю эту конструкцию с монитором. Скорее всего, к нему подключен чрезвычайно прочный, гибкий и пластичный шлейф проводов. Он передает информацию об изображении на монитор, который затем отображает картинку, закодированную в сигнале.
Вы печатали на клавиатуре, чтобы написать программу на Python. Эта информация передалась в нутро компьютера посредством клавиатуры, потом была интерпретирована системой. Затем компьютер выдал инструкцию к следующей части механизма – монитору, чтобы тот вывел на экран «Hello, world!». Благодаря простым инструкциям этот цикл повторяется снова и снова.
Разбирать компьютер с детьми – весело. Когда мой сын учился в начальной школе, я однажды разобрала вместе с ним ноутбук. Я собиралась отдать пару ноутбуков на переработку и, прежде чем избавиться от них, хотела разбить жесткие диски молотком. (Я обнаружила, что в каком-то смысле такое уничтожение жестких дисков приносит большее удовлетворение, чем просто стирание данных.) Тогда я спросила сына, не хочет ли он помочь мне и вытащить жесткий диск. «Ты шутишь? Я хочу разобрать всю эту штуку на части», – ответил он, и следующие два часа мы провели на кухне, разбирая два компьютера.
В рамках моего курса в университете мы сначала играем с жесткими дисками и уже потом переходим к обсуждению программного обеспечения (ПО) и «Hello, world!» в том числе. ПО – это все, что взаимодействует с аппаратным обеспечением. С его помощью вы добиваетесь от компьютера выполнения написанных вами на клавиатуре инструкций. Это то, что обеспечивает работу программы «Hello, world!». К слову, текст, который вы набираете, также превращается в инструкции, которые компьютер исполняет. Железо – это физическая часть компьютера, софт – все остальное. Таким образом, компьютерное программирование и написание ПО чаще всего означают одни и те же вещи.
Не буду вас обманывать: программирование – это математика. И если кто-то пытается убедить вас в обратном, что, мол, без математики можно научиться программировать, то, скорее всего, вам пытаются что-то продать.
Хорошая новость заключается в том, что для начального уровня программирования понадобится математика уровня 4‒5 класса школы. Вам нужно разбираться в таких операциях, как сложение, вычитание, умножение, деление, и понимать, что такое проценты и остаток. Кроме того, понадобятся базовые знания геометрии, а именно представления о площади, периметре, радиусе и окружности. Также стоит вспомнить о графиках и о координатах х, y, z. Наконец, вам понадобится базовое понимание функций – тех, что мы используем, чтобы превратить 2 в 22.
Если у вас математическая фобия, то, вероятно, на этом самом месте вы хотите закрыть книгу. Это нормально. Многие говорят, что каждый должен уметь писать программы, но я так не считаю. Программирование окажется неприятным опытом, если математика – не ваша сильная сторона. Однако если вы уверены, что способны пересчитать чек в ресторане, или справляетесь с ежедневными задачами вроде измерения ковра, который планируете положить в гостиной, то определенно вы справитесь.
А вот средний уровень программирования требует знаний линейной алгебры, геометрии и математического анализа. Хотя большинство людей не чувствуют нехватки знаний, оставаясь на базовом уровне. Программирование может быть как искусством, так и ремеслом. Как ремесло оно помогает учиться и зарабатывать на жизнь. Как искусство программирование требует как ремесленного подхода, так и знания в области высшей математики. В рамках этой книги мы будем считать, что вас интересует именно подход ремесленника.