Чтобы быть языком, сосредоточенным на математике и научных вычислениях, меня всегда сбивает с толку полное отсутствие полезных математических процедур в стандартной библиотеке Фортрана. Можно было бы ожидать, что он будет отправлен по крайней мере с рутиной для вычисления стандартного отклонения и среднего значения, но это не так. В частности, с введением Fortran 90 и добавлением модулей (таким образом уменьшая загрязнение пространства имен), я не вижу причин, почему это критическое отсутствие услуг.
Я хотел бы услышать ваши знания о том, почему это так.
language-features
fortran
Стефано Борини
источник
источник
Ответы:
Когда разрабатывался 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 начального уровня.
источник
Лично я думаю, что это связано с библиотекой MKL . Если вы ищете высокопроизводительную математическую библиотеку, MKL - то, что вам нужно. Это не так дорого, и лаборатория, которая выполняет математические вычисления в своих проектах, может себе это позволить.
источник
cernlib сделал многое из того, что вы просите для людей, работающих в области физики высоких энергий, и это все еще полезно.
источник
BLAS и LAPACK де-факто являются стандартными библиотеками Fortran.
источник
Язык FORmulaTRANslation был разработан для того, чтобы вам было легко писать собственные формулы. Почему Фортран должен определять среднюю функцию, когда вы можете писать в Фортран 90 и далее?
xmean = сумма (х) / макс (размер (х), 1)?
источник