Открыть сервис

Fortran II

Fortran II — это вторая версия языка программирования Fortran (FORmula TRANslator), разработанная в 1958 году корпорацией IBM. Fortran II стал первым значительным обновлением оригинального компилятора Fortran, выпущенного в 1957 году, и внёс в язык ряд ключевых возможностей, включая поддержку подпрограмм и функций, что заложило основы для модульного программирования.

История

Предпосылки создания

Первая версия Fortran (Fortran I) была создана группой разработчиков под руководством Джона Бэкуса в IBM для компьютера IBM 704. Она позволяла программистам записывать математические формулы в виде, близком к алгебраической записи, что значительно упрощало программирование научных и инженерных задач по сравнению с машинным кодом и ассемблером. Однако Fortran I имел ряд ограничений: в нём отсутствовали подпрограммы, функции с возвратом значения, а также возможность компиляции отдельных модулей программы. Весь код должен был быть написан в одном файле, что затрудняло разработку крупных проектов.

Разработка и выпуск

Работа над Fortran II началась практически сразу после выхода первой версии. Основной целью было устранение недостатков Fortran I и расширение его функциональности. Разработка велась той же командой IBM в Сан-Хосе, Калифорния. Компилятор Fortran II был выпущен весной 1958 года для компьютера IBM 704. Позднее он был портирован на другие модели IBM, такие как IBM 709, IBM 7090 и IBM 7094, которые стали основными научными компьютерами своего времени.

Влияние и последующие версии

Fortran II стал важной вехой в истории программирования, так как он ввёл концепцию подпрограмм, которая впоследствии стала стандартом для большинства языков программирования высокого уровня. Он также показал, что компиляторы могут генерировать эффективный машинный код, сопоставимый по производительности с ручным программированием на ассемблере. В 1961 году IBM выпустила Fortran IV, который добавил поддержку логических операций, типов данных COMPLEX и DOUBLE PRECISION, а также улучшил управление вводом-выводом. Fortran II оставался в использовании до середины 1960-х годов, пока не был вытеснен более совершенными версиями.

Ключевые особенности

Подпрограммы и функции

Главным нововведением Fortran II стала поддержка подпрограмм (SUBROUTINE) и функций (FUNCTION). Подпрограммы представляли собой именованные блоки кода, которые можно было вызывать из основной программы или из других подпрограмм. Функции, в отличие от подпрограмм, возвращали одно значение и могли использоваться непосредственно в выражениях. Это позволило программистам разбивать сложные задачи на более мелкие, повторно используемые модули, что упростило разработку, отладку и сопровождение программ.

Компиляция отдельных модулей

Fortran II поддерживал компиляцию отдельных подпрограмм и функций, которые затем могли быть объединены в единую программу с помощью компоновщика (linker). Это позволяло разрабатывать крупные проекты, распределяя работу между несколькими программистами, и ускоряло процесс компиляции, так как при внесении изменений требовалось перекомпилировать только изменённый модуль.

Улучшенная система типов

В Fortran II были расширены возможности объявления типов данных. В дополнение к целым (INTEGER) и вещественным (REAL) числам, доступным в Fortran I, были добавлены:

  • Тип DOUBLE PRECISION — числа с двойной точностью для более точных вычислений.
  • Тип COMPLEXкомплексные числа, что было важно для научных и инженерных расчётов.

Оператор COMMON

Fortran II ввёл оператор COMMON, который позволял объявлять общие блоки памяти, доступные из нескольких подпрограмм. Это был простой механизм для обмена данными между модулями без передачи их через аргументы. Оператор COMMON стал широко использоваться, хотя впоследствии критиковался за возможность случайного переопределения данных и сложность отладки.

Управление вводом-выводом

Система ввода-вывода в Fortran II была улучшена по сравнению с первой версией. Были добавлены новые форматы для чтения и записи данных, а также возможность работы с несколькими файлами. Операторы READ и WRITE получили более гибкие возможности форматирования.

Синтаксис и примеры

Структура программы

Программа на Fortran II состояла из основной программы, которая могла содержать вызовы подпрограмм и функций. Каждая подпрограмма или функция начиналась с оператора SUBROUTINE или FUNCTION и заканчивалась оператором RETURN или END. Основная программа начиналась с оператора PROGRAM (хотя в ранних версиях он мог отсутствовать) и заканчивалась оператором END.

Пример программы

Пример программы на Fortran II, вычисляющей сумму двух чисел:

```fortran PROGRAM SUMMER REAL A, B, C READ(5,100) A, B 100 FORMAT(2F10.0) CALL ADD(A, B, C) WRITE(6,200) C 200 FORMAT(1H , F10.2) STOP END

SUBROUTINE ADD(X, Y, Z) REAL X, Y, Z Z = X + Y RETURN END ```

В этом примере:

  • PROGRAM SUMMER — начало основной программы.
  • READ(5,100) A, Bчтение двух вещественных чисел с устройства 5 (обычно перфокарты) по формату 100.
  • CALL ADD(A, B, C) — вызов подпрограммы ADD с аргументами A, B и C.
  • WRITE(6,200) C — вывод результата на устройство 6 (обычно принтер) по формату 200.
  • SUBROUTINE ADD(X, Y, Z)определение подпрограммы, которая складывает X и Y и записывает результат в Z.

Формат операторов

Fortran II использовал фиксированный формат строк, унаследованный от перфокарт:

  • Столбцы 1–5 — метка оператора (необязательно).
  • Столбец 6 — символ продолжения (если строка не помещается, в столбце 6 ставится любой символ, кроме пробела и нуля).
  • Столбцы 7–72 — собственно код оператора.
  • Столбцы 73–80 — не использовались (часто использовались для нумерации карт).

Применение

Научные и инженерные расчёты

Fortran II, как и его предшественник, был ориентирован на научные и инженерные вычисления. Он широко использовался в аэрокосмической промышленности, ядерной физике, метеорологии, гидродинамике и других областях, где требовались сложные математические расчёты. Например, в 1960-х годах на Fortran II были написаны программы для расчёта траекторий космических аппаратов и моделирования ядерных реакций.

Образование и исследования

Fortran II также использовался в университетах и исследовательских центрах для обучения программированию и проведения научных экспериментов. Благодаря своей простоте и эффективности, он стал одним из первых языков, которые изучали студенты технических специальностей.

Промышленность

В промышленности Fortran II применялся для автоматизации проектирования, обработки данных и управления производственными процессами. Например, он использовался в системах числового программного управления (ЧПУ) станками.

Критика и ограничения

Отсутствие структурного программирования

Fortran II не поддерживал структурное программирование: в нём отсутствовали циклы с условием (DO WHILE), операторы выбора (CASE) и другие конструкции, которые появились в более поздних языках. Управление потоком выполнения осуществлялось с помощью операторов GO TO и арифметического IF, что приводило к запутанному коду (так называемый «спагетти-код»).

Ограниченные возможности работы с памятью

Оператор COMMON, хотя и упрощал обмен данными, был подвержен ошибкам. Программист должен был вручную следить за тем, чтобы объявления COMMON в разных подпрограммах совпадали по размеру и порядку переменных. Несоответствие могло привести к непредсказуемым ошибкам, которые было трудно отлаживать.

Фиксированный формат строк

Требование строгого соблюдения столбцов (1–5 для меток, 6 для продолжения, 7–72 для кода) делало программирование на Fortran II неудобным по сравнению с более современными языками, использующими свободный формат. Ошибка в расположении оператора могла привести к неверной интерпретации кода.

Отсутствие динамической памяти

Fortran II не поддерживал динамическое выделение памяти. Все массивы и переменные должны были объявляться с фиксированным размером на этапе компиляции. Это ограничивало гибкость программ и требовало от программиста заранее оценивать максимальные размеры данных.

Интересные факты

  • Fortran II был одним из первых языков, для которого был разработан компилятор, способный генерировать код, почти не уступающий по эффективности ручному программированию на ассемблере. Это было достигнуто за счёт использования оптимизаций, таких как регистровое распределение и свёртка констант.
  • Несмотря на то, что Fortran II был выпущен в 1958 году, его влияние ощущается до сих пор. Многие концепции, введённые в этой версии, такие как подпрограммы и общие блоки, стали основой для последующих языков программирования, включая C и Pascal.
  • В 1960-х годах Fortran II был портирован на множество компьютеров других производителей, включая CDC, UNIVAC и Burroughs, что способствовало его широкому распространению.
  • Некоторые ранние программы для управления космическими полётами, в том числе для программы «Аполлон», были написаны на Fortran II или его модификациях.

Источники

  • John Backus. «The History of FORTRAN I, II, and III». IEEE Annals of the History of Computing, vol. 20, no. 4, 1998.
  • IBM. «Fortran II Reference Manual». IBM Corporation, 1958.
  • Jean E. Sammet. «Programming Languages: History and Fundamentals». Prentice-Hall, 1969.
  • Donald E. Knuth. «The Art of Computer Programming, Volume 1: Fundamental Algorithms». Addison-Wesley, 1968.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →