Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

Фортран



План:


Введення

Фортран (Fortran) - перший мова програмування високого рівня, що має транслятор. Створений в період з 1954 по 1957 групою програмістів під керівництвом Джона Бекуса в корпорації IBM (мова Планкалкюль, що претендує на пальму першості, був винайдений ще в 1945, але не був реалізований аж до 2000). Назва Fortran є акронімом від FOR mula TRAN slator (перекладач формул). Фортран широко використовується в першу чергу для наукових та інженерних обчислень. Одна з переваг сучасного Фортрану - велика кількість написаних на ньому програм і бібліотек підпрограм. [1] Серед вчених, наприклад, ходить така приповідка, що будь-яка математична задача вже має рішення на Фортрані, і, дійсно, можна знайти серед тисяч фортрановскіх пакетів і пакет для перемноження матриць, і пакет для вирішення складних інтегральних рівнянь, і багато, багато інших. Ряд таких пакетів створювався протягом десятиліть і популярний в науковому середовищі до цього дня.

Більшість таких бібліотек є фактично надбанням людства: вони доступні у вихідних кодах, добре задокументовані, налагоджені і досить ефективні. Тому змінювати, а тим більше переписувати їх на інших мовах програмування накладно, незважаючи на те, що регулярно проводяться спроби автоматичного конвертування FORTRAN-коду на сучасні мови програмування.

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


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

Фортран в СРСР з'явився пізніше, ніж на Заході, оскільки спочатку в СРСР більш перспективним мовою вважалася Алгол. У впровадженні Фортрану велику роль зіграло спілкування радянських фізиків (зокрема Леонтович А. Л.) зі своїми колегами з CERN, де в 1960-х роках майже всі розрахунки велися з використанням програм на Фортрані [2].

Перший радянський компілятор з Фортрану був створений в 1967 році для машини Мінськ-2, однак він не отримав великої популярності. Широке впровадження Фортрану почалося після створення в 1968 році компілятора ФОРТРАН-Дубно для машини БЕСМ-6. Фортран - основна мова для АСВТ і СМ ЕОМ, часто використовувався разом з препроцесором РАТФОР. Машини ЄС ЕОМ, що з'явилися в 1972, вже спочатку мали транслятор Фортрану ("запозичений" з IBM/360 разом з іншим програмним забезпеченням).


2. Еволюція стандартів мови

Фортран - жорстко стандартизований мову, саме тому він легко переноситься на різні платформи. Нові стандарти мови значною мірою зберігають наступність із більш старими, що дозволяє використовувати коди раніше написаних програм і їх модифіковані [3].

FORTRAN 66 (1972)
На базі стандарту фірми IBM FORTRAN IV
FORTRAN 77 (1980)
Введено безліч поліпшень: [3]
  1. Введено оператори відкриття та закриття файлу (OPEN, CLOSE) і виводу на стандартний пристрій - PRINT.
  2. Додані рядковий тип даних і функції для його обробки.
  3. Введено блочний оператор IF і конструкція IF THEN - ELSE IF THEN - END IF, а також оператор включення фрагменту програми INCLUDE.
  4. Введена можливість роботи з файлами прямого доступу.
  5. Збільшено максимальну розмірність масиву з 3 до 7. Зняті обмеження на індекси масиву.
  6. Удосконалено та розширено можливості роботи з процедурами.
  7. Введено поняття внутрішнього файлу (якими є масиви, числові і рядкові змінні). Внутрішні файли дозволяють, зокрема, здійснювати перетворення число-рядок і рядок-число стандартним операторами читання і запису READ і WRITE [4].
Fortran 90 (1991)
Значно перероблений стандарт мови. [4]
  1. Введено вільний формат написання коду. З'явилися додаткові описи IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST.
  2. Введено керуючі оператори і конструкції. Додані DO ... END DO (замість завершення циклу міткою), DO WHILE, оператор передачі управління на початок циклу CYCLE, конструкція вибору SELECT CASE (для заміни громіздких конструкцій IF і операторів GOTO), а також заключний оператор програмної одиниці, модульної або внутрішньої процедури END [3].
  3. Введено інструментарій покажчиків і функції для роботи з оперативною пам'яттю (за аналогією з мовою С).
  4. Введено оператори роботи з динамічною пам'яттю (ALLOCATE, DEALLOCATE, NULLIFY).
  5. Додані програмні компоненти MODULE, PRIVATE, PUBLIC, CONTAINS, INTERFACE, USE, INTENT.
  6. Введено маскування присвоювання масивів (привласнення при виконанні накладеного на елементи масиву логічного умови без використання операторів умови), а також робота з перетинами масивів. Введено оператор і конструкція WHERE для часткової заміни циклів (права частина оператора присвоєння не змінюється). Маскування присвоювання поширюється практично на всі оператори, конструкції і функції, які оперують з масивами.
  7. Стандартні операції привласнення, додавання, віднімання, а також розподілу і множення на число поширені на масиви та їх секції, зумовлені перерізами. У цьому випадку здійснюється поелементне присвоювання.
  8. З'явилися нові вбудовані функції, в першу чергу для роботи з масивами. Опції для обчислень у масивах: ALL (лог. твір) і MASK (логічне складання), COUNT (число істинних елементів), PRODUCТ (твір елементів масиву), SUM (додавання елементів масиву), DOT_PRODUCT (скалярний твір), MATMUL (множення матриць ). Додалися довідкові функції, а також функції переформування і згортки масивів.
  9. У мові з'явилися елементи ООП [5]. Введено похідні типи даних. Окремо оголошений список застарілих рис мови, призначених для видалення в майбутньому.
  10. Додані додаткові функції для роботи з рядковими даними, зокрема, функції TRIM (видалення завершальних пробілів) і REPEAT (кратне копіювання рядка) і функції вирівнювання по лівій і правій кордонів.
Fortran 95 (1997)
Корекція попереднього стандарту. Введено оператор і конструкція FORALL, що дозволяють більш гнучко, ніж оператор і конструкція WHERE, присвоювати масиви і замінювати громіздкі цикли. FORALL дозволяє замінити будь присвоювання перерізів або оператор і конструкцію WHERE, зокрема, забезпечує доступ до діагоналі матриці. Даний оператор вважається перспективним в паралельних обчисленнях, сприяючи більш ефективному, ніж цикли, здійсненню розпаралелювання [4].
Fortran 2003 (2004)
Подальший розвиток підтримки ООП в мові. Взаємодія з операційною системою. Додані також наступні можливості: [3]
  1. Асинхронний введення-виведення даних.
  2. Засоби взаємодії з мовою C.
  3. Удосконалення динамічного розміщення даних [6].
Fortran 2008
Стандартом передбачається підтримка засобами мови паралельних обчислень (Co-Arrays Fortran) [3] [7]. Також передбачається збільшити максимальну розмірність масивів до 15, додати вбудовані спеціальні математичні функції [3] та ін

3. Компілятори

З моменту первісної розробки мови, компілятори Фортрану виробляє фірма IBM. В даний час фірмою IBM поставляється оптимізуючий компілятор VS Fortran [8] для мейнфреймів IBM System z, історія розвитку різних версій якого сягає ще 1964, а також компілятор XL Fortran [9] для платформ на базі архітектури 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) [10].

До 1997 основним виробником компіляторів Фортрану для IBM PC сумісних комп'ютерів була корпорація " Microsoft ". Згодом вона відмовилася від їх розробки в зв'язку з низькою прибутковістю. На даний момент компілятори постачає фірма" DEC ", що увійшла в 1998 році до складу" Compaq "і разом з останньою в 2002 році злилася з" HP ".

Компанія "DEC" поставляє компілятор, інтегрований в середу розробки Digital Visual Fortran, засновану на Microsoft Visual Studio. Найбільш відомими продуктами цієї лінійки є FPS 4.0 (Microsoft Fortran Power Station), DVF 5.0 і 6.0. Кожен компілятор може підтримувати кілька стандартів Фортрану. Злиття компаній стали причиною того, що наступні продукти з'являлася на ринку під торговими марками Compaq і HP. В даний час HP продає середовище розробки версії 6.6 для Intel/win32. Підтримка Фортрану реалізована також для всіх високопродуктивних платформ HP.

Іншим великим постачальником систем розробки на Фортрані є фірма " Lahey ", що пропонує інтегровані рішення для Windows і Linux.

Довгий час кращим компілятором Фортрану для PC вважався компілятор фірми " Watcom ", який був виділений в окремий проект Open Watcom розвиваючий компілятор на відкритій основі.

Відомий і розвивається також компілятор фірми Intel - Intel Fortran Compiler, який дозволяє оптимізувати код під платформи Intel IA-32, x86_64 і IA-64.

Серед безкоштовних компіляторів Фортран слід виділити компілятор від колишньої Sun Microsystems (зараз Oracle), що входить до складу Sun Studio, який генерує ефективний код під SPARC, x86 і x86-64 [11] і доступний для ОС Solaris, OpenSolaris і GNU / Linux.

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


4. Можливості та структура програми

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

Перфокарта з розміткою колонок для Фортрану.

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

Саме тому в стандарт Фортрану, починаючи з Fortran 90, на додаток до фіксованого формату вихідного тексту з'явився вільний формат, який не регламентує позиції рядка, а також дозволяє записувати більше одного оператора на рядок. Введення вільного формату дозволило створювати код, читаність і ясність якого не поступається коду, створеного за допомогою інших сучасних мов програмування, таких як C або 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  ) 

5. Приклад програми

Програма "Hello, World!"

Фіксований формат (символами "" виділені прогалини в позиціях рядки з 1 по 6):

 ^^^^^^  PROGRAM hello  ^^^^^^  PRINT  *  ,  'Hello, World!'  ^^^^^^  END 

Вільний формат:

 program  hello print  *  ,  "Hello, World!"  end 
Зауваження.
  • Оператор PROGRAM не є обов'язковим. Строго кажучи, єдиний обов'язковий оператор Фортран-програми - оператор END.
  • Вибір прописних або рядкових букв для написання операторів програми довільний. З точки зору сучасних стандартів мови Фортран, безліч великих літер і безліч малих літер при написанні операторів мови збігаються.

6. Взаємодія з іншими мовами

Багато системи програмування дозволяють компонувати отримані в результаті трансляції фортрановской програми об'єктні файли з об'єктними файлами, отриманими від компіляторів з інших мов, що дозволяє створювати більш гнучкі і багатофункціональні програми. Для мови Фортран також доступна велика кількість бібліотек, що містять як підпрограми рішення класичних обчислювальних завдань ( LAPACK, IMSL, BLAS), завдань організації розподілених обчислень ( MPI, pvm), так і завдань побудови графічних інтерфейсів ( Quickwin, FORTRAN / TK) або доступу до СУБД ( Oracle).


Примітки

  1. Див, наприклад: Netlib Repository at UTK and ORNL - netlib.org
  2. Нарис Олександра Расторгуєва про появу Фортрану в Дубні - zhurnal.lib.ru / r / rastorguew_a_a / fortran.shtml
  3. 1 2 3 4 5 6 А. М. Горелік. Еволюція мови програмування Фортран (1957-2007) та перспективи його розвитку / / Обчислювальні методи і програмування, 2008, Т. 9, с. 53-71 - num-meth.srcc.msu.su/zhurnal/tom_2008/v9r208.html
  4. 1 2 3 Бартеньев О.В. Сучасний Фортран - lib.mexmat.ru/books/8926 - М .: Діалог МИФИ, 2005. - ISBN 5-86404-113-0.
  5. А. М. Горелік. об'єктно-орієнтоване программірваніе на сучасному Фортране - www.ict.edu.ru/ft/004318/prep2002_70.pdf
  6. С. Д. Алгазін, В. В. Кондратьєв Програмування на Visual Fortran - М .: "Діалог МИФИ ", 2008. - 448 с. - ISBN 5-8243-0759-8.
  7. Горелик А. М. Новини - parallel.ru/tech/tech_dev/f2000.html
  8. VS FORTRAN - www.ibm.com/software/awdtools/fortran/vsfortran/
  9. XL Fortran for Linux - www.ibm.com / software / products / ru / ru / xlfortran-linux
  10. Absoft Pro Fortran Compiler Suites General Overview - www.absoft.com / Absoft Compilers.htm
  11. Sun Studio - Benchmarks - developers.sun.com / sunstudio / products / benchmarks.html

Цей текст може містити помилки.

Схожі роботи | скачати
© Усі права захищені
написати до нас
Рейтинг@Mail.ru