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