Этот неумирающий 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!

Комментарии

Страницы

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

Фирма Compaq выпустила свою последнюю версию фортрана для ПК аж 2000 году... и после слияния с HP больше им не занимается...

"We wish to announce that Hewlett-Packard no longer sells or supports Compaq Visual Fortran. However, A partnership has been established with Intel? to help you migrate to Intel Visual Fortran Compilers. Intel Visual Fortran Compilers were created by the same Fortran engineering team that created Digital/Compaq Visual Fortran (CVF), and we recommend that our CVF users take advantage of the migration path to Intel Visual Fortran Compilers."

http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801/?ciid=8508092f62f02110092f62f02110275d6e10RCRD

Аватар пользователя Инкогнито
Неведение аффтора умиляет... до определенного момента
Аватар пользователя Вадим Станкевич
Сергей, большое спасибо за уточнение.
Аватар пользователя Savely
Этого, а это в Фортране нормально - сначала поделить на 0, а потом проверить - на что же мы поделили?
Аватар пользователя Настоящий Полковник
Savely, а что потом проверять, если при делении на 0 возникает exception? Пошутили, да?
Аватар пользователя mike
Вставлю и я сюда свой пятак. Во-первых, статья интереснейшая. Во-вторых, если и пкупаю "КВ", то в первую голову это заслуга В.Станкевича. В-третьих, полууважаемый г-н икс, не надо так "умиляться", человек не может знать абсолютно всё, поэтому, возможно, мы вскоре прочитаем поподробнее про "вижиэл фортран". Но это, конечно, как автор решит.
Аватар пользователя Вадим Станкевич
Спасибо, mike. В ближайшее время, правда, про Visual Fortran писать не планировал... Но если есть интерес, можно и про него.

2 Savely: что касается деления на ноль, то в Фортране есть такое значение, как infinity.

Аватар пользователя Savely
2 Вадим Станкевич:

Так почему не на него проверяем?

2 Настоящий Полковник:

Исключение железно вызывалось бы, если это было бы написано на ASM x86 и запускалось на x86-проце. А так - я не пошутил, я серьезно спросил.

Аватар пользователя Вадим Станкевич
Потому что забыли:(
Аватар пользователя Настоящий Полковник
>Savely

8 декабря 2007 года, 14:31

>>>2 Настоящий Полковник:

>>Исключение железно вызывалось бы, если это было бы написано на ASM x86 и запускалось на x86-проце.

А Windows XP на IA32 - это не x86? ;) Попробуйте поделить на 0 в той же Delphi.

>>А так - я не пошутил, я серьезно спросил.

Может быть они там и сделали в Fortran'е подавление такого рода exception. Знаете, у меня привычка самостоятельно проверять знаменатель.

Страницы