Фортран
Материал из Википедии — свободной энциклопедии
Семантика: | мультипарадигменный: процедурное, императивное, структурное программирование |
---|---|
Тип исполнения: | {{{class}}} |
Появился в: | 1957 г. |
Автор(ы): | Джон Бэкус |
Типизация данных: | cтрогая, статическая |
Основные реализации: | GFortran, Open Watcom, XL Fortran |
Диалекты: | отсутствуют |
Создан под влиянием: | не известно |
Оказал влияние на: | ALGOL 58, PL/I |
Фортра́н (Fortran) — первый реализованный высокоуровневый язык программирования, созданный ещё в 1954 году группой программистов под руководством Джона Бэкуса (en:John Backus) в фирме IBM. (Язык Планкалкюль, претендующий на пальму первенства, был изобретён ещё в 1945 году, но не был реализован вплоть до 2000 года.) Название Fortran является аббревиатурой от FORmula TRANslator, то есть, переводчик формул. Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм (см., например, Netlib Repository). Среди учёных, например, ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов и пакет для перемножения матриц, и пакет для решения сложных интегральных уравнений и многие, многие другие. Ряд таких пакетов создавались на протяжении десятилетий и популярны (главным образом в научной среде) по сей день.
Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны. Поэтому изменять, а тем более переписывать их на других языках программирования накладно, несмотря на то, что регулярно производятся попытки автоматического конвертирования FORTRAN-кода на современные языки программирования.
Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур; позволяет применять современные технологии программирования, в частности, ООП.
Содержание |
[править] Стандарты
Фортран — жёстко стандартизированный язык, именно поэтому он легко переносится на различные платформы. Существует несколько международных стандартов языка:
- FORTRAN IV (он же — FORTRAN 66) (1966)
- FORTRAN 77 (1978)
Множество улучшений: текстовый тип данных и функции для его обработки, блочные операторы IF, ELSE IF, ELSE, END IF, оператор включения фрагмента программы INCLUDE и т. д. - Fortran 90 (1991)
Значительно переработан стандарт языка. Введён свободный формат написания кода. Появились дополнтельные описания IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST; управляющие конструкции DO … END DO, DO WHILE, CYCLE, SELECT CASE, WHERE; работа с динамической памятью (ALLOCATE, DEALLOCATE, NULLIFY); программные компоненты MODULE, PRIVATE, PUBLIC, CONTAINS, INTERFACE, USE, INTENT. Появились новые встроенные функции, в первую очередь, для работы с массивами.
В языке появились элементы ООП.
Отдельно объявлен список устаревших черт языка, предназначенных для удаления в будущем. - Fortran 95 (1997)
Коррекция предыдущего стандарта. - Fortran 2003 (2004)
Дальнейшее развитие поддержки ООП в языке. Взаимодействие с операционной системой.
[править] Компиляторы
До 1997 основным производителем компиляторов Фортрана для IBM PC совместимых компьютеров была корпорация «Майкрософт». Впоследствии она отказалась от их разработки в связи с низкой прибыльностью. На данный момент компиляторы поставляет фирма «DEC», вошедшая в 1998 г. в состав «Compaq» и вместе с последней в 2002 г. слившаяся с «HP».
Компания «DEC» поставляет компилятор, интегрированный в среду разработки Digital Visual Fortran, основанную на Microsoft Visual Studio. Наиболее известными продуктами этой линейки являются FPS 4.0 (Microsoft Fortran Power Station), DVF 5.0 и 6.0. Каждый компилятор может поддерживать несколько стандартов Фортрана. Слияния компаний явились причиной того, что последующие продукты появлялась на рынке под торговыми марками Compaq и HP. В настоящее время HP продаёт среду разработки версии 6.6 для Intel/win32. Поддержка Фортрана реализована также для всех высокопроизводительных платформ HP.
Другим крупным поставщиком систем разработки на Фортране является фирма «Lahey», предлагающая интегрированные решения для Windows и Linux.
Известен и развивается также компилятор фирмы Intel — Intel Fortran Compiler, который позволяет оптимизировать код под платформу Intel ia32 и ia64.
Фонд свободного программного обеспечения GNU выпускает открытый компилятор Фортрана-77 g77, доступный практически для любой платформы и полностью совместимый с GCC, но не поддерживающий всех языковых конструкций современных стандартов Фортрана. Также существует проект g95 по созданию на основе GCC компилятора Fortran-95.
[править] Возможности и структура программы
Фортран имеет достаточно большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами высокой точности. Выразительные средства языка изначально были весьма бедны, поскольку Фортран был одним из первых языков высокого уровня. В дальнейшем в Фортран были добавлены многие лексические конструкции, характерные для структурного, функционального и даже объектно-ориентированного программирования.
Структура программ изначально была ориентирована на ввод с перфокарт
и имела ряд удобных именно для этого случая свойств. Так, 1-я колонка служила для маркировки текста как комментария (символом C), с 1-й по 5-ю располагалась область меток, а с 7-й по 72-ю располагался собственно текст оператора или комментария. Колонки с 73-й по 80-ю могли служить для нумерации карт (чтобы восстановить случайно рассыпавшуюся колоду) или для краткого комментария, транслятором они игнорировались. Если текст оператора не вписывался в отведённое пространство (с 7-й по 72-ю колонку), в 6-ой колонке следующей карты ставился признак продолжения, и затем оператор продолжался на ней. Расположить два или более оператора в одной строке (карте) было нельзя. Когда перфокарты ушли в историю, эти достоинства превратились в серьёзные неудобства.
Именно поэтому в стандарт Фортрана, начиная с Fortran 90, в добавление к фиксированному формату исходного текста появился свободный формат, который не регламентирует позиции строки, а также позволяет записывать более одного оператора на строку. Введение свободного формата позволило создавать код, читабельность и ясность которого не уступает коду, созданному при помощи других современных языков программирования, таких как C или Java.
Своего рода «визитной карточкой» старого Фортрана является огромное количество меток, которые использовались как в операторах безусловного перехода GOTO , так и в операторах циклов, и в операторах описания форматного ввода/вывода FORMAT. Большое количества меток и операторов GOTO часто делало программы на Фортране трудными для понимания.
Именно этот негативный опыт стал причиной, по которой в ряде современных языков программирования (например, Java) метки и связанные с ними операторы безусловного перехода вообще отсутствуют.
Однако современный Фортран избавлен от избытка меток за счет введения таких операторов, как DO … END DO, DO WHILE, SELECT CASE
Также к положительным чертам современного Фортрана стоит отнести большое количество встроенных операций с массивами и гибкую поддержку массивов с необычной индексацией. Пример:
real,dimension(:,:) :: V ... allocate(V(-2:2,0:10)) ! Выделить память под массив, индексы которого могут ! меняться в пределах от -2 до 2 (первый индекс) ! и от 0 до 10 - второй ... V(2,2:3)=V(-1:0,1) ! Повернуть кусочек массива write(*,*)V(1,:) ! Напечатать все элементы массива V, первый индекс которых равен 1. deallocate(V)
[править] Пример программы
Программа «Hello, World!»
Фиксированный формат (символами «ˆ» выделены пробелы в позициях строки с 1 по 6):
^^^^^^PROGRAM hello ^^^^^^PRINT*, 'Hello, World!' ^^^^^^END
Свободный формат:
program hello print *, "Hello, World!" end
Замечания.
- Оператор PROGRAM не является обязательным. Строго говоря, единственный обязательный оператор Фортран-программы — оператор END.
- Выбор прописных или строчных букв для написания операторов программы произволен. С точки зрения современных стандартов языка Фортран множество прописных букв и множество строчных букв при написании операторов языка совпадают.
[править] Взаимодействие с другими языками
Многие компиляторы Фортрана позволяют линковать полученные объектные файлы с файлами, полученными компиляторами других языков, что позволяет создавать более гибкие и много функциональные приложения. Для языка Фортран так же доступно большое количество библиотек, содержащих как подпрограммы решения классических вычислительных задач (LAPACK, IMSL, BLAS), задач организации распределенных вычислений (MPI, pvm) так и задач построения графических интерфейсов (Quickwin, FORTRAN/TK) или доступа к СУБД (Oracle).