Learning Fortran

9

Eu queria saber qual é a melhor maneira de aprender a programar no Fortran?

Estive procurando livros, os exemplos que me pareciam bem foram "Fortran 95/2003 Explained" e "Fortran For Scientists And Engineers" .

Não sei o que vocês acham disso?

Outra coisa que eu estou pensando é sobre qual compilador devo usar? Eu trabalho em uma máquina Windows 7 (64 bits).

Espero que vocês possam me ajudar nessa!

Então, para a minha experiência com programação:

  1. Matlab e maple foram tipo minhas primeiras introduções no mundo da programação. O Matlab é um programa no qual sou realmente muito bom, aprendi a trabalhar com loops e como combiná-los para criar programas mais eficientes. O Maple está mais na fase básica (eu sei como pesquisar a solução para integrais simples etc.).
  2. Um ano depois disso, tivemos uma introdução ao C ++ no visual basic. O professor realmente foi rápido nisso, depois de 2 meses já estávamos discutindo indicadores e herança. Sou capaz de escrever programas simples nessa linguagem, apenas o trabalho com as aulas é algo que continua sendo uma dificuldade, mas acredito que é apenas uma questão de prática.
  3. E um ano depois eu precisava aprender o Mathematica 8, o qual também estou me aperfeiçoando atualmente.

Então, eu tenho um pouco de experiência em programação, mas não vou dizer que é uma quantidade incrível!

A razão pela qual quero aprender o Fortran é principalmente porque você não pode fazer física teórica por si só, precisa testar suas teorias e, por isso, precisará escrever programas que possam testar numericamente essas teorias. Ouvi dizer que o Fortran prefere o idioma a ser usado quando se trata de matemática numérica, então acho que seria útil conhecer esse idioma.

ps: qual é a diferença entre Fortran95 e Fortran 2003?

usuario
fonte
3
Você pode ser um pouco mais específico sobre de onde vem e para onde deseja ir? Você já sabe programar, ou seja, quais outras linguagens de programação você conhece? E o que você quer poder fazer no Fortran?
Pedro
Sim, talvez eu deveria ter mencionado isso na minha pergunta, permita-me editar :) @Pedro
Nick
11
Sei que não responde à pergunta, mas tenho que recomendar vivamente que você use Python sobre Fortran se não tiver necessidades específicas de desempenho como iniciante. Você terá menos dores de cabeça ao lidar com a matemática e a teoria reais, já que o Python gritará menos com você. Ele também possui pacotes incríveis que simplificam bastante a matemática numérica (pesquise SciPy, Numpy, Matplotlib). Essas ferramentas tornam o Python muito semelhante ao MATLAB em seu uso, mas você também tem uma linguagem inteira para criar um bom pedaço de software como a ewll. Sem mencionar que é de código aberto.
precisa saber é
11
O Fortran 95 também é semelhante ao Matlab e é um padrão ISO. Muitas pessoas que usam o Python escrevem kernels computacionalmente pesados ​​em C / C ++ (até Fortran), o que significa que agora você precisa aprender não uma, mas duas linguagens. Um para desempenho e outro para conveniência / facilidade de uso.
Stali #

Respostas:

4

Vou seguir a segunda recomendação de stali do livro de Chapman. Aprendi com o livro Fortran 90 de Chapman, e foi muito útil. Ele ensinará a língua Fortran. Ele não ensinará sobre bons fluxos de trabalho para programação e, para isso, você deve procurar outro lugar depois de aprender algum Fortran e programar um pouco.

A maioria dos recursos on-line para ajudá-lo com a programação do Fortran será baseada em Linux. Da mesma forma, na ciência da computação, a maioria dos materiais escritos será voltada para usuários do Linux. Por esse motivo, eu recomendo fortemente que você instale o VirtualBox (ou algum tipo de software que permita executar sistemas operacionais virtuais) e instale alguma distribuição Linux lá. Se você nunca usou o Linux antes, uma distribuição amigável como Ubuntu, Mint ou Fedora provavelmente será sua melhor aposta. Essas distribuições requerem uma quantidade mínima de configuração se executadas em um ambiente virtual e possuem uma boa interface gráfica para ajudá-lo a navegar no sistema operacional. Cada uma dessas distribuições possui um gerenciador de pacotes que você pode usar para instalar algum software adicional. Usando o gerenciador de pacotes, você pode instalar o gfortran.

Você deseja desenvolver software em um editor de texto (ou em um IDE), por isso provavelmente vale a pena aprender o básico da linha de comando. Carpintaria de software possui bons recursos para esta tarefa. (Isenção de responsabilidade: ensinei parte de um workshop sobre Carpintaria de software.) Então você deve seguir em frente aprendendo a escrever programas simples e compilá-los na linha de comando e aprender a usar o Makefile.

O problema de fazer qualquer coisa com base no Windows é que a maioria dos materiais on-line que você verá ao fazer ciência da computação presumirá que você está usando Linux, e o conselho (se for bom para começar) será interrompido para baixo e custar-lhe tempo. Cygwin é uma camada de API que adiciona mais funcionalidades semelhantes ao Linux, mas a correspondência com o Linux não é perfeita e o software compilado para Linux não funciona na sua máquina; você ainda precisará obter versões nativas do Windows ou recompilar o software para Windows. Um compilador Fortran nativo do Windows, como o Visual Fortran, vai custar dinheiro, e você ainda terá o problema de que a maioria dos usuários e cientistas computacionais do Fortran usa Linux para o desenvolvimento de software, o que significa que você terá que seguir adiante. próprio. No entanto, se você realmente precisardistribuir software baseado no Windows por algum motivo, faz sentido fazer todo o esforço para descobrir como usar algo como o Visual Fortran.

Geoff Oxberry
fonte
Obrigado pelo conselho! Mas eu estou pensando, em vez de máquina virtual, não poderia criar algum tipo de mecanismo de inicialização dupla no qual eu escolho se inicio o windows7 ou o Linux Ubuntu primeiro? Eu acredito que isso poderia me poupar muito tempo! E se eu precisasse ir para o Windows, terei a experiência de programação da versão Linux, que me permite percorrer as etapas do Windows muito mais rapidamente!
26413 Nick
Você poderia, se assim o desejasse. Eu acho que a configuração de inicialização dupla é menos flexível e requer mais conhecimento técnico e tempo (pode ser necessário redimensionar partições, configurar um carregador de inicialização da maneira certa etc.). Também acho que as máquinas virtuais são mais fáceis de migrar para uma nova máquina, o que pode ser útil se você deseja compartilhar seu trabalho com um colega ou se você adquire um novo computador e deseja migrar todo o seu trabalho para lá.
Geoff Oxberry
Finalmente encontrei algum tempo para percorrer todas as etapas necessárias. Eu tenho o VirtualBox e o Linux (Ubuntu) instalado. Agora eu estava pensando qual seria o melhor compilador? Não consigo encontrar muita coisa online sobre essa parte: s. Ouvi alguém dizer gfortran?
Nick
2
O gfortran é gratuito e provavelmente o caminho de menor resistência. A maioria dos outros compiladores exige a compra de uma licença, com possíveis exceções para uso pessoal ou acadêmico. (Eu sei que o compilador da Intel pode ser baixado e usado para uso pessoal apenas gratuitamente, por exemplo; você precisará ler as licenças para obter detalhes.) HighPerformanceMark vinculado a um site que tem comparações de desempenho para compiladores.
Geoff Oxberry
6

Penso que o livro Metcalfe é um bom guia anotado para os recursos modernos do Fortran, muito útil se você já conhece uma versão anterior da linguagem, mas não é uma boa introdução à programação na linguagem.

Pelo meu dinheiro, o livro de Chiver e Sleightholme e o livro de Brainerd são bons o suficiente, embora eu não ache que seja tão bom quanto o livro de Ellis et al. Que, infelizmente, não foi atualizado para o Fortran 2003 ou posterior.

Tenho uma forte aversão ao livro de Chapman. Não me lembro por que detestava tanto a edição 90/95, que não pode mais justificar essa aversão; você pode descartá-la como preconceito.

Mas o único livro que recomendo sem hesitação é o livro de Arjen Markus . Provavelmente não é uma introdução ideal para alguém que ainda está tentando descobrir os recursos básicos da linguagem, mas depois que você os domina, vale a pena pesar alguma substância valiosa.

Quanto a qual compilador usar, eu uso o compilador Intel e geralmente estou feliz com ele. Ele se integra ao Visual Studio, o que pode ser importante para você. O compilador NAG possui melhores mensagens de erro e aviso, mas produz executáveis ​​mais lentos (geralmente e sua experiência pode ser diferente). O compilador gfortran é gratuito e recebe boas críticas, mas não é o que eu uso. Se você quiser saber mais, o Poliedro lhe dirá.

Marca de alto desempenho
fonte
O livro Markus possui um ótimo sumário.
Alexe
Sim, o livro de Markus realmente parece um ótimo livro, então eu definitivamente considerarei esse livro! Para o compilador, só preciso de algo com executáveis ​​rápidos (não é necessária nenhuma integração com o visual studio).
27413 Nick
Eu acho que o compilador Intel é geralmente considerado rápido.
Alexe
3

Para livros, eu recomendo "Modern Fortran Explained", de Metcalf / Reid / Cohen. É mais uma referência do que um livro, mas será útil se você já teve alguma exposição à programação em geral (digamos, C).

Além desse livro, recomendo fortemente o site de Ondřej Čertík http://fortran90.org/ . Ele não ensinará o Fortran em primeiro lugar, mas fornecerá um conjunto de práticas recomendadas. O Fortran permite várias formas de programação - afinal, é compatível com versões anteriores. As práticas recomendadas fornecidas ajudarão a desenvolver um estilo Fortran consistente e moderno. Além disso, as perguntas frequentes encontradas serão do seu interesse.

AlexE
fonte
2
Voto positivo para a página de práticas recomendadas do F90, que também foi muito útil para mim.
Daniel Shapero
2

Acho que o livro de Chapmans é mais amigável para iniciantes e uma boa referência. Os autores do segundo são todos especialistas, mas acho que o livro será uma boa adição à sua biblioteca posteriormente.

Para começar, sugiro que você siga o Fortran 95 e depois (se necessário) mude para o Fortran 2003. O Fortran 95 é fácil de aprender (quase como o Matlab) e você será produtivo rapidamente.

No Linux, você tem vários compiladores Fortran gratuitos (GNU, Solaris Studio, Open64 etc.), além de um conjunto mais rico de ferramentas, como valgrind, gdb, gnuplot (para visualização rápida), svn / hg etc. pacotes pré-compilados, incluindo bibliotecas numéricas (blas / lapack / netcdf / fftw etc.) estão a um comando de distância (pelo menos no Debian com o apt-get).

No Windows, você pode ser melhor com o cygwin, pois fornece acesso fácil e rápido a algumas das ferramentas / bibliotecas acima, além do compilador GNU Fortran. Então, sim, vá para cygwin.com e instale o pacote principal, juntamente com o gfortran e um editor de sua escolha (o vim é bom). Isso deve ser um bom começo. Mais tarde, se você tiver mais alguma coisa, sugiro usar o pacote apt-cyg para instalar coisas.

stali
fonte
11
Eu não recomendo o vim (ou, emacs) como primeiro editor de texto. Há muitos recursos essenciais (recortar, copiar, colar, encontrar, localizar / substituir) que envolvem combinações de teclas não intuitivas para usá-lo como primeiro editor de texto e todas essas etapas extras e desconhecidas que um novo aluno precisa executar para fazer algo simples é desanimador e distrai tudo o que eles estão tentando fazer (o que, se você estiver recomendando um editor de texto, provavelmente é uma forma de desenvolvimento de software).
precisa saber é o seguinte
11
Como primeiro editor, recomendo uma ferramenta com a capacidade de ser o único editor de que você precisa, e não o que você superará em 3 semanas, 3 meses ou até 3 anos. Por esse motivo, o Emacs e o Vim são os primeiros editores adequados. Claro que eles podem ter uma curva de aprendizado inicialmente mais acentuada do que outros, mas muitos programadores pagaram esse preço e acharam as recompensas valiosas.
High Performance Mark
Seu comentário configura uma escolha falsa: aprenda vim / emacs e tenha um editor que você possa usar para toda a vida, apesar da curva de aprendizado íngreme, ou use alguma outra ferramenta inferior fácil de aprender que você superará. Muitos programadores profissionais usam outras ferramentas com curvas de aprendizado menos acentuadas, como gedit, Sublime Text, TextMate, TextWrangler e outros, e se dão muito bem. O Vim e o emacs são ótimos editores - eu uso os dois - mas não são as únicas opções claramente superiores disponíveis para programação (o WolfgangBangerth também é um bom argumento para os IDEs).
precisa saber é o seguinte