Вклад в программирование Ады Лавлейс
Графиня Лавлейс, дочь Байрона, известна прежде всего созданием описания вычислительной машины, проект которой был разработан Чарльзом Бэббиджем. В комментариях Лавлейс были приведены три первые в мире вычислительные программы. Самая простая из них и наиболее подробно описанная - программа решения системы двух линейных алгебраических уравнений с двумя неизвестными. При разборе этой программы было впервые введено понятие рабочих ячеек (рабочих переменных) и использована идея последовательного изменения их содержания. От этой идеи остаётся один шаг до оператора присвоения - одной из основополагающих операций всех языков программирования, включая машинные. Вторая программа была составлена для вычисления значений тригонометрической функции с многократным повторением заданной последовательности вычислительных операций; для этой процедуры Лавлейс ввела понятие цикла - одной из фундаментальных конструкций структурного программирования. В третьей программе, предназначенной для вычисления чисел Бернулли, были уже использованы рекуррентные вложенные циклы. В своих комментариях Лавлейс высказала также великолепную догадку о том, что вычислительные операции могут выполняться не только с числами, но и с другими объектами, без чего вычислительные машины так бы и остались всего лишь мощными быстродействующими калькуляторами.
Ее работы в этой области были опубликованы в 1843 году. Однако в то время считалось неприличным для женщины издавать свои сочинения под полным именем, и Лавлейс поставила на титуле только свои инициалы. Поэтому ее математические труды, как и работы многих других женщин-ученых, долго пребывали в забвении. Да и машина Бэббиджа так и не была построена. Имя Ады Лавлейс воскресло из небытия в середине 1930-х годов в связи с работами английского математика Алана Тьюринга, введшего понятие логической алгоритмической структуры, получившей название машины Тьюринга, а также последующим созданием первых электронных вычислительных машин.
К концу 1970-х годов исследования, проведенные в министерстве обороны США, выявили отсутствие языка программирования высокого уровня, который бы поддерживал все основные этапы создания программного обеспечения. В мае 1979 г. победителем в конкурсе разработки языков был признан язык Ада, названный в честь Ады Августы Лавлейс. С появлением и широким распространением персональных компьютеров язык Ада во многом утратил свою значимость, однако до сих пор используется как язык высокого уровня для разработки программ, работающих в реальном масштабе времени.
Любопытно, что в честь Ады Лавлейс названы в Америке также два небольших города - в штатах Алабама и Оклахома. В Оклахоме существует и колледж её имени. Вроде бы - немного, но, вместе с тем, есть люди, искренне полагающие, что на сегодняшний день слава (или, по крайней мере, популярность) Ады Лавлейс затмила славу её знаменитого отца, и что её вклад в мировую цивилизацию, по крайней мере, соизмерим с вкладом великого поэта.
История создания ЭНИАК
Машина Эниак (ENIAC, аббревиатура от Electronic Numerical Integrator and Computer - электронный цифровой интегратор и вычислитель), подобно Марк-1 Говарда Эйкена, также предназначалась для решения задач баллистики. Но в итоге она оказалась способной решать задачи из самых различных областей.
С самого начала войны сотрудники Лаборатории баллистических исследований министерства обороны США, расположенной в районе Абердинского полигона, шт. Мэриленд, трудились над созданием баллистических таблиц, столь необходимых артиллеристам на полях сражений. Значение этих таблиц трудно переоценить. С их помощью артиллеристы могли делать поправки при наводке орудия с учетом расстояния до цели, ее высоты над уровнем моря, а также метеорологических условий - ветра и температуры воздуха. Однако для построения таблиц требовались очень длинные и утомительные вычисления - для расчета лишь одной траектории приходилось выполнять минимум 750 операций умножения, а каждая таблица включала не менее 2000 траекторий. Правда, дифференциальный анализатор позволил несколько ускорить расчеты, но это устройство давало лишь приближенные результаты, для уточнения которых привлекались затем десятки людей, работавших с обычными настольными калькуляторами.
Война разрасталась, военные разработки требовали ускорения, лаборатория не справлялась с работой и в конце концов вынуждена была обратиться за помощью. В расположенном неподалеку Высшем техническом училище Пенсильванского университета был создан вспомогательный вычислительный центр. Училище располагало дифференциальным анализатором, однако двое сотрудников вычислительного центра, Джон У. Мочли и Дж. Преспер Экерт, вознамерились придумать кое-что получше.
Мочли, физик, увлекавшийся метеорологией, давно мечтал о создании устройства, которое позволило бы применить статистические методы для прогнозирования погоды. Перед войной он смастерил несколько простых цифровых счетных устройств на электронных лампах. Возможно, интерес к электронным вычислительным машинам возник у него под влиянием идей Джона Атанасоффа, работавшего в шт. Айова. В июне 1941 г. Мочли в течение пяти дней гостил у Атанасоффа, наблюдая, как тот вместе со своим помощником Клиффордом Берри трудился над прототипом компьютера, содержащим около З00 электронных ламп.
Существенным или нет оказалось влияние Атанасоффа - позже этот вопрос стал предметом судебной тяжбы, - но вдохновил Мочли на эту работу Прес Экерт. Моложе Мочли на 12 лет Экерт был поистине виртуозом в технике. В возрасте восьми лет он построил миниатюрный приемник. Как вспоминал позднее Мочли, Экерт убедил его, что «мечты О компьютере можно осуществить на практике».
В августе 1942 г. Мочли написал нечто вроде заявки на пяти страничках, где вкратце изложил их совместное с Экертом предложение о создании быстродействующего компьютера на электронных лампах. Заявка затерялась в инстанциях. Однако через несколько месяцев лейтенант Герман Голдстейн, прикомандированный к училищу военный представитель, случайно услышал об этой идее. В то время армия крайне нуждалась в новых баллистических таблицах. Артиллеристы сообщали из Северной Африки, что из-за очень мягкого грунта орудия далеко откатываются при отдаче и снаряды не достигают цели.
Голдстейн, до войны преподававший математику в Мичиганском университете, сразу же оценил значение предлагаемого проекта компьютера и начал хлопотать от имени военного командования, чтобы проект приняли к разработке. Наконец, 9 апреля 1943 г. - в день, когда Экерту исполнилось 24 года, - армия заключила с училищем контракт на 400 тыс. долл., предусматривающий создание компьютера Эниак.
Группа специалистов, работавшая над этим проектом, в конечном счете выросла до 50 человек. Мочли был главным консультантом проекта, Экерт - главным конструктором. Разные по своему характеру и привычкам эти два человека прекрасно дополняли друг друга. Быстрый и общительный Мочли генерировал идеи, а сдержанный, хладнокровный и осторожный Экерт подвергал эти идеи строгому анализу, желая убедиться, что они действенны. «Он обладал потрясающей способностью переводить все на практический уровень, пользуясь простыми техническими средствами, - так охарактеризовал Экерта один из членов группы. - Прес был не тем человеком, который мог бы потеряться в тысяче уравнений».
Конструкция машины выглядела фантастически сложной - предполагалось, что она будет содержать 17468 ламп. Такое обилие ламп отчасти объяснялось тем, что Эниак должен был работать с десятичными числами. Мочли предпочитал десятичную систему счисления, ибо хотел, чтобы «машина была понятна человеку». Однако столь большое количество ламп, которые, перегреваясь, выходили из строя, приводили к частым поломкам. При 17 тыс. ламп, одновременно работающих с частотой 100 тыс. импульсов в секунду, ежесекундно возникало 1,7 млрд. ситуаций, в которых хотя бы одна из ламп могла не сработать. Экерт разрешил эту проблему, позаимствовав прием, который широко использовался при эксплуатации больших электроорганов в концертных залах: на лампы стали подавать несколько меньшее напряжение, и количество аварий снизилось до одной-двух в неделю.
Экерт разработал также программу строгого контроля исправности аппаратуры. Каждый из более чем 100 тыс. электронных компонентов 30-тонной машины подвергался тщательной проверке, затем все они аккуратно расставлялись по местам и запаивались, а иногда и перепаивались не раз. Эта работа потребовала большого напряжения сил всех членов группы, включая Мочли, ее «мозговой центр».
В конце 1945 г., когда Эниак ENIAC был наконец собран и готов к проведению первого официального испытания, война, нуждам которой он был призван служить, окончилась. Однако сама задача, выбранная для проверки машины, - расчеты, которые должны были ответить на вопрос о принципиальной возможности создания водородной бомбы, - указывала на то, что роль компьютера в послевоенные годы и годы «холодной войны» не снижалась, а скорее возрастала.
Эниак успешно выдержал испытания, обработав около миллиона перфокарт фирмы IBM. Спустя два месяца машину продемонстрировали представителям прессы. По своим размерам (около 6 м в высоту и 26 м в длину) этот компьютер более чем вдвое превосходил Марк-1 Говарда Эйкена. Однако двойное увеличение в размерах сопровождалось тысячекратным увеличением в быстродействии. По словам одного восхищенного репортера, Эниак работал «быстрее мысли».
Не успел Эниак вступить в эксплуатацию, как Мочли и Экерт уже работали по заказу военных над новым компьютером. Главным недостатком компьютера Эниак были трудности, возникавшие при изменении вводимых в него инструкций, т. е. программы. Объема внутренней памяти машины едва хватало для хранения числовых данных, используемых в расчетах. Это означало, что программы приходилось буквально «впаивать» в сложные электронные схемы машины. Если требовалось перейти от вычислений баллистических таблиц к расчету параметров аэродинамической трубы, то приходилось бегать по комнате, подсоединяя и отсоединяя сотни контактов, как на ручном телефонном коммутаторе. В зависимости от сложности программы такая работа занимала от нескольких часов до двух дней. Это было достаточно веским аргументом, чтобы отказаться от попыток использовать Эниак в качестве универсального компьютера.
Следующая модель - машина Эдвак (EDVAC, от Electronic Discrete Automatic Variable Computer - электронный дискретный переменный компьютер) - была уже более гибкой. Ее более вместительная внутренняя память содержала не только данные, но и про грамму. Инструкции теперь не «впаивались» в схемы аппаратуры, а записывались электронным способом в специальных устройствах, о которых Экерт узнал, работая над созданием радара: это - заполненные ртутью трубки, называемые линиями задержки. Кристаллы, помещенные в трубку, генерировали импульсы, которые, распространяясь по трубке, сохраняли информацию, как ущелье «хранит» эхо. Существенно и то, что Эдвак кодировал данные уже не в десятичной системе, а в двоичной, что позволило значительно сократить количество электронных ламп.
В конце 1944 г., когда Мочли и Экерт трудились над машиной Эдвак, способной хранить про граммы в памяти, на помощь им был направлен консультант. Джону фон Нейману, который в 41 год уже обрел известность как блестящий математик, суждено было оказать огромное влияние на развитие вычислительной техники в послевоенные годы.