现代Fortran与现代C++;? 我试图在FORTRAN和C++之间进行一个科学计算应用的决定。我不清楚Fortran在性能方面是否仍优于其他语言。例如,我相信由于Fortran强制执行严格的别名,与C99之前的C相比,编译器可以进行更好的优化。我不确定C++是如何适应的。
任何指导?Fortran已经针对数学(尤其是矩阵)类操作进行了高度优化 C++已经针对对象使用进行了高度优化 哪个对你更重要现代Fortran与现代C++;? 我试图在FORTRAN和C++之间进行一个科学计算应用的决定。我不清楚Fortran在性能方面是否仍优于其他语言。例如,我相信由于Fortran强制执行严格的别名,与C99之前的C相比,编译器可以进行更好的优化。我不确定C++是如何适应的。,c++,fortran,language-comparisons,C++,Fortran,Language Comparisons,任何指导?Fortran已经针对数学(尤其是矩阵)类操作进行了高度优化 C++已经针对对象使用进行了高度优化 哪个对你更重要 下面C++中有一个优化的矩阵库。 但是Fortran的全部目的是优化数学过程(尤其是矩阵运算)。事实上,这些优化是建立在语言(而不是库)的基础上的,并且在C++研究上有二十年的开端,我怀疑(但不知道事实)FORTRAN在这方面会取得成功。 < P>给出了像LAPACK ++这样的科学计算包的存在,现代Fortran已经高度优化,甚至没有性能优势。C++可能有其缺点,但性能
下面C++中有一个优化的矩阵库。
但是Fortran的全部目的是优化数学过程(尤其是矩阵运算)。事实上,这些优化是建立在语言(而不是库)的基础上的,并且在C++研究上有二十年的开端,我怀疑(但不知道事实)FORTRAN在这方面会取得成功。 < P>给出了像LAPACK ++这样的科学计算包的存在,现代Fortran已经高度优化,甚至没有性能优势。C++可能有其缺点,但性能不是其中之一。
IMRO,唯一重要的真正重要的是编程FORTRAN允许您更容易重用大量现有的FORTRAN代码和库。如果你手头有50个Fortran程序员,他们的项目和时间有限,你会先教他们所有的C++,还是接受他们使用他们喜欢的语言?
< P>我看了一下,坦白地说,我印象深刻。20年前我对这门语言的许多憎恨现在都消失了。不再有行号和特殊列(愿它们在地狱中燃烧) Fortran在工程界已经大量使用了50年了。如果你在这些圈子里工作,这会给你带来两个好处。首先,这些人非常关心优化。这意味着Fortran编译器往往拥有最好的优化器。由于缺少别名,该语言本身也比Cish语言更易于优化 第二个优点是Fortran对数字运算的库支持是无与伦比的。最好的代码几乎总是经过良好调试的代码,您不必编写这些代码<>如果你的应用程序一般不属于科学、工程或数字处理,那么上述两个都不会对你来说是个大问题,所以你最好别处看看。 < P>随着模板元编程的出现,特别是C++在数值计算中达到FORTRAN联盟的目的。因此,速度不再是一个问题。然而,关于其他问题,还有一些事情要说:
<强> Pro FORTRAN < /Str> >:老年人可能比C++更了解它。 Contra-FORTRAN:这是一种令人厌恶的、陈旧的、基本上被废弃的语言,从你开始项目的那一刻起,它就已经过时了。无论谁现在学习编程,都不太可能学习FORTRAN,因此您可能会在以后为项目寻找程序员时遇到问题
Pro C++:它相对现代,编译器仍在大幅改进。它允许您编写非常有表现力的代码Contra C++:一些模板错误消息会让你哭泣另一个主要问题是C++的学习曲线非常大,FORTRAN(90和以后)的学习曲线非常小。Fortran与MATLAB类似,具有如下操作
- B'DB是
matmul(matmul(转置(B),D),B)
- 向量的L2范数是
norm2(x)
- 使用LAPACK的矩阵SVD是
调用gesvd(a、S、u、vt)
对于数字来说,没有什么能比得上Fortran,但不幸的是,对于其他任何东西,一切都比Fortan强。因此,如果你是一个科学家,有一个安全的工作,并且只做数值/ HPC计算,那么坚持FORTRAN,否则学习和使用C++,因为它被广泛地用于非数值软件。 < P> FORTRAN允许整个数组操作和对数组部分的操作。有一些C++类用于数组,但是我不认为你可以像Fortran那样轻松地引用一个像X(2,1:N3:2)这样的切片。这让我们可以非常简洁地表达一些算法 Fortran数组操作的便利性扩展到派生类型的数组。假设您有一个日期数组: 键入日期
整数:月、日、年
结束日期 类型(日期):x(1000) 然后x表示日期数组,x%month表示月份数组,pack(x,x%month==1)表示1月份的所有日期。有多少其他编程语言提供了这种便利
早期关于Fortran的一些评论——“陈旧而令人厌恶”——是有偏见的,应该相应地予以打折。让我提出相反的论点。在我看来,Fortran 90的自由格式看起来比C和C++的语法好,带有花键和分号。把它们放在外面或错误地放入它们会导致C和C++中的错误,FORTRAN中没有对应的。