Ратфор (сокращение от англ. Rational Fortran — «Рациональный Фортран») — язык программирования, реализованный в качестве препроцессора для Fortran 66. Он предоставляет современные управляющие конструкции, недоступные в Fortran 66, с целью замены Goto и номеров операторов.

Возможности Ратфор предоставляет следующие виды управляющих конструкций, описанные Брайаном Кёрниганом:

Группировка операторов с помощью фигурных скобок; Управляющие операторы: if-else, switch, while, for, do, repeat-until, break, next; Свободный формат написания кода, то есть не ограниченный правилами формата Фортран, как несколько операторов в строке, так и оператор на нескольких строках; Операторы сравнения <, >, >=, … в дополнение .LT., .GT., .GE., …; Оператор return(выражение) для функций; Директивы препроцессора: define, include; Символ # комментария может находиться в любой позиции строки.

Например, следующая программа if (a > b) { # Поиск максимума max = a } else { max = b } Может быть транслирована в следующую

IF(.NOT.(A.GT.B))GOTO 1 MAX = A GOTO 2 1 CONTINUE MAX = B 2 CONTINUE

Версия Ратфор приведённая в книге «Software Tools» написана на языке Ратфор, в качестве примера программы, и поскольку доступен её исходный код на Фортран, она может быть портирована на любую Фортран систему. Файлы исходного кода на языке Ратфор имеют расширение .r или .rat.

История Ратфор был разработан и реализован Брайаном Керниганом в Bell Telephone Laboratories в 1974 году и описан в книге «Software—Practice & Experience» в 1975 году. Он был использован в книге «Software Tools» (Брайан Кёрниган и , 1976).

В 1977 году в Университете Пердью была написана улучшенная версия препроцессора Ратфор. Она называлась Mouse4, так как была компактнее и быстрее, чем Ратфор. Доктор Дуглас Комер, профессор из Пердью, в опубликованном им документе заключил: «Вопреки доказательствам, представленным разработчиком Ратфор, последовательный поиск часто недостаточен для производства программного обеспечения. Кроме того, в случае лексического анализа хорошо известные методы, по-видимому, обеспечивают эффективность, сохраняя при этом простоту, легкость кодирования и модульность специальных методов.»

По сравнению с препроцессором Ратфор для программы из строк кода, работающих в системе , потребовалось секунд процессора. При использовании двоичного поиска на Ратфоре это время сократилось на 50%. Переписывание лексического анализатора с использованием метода, основанного на конечных автоматах, сократило время выполнения до секунд.

При наличии компилятора Фортран 77 приемник Ратфора, при использовании опции /f77 мог генерировать более читаемый код: IF (A .GT. B) THEN MAX = A ELSE MAX = B ENDIF В 1985 году исходный код Ратфор был переписан на C и улучшен для получения кода Fortran 77. В 2010 году был создан git репозиторий, с целью возрождения Ратфора. Между тем, компилятор GNU C, который имел возможность напрямую компилировать файл Ратфор (.r) без сохранения бесполезного промежуточного кода на языке Фортран (.f) (gcc foo.r) потерял эту функциональность в версии 4 во время перехода в 2005 году из Фортран 77 в GNU Fortran.

Для пользователей, которым необходимо скомпилировать старое программное обеспечение на Ратфор в любой операционной системе, по-прежнему доступны соответствующие .deb и .rpm пакеты с исходным кодом.

См. также

Фортран

Примечания

Ссылки Ратфор (en) Ratfor90 History of Programming Languages: Ratfor Purdue summary

Категория:Языки программирования по алфавиту