As demandas que você colocou realmente colocaram o Fortran no topo da lista, para problemas como este:
a) processamento de números
b) paralelamente
c) era e ainda é a linguagem de fato ensinada fora dos estudos de cs (para engenheiros que não são programadores profissionais).
d) tem um apoio incrível da indústria (!), número de compiladores de nível industrial, com nenhum dos fornecedores mostrando menos sinais de abandonar esse ramo. Um dos representantes da Intel, há pouco tempo, revelou que as vendas de seus produtos Fortran são maiores do que qualquer outro em suas ferramentas de desenvolvimento.
É também uma linguagem incrivelmente fácil de entender. Não concordo que leve tempo para levar assistentes de pesquisa atualizados. Meu primeiro livro não tinha mais do que, oh, eu não sei, 30 (?) Páginas de texto esparso impresso. É uma linguagem na qual, depois de aprender 10 palavras-chave, é possível escrever programas de tamanho médio. Ousaria dizer que essas 30 páginas escritas no texto padrão do Word tornariam um "manual Fortran" mais abrangente do que a maioria dos usuários.
Se você estiver interessado em CUDA, convém verificar o compilador do Portland Group , que o suporta . Não estou familiarizado com os detalhes, mas as pessoas geralmente falam disso com elogios.
Além disso, para programas paralelos, você tem OpenMP, MPI e agora as próximas (e muito esperadas) co-matrizes, que o compilador da Intel implementou recentemente . Para não desperdiçar palavras, o Fortran possui uma gama muito fina de "bibliotecas" para programas paralelos.
As bibliotecas numéricas padrão do setor são desenvolvidas para isso, principalmente, outros idiomas seguindo mais ou menos o portfólio de funções / rotinas.
Tudo o que foi dito, no entanto, (depende de quando foi originalmente escrito), recomendo se for, digamos, código F77 ou mais antigo, reescrevendo-o parcialmente ao longo do tempo para dialetos mais recentes - F90 pelo menos, se possível com os recursos do F2003. Um artigo / tese sobre esse tópico foi publicado recentemente (arquivo PDF de tamanho médio). Isso não apenas pode, se feito adequadamente, garantir a portabilidade em várias plataformas, mas também facilitará a manutenção futura.
ps No que diz respeito à "manutenção futura", apenas uma anedota que às vezes gosto de mencionar. Enquanto escrevia minha tese, reutilizei algum código do meu mentor, escrito há 35 anos. Ele foi compilado com apenas um erro; falta uma declaração no final devido a um erro de copiar e colar :)
@DaveMateer (resposta ao comentário) - Vou fazer um comentário a seguir que pode ser um pouco indelicado, mas por favor, não tome o caminho errado, pois está nas intenções justas.
Parece-me que você está enfrentando esse "problema" de maneira errada. O que quero dizer com alguns pontos breves (pois é muito tarde aqui e minha capacidade de criar sentenças legíveis (e muito menos compreensíveis) me deixa depois das 22h)
a) você mencionou que está tentando minimizar o tempo extra de codificação, mas está pensando em reescrever de um idioma especializado para computação numérica para outro de uma escolha colorida de idiomas , se você perdoar minha expressão
- alguns dos quais não têm suporte para matrizes multidimensionais, entre outras coisas
- a maioria deles não é adequada para trabalhos numéricos pesados (dos recursos de processamento paralelo de Haskell e Hadoop, admito, não sei nada sobre ... mas nunca os ouvi sequer mencionados nesses círculos)
- possivelmente foi tentado, mas nunca ouvi falar de uma reescrita do Fortran, um idioma para problemas discretizados, para um idioma funcional
- recentemente houve uma discussão sobre comp.lang.fortran (tente pesquisar nos grupos do google) sobre os aspectos da computação científica "na nuvem"
(não gostaria de desmotivá-lo, mas, para ser justo, ninguém era realmente Com certeza, o que esse termo representa, menos um exemplo de aplicação bem-sucedida. A maioria das pessoas concorda que existe potencial, mas até agora estão felizes com a forma como as coisas funcionam no momento.). Muitos problemas também não são adequados para esse tipo de paralelização.
b) quais seriam os custos dessa reescrita? pessoas / horas.
c) - versões corretas das bibliotecas para compilar ... - é um problema em qualquer idioma, que não pode ser evitado, por mais que você olhe para ele.
d) Ouvi falar de Python (uma linguagem legal, na verdade) usada em aplicações paralelas em algumas ocasiões, mas sua penetração nesse mercado ainda não parece estar aumentando, e sua natureza em constante mudança o torna uma escolha muito ruim para um projeto de longo prazo (pense em compatibilidade com versões anteriores). Algumas pessoas gostam muito de uma linguagem de "cola".
Ugh, se eu pensar em outra coisa, vou adicionar amanhã. Tenho que dormir um pouco ...