Язык программирования Фортра́н (Fortran). Почему физики всё ещё используют Fortran

В 2017 году языку Fortran исполняется 60 лет. За это время язык несколько раз дорабатывался. «Современными» версиями считаются Fortran 90, 95, 2003 и 2008. Если изначально это был язык программирования высокого уровня с чисто структурной парадигмой, то в более поздних версиях появились средства поддержки ООП и параллельного программирования. На сегодняшний день Fortran реализован для большинства платформ.

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

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

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

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

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

Поэтому они наверняка согласились бы изучить язык высокого уровня, особенно если бы он напоминал привычные им алгебраические формулы. Такие рассуждения подвигли IBM к разработке Fortran.


IBM-704

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

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

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

Даже сам руководитель команды разработки Fortran Джон Бекус имел лишь несколько лет опыта работы с компьютером, когда приступил к созданию нового языка программирования.
До колледжа Бекус был посредственным учеником («Я прошел больше школ, чем могу вспомнить»). После службы в армии во время второй мировой войны он оказался в Нью-Йорке, где поступил в школу радиотехники. «Пределом моих стремлений было сделать высококачественное звуковоспроизводящее устройство», - признался Бекус позднее,.

Однако преподаватель по ремонту телевизионной и радиоаппаратуры пробудил у Бекуса интерес к математике и убедил его продолжить учебу в Колумбийском университете. Так скромно началась одна из самых плодотворных карьер в истории вычислительной техники.

Итак, разработчики во главе с Бекусом расположились в штаб-квартире фирмы IBM на Мэдисон-авеню в Нью-Йорке.

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

Как заявлял Бекус, большинство людей считало, что основной вклад Fortran - это возможность писать программы в виде алгебраических формул, а не на машинном языке. Но на самом деле это не так. По его мнению, Fortran в первую очередь автоматизировал организацию циклов. Важность этой задачи при разработке научных приложений сложно переоценить. Работа над языком шла быстро.

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

По плану на разработку компилятора отводилось полгода, однако работа над ним заняла более двух лет.

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

«Большой конфуз»

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

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

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

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

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

На самом деле, примерно в одно и то же время с Fortran"ом появилось еще два языка высокого уровня – Кобол и Алгол. Начиная с конца 50-х годов они долгое время лидировали в компьютерном мире. Большинство современных программ написано на языках, которые представляют собой потомки этих трех языков.

Распространение и адаптация

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

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

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

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


Дэвид Хеммис – один из первых разработчиков компьютерных языков, за рулем своего автомобиля выпуска 1928 года. Фотография сделана в Уэстхемптоне (шт. Нью-Йорк) во время автомобильных гонок 1957 года.

Доработка

Тем не менее, работу над новым языком нужно было продолжать достаточно долго: это стало ясно еще в начале 1957 года, когда продолжался процесс отладки. Бекус и другие разработчики понимали, что язык нуждается в более точной системе диагностики программных ошибок. Кроме того, необходимо было реализовать возможность раздельного и независимого написания подпрограмм и программных модулей. Таким образом язык получил бы еще одно преимущество – повторное использование кода.

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

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

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

В 1966 году первый стандарт получил название Fortran 66. В 1977 году, соответственно, вышел стандарт Fortran 77. В 1991 году появился Fortran 90. Fortran 95 создан в 1997 году.

Fortran в СССР

В Советском союзе ко двору больше пришелся Алгол-60. Поэтому Fortran в этой стране появился позже. Тем не менее, постепенно он вышел на первое место по популярности. Были разработаны компиляторы (трансляторы) для большинства отечественных ЭВМ – «Минск-32», БЭСМ-4, БЭСМ-6, АС-6, ЕС ЭВМ, СМ ЭВМ, МВК «Эльбрус» и так далее.

В ИПМ им. Келдыша в разное время было разработано несколько трансляторов. Два из них – Фортран-Алмо и Форшаг (Фортран шаговый) были написаны на языке Алмо и код генерировали на этом же языке. Это позволило установить трансляторы на несколько разнотипных ЭВМ. В обоих трансляторах реализован стандарт Fortran 66.

Форшаг также включал язык диалога, который позволил создавать, редактировать и выполнять трансляцию кода в диалоговом режиме. Помимо этого, был разработан комплекс графических программ для Фортрана – Графор, который активно использовался на различных ЭВМ.

Fortran и по сей день остается популярным среди научных работников. Это первый язык программирования высокого уровня, имеющий транслятор, получивший практическое применение и дальнейшее развитие. Как говорилось в руководстве фирмы IBM, выпущенном в 1957 году, «Fortran обеспечивает эффективный способ создания программ для модели 704, прост в обучении и не требует глубоких знаний в области ЭВМ».

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

Однако следующее поколение программистов стало относиться к Fortran"у как к «ископаемому». Эдсгер Дейкстра, язвительно отмечал, что обучение студентов этому языку должно приравниваться к серьезному преступлению.

* "Магия ПК" 2000 №6(28), С. 49–50.

В 1955 году увидел свет первый алгоритмический язык высокого уровня FORTRAN (FORmula TRANslator – транслятор формул). Он использовался в основном для решения научно-технических и инженерных задач, а разработали его сотрудники фирмы IBM под руководством Джона Бэкуса . Чуть позже, в 1957 году, Джон Бэкус и его сотрудники установили в IBM (Beстингхауз) первый компилятор языка Фортран. Программисты, ранее работавшие исключительно на Ассемблере, скептически относились к возможностям высокопроизводительного языка высокого уровня, поэтому основным критерием при разработке стандартов на Фортран и создания компиляторов с этого языка была эффективность исполняемого кода. Кстати, термин "компилятор" тогда еще широко не использовался, хотя уже был введен Грейс Хоппер – единственной в США женщиной-адмиралом, которую называли также "первой леди программирования и бабушкой Кобола".
Большинство операторов Фортрана транслировались непосредственно в одну–две машинные команды, простые синтаксические конструкции и активное использование меток и goto позволяло получить очень быстрый код, и в результате программы на Фортране подчас работали быстрее ассемблерных. Сама внутренняя структура оттранслированной программы была также очень простой – весь код, все подпрограммы и все данные вместе с общим блоком размещались исключительно в статической памяти, из-за чего, правда, невозможно было использовать рекурсию.
Поскольку Фортран был первым языком высокого уровня, отвечающим нуждам большинства пользователей того времени, да еще и простым в изучении, распространился он очень быстро.
Из-за широкого распространения этого языка и появления множества Фортран-программ (преимущественно вычислительного характера) насущным стал вопрос его стандартизации. Сначала это был стандарт Fortran IV 1964 года, затем, по мере появления новых идей, в 1978 году был принят новый стандарт Fortran 77 (f77) с большим числом более современных и гибких синтаксических расширений. Сегодня наиболее распространенным вариантом Фортрана являются Fortran 90 (f90) и Fortran 95 . Группа энтузиастов заканчивает работу над суперверсией языка F2k, которая будет опубликована в этом году.
Хотя в новые версии языка вносились подчас как ненужные дополнения (например, расширения, связанные с динамической аллокацией памяти), так и полезные, типа модульной организации программы, работы с частями массивов и др., сегодня этот язык нельзя назвать перспективным для изучения, так как синтаксис его значительно устарел.
Однако тем, кому довольно часто приходится решать различные вычислительные задачи, совсем не обязательно каждый раз брать в руки учебник по математике и "начинать с нуля". В 90% подобных случаев то, что вы ищете, уже давно реализовано и отлажено на Фортране. Поэтому, скорее всего, жизнь Фортрану обеспечена надолго.
Есть и еще одна, сравнительно молодая ниша для Фортрана – параллельные вычисления, где строгая семантика языка позволяет получать высокопроизводительные программы. Обычно используется стандарт f90, немного расширенный набором операторов для указания пригодных к распараллеливанию частей программы. Параллельный Фортран имеет свой стандарт HPF (High Performance Fortran). Тем не менее фанаты Фортрана, девизом которых стала легендарная фраза "Зачем мне изучать другие языки, когда я могу всё написать на Фортране", ощущали его очевидную непригодность для крупномасштабных проектов, связанную с привязанностью к синтаксису 50-х годов, и пытались ввести в него модные идеи ООП, но объектный Фортран в качестве стандарта так и не появился.
Среди бесплатно распространяемых версий Фортрана наиболее известен f2c, реализованный для всех UNIX-систем и преобразующий текст Фортран-программы в Си-код. Для DOS имеется версия bcf77, распространяемая бесплатно. Из коммерческих версий в первую очередь надо отметить Microsoft Fortran, позволяющий создавать dll-библиотеки, и Watcom Fortran, генерирующий высокоэффективный код. Для задач, требующих высокой точности вычислений, предназначен компилятор фирмы MicroWay. А вообще различные по качеству компиляторы Фортрана имеются на абсолютно всех компьютерных платформах.
Однако основная заслуга Фортрана в другом. Когда появилась необходимость в разработке очень крупных проектов, недостатки Фортрана, связанные в первую очередь с "тяжелой" отладкой, стали излишне обременительны. Поэтому Фортран послужил сильнейшим стимулом для развития теории отладки и тестирования программ. Появились сотни синтаксических верификаторов Фортран-текстов, вылавливающих скрытые логические ошибки. В дальнейшем из этого направления выросли такие теоретические области программирования, как эквивалентные оптимизирующие преобразования программ, высокоуровневая компиляция, автоматическое тестирование и т.д. Так что про Фортран забывать никак нельзя. Использовать его в качестве инструментария в задачах системной интеграции, наверное, не имеет смысла, но то, что было наработано лучшими программистами за 30–40 лет, вполне может ускорить процесс разработки. По крайней мере, программных "кирпичиков" для Фортрана ныне существует несравненно больше, чем для других языков программирования. ■

* * *
Джон Бэкус родился 3 декабря 1924 в Филадельфии, штат Пенсильвания, в богатой семье, детские годы провел в Вилмингтоне. Закончив школу в 1942 году, он поступил в университет штата Вирджиния на химический факультет (по настоянию отца-химика), но спустя некоторое время перестал заниматься и в 1943 году был призван на военную службу.
Бэкус начинал служить в бригаде противовоздушной обороны в форте Stewart, штат Джорджия, но впоследствии был направлен в колледж для изучения медицины.
Некоторое время он с увлечением работал в городской больнице, но в 1946 году охладел к этой работе, оставил армию и переехал в Нью-Йорк, хотя не знал за что браться и как жить дальше.
Через некоторое время Бэкус поступил в школу подготовки радиотехников. "У меня был очень хороший преподаватель, и он попросил, чтобы я вычислил характеристики некоторых схем. Это было страшно утомительно, но крайне интересно".
Вскоре Бэкус поступил в Колумбийский университет (Нью-Йорк), чтобы изучать математику, где и получил высшее образование (1949 г.). Незадолго перед тем, как закончить обучение, он посетил компьютерный центр IBM на Мэдисон Авеню. И здесь удача во второй раз улыбнулась ему – в 1950 году Бэкус стал программистом компании IBM.
О доминировании IBM в компьютерной индустрии впервые заговорили в 1952 году. Всё началось с модели 701, известной также под именем Defence Calculator (оборонный вычислитель). Сразу после выпуска модели 701 специалисты подразделения прикладных исследований приступили к ее совершенствованию (1955–1956 годы).

Наиболее серьезные изменения предложил внести Джон Бэкус, впоследствии принимавший активное участие в создании компьютера 704. В частности, благодаря ему появилась технология так называемого "ускоренного кодирования" (speed-coding), позволившая заметно упростить написание программ для 701. "Возможность ускоренного формирования кода для машины 701, которая представляла собой одноадресный компьютер с фиксированной запятой без индексных регистров, превратила ее в систему с плавающей запятой, произвольной адресацией и индексными регистрами, – вспоминал Бэкус. – Таким образом, пользователям больше не нужно было мучиться с двоичным кодом".
Уже тогда появились первые компоненты технологии быстрого написания программ, которая используется сегодня. Фактически данная система стала предшественницей аналогичных комплексов, которые были выпущены в 50–60 годах и впоследствии вытеснены языками высокого уровня.
А в 1955 году Бэкус "изобрел" Фортран, первый машинный язык высокого уровня. Впоследствии, вспоминая этот период, Бэкус скажет: "Мы не знали, к чему стремиться, и не знали, как это сделать". Первоначально все работы планировалось завершить в начале 1954 года, однако разработка языка завершилась практически через два года.
Первая версия компилятора состояла из 25000 строк машинного кода, записанного на магнитной ленте. Каждая IBM 704 обеспечивалась копией программы с руководством по программированию на 51 странице.
В 1959 году Бэкус разработал грамматические правила для описания синтаксиса языков высокого уровня (нормальная форма Бэкуса-Наура, сокращенно БНФ).
В 1976 году Джон Бэкус был награжден Национальной медалью за вклад в науку, а с 1991 года перестал заниматься компьютерной тематикой.

Владимир Буслаев

OCR: fir-vst, 2016

Середина 50-х гг. характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных кодах стала уменьшаться, стали появляться языки программировании нового типа, выступающие в роли посредника между машинами и программистами. Наступило время второго и третьего поколений языков программирования

С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня (high-levellanguage). Эти языки были Машино независимыми (не привязаны к определенному типу ЭВМ).

Но для каждого языка были разработаны собственные компиляторы - программа, выполняющая компиляцию.

Компиляция - трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера)

Язык программирования FORTRAN

Первый язык высокого уровня был создан в период с 1954 по 1957 года группой программистов под руководством Джона Бэкуса в корпорации IBM и это стало следующим этапом развития языков программирования. Это был язык программирования FORTRAN. Он предназначался для научных и технических расчетов. Название Fortran является сокращением от FORmulaTRANslator (переводчик формул).

История языка

В конце 1953 Джон Бэкус предложил начать разработку эффективной альтернативы ассемблеру для программирования на ПК IBM 704. Уже к середине 1954 была закончена черновая спецификация языка Fortran. Первое руководство для Fortran появилось в октябре 1956 вместе с первым компилятором, поставленным в апреле 1957. Компилятор был оптимизирующим, потому что клиенты отказывались использовать язык программирования высокого уровня, который был не в состоянии генерировать код с производительностью ниже, чем у ассемблера.

В то время сообщество относилось скептически к новому способу программирования и не верили в то, что Fortran позволит программировать быстрее и эффективнее. По словам самого Джона Бэкуса большая часть его работы была направлена на то чтобы «быть ленивым». Ему жутко не нравилось писать программы под IBM 701 на ассемблере.

Язык был широко принят учеными для написания программ с интенсивными вычислениями. Включение комплексного типа данных сделало его особенно подходящим для технических приложений.

К 1960 году существовали версии Fortran для компьютеров IBM 709, 650, 1620, 7090. Его большая популярность побуждала конкурирующих изготовителей компьютеров создавать компиляторы Fortran для своих компьютеров. Таким образом, уже к 1963 существовало более 40 компиляторов для разных платформ. Именно по этому Fortran считают первым широко используемым языком программирования.

Фортран в СССР

Фортран в СССР появился позже, чем на Западе, поскольку поначалу у нас более перспективным языком считался Алгол. Во внедрении Фортрана большую роль сыграло общение советских физиков со своими коллегами из CERN, где в 1960-х годах почти все расчёты велись с использованием программ на Фортране.

Первый советский компилятор с Фортрана был создан в 1967 г. для машины «Минск-2», однако он не получил большой известности. Широкое внедрение Фортрана началось после создания в 1968 г. компилятора ФОРТРАН-ДУБНА для машины БЭСМ-6. Машины ЕС ЭВМ, появившиеся в 1972 г., уже изначально имели транслятор Фортрана («позаимствованный» с IBM/360 вместе с другим программным обеспечением)

Современный Фортран. Достоинства языка

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

Вероятно, если вы хотите быстро что-то посчитать, то Фортран будет одним из лучших вариантов. Язык для этого именно и изобретался.

Его структура способствует тому, что компилятор может очень хорошо оптимизировать вычисления.

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

  • Компиляторы
  • В 2017 году языку Fortran исполняется 60 лет. За это время язык несколько раз дорабатывался. «Современными» версиями считаются Fortran 90, 95, 2003 и 2008. Если изначально это был язык программирования высокого уровня с чисто структурной парадигмой, то в более поздних версиях появились средства поддержки ООП и параллельного программирования. На сегодняшний день Fortran реализован для большинства платформ.

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

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

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

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

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

    Поэтому они наверняка согласились бы изучить язык высокого уровня, особенно если бы он напоминал привычные им алгебраические формулы. Такие рассуждения подвигли IBM к разработке Fortran.


    IBM-704

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

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

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

    Даже сам руководитель команды разработки Fortran Джон Бекус имел лишь несколько лет опыта работы с компьютером, когда приступил к созданию нового языка программирования.
    До колледжа Бекус был посредственным учеником («Я прошел больше школ, чем могу вспомнить»). После службы в армии во время второй мировой войны он оказался в Нью-Йорке, где поступил в школу радиотехники. «Пределом моих стремлений было сделать высококачественное звуковоспроизводящее устройство», - признался Бекус позднее,.

    Однако преподаватель по ремонту телевизионной и радиоаппаратуры пробудил у Бекуса интерес к математике и убедил его продолжить учебу в Колумбийском университете. Так скромно началась одна из самых плодотворных карьер в истории вычислительной техники.

    Итак, разработчики во главе с Бекусом расположились в штаб-квартире фирмы IBM на Мэдисон-авеню в Нью-Йорке.

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

    Как заявлял Бекус, большинство людей считало, что основной вклад Fortran - это возможность писать программы в виде алгебраических формул, а не на машинном языке. Но на самом деле это не так. По его мнению, Fortran в первую очередь автоматизировал организацию циклов. Важность этой задачи при разработке научных приложений сложно переоценить. Работа над языком шла быстро.

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

    По плану на разработку компилятора отводилось полгода, однако работа над ним заняла более двух лет.

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

    «Большой конфуз»

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

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

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

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

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

    На самом деле, примерно в одно и то же время с Fortran"ом появилось еще два языка высокого уровня – Кобол и Алгол. Начиная с конца 50-х годов они долгое время лидировали в компьютерном мире. Большинство современных программ написано на языках, которые представляют собой потомки этих трех языков.

    Распространение и адаптация

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

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

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

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


    Дэвид Хеммис – один из первых разработчиков компьютерных языков, за рулем своего автомобиля выпуска 1928 года. Фотография сделана в Уэстхемптоне (шт. Нью-Йорк) во время автомобильных гонок 1957 года.

    Доработка

    Тем не менее, работу над новым языком нужно было продолжать достаточно долго: это стало ясно еще в начале 1957 года, когда продолжался процесс отладки. Бекус и другие разработчики понимали, что язык нуждается в более точной системе диагностики программных ошибок. Кроме того, необходимо было реализовать возможность раздельного и независимого написания подпрограмм и программных модулей. Таким образом язык получил бы еще одно преимущество – повторное использование кода.

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

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

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

    В 1966 году первый стандарт получил название Fortran 66. В 1977 году, соответственно, вышел стандарт Fortran 77. В 1991 году появился Fortran 90. Fortran 95 создан в 1997 году.

    Fortran в СССР

    В Советском союзе ко двору больше пришелся Алгол-60. Поэтому Fortran в этой стране появился позже. Тем не менее, постепенно он вышел на первое место по популярности. Были разработаны компиляторы (трансляторы) для большинства отечественных ЭВМ – «Минск-32», БЭСМ-4, БЭСМ-6, АС-6, ЕС ЭВМ, СМ ЭВМ, МВК «Эльбрус» и так далее.

    В ИПМ им. Келдыша в разное время было разработано несколько трансляторов. Два из них – Фортран-Алмо и Форшаг (Фортран шаговый) были написаны на языке Алмо и код генерировали на этом же языке. Это позволило установить трансляторы на несколько разнотипных ЭВМ. В обоих трансляторах реализован стандарт Fortran 66.

    Форшаг также включал язык диалога, который позволил создавать, редактировать и выполнять трансляцию кода в диалоговом режиме. Помимо этого, был разработан комплекс графических программ для Фортрана – Графор, который активно использовался на различных ЭВМ.

    Fortran и по сей день остается популярным среди научных работников. Это первый язык программирования высокого уровня, имеющий транслятор, получивший практическое применение и дальнейшее развитие. Как говорилось в руководстве фирмы IBM, выпущенном в 1957 году, «Fortran обеспечивает эффективный способ создания программ для модели 704, прост в обучении и не требует глубоких знаний в области ЭВМ».

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

    Однако следующее поколение программистов стало относиться к Fortran"у как к «ископаемому». Эдсгер Дейкстра, язвительно отмечал, что обучение студентов этому языку должно приравниваться к серьезному преступлению.

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

    Каково же было моё удивление, когда я узнал, что Фортран не просто ещё где-то используется, он развивается, востребован и по-прежнему актуален. Если вы также до этого момента полагали, что Фортран давно носит статус мертвеца, то вот вам несколько интересных фактов, почему он ещё ходит.

    Пережил минимум 10 обновлений

    В действительности, тот Фортран о котором вы слышите от преподавателей в школе или университете был создан в период с 1954 по 1957 года. Он вошёл в историю, как первый полностью реализованный язык высокого уровня, совершил маленький прорыв в IT-мире, но по сути был не слишком удобен и функционален. “Допиливать” его в IBM принялись практически сразу, уже в 1958 году появился FORTRAN II и параллельно FORTRAN III. Но более-менее приличный вид он приобрёл лишь в 70-х, когда появились достаточно портативные машины, когда был разработан полноценный стандарт IBM FORTRAN IV, и появился FORTRAN 66 с циклами, метками, условными операторами, командами ввода/вывода и прочими по современным меркам примитивными возможностями.

    Последняя версия появилась в 2010 году, её название Fortran 2008 (как видите, в ходе истории, название перестало писаться исключительно заглавными буквами), отличительной чертой которой являются всевозможные параллельные вычисления, положительно сказывающиеся, как на скорости обработки данных, так и на размерности обрабатываемых массивов. Кроме того, на 2018 год запланирован выход Fortran 2015. Из анонса следует, что в нём будет улучшена интеграция с С, а также устранены текущие недоработки.

    Входит в 30 самых популярных языков программирования

    На сегодняшний день 0,743% запросов в поисковых системах относительно языков программирования посвящену именно Фортрану. Чтобы вы поняли, насколько это круто, просто представьте, что такие языки, как Lisp, Scala, Clojure, LabVIEW, Haskell, Rust и VHDL, находятся в рейтинге ниже.

    Может работать на Android (и не только)

    Компиляторы для Фортана за его долгую историю разрабатывались такими компаниями, как IBM, Microsoft, Compaq, HP, Oracle, благодаря чему сегодня язык совместим с Windows, Mac OS и Linux. Более того, удобное приложение с компилятором теперь можно взять с собой, благодаря приложению CCTools для Android. Можно запустить компилятор и на вашем iPhone, но в этом случае немного поколдовать.

    Конкурирует с MATLAB

    Пока в этом тексте не было сказано главного, а именно области применения Фортрана. Так вот это язык, востребованный в науке и инженерии, полностью или частично применяемый для прогноза погоды, океанографии, молекулярной динамики, сейсмологического анализа. В общем, это самый настоящий “Data Science”-язык родом из времени, когда в массовую продажу впервые поступил калькулятор.

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

    По сути, главным конкурентом Фортрана на сегодняшний день является MATLAB, который более универсален, более функционален и удобен. Однако MATLAB при этом имеет строгие ограничения по используемому ПО, достаточно дорого стоит и в большинстве случаев просто излишен.

    Имеет относительно безоблачное будущее

    Безусловно, мы не можем предсказать, что будет через 10-20 лет, и как за это время изменится IT-мир. Однако, если посмотреть на возможных новых конкурентов для Фортрана (таких, как Go), их главный недостаток - универсализация. То есть создатели Fortran очень быстро наметили целевую аудиторию в виде учёных, их мнение и пожелания имеют приоритетное значение. Поэтому трудно представить, что завтра они откажутся от своего “спецзаказа” ради какой-то модной тенденции. Именно на основании этого можно утверждать, что ещё одно поколение Фортран отходит смело.

    А потом они просто выпустят новую версию.