В 1864 году Чарльз Бэббидж писал: «Пройдет, вероятно, полстолетия, прежде чем люди убедятся, что без тех средств, которые я оставляю после себя, нельзя будет обойтись».
Обычно Чарльза Бэббиджа (1791-1871) называют английским математиком, изобретшим первый компьютер, а Аду Августу Байрон Кинг, графиню Лавлейс (1815-1852), — первым программистом, чему в немалой степени способствовало появление языка программирования Ада. И хотя оба эти утверждения точны не вполне, из-за многократного тиражирования они превратились почти в обязательный штамп, который на самом деле отдаляет от нас и мифологизирует деятельность этих двух замечательных людей.
А ведь стоит удивиться тому, как могло случиться, что в первой трети XIX века (в век пара теория электричества была в зародыше) возникла странная, опередившая свое время идея создания автоматического вычислительного устройства. Почему вдруг Ада Августа, дама столь высокого происхождения, увлеклась столь необычным занятием? В конечном счете, какое значение имеет совместная работа Чарльза Бэббиджа и Леди Ады для нас?
Вид аналитичеcкой машины, воссозданной сыном Бэббиджа, со стороны мельницы (арифметического устройства) |
Бэббидж обогнал свою эпоху на 100 лет, ему бы жить в первой трети XX века. В 1864 году он писал: «Пройдет, вероятно, полстолетия, прежде чем люди убедятся, что без тех средств, которые я оставляю после себя, нельзя будет обойтись». В своем оптимистическом прогнозе он ошибся на 30 лет. В начале сороковых годов Говард Айкен построил машину Mark I, которую назвали «осуществленной мечтой Бэббиджа». На самом деле Айкен серьезно изучал публикации Бэббиджа и Ады Лавлейс, его машина идеологически незначительно ушла вперед по сравнению с недостроенной Analytical Engine. Производительность Mark I оказалась всего лишь в десять раз выше, чем расчетная скорость работы Analytical Engine.
Обычно, говоря о первых компьютерах, их связывают исключительно с вычислительными задачами, что, впрочем, правильно. Поначалу электромеханические и электронные компьютеры использовались только в научных целях. Позже они стали применяться в бизнесе, а теперь подавляющая часть продуктов информационных технологий задействована вне физико-математической сферы. Как ни странно, Чарльз Бэббидж это тоже предвидел. Он сочетал в себе глубокие математические знания с политико-экономическими воззрениями и смог определить место компьютера в техническом прогрессе в целом. Экономические работы Бэббиджа читал и цитировал Карл Маркс. К сожалению, в силу специфики своей концепции он понял их с точностью «до наоборот».
Конечно же, механические принципы хранения и преобразования данных, использованные в вычислительных устройствах Бэббиджа, никакого практического интереса для современников не представляют, но это вовсе не значит, что и остальные аспекты его работы столь же архаичны и малозначимы для современников (причем не только его достижения, но и заблуждения). На примере деятельности Чарльза Бэббиджа можно увидеть исторический процесс, в который были вовлечены лучшие умы Европы XIX века, и преемственность идей, приведших к появлению современных компьютеров. Внимательный анализ истории компьютеров показывает, что, за редким исключением, новации в значительной мере представляют заимствования у предшественников с той или иной добавкой оригинальности — на примере деятельности Бэббиджа в этом легко убедиться.
Первая разностная машина
Чарльз Бэббидж проявил серьезные математические способности еще в период учебы в кембриджском колледже Святой Троицы, куда он поступил в 1810 году. Бэббидж очень быстро перегнал своих преподавателей по знаниям и пришел к неутешительному выводу: Британия заметно отстала от континентальных стран по уровню математической подготовки. Для преодоления разрыва он вместе с двумя соучениками учредил Аналитическое общество (Analytical Society), которое своей активностью фактически инициировало реформу математического образования вначале в Кембридже, а затем и в других университетах. Начинание оказалось плодотворным, поэтому долгие годы после смерти Бэббиджа его имя ассоциировалось именно с формированием новой математической школы в Англии.
Модель Difference Engine 2, воссозданная в эпоху персональных компьютеров |
Окончив в 1814 году университет, Чарльз Бэббидж начал жизнь свободного джентльмена-философа, он был вхож в высшее общество Британской империи, близко дружил с Чарльзом Диккенсом, но при этом не прекратил занятия математикой и в 1816 году стал членом Королевского научного общества. Личная биография Бэббиджа по-своему драматична и интересна, но ограничимся замечанием, что он был англичанином викторианского толка. Специфическую философию прагматизма, общественную позицию и отношение к труду, к науке и знаниям самого Бэббиджа и его окружения обозначают словом вигизм (Whiggism) — от партии вигов.
Сегодня мы бы назвали новое увлечение Бэббиджа глобализацией науки, он сосредоточил свое внимание на достижениях французской и итальянской математических школ. Влекомый желанием приблизиться по уровню к континентальной математической культуре, Бэббидж неоднократно посещает Францию, где знакомится со своими великими современниками Лапласом и Фурье. Однако чистая математика его не очень привлекала, в нем были еще и задатки бизнесмена, не случайно позже он много времени уделил такому неожиданному предмету, как политическая экономия.
Несомненно, наибольшее влияние на Бэббиджа оказал менее известный француз — барон де Прони, работы которого навели Бэббиджа на мысль о построении технологии вычислений. Печальная по своему финалу история де Прони началась в 1790 году, когда император Наполеон не только вел завоевательные войны, но еще и задумал проведение радикальных общественных реформ, в том числе и переход на метрическую систему мер. Одним из аспектов реформы стало намерение создать новые логарифмические и тригонометрические таблицы. Эту работу поручили барону де Прони, руководившему в ту пору Бюро переписи.
Барон понял, что без разумной организации труда справиться с поставленной задачей ему будет не по силам. К счастью, к тому времени уже вышла книга «Процветание нации» Адама Смита, которую, как известно, читал и Евгений Онегин. Смит показал положительное влияние разделения труда на эффективность производства, используя классический пример производства булавок. Де Прони пошел дальше, он перенес идею разделения труда на вычислительный процесс, распределив исполнителей по трем квалификационным уровням. Высшую ступень в производственной иерархии занимали несколько выдающихся математиков, среди которых были Лежандр и Карно, они готовили математическое обеспечение. На втором уровне стояли образованные «технологи», которые организовывали рутинный процесс вычислительных работ. Последними в этой структуре были вычислители computers (первое использование этого слова), их квалификационный максимум — умение складывать и вычитать, обычно это были девушки, которым революция позволила выбраться из специфической социальной сферы. Заслуга де Прони в том, что он нашел алгоритмический и технологический подходы для сведения сложных вычислений к рутинным операциям, не требующим от большинства исполнителей творческого подхода.
Увы, к тому времени, когда работа закончилась, император растратил все средства на свое главное увлечение — войны, и денег на то, чтобы напечатать грандиозные таблицы, занимающие 17 огромных рукописных томов, во всей Франции не нашлось, колоссальный труд лег мертвым грузом, который так и остался невостребованным. Бэббидж застал дела де Прони в плачевном состоянии, но это не помешало ему уловить главное из того, что он сделал, — возможность упрощения процедуры сложных вычислений путем рутинного повторения однообразных действий, выполняемых практически механически. Идеи де Прони навели его на мысль о замене малообразованных «компьютеров» механическим устройством и вдохновили на создание первой Difference Engine, предшественницы современных калькуляторов.
Ада Лавлейс перевела замыслы Бэббиджа на математический и технологический языки |
Проект Difference Engine получил поддержку со стороны правительства, и в 1822 начались работы, продолжавшиеся вплоть до 1834 года. Их конечной целью было создание точных навигационных таблиц, причем Бэббидж понимал, что основной источник ошибок — переписчик, поэтому он хотел снабдить свою машину печатающим устройством. В последние 12 лет творческие успехи перемежались грандиозными схватками между Бэббиджем и Джозефом Клементом, государственным чиновником, назначенным, как бы теперь сказали, на роль главного инженера. В конечном счете это и помешало делу, первая версия Difference Engine, которую они создавали вместе, так и не была доведена до конца.
Возможно, причиной неудач стала излишняя разносторонность, если не разбросанность, Бэббиджа. Он был увлекающимся и своеобразным человеком, например, его чрезвычайно интересовало все, что касается железных дорог, он сделал несколько важных изобретений в этой области, в том числе спидометр для паровоза. Попутно ему пришлось заниматься технологией массового производства компонентов для своей машины, требовались сотни одинаковых элементов. В 1834 году противоречия между изобретателем и инженером-чиновником достигли апогея, к тому же некоторые именитые английские ученые выступили против Бэббиджа, опровергнув саму возможность построения машины, в итоге правительство прекратило финансирование, все результаты перешли в госсобственность и впоследствии погибли. Таким образом, с первой Difference Engine было формально покончено, но не без положительных последствий. Несколько изобретателей, обладавших более практичным умом, смогли спустя 10-15 лет воспроизвести ее аналоги, а для самого автора она стала основой для новых открытий.
От Difference Engine к Analytical Engine
Неудачная попытка создания машины не остановила Бэббиджа. С середины 30-х годов он начал работать над своим следующим детищем — программируемой машиной Analytical Engine, которая стала делом его жизни и принесла ему посмертную славу. Это было воистину революционное изобретение, позже всякого рода арифмометров наизобретали немереное количество, но к идеям Analytical Engine смогли вернуться чуть ли не через 100 лет. Это была первая машина, управляемая внешней программой, в период с 1930 по 1950 год такие аппараты широко использовались в бизнесе, в СССР они назывались машиносчетными станциями и просуществовали до конца 60-х, в вузах преподавали специальность «Механизация вычислительных работ».
Для создания компьютера в современном понимании оставалось всего лишь придумать схему с хранимой программой, что и было сделано много лет спустя Эккертом, Мочли и фон Ньюманом. Новая машина отличалась от арифмометра наличием регистров, в них сохранялся промежуточный результат вычисления и с их помощью выполнялись действия, предписанные программой. Вычислительные возможности, открывшиеся с изобретением регистров, поразили самого автора. В мае 1835 года он писал: «Шесть месяцев я составлял проект машины, более совершенной, чем первая. Я сам поражен той вычислительной мощностью, которой она будет обладать, еще год назад я не смог бы в это поверить».
В ней присутствовали все три классических элемента компьютера: store — хранилище (теперь мы называем его памятью), mill — мельница (арифметическое устройство) и control barrel — управляющий барабан (управляющее устройство), для сравнения стоит посмотреть проект новейшего микропроцессора Crusoe. Регистровая память способна была хранить как минимум 100 десятичных чисел по 40 знаков, но теоретически могла быть расширена до 1000 50-разрядных чисел. Мельница состояла из трех основных регистров: два для операндов, а третий для результатов действий, относящихся к умножению. Еще имелась таблица для хранения промежуточных результатов и счетчик числа итераций. Основная программа заносилась на барабан, в дополнение к ней могли быть использованы перфокарты, предложенные в 1805 году французским инженером Жокардом для ткацких машин.
Машина не только выполняла линейные вычисления, в ней были заложены условный и безусловный переходы и циклы. На вход должны были поступать два потока карт, которые Бэббидж назвал операционными картами (operation card) и картами переменных (variable card): первые управляли процессом обработки данных, записанных на вторых. На тех и на других информация записывалась путем пробивки отверстий. Из операционных карт можно было составить библиотеку функций. Помимо этого, Analytical Engine, по замыслу Бэббиджа, должна была содержать устройство печати и устройство вывода результатов на перфокарты для последующего использования.
Все делалось в одиночку, британские ученые мужи его не поддерживали, где искать поддержку? Стоит представить обстановку, в которой работал Бэббидж. Новыми технологиями увлекались все, вошла в моду шляпа-цилиндр, придуманная кутюрье под явным влиянием паровой машины. Промышленные выставки в ту пору были сродни салонам, куда представители высшего света приходили знакомиться с новинками науки и техники. Постоянным их посетителем был Бэббидж, там он пропагандировал свою идею, искал и находил покровительство у членов королевской фамилии, но самое главное — там состоялось знакомство с Адой Лавлейс, ставшей его почитательницей. Нередко ее изображают как спонсора безумных идей, это неверно, сотрудничество было исключительно творческим.
Особое значение имели контакты с итальянскими учеными. В 1840 году Бэббидж был с визитом в Турине, его пригласили туда для чтения лекций о своей машине. Итальянские математики отнеслись к нему с большим пониманием, чем на родине, лекции имели шумный успех. По-видимому, они читались по-французски, поскольку один из слушателей, Луиджи Менабреа, бывший в ту пору преподавателем в Туринской артиллерийской академии, составил и издал конспект на французском языке. Много позже Менабреа стал министром иностранных дел Италии, а 1867 году даже премьер-министром.
Менабреа был глубоким мыслителем, он писал об экономике интеллекта (economy of intelligence). Занятно, что об интеллектуальном капитале заговорили только в середине 90-х годов XX века. Менабреа закончил свое эссе удивительными словами, которые стоило бы услышать тем, кто наделял и наделяет машины сверхчеловеческими способностями. Он написал, интерпретируя слова Бэббиджа (в 1842 году!): «Машина — не мыслящее существо, это просто автомат, выполняющий заложенное в него».
Получив труд Менабреа, Лавлейс перевела его на английский и снабдила пространными комментариями, по объему явно превосходящими исходный текст. Ознакомившись с ним, Бэббидж счел необходимым его опубликовать (перевод с комментариями нетрудно найти в Internet). Это самый интересный документ, посвященный алгоритмической основе Analytical Engine.
Ада Лавлейс перевела замыслы Бэббиджа на математический и технологический языки. Вот несколько фрагментов: «Машину нельзя наделить разумом, она только реализует предложенные представления. Эти представления зафиксированы на картах (перфокартах, тогда не было такого слова. — Прим. авт.), они передаются различным механизмам, выполняющим последовательность действий... Весь интеллектуальный труд ограничен подготовкой необходимых для вычисления выражений... Машину можно рассматривать как настоящую фабрику чисел».
Говард Рейнголд, один из ведущих специалистов в области истории компьютеров, с которым я имею честь быть лично знакомым, в своей книге Whole Earth назвал записки Ады Лавлейс классическими основополагающими документами в теории вычислительных машин (computer science), написанными за век до появления ENIAC.
Analytical Engine так и не была построена. Вот, что писал сам Бэббидж в 1851 году: «Все разработки, связанные с Analytical Engine, выполнены за мой счет. Я провел целый ряд экспериментов и дошел до черты, за которой моих возможностей не хватает. В связи с этим я вынужден отказаться от дальнейшей работы».
В 1851 году Чарльз Бэббидж предпринял попытку построить Difference Engine 2, но и она не была удачной.
Если бы Чарльз Бэббидж был просто математиком, он не смог бы выйти на тот понятийный уровень, который позволил ему ощутить потребность в машине для автоматических вычислений. Он был и философом, и экономистом и даже политэкономом. Еще в 1833 году Чарльз Бэббидж написал книгу «Экономика технологий и производств» (On the Economy of Machinery and Manufactures). Его вполне можно назвать и одним из первых промышленных шпионов, он объездил всю Европу в поисках подходящих для своей цели научных и технических решений.
Последние годы жизни Бэббидж посвятил философии и политической экономии.
Большое влияние на посмертную судьбу машин оказал сын изобретателя генерал Бэббидж. Выйдя в отставку в 1874 году, он несколько лет посвятил изучению имеющегося наследия, в 1880 году начал работу по восстановлению его в «железе», которая продолжалась с переменным успехом до 1896 года. После десятилетнего перерыва она была возобновлена, и появился действующий образец аналитической мащины, способный печатать результаты вычислений.