有没有这样好的C编译器,fortran正在成为一种多余的语言?

时间:2011-04-04 20:38:09

标签: c++ c fortran

只是想知道,因为我一直认为Fortran用于超级计算。但是,我经常听到C编译器可以使C像Fortran一样快,所以它的使用是否有限?

另外,如果这是真的,那么最快的C编译器是什么?

提前致谢。

5 个答案:

答案 0 :(得分:11)

哎呀!不,不,不。而在相关新闻中,Fortran增长了一些OOP /多态的东西并没有淘汰C ++,Erlang没有渲染Haskell多余,python没有杀死bash脚本,PHP也没有消除对javascript的需求,而且神秘地说,没有什么能够杀死关于Java,等等,有很多编程语言出于某种原因 - 有一组程序员发现它们是特定工作的好工具。你不必为了这一点而喜欢它们。

从根本上说,C是一种系统编程语言。在其中编写类似计算科学的东西是非常痛苦的。 C ++更好,因为它更丰富,但是它不会因为它没有多维数组作为第一类类型而受到严重影响(不,它只是没有,好吗?),并且所有技术计算都严重依赖于多维数组。缺少用于C / C ++的单个标准多维数组包使得为该语言编写优化库非常困难,一旦您提交了一个包,就必须始终使用它们的数据结构。 Python遇到了同样的问题,并且会在Numpy成为Python核心的一部分之前这样做。

Fortran,它的所有缺陷,是唯一专门为科学编程而设计的语言。它允许类似python或matlab的数组运算符和切片,这可以使科学程序员的生活更轻松。即使在那时,许多科学程序员也不喜欢fortran;他们更喜欢其他语言的工具集或库。那没关系。

只是为了抵挡你的下一个问题 - 不,我们也不必同意编辑。

答案 1 :(得分:2)

Fortran有一些允许更快程序的属性。 Esp指针使编译器停止优化代码(并且数组在C中作为指针传递 - 而数组是HPC中的数据结构)。这里的问题是两个指针可以别名,在fortran中这不可能发生。在新的C99中,这个问题减少了,当你用restrict提示编译器时写得好,这样的别名不会发生。

但由于公司里有很多旧的fortran代码,所以fortran在不久的将来永远不会过时。

答案 2 :(得分:2)

Fortran不会很快消失。有太多的Fortran代码:快速,可靠,经过良好测试的例程,用于执行各种各样的事情,以及可能设计不太好但程序很难在C中重写的程序。

此外,Fortran作为一种语言是围绕高性能计算而设计的,并且对优化没有什么障碍,而Fortran编译器通常是为高性能计算而设计的。

答案 3 :(得分:2)

Fortran 90/95/2003/2008是比C.更高级的语言。我选择C用于嵌入式或设备编程,而现代Fortran用于科学编程。

答案 4 :(得分:1)

两个字。遗留代码。在20年内仍然会有大量的Fortran,就像有足够的COBOL一样。我的心向那些必须维持它的人致敬。