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

 

Язык программирования Fortran (FORmula TRANslator — «переводчик формул»)
Автор Джон Бэкус (John Warner Backus)

 

Джон Бэкус

John Warner Backus

03.12.1924 – 17.03.2007

История

Настоящий прорыв произошел в 1957 году, когда Джон Бэкус руководил группой по созданию языка FORTRAN, или транслятора формул (FORmula TRANslator).

На ранней стадии разработки FORTRAN был ориентирован на численные вычисления, но конечной конечной целью был вполне законченный язык программирования, включающий в себя управляющие структуры, условные операторы и операторы ввода-вывода. Поскольку немногие верили, что получится язык, способный конкурировать с языком ассемблера, в котором машинные команды кодировались вручную, основной задачей было создать эффективный исполняемый код, поэтому многие операторы разрабатывались с учетом ЭВМ IBM 704.

Концепция языка FORTRAN типа механизма трехветного перехода (имеется в виду арифметический IF) вытекала напрямую из аппаратной архитектуры IBM 704, а операторы READ INPUT TAPE сегодня выглядят весьма причудливо. Все это выглядело не очень изящно, но в то время еще не задумывались об ЭЛЕГАНТНОМ программировании, зато разработанный язык позволял писать программы, которые выполнялись достаточно быстро на ЭВМ упомянутого типа.

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

FORTRAN - это первый язык программирования высокого уровня, который получил признание и стал широко применяться. В своем исходном варианте FORTRAN был разработан фирмой IBM в 1957 г. как язык для работы на компьютерах IBM 704. В это время программисты, привыкшие к использованию языка ассемблера, сомневались в возможности использования языков высокого уровня. Наиболее серьезным аргументом была малая эффективность выполнения кода, получающегося в результате трансляции программ, написанных на этих языках. Первые версии FORTRAN были ориентированы главным образом на обеспечение эффективности выполнения. Успех этого раннего FORTRAN, связанный главным образом с достижением эффективности выполнения программ на компьютере IBM 704, фактически привел к некоторым затруднениям в дальнейшем развитии языка, о чем мы расскажем далее.

Первое стандартное определение языка появилось в 1966 г., а затем в 70-х были внесены существенные изменения, которые привели к появлению FORTRAN 77, и в 90-х -FORTRAN 90.

Обычно при реализации FORTRAN используется стандартная технология создания компиляторов. Для написания программы используется обычный тестовый редактор, а компилятор FORTRAN транслирует программу в исполняемый код.

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

Краткий обзор языка

Как было сказано, разработка языка FORTRAN была подчинена одной главной цели - обеспечению эффективности выполнения программ. Языковые структуры достаточно просты и по большей части не элегантны, но поставленная цель, тем не менее, достигается.

При обсуждении языка FORTRAN можно считать, что FORTRAN 77 и FORTRAN 90 являются совершенно другими языками. В FORTRAN 90 уже добавлены почти все современные возможности управления и представления данных, которые отсутствуют в классическом FORTRAN, поэтому FORTRAN 90 является языком того же уровня, что и языки Pascal и С. Программа на FORTRAN состоит из главной программы и набора подпрограмм, каждая из которых компилируется отдельно от других. Окончательное объединение оттранслированных программ в выполняемую форму происходит при загрузке.

Каждая подпрограмма компилируется в статически размещаемый сегмент кода и запись активации. Во время выполнения программы уже не происходит никаких изменений в распределении памяти, так как распределение памяти осуществляется статически до начала выполнения программы. Некоторые изменения этой модели выполнения сделаны в FORTRAN 90 - в этой версии языка допускается динамическое распределение памяти.

В FORTRAN определено сравнительно мало типов данных: четыре типа числовых данных (целые, вещественные и комплексные числа, а также вещественные с двойной точностью), булевы данные (также называемые логическими), массивы, строки символов и файлы. Ориентация этого языка на инженерные и научные вычисления объясняет наличие большого количества встроенных математических функций и арифметических операций. Также предусмотрены операции отношения, булевы операции и простая выборка элементов массивов при помощи индексов.

Поддерживаются последовательные файлы и файлы прямого доступа, имеются гибкая система ввода-вывода и большой набор возможностей форматирования.

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

Управление последовательностью выполнения операторов в значительной мере опирается на метки и операторы безусловного перехода GOTO, хотя в каждой следующей версии FORTRAN разработчики пытались отойти от этой практики, добавляя вложенные структуры управления. На идеологию языка FORTRAN 66 значительное влияние оказала базовая архитектура аппаратной части компьютера, на котором он был реализован. В FORTRAN 77 были добавлены современные структуры управления (например, оператор условия IF ... THEN ... ELSE), а в FORTRAN 90 эта концепция была разработана до такой степени, что при написании программ на нем теперь можно полностью отказаться от операторов GOTO.

При создании FORTRAN 90 появилась концепция устаревшего свойства, то есть свойства, которое больше не соответствует современному уровню программирования и от которого следует отказаться в следующей версии этого языка. Примером может служить оператор арифметического IF1. Поскольку большая часть свойств FORTRAN 66 на данный момент является устаревшей, ко времени следующего пересмотра стандарта FORTRAN будет вполне современным языком.

В FORTRAN предусмотрены два уровня среды ссылок: глобальный и локальный. Однако в FORTRAN 90 добавлена концепция вложенных подпрограмм.

Глобальная среда ссылок может быть разбита на несколько общих областей (называемых COMMON-блоками; теперь они также находятся в списке устаревших конструкций языка), которые совместно используются несколькими подпрограммами, но только объекты данных допускается использовать таким образом. Параметры в подпрограммы и функции передаются единообразно по ссылке.

Пример


101 FORMAT (F10.2, F10.8, F10.2)
102 FORMAT (I5, F10.2, F10.2, F10.2)
READ (1,101) BAL, RATE, PMT N = 0 
RATE = RATE/12
2 N = N + 1 
XINT = RATE*BAL
PRIN = PMT - XINT
IF (PRIN) 3, 3, 4
3 STOP
4 BAL = BAL - PRIN
IF (BAL) 5, 5, 6
6 WRITE (3, 102) N, XINT, PRIN, BAL
GO TO 2
5 PRIN = PRIN + BAL
BAL = 0.0
WRITE (3, 102) N, XINT, PRIN, BAL
STOP
END