我应该学习哪个版本的Fortran?


17

我是一名机械工程专业的学生,​​对航空航天领域感兴趣,据我所知,Fortran仍然很常用。

我应该花时间学习哪个版本的Fortran?


没有一个完整的答案,但是值得注意的是,对于最新的Fortran功能,编译器的支持 严重不足。请参阅fortranwiki.org/fortran/show/Fortran+2003+statusfortranwiki.org/fortran/show/Fortran+2008+status我将从90/95开始,并根据需要逐步进行。
Doug Lipinski 2014年

写过关于这个问题的一些想法,请参阅stackoverflow.com/questions/953869/... stackoverflow.com/questions/3549702/...如果能有点用处。除了上述内容,我建议您先使用F90,然后再学习功能。
2014年

1
请注意,Matlab源自Fortran。根据您的评论,我建议您评估此选项。
丹尼斯·贾赫鲁丁

2
甚至应该学习Fortran句号吗?这可能取决于您需要使用的旧代码的数量-这也决定了您应该学习的Fortran版本。
Damien 2014年

Answers:


27

有一个Fortran的“版本”需要知道,这有点流行。除极少数情况外,最新的Fortran标准(和编译器)与旧标准保持了极好的向后兼容性。这是有充分的理由的:如果不是因为仍在使用大量遗留代码,那么今天就不会有多少人会使用Fortran。也就是说,符合标准的Fortran77代码几乎始终可以与最新的编译器一起使用。

您应该学习使用现有语言的最新版本。F2008可能没有添加任何对初学者有用的可怕内容,但是F2003引入的面向对象概念绝对是一件大事。“现代Fortran解释”是一个不错的起点,“科学软件设计:面向对象的方式”对于实际学习将其付诸实践也非常有用。

务实的是,如果您要处理遗留代码(例如F77或更早的代码),则由于缺乏F90 +功能,您有时必须学习它们所做的一些事情。例如,如果您正在为某事编写Fortran代码,则永远不要使用所谓的“ COMMON块”,但是您总是会看到它们可能会用在F77代码中。

我绝不建议有人至少在没有F90 / 95功能集的情况下开始在Fortran中工作。

就是说,如果您不精通其他语言的编程,那么您可能会发现,即使您追求航空航天,Fortran也不是您初学时最好的语言。(我说的是,作为航空航天界中经常使用Fortran并将其作为我的第一语言的人)。


2
+1 “我不建议有人至少在没有F90 / 95功能集的情况下开始在Fortran中工作。” 。我同意那个。从F90开始,学习所有基本功能,练习一些程序,然后继续使用最新版本
Tymric 2014年

如果不是Fortran,那么什么语言值得学习并且在工程学中会实用呢?Matlab怎么样?下学期的课程我需要。
2014年

@ user26358用于通用编程的Python,它在科学界具有很大的吸引力。R用于统计分析。用于数值计算的MATLAB,Mathematica或Maple(无论您使用的是什么类)。关系数据库的SQL。用于网站内容的JavaScript,因为它正成为通用语言。在其中一个无法完成工作之前,我不会为Fortran所困扰,这是您初学时学习起来并不愉快的语言。
Schwern 2014年

@Aurelius,我同意你的最后一段。我相信学习科学编程的正确方法与我所经历的正好相反:python-> C ++,并且在需要时使用Fortran。
Nicola Cavallini 2014年

@ user26358 Matlab很好,您可能会在学校里经常使用它。Python是从通用编程开始的好地方,它的numpy / scipy模块可以完成您在Matlab中可能要做的大多数事情,并且是学习编写软件基础知识的好地方。您当然也应该至少掌握一种编译语言。C ++将是最受欢迎的选择。
Aurelius

1

我不同意你们俩。C ++和Python仍未像FORTRAN那样优化。我绝对同意FORTRAN 90/95是最低要求。但是,使用其他更现代的版本总是有用的。FORTRAN的挑战在于,如果您在学习面向对象的语言之前先学习了它,那么它很容易理解。如果您习惯于用物体思考,则要学习起来要困难得多。我在这里教超级计算课程,并强迫我的学生使用FORTRAN。它迫使他们在编程中使用另一种逻辑。他们不喜欢它,因为它不像Python或C ++那样“思考”。这实际上取决于您打算做什么以及多少并行性和性能至关重要。


欢迎来到SciComp.SE。对于站点,这看起来更多是一种意见,而不是一个问题。如果您认为Fortran“ [...]强迫他们在编程中使用另一种逻辑”,则应详细说明该论点,并告诉我们这是为什么。而且,您提到的这种“逻辑”是什么。
nicoguaro

2
@tmwitten:这个答案应该是评论吗?可能要发表评论太久了,而且脱离上下文,看起来像是不合逻辑的(例如,问题中未提及C ++和Python,“你们俩似乎都指Nicola和Aurelius”)。
Geoff Oxberry 2015年
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.