Fortran 2023

O lançamento do padrão Fortran 2023 traz atenção renovada a uma linguagem ainda central para computação de alto desempenho em áreas como previsão do tempo, modelagem climática, CFD e física. Comentadores destacam os pontos fortes do Fortran — especialmente sua semântica de arrays, regras estritas de aliasing e compiladores maduros — que tornam mais fácil escrever código numérico rápido do que em C/C++ ou Python+NumPy, ao mesmo tempo em que apontam lacunas como suporte fraco a strings, ausência de genéricos e ferramentas fragmentadas. Também há debate sobre a evolução lenta e conservadora do padrão, a especificação oficial da ISO atrás de um paywall e se grandes bases de código Fortran legadas devem ser migradas para linguagens mais novas ou melhor apoiadas em aceleradores modernos como GPUs.

Mudanças da linguagem e padronização

  • Fortran 2023 é descrito como uma atualização incremental em relação a 2018 e 2008, com relativamente poucos novos recursos.
  • Uma mudança semântica notável: escritas internas para variáveis de caracteres alocáveis agora devem realocar para corresponder ao comprimento escrito, em vez de preencher/cortar, o que pode quebrar código que antes estava conforme.
  • Há alguma crítica de que o Fortran padroniza recursos antes de implementação/teste sérios, levando a ambiguidades e comportamento incompatível de compiladores descobertos anos depois.

Suporte de compiladores e ferramentas

  • Compiladores de código aberto atuais mencionados: GFortran, LLVM Flang e LFortran, todos com suporte a “Fortran moderno”, mas ainda sem F’23 completo.
  • O Flang pode emitir avisos sobre construções cuja semântica muda sob F’23.
  • A falta de um gerenciador de pacotes padrão e amplamente adotado é citada como um ponto problemático, apesar de projetos como o FPM.

Por que o Fortran ainda é usado

  • Principais domínios: previsão numérica do tempo, modelos climáticos, CFD, análise de elementos finitos, geofísica, física computacional, cristalografia, química computacional, bioinformática e códigos nucleares/de armas.
  • Forte inércia: grandes códigos legados altamente otimizados e conhecimento especializado em instituições científicas e laboratórios governamentais.
  • O Fortran é visto como relativamente pequeno e fácil de aprender para cientistas/estudantes de pós-graduação em comparação com C++.

Desempenho vs outras linguagens

  • Vantagem principal: regras estritas sobre aliasing de arrays e um modelo de memória mais restritivo permitem otimização agressiva, especialmente para arrays multidimensionais e fatias.
  • O C pode, teoricamente, igualar o desempenho com restrict, código cuidadoso e até assembly, mas isso é descrito como frágil e exigente em esforço em comparação com os padrões do Fortran.
  • O Fortran é comparado a um “Matlab altamente otimizado” ou a uma linguagem de arrays semelhante ao NumPy; fazer trabalho equivalente com arrays em C/C++ é visto como trabalhoso.
  • Há debate sobre se abstrações e bibliotecas modernas de C++ (por exemplo, Eigen) reduziram a diferença; o consenso é que o Fortran ainda facilita muito o alto desempenho para programadores não especialistas.
  • O NumPy chama majoritariamente C/BLAS/LAPACK; o overhead da interação Python–FFI pode importar para arrays pequenos.

GPU, ecossistema e futuro

  • Existe suporte a GPU (por exemplo, CUDA Fortran), mas soluções portáteis e de código aberto são vistas como incompletas; isso motiva algumas migrações para Julia, C++, Python/JAX ou shaders.
  • Alguns dizem que poucos projetos realmente novos em Fortran começam fora dos domínios tradicionais; outros apontam frameworks modernos de inferência de IA/ML e redes neurais escritos em Fortran.
  • A comunidade é relatada como mais ativa e organizada do que há uma década; há interesse no Fortran como uma linguagem específica de domínio voltada para IRs comuns (por exemplo, MLIR).

Acesso aos padrões e política da ISO

  • Há reclamações sobre ter de pagar pelo PDF oficial da ISO; rascunhos do padrão estão disponíveis gratuitamente e, em geral, são tratados como suficientes e pragmaticamente autorizados.