Этот неумирающий Fortran

История и судьба этого языка программирования уникальны. Появившийся раньше множества уже безвозвратно ушедших в прошлое высокоуровневых языков, Фортран живёт и здравствует и теперь. В чём секрет подобного успеха? Сказать сходу сложно, но давайте попытаемся разобраться с тем, каков Фортран был, есть и будет, по порядку.


Фортранова юность

Фортран был первым из созданных человечеством языков программирования высокого уровня, поэтому путь его создателя был ох как тернист и непрост! Но Джон Бэкус, взявшийся за эту непростую задачу, с блеском довёл её до конца и мог по праву гордиться своим детищем до самой своей смерти, которая, кстати, произошла не так уж давно - в марте 2007 года. Конечно, грустно, что такой выдающийся человек уже покинул этот мир, но, с другой стороны, за 82 года жизни он успел не так уж и мало. Но биография Бэкуса - хорошая тема для отдельной статьи, а сейчас всё же о Фортране.

Перед группой, создавшей Фортран (именно ею руководил Джон Бэкус), стояла очень непростая задача. Им нужно было не просто разработать высокоуровневый язык программирования, но и реализовать его в виде компилятора. Причём всё это должно было быть достаточно удобным в использовании, и, самое главное, быстрым, чтобы новый язык мог составить конкуренцию Ассемблеру на тогдашних маломощных машинах.

Основная задача языка состояла в упрощении кодирования формул, откуда, собственно, и берётся его название: Fortran - это сокращение словосочетания "Formula translator". Что ж, следует признать, что это Бэкусу и его подчинённым удалось и было большим прорывом. Запись формул на Ассемблере, даже с использованием всяческих макросов, дело неблагодарное, нудное, да и код получается весьма громоздким. А если ещё и формулы восьмиэтажные... В общем, здесь полезность Фортрана было сложно переоценить.

 

Эффект простоты записи формул в Фортране состоял в том, что этот язык моментально стал популярен в научной среде. Ведь кто больше всех нуждается в удобной записи математических формул? Именно учёные - математики, физики, ну и в чуть меньшей степени астрономы, химики и биологи, а также все остальные. Именно в построении компьютерных моделей Фортран тогда нашёл своё применение быстрее всего. Ведь профессиональным программистам свойственна о-о-очень большая инертность, которая является весьма весомым фактором торможения прогресса. Учёным же не нужно было цепляться за старые технологии, обеспечивающие им хлеб насущный, а потому они с радостью приняли новый инструмент, который пригодился им во многих исследованиях.

Что характерно, в СССР Фортран появился гораздо позже, чем на Западе - даже позже, чем Алгол, который, кстати, и задержал появление Фортрана на просторах одной шестой части суши. Но помогли Фортрану всё те же учёные. Для науки "железный занавес" всё-таки был с дырками, и сотрудничать с европейскими коллегами советские учёные вполне могли. А как сотрудничать людям, говорящим на разных языках? Поэтому советская, а после и белорусская (как, впрочем, и российская) наука "заговорила" на Фортране. Первый советский компилятор языка, кстати, был создан для компьютера "Минск-2".

Но, как бы интересна ни была история Фортрана, думаю, читателям будет интересно узнать и о том, что же такое представлял (и представляет) собою Фортран, если сумел завоевать такое всемирное признание.


Язык собственной персоной

Вряд ли среди читателей этой статьи много тех, кто программировал на Фортране с самого его появления в Советском Союзе. Тогда Фортран был совершенно иным, нежели теперь: ведь пользователи работали не с мониторами и клавиатурами, а с перфокартами и телетайпами. Именно с тех смутных времён первые шесть позиций в каждой программе на Фортране отдаются традиционно под обозначения комментария и метки. Комментарий - это, соответственно, когда строка начинается с латинского "с", а метки - это знаменитые goto, которые делают код программы своего рода головоломкой.

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

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

Write (*,*)'AX=B, X=C'
write (*,*)'Please, enter A'
read (*,*)a
write (*,*)'Please, enter B'
read (*,*)b
c = b/a
if (a .ne. 0)then
write (*,*)'Take the result, please... ', c
elseif (a .eq. 0)then
write (*,*)'No results found, sorry...'
end if
pause
stop
end

Как видно из этого примера, Фортран - регистронезависимый язык, т.е. А и а в Фортране - одна и та же переменная. Кроме того, в нём присутствует соглашение по умолчанию об одно-символьном именовании переменных - как видите, они нигде не объявляются и, тем не менее, используются. Как и в Паскале, начинаться программа может со слова "program", но может, как в нашем случае, прекрасно обойтись и без него. А вот "end" в конце программы обязателен - как, опять-таки, и в Паскале. Такие общие черты Фортрана и Паскаля объясняются тем, что Паскаль был создан с учётом опыта Алгола, на который, в свою очередь, повлиял Фортран.


Фортран сегодня

Удивительно, но факт: Фортран сейчас - один из самых перспективных языков, какие только можно найти. Да, специалисты по Java, ASP.NET, PHP сегодня ценятся выше, но кто может поручиться, что завтра не нужен будет какой-нибудь C##, и Java-программисты не останутся за бортом? В случае с Фортраном можно с уверенностью, не побоявшись сглазить, сказать: этот язык переживёт и C++, и Java, и PHP, причём с такой же лёгкостью, с какой уже пережил Алгол, Кобол, PL/1 и многих других, имя которым - легион. Что даёт мне основание так говорить? Спокойствие. Сейчас я всё объясню; и, думаю, после этого вы со мной согласитесь.

Помните, я говорил о том, что Фортран был принят на ура в научной среде и быстро в ней прижился? Так вот, именно благодаря ей он и живёт до сих пор. Учёные не нуждаются в объектно-ориентированном программировании, хорошей портируемости программ и в как можно скорейшей разработке бизнес-приложений. Их требования к языку программирования совершенно иные, нежели у рынка: им нужен хорошо зарекомендовавший себя, хорошо знакомый инструмент создания математических моделей, который будет обеспечивать наилучший баланс между скоростью программирования моделей (всё тех же формул, практически), простотой программирования и выполнением программ. Фортран соответствует всем этим требованиям как нельзя лучше.

Помимо, собственно, языка программирования, учёным требуется большой набор хорошо отлаженных библиотек для реализации моделей. И здесь Фортрану тоже нет равных, да и вряд ли когда-нибудь кто-нибудь захочет потеснить его из этой ниши, учитывая, что академическая среда куда менее прибыльна, нежели рыночная. Хотя для инженерных расчётов, кстати, Фортран тоже используется довольно широко, но его уже изрядно потеснили такие системы моделирования, как AutoCAD, Maple, ANSYS и некоторые другие. Но, конечно, по мощности и гибкости им далеко до целого языка программирования с поистине бесчисленным множеством различных дополнительных библиотек. Недаром у математиков есть шутка о том, что если нужно решить какую-то задачу, нужно прежде всего поискать её уже существующее решение на Фортране.

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

На текущий момент существует довольно много компиляторов Фортрана, так что тем, кто программирует на нём, есть из чего выбирать. Среди самых хороших обычно сразу упоминают Sun Fortran от Sun Microsystems, Intel Fortran Compiler и OpenWatcom Fortran. О последнем, кстати, можно прочитать в "КВ" №9/2006. Есть ещё GNU Fortran, он же gFortran. Долгое время самым лучшим из сравнительно современных компиляторов Фортрана считался компилятор от Microsoft, но корпорация уже давно забросила его разработку, посчитав её невыгодной. Теперь его разрабатывает фирма Compaq. Что касается интегрированных сред разработки для Фортрана, то их тоже не так уж мало. И Sun, и Compaq предлагают современные среды для своих компиляторов, да и для GNU Fortran есть вполне приличные среды разработки.

Что касается самого современного языка Фортран, то, хоть я сгоряча и сказал, что учёным объектно-ориентированное программирование не слишком нужно, оно, тем не менее, предусматривается языковыми стандартами. Дело в том, что новые поколения учёных, приходящих с ВУЗовской скамьи, гораздо лучше владеют технологиями программирования, чем старое поколение, которое столкнулось с ними уже в зрелом возрасте и большей частью не пожелало менять привычки. Также в самом актуальном на сегодняшний день стандарте языка, FORTRAN 2003, добавлен ряд возможностей по взаимодействию программы с операционной системой.

Среди возможностей современного Фортрана, в первую очередь, стоит отметить мощную поддержку массивов с гибким присвоением индексов, а также поддержку на языковом уровне асинхронного ввода-вывода данных. Одна из наиболее проблемных областей для разработчиков новой версии стандарта, если судить по публикациям, - параллельное программирование. В этом направлении развивается ряд проектов, таких, как High Performance Fortran (HPF) и Co-Array Fortran.

Если вы решили изучить Фортран, то найти русскоязычную литературу не составит труда. Одна из лучших книг, которую можно рекомендовать, это "Современный Фортран" Сергея Немнюгина и Ольги Стесик. Она выпущена в 2002 году издательством "БХВ-Петербург". Вообще же книги по Фортрану можно найти в Сети и в электронном виде, так что Google вам в помощь.

Вадим СТАНКЕВИЧ,
dreamdruch@tut.by


1 На всякий случай напомню, что линейным алгебраическим уравнением относительно переменной x называется уравнение вида ax+b=0, где a отлично от нуля.

Версия для печатиВерсия для печати

Номер: 

49 за 2007 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Страницы

Аватар пользователя Логик
Настоящий Полковник >Вот так прямо и выведет такое

"на дисплей IBM-360 при скажем

A=1/0

TIPE A" ? ;)

Нет, не выведет - ибо как такое ввести то, в "дисплей IBM-360", то есть в терминал 7920 - а вывод то на АЦПУ идет. ;-(

Аватар пользователя Логик
Инкогнито 13 декабря 2007 года, 18:56 > Как раз в математике делить на 0 запрещено.

В языке J (не путать с Java) точно определено, что 0/0 = 0

Аватар пользователя Инкогнито
Логик > В языке J (не путать с Java) точно определено, что 0/0 = 0

А что определено в J для:

1/0 =

10/0 =

11/0 =

и т.д. просвети плиз.

И кто это определил?

Аватар пользователя Glen
По поводу "современного" и "несовременного" хотел бы сказать ещё вот что. Сознание многих молодых программистов испорчено, как ни покажется странным, компьютерными играми. Дело в том, что игры - это гиболее динамичный и короткоживущий софт. Игра живёт недолго, быстро вытесняясь ещё более новыми играми. D 1994 году DOOM-2 был вершиной жанра 3DAction, а в 1996 появляется Quake на принципиально новой (полигональной вместо спрайтовой) технологии, и все игры предыдущего поколения летят в корзину. А завтра Quake сменится на Quake II, потом на Quake III и т.д. Как следствие, у студента создаётся впечатление, будто и в остальном прораммном мире всё так же - через год программа (технология) может быть выброшена и заменена на ещё более передовую. И только придя в индустию, вчерашний студент с изумлением понимает, что до сих пор используются Fotran, Cobol и проч. Или что в некоторых АСУ ТП (промышленная автоматика) программа 10-летней давности не считается "старой". Господа студенты, примите это к сведению.
Аватар пользователя Сергей
>> Эти библиотеки настолько сложны, что проще выпускать компиляторы для устаревшего языка, чем перенести их на язык "современный"

Развитие библиотек для фортрана тоже не стоит на месте!

Интел поставляет Visual Fortran Compiler Professional Edition с собственной Intel Math Kernel Library + IMSL Fortran Library разрабатываемой Visual Numerics

А по скорости выполнения математических расчетов + простота создания кода Фортран спокойно делает "современные" языки

Аватар пользователя Glen
Только вот с "Удивительно, но факт: Фортран сейчас - один из самых перспективных языков, какие только можно найти. " трудно согласиться. "Перспективу" языка легко можно оценить количественно - это число специалистов по нему, которые будут нужны в ближайшие N лет. Очень сомневаюсь, что Фортран по этому показателю входит в первую пятёрку. Если у автора есть такие данные (с указанием на какую-нибудь службу, сделавшую такой прогноз), интересно было бы почитать.
Аватар пользователя Вадим Станкевич
2 Glen. Перспектива - это не столько количество специалистов, сколько продолжительность их работы в данной области, надёжность профессии. Вот, например, врач, строитель, таксист - надёжные профессии, в отличие от политолога, PR-менеджера, Web-дизайнера. В программировании всё то же самое: Fortran - надёжно, а вот насчёт Java, честно говоря, сомневаюсь. Сегодня - бум, а завтра, может быть, она будет там же, где сегодня FoxPro и PowerBuilder.
Аватар пользователя Glen
"вот насчёт Java, честно говоря, сомневаюсь. Сегодня - бум"

Если точнее, то - не "сегодня", а уже 10 лет ;-) Это - очко в пользу её перспективности; даже если с завтрашнего дня все перестанут писать на Java, всё равно написанную массу кода (много больше, чем на Фортране или Коболе) кто-то должен будет поддерживать.

Аватар пользователя Вадим Станкевич
Код на Java имеет свою специфику, он используется в иных сферах, чем код на Фортране. Код на VFP тоже кто-то поддерживает...
Аватар пользователя Настоящий Полковник
Код на Java портируем. И это главное преимущество. А оно даст возможность еще долго существовать данному продукту. Не вытеснит тот же C# - Java, а ASP.NET - JSP и EJB.

Страницы