Почему нет стандартной библиотеки Fortran?


10

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

Я хотел бы услышать ваши знания о том, почему это так.


Прошло 20 лет с тех пор, как я использовал Fortran, и в те дни я не обращал особого внимания на то, что говорили стандарты, я просто использовал то, что случилось на машинах. Я обнаружил, что количество доступных математических библиотек огромно и одинаково для всех машин, которые я использовал. Мне интересно, если это потому, что хотя библиотеки не являются стандартными, они вездесущи? (Понятия не имею, что это вопрос).
Мартин Йорк

Ответы:


17

Когда разрабатывался FORTRAN, не было такого понятия, как переносимость кода. Для компилятора FORTRAN на одной машине было совершенно обычным делом принять немного другой язык, чем компилятор на другой машине. Наиболее распространенным вариантом была длина имени. IBM 1130 FORTRAN допускал пять символов, DEC-10 - шесть, CDC 6600 (моя первая машина, мой первый настоящий язык ассемблера) - семь. Трехмерные массивы требовались языком; по крайней мере один миникомпьютер (Varian 76?) FORTRAN допускал семимерные массивы.

Компании регулярно расширяют свои языки FORTRAN, чтобы сделать свои машины более привлекательными для клиентов, и, хотя расширения могут предоставлять схожую функциональность, они никогда не бывают идентичными. Многие компиляторы предоставили расширения для ввода-вывода файлов и управления наложением, и они никогда не были идентичными. Иногда они даже не были близко.

Преобразование Фортрана в Фортран, портирование программы с одной машины на другую, было очень занятой индустрией коттеджей, и ребята, которые могли это сделать, всегда могли найти работу. (Я работал над двумя такими преобразованиями: я помог перенести оригинальную игру «Звездный путь» Матушека-Рейнольдса-Мак-Харти-Коэна с CDC 6600 на DEC-10, и я перенес программу анализа ЭКГ с Varian 76 на TI 990. Нет двух такие проекты были идентичны.)

Подобные вещи очень затрудняли предоставление «стандартных» библиотек, хотя некоторые пытались. Библиотека IMSL была самой большой, но она поставлялась в форме исходного кода, и клиент должен был заставить ее работать в своей системе.

Также: программисты на Фортране должны были иметь разумный опыт работы с численными методами. Почти каждый программист на планете ФОРТРАН в те дни научился делать среднее и стандартное отклонение для себя, как домашнее задание. Каждый программист на Фортране изучал бисекцию и итерацию Ньютона-Рафсона (ныне называемый «метод Ньютона») в школе. Методы Рунге-Кутты обучались, как правило, наизусть, и в то время интеграторы Рунге-Кутты 6-го порядка были примерами из учебников. (Это было намного позже, когда люди поняли, что Рунге-Кутта 4-го порядка была «сладкой точкой» на кривой эффективности затрат.)

И: Программисты РЕАЛЬНО меняли компьютеры, не меняя при этом рабочих мест. Ожидалось, что те программисты, которые передвигались, должны были очень хорошо знать, как работают новые системы, и выявлять различия.

В этой среде будет очень мало вызовов для «стандартного» кода STDDEV, когда это мог написать любой компетентный программист на FORTRAN начального уровня.


> Кроме того: от программистов на Фортране ожидалось, что они обладают достаточным опытом в численных методах - в отличие от сегодняшнего дня, когда кажется, что программистам первым навыком является научиться пользоваться Google :-)
AndersK

3
В любом случае все использовали NAG
Мартин Беккет

1
@MartinBeckett: это было задолго до NAG.
Джон Р. Штром

1
@ Ладья, боюсь, тебе суждено быть ужасно разочарованным.
Джон Р. Штром

1
@ Ладно, я определенно могу их сделать, но понятия не имею, я бы сделал их эффективным и численно устойчивым способом с первой попытки.
Ixrec

2

Лично я думаю, что это связано с библиотекой MKL . Если вы ищете высокопроизводительную математическую библиотеку, MKL - то, что вам нужно. Это не так дорого, и лаборатория, которая выполняет математические вычисления в своих проектах, может себе это позволить.


Не могли бы вы объяснить это более подробно - как и почему он отвечает на заданный вопрос? «Ответы только на ссылки» не очень приветствуются на Stack Exchange
gnat

1

cernlib сделал многое из того, что вы просите для людей, работающих в области физики высоких энергий, и это все еще полезно.


0

BLAS и LAPACK де-факто являются стандартными библиотеками Fortran.


-1

Язык FORmulaTRANslation был разработан для того, чтобы вам было легко писать собственные формулы. Почему Фортран должен определять среднюю функцию, когда вы можете писать в Фортран 90 и далее?

xmean = сумма (х) / макс (размер (х), 1)?


3
Вы предполагаете, что массив x полон значений. Обычно это очень плохое предположение.
Джон Р. Штром
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.