Por que nenhuma biblioteca padrão do fortran?

10

Para ser uma linguagem focada em matemática e computação científica, fico sempre perplexo com a total falta de rotinas matemáticas úteis na biblioteca padrão do Fortran. Seria de esperar que fosse enviado pelo menos com uma rotina para calcular o desvio padrão e a média, mas esse não é o caso. Em particular com a introdução do Fortran 90 e a adição de módulos (reduzindo a poluição do espaço para nome), não vejo nenhuma razão para essa falta crítica de serviços.

Gostaria de ouvir seu conhecimento sobre por que esse é o caso.

Stefano Borini
fonte
Faz 20 anos desde que usei o fortran e, naquela época, não prestava tanta atenção ao que os padrões diziam que apenas usava o que acontecia nas máquinas. Descobri que a quantidade de bibliotecas matemáticas disponíveis era enorme e consistente nas máquinas que eu usava. Gostaria de saber se isso ocorre porque, embora as bibliotecas não sejam padrão, elas são onipresentes? (Não faço ideia de que seja uma pergunta).
Martin York

Respostas:

17

Quando o FORTRAN foi desenvolvido, não havia portabilidade de código. Era absolutamente rotina para o compilador FORTRAN em uma máquina aceitar um idioma um pouco diferente do compilador em outra máquina. A variação mais comum foi o comprimento do nome. O IBM 1130 FORTRAN permitia cinco caracteres, o DEC-10 permitia seis, o CDC 6600 (minha primeira máquina, minha primeira linguagem assembly real) permitia sete. Matrizes tridimensionais foram exigidas pelo idioma; pelo menos um minicomputador (Varian 76?) FORTRAN permitia matrizes tridimensionais.

As empresas estendiam rotineiramente seus idiomas FORTRAN, para tornar suas máquinas mais atraentes para os clientes e, embora as extensões pudessem fornecer funcionalidade semelhante, elas nunca eram idênticas. Muitos compiladores forneceram extensões para gerenciamento de E / S de arquivos e sobreposições e nunca foram idênticos. Às vezes eles não estavam nem perto.

As conversões de FORTRAN para FORTRAN, portando um programa de uma máquina para outra, eram uma indústria caseira muito movimentada, e as pessoas que podiam fazer isso sempre encontravam trabalho. (Eu trabalhei em duas dessas conversões: ajudei a portar o jogo "Star Trek" original de Matuszek-Reynolds-McGehearty-Cohen do CDC 6600 para o DEC-10 e portou um programa de análise de eletrocardiograma da Varian 76 para a TI 990. tais projetos eram idênticos.)

Esse tipo de coisa tornou muito, muito difícil fornecer bibliotecas "padrão", embora algumas pessoas tenham tentado. A biblioteca IMSL era a maior, mas era enviada no formato de código-fonte e o cliente era obrigado a fazê-lo funcionar em seu sistema.

Além disso: Esperava-se que os programadores do FORTRAN tivessem uma experiência razoável em métodos numéricos. Quase todos os programadores da FORTRAN do planeta naqueles dias aprenderam como fazer o desvio médio e padrão para si mesmo, como tarefa de casa. Todo programador do FORTRAN aprendia a bissecção e a iteração de Newton-Raphson (atualmente chamada de "Método de Newton") na escola. Os métodos Runge-Kutta eram ensinados, geralmente de maneira mecânica, e, na época, os integradores de Runge-Kutta de 6ª ordem eram exemplos de livros didáticos. (Foi muito mais tarde que as pessoas descobriram que Runge-Kutta de 4ª ordem era o "ponto ideal" na curva de custo-efetividade.)

E: Programadores RARAMENTE mudavam de computador sem também mudar de emprego. Aqueles programadores que se movimentavam eram esperados e necessários para serem muito bons em aprender como os novos sistemas funcionavam e captar as diferenças.

Nesse ambiente, haverá muito pouco pedido de um código STDDEV "padrão", quando algo que qualquer programador FORTRAN competente de nível básico possa escrever enquanto dorme.

John R. Strohm
fonte
> Além disso: eram esperados programadores FORTRAN para ter um fundo razoável em métodos numéricos - ao contrário de hoje, quando parece programadores primeira habilidade é aprender como usar o Google :-)
AndersK
3
Todos usado NAG qualquer maneira
Martin Beckett
11
@MartinBeckett: Isso foi muito antes do NAG.
9788 John R. Strohm
11
@Rook, receio que você esteja destinado a ficar terrivelmente decepcionado.
John R. Strohm
11
@Rook Eu definitivamente posso fazê-los, mas não tenho idéia de fazê-los de maneira eficiente e numericamente estável na primeira tentativa.
Ixrec
2

Pessoalmente, acho esse fato devido à biblioteca MKL . Se você está procurando uma biblioteca matemática de alto desempenho, o MKL é o que você precisa. Não é tão caro, e um laboratório que executa computação matemática em seus projetos pode pagar.

Sorantis
fonte
você se importaria de explicar isso com mais detalhes - como e por que responde à pergunta? "Respostas apenas para links" não são bem-vindas no Stack Exchange
gnat
1

O cernlib fez muito do que você pede para pessoas que trabalham com física de alta energia e ainda é útil.

Benjamin Bannier
fonte
0

BLAS e LAPACK são bibliotecas Fortran padrão de fato.

quant_dev
fonte
-1

A linguagem FORmulaTRANslation foi projetada para facilitar a criação de suas próprias fórmulas. Por que o Fortran deve definir uma função média quando você pode escrever no Fortran 90 em diante

xmean = soma (x) / max (tamanho (x), 1)?


fonte
3
Você está assumindo que a matriz x está cheia de valores. Geralmente, é uma suposição muito ruim de se fazer.
John R. Strohm