首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与现代C++相比,现代Fortran有什么优势?

与现代C++相比,现代Fortran有什么优势?
EN

Stack Overflow用户
提问于 2011-01-28 05:10:27
回答 10查看 30.2K关注 0票数 32

我正在为科学计算中的一个应用程序在Fortran和C++之间做出选择。我不清楚Fortran在性能方面是否仍然比其他语言更有优势。例如,我相信由于Fortran强制执行严格的别名,所以与C99之前的C相比,编译器可以进行更好的优化。我不确定C++如何适应这里。

有什么建议吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-01-28 05:25:15

我看了一下some of the stuff in the latest Fortran standards,坦率地说,我对此印象深刻。20年前我讨厌这种语言的很多东西现在都消失了。没有更多的行号和特殊列(愿它们在地狱中燃烧)。

Fortran在工程界已经广泛使用了50年。如果你在这些圈子里工作,这会给你带来两个好处。首先,这些人非常关心优化。这意味着Fortran编译器往往拥有最好的优化器。该语言本身也比Cish语言可优化得多,这要归功于它没有别名。

第二个优点是Fortran库对数字处理的支持是无可匹敌的。最好的代码几乎总是经过良好调试的代码,您不必编写

如果您的应用程序通常不属于科学、工程或数字处理,那么以上这些对您来说都不是什么大问题,所以您最好去别处寻找。

票数 53
EN

Stack Overflow用户

发布于 2011-01-29 01:24:03

另一个主要问题是学习曲线,这对于C++来说是非常巨大的,而对于Fortran (90或更高版本)则非常小。Fortran就像MATLAB一样,它的运算就像...

B‘’DB是向量的matmul( matmul(transpose(B), D), B )

  • L2范数,是矩阵的norm2(x)

  • SVD,使用LAPACK是call gesvd(A,S,u,vt)

Fortran还具有指针、动态内存、用户定义的数据类型等。

它得到了主要供应商(英特尔/太阳/国际商业机器公司/克雷/PGI/NAG等)、开源(gfortan/g95)社区和诸如PETSc、MPI等数值库/API开发人员的良好支持。

见鬼,新标准(Fortran2008)甚至有用于并行编程的联合数组,而不需要MPI/OpenMP,而且一些Fortran编译器已经支持它(g95和Cray)。

基本上,它具有数值计算所需的所有良好品质,比MATLAB更容易,是标准化的,免费的,可伸缩的(使用MPI/OpenMP和联合数组),产生惊人的快速/并行代码。

对于数值来说,没有什么能胜过Fortran,但不幸的是,在其他方面,一切都胜过Fortan。因此,如果您是一名从事安全工作的科学家,并且只做数值/高性能计算,那么请坚持使用Fortran,否则,请学习并使用C++,因为它被广泛用于非数值软件。

票数 26
EN

Stack Overflow用户

发布于 2011-02-08 01:57:30

Fortran允许整个数组操作,也允许对数组部分进行操作。有用于数组的C++类,但我不认为您可以像在Fortran中那样容易地引用像x(:,2:,1:N3:2)这样的片。这让人非常简洁地表达了一些算法。

Fortran的数组操作的便利性扩展到派生类型的数组。假设您有一个日期数组:

键入date

integer ::月、日、年

结束类型日期

类型(日期) ::x(1000)

然后x表示日期数组,x%month表示月份数组,pack(x,x%month==1)表示一月中的所有日期。有多少其他编程语言提供了这种便利?

早些时候关于Fortran的一些评论--“陈旧和令人厌恶的”--是有偏见的,应该相应地予以考虑。让我反驳一下。在我看来,Fortran90的自由格式看起来比C和C++的语法更好,使用了大括号和分号。将它们省略或错误地放入可能会导致C和C++中出现错误,而这些错误在Fortran中没有对应的内容。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4821913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档