пятница, 14 мая 2010 г.

Статья. Fortran в Linux: вчера, сегодня, завтра!

Этой статьёй я открываю цикл сообщений, составленных по моим статьям, публикуемым в замечательном электронном издании "Open Source". Здесь информация будет появляться с двухнедельной задержкой после публикации в журнале. В любом случае я рекомендую почитать "Open Source" - кроме моих работ вы найдёте там много интересных статей!

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

Зачем и почему?

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

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


Взгляд в прошлое

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

Изначально программы писались для выполнения на перфокартах, поэтому один из первых распространённых стандартов - Fortran77 — требует записи в так называемом фиксированном формате. Фиксированный формат накладывает ограничения на структуру кода: он определяет специальные позиции в строке для меток, символа комментария; ограничивает длину строки и максимальную длину оператора.

В стандарт Fortran90 был включён свободный формат — в котором большинство ограничений были либо сняты, либо ослаблены. Также стандарте Fortran90 появились элементы объектно-ориентированного программирования, которые получили развитие в стандарте Fortran2003.


Компиляторы

Существует большое количество компиляторов фортрана: начиная от высоко оптимизированных компиляторов от фирмы IBM, предназначенных для работы с суперкомпьютерами и до милых сердцу open source проектов. Проприетарные компиляторы представлены фирмами Compaq (в 2002 году слившаяся с HP), Lahey, Watcom. Отдельно стоит отметить компилятор фирмы Intel, который и сейчас активно развивается: генерируемый код хорошо оптимизирован для процессоров этой марки; в комплекте с компилятором можно приобрести математическую библиотеку Intel Math Kernel Library, которая «обеспечивает выполнение высокооптимизированных многопоточных математических операций для научных, инженерных и финансовых приложений, требующих наибольшей производительности». Но самое главное для нас то, что версия компилятора для платформы linux предоставляется бесплатно на условиях некоммерческого ПО. По моему личному мнению это лучший выбор компилятора фортрана для работы.

Сторонникам не только бесплатного, но и открытого ПО тоже есть из чего выбрать: в коллекцию компиляторов GNU входит gfortran, который пришёл на смену компилятору g77 (работа над ним была прекращена). Данный компилятор полностью совместим со стандартом Fortran95, имеет поддержку устаревшего формата - Fortran77. Также в него включено множество дополнительных возможностей, представленных в стандартах Fortran2003 и Fortran2008.

Другим известным открытым компилятором является g95. В g95 также реализована поддержка всех основных стандартов фортрана. Компилятор доступен практически для любой платформы. Этот проект может быть выбран вами, если имеется необходимость компилировать программы для Windows.


И ГДЕ IDE?


Если вопрос выбора компилятора решён, можно перейти к следующему: какой средой разработки воспользоваться? Если вы — сторонник минимализма, то приложения можно писать в любом текстовом редакторе, а компилировать из командной строки. Большинство текстовых редакторов в linux поддерживают подсветку кода фортрана. С помощью плагинов в том же gedit можно настроить для себя вполне комфортную работу: дерево проектов, автодополнение, вызов консольных команд, окно терминала. Конечно, использовать специализированную IDE удобнее: достаточно хорошим пакетом является Code::Blocks. Code::Blocks — кросс-платформенный open source проект, в котором имеется возможность подключить различные компиляторы фортарана. Как это сделать для g77 и gfortran описано здесь. Аналогичным образом подключается и компилятор g95. Code::Blocks представляет собой удобную среду разработки, в которой вы найдёте все необходимые для работы инструменты.



С минималистами и рационалистами мы разобрались — теперь черёд максималистов. И здесь мы приходим к «монстру программирования» - IDE Eclipse. Поддержка фортрана реализуется в нём путём установки дополнения Photran. После чего вам будет доступен максимальный спектр инструментов: поддержка стандартов фортрана 77-2003, подсветка синтаксиса, помощники (content assistent), всплывающие подсказки типов и объявлений, интерактивный отладчик, поддержка систем контроля версий и многое другое. К сожалению, настроить Eclipse на работу с компилятором g95 у меня не получилось, но Intel Fortran Compiler работает отлично: доступна настройка всех необходимых команд компилятора, работает отладчик. Здесь имеется небольшой секрет — после установки компилятора IDE может не видеть его — ошибка «/bin/sh: ifort: command not found». Проблема решается записью пути к компилятору в PATH и, дополнительно, нужно запускать Eclipse из терминала! Будьте бдительны, эта особенность практически нигде не упоминается.




Заключение 

Можно сказать, что несмотря на обилие современных языков, Fortran не собирается сдавать позиции: он занял свою нишу высокопроизводительных вычислений и справляется с этой деятельностью «на отлично». Желающие могут найти и выбрать для себя и компилятор, и среду разработки — доступно множество как открытых так и коммерческих решений. Особо радует стремление производителей компиляторов обеспечить многопотоковость выполнения программ, широкий набор опций для оптимизации кода.

Хотя в Linux созданы все условия для комфортной работы с фортраном, есть некоторые моменты, требующие улучшений: далеко не все IDE позволяют проводить отладку при выполнении программ, не всегда легко настроить взаимодействие компилятор-IDE (настроить g95 в Eclipse автору не удалось).
Для тех кто захочет найти дополнительную информацию о Fortran — вот здесь вы сможете найти множество ссылок на разнообразные ресурсы: стандарты, книги, библиотеки, компиляторы.

4 комментария:

Анонимный комментирует...

Непонятно для кого статья? Те, кто пишет на Java, C читать это не будут, так как Fortran для них какая-то экзотика и им это по барабану. Не кинутся они создавать фортран-проект Для тех, кто реально пишет на фортране, все эти ляляля тополя для детей читать не интересно. Лучше бы написал как реально настроить этот Eclipse для Fortran девелопера. А то там одни теоретики сидят, с их советов сразу видно, что реально никто этого не делал. Это зарезервировано, но все пишут на С++.

Анонимный комментирует...

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

Анонимный комментирует...

Большое спасибо, как раз искал такую вводную статью.

Анонимный комментирует...

Большое спасибо, как раз искал такую вводную статью.