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

 
Фортран Печать
В одну из пятниц апреля 1957 г. в компьютерный центр атомной лаборатории «Вестингауз-Беттис» возле Питтсбурга почтальон доставил загадочную посылку. Программист Херб Брайт и двое его коллег, выполнив большую часть своего недельного задания, слонялись перед комнатой, где стояла новенькая блестящая машина IBM-704. Сгорая от нетерпения, программисты открыли ящик, на котором не было никаких пометок, и обнаружили там стопку примерно из 2 тыс. перфокарт, но без всяких инструкций.

Рассматривая перфокарты, Брайт припомнил, что в фирме IBM уже на протяжении нескольких месяцев идет окончательная отладка языка высокого уровня, предназначенного для использования на IBM-704. Этот язык, названный Фортраном FORTRAN представлял собой автоматическую кодирующую систему, берущую на себя наиболее тяжелую часть работы программиста. Может, почтальон принес именно этот долгожданный компилятор, т. е. программу, переводящую программы на Фортране в машинные коды? Движимые предчувствием, Брайт и его друзья решили загрузить загадочные карты в компьютер и посмотреть, что получится.

Как только машина проглотила информацию, ленты магнитной памяти завращались и остановились, потом снова завращались и опять остановились, и, наконец, когда ленты замерли, загорелась лампочка готовности компьютера. Брайт вложил в считывающее устройство компьютера тестовую программу, написанную на Фортране, и нажал кнопку пуска. Затрещал принтер. Новый компилятор выдал сообщение: на карте № 25 обнаружена ошибка в операторе - пропущена запятая. Программисты, привыкшие к трудно понимаемым сообщениям в виде числовых кодов, были поражены ясностью этой информации. Неверный оператор исправили и снова нажали кнопку пуска. Ленты начали вращаться, и компьютер выдал тоненькую стопку перфокарт программы. Когда карты загрузили в считывающее устройство, заработал принтер и без остановки напечатал 28 страниц. Компьютер лишь слегка ошибся в формате выходных данных. «Но числа были правильными! Числа были правильными!» - восклицал позднее Брайт.
 

В возрасте 28 лет математик Джон Бэкус (John Bekus) организовал и возглавил в фирме IBM группу молодых программистов, разработавшую Фортран (FORTRAN). Созданный в 1957 г., после трех лет упорной работы, этот язык стал первым широко используемым языком высокого уровня.

Так Брайт и его коллеги оказались в числе первых пользователей Фортрана, первого широко распространенного языка программирования высокого уровня. Его появление ознаменовало, вероятно, важнейшую веху в истории машинных языков. С того дня 1957 г. число программистов, работающих с Фортраном, выросло настолько, что они могли бы заселить большой город.

Но уже следующее поколение программистов стало считать Фортран «ископаемым» среди машинных языков, называя его (иногда в шутку, а чаще всерьез) «динозавром», «интеллектуальным тупиком» и даже «цепью наростов, соединенных кусочками синтаксиса». Эдсгер Дейкстра, авторитет В. области программного обеспечения, едко заметил, что обучение студентов и специалистов по информатике Фортрану должно быть наказуемо как серьезное преступление. Тем не менее и десятилетия спустя Фортран не потерял своей популярности. Этот язык, предоставляющий большие возможности в обработке числовой информации, получил широкое признание среди научных работников и инженеров. Однако способность глотать и переваривать длинные цепочки чисел лишь частично объясняет его неизменное влияние.

Основная причина такого долголетия проста - Фортран был первым.

Исследователи фирмы IBM, создававшие Фортран, и не подозревали, что этот язык приобретет столь большое значение. Когда они в начале 1954 г. приступили к работе, информатика развивалась стихийно, и каждый работал, как бог на душу положит. Годы спустя руководитель группы разработчиков Джон Бекус вспоминал: «Признание в маленьком программистском братстве завоевывалось скорее неординарностью личности, подвижничеством в работе или способностью поглощать спиртное, а не интеллектуальными озарениями.

Возникала новая порода людей - программистов и специалистов по информатике. Их выводы были краткими и категоричными. Один из управляющих фирмы IBM решил, что из шахматистов получаются хорошие программисты, поэтому он заводил беседы с возможными кандидатами в программисты во время шахматных партий с одним из сотрудников фирмы IBM (который, кстати, был чемпионом США по шахматам).

Мало кто из восьми человек, занятых в разработке Фортрана, был серьезно знаком с компьютерами. Они пришли из университетов и авиакомпаний, а также из собственных программистских групп IBM. Даже Джон Бекус имел лишь несколько лет опыта работы с компьютером, когда приступил к разработке Фортрана.

До колледжа Бекус был посредственным учеником («Я прошел больше школ, чем могу вспомнить»). После службы в армии во время второй мировой войны он оказался в Нью-Йорке, где поступил в школу радиотехники. «Пределом моих стремлений, - признался Бекус позднее, было сделать высококачественное звуковоспроизводящее устройство». Однако преподаватель по ремонту телевизионной и радиоаппаратуры пробудил у Бекуса интерес к математике и убедил его продолжить учебу в Колумбийском университете. Так скромно началась одна из самых плодотворных карьер в истории вычислительной техники.
 
FORTRAN, COBOL, ALGOL
Фортран, Кобол и Алгол, эффективно связавшие человека с машиной, возникли в конце 50-х годов и долгое время лидировали в компьютерном мире. Большинство современных программ написано на языках, которые представляют собой различные потомки этих трех языков, ставших поистине классическими.

Бекусу было 25 лет, когда он, получив степень магистра математики в Колумбийском университете, поступил в 1950 г. программистом в фирму IBM. Вскоре он возглавил группу, разрабатывающую интерпретатор под названием «Быстрый кодировщик» для компьютера марки IBM-701. Затем он работал в составе группы по созданию более мощного преемника модели 701, машины IBM-704.

Позже, в 1953 г., Бекус, неоднократно заявлявший, что «всегда был лентяем», обратился к своему шефу с новаторским предложением. Это были сложный язык и компилятор к нему, упрощавшие программирование модели IBM-704. Система позволяла записывать программы в алгебраической форме, а компилятор должен был автоматически переводить ее в машинные коды.

Предложение Бекуса было весьма своевременным. С опозданием выйдя на рынок, фирма IBM испытывала затруднения с увеличением сбыта своих компьютеров. По этой причине она поддерживала исследования по информатике в Колумбийском, Гарвардском и некоторых других университетах. Но IBM продолжала и самостоятельные поиски путей снижения стоимости программирования и упрощения работы с компьютерами, чтобы сделать их более привлекательными, «дружественными» для пользователей.

Большинство научных работников, инженеров, преподавателей не имели ни времени, ни терпения использовать машинные коды или даже язык ассемблера, поскольку это требовало довольно глубокого знания устройства и действия самого компьютера. Однако эти люди, вероятно, не отказались бы изучить язык высокого уровня, особенно если бы он напоминал привычные им алгебраические формулы. Идее Бекуса был дан зеленый свет.

Местом рождения Фортрана стала штаб-квартира фирмы IBM на Мэдисон-авеню в Нью-Йорке. Группа Бекуса расположилась в этом офисе на двадцатом этаже, рядом с машинным отделением лифта. С самого начала деятельность группы проходила в атмосфере скептицизма и недоверия. Более ранние попытки совершенствования машинного кода и языка ассемблера нередко рекламировались как создание «почти человеческих» средств общения с компьютером. Эти заявления вызывали вполне естественное недоверие. Тем не менее группа Бекуса продвигалась вперед.

Они выделили основные понятия нового языка, в частности оператор присваивания (например, N = 100), задававший переменным определенные значения, ввели индексируемые переменные, которые сообщали компьютеру,. какой элемент из списка переменных нужен (например, X(3) означает третий элемент списка, названного X), предложили очень важный оператор DO, который позволял повторять нужную последовательность операторов заданное число раз. Как заявлял Бекус, большинство людей «считало, что основной вклад Фортрана - это возможность писать программы в виде алгебраических формул, а не на машинном языке, но на самом деле это не так).

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

Однако совсем другое дело - разработка компилятора. Бекус понимал, что развеять сомнения в возможностях автоматического программирования, т. е. написания программ на языках высокого уровня, можно лишь тогда, когда программы, полученные с помощью Фортрана, будут такими же быстродействующими и надежными, как и написанные в машинных кодах или на языке ассемблера.

Создать эффективный и надежный компилятор Фортрана оказалось более трудной задачей, чем предполагалось. Группе пришлось иметь дело со вводом, выводом, циклами DO и множеством других запутанных вещей, необходимых для преобразования команд на языке высокого уровня в машинный код.

Первоначально надеялись, что компилятор будет готов через полгода, однако работа над ним заняла более 2 лет. В конце 1956 г. и в 1957 г. интенсивность работы по доводке и отладке компилятора резко возросла. В этот период члены группы часто снимали номер в ближайшей гостинице, где отсыпались днем, работая на машине по ночам, чтобы иметь возможно больше непрерывного машинного времени. Ошибки одна за другой устранялись, пока в апреле 1957 г. не стало очевидным, что компилятор готов для использования владельцами машины IBM-704.

По ошибке, которую Бекус назвал «большим конфузом», компилятор Фортрана был послан в лабораторию «Вестингауз-Беттис» в виде колоды перфокарт и без каких-либо инструкций; что и позволило Гербу Брайту запустить Фортран вслепую. Остальные пользователи получили систему на магнитной ленте вместе с руководством для оператора.

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

Кроме того, фирма IBM снабжала все модели 704 Фортраном бесплатно. В результате к 1958 г. более половины всех машинных команд на 60 компьютерах фирмы были получены не вручную, а автоматически, с помощью Фортрана.

Бекус и его группа предвидели, что успех Фортрана подтолкнет и других производителей к разработке аналогичных языков для своих машин, что действительно и произошло. Однако Фортран быстро стал нормой и его адаптировали (приспособили) для машин многих других марок. Первую адаптацию осуществила сама фирма IBM.

Небольшая группа, в которую входил Дэвид Хеммис, за короткое время приспособила Фортран к машине IBM-650, меньшей, чем IBM-704. Хеммис и его коллеги разработали систему «Фортранзит» (FOR TRANSIT - для перехода); позднее два слова слились в одно. Таким образом, система «Фортранзит» стала первым транслятором исходного кода (так иногда называли программы на языках высокого уровня), работающим на машинах нескольких моделей.

Через пять лет Фортран использовался на шести различных моделях компьютеров фирмы IBM, а также на компьютерах компании «Сперри Рэнд», «Филко» и других. Не все в распространении Фортрана проходило гладко и безоблачно. Еще в начале 1957 г., когда продолжался процесс отладки, недостатки языка стали очевидны. Бекус и другие разработчики понимали необходимость более точной диагностики программных ошибок, а также важность раздельного и независимого написания подпрограмм и программных секций, которые затем можно было бы многократно использовать.

Благодаря усилиям разработчиков всего через год после создания оригинала появился Фортран II. Одно из достоинств нового языка состояло в том, что он позволял подсоединять программы на ассемблере, т. е. при желании программист мог писать программы частично на ассемблере, а частично на Фортране. Более поздняя версия, Фортран III, была создана в 1958 г. О Фортране IV еще больше расширявшем возможности Фортрана, стало известно в 1962 г.

Ядро языка, его основные операторы и выражения, оставались практически неизменными на протяжении многих лет. Но, поскольку Фортран многократно адаптировался ко все новым системам машин, для которых он не предназначался, постепенно накапливались отличия. Одни возможности терялись, новые возникали. Это неизбежно порождало путаницу в вопросе о том, что допустимо и что не допустимо в Фортране. Например, не все компиляторы одинаково истолковывали важнейший оператор DO: некоторые всегда выполняли цикл хотя бы один раз, не проверяя, нужно ли его вообще выполнять, другие осуществляли такую проверку. Чтобы навести порядок в подобных вопросах, изготовители и пользователи компьютеров договорились провести стандартизацию языка в 1966 г., а затем в 1977 г. Фортран и по сей день остается популярным средством программирования, особенно среди научных работников.

Большинство последующих языков - его прямые либо косвенные потомки. Однако главное достоинство Фортрана состоит в том, что он был первым широко распространенным коммерческим языком. Как говорил ось в руководстве фирмы IBM, выпущенном в 1957 г., «Фортран обеспечивает эффективное средство написания программ для модели 704, простое в обучении и не требующее знания машины». С тех пор научные работники, инженеры и студенты получили возможность общаться с компьютером без помощи профессиональных программистов, пишущих на ассемблере.
 
Дэвид Хеммис, один из первых разработчиков компьютерных языков, сидит за рулем своего автомобиля выпуска 1928 г. Фотография сделана в Уэстхемптоне, шт. Нью-Йорк, во время автомобильных гонок 1957 г. Работая программистом в фирме IBM, Хеммис разрывался в то лето между автомобильными гонками и написанием транслятора «Фортранэит», который впервые позволил программировать на Фортране на небольших университетских компьютерах.