Чому немає стандартної бібліотеки fortran?


10

Щоб бути мовою, зосередженою на математиці та наукових обчисленнях, мене завжди вражає повна відсутність корисних математичних процедур у стандартній бібліотеці Фортран. Можна було б очікувати, що він буде поставлений хоча б з рутиною для обчислення стандартного відхилення та середнього значення, але це не так. Зокрема, із впровадженням Fortran 90 та додаванням модулів (тим самим зменшуючи забруднення простору імен), я не бачу жодної причини, чому це критично бракує послуг.

Я хотів би почути ваші знання про те, чому це так.


Минуло 20 років, як я використовував фортран, і в ті часи я не приділяв такої великої уваги тому, про що говорили стандарти, я просто використовував те, що трапилося на машинах. Я виявив, що кількість доступних математичних бібліотек була величезною та послідовною у всіх машинах, якими я користувався. Мені цікаво, чи це тому, що хоча бібліотеки не є стандартними, вони є всюдисущими? (Я не маю уявлення, що це питання).
Мартін Йорк

Відповіді:


17

Ще коли розроблявся FORTRAN, не було такого поняття, як портативність коду. Було абсолютно рутинно для компілятора FORTRAN на одній машині приймати трохи іншу мову, ніж компілятор на іншій машині. Найбільш поширеною варіацією була довжина імені. IBM 1130 FORTRAN дозволив п'ять символів, DEC-10 - шість, CDC 6600 (моя перша машина, моя перша реальна мова складання) дозволила сім. Для тривимірних масивів потрібна мова; принаймні один мінікомп'ютер (Varian 76?) FORTRAN допускав семивимірні масиви.

Компанії регулярно розширювали свої мови FORTRAN, щоб зробити свої машини більш привабливими для покупців, і, хоча розширення можуть забезпечити подібну функціональність, вони ніколи не були однаковими. Багато компіляторів надали розширення для роботи вводу / виводу файлів та управління накладеннями, і вони ніколи не були однаковими. Іноді вони навіть не були поруч.

Перетворення від FORTRAN до FORTRAN, перенесення програми з однієї машини на іншу, було дуже зайнятим котеджним господарством, і хлопці, які могли це зробити, завжди могли знайти роботу. (Я працював у двох таких перетвореннях: я допоміг перенести оригінальну гру Matuszek-Reynolds-McGehearty-Cohen "Зоряний шлях" від CDC 6600 до DEC-10, і я переніс програму аналізу EKG від Varian 76 до TI 990. Ні двох такі проекти були ідентичними.)

Такі речі зробили дуже, дуже важко забезпечити "стандартні" бібліотеки, хоча кілька людей намагалися. Бібліотека IMSL була найбільшою, але вона була відправлена ​​у вигляді вихідного коду, і замовник повинен був дозволити її працювати над своєю системою.

Крім того, очікувалося, що програмісти FORTRAN матимуть розумний досвід в числових методах. Практично кожен програміст FORTRAN на планеті в ті часи навчився робити середнє та стандартне відхилення для себе, як домашнє завдання. Кожен програміст FORTRAN вивчав бісекцію та ітерацію Ньютона-Рафсона (сьогодні її називають "методом Ньютона"). Методи Рунге-Кутти вчили, як правило, за допомогою грязи, і, на той час, інтегратори Рунге-Кутти 6-го порядку були прикладами підручника. (Набагато пізніше люди зрозуміли, що Рунге-Кутта 4-го порядку - це "солодке місце" на кривій економічності.

І: Програмісти РІДНО змінювали комп’ютери, не змінюючи також роботу. Від тих програмістів, які рухалися, очікувались і ПОТРІБНО, щоб вони дуже добре засвоїли, як працюють нові системи, і вирішуючи відмінності.

У цьому середовищі буде дуже мало дзвінків щодо "стандартного" коду STDDEV, коли це було те, що будь-який компетентний програміст FORTRAN початкового рівня міг записати уві сні.


> Крім того: очікувалося, що програмісти FORTRAN матимуть розумний досвід чисельних методів - на відміну від сьогоднішнього, коли програмістам здається, що перша навичка - навчитися користуватися google :-)
AndersK

3
Усі користувалися NAG так чи інакше
Мартін Бекетт

1
@MartinBeckett: Це було задовго до NAG.
Джон Р. Стром

1
@Rook, боюся, тобі судилося жахливо розчаруватися.
Джон Р. Стром

1
@Rook Я, безумовно, можу їх виконати, але я не маю уявлення, що я би зробив їх ефективно та чисельно стабільно з першої спроби.
Іхрек

2

Особисто я вважаю цей факт завдяки бібліотеці MKL . Якщо ви шукаєте високоефективну математичну бібліотеку, то MKL - це те, що вам потрібно. Це не так дорого, і лабораторія, яка виконує математичні обчислення у своїх проектах, може собі це дозволити.


Ви не проти пояснити це детальніше - як і чому він відповідає на поставлене запитання? "Відповіді лише на посилання" не дуже вітаються на Stack Exchange
gnat


0

BLAS і LAPACK є фактично стандартними бібліотеками Fortran.


-1

Мова FORmulaTRANslation була покликана полегшити вам написання власних формул. Чому Fortran повинен визначати середню функцію, коли ви можете писати у Fortran 90 далі

xmean = сума (x) / max (розмір (x), 1)?


3
Ви припускаєте, що масив x повний значень. Зазвичай це дуже погане припущення.
Джон Р. Стром
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.