Глеб Погудин
«Квантик» №2, 2014
Современная вычислительная техника начиналась, по большому счету, с калькуляторов. Первые компьютеры удерживали в памяти лишь несколько чисел и выполняли с ними стандартные арифметические операции: сложение, вычитание, умножение и деление. В общем и целом, внутри компьютеры не претерпели существенных изменений — это и сейчас калькуляторы, но с огромной скоростью вычислений и объёмом памяти. Однако язык общения человека и компьютера стал иным. Между нулями и единичками (учёно говоря, машинным кодом) и программистом появились программы-переводчики — компиляторы. Во-первых, это делает написание и чтение программ гораздо более удобным — они написаны на языке, в чём-то похожем на человеческий. Во-вторых, можно уже не думать о том, как устроен внутри данный конкретный компьютер, компилятор с этим сам разберётся.
О человеке, который сделал первые шаги в этом направлении, мы и расскажем. Её звали Грейс Хоппер, однако в разные времена она была известна как «удивительная Грейс» (Amazing Grace) и «бабушка Кобол» (Grandma COBOL). Интересно, что «Amazing Grace» — вообще-то название популярного христианского гимна, известного с 1779 года.
Родилась Грейс в 1906 году в Нью-Йорке. Свою научную карьеру начала как чистой воды математик — в 1930 году получила степень магистра в Йельском университете и там же написала под руководством известного математика Ойстина Оре диссертацию по алгебре. С 1931 г. начала преподавать математику.
Всё изменилось со вступлением США во вторую мировую войну. Грейс пошла служить добровольцем на флот. В звании младшего лейтенанта её направили в вычислительную лабораторию флота при Гарвардском университете. Там и произошло её первое знакомство с компьютерами, точнее говоря — с компьютером «Мark I». О нём хотелось бы сказать особо. Эта громадина весила четыре с половиной тонны и занимала площадь в несколько десятков квадратных метров. Несмотря на столь внушительный размер, по возможностям «Мark I» уступал некоторым современным калькуляторам: в памяти он мог хранить 72 числа и делать три операции сложения или вычитания за секунду. Чтобы перемножить два числа, ему требовалось уже шесть секунд.
С тех пор всю жизнь Грейс Хоппер была связана с военно-морским флотом США. Со временем она достигла чина контр-адмирала, и на большинстве фотографий мы видим её в мундире с внушительным, кстати, количеством наград.
Машинный код
После войны, в 1949 году, Грейс Хоппер попала в группу разработчиков компьютера «UNIVAC I» в компании «Eckert-Mauchly Computer Corporation». Он был гораздо более «сообразительным» — сложение выполнялось примерно за 500 микросекунд, а умножение — за 0,002 секунды. Для него Грейс Хоппер и написала в 1952 году первый в мире компилятор A-0. Он был устроен предельно просто: Грейс записала часто используемые ею подпрограммы (например, возведение числа в степень) в виде машинного кода на кассету (тогда основными носителями информации были они, а не диски или флешки), присвоив каждой свой уникальный номер.
Премия имени Грейс Хоппер от ассоциации вычислительной техники (ACM) впервые была присуждена в 1971 году Дональду Кнуту
Теперь в основной программе можно было, всего лишь указывая номер, вызывать соответствующую подпрограмму с кассеты. Это не только сократило программы, но и ввело в программирование принципиально новый шаг: сначала ты пишешь программу на своем языке (в данном случае — используя номера подпрограмм), а потом специальная программа — собственно компилятор — превращает этот текст в машинный код. Грейс Хоппер хотела, чтобы «работа программиста стала ближе деятельности математика», недаром одна из последующих версий этого компилятора получила название MATH-MATIC.
С точки зрения современного человека, создав A-0, Грейс Хоппер совершила одно из важнейших открытий в вычислительной технике. Однако, как нередко случается, современники не придавали её деятельности особого значения. Она писала позже: «У меня был работающий компилятор, и никто им не пользовался. Мне говорили, что компьютер может выполнять только арифметические операции». Однако довольно скоро Грейс Хоппер убедила руководство в перспективности такого подхода к программированию и в 1954 году возглавила отдел автоматизации программирования.
Под её руководством был создан язык FLOWMATIC, к которому руководство также поначалу относилось скептически. Это был первый в мире язык программирования, программы на котором состояли из слов английского языка. С точки зрения удобства это был очень важный шаг — если вы знаете английский, то даже вам, не знакомым с языком FLOW-MATIC, примерно понятно, что делает эта программа.
На лекции
Эта новинка пришлась очень кстати, так как к концу 50-х годов многие люди за пределами узких математических и научных кругов стали понимать, что на компьютер можно переложить много всякой рутинной и вычислительной работы. А теперь и язык общения с этим «работником» стал гораздо более привычным.
Фрагмент программы, написанной на языке COBOL
Поэтому самый известный язык, созданный Грейс Хоппер, назывался «COBOL». Его название является аббревиатурой от «COmmon Business Oriented Language» — общий язык для бизнеса или, если перевести более вольно, всеобщий язык для деланья дел. Он оказался очень продуманным — поддерживался и развивался в течение сорока лет, изменения вносились в COBOL вплоть до 2002 года. Это весьма солидный возраст для компьютерной технологии.
Грейс Хоппер похоронена на Арлингтонском национальном кладбище
Многие в шутку говорят, что главным достижением Грейс Хоппер было не написание первого компилятора, а то, что она придумала термин «debugging» (на русский это обычно переводится как отладка, хотя иногда пишут просто «дебаг»). Он означает поиск ошибок в программе. Дело в том, что во время работы Грейс и её коллег на компьютере «Mark II» в Гарварде в 1947 году одна из неисправностей была связана с тем, что внутри компьютера застрял мотылёк.
С тех пор и повелось называть поиск ошибок словом «debugging» (буквально на русский это переводится примерно как «дезинсекция» или «разжучивание»). Сам же «герой» оказался вклеен в лабораторный журнал, который теперь хранится в Национальном музее американской истории в Вашингтоне.
Кроме весьма удачной карьеры программиста Грейс Хоппер много лет посвятила популяризации программирования, в частности языка COBOL, и обучению ему. Она была известна как интересный и эмоциональный рассказчик. Например, она часто приходила на лекцию с тридцатисантиметровой веревочкой, поясняя, что столько свет проходит за одну наносекунду и именно поэтому сигнал со спутников идет так долго, а компьютерам лучше быть маленькими.
Вот такой была эта воистину удивительная Грейс Хоппер!