Литмир - Электронная Библиотека
Содержание  
A
A

Архитекторы компьютерного мира - nonjpegpng_image102.jpg

Капитан второго ранга Грейс Хоппер

"Я имела то преимущество, что изучала как технику, так и математику и знала, как работает машина от начала и до конца. Конечно же, я была счастлива. Заканчивая в 1928 году колледж, я и не подозревала, что в 1944 году появится компьютер".

Вместе с Говардом Айкеном она опубликовала первое описание компьютера "Марк-1".

При работе на компьютере "Марк-I" Г. Хоппер и ее группой впервые были введены некоторые приемы, которые стали в дальнейшем широко использоваться в программистской практике. В частности, первыми инструментами, которые экономили труд программистов, были подпрограммы. Так вот, в августе 1944 года для "Марк-I" была написана первая подпрограмма для вычисления sin х. После нее последовали другие. "Мы стали писать подпрограммы", — вспоминала Г. Хоппер, хотя термин "подпрограмма" был введен позже (Морис Уилкс в Англии. — А. Ч.).

И еще одно фундаментальное понятие техники программирования впервые ввели Г. Хоппер и ее группа — "отладка". Причем случилось это при курьезных обстоятельствах. Жарким летним днем 1945 года неожиданно произошла остановка компьютера "Марк-I". Обнаружилась неисправность одного реле, контакты которого были заблокированы мотыльком, неизвестно каким образом туда попавшим. Вспоминает Г. Хоппер: "Когда к нам зашел офицер, чтобы узнать, чем мы занимаемся, мы ответили, что очищаем компьютер от насекомых (debuging). Термин "debuging" (отладка) с тех пор прижился и стал использоваться для обозначения поиска неисправностей в компьютере, особенно в программном обеспечении".

В 1949 году Г. Хоппер перешла на работу старшим математиком во вновь образовавшуюся фирму Маучли — Эккерта (создателей электронного компьютера ENIAC), где приняла участие в разработке программных средств коммерческого компьютера UNIVAC–I. Фирма располагалась в помещении старой фабрики на севере Филадельфии. "Когда машина UNIVAC–I не работала, мы, бывало, говорили, что не мешало бы ее выбросить за забор, на ту сторону, где была свалка, а самим махнуть на другую сторону — на кладбище", — вспоминала те годы Г. Хоппер.

Для облегчения процесса составления программ на машинном языке вместо записи команд в двоичной системе счисления (длинные серии единиц и нулей) в то время использовалась восьмеричная система счисления, запись в которой, как известно, в три раза короче двоичной, а взаимный переход от одной к другой формален. "Все в фирме были убеждены, что единственный способ писать эффективные программы — это пользоваться восьмеричной системой". Г Хоппер тоже освоила эту систему: научилась складывать, вычитать, умножать и делить в ней. Однако погружение в мир восьмеричной арифметики чуть было не стоило ей неприятностей в жизни, когда она подводила баланс своего банковского счета. (Выручил брат-банкир, напомнив ей, что банки все-таки работают с десятичной системой.) "Я столкнулась с проблемой жизни в двух мирах, — вспоминала Г. Хоппер, — вероятно, это было одной из причин, побудивших меня по возможности избавиться от восьмеричных чисел".

Надо заметить, что не одну Г. Хоппер занимала проблема облегчения труда программистов, работающих в машинных кодах. В 1949 году до ее прихода в фирму Джон Маучли создал систему под названием "Short Code", которая являлась примитивным языком программирования высокого уровня. В ней программист записывал решаемую задачу в виде математических формул, а затем, используя таблицу перевода символ за символом, преобразовывал эти формулы в двухлитерные коды. В дальнейшем специальная программа компьютера превращала эти коды в двоичный машинный код. Система, разработанная Дж. Маучли, была по существу одним из первых примитивных интерпретаторов, т. е. в последующие годы одним из двух типов транслятора. Эта система оказала большое влияние на Г. Хоппер. "Short Code" был первым шагом к чему-то такому, что давало программисту возможность писать программы на языке, отличном от машинного", — писала Г. Хоппер. Второй шаг предстояло сделать ей.

Немного отвлечемся и напомним читателю о двух типах трансляторов с позиций сегодняшнего дня. Первый тип, упоминаемый выше, — интерпретатор в каждый момент времени транслирует строку за строкой программу, написанную на языке высокого уровня, в программу на машинном языке и одновременно ее выполняет. Второй тип — компилятор транслирует весь текст программы, написанной на языке высокого уровня, в машинный код в ходе одного непрерывного процесса. При этом создается полная программа в машинных кодах, которую затем можно выполнить без участия компилятора. Работа компилятора состоит из трех этапов: сначала текст программы создается при помощи редактора текстов или другой программы текстовой обработки, затем текст компилируется, наконец скомпилированная программа выполняется. Разница между компилятором и интерпретатором аналогична разнице между переводчиком литературного произведения и переводчиком устной речи.

Итак, в 1951 году Г. Хоппер создала первый компилятор и ею же был введен сам этот термин. Компилятор Г. Хоппер осуществлял функцию объединения и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. "Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки — это называется компиляцией" — так она объясняла происхождение введенного ею термина. Конечно, между компилятором, созданным Г. Хоппер, и сегодняшними сходство небольшое, но начало было положено. В 1952 году на одной из первых конференций Ассоциации компьютерной техники в Питтсбурге Г. Хоппер сделала доклад "The Education of a Computer", посвященный компилирующим программам.

В этот период фирму Маучли — Эккерта поглотила компания Remington Rand (как это часто бывает, талантливые изобретатели оказались неумелыми коммерсантами). Но Маучли, Эккерт и Хоппер остались работать в новой компании.

Свой первый компилятор Г. Хоппер назвала А-0, затем по мере его расширения и улучшения в последующие годы появились его версии А-1, А-2, А-3 (две последние системы базировались на трехбуквенных псевдокодах для указания математических операций). В 1954 году группа под руководством Г. Хоппер разработала систему АТ-3, включающую язык программирования и компилятор, которая в дальнейшем получила название MATH-MATIC и продавалась компанией Remington Rand вместе с компьютером UNIVAC–I.

После удачного завершения работ по созданию MATH-MATIC Г. Хоппер и ее группа принялись за разработку нового языка и компилятора, который позволил бы пользователям программировать на языке, близком к обычному английскому. Они выбрали около 30 английских слов типа: add (сложить), compare (сравнить), transfer (переслать) и т. п., а затем разработали компилятор, который транслировал программы, написанные на этом языке, в машинный код.

Для адекватного распознания компилятором выбранных слов Г. Хоппер придумала способ, который сохранился в операторах будущих языков: каждое слово (название оператора) содержит неповторимую комбинацию из первой и третьей букв, поэтому компилятор при генерации машинного кода может игнорировать все остальные буквы в слове.

Создание "необычного" (по тем временам) языка и компилятора, который получил название В-0, было завершено в 1956 году. Необходимость появления подобной системы Г. Хоппер объясняла следующим образом: "Существует много различных людей, которым нужно решать разные задачи. Некоторые из них связаны с обработкой символов, другие — с обработкой слов, и им нужны языки другого типа, а не наши попытки превратить их всех в математиков". Действительно, в дальнейшем язык с успехом использовался людьми, работающими в бизнесе, в конторах фирм и в правительственных учреждениях. В 1958 году система В-0 поступила на рынок с новым названием FLOW-MATIC и компания, в которой трудилась Г. Хоппер, поменяла свое название на Sperry Rand Соrр. В отличие от FORTRAN — языка для научных приложений, FLOW-MATIC был первым языком для задач обработки коммерческих данных. Он был проще FORTRAN, и опыт, приобретенный за годы работы с ним, привел к созданию универсального языка COBOL. Справедливости ради необходимо отметить, что и другие языки, но в меньшей степени, послужили основой COBOL: язык AIMACO, созданный в ведомстве ВВС США в 1958 году (в разработке этого языка принимала участие и группа Г. Хоппер), язык COMTRAN, созданный фирмой IBM в 1958 году, язык FACT, разработанный фирмой Honeywell (этот язык имел влияние на поздние версии COBOL).

60
{"b":"252558","o":1}