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

Jam*_*mes 5 c c++ fortran

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

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

提前致谢.

Jon*_*rsi 11

哎呀!不,不,不.而在相关的新闻,越来越多的Fortran一些OOP /多态的东西没有过时的C++,二郎不会呈现哈斯克尔是多余的,Python有没有被杀的bash脚本,PHP并不排除对JavaScript的需要,神不知鬼不觉,一切都没有打死关于Java,等等,有很多编程语言出于某种原因 - 有一组程序员发现它们是特定工作的好工具.你不必喜欢他们,因为那是真的.

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

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

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

  • @MSalters:问题在于,在一个非平凡的项目中,你可能想要使用少数第三方库,你将不得不处理一些互不兼容的多维数组类,并以某种方式在它们之间改组数据.std :: complex,OTOH,在标准库中,所以world + dog不会一直重新发明它.再说一次,如果你需要稀疏阵列,Fortran对你没有帮助,你也有同样的问题; 在这种情况下,由于模板和运算符重载使得用户定义的数组类比Fortran更容易,C++甚至可能是更好的选择 (2认同)

flo*_*olo 2

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

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

  • 每当 12 年前的标准被称为新标准时,我都觉得很有趣。 (6认同)