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.
language-features
fortran
Stefano Borini
fonte
fonte
Respostas:
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.
fonte
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.
fonte
O cernlib fez muito do que você pede para pessoas que trabalham com física de alta energia e ainda é útil.
fonte
BLAS e LAPACK são bibliotecas Fortran padrão de fato.
fonte
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