Это не официальный сайт wikipedia.org 01.01.2023

Ратфор — Википедия

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

Возможности Править

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

  • Группировка операторов с помощью фигурных скобок;
  • Управляющие операторы: 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 году[1]. Он был использован в книге «Software Tools» (Брайан Кёрниган и Филлип Плаугер[en], 1976)[2].

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

По сравнению с препроцессором Ратфор для программы из 3000 строк кода, работающих в системе CDC 6500[en], потребовалось 185,470 секунд процессора. При использовании двоичного поиска на Ратфоре это время сократилось на 50%. Переписывание лексического анализатора с использованием метода, основанного на конечных автоматах, сократило время выполнения до 12,723 секунд.

При наличии компилятора Фортран 77 приемник Ратфора, Ratfiv[en] при использовании опции /f77 мог генерировать более читаемый код:

      IF (A .GT. B) THEN
        MAX = A
      ELSE
        MAX = B
      ENDIF

В 1985[3] году исходный код Ратфор был переписан на C и улучшен для получения кода Fortran 77[4]. В 2010 году был создан git репозиторий, с целью возрождения Ратфора.[5] Между тем, компилятор GNU C, который имел возможность напрямую компилировать файл Ратфор (.r) без сохранения бесполезного промежуточного кода на языке Фортран (.f) (gcc foo.r) потерял эту функциональность в версии 4 во время перехода в 2005 году из Фортран 77 в GNU Fortran.[6]

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

См. также Править

Примечания Править

  1. 1 2 Brian W. Kernighan. RATFOR — A Preprocessor for a Rational Fortran. Архивировано 20 декабря 2005 года.
  2. Brian W. Kernighan. Software tools. — Reading, Mass.: Addison-Wesley Pub. Co, 1976. — 338 pages с. — ISBN 0-201-03669-X, 978-0-201-03669-5. Архивная копия от 5 июня 2020 на Wayback Machine
  3. Ratfor implementation in C (1985)  (неопр.). Архивировано 3 марта 2016 года.
  4. Ratfor77  (неопр.). Дата обращения: 11 февраля 2021. Архивировано 3 марта 2016 года.
  5. Ratfor Git Revived  (неопр.). Дата обращения: 11 февраля 2021. Архивировано из оригинала 28 января 2016 года.
  6. gcc lost the ratfor preprocessor  (неопр.). Дата обращения: 24 июля 2019. Архивировано 7 апреля 2022 года.

Ссылки Править