Главная arrow Развитие ПО arrow Грейс Хоппер
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Грейс Хоппер Печать
Грейс Хоппер
В годы второй мировой войны Грейс Хоппер (Grace Murray Hopper), вступившая в женскую добровольную организацию содействия, была направлена на работу в Гарвардский университет, в отдел, занимавшийся вычислениями для нужд артиллерии.

Здесь, по ее словам, она стала «третьим в мире программистом первого в мире большого цифрового компьютера», «Марка-1». Она вспоминала: «В те дни мы не назывались программистами. Это слово еще не дошло до нас из Англии. Мы были кодировщиками). Однако Хоппер и ее коллеги Роберт Кэмпбел и Ричард Блок заложили исключительно прочный фундамент методов программирования.

Ввиду того что основной задачей гарвардского «Марка-1» было вычисление артиллерийских баллистических таблиц, в нем предусматривались некоторые математические операции общего назначения. Однако Грейс Хоппер и ее коллеги убедились, что для решения с помощью этой машины конкретных задач, как правило, требуются более специфические средства. И они справились с решением этой задачи наилучшим образом.

«Мы стали писать подпрограммы», - вспоминала Грейс Хоппер. Под этим подразумевались многократно используемые последовательности команд, построенные таким образом, чтобы из них можно было компоновать более крупные сегменты или блоки внутри программ.

Если программистам требовались подпрограммы, написанные ранее кем-либо другим, то они переписывали их из его блокнотика. Таким образом, хотя само слово «подпрограмма» было придумано несколько позднее, можно считать, что один из главных приемов современного программирования впервые стал применяться еще в 1944 г.

В следующем году Грейс Хоппер и ее коллеги ввели другое - столь же фундаментальное, хотя и менее привлекательное - понятие программистской деятельности. Однажды жарким, влажным летним днем таинственная неисправность заставила замолчать громыхающий компьютер «Марк-1 ». После тщательно проведенного исследования программисты установили, что контакты одного из реле были заблокированы останками мотылька, невесть как проникшего через лабиринт электрических цепей компьютера. С предельной осторожностью мотылька извлекли пинцетом, а это событие зафиксировали в журнале, который по распоряжению командования ВМС США педантично заполнялся на протяжении всей работы компьютера.

Сопроводительная подпись гласила: «Первый достоверный случай обнаружения насекомого «bug». Позднее Грейс  Хоппер вспоминала: «Когда к нам зашел офицер, чтобы узнать, чем мы занимаемся, мы ответили, что очищаем компьютер от насекомых debugging. Термин «дебаггин» (отладка) с тех пор прижился и стал использоваться для обозначения поиска неисправностей в компьютере, особенно в программном обеспечении.
 
Тот самый «жук», от которого происходит слово «bug»

Грейс Мюррей Хоппер, математик и пионер программирования. В 40-х годах, находясь на службе в ВМС США, она работала в Гарвардском университете на компьютере «Марк-1», проявив при этом незаурядное искусство в устранении технических неполадок. Она обнаружила и документально зафиксировала в рабочем журнале случай технической неисправности компьютера из-за насекомого, попавшего в одно из тысяч реле машины. Приведенная здесь запись в журнале гласит: «Реле 70 Панелъ F (жук) в реле. Первый достоверный случай обнаружения насекомого.»

Игра слов: в английском языке слово bug имеет несколько значений, в том числе и насекомое, и техническая неисправность.

В 1949 г. Хоппер перешла в компьютерную фирму Экерта и Мочли, где приняла участие в создании машины «Юнивак-1». Этой организации Грейс Хоппер оставалась верна и после того, как фирму поглотила компания «Ремингтон Рэнд» Remington Rand, и потом, когда последняя объединил ась с корпорацией Sperry «Сперри», образовав фирму «Сперри Рэнд» Sperry Rand, вплоть до ухода на пенсию в 1971 г., уже из отдела «Юнивак». На протяжении всего этого периода компьютерной истории Грейс Хоппер неустанно отстаивала мысль, что для- программирования следует использовать языки высокого уровня, т. е. языки, в определенном смысле возможно более близкие к естественному человеческому языку.

«Это были дни, полные неопределенности, - говорила Грейс Хоппер, вспоминая время, когда еще неоперившаяся компания Экерта и Мочли ютилась в помещении старой фабрики на севере Филадельфии. - Когда машина «Юнивак-1» не работала, мы, бывало, говорили, что не мешало бы ее зашвырнуть за забор на ту сторону, где была свалка, а самим махнуть на другую сторону - на кладбище».

Предложенная Мочли система кодирования, несмотря на все ее неоспоримые преимущества по сравнению с программированием в двоичном машинном коде, отнюдь не была панацеей. Поскольку язык этой системы был весьма далек от машинного языка нулей и единиц, фактически для ее реализации требовалась некая программа-посредник, которая осуществляла бы перевод про грамм в двоичный код компьютера.

Программу, записанную в системе кодирования Мочли, надо было просматривать и выполнять строка за строкой. Это делалось при помощи специальной программы-переводчика, называемой интерпретатором. Таким образом, каждая отдельная операция программы перед ее выполнением должна была подвергаться полному посимвольному разбору, даже если до этого она уже не раз использовалась.

В октябре 1951 г. Грейс Хоппер получила задание создать набор стандартных математических подпрограмм для машины «Юнивак-1». В процессе работы она заметила, что ее коллеги, как и программисты гарвардского компьютера «Марк-1», занимались переписыванием отдельных фрагментов и подпрограмм из одной программы в другую. «Этот способ был порочен по двум причинам,» - говорила Грейс Хоппер.

Во-первых, ввиду того что при переносе подпрограммы в другую программу приходилось менять все числа, задающие адреса конкретного месторасположения программы в памяти машины. Обычно эти адреса образовывали группу последовательных номеров. Поэтому для внесения подпрограммы в другую программу требовалось прибавить к каждому адресу подпрограммы некоторую константу, а, как отмечала Хоппер, «складывают программисты ужасно плохо».

Во-вторых, общеизвестно, что программисты крайне невнимательны при переписывании программ. Грейс Хоппер вспоминала: «Оставалось лишь поражаться, как часто цифра 4 превращалась в букву дельта (мы использовали ее для обозначения пробела) или букву А. Даже буква В умудрял ась становиться числом 13. Когда программисты занимались переписыванием подпрограмм, могло произойти что угодно. Очевидно, для подобной работы требовалось какое-то устройство, единственным назначением которого было бы аккуратное выполнение операций копирования и сложения».
 

См. также
 
Программирование в машинных кодах - вклад Грейс Мюррей Хоппер