«Открытые системы»

Язык Фортран оказал не меньшее влияние на развитие программирования, чем транзистор — на прогресс процессоров

Уникальную по своей исторической важности работу Ады Лавлейс, а также язык Plankalkul, созданный Конрадом Цузе, все же стоит отнести к предыстории языков программирования: ни в том, ни в другом случае не было написано ни одной работающей программы. К тому же детальные сведения о Plankalkul (по-немецки — «план вычислений») были раскрыты Цузе только в 1972 году, а компилятор для этого языка был создан в 2000 году, то есть уже после смерти своего автора. (Plankalkul был первым из так называемых языков «не фон-неймановского типа».)

EDSAC — один из первых компьютеров, построенных в Великобритании

Первым практическим шагом, упрощающим программирование, стала замена двоичных кодов восьмеричными или шестнадцатеричными кодами команд и адресов; считается, что именно с этого началось создание языков первого поколения. Появившиеся в 50-е годы языки ассемблера (второе поколение) позволили записывать машинные команды в текстовой форме, они переводили символическую запись в двоичную форму и брали на себя задачу распределения памяти. Выдающуюся роль в создании языков ассемблера сыграл англичанин Дэвид Уиллер, написавший самый первый ассемблер для EDSAC — одного из первых компьютеров, построенных в Великобритании. Ему же принадлежит идея создания программной системы с помощью инструмента вызова закрытых подпрограмм, что позволяет собирать программу из отдельных модулей, разработанных независимо. В 1951 году Уиллер написал, вероятно, первую работу по программированию «Подготовка программ для электронных цифровых компьютеров». Языки ассемблеров совершенствовались параллельно с развитием архитектуры компьютеров, вскоре появились программы-загрузчики, макроассемблеры.

Программирование на ассемблере было чрезвычайно эффективным с точки зрения использования машинных ресурсов, но качество программ в значительной степени зависело от квалификации программиста, кроме того программы были привязаны к определенной архитектуре, следовательно, ни о какой мобильности речи не могло быть. Теперь понятно, что эти проблемы без особых сложностей решаются средствами языков программирования высокого уровня (третье поколение), первым среди них стал Фортран. Как и многие другие выдающиеся инновации, язык родился в корпорации IBM. Этому событию способствовало то, что в начале 50-х, в разгар Корейской войны армии США требовались вычислительные машины, спрос был, но на тот момент IBM их еще не выпускала. Однако после исторической победы Томаса Уотсона-младшего над Томасом Уотсоном-старшим, бывшим в ту пору руководителем корпорации, в споре о том, строить или не строить компьютеры, IBM активно включилась в борьбу на этом поле с компанией UNIVAC. Хронологически первой стала модель 701, которая так и называлась — Defense Calculator («военный калькулятор»). Она оказалась на редкость удачной и была выпущена большой серией, почти 200 экземпляров, а ее «наследница» на гражданском рынке, модель 704 — в еще большем количестве. Появление серьезного парка компьютеров неожиданно обострило новую проблему — проблему программирования. Пока компьютеры были единичными, о трудоемкости программирования особенно не задумывались, но когда этот вид деятельности стал массовым, потребовались средства автоматизации.

В конце 1953 года молодой научный сотрудник Джон Бэкус обратился к руководству корпорации с предложением о том, как можно решить возникшую проблему. Получив добро, он стал собирать команду. По понятным причинам профессиональных специалистов по программному обеспечению не было, поэтому у членов команды квалификационный опыт был самым разнообразным, но не обремененная лишним знанием команда была полна энтузиазма. Много лет спустя один из ее членов, математик Ричард Гольдберг, писал: «Мы были хакерами своего времени, возможно, первыми в истории компьютеров». Первым сотрудником Бэкуса и одним из ведущих разработчиков будущего языка был Ирвин Зиллер; побывав в Массачусетском технологическом институте, он ознакомился с тем, как там создавалось программное обеспечение, и пришел к выводу, что тамошние яйцеголовые переусложняют решение задачи. Сам Бэкус и его коллеги были скорее прагматиками, чем исследователями, они по большей части ориентировались на интуицию. За это их в последующем немало склоняли, но по состоянию дел на начало 50-х годов они приняли разумное решение, и в этом было их преимущество.

Как ни странно, но, следуя интуитивным представлениям, команде удалось сделать две замечательные вещи, во-первых, совместить возможность записи алгоритмов с выразительными способностями естественного языка. Сейчас это кажется вполне логичным, но воспитанное на ассемблерах первое поколение программистов с трудом воспринимало отсутствие видимого соответствия между операторами языка и машинными командами. Этот подход, конечно же, был навеян работами Грейс Хоппер над языками A-0, A-1 и A-2, через несколько лет переросшими в Кобол. Вторая удачная находка — эффективная технология компиляции, которая позволяла получать коды, не слишком громоздкие по сравнению с кодами, написанными на ассемблере. Можно только удивляться, но экспериментальные компиляторы, создаваемые в МТИ, уступали Фортрану по эффективности кода на порядок.

Многие решения, принятые Бэкусом, сегодня кажутся наивными. Например, декларирование типа переменной не было обязательным. Переменные с именами, начинающимися с I, J, K, L, M и N, по умолчанию считались целыми (INTEGER), все остальные — действительными (REAL), что породило одну из первых фортрановских шуток: «GOD is REAL unless declared INTEGER», что можно перевести как «Бог реален, если не объявлен целым». В языке был сделан явно завышенный акцент на оператор GO TO, что дало автору структурного программирования и апологету научного программирования Эдсгеру Дейкстра подвергнуть Фортран уничижительной критике. Он считал, что GO TO ведет к катастрофически последствиям, и команды безусловного перехода должны быть исключены из языков высокого уровня. Принимая справедливость этой критики, надо учесть, что она обрушилась на Фортран в конце 60-х, когда программные системы стали достаточно сложными, а до этого целое десятилетие язык благополучно обеспечивал программирование вычислений.

Компилятор Fortran I состоял из 25 тыс. строк кода и поставлялся с каждой машиной IBM 704. В 1958 году появились FORTRAN II и его не получившая признания версия Fortran III, в 1961-м — «очищенный» вариант Fortran IV, а в 1966-м — стандарт Fortran 66, который стал первым международным стандартом языка высокого уровня. Путь к современным стандартам Fortran 77 и Fortran 90 был достаточно болезненным, но все же они были приняты и действуют поныне. Дальнейшее развитие язык получил в стандартах XL Fortran и Fortran 95.

Долгожительство Фортрана дало основание одному из его авторов Дэвиду Сэйру заявить: «Железо может изменяться с высокой скоростью, а языки программирования и контент остаются. Они прожили 50 лет и будут живы впредь».


Джон Бэкус (род. в 1924 году) поступил в Университет штата Вирджиния в 1943 году, но ходил только на занятия по музыке и в 1943 году был отчислен. После этого Бэкуса призвали на военную службу. Демобилизовавшись, он поступил в нью-йоркскую школу радиотехники. Учеба пробудила интерес к математике и Бэкус поступил в Колумбийский университет в Нью-Йорке. В 1950 году он получил работу в IBM, и в 1952 году присоединился к проекту по разработке компьютера модели 701, ставшего прародителем всех последующих моделей мэйнфреймов IBM. В 1954 году группа Бэкуса представила спецификацию нового языка — Фортран. В 1960 году, для удобства работы с программистами из Цюриха над языком программирования Algol-60, Бэкус применил специальные диаграммы для описания конструкций языка, разработанные совместно с Питером Науром. Эти конструкции впоследствии стали повсеместно применяться для описания алгоритмических языков — форма Бэкуса-Наура. Третьим крупным вкладом Бэкуса в информатику стала разработка функционального языка программирования, названного FP. Он не получил широкой известности, однако имеет большое значение, поскольку в нем сформулированы принципы функционального программирования.


Дэвид Уилер (1927 — 2004) получил образование в Тринити-колледже в Кембридже. Уилер закончил колледж в 1948 году, но еще за год до выпуска, в 1947-м, он присоединился к группе студентов, работавшей под руководством Мориса Уилкса над хранимой компьютерной программой для машины Edsac. Первая программа заработала на Edsac в 1949 году, в ней было реализовано много новаторских идей, предложенных Уилером.

В 1951 году он совместно со своими коллегами опубликовал первую книгу для программистов The Preparation of Programs for an Electronic Digital Computer («Подготовка программ для электронного цифрового компьютера»). Вскоре после этого Уилер получил должность доцента в Университете штата Иллинойс, где работал над системой программирования для компьютера Ordvac(Ordnance Discrete Variable Automatic Computer). В 1953 году Уилер вернулся в Кембридж.

В 1965 году он стал членом совета Дарвиновского колледжа, а в 1966 году работал в Университете штата Калифорния в Беркли, где занимался выработкой способов связи терминалов с мэйнфреймами. Также в 1968 году он работал некоторое время в знаменитой Bell Labs над технологиями сжатия данных.


Алан Тьюринг (1912 — 1954) провел школьные годы в частном интернате. В 1931 году поступил в Кембриджский королевский колледж, и, еще будучи студентом, занимался созданием «мыслящей машины» — теоретического прообраза современного компьютера.

В 1939 году военное ведомство поручило Тьюрингу расшифровать код германской шифровальной машины «Энигма». Через полгода он разработал устройство, названное им «Бомбой», которое позволяло читать практически все сообщения «люфтваффе». А спустя год был «взломан» и более сложный вариант «Энигмы», использовавшийся нацистскими подводниками.

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

В 1952 году по воле случая внимание общественности было привлечено к нетрадиционной сексуальной ориентации Тьюринга, после чего против него выдвинули обвинение в «непристойном поведении», завершившееся судом.

8 июня 1954 года Алан Мэтисон Тьюринг был найден мертвым в своем доме. Он покончил жизнь самоубийством, отравившись цианистым калием.