Автор работы: Пользователь скрыл имя, 28 Декабря 2012 в 05:41, реферат
Фортран (Fortran) (раніше FORTRAN — скорочення від «The IBM Mathematical Formula Translating System», тобто «Система трансляції математичних формул IBM») — це імперативна мова програмування загального призначення, яка особливо підходить для інтенсивних чисельних та наукових обчислень. Розроблена корпорацією IBM в 1950-х роках в університетському містечку на півдні Сан-Хосе, штат Каліфорнія для потреб наукових та інженерних проектів.
Важливим доповненням до Fortran 2003 стала доповідь ISO TR-19767: про розширення модулів в Fortran. Ця доповідь впровадила додатковий SUBMODULE. Це дозволило визначення і реалізацію модулів, які можуть описуватись частинами в окремих блоках програми, що дозволяє покращити архітектуру великих бібліотек, полегшує публікацію інтерфейсів, а також запобігає каскадній компіляції.
Fortran 2008
Останній стандарт ISO / IEC 1539-1:2010, неофіційно відомий як Fortran 2008, було затверджено у вересні 2010 року [3]. Як і Fortran 95, це незначне оновлення, включає роз'яснення та поправки до Fortran 2003, але також вносить декілька нових можливостей. Ці можливості включають в себе:
Остаточний проект міжнародного стандарту ( Final Draft international Standard - FDIS) наводиться в документі N1830 [4]. Важливим доповненням до Fortran 2008 є ISO Technical Specification (TS) 29113 по подальшій взаємодії в Fortran з мовою C [5][6], який був представлено ISO в травні 2012 на затвердження. Специфікація додає підтримку доступу до дескриптора масиву з мови C і дозволяє не звертати уваги на тип і ранг аргументів.
Особливості та можливості сучасного фортрану
Можливості та переваги фортрану беруть своє походження з області застосування цієї мови (наука, бізнес-логіка та високошвидкісні, паралельні обчислення). В загальному сучасний фортран добре підготовлений для складних математичних обчислень:
Фортран дозволяє скористатись дуже великою кількістю наявного сумісного і перевіреного коду різноманітних загальних математичних бібліотек, а також спеціалізованого коду з усіх галузей науки та техніки
Фортран також має дуже низький рівень входження для початківців:
Основні можливості об'єктно-орієнтованого програмування додали ще в Fortran 90 стандарт. Починаючи з стандарту Fortran 2003, він отримав повний набір можливостей, що дозволяють класифікувати його як об'єктно-орієнтовану мову програмування: інкапсуляцію та модульність; успадкування; прив'язані до типів процедури; поліморфізм; вказівники на процедури; абстрактні типи даних.
Компілятори
Існує величезна кількість компіляторів мови фортран, однак в наступному списку подані тільки основні, широковідомі компілятори, та такі, що розвиваються:
Всі названі компілятори значно відрізняються між собою рівнем підтримки сучасних стандартів фортрану. Деякі з них зупинилися на Fortran 90, чи Fortran 95, а деякі завершують імплементацію нововведень останніх стандартів Fortran 2003/2008 (GNU gfortran, INTEL ifort, PGI pgfortran). Більшість з цих компіляторів є комерційними, однак GNU gfortran, g95 та Open64 випускаються під публічними відкритими ліцензіями.
Бібліотеки
Існує величезна кількість спеціалізованого наукового та інженерного коду на фортрані. Дуже широко розвинутими є напрямки математичних бібліотек та спеціалізовані алгоритми з чисельних методів[7]. Однак більшу частину такого коду почали розробляти ще до затвердження стандарту Fortran 90 і тому він часто містить в собі всі недоліки попередніх стандартів (фіксований код, нестандартні розширення, погану структурованість, незрозумілі назви змінних, статичне виділення пам'яті та інше). Дуже мало бібліотек тих часів переписувалось згідно з новими стандартами. Додавати такий код в сучасні проекти не є проблемою, але проблеми часто виникають, коли в коді цих бібліотек необхідно дещо змінити. В фортрані майже[8] відсутні бібліотеки з узагальненими алгоритмами для роботи з різноманітними типами даних. Також немає достатньої кількості зразкового коду, що використовує об'єктно-орієнтовану модель та роботу з узагальненими типами даних. Звичайно це пояснюється низькою потребою в такому коді в тих галузях, де використовується фортран. З стандартом 2003-2008 однак значно покращилась сумісність та можливість взаємодії бібліотек та програм на C та Fortran. Тому на даний час можна безпосередньо писати звичайний інтерфейс для використання потрібних бібліотек, що написані на C. Це використовується наприклад в FGSL[9] - інтерфейсі до GNU Scientific Library. В деяких випадках можна згенерувати такий інтерфейс автоматично[10].
Критика
Всю критику можна поділити на кілька видів
Дуже часто фортран критикують спеціалісти, котрі стикалися з ним кілька десятків років назад, тобто щонайбільше з стандартом Fortran 77. Їх уявлення про фортран зводиться до того, що це код у фіксованому форматі з скороченими (чи обрізаними) іменами змінних, з неявною типізацією, статичним виділенням пам'яті та надзвичайно перевантаженим використанням оператора GOTO. Незважаючи на те, що такий код дійсно підтримується майже всіма компіляторами, в сучасному фортрані він є архаїзмом і більше не використовується в нових проектах.
Внаслідок довготривалого розвитку компіляторів та орієнтації мови на чисельне математичне програмування дуже небагато мов чи точніше компіляторів можуть позмагатися в якості оптимізації з компіляторами фортрану. Тому дана дискусія зводиться переважно до суперечки: C чи Fortran - що швидше. Дехто звичайно додає що і C++ з використанням шаблонів та метапрограмування може позмагатися у швидкодії з фортраном (однак вони забувають згадати про те багатоповерхове пекло повідомлень компілятора про помилку в коді що використовує шаблони). В загальному швидкодія Фортрану та коду на C повинна бути однакова, однак досить часто компілятору все-таки вдається краще оптимізувати програми на фортрані. Також код на фортрані в середньому компактніший порівняно з C.
Оскільки фортран - це мова з достатньо вузькою нішею застосування, то це часто використовується критиками при порівнянні її з іншими мовами широкого профілю такими як C чи C++. Однак фортран не є мовою для системного чи низькорівневого програмування.
Приклади
Наступна програма ілюструє
динамічне виділення пам'яті та
операції з масивами; необхідно відзначити
відсутність явних циклів та математичні
операції з масивами як ціле. Цей
приклад обчислює середнє арифметичне
з даних котрі вводяться
program average
! обчислення середнього
! якщо немає вводу, повертаємо нуль
! така поведінка вибрана для спрощення коду
implicit none
real, dimension(:), allocatable :: points
integer
real
write (*,*) "Input number of points to average:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "Enter the points to average:"
read (*,*) points
! Обчислити середнє
if (number_of_points > 0) average_points = sum(points) / number_of_points
! Зараз середнє для додатніх чи від'ємних чисел
if (count(points > 0.) > 0) then
positive_average = sum(points, points > 0.) / count(points > 0.)
end if
if (count(points < 0.) > 0) then
negative_average = sum(points, points < 0.) / count(points < 0.)
end if
deallocate (points)
! вивести результат в терміналі
write (*,'(a,g12.4)') 'Average = ', average_points
write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
write (*,'(a,g12.4)') 'Average of negative points = ', negative_average
end program average
Гумор
Впродовж багатьох років існування та розвитку фортрану у розробників стали поширеними саркастичні жарти та специфічний фолькльор щодо фортрану. Нижче зібрані деякі зразки.