学习Fortran


9

我想知道学习Fortran编程的最佳方法是什么?

我一直在寻找书籍,对我来说似乎不错的例子是“ Fortran 95/2003 Explained”“ Fortran for Scientists and Engineers”

我不知道你们如何看待这些?

我想知道的另一件事是我应该使用哪个编译器?我在Windows 7计算机(64位)上工作。

我希望你们能在这一方面帮助我!

因此,根据我的编程经验:

  1. Matlab和Maple是我对编程世界的第一次介绍。Matlab是一个我实际上非常擅长的程序,我掌握了使用循环以及如何将其组合以创建更高效​​的程序的习惯。Maple处于基础阶段(我知道如何搜索简单积分的解等)。
  2. 一年后,我们在Visual Basic中对C ++进行了介绍。实际上,这位教授很快就开始讨论这个问题,两个月后,我们已经在讨论指针和继承。我能够用这种语言编写简单的程序,只有使用类仍然困难,但是我相信这只是实践问题。
  3. 一年后,我需要学习Mathematica 8,如今我也真的很不错。

所以我有一点编程经验,但是我不会说这是一个不可思议的数量!

我要学习Fortran的原因主要是因为您无法独自完成理论物理学,您需要测试您的理论,并且因此您需要能够编写可能能够对这些理论进行数字测试的程序。我听说Fortran是一种用于数值数学的语言,所以我认为了解这种语言会很方便。

ps:Fortran95和Fortran 2003有什么区别?


3
您可以更具体地说明您来自何处以及要去哪里吗?您已经知道如何编程,即您知道其他哪些编程语言?您想在Fortran中做什么?
Pedro

是的,也许我应该在我的问题中提到它,让我编辑:) @Pedro
Nick

1
我知道它不能解决问题,但是如果您对初学者没有特定的性能需求,那么我强烈建议您在Fortran上使用Python。由于Python会减少对您的尖叫,因此您无需担心处理实际的数学和理论。它还具有令人难以置信的软件包,这些软件包使许多数值数学非常简单(搜索SciPy,Numpy,Matplotlib)。这些工具使Python在使用方面与MATLAB非常相似,但是您还拥有一种完整的语言来围绕ewll构建出色的软件。更不用说它是开源的。
2013年

1
Fortran 95也类似于Matlab和ISO标准。许多使用Python的人都使用C / C ++(甚至是Fortran)编写计算繁重的内核,这意味着现在您必须学习一种而不是两种语言。一种用于性能,另一种用于方便/易用。
stali

Answers:


4

我要谈谈查普曼著作的第二个stali推荐。我从查普曼(Chapman)的Fortran 90书中学到的东西,对我很有帮助。它将教您Fortran语言。它不会教您如何进行编程的良好工作流程,为此,您应该在学习了一些Fortran并进行了一点编程之后,再去看看其他地方。

帮助您进行Fortran编程的大多数在线资源都将基于Linux。同样,在计算科学中,大多数书面材料将针对Linux用户。因此,我强烈建议您安装VirtualBox(或使您能够运行虚拟操作系统的某种软件),然后在其上安装一些Linux发行版。如果您以前从未使用过Linux,那么最好的选择是像Ubuntu,Mint或Fedora这样的用户友好型发行版。如果在虚拟环境中运行,这些发行版需要最少的配置,并且具有良好的GUI来帮助您导航操作系统。每个发行版都有一个程序包管理器,您可以使用它来安装一些其他软件。使用软件包管理器,可以安装gfortran。

您将要在文本编辑器(或IDE)中开发软件,因此值得学习命令行的基础知识。Software Carpentry具有完成此任务的良好资源。(免责声明:我已经教过一部分软件木工讲习班。)然后,您应该能够继续学习编写简单的程序并在命令行上进行编译,然后学习如何使用Makefile。

做任何基于Windows的问题是,在进行计算科学时,您会看到的大多数在线资料都将假定您正在使用Linux,而有关建议(如果一开始就很有用)将会被打破。下来,并花费您时间。Cygwin是一个API层,它添加了更多类似Linux的功能,但与Linux的对应关系并不完美,并且为Linux编译的软件无法在您的计算机上运行;您仍然需要获取Windows本地版本或重新编译Windows软件。Windows原生的Fortran编译器(例如Visual Fortran)将要花钱,而且您仍然会遇到大多数Fortran用户和计算科学家使用Linux进行软件开发的问题,这意味着您必须继续前进拥有。但是,如果您确实需要出于某种原因分发基于Windows的软件,则需要进行所有努力来弄清楚如何使用Visual Fortran之类的东西。


感谢您的建议!但是我想知道,是否可以代替虚拟机创建某种双重引导机制,从而选择先启动Windows7还是Linux Ubuntu?我相信这确实可以为我节省很多时间!而且,如果我需要使用Windows,那么我将拥有Linux版本的编程经验,这使我可以更快地通过Windows上的所有步骤!
尼克,

如果您愿意,可以。我认为双启动设置不太灵活,需要更多的技术知识和时间(您可能必须调整分区大小,以正确的方式设置启动加载程序等)。我还认为虚拟机更容易迁移到新计算机,如果您想与同事共享您的工作,或者如果您购买一台新计算机并希望将所有工作迁移到那里,这将很有帮助。
Geoff Oxberry

我终于找到了一些时间来完成所有必要的步骤。我安装了VirtualBox,安装了Linux(Ubuntu)。现在我想知道哪个可能是最好的编译器?我似乎在网上找不到关于:s的更多内容。我听说有人说gfortran吗?
尼克

2
gfortran是自由的,可能是抵抗力最小的途径。其他大多数编译器都需要购买许可证,个人或学术用途可能会例外。(例如,我知道英特尔的编译器只能免费下载和用于个人使用;您必须阅读许可证以了解详细信息。)HighPerformanceMark链接到一个网站,该网站对编译器进行了性能比较。
Geoff Oxberry 2013年

6

我认为,梅特卡夫(Metcalfe)这本书是对Fortran的现代功能的良好注释指南,如果您已经知道该语言的较早版本,但对该语言的编程没有很好的介绍,则非常有用。

用我的钱,Chiver's和Sleightholme的书Brainerd的书都足够好,尽管我认为这两者都不如Ellis 等人那样好,不幸的是,这本书并没有为Fortran 2003或更高版本进行更新。

我对查普曼的书很反感。我不记得为什么我如此不喜欢90/95版,以至于无法再证明这种厌恶,您可以将其作为一种偏见加以打折。

但是我毫不犹豫地推荐的一本书是阿让·马库斯Arjen Markus)的书。对于仍然试图弄清该语言基本特征的人来说,这可能不是一个理想的介绍,但是一旦您掌握了这些语言,就值得在一些有价值的内容中发挥作用。

至于使用哪个编译器,我使用Intel编译器,并且总体上对此感到满意。它与Visual Studio集成在一起,这对您可能很重要。NAG编译器具有较好的错误和警告消息,但生成的可执行文件速度较慢(通常,您的经验可能有所不同)。gfortran编译器是免费的,并且获得了足够好的评价,但是我使用的不是它。如果您想了解更多,多面体会告诉您。


马库斯的书有很好的目录。
AlexE

是的,马库斯的书确实确实是一本好书,所以我将明确考虑这本书!对于编译器,我只需要具有快速可执行文件的东西(无需与Visual Studio集成)。
尼克,

我认为通常认为Intel编译器速度很快。
AlexE

3

对于书籍,我建议使用Metcalf / Reid / Cohen撰写的“ Modern Fortran Explained”。它比教科书更参考,但是如果您已经对编程有所了解(例如C),它将对您有帮助。

除了那本书,我强烈推荐OndřejČertík的网站http://fortran90.org/。它不会首先教您Fortran,但会为您提供一系列最佳实践。Fortran允许多种编程方式-毕竟是向下兼容的。此处给出的最佳实践将帮助您开发一致的现代Fortran风格。此外,发现的常见问题解答将使您感兴趣。


2
为F90最佳做法页面推荐,这对我也真的很有帮助。
Daniel Shapero 2013年

2

我认为Chapmans的书对新手更友好,并且是很好的参考。第二本书的作者都是专家,但我认为这本书将在以后为您的图书馆增色不少。

首先,我建议您坚持使用Fortran 95,然后再(如果需要)使用Fortran2003。Fortran95易于学习(几乎像Matlab一样),并且您将很快提高工作效率。

在Linux上,除了丰富的工具集(例如valgrind,gdb,gnuplot(用于快速viz),svn / hg等)外,还有许多免费的Fortran编译器(GNU,Solaris Studio,Open64等)。包含数字库(blas / lapack / netcdf / fftw等)的预编译软件包是一个命令(至少在带有apt-get的Debian上)。

在Windows上,使用cygwin可能会更好,因为除了GNU Fortran编译器之外,它还使您可以轻松快速地访问上述某些工具/库。所以,是的,去cygwin.com并安装gfortran和选择的编辑器(vim很好)以及核心软件包。那应该是一个好的开始。以后如果您还有其他任何建议,我建议您使用apt-cyg软件包进行安装。


1
我不建议将vim(或就此而言,emacs)作为第一个文本编辑器。有太多基本功能(剪切,复制,粘贴,查找,查找/替换)涉及非直觉的按键组合,无法将其用作第一个文本编辑器,而新学习者必须采取所有这些额外的,不熟悉的步骤才能完成简单的操作既使人灰心,又使他们分心(无论是您推荐的文本编辑器,可能都是某种形式的软件开发)。
Geoff Oxberry

1
作为第一个编辑器,我推荐一种工具,该工具应具有成为您唯一需要的编辑器的能力,而不是您在3周,3个月甚至3年后就不再使用的工具。因此,Emacs和Vim都是合适的首选编辑器。当然,他们的学习曲线可能会比其他人更陡峭,但是很多程序员为此付出了代价,并发现值得的回报。
高性能标记

您的评论提出了一个错误的选择:学习vim / emacs并拥有一个可以终生使用的编辑器,尽管学习曲线陡峭,还是使用了一些其他的易于学习的劣等工具。许多专业程序员使用其他学习曲线不太陡峭的工具,例如gedit,Sublime Text,TextMate,TextWrangler等,并且相处得很好。Vim和emacs都是很棒的编辑器-我两者都使用-但是它们并不是唯一唯一的,明显优越的编程选择(WolfgangBangerth也是IDE的一个很好的例子)。
Geoff Oxberry
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.