Текст книги "Пиксель. История одной точки"
Автор книги: Элви Рэй Смит
Жанр: Исторические приключения, Приключения
Возрастные ограничения: +18
сообщить о неприемлемом содержимом
Текущая страница: 13 (всего у книги 53 страниц) [доступный отрывок для чтения: 17 страниц]
Старое соперничество ведется по крайней мере со времен Американской революции. Оно поддерживается стереотипами: янки всё преувеличивают, а британцы всё преуменьшают. Или более того: янки пускают в ход деньги там, где британцы предпочитают использовать мозги. Знаменитый британский писатель, автор шпионских романов Джон ле Карре называл американцев «кузенами», имея в виду не просто «дальних родственников». Кузены были союзниками в войне против Гитлера, а затем и в холодной войне, но часто их сотрудничество скорее напоминало конкуренцию. Обе стороны и соревновались, и сотрудничали в гонке за первенство в создании компьютера. В ней шли «ноздря в ноздрю» – настолько близко, что некоторые историки до сих пор спорят, кто пришел первым.
В 1960-х годах мое американское поколение учили, что ЭНИАК, созданный в Филадельфии в 1945 году американцами (то есть нами), был первым электронным компьютером. Но это не так – по крайней мере, не в сегодняшнем понимании компьютера как универсальной электронной машины с хранимой в памяти программой. Его даже нельзя назвать первым из почти-компьютеров. Британцы (то есть они) уже выиграли этот раунд, но мы, янки, не знали об этом. Тиран, мучивший Тьюринга, – Закон о государственной тайне – тоже вступил в игру. Британцы выиграли первый забег, а американцы даже не подозревали об этом.
Британцы тоже небезупречны, когда дело доходит до необоснованных или неточных заявлений. Они утверждали, что их машина Colossus из Блетчли-Парка, построенная в начале 1944 года, была первым электронным компьютером. Это тоже неверно. Colossus, как и ЭНИАК, использовал аппаратную конфигурацию, а не программное обеспечение. Оба были большими электронными машинами, но их нельзя назвать компьютерами с хранимой в памяти программой. Для перепрограммирования каждого из этих монстров требовалось подсоединение кабелей и переключение тумблеров – изменение аппаратного состояния машины вручную с ничтожной человеческой скоростью. Прелесть идеи Тьюринга заключается в том, что сама программа хранится в той же самой памяти, где и все ее данные. Изменение программы и данных, которыми она оперирует, – это один и тот же процесс. Если компьютер электронный, то смена программ происходит с электронной скоростью, несопоставимой с жалкими возможностями человека. Вам не нужен сотрудник – или на самом деле чаще сотрудница, – чтобы возиться с кабелями и переключателями.
Гиганты размером с комнату неплохо послужили кузенам. Почти-компьютеры усилили в военном отношении и янки, и британцев. ЭНИАК провел расчеты для водородной бомбы. Colossus помог взломать немецкую схему шифрования и обеспечил успешную высадку союзников в Нормандии. Обе машины стали своеобразной тренировочной площадкой и подлинным источником вдохновения для инженеров, которые приступили к проектированию и созданию настоящих компьютеров. Эти компьютеры уже управлялись программами, хранящимися в памяти точно так же, как и данные, а не внешним переподключением кабелей.
Восход Цифрового Света и компьютерыФредди Уильямс начал работать в Манчестерском университете в декабре 1946 года. Сначала он занимался не созданием компьютера, а разработкой быстрого запоминающего устройства для него. Предшествующий опыт работы с военными радарами, отображающими метки на экране, натолкнул его на идею, что лучшим решением, вероятно, будет электронно-лучевая трубка. Посетив Bell Labs в Нью-Йорке в 1946 году, он увидел там впечатляющую радиолокационную технику.
Незадолго до переезда в Манчестер Уильямсу удалось сохранить один бит при помощи электронно-лучевой трубки (ЭЛТ). На самом деле он разработал способ отображения маленького пятна (точка) или большого пятна (тире) в определенном месте на плоском конце (экране) трубки. Он сумел записать бит. Кроме того, он (точнее, созданные им электронные схемы) мог «посмотреть» пятно, которое уже отображалось на поверхности трубки, и определить, большое оно или маленькое – то есть прочитать хранящийся там бит. Также появилась возможность поменять большое пятно на маленькое или наоборот. Если говорить удобным современным языком, он мог произвольно записать 0 или 1 в ячейку памяти и прочитать то, что в ней хранится. И самое главное: значение, записанное в ячейке, сохранялось там, пока он или компьютер не изменяли его. Другими словами, оно запомнилось. Вуаля! В 1946 году Уильямс создал первый видимый компьютерный бит.
Так создавалось устройство, впоследствии названное трубкой Уильямса. Ее следовало бы назвать трубкой Уильямса – Килбурна (чего так и не произошло), потому что вскоре к проекту подключился Том Килбурн, который к марту 1947 года уже активно участвовал в разработке трубки в Манчестере. К концу года Килбурну удалось сохранить 1024 бита на экране трубки в виде прямоугольной матрицы, а также создать (и сфотографировать) Первый Свет – впервые отобразившийся на дисплее Цифровой Свет (рис. 4.2). Затем он довольно быстро перешел к хранению 2048 битов, создал еще одно изображение и тоже сделал снимок (рис. 4.3). Но слова бит, как мы узнаём из главы 3, еще не существовало, поэтому вместо него Килбурн использовал слово цифра. Он опубликовал свою докторскую диссертацию «Система хранения для использования с бинарными цифровыми вычислительными машинами» 1 декабря 1947 года. Ему было 26 лет.
Работа Килбурна публично провозгласила восход Цифрового Света с помощью двух приведенных выше фотографий. Это не просто фотографии какого-то набора световых пятен. Это два изображения, воспроизведенные в цифровом виде и сохраненные в электронной цифровой памяти. Килбурн задумал их как двумерные изображения.
Килбурн создал Первый Свет, первое цифровое изображение, «излишне трудоемким» способом – каждая из 1024 точек включалась вручную. Дисплей представлял собой массив размером 32х32 равномерно расположенных пикселя. Для переключения битов использовались 32 клавиши, «сделанные в виде клавиатуры пишущей машинки». Килбурн описал дисплей как массив «элементов изображения». Короткого слова «пиксель» еще не существовало – и, как нам известно, не будет до 1965 года. Нетрудно заметить, что здесь перепутаны элементы отображения (видимые) с элементами изображения (невидимыми). Мы обсуждали их отличия в главе о Котельникове, но для Килбурна такой разницы еще не существовало.
Рис. 4.3
Рис. 4.4
Килбурн создал второе цифровое изображение в 2048-битной памяти, используя тот же утомительный способ, напоминающий набор текста на пишущей машинке. Каждый пиксель на регулярной сетке этих изображений имел два состояния: тире (большое пятно) и точка (маленькое пятно) – 1 и 0 соответственно. Пиксель здесь – это округлое пятно света двух разных размеров. Так что даже в свои первые дни он не был квадратным.
Цель Килбурна, заявленная в его диссертации и отраженная в ее названии, состояла в разработке памяти для электронного компьютера. В своем исследовании он описал именно такую гипотетическую машину. Затем он и Уильямс приступили к созданию настоящего компьютера, и в течение полугода на свет появился знаменитый Baby. Трезвый, должным образом признанный и вознагражденный, член Королевского общества Килбурн на рисунке 4.4 держит в руках символ своей славы, трубку Уильямса – Уильямса-Килбурна, если уж быть предельно точным, – на фоне Baby.
И Уильямс, и Килбурн при жизни удостоились заслуженных почестей. Фредди Уильямс умер в 1977 году, к тому моменту уже став сэром Фредериком, а также членом Королевского общества. Килбурн скончался в 2001 году, через год после того, как Музей компьютерной истории в Калифорнии присвоил ему статус почетного члена, – отличный способ отметить начало нового тысячелетия.[17]17
Статус почетных членов присваивается лауреатам учрежденной Музеем компьютерной истории в 1987 году премии Fellow Awards, которой награждаются ныне живущие люди, внесшие весомый вклад в развитие информационных технологий. – Прим. ред.
[Закрыть]
Впрочем, нет никаких доказательств, что Килбурн осознавал важность Первого Света, первой картинки, созданной на компьютере. Насколько нам известно, после двух первых изображений, созданных им в 1947 году, он больше не сделал и не сфотографировал ни одного. На самом деле никто больше не снимал на Baby. Люди, похоже, не считали создание изображений достойным способом использования компьютера. Заниматься чем-то таким не подобало. Это был запретный плод, хотя и не столь же тяжкий грех, как идолопоклонство. Война только что закончилась, вычислительных ресурсов не хватало, а потребность в них была очень острой. Дэвид «Дай» Эдвардс, вместе с Уильямсом и Килбурном занимавшийся разработкой Baby, говорил, что пользователи тогда «отчаянно нуждались» в вычислительных машинах. Другой участник их рабочей группы, Джефф Тутилл, вспоминал, что команда все еще трудилась в духе военного времени и не собиралась тратить время на развлечения. Создание фотографий они воспринимали как спосооб расслабиться и приятно провести время.
Картинка в качестве шаблона для проверки памяти – это одно, а растрата ценного вычислительного ресурса Baby на такое легкомысленное и богохульное дело – совсем другое. Машина должна вычислять только что-то «серьезное».
Для сравнения представьте совершенно другую обстановку спустя десятилетия, когда в 1998 году, к пятидесятилетию создания Baby, была построена его точная копия. В конкурсе, посвященном юбилею, участвовали несколько программ для Baby, которые создавали изображения, даже анимированные, на ЭЛТ-мониторе. Одна из них, например, писала слово BABY.
Проект по созданию копии Baby возглавлял Крис Бертон. Он показал мне ее в Музее науки и промышленности Манчестера 4 июля 2013 года. Компьютер приветствовал меня надписью PIXAR (рис. 4.5), пробежавшей по экрану, – настоящая компьютерная анимация! Экскурсовод Брайан Малхолланд написал эту программу за день до моего визита, но она запустилась бы на Baby и в 1948 году.
Создание картинок – одно из очевидных и непреодолимых искушений для современных программистов, которые живут в комфорте мирного времени, обладают неисчерпаемыми вычислительными ресурсами и лучше знакомы с компьютерами как с устройствами обработки изображений, а не числовых расчетов. В наше время почти не встретишь компьютер без дисплея, анимации и способности взаимодействовать с пользователем. Такие устройства мы называем серверами.
ГонкаДо сих пор непросто разобраться в истории первых компьютеров. Даже биография Baby из Манчестера запутанна и полна нюансов. В полноценном историческом обзоре пришлось бы упомянуть слишком много людей, машин, стран и, конечно же, всяких подробностей – в одну книгу, а тем более в одну главу, их не вместить. Я основательно проредил эти густые заросли, тщательно определив, что мы подразумеваем под компьютером, и уделив внимание только тем ветвям, на которых распустится Цифровой Свет. В результате остались только самые важные факты из ранней компьютерной истории.
Тем не менее даже в оставшейся части все еще содержится множество имен и событий. Чтобы не запутать вас, предлагаю структурировать имеющуюся у меня информацию. Разделим всех участников на две команды – британцев и янки – и проследим, как проходила драматичная гонка между ними. Это на самом деле вымысел. Членов соперничающих команд, примерно как спортсменов национальных сборных на Олимпийских играх, объединяли только государственный флаг и общий медальный зачет. Если уж такой принцип срабатывает для Олимпиады, то он подойдет и для истории создания компьютера. Ведь это на самом деле была гонка за первенство.
Рис. 4.5
Блок-схема (рис. 4.6) ранней истории компьютеров отдает должное создателям и аппаратного, и программного обеспечения. Практически не бывало такого, чтобы программы и «железо» создал один и тот же человек, – это следствие нескончаемой битвы между башней из слоновой кости и зловонной лабораторией. Под программным обеспечением здесь обобщенно понимается вся исключительно умственная работа.
Разработчики программного обеспечения, по совместительству известные теоретики – в частности, Тьюринг и фон Нейман, – часто получали всю славу даже там, где не вполне ее заслуживали. Относительно Baby создатели аппаратной части Уильямс и Килбурн (сплошные линии) сыграли более значимую роль, чем первые программисты Тьюринг и Ньюман (пунктирные линии).
Блок-схема также делает очевидной взаимосвязь между различными игроками. Люди здесь изображены кругами, компьютеры – прямоугольниками, а концепции – параллелограммами. На рисунке нет очевидной главной линии, своего рода ствола, как у дерева, зато есть множество побегов, как у кустарника. Но начинается все, конечно же, с корня. На самом верху в центре помещен основополагающий документ, работа Тьюринга 1936 года «О машинно-вычислимых числах», где дается определение машинных вычислений и подробно описывается компьютер с хранимой в памяти программой. Из него вытекает отчет фон Неймана EDVAC (Electronic Discrete Variable Automatic Computer – электронный автоматический вычислитель с дискретной переменной) 1945 года и отчет Тьюринга ACE (Automatic Computing Engine – автоматическая вычислительная машина) 1946 года, где изложены две разные архитектуры реальных компьютеров.
Программирование – самая известная форма программного обеспечения. Еще существует математическое описание машинных вычислений, как в «О машинно-вычислимых числах». Третий тип умственной работы представлен отчетами EDVAC и ACE. Таким образом, полный вклад разработчиков программного обеспечения включает в себя идею компьютера с хранимой в памяти программой, его архитектуру или программы для него. Пунктирные линии, выходящие из отчета EDVAC на диаграмме, показывают их концептуальный (софт) вклад почти в каждый компьютер на диаграмме, за исключением прямой линии Тьюринга.
Рис. 4.6
Точно так же, но в отношении аппаратного обеспечения Уильямс и Килбурн повлияли на конструкцию всех ранних машин, разработанных обеими командами. Их вклад (хард) обозначен сплошными линиями от каждого из них на блок-схеме. Эти двое не участвовали непосредственно в инженерной разработке ни одного из указанных на схеме компьютеров, кроме манчестерского, но трубка Уильямса – Килбурна напрямую повлияла на конструкцию каждого из них.
Архитектура против конструкции
Между концепцией
И креацией
Между эмоцией
И реакцией
Опускается Тень.
– Т. С. Элиот. «Полые люди». (пер. В. Топорова)
Архитектура компьютера, как следует из самого слова, – это план. Он заметно отличается от конструкции компьютера. Я зарезервирую это понятие для акта воплощения архитектуры в действительности с помощью реальных электронных устройств. Архитектура – это идея; конструкция – это реальность. Конструкция – это аппаратная проблема, требующая не меньше творчества, чем архитектура, а иногда даже больше. Но это другой вид творчества. Дело в том, что архитектура не диктует конструкцию и не является инструкцией для нее. Архитектура дома воплощается во множестве дизайн-проектов. Прямоугольник с надписью «Кухня» вдохновляет, но вовсе не направляет на мириады комбинаций гранита, плитки, дерева, ручек, светильников, кранов, красок, оконных створок и так далее.
Знаменитая архитектура, описанная в отчете EDVAC и названная архитектурой фон Неймана, повлияла на конструкцию как минимум шести различных компьютеров, показанных на блок-схеме, а также на множество других. На рисунке 4.7 она изображена в типичном схематическом виде. Рассмотрим прямоугольник с надписью «Память». Конкретная технология тут не указана – это проблема конструкции оборудования.
Разработчики должны взять пустой прямоугольник и придумать, как создать в реальном мире устройство, которое правильно соединит этот прямоугольник с другими на схеме. Затем им придется превратить выбранную конструкцию в физические устройства и заставить все эти устройства работать вместе с реальной памятью, которая хранит реальные биты, взаимодействует с внешним по отношению к ней миром и питается от существующей энергосистемы. Движение от пустого прямоугольника на архитектурном плане к реальной конструкции – это большой творческий шаг. Алгоритма для него нет.
Рис. 4.7
Хотя американцы разработали выигрышную архитектуру, британцы создали выигрышную конструкцию и, следовательно, взяли верх в гонке. Конструкция одного этого прямоугольника, памяти, стала решающим фактором в соперничестве за первенство в создании компьютера и цифрового изображения.
Архитектуры фон Неймана и Тьюринга эквивалентны как идеи. Обе были планами реализации концепции Тьюринга – универсальной вычислительной машины с хранимой программой. В архитектуре Тьюринга тоже наличествовал блок для памяти, а также блоки управления, арифметики, логики и ввода-вывода. В обеих архитектурах память и ввод-вывод эквивалентны ленте универсальной машины Тьюринга, а остальные блоки образуют ее сканирующую головку. Тьюринг раскрыл эту связь в лекции об ACE в 1947 году. Точно так же отчет фон Неймана об EDVAC продемонстрировал фундаментальную важность концепции Тьюринга в 1943 и 1944 годах, хотя и получился не столь подробным.
Общее эмпирическое правило гласит, что любой программный процесс можно ускорить, реализовав его в аппаратном обеспечении. На самом деле компьютер сам по себе – это более быстрая аппаратная реализация идеальной, но мучительно медленной машины Тьюринга, абстрактной идеи об универсальном компьютере с хранимой в памяти программой. Арифметические и логические операции могут быть реализованы с помощью программного обеспечения, но фон Нейман и Тьюринг пошли дальше. Они оба указали, что все эти действия возможно реализовать на аппаратном уровне, чтобы работать еще быстрее. Именно поэтому так распространено заблуждение, что компьютер – это всего лишь арифметическая машина.
Архитектура Тьюринга сильно отличалась от архитектуры, разработанной командой фон Неймана. Тьюринг предложил реализовать аппаратную поддержку новой концепции – программной иерархии. Программисты (читай: сам Тьюринг) быстро поняли, что продуктивнее создавать программы как иерархические пирамиды. Иерархия придает смысл и структуру чрезвычайно длинным линейным спискам бессмысленных инструкций.
Создание иерархии внутри программы чем-то напоминает разделение книги на главы. Предположим, что программа состоит из сотен тысяч инструкций – вполне привычно для современного мира, но невозможно уложить в человеческой голове. Однако попробуйте разбить ее, скажем, на сотню частей, в среднем по несколько тысяч инструкций в каждой, и дать каждой части осмысленное имя. Тогда для программиста она сведется только к сотне поименованных осмысленных частей, каждая из которых называется подпрограммой (это слово придумал не Тьюринг). На самом высоком уровне иерархии программа концептуально состоит всего из сотни «инструкций», где каждая инструкция представляет собой подпрограмму. Это как оглавление книги и ее главы.
Программист все еще должен создать все подпрограммы со всеми их утомительными деталями, точно так же как и автор должен сочинить каждую главу. Но задача написать каждую часть уже более компактна и вполне укладывается в отдельной голове, хотя она и более кропотливая. Как говорится в одной известной шутке, слона проще съесть по кусочкам. Кроме того, эта иерархическая идея действует и на других уровнях. Дополнительно каждую подпрограмму можно разделить на свои собственные подпрограммы, а их, в свою очередь, – на свои и так далее. Еще более маленькие кусочки легче надкусывать, их еще проще запрограммировать. Концепция подпрограммы делает чрезвычайно сложную задачу понятной – например, дальнейшее разбиение глав на подпункты, подпункты на абзацы и, наконец, на сами слова. Архитектура Тьюринга подразумевает аппаратное ускорение, которое делает иерархическое использование подпрограмм быстрее и проще.
Безусловно, архитектура Тьюринга со своей изощренной поддержкой подпрограмм имела все шансы стать повсеместно принятой, но этого не произошло. В 1940-х годах американцы опубликовали отчет EDVAC фон Неймана, а отчет AСЕ Тьюринга британцы обнародовали лишь в 1986 году.
БританцыСэр Чарльз Галтон Дарвин, директор Национальной физической лаборатории и внук великого биолога-эволюциониста, сразу после войны инициировал работы по развитию британской электронно-вычислительной техники. Все началось довольно неплохо. Он пригласил на работу Тьюринга. Тот уже в конце 1945 года приступил к созданию архитектуры компьютера, впоследствии получившего имя ACE, и вскоре представил свой план. В его отчете ACE за 1946 год упоминается чуть более ранний отчет фон Неймана EDVAC, в котором представлена конкурирующая архитектура американцев. Но Тьюринг продвинулся дальше. Его отчет содержал не только архитектуру, но и конструкцию – вероятно, это был первый реальный проект электронного компьютера. Тьюринг погрузился в работу по строительству Pilot Ace – прототипа компьютера, основанного на архитектуре ACE. Несомненно, компьютер, разработанный Тьюрингом – человеком, который изобрел саму концепцию компьютера, – должен был стать первым компьютером в мире. Увы, но этого не произошло. Проект Pilot Ace пал жертвой многочисленных проблем[18]18
В названии заложена игра слов, одновременно означающая и «опытное автоматическое вычислительное средство» (Pilot Automatic Computing Engine), и «летчик-ас». – Прим. пер.
[Закрыть].
Одной из них стал сам Тьюринг. Во-первых, он продолжал менять архитектуру по мере того, как ему приходили в голову новые блестящие идеи. Во-вторых, он не умел играть в команде. Или, говоря иначе, но более позитивно, он обладал необычайно сильной индивидуальностью. Однако другие проблемы у проекта возникли не по его вине, например бюрократическая некомпетентность и досадное физическое разделение теоретической концепции с практическим воплощением – башни из слоновой кости и зловонной лаборатории. Держать разработчиков аппаратного и программного обеспечения отдельно друг от друга – не лучшая идея. В отличие от своего знаменитого дедушки, Чарльз Галтон Дарвин был не столько ученым, сколько бюрократом, и на нем лежит значительная доля ответственности за возникшую неразбериху.
Проект Pilot Ace превратился в настолько запутанный клубок, что разочарованный и обескураженный Тьюринг покинул проект задолго до завершения. Дарвин писал: «Мы согласны, что было бы лучше, если бы Тьюринг на какое-то время отказался от работы с нами». Первый детский крик Pilot Ace, безнадежно запоздалый, наконец прозвучал 10 мая 1950 года – почти на два года позже появления Baby. Pilot Ace едва успел попасть в десятку первых компьютеров. А полноценный ACE, детище Pilot Ace и главная цель Тьюринга, будет создан только через десять лет после его ухода из проекта.
Однако перед тем как покинуть проект в 1947 году, Тьюринг прочитал знаменитую лекцию об ACE – и в ней он использовал новое слово «программирование». В аудитории находился инженер Том Килбурн, который ненадолго заехал в Лондон по пути в Манчестер, где он собирался присоединиться к Фредди Уильямсу. Тьюринг тоже отправится туда примерно через год. Удачным следствием его безуспешного ухода из проекта ACE оказалось то, что он стал открыт для других компьютерных проектов. В Тьюринге нуждался даже Макс Ньюман, тот самый кембриджский профессор, который своей лекцией о е-Проблеме когда-то вдохновил Тьюринга на идею машинных вычислений, а потом убедил поехать получать степень в Принстон. Так что теперь предложение старого учителя и наставника Тьюринга помочь Манчестерскому проекту в разработке программного обеспечения для Baby Уильямса и Килбурна оказалось счастливым билетом.
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?