最近,我一直在与许多Fortran 77合作,尽管起初我有预订,但现在我看到了这种语言的一些素质。这是:

  • 简单学习(没有面向对象或功能编程并发症)
  • 易于阅读
  • 在数字紧缩时快速燃烧

这些素质对非编程工程师和科学家来说是自然的吸引力,他们只想要一种使计算机迅速给出答案的方法。但是,它基于其年龄及其一些基本假设的局限性。我对非编程器的轻松了解后来版本的Fortran的一些功能都持怀疑态度。

是否有一种现代语言和Fortran一样简单,对于数学应用而言,也很快?还是答案是Fortran 90,95,2003。 。 。 ?

有帮助吗?

解决方案

还是答案是Fortran 90,95,2003。 。 。 ?

是的。大多数编译器支持的Fortran 95是您要寻找的语言。但是,Fortran 2003具有一些主要的增强功能(除了您对OOP的观点支持不必要)可能有用。 编译器对Fortran 2003标准的支持.

其他提示

好吧,我是一名非程序员工程师(无论那是什么意思;我收集它意味着与计算机科学研究没有太多接触)和...

部分地,贾森弗鲁特(Jasonfruit)对S. Lott的答案的评论:

是的,该标准添加了从F90到2003的许多功能。但是,“问题”,如果有人可以这样称呼(我不能认为或关心一个更合适的单词),那么许多使用Fortran的人都不知道它保存他们需要的基本功能。从某种意义上说,这是一种祝福和诅咒。他们从未学过,从未读过一本书 - 他们在继续时只是捡起它。这样,当然可以持续一段时间(如果您简单地构建了程序,就像许多人一样几个世纪以来,并且拥有一种心理纪律,这种方法可以持续一生/整个职业生涯),但是过了一会儿表明其缺点。例如,尝试在Comp.lang.fortran上有关最新功能的一些讨论以测试您的知识。

因此,请一本好书(许多人推荐三个初学者; a)Chapman J. Stephen的B)缅因州或C)Metcalf,Reid和Cohen(称为“ MRC书”) “更晦涩的”功能不仅变得更加清晰,而且“明显”(如某种方式; 这真的是更好的方法 - 为什么我以前这样做?).

这解决了这个问题。现在,另一个问题 - 将会出现哪个问题 - 如今值得学习? ((它总是做到的,请相信我:). 。这已经被涵盖了无数次,所以我直接去 我自己的帖子 关于上述 我的旧帖子 (您必须向下滚动一点),这与此处提到的其他一些Langugages相比,这是一些问题。

最后一件事,在大多数情况下,所有这些问题的原因是人们对Fortran的看法,重点是意见!一般来说(我们可以将这个论坛作为我们分析的一个很好的样本),这不是很好。很少有人喜欢[遵循这个论坛上标记为Fortran的问题一个月,您会很快了解他们是谁。顺便说一句,从您的名字出现的频率来看,您很快就会成为俱乐部的成员:)],大多数人要么无动于衷,而且有些人讨厌它,因为经常使用F66与今天的语言进行比较),出于自己的原因。现在,如果我们将其与普通人群进行比较,简单地说,结果必然会出现不好。如果您仅采访了传统工程师,结果将完全不同。

thhhh-aaa-ttt的IT。

哦,还有一件事 - Fortran曾经/现在仍然主要是针对工程师,而不是数学家。它更适合求解大型系统,然后将PI计算为Ka-Zi-llionth小数。我不知道这是您的问题还是故意的。对于纯粹的数学应用(从经典的数学家身上),我(如果我是该领域的一部分)可能会选择数学?或帕斯卡(Pascal)(不知道为什么它总是帕斯卡(Pascal);但在这些粉丝中似乎非常受欢迎)。

令我惊讶的是,这里的共识是对现代福特兰的共识,我同意了。

无论失败,Fortran都是唯一针对科学编程设计的语言。科学编程既比Web服务器更微妙(每行)更微妙(每行),并且更复杂(结构上),它只需要不同的工具。例如,垃圾收集几乎对于求解固定主要数据结构的大型2D/3D PDE几乎从未有用。

任何甚至没有多D阵列的编程语言,因为一流的对象都可以立即以科学编程而被驳回。这就是所有基于C的语言。任何天生就是上帝可怕的慢速的编程语言 - 爪哇,我在看着你 - 都可以立即被解雇。任何专有且需要数千美元的许可费(MATLAB)的编程语言都可以立即被驳回。

Python和相关语言非常适合原型制作,绘图很容易,一旦您有工作,就可以用编译语言来编写数字核以提高速度。但是它再次受到了缺乏真实数组的痛苦(numpy很好,但不是很好),并且是s..l..o..w。

顺便说一句 - 不要 曾经 由数字食谱书籍。它们是废话,他们投入日期的算法,代码范围从穷人到错误。参加真正的数字算法课程 - 有线上有好的算法 - 或购买真正的数值算法书籍 - 为了上帝的爱,不要从书籍中输入代码来执行线性代数或其他任何内容;使用那里的零数十亿个真正的专业质量图书馆。

对于您问题的最直接答案,我认为 Kemiisto的答案是正确的,请注意 Idigas.

也就是说,我发现更多的数值代码与FTP,Web和更接近图形的事物接触。我已经在另一个答案中看到了Matlab建议,但是我一直在写越来越多的Python(带有Numpy),并在需要速度时呼唤Fortran。我几乎可以肯定不会以这种方式编写整个系统(例如整个数值天气预测模型),但是它确实使我能够在许多方面拥有两全其美。

还是答案是Fortran 90,95,2003。 。 。 ? 是的。对于科学计算,Fortran> = 90消除了Fortran 77的局限性。了解如何使用模块来组织您的过程和变量,并轻松地提供实际的和虚拟参数之间的自动一致性检查。从Fortran 77开始,您可以使用对您有用的任何功能逐渐学习Fortran 90/95/2003。您不必学习OO功能,并且可以忽略该语言的部分,直到有一天它为您提供实用性。

我推荐Metcalf,Reid和Cohen Book。

您可能正在看Matlab。许多工程师的大学生都学会了这一点,因此我认为非编程者很容易掌握。

如果您想获得铁杆,请看一下 j.

我认为 Fortran 95 应该是您的选择,它看起来更现代,并大大扩展了Fortran 77。大多数编译器并未完全支持Fortran 2003标准。 Fortran的最大优点是,每个数学问题都有一个优化的子例程(例如root查找,矩阵乘法,特征值问题等)。其他人提到的遗产图书馆和拉帕克只是一个非常有力的例子。 Fortran的主要缺点是没有人在现实世界中使用它。

最好的书是我的观点“对于科学家和工程师来说,fortran 90/95”。

当然,所有其他建议都是有效的,但是MATLAB在Fortran时不是免费的。

Python 是免费的,可以通过Numpy和Scipy等额外的包裹来支持许多科学应用。但是,在数值性能方面,Python相当慢。对于不需要大量计算能力的小型项目来说,这可能是一个不错的选择。语法非常容易理解。

C 当然,这也是一个免费的选择,并且有很多(不断更新)的科学库。但是,当涉及到可读性时,它不会击败Fortran。 Fortran可以很好地使用向量和阵列。

C ++ 是C的超集,因此绝对也是一个可能的选择。但是,这是一种对于您正在查看的问题而言可能很复杂的语言。科学C ++库的数量相当有限。周围有一些,但他们无法击败福特人版本(或者只是其中的包装器)。对于非常大型项目来说,这可能是一个很好的选择,但是在世界上最快的计算机上运行的一些非常大的程序是用Fortran编写的。 C ++绝对值得学习,因为它用于广泛的现实世界应用。

当然还有其他语言或工具,但我认为这些是在科学学科中最常用的。

如果您对使用Fortran感到非常兴奋,则可以考虑使用 Microsoft.net的Fortran. 。该项目背后的想法是它允许您使用Fortran 语言 在通过通用语言运行时(CLR)利用雅致的代码环境时。

@s.lott:无法想象像科学家这样的fortran用户,必须切换并抛弃其所有福特工作.....:s op正在寻找有关新事物的输入...

到OP:您阅读了吗 维基百科 哪些详细信息对Fortran进行的更改(2003年版本)允许与C进行互操作性,因此S.Lott确实有一点,也许可以一点一点地将一些内容轻轻地移植或在C中写入包装器来调用Fortran模块?我会从那个Wikipedia页面引用...

与C编程语言的互操作性。

我最近与许多MATLAB合作,我可以看到今天的好处。是的,因为它是一种解释的语言,但是它的矩阵算法很快。我完全喜欢这种行为。 for循环的缓慢和矩阵操作的性能鼓励您以更数学的方式思考,而不是坚持以循环为导向的编程。但是我可以同意,MATLAB可以被驳回,因为它不开放。

目前,我期待着朱莉娅的语言。它受到MATLAB的启发,除了它确实想快速。它还具有静态类型,这也是一个很大的优势。但是朱莉娅还很年轻,所以不要期望这确实满足了您的所有要求。

简单学习(没有面向对象或功能编程并发症)

易于阅读

在数字紧缩时快速燃烧

听起来像C。

在C中购买数值食谱。几乎可以清晰,可读的风格覆盖所有基础。

http://www.amazon.com/numerical-recipes-art-scientific-computing/dp/0521431085

我认为您正在考虑编写的小型,专门的程序来解决特定问题。在这种情况下,如果OO的复杂性真的困扰着您,我只会编写C#或Java应用程序而不使用OO。如今,视觉基本也应该很快。

如今,几乎所有编译的语言都将在数学上很快,所有操作均在数学协同处理器上完成 - 因此,除非您发现某种语言特别缺乏,否则我不会让任何语言“数学速度”困扰我。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top