Музей Вехи истории Показать/скрыть Великие творцы Показать/скрыть Счетные устройства Показать/скрыть
Открыть все темы
Персоны, термины и понятия
Поиск в музее

ВЕЛИКИЕ ТВОРЦЫ. Современная история. 50 годы

« Брук Исаак Семенович

ХОППЕР (Hopper) Грейс (1906-92), американский ученый в области компьютеров. Ей принадлежит изобретение первого в мире компилятора. Одна из создательниц широко применяемого языка программирования КОБОЛ (1959).

Если есть кто-то в компьютерном мире вообще и в истории языков программирования в частности, кто не нуждается в представлении, — это, конечно, капитан Грейс Хоппер...
Джин Сэммит


Слова, вынесенные в эпиграф, принадлежат Джин Сэммит, одной из известных ученых в области программирования, автору многих книг по истории программирования. Для зарубежных специалистов по информатике эти слова неудивительны, однако нашим читателям имя Грейс Хоппер малоизвестно. Более того, в некоторых переводах зарубежных книг по программированию ее фамилия (если она упоминалась) преподносилась читателю в мужском роде. (Исключение составляет прекрасный перевод книг «Software» и «Computer Languages», Time-Life Books Inc., 1985, 1986 — см. лит.)
Сделаем попытку восполнить указанный пробел и осветить некоторые штрихи жизни и деятельности удивительной женщины-программиста.
Грейс Мюррей Хоппер родилась в Нью-Йорке 9 декабря 1906 г. в семье страхового агента Уолтера Флетчера. С детства она увлекалась не куклами (что обычно для девочек), а различными механическими устройствами — «машинками», как она их называла. В 1928 г. она закончила с отличием колледж Вас-сара в Пугкигси и продолжила свое образование в Йельском университете. Здесь она в 1930 г. получила степень магистра и в 1934 г. — доктора философии по математике (опять же редкость для женщины). Затем, вернувшись в Вассар, она преподавала математику. В 1941 г. Г. Хоппер прослушала несколько курсов в университете Нью-Йорка.
В декабре 1943 г., в самый разгар второй мировой войны, она приняла присягу и в мае 1944 г. поступила на службу в ВМФ США. Получив в июне 1944 г. звание младшего лейтенанта, Г. Хоппер была включена в отдел ВМФ, который занимался разработкой программ для компьютера ASCC (Mark-1), детища Говарда Айкена.
Она вспоминает, что стала «третьим в мире программистом (наверно, первыми двумя она считала своих коллег — мичманов Роберта Кэмпбелла и Ричарда Блока. — А. Ч.) первого в мире большого цифрового компьютера». И далее продолжает: «В те дни мы не назывались программистами. Это слово еще не дошло до нас из Англии, мы были кодировщиками». Однако самый маленький морской офицер (ее рост был 150 см и вес 47 кг) и ее коллеги — мичманы заложили в те годы фундамент здания с названием «программирование». Г Хоппер доказала, чего она стоит как программист. Впоследствии она писала: «Я имела то преимущество, что изучала как технику, так и математику и знала, как работает машина от начала и до конца. Конечно же я была счастлива. Заканчивая в 1928 г. колледж, я и не подозревала, что в 1944 г. появится компьютер». Вместе с Говардом Айкеном она опубликовала первое описание компьютера «Марк-1» [I].
При работе на компьютере «Марк-1» Г. Хоппер и ее группой впервые были введены некоторые приемы, которые стали в дальнейшем широко использоваться в программистской практике. В частности, первыми инструментами, которые экономили труд программистов, были подпрограммы. Так вот, в августе 1944 г. для «Марк-1» была написана первая подпрограмма для вычисления sin x. После нее последовали другие. «Мы стали писать подпрограммы», — вспоминала Г. Хоппер, хотя термин «подпрограмма» был введен позже (Морис Уилкс в Англии. — А. Ч.).
И еще одно фундаментальное понятие техники программирования впервые ввели Г. Хоппер и ее группа — «отладка». Причем случилось это при курьезных обстоятельствах. Жарким летним днем 1945 г. неожиданно произошла остановка компьютера «Марк-1». Обнаружилась неисправность одного реле, контакты которого были заблокированы мотыльком, неизвестно каким образом туда попавшим. Вспоминает Г. Хоппер: «Когда к нам зашел офицер, чтобы узнать, чем мы занимаемся, мы ответили, что очищаем компьютер от насекомых (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 Corp. В отличие от ФОРТРАНа — языка для научных приложений, FLOW-MATIC был первым языком для задач обработки коммерческих данных. Он был проще ФОРТРАНа, и опыт, приобретенный за годы работы с ним, привел к созданию универсального языка КОБОЛ. Справедливости ради необходимо отметить, что и другие языки, но в меньшей степени послужили основой КОБОЛа: язык AIMACO, созданный в ведомстве ВВС США в 1958г. (в разработке этого языка принимала участие и группа Г Хоппер), язык COMTRAN, созданный фирмой IBM в 1958 г., язык FACT, разработанный фирмой Honeywell (этот язык имел влияние на поздние версии КОБОЛа).
Создание универсального, машинно независимого языка высокого уровня для деловых применений и бизнеса стало очередной задачей, за разрешение которой в начале 1959 г. взялась энергичная Грейс Хоппер. Она обратилась за поддержкой в Министерство обороны США, которое вскоре организовало конференцию по языкам программирования. Эта конференция, получившая в дальнейшем название КОДАСИЛ (CODASYL — Conference on DAta SYstems Language), организовала три группы по разработке нового универсального языка и Исполнительный комитет, осуществлявший контроль за разработкой. К осени 1959 г. создание языка было завершено и он получил имя КОБОЛ (COBOL — Common Business Oriented Language). Одним из основных консультантов при создании языка была Грейс Мюррей Хоппер.
Курьезный случай (и в то же время неожиданная реклама КОБОЛа) произошел с Г. Хоппер во время ее посещения компьютерного центра в Японии. Гостеприимные японцы никак не могли понять ее просьбу, пока она не обратилась к операторам КОБОЛа. «Move (переместить) — сказала она, показывая на себя, — goto (перейти к) отель «Осака». После чего японцы сразу отвезли ее в гостиницу.
В 1967 г. Хоппер вернулась на действительную службу в ВМФ и к 1980 г. стала капитаном Управления вычислительной техники в Вашингтоне. В 1983 г. она получила звание капитана первого ранга, а в ноябре 1985 г. — звание контр-адмирала. В 1982—1986 гг. она была старейшим действующим офицером американской армии. После отставки из армии в 1986 г. она еще некоторое время работала консультантом фирмы DEC.
В начале января 1992 г. из Америки пришло сообщение (Newsbytes News Network, January, 3, 1992): «Недалеко от Вашингтона в возрасте 85 лет после продолжительной болезни скончалась Грейс Мюррей Хоппер, одна из изобретателей языка КОБОЛ».
Хоппер начала работать с компьютерами с конца 40-х гг. Она участвовала в работах над «Марк-1», «Марк-11», «Марк-111» и UNIVAC-I. Ее часто называли Мамой КОБОЛа и Бабушкой КОБОЛа...»
Заслуги Г. Хоппер в программировании оценены по достоинству. Более 40 университетов и колледжей присвоили ей различные звания. Г. Хоппер была обладательницей первой награды по информатике «Человек года», присуждаемой Ассоциацией управления и обработки данных. На церемонии отставки в 1986 г. в Бостоне на борту авианосца морской министр Джон Ф. Леман младший представил адмирала Грейс Хоппер к правительственной награде.
Автор одной из первых книг по проектированию компиляторов (1971) профессор Корнеллского университета Дэвид Грис, оценивая значимость работ Г. Хоппер, пишет, что в ее наследии имеются «наметки многих инструментов и

способов в отношении компиляторов, которые в настоящее время считаются общепризнанными: библиотека подпрограмм, дополненная спецификациями, трансляция формул в их элементарные компоненты; первичные функции компилятора; подпрограммный интерфейс и относительная адресация; компонующий загрузчик и оптимизация текста программы». И далее продолжает: «Она одной из первых поняла, что именно программные средства, а не аппаратные потребуют большего числа затрат. Она предвидела тот день, когда для математиков уже не будет необходимым знание системы команд компьютера... Хоппер предвосхитила символьную обработку и хорошо понимала, что произойдет даже в отношении искусственного интеллекта (хотя в то время этого термина еще не существовало. — А. Ч.}, когда говорила:
«В настоящее время задача состоит в том, чтобы в наиболее возможной степени заменить человеческий мозг на электронный цифровой компьютер».

А. П. Частиков

Еще по теме: Хоппер, Языки программирования

« Брук Исаак Семенович

Главная | О проекте | Музеи мира | Библиография

©2001-2017 ANT-Soft