C语言和Fortran语言的差异 1 - 编程入门网

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上一篇:C编译器的设计 下一篇:C语言中实现动态分配二维数组
http://www.bianceng.cn/Programming/C/200710/4979.htm[2011-9-2 22:25:43]
C语言和Fortran语言的差异 - 编程入门网
C语言和Fortran语言的差异
时间: 2007-10-25 温睿
本文详细介绍C语言和Fortran语言的差异 1. C++语言和Fortran语言的发展背景 在程序设计语言的发展过程中,FORTRAN 语言 被认为是科学计算的专用语言。后来推出 的FORTRAN90 和FORTRAN 95 版本也不例外,它 们虽然可以完全实现C++语言同样的功能,然而其软 件开发环境和软件的集成性等方面都远不如C++ 语 言。近年来,随着计算机软硬件技术的发展,数据结 构、数据库管理技术、可视化与计算机图形学、用户 接口系统集成以及人工智能等领域的成果被逐渐应用 到结构分析软件中,结构分析软件的设计并不仅仅局限于单一的科学计算需要涉及众多的软件开发领 域。C++ 语言可以提供这类软件开发所需的功能,而用FORTRAN 90 却很难实现,另一方面从软件的 编程环境来看,目前FORTRAN 90 的编译器极少,而C++ 语言的编译系统相当普及,可以运行在各种 机型上,便于实现跨平台的软件系统集成。 2. C语言和Fortran语言的差异 由于两者产生的背景不同,它们是存在差异的,在比较了几组源代码之后,主要有以下体会: C 最大的优点在于灵活,不但可以藉由 struct 来定义新的数据结构 ,同时 C 的pointer 更可以让 我们自由而且有效率地处理大数据。而在 UNIX 系统 中,由于整个操作系统绝大部分就是 C 写出来的, 故我们也有方便的 C 函数库, 直接使用系统资源与享受系统带来的服务,以做到一些低阶、快速的动 作。而FORTRAN从一开始就用于科学计算,它与C的差异主要表现为: * 复数运算的速度 * 程序参数与字串 * 内存的动态管理 * 多维阵列的处理 * 函数调用与参数传递 2.1. 复数运算的速度 在进行复数运算的时候,C++ 可以定义复数的 class,还可以重新定义所有的四则运算式,复杂的 算式也可以做到由一个表达式来解决。但它的重新定义复数四则运算是用函数来做的,使用函数来调用其 速度很慢,除非采用 inline function 的方式,但会遇到以下的问题:要先将这个算式拆解,分别算过后 再重组结果,故表面上程序代码很简洁,但实际上是 compiler做了很多工作,还是要付出相当的计算时 间代价的。 至于 Fortran,最大的优点在于复数 (complex number) 的运算,复数是 Fortran 的基本数据类 型之一,这正是 C 所缺乏的 (C 基本上只有实型与整型类型而已)。 虽然C 也可以由 struct 的定义,达 到复数四则运算的目的,但 却很可能牺牲了程序效能,或者是程序写起来相当繁杂降低可读性。因此, 在大量而且要求高速的复数运算场合, Fortran 实际上比 C 还要适合。 然而既然复数已是 Fortran 基本数据类型之一,则 Fortran compiler在设计上可以做到对复数特别 的 optimization,例如如果遇到较短的复数运算式,它可以用“心算” 直接得出 real_part 与 imag_part 的 expression,像这样: real(a) =……;imag(a) = ……. 如此只需两步就得到结果。直到遇到太长太复杂的算式,才去做拆解的动作。 这样使用 C 来做复数运算可能需要绕圈圈,而且绕出来的圈圈可能还不小。不过如果程序中需要复
int main(int argc, char **argv) { int a, b, c; a = atoi(argv[1]); b = atoi(argv[2]); c = atoi(argv[3]); }
而程序执行时,参数就是这样传入: a.out 12 15 18
共4页:
上一页
1
2
3wenku.baidu.com
4
下一页
http://www.bianceng.cn/Programming/C/200710/4979.htm[2011-9-2 22:25:43]
C语言和Fortran语言的差异 - 编程入门网
合的数据结构,如一个自定义的数据结构中既有浮点数、整数、还有字符串时, Fortran 只有举白旗投 降了。当然, Fortran 如果要做还是可以做,只是不太方便,而且可能也需要绕圈圈。但如果使用 Fortran 90 则不成问题了,因为 Fortran 90 也有类似 C 的 struct 结构以定义复合的数据类型。 2.2. 程序参数与字串 C 程序可以有参数串列, Fortran 则没有。例如,当程序执 行时,必须输入 a, b, c 三个参数,在 C 可以这样写:
相关文档
最新文档