Первые языки программирования высокого уровня. Язык Fortran

Алфавит - в программировании – система неразложимых, уверенно отличимых друг от друга символов (букв, цифр, знаков препинания и др. символов), используемых для построения языков программирования.

Синтаксис - сторона языка программирования, которая описывает структуру программ как наборов символов. Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения различным синтаксическим конструкциям.

Сема́нтика - в программировании - система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений алгоритмического языка.

Языки программирования низкого уровня – Автокод, Ассемблер,

Языки программирования высокого уровня -Фортран, Алгол, Кобол, Паскаль, Бейсик, Си++, Пролог

Языки программирования сверхвысокого уровня – APL, Алгол-68

Вычислительные Языки программирования - Фортран, Паскаль, Алгол, Бейсик, Си

Языки символьной обработки – Лисп, Пролог, Снобол и др.

Языки первого поколения:

Машинные коды были языком программирования первого поколения

Языки второго поколения:

Ассемблер

Языки третьего поколения:

эти языки часто обозначаются как языки «высокого» уровня.

Языки четвертого поколения:

Бейсик, Кобол, Си и Паскаль

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

Пролог, ЛИСП, Си++, Visual Basic, Delphi.

Язык программирования Фортра́н (Fortran)

Первый язык программирования высокого уровня, имеющий транслятор. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Название Fortran является акронимом от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана - большое количество написанных на нём программ и библиотек подпрограмм. Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны. Поэтому изменять, а тем более переписывать их на других языках программирования накладно, несмотря на то, что регулярно производятся попытки автоматического конвертирования FORTRAN-кода на современные языки программирования.

Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур, позволяет применять современные технологии программирования, в частности, ООП.

Эволюция стандартов языка

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

FORTRAN 77 (1980)

Введено множество улучшений:

Введены операторы открытия и закрытия файла (OPEN, CLOSE) и вывода на стандартное устройство - PRINT.

Добавлены строковый тип данных и функции для его обработки.

Введён блочный оператор IF и конструкция IF THEN - ELSE IF THEN - END IF, а также оператор включения фрагмента программы INCLUDE.

Введена возможность работы с файлами прямого доступа.

Увеличена максимальная размерность массива с 3 до 7. Сняты ограничения на индексы массива.

Усовершенствованы и расширены возможности работы с процедурами.

Введено понятие внутреннего файла (каковыми являются массивы, числовые и строковые переменные). Внутренние файлы позволяют, в частности, осуществлять преобразование число-строка и строка-число стандартным операторами чтения и записи READ и WRITЕ.

Fortran 90 (1991)

Значительно переработан стандарт языка.

Введён свободный формат написания кода. Появились дополнительные описания IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST.

Введены управляющие операторы и конструкции. Добавлены DO … END DO (вместо завершения цикла меткой), DO WHILE, оператор передачи управления на начало цикла CYCLE, конструкция выбора SELECT CASE (для замены громоздких конструкций IF и операторов GOTO), а также заключительный оператор программной единицы, модульной или внутренней процедуры END.

Введён инструментарий указателей и функции для работы с оперативной памятью (по аналогии с языком С).

Введены операторы работы с динамической памятью (ALLOCATE, DEALLOCATE, NULLIFY).

Добавлены программные компоненты MODULE, PRIVATE, PUBLIC, CONTAINS, INTERFACE, USE, INTENT.

Введено маскирование присваивания массивов (присваивание при выполнении наложенного на элементы массива логического условия без использования операторов условия), а также работа с сечениями массивов. Введён оператор и конструкция WHERE для частичной замены циклов (правая часть оператора присваивания не изменяется). Маскирование присваивания распространяется практически на все операторы, конструкции и функции, оперирующие с массивами.

Стандартные операции присваивания, сложения, вычитания, а также деления и умножения на число распространены на массивы и их секции, определяемые сечениями. В этом случае осуществляется поэлементное присваивание.

Появились новые встроенные функции, в первую очередь для работы с массивами. Функции для вычислений в массивах: ALL(лог. произведение) и MASK(логическое сложение), COUNT(число истинных элементов), PRODUCТ(произведение элементов массива), SUM(сложение элементов массива), DOT_PRODUCT (скалярное произведение), MATMUL (умножение матриц). Добавились справочные функции, а также функции переформирования и свёртки массивов.

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

Добавлены дополнительные функции для работы со строковыми данными, в частности, функции TRIM (удаление завершающих пробелов) и REPEAT(кратное копирование строки) и функции выравнивания по левой и правой границам.

Fortran 95 (1997)

Коррекция предыдущего стандарта. Введён оператор и конструкция FORALL, позволяющие более гибко, чем оператор и конструкция WHERE, присваивать массивы и заменять громоздкие циклы. FORALL позволяет заменить любое присваивание сечений или оператор и конструкцию WHERE, в частности, обеспечивает доступ к диагонали матрицы. Данный оператор считается перспективным в параллельных вычислениях, способствуя более эффективному, чем циклы, осуществлению распараллеливания.

Fortran 2003 (2004)

Дальнейшее развитие поддержки ООП в языке. Взаимодействие с операционной системой. Добавлены также следующие возможности:

Асинхронный ввод-вывод данных.

Средства взаимодействия с языком C

Усовершенствование динамического размещения данных

Стандартом предполагается поддержка средствами языка параллельных вычислений (Co-Arrays Fortran). Также предполагается увеличить максимальную размерность массивов до 15, добавить встроенные специальные математические функции и др.

Fortran (также FORTRAN) это язык программирования , разработанный в начале 1950-х годов и используемый до сих пор. Название является сокращением от "FORmula TRANslator". Ранние версии языка были известны как FORTRAN, но буквы перестали быть заглавными начиная с версии Fortran 90. Официальные стандарты языка теперь именуют язык как "FORTRAN".

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

Первый компилятор FORTRAN был разработан для IBM 704 в 1954-57 в команде IBM под руководством Джона Бэкуса (John W. Backus). Это было оптимизирующий компилятор, потому что авторы рассудили, что никто не будет использовать язык, даже при изучении программирования для чайников, если его производительность не будет сравнима с ассемблером.

Язык получил широкое распространение в среде ученых и использовался для написания программ с интенсивными численными операциями, которые вынуждали создателей компиляторов Фортрана усердно переписывать код компиляторов, чтобы те генерировали более быстрый код. Сегодня существует сножество поставщиков высокопроизводительных компиляторов для Fortran. Многие достижения в области теории и конструирования компиляторов были мотивированы необходимостью генерировать хороший код для Fortran программ как полагается для основ программирования.

Известно несколько версий языка, в том числе известные FORTRAN IV (также известный как FORTRAN 66), Fortran 77 и Fortran 90. Последний формальный стандарт для языка, опубликованный в 1997 году, известен как Fortran 95. Версии языка от IBM никогда не были так популярны, как, разработанные другими компаниями, и это особенно касается FORTRAN IV - WATFOR, версия FORTRAN IV, разработанная в Университете Ватерлоо в Канаде, была наиболее востребованной, поскольку выводила лучше остальных выводила сообщения об ошибках компиляции. Точно также, программное обеспечение для автоматической генерации блок-схем из FORTRAN программ было разработано за пределами IBM

Первоначально, язык опирался на точность форматирования исходного кода и интенсивное использования числовые состояния и оператор GOTO. Эти причуды были удалены из новых версий языка. Последующие версии также представили "современные" концепции программирования, такие как комментарии в исходном коде и вывод текста, операторы IF-THEN-ELSE (в FORTRAN 77), рекурсия (в Fortran 90), и параллельные вычисления, в то же время пытаясь сохранить в Fortran "постный" профиль и высокую производительность. Среди самых популярных основанных на Fortran языках, можно выделить SAS, предназначенного для получения статистических отчетов, и SIMSCRIPT, для моделирования процессов массового обслуживания.

Продавцы высокопроизводительных научных компьютеров (Burroughs, CDC, Cray, IBM, Texas Instruments) добавили расширения для Fortran, чтобы включить использование специальных аппаратных особенностей, таких как: кэш инструкций, процессор pipe-соединений, векторных массивов и т. д. Например, один из Fortran компиляторов IBM (H Extended IUP) содержал уровень оптимизации, которая заставляла инструкции машинного кода держать несколько внутренних блоков арифметической занятыми все время. Другим примером является CFD, особый "вариант" Фортран, разработанный специально для суперкомпьютера ILLIAC IV, работающий в исследовательском центре NASA Ames. Эти расширения, либо исчезли с течением времени или же эти элементы были включенны в основной стандарт; основным расширением является OpenMP, которое является кросс-платформенной расширением для доступа к общей памяти. Еще одно из новых расширений, CoArray Fortran, призван способствовать развитию параллельного программирования и .

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

Среди учёных, например, ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов и пакет для перемножения матриц , и пакет для решения сложных интегральных уравнений , и многие, многие другие. Ряд таких пакетов создавался на протяжении десятилетий и популярен в научной среде по сей день, например - IMSL (англ. ).

Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны. Поэтому изменять, а тем более переписывать их на других языках программирования накладно, несмотря на то, что регулярно производятся попытки автоматического конвертирования FORTRAN-кода на современные языки программирования.

Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур, позволяет применять современные технологии программирования, в частности, ООП .

Эволюция стандартов языка

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

FORTRAN 66 (1972) На базе стандарта фирмы IBM FORTRAN IV FORTRAN 77 (1980) Введено множество улучшений: Fortran 90 (1991) Значительно переработан стандарт языка. Fortran 95 (1997) Коррекция предыдущего стандарта. Введён оператор и конструкция FORALL, позволяющие более гибко, чем оператор и конструкция WHERE, присваивать массивы и заменять громоздкие циклы. FORALL позволяет заменить любое присваивание сечений или оператор и конструкцию WHERE, в частности, обеспечивает доступ к диагонали матрицы. Данный оператор считается перспективным в параллельных вычислениях, способствуя более эффективному, чем циклы, осуществлению распараллеливания . Fortran 2003 (2004) Дальнейшее развитие поддержки ООП в языке. Взаимодействие с операционной системой. Добавлены также следующие возможности: Fortran 2008 (2010) Стандартом предполагается поддержка средствами языка параллельных вычислений (Co-Arrays Fortran) . Также предполагается увеличить максимальную размерность массивов до 15, добавить встроенные специальные математические функции и др.

Компиляторы

С момента первоначальной разработки языка, компиляторы Фортрана производит фирма IBM. В настоящее время фирмой IBM поставляется оптимизирующий компилятор VS Fortran для мэйнфреймов IBM System z , история развития различных версий которого восходит ещё к 1964 году , а также компилятор XL Fortran для платформ на базе архитектуры PowerPC - AIX , Linux и суперкомпьютера Blue Gene (выпускалась также версия для Mac OS X , когда компьютеры Macintosh использовали процессоры PowerPC). Оба этих компилятора содержат очень сложные оптимизаторы, являющиеся результатом непрерывной научной работы специалистов IBM на протяжении полувека. На базе компилятора IBM Fortran XL фирмой Absoft, бизнес-партнёром IBM, создан и поставляется компилятор Absoft Pro Fortran для систем на базе процессоров PowerPC (Linux, Mac OS X) и Intel (Linux, Mac OS X, Windows) .

Фонд свободного программного обеспечения GNU выпускал открытый компилятор Фортрана-77 g77, доступный практически для любой платформы и полностью совместимый с GCC . Сейчас ему на смену пришел компилятор GFortran , в котором реализованы практически все конструкции стандарта Фортран-95 и многие конструкции стандартов Фортран-2003 и Фортран-2008. Он также полностью обратно совместим с Фортран-77. Также существует независимый проект g95 по созданию на основе GCC компилятора Фортран-95.

Возможности и структура программы

Фортран имеет достаточно большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами высокой точности. Выразительные средства языка изначально были весьма бедны, поскольку Фортран был одним из первых языков высокого уровня. В дальнейшем в Фортран были добавлены многие лексические конструкции, характерные для структурного, функционального и даже объектно-ориентированного программирования.

Перфокарта с разметкой колонок для Фортрана.

Структура программ изначально была ориентирована на ввод с перфокарт и имела ряд удобных именно для этого случая свойств. Так, 1-я колонка служила для маркировки текста как комментария (символом C ), с 1-й по 5-ю располагалась область меток, а с 7-й по 72-ю располагался собственно текст оператора или комментария. Колонки с 73-й по 80-ю могли служить для нумерации карт (чтобы восстановить случайно рассыпавшуюся колоду) или для краткого комментария, транслятором они игнорировались. Если текст оператора не вписывался в отведённое пространство (с 7-й по 72-ю колонку), в 6-ой колонке следующей карты ставился признак продолжения, и затем оператор продолжался на ней. Расположить два или более оператора в одной строке (карте) было нельзя. Когда перфокарты ушли в историю, эти достоинства превратились в серьёзные неудобства.

Именно поэтому в стандарт Фортрана, начиная с Fortran 90, в добавление к фиксированному формату исходного текста появился свободный формат, который не регламентирует позиции строки, а также позволяет записывать более одного оператора на строку. Введение свободного формата позволило создавать код, читаемость и ясность которого не уступает коду, созданному при помощи других современных языков программирования, таких как или Java .

Своего рода «визитной карточкой» старого Фортрана является огромное количество меток, которые использовались как в операторах безусловного перехода GOTO , так и в операторах циклов, и в операторах описания форматного ввода/вывода FORMAT. Большое количество меток и операторов GOTO часто делало программы на Фортране трудными для понимания.

Именно этот негативный опыт стал причиной, по которой в ряде современных языков программирования (например, Java) метки и связанные с ними операторы безусловного перехода сильно видоизменены.

Однако современный Фортран избавлен от избытка меток за счёт введения таких операторов, как DO … END DO, DO WHILE, SELECT CASE. Более того, в современных стандартах языка оставлен лишь классический оператор GOTO, применяемый во многих языках и поныне. Вычисляемый оператор GOTO, а также конструкция ENTRY - множественного входа в процедуры, были исключены.

Также к положительным чертам современного Фортрана стоит отнести большое количество встроенных операций с массивами и гибкую поддержку массивов с необычной индексацией. Пример:

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).

Фортран в СССР

Примечания

  1. См., например: Netlib Repository at UTK and ORNL
  2. А. М. Горелик . Эволюция языка программирования Фортран (1957-2007) и перспективы его развития//Вычислительные методы и программирование, 2008, Т. 9, с. 53-71
  3. Бартеньев О.В. Современный Фортран . - М .: Диалог МИФИ, 2005. - ISBN 5-86404-113-0
  4. А. М. Горелик. объектно-ориентированное программирвание на современном Фортране
  5. С. Д. Алгазин, В. В. Кондратьев. Программирование на Visual Fortran. - М .: «Диалог МИФИ », 2008. - 448 с. - ISBN 5-8243-0759-8
  6. Горелик А. М.Новости
  7. VS FORTRAN
  8. XL Fortran for Linux
  9. Absoft Pro Fortran Compiler Suites General Overview
  10. Sun Studio - Benchmarks
  11. Очерк Александра Расторгуева о появлении Фортрана в Дубне
  12. История компьютерной графики в России

Литература

  • Fortran. Programmer"s Reference Manual. The Fortran Automatic Coding System for the IBM 704 EDPM . - IBM Corp., 1956. - 51 с.
  • ISO/IEC 1539-2:2000 Information technology - Programming languages - Fortran - Part 2: Varying length character strings
  • Роберт У. Себеста. 2.3. Компьютер IBM 704 и язык Фортран // Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. - 5-е изд. - М .: Вильямс, 2001. - С. 63-69. - 672 с. - 5000 экз. - ISBN 5-8459-0192-8 (рус.), ISBN 0-201-75295-6 (англ.)

Ссылки

  • gfortran - Компилятор Фортрана 95/2003/2008, часть Коллекции компиляторов GNU
  • в Прогопедии - энциклопедии языков программирования (рус.)

Попробовать написать здесь свой первый пост меня подтолкнула , где предлагает использовать для обучения C++. Да, на данную тему было сломано множество копий.

Я, как и наверное большинство школьников на просторах нашей необъятной Родины, начинал постигать азы через синий экран, но не смерти, а Turbo Pascal 7.0. Был конечно и Basic, с котором я впервые столкнулся в дошкольном возрасте на советском компьютере «Электроника». Тогда он казался странным текстовым редактором, ведь компьютер глазами ребенка создан для игр. Однако уже в институте я познакомился с языком Fortran, познав который, я до сих пор недоумеваю, почему он не используется для обучения.

Да, многие скажут, что язык мертвый, не соответствует современным реалиям, а учебники с названием, как на картинке, вызывают лишь улыбку. Я попробую объяснить, чем же так замечателен этот язык и почему я его рекомендую в качестве первого языка. Если заинтересовало, добро пожаловать под кат.

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

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

Чем же так замечателен Фортран?

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

Отсюда и название самого языка: For mula Tran slator или же «переводчик формул». Т.е. изначально язык был ориентирован на людей без специальной подготовки, а значит должен был быть максимально простым.

Что ж, простота создателям удалась. Классическая первая программа выглядит следующим образом:

Program hw write(*,*) "Hello, World!" end
Синтаксис даже чуть проще Паскаля, нет необходимости ставить в конце строки "; " или ": " перед знаком равенства. Более того, людям, обладающих минимальным знанием английского языка, понять смысл простейшей программы не составит труда.

Тут я хочу отметить, что Фортран имеет несколько ревизий стандартов, основными из которых являются 77 и 90 (при этом сохраняется преемственность). 77 Фортран действительно архаичен, есть ограничение на длину строки, и необходимо делать отступ в начале строки, что может вызвать у молодого кандидата в программисты культурный шок. Недаром программы, написанные на 77 Фортране, получили из уст моего знакомого емкое название «Брежневский код». Поэтому весь мой текст относится к стандарту языка 90 и новее.

Для примера, приведу код для вычисления суммы неотрицательных целых чисел от 1 до n, вводимого с клавиатуры, написанный моей дипломницей при обучении её программированию с нуля. Именно на ней я испытал преподавание Фортрана в качестве первого языка. Надеюсь, что для неё это пошло на пользу, а мой экперимент удался. По крайней мере основы она усвоила за пару занятий, первое из которых ушло на лекцию про язык.

Program chisla implicit none ! Variables integer n,i,s ! Body of chisla s=0 write (*,*) "Введите n" read (*,*) n if (n.le.0) then write (*,*) "Отрицательное или ноль" else do i=1,n s=s+i end do write (*,*) "Сумма=", s end if end
Нетрудно заметить, что как мы думаем, так и записываем код. Никаких сложностей у обучаемого не может возникнуть в принципе. Внимательный читатель конечно же спросит, что за implicit none и две звездочки в скобках через запятую. implicit none говорит нам, что мы явно указываем тип переменных, тогда как без данной записи компилятор будет сам угадывать тип. Первая звездочка означает, что ввод и вывод происходят на экран, а вторая говорит о том, что формат ввода-вывода определяется автоматически. Собственно, программы на Фортране выглядит не сложнее, чем написанный выше кусок кода.

А что насчет программной среды?

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

Для написания программ на Фортране подойдет любой текстовый редактор. Если хочется подсветки синтаксиса, то можно использовать Notepad++ (поддерживает синтаксис только 77 стандарта) или SublimeText. Программу написали, чем будем компилировать? Тут все просто, можно использовать свободный GNU Fotran. Если использование планируется некоммерческое, то разрешается замахнуться и на компилятор от Intel, который хорошо оптимизирован под одноименные процессоры и поставляется с минимально необходимым IDE. Т.е. порог вхождения весьма льготный.

Лучшей средой разработки под Фортран по мнению многих пользователей остается Compaq Visual Fortran 6.6, последняя версия которого увидела свет в начале 2000-х. Почему же так сложилось, что среда, основанная на Visual Studio 6.0, которая без танцев с бубном заводится максимум на Windows XP 32 bit, и имеет ограничение на используемую память, снискала такую популярность среди фортранщиков. Ответ приведен на рисунке ниже.

Это Compaq Array Visualizer, который представляет собой очень удобный инструмент по визуализации 1, 2 и 3-х мерных массивов в процессе отладки программы непосредственно из дебаггера. Как говорится, попробовав раз, ем и сейчас. Дело в том, что Фортран сейчас используется в основном в науке (о чем будет сказано позже), в частности в той области, с которой я имею дело, а именно в физике атмосферы. При отладке программ массивы представляют собой различные метеорологические поля, такие как температура, давление, скорость ветра. Искать ошибку в графических полях гораздо проще, чем в наборе цифр, тем более, обычно известно, как примерно должно выглядеть поле, поэтому очевидные ошибки отсекаются моментально.

К сожалению, все наработки по компилятору перешли от Compaq к Intel. Intel первоначально поддерживала Array Visualizer, правда, уже те версии были бледным отражением продукта от Compaq, работать с ними было не так удобно, как прежде, но хотя бы минимальная работоспособность поддерживалась. Увы, Intel перестала разрабатывать новые версии Array Visualizer"а, поставив крест на этом удобнейшем инструменте. Именно поэтому фортрановское сообщество в основной своей массе пишет программы и занимается их отладкой под Compaq Visual Fortran на Windows, а боевые расчеты запускает на серверах под Linux, используя Intel-овские компиляторы. Интел, пожалуйста, услышь мольбы пользователей, верни нормальный инструмент для визуализации массивов в свой дебаггер!

Место Фортрана в современном мире

А сейчас мы подошли к той самой теме, которая обычно вызывает бурную дискуссию с моими коллегами, использующими Matlab, которые утверждают, что описанный в данном посте раритетный язык ни на что не годится. Тут я с ними не соглашусь. Дело в том, что Фортран исторически использовался в инженерных или научных расчетах, а потому со временем обрастал множеством готовых библиотек и кодами программ решения той или иной задачи.

Код в буквальном смысле передается из поколения в поколение, да еще и хорошо документируется. Можно найти множество готовых решений уравнений математической физики, линейной алгебры (здесь следует отметить удачную реализацию работы с матрицами), интегральных и дифференциальных уравнений и многого-многого другого. Наверное тяжело найти задачу из области физмат наук, для которой не был бы реализован алгоритм на языке Фортран. А если учесть отличную оптимизацию интеловских компиляторов под интеловские же процессоры, поддержку параллельных вычислений на высокопроизводительных кластерах, то становится понятно почему в научной среде этот язык занимает заслуженное первое место. Думаю, на любом суперкомпьютере можно найти установленный фортрановский компилятор.

Большинство серьезных моделей, по крайней мере из области физики атмосферы, написаны именно на Фортране. Да-да, прогноз погоды, которым каждый интересуется время от времени, получается в ходе расчетов моделей, написанных на этом языке. Более того, язык не находится в стагнации, а постоянно совершенствуется. Так, после описанных раннее стандартов 77 и 90, появились новые редакции 95, 2003, 2008, поддержка которых внедрена в актуальные компиляторы. Последние версии Фортрана несколько освежили старый проверенный временем язык, превнеся поддержку современного стиля, добавив объектно-ориентированное программирование, отсутствие которого было чуть ли не самым главным козырем противников этого языка. Более того, The Portland Group выпустила PGI CUDA Fortran Compiler, позволяющий проводить высокопараллельные расчеты на видеокартах. Таким образом, пациент более чем жив, а значит программисты на Фортран остаются востребованными до сих пор.

Вместо послесловия

А теперь я хотел бы вернуться к изначально затронутой теме об обучении программированию, и попытаться тезисно сформулировать основные плюсы Фортрана при выборе его в качестве первого языка.
  • Фортран очень прост в обучении, синтаксис понятен неподготовленному человеку. Познав основы, легко переучиться на любой другой язык.
  • Бесплатный набор средств позволяет не получать лишних вопросов от правообладателей.
  • Язык знаком преподавателям, так как существует давно, а учителя у нас в основном представители старшего поколения.
  • Широко распространен по всему миру и является кладезем всевозможных библиотек.
  • Стандартизирован, кроссплатформеннен и совместим с более ранее ревизиями.
  • Полезен для студентов технических, а особенно физмат специальностей, ввиду ориетации на научные и инженерные вычисления.
  • Актуален и востребован и по сей день.
Так почему же не Фортран?

Министерство образования и науки Российской Федерации

Уральский федеральный университет

имени первого Президента России

ОСНОВЫ ПРОГРАММИРОВАНИЯ

НА ЯЗЫКЕ ФОРТРАН

Учебное пособие

Екатеринбург

Введение. 3

Историческая справка. 5

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

Отличия Фортрана 90 от Фортрана 77. 11

Доступ к вычислительным ресурсам. 15

Запуск задач на кластере. 17

Переписать тексты программ на сервер. 17

Компиляция программ. 17

Запуск программы на счет. 19

Типы данных. 22

Целая константа. 22

Вещественная константа. 23

Вещественная константа двойной точности. 23

Комплексная константа. 23

Комплексная константа двойной точности. 24

Логическая константа. 24

Текстовая константа. 24

Операторы описания типов данных. 26

INTEGER целого типа. 26

REAL и DOUBLE PRECISION вещественного типа. 27

COMPLEX и DOUBLE COMPLEX комплексного типа. 28

CHARACTER символьного типа. 29

LOGICAL логического типа. 29

DIMENSION массивов. 30

Атрибут PARAMETER.. 32

Разновидности встроенных типов данных. 35

Выражения, операции и присваивания. 36

Арифметические выражения. 36

Выражения отношения. 37

Логические выражения. 38

Правила вычисления выражений. 38

Операторы ввода/вывода. 39

Оператор ввода DATA.. 39

Оператор ввода READ.. 40

Оператор вывода WRITE. 41

Оператор вывода на экран PRINT. 42

Оператор задания формата ввода-вывода (FORMAT) 43

Спецификации X, T. 43

Спецификатор I 44

Разделители. 45

Спецификация F. 46

Повторители. 49

Спецификация E. 50

Спецификация G.. 51

Дескрипторы данных. 52

Операторы условия. 53

Логический оператор условия. 53

Арифметический оператор условия. 57

Конструкция SELECT CASE. 60

Операторы цикла. 62

Оператор цикла DO.. 62

Оператор цикла DO WHILE. 64

Оператор остановки STOP. 65

Оператор выхода из цикла EXIT. 66

Операторы перехода. 67

Оператор бузословного перехода GOTO.. 67

Вычисляемый оператор перехода GOTO.. 67

Оператор условного перехода IF … GOTO.. 68

Работа с массивами. 69

Ввод массивов. 69

Вывод массивов. 71

Обработка массивов. 73

Подпрограммы.. 76

Оператор-функция. 78

Подпрограмма-функция FUNCTION.. 81

Подпрограмма-процедура SUBROUTINE. 83

Работа с внешними файлами. 85

Оператор открытия файла OPEN.. 85

Оператор закрытия файла CLOSE. 86

Примеры работы с файлами. 86

Литература. 89

Введение

Характерная черта параллельных ЭВМ – возможность одновременного использования для обработки информации большого числа процессоров. Применение многопроцессорных вычислительных систем (МВС) ставит две задачи построения параллельных алгоритмов: распараллеливание существующих последовательных алгоритмов и создание новых алгоритмов с ориентацией на параллельные вычислительные системы.

Наиболее распространенной технологией программирования для параллельных компьютеров с распределенной памятью в настоящее время является MPI. Основным способом взаимодействия параллельных процессов в таких системах является передача сообщений друг другу. Это и отражено в названии данной технологии – Message Passing Interface (интерфейс передачи сообщений). Стандарт MPI фиксирует интерфейс, который должен соблюдаться как системой программирования на каждой вычислительной платформе, так и пользователем при создании своих программ. Коммуникационная библиотека MPI стала общепризнанным стандартом в параллельном программировании с использованием механизма передачи сообщений.

MPI-программа представляет собой набор независимых процессов, каждый из которых выполняет свою собственную программу (не обязательно одну и ту же), написанную на языке C или FORTRAN.В языке FORTRAN большинство MPI-процедур являются подпрограммами (вызываются с помощью оператора CALL), а код ошибки возвращают через дополнительный последний параметр процедуры. Несколько процедур, оформленных в виде функций, код ошибки не возвращают. Не требуется строгого соблюдения регистра символов в именах подпрограмм и именованных констант. Массивы индексируются с 1. Объекты MPI, которые в языке C являются структурами, в языке FORTRAN представляются массивами целого типа.

В ИММ программируют на Фортране. Главной сложностью в его использовании для больших задач является согласование взаимодействия частей большой задачи. Фортран 90 включает механизмы взаимодействия объектов в соответствии с технологией объектно-ориентированного программирования, которые облегчают коллективную работу над большим проектом. Это модули для оформления библиотек, структуры и производные типы данных для организации сложных данных, это динамическое распределение памяти, а также ряд механизмов обработки массивов, в том числе образование различных вырезок (сечений). Возможность объединения в одном семействе (в роду) типовых процедур обработки, отличающихся типами их аргументов, может быть полезным средством в целом ряде задач. Виды (семейства) типов данных позволяют легко настраивать реализацию типа с учетом свойств аппаратуры (например, тип INTEGER можно объявить длинным или коротким через управление видом KIND). Некоторые правила стилевого оформления могут помогать разработке, например, объявление входных, выходных и изменяемых параметров процедуры помогает отысканию ошибок взаимодействия программных единиц. Правила записи свойств данных, комментариев и других элементов облегчают чтение написанных программ, что ускоряет поиск ошибок.

Историческая справка

1954 г. – IBM , первый транслятор языка Фортран .

1958 г. – Фортран II .

1962 г. – Фортран IV .

1966 г. – Фортран 66.

1978 г. – Фортран 77 .

Модификация языка Фортран, появившиеся в 1958 году, получила название Фортран II и содержала понятие подпрограммы и общих переменных для обеспечения связи между сегментами.

К 1962 году относится появление языка, известного под именем Фортран IV . В 1966 завершена разработка американского стандарта на язык ANSI (American National Standards Institute), язык называют Fortran 66 . В 1978 году разработана вторая версия стандарта ANSI – язык Fortran 77 , включающий элементы структурного программирования, например, структурный IF, символьные типы.

Третий вариант стандарта ANSI – Fortran 90 , реализован в 1991. Fortran 90 является развитием языка Fortran 77 , так что программа, написанная на Fortran 77 , может быть скомпилирована и запущена как программа на Fortran 90 . Стандарт Fortran 90 Standard вводит много новых средств для операций над массивами, новые методы спецификации точности, свободный формат исходного кода, рекурсию, динамические массивы и т. д.

Программы на текущем языке стандарта Fortran 77 могут успешно компилироваться компиляторами Fortran 90 без каких-либо изменений. Тем не менее, структура программы на языке Fortran 90 может значительно отличаться от структуры эквивалентной программы на Fortran 77 . Программист должен остерегаться смешения двух стилей.

В такой же мере компилятор с Fortran 90 требует обеспечения объяснений для сообщений о некоторых кодах несоответствия (несогласования), то есть использование операторов или переменных, которые разрешены сверх множества правил, выходящих за пределы стандарта.

Фортран занимает почетное место среди современных языков программирования. Это один из первых языков программирования высокого уровня и с самого своего рождения он предназначался для решения сложных вычислительных задач. В среде прикладных программистов Фортран сначала был встречен скептически, поскольку считалось, что заплатить за удобство программирования на языке высокого уровня придется значительной потерей скорости вычислений. Если речь идет о моделировании сложных процессов или обработке больших объемов информации, скорость вычислений является решающим фактором, определяющим выбор языка, вычислительной платформы и технологии программирования.

Статьи по теме: