找回密码
 注册
查看: 5697|回复: 22

[求助]关于fortran和c到底哪个合适呢

[复制链接]
发表于 2005-10-16 17:14:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
要做流体的数值计算,要求编程,用fortran还是用c语言好呢,两个有什么特点和不同吗?我以前只学过c,大家有的说fortran比较适合计算,也有的说c语言也可以,我搞迷糊了,还有两个语言的界面哪个比较好一些,我学c的时候用的是Turbo C编译环境,好麻烦的。。。高手们帮帮我,我是研究生要开题,急着决定呢,拜托啦!
发表于 2005-10-18 13:59:31 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

ddddddddddddddddddddddd
发表于 2005-10-18 22:22:31 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

都可以。
说FORTRAN好只是一些人的误导
发表于 2005-10-21 16:31:16 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

visial C++和visial fortran的界面都挺好。
如果你的跳跃思维强的话用visial C++,逻辑思维强的话用visial fortran。一般来说,学术界用于科学计算的程序都用fortran语言。
祝顺利开题
发表于 2005-10-21 23:56:23 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

1. 从语言上讲, C和FORTRAN没多大区别. 楼上"跳跃思维""逻辑思维"是比较搞笑的. 流体的数值计算来讲, 如果不是搞大程序, 用那个都可以. 如果你会C想学FORTRAN也很容易.
2. 这点最重要: 你要不要借用已有的软件/软件库? 比如你想从FORTRAN写的SIMPLE程序开始搞2次开发, 那当然用FORTRAN省事. 搞混合编程什么的完全没必要.
3. 就象楼上说的, VISUAL C++和VISUAL FORTRAN都提供不错的编程环境/查错功能/编译器. (好象VISUAL FORTRAN就是套在VISUAL C++上的)
4. 计算用的语言应该不是开题的重点, 不管选那个, 将来用的不合适还可以改.
发表于 2005-10-24 19:47:10 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

anyone 说得精到
发表于 2005-10-24 22:34:51 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

若你多维数组用得多,劝你用Fortran。其实,哪种语言都无所谓,关键的是算法。数值计算还是fortran好一些。
发表于 2005-10-25 13:18:35 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

刚入门最好用fortran,c语言要引用于流体力学的计算不是初学者可以搞定的,即使是计算机专业的,如果不熟悉数值计算的话,用c语言编计算程序(指CFD计算)也会一塌糊涂。
对于日益复杂的大型程序,c++是最好的选择,许多fortran编的程序最后都改成c++了,但那不是一般cfd编程人员所能做的,除非你对编程有特别的爱好。
对于动态多维数组,fortran90比c++要方便多了,c++必须要自己编多维数组的模板类,或是使用多维数组的库,对于初学者并不合适。
发表于 2005-10-26 00:01:18 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

同意fantasy 关于C++的评论. C++确实是编大型CFD软件的最佳选择, 但也是最难起步的. 据我自己的观察, 对大多数cfd编程人员, 包括CFD专业人士, 用C++做CFD都是一个巨大的挑战.
不过C的难度有些夸大. 好象做FEM用C就很普遍了. 多维数组对CFD也没那么重要. 即使是结构网格用FORTRAN编程序, 就有很多人喜欢用一维数组来存空间变量. 中间的转换很容易. 如果这点都搞不定, 做CFD就有点吃力了. 新手用C/C++反而有优势, 毕竟一开始就学的这些语言.
 楼主| 发表于 2005-10-26 16:59:41 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

多谢各位的意见,我想应该是做一些方程的离散,解一些差分方程组什么的吧,具体的我现在也不是特别清楚,这样的话应该用fortran比较好一些吧?
发表于 2005-11-10 17:15:38 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

我觉得两个都学业花不了多少时间,艺多不压身
发表于 2005-11-11 16:30:15 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

fortran 是专为科学计算而作的噢
发表于 2005-11-12 03:13:53 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

对于初学者来说,fortran77比较快,fortran90次之,c++在次之。但对于好的c++程序可以接近fortran90的速度并提供强大的多的功能,虽然fortran90也在不断改进,如有fortran95之类的,但在怎么改,也只能说越来越像c++了,那还不如就用c++好了。程序的速度是相对的,刚入门的人可能还没时间考虑程序的更大范围的通用性,程序结构的合理性,这时fortran是很好的选择,因为往往这时你把程序实现并得到正确结果是最重要的,你的老板往往没有愿望看你的代码有多漂亮,fortran能让你有精力把注意力集中在关键的地方。另一方面,刚入门的编的fortran程序可能比某些好的c++程序还慢,这都需要经验的积累。我见过有人用一维数组在写多维结构网格程序,甚至包括有些国外早期的有名的代码,他们引以为自豪的下标计算,在fortran90的动态分配面前黯然失色,如果有人有这个爱好,那是另外一回事,如果认为这样很好,那这样的程序本人是不敢恭维的。学习一门语言当然是很快的事,但说到掌握就是另外一回事了。fortran可以说一两个月基本掌握,c语言要1年,c++要三年以上(边工作边学习语言)。是有许多初学者可以很快用多种语言编出一定规模的程序,但那往往都是玩具代码。
发表于 2005-11-12 07:45:16 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

下面引用由fantasy2005/11/12 03:13am 发表的内容:
对于初学者来说,fortran77比较快,fortran90次之,c++在次之。但对于好的c++程序可以接近fortran90的速度并提供强大的多的功能,虽然fortran90也在不断改进,如有fortran95之类的,但在怎么改,也只能说越来越 ...
其实你大部份都说的很有道理, 如果不那么偏激的话.
我原话说的是用C来做CFD可以用一维数组, 避开C做多维数组的不方便. 说句实话我本人也不喜欢老式一维数组转换, 但不妨碍我承认那种一维数组记法也有很多好处.更不会因此鄙视别人的编程习惯. 何况别人搞老式一维数组转换的时候, FORTRAN 还没有动态数组那. 等CFD做深了, 基本也只需要一维数组了. 因为这时谁也不会开发一个只能解单块结构网格的求解器了. 回想一下我已经好多年不用多维数组了.
至于动态数组, C/C++不可能比FORTRAN差吧.
说到学习语言的困难程度, 新学生很多都只学过C(或C++入门), 部分抵消了FORTRAN的易学性.如果我没弄错的话, 搞FEM的很多从初学就用C来做还不是一样.
再次同意关于C++的好处和困难程度.
发表于 2005-11-12 11:34:46 | 显示全部楼层

[求助]关于fortran和c到底哪个合适呢

anyone,我的观点并不是针对你的。看的出来,你有许多年的编程经验,那你已经早就不在初学者范围了,我的观点是针对初学者的,当然,我的观点也不一定对。
从我自己编程的经验来说,初学者容易在选择语言方面费脑筋,往往容易本末倒置。我的意思是他们要把主要精力集中在问题上,不要浪费在语言本身,编写好的程序要经过不断的改进,不是初学者的能办到的。
有限元是比较特殊的,它一般只需要1维数组,这个问题并不大,但是这并不能否认c语言,包括c++在动态分配多维数组方面的高起点。我见过一些学习c语言很多年的人,并不会开动态多维数组。c++需要自己写模板类或用别人的库,但是等你琢磨透了,fortran一个allocate就完全办到了。
不是说fortran就高级,是说它是基本上针对数值计算的,而c或c++并不是专门用来搞数值计算的,虽然说好的c或c++程序会在计算方面与fortran非常接近而在灵活性方面远远胜出。但别人用编译器搞定的事在c++里却要你自己去编,这才是问题所在。何况大概fortran的编译器也是用c编的吧(本人猜测可能不对),但不是每个人用c都可以编出和编译器同量级的代码来。
本质上说,所谓的多维数组基本上都是存成一维数组,当然可以用一位数组进行多维数组的编程。但有方不方便和习惯的问题。
早期的多块结构网格求解器,是用一维数组开的,那时还没有fortran90,要开一个一维大数组,然后把所有的多维数组的地址在这个一位数组里算好。这样做,会浪费很多空间,而且遇到了大数组还要重新编译(除非你开的数组太大,那样又会浪费空间)。有了fortran90后可以进行动态分配,这些问题都没有了。
如果深入下去,就要考虑程序的结构网格程序和非结构网格的混合编程,某些区域用结构求解器进行计算,某些区域用非结构计算,在大一些,还有多学科的问题,这些如果用fortran90也同样可以办到,但就有些得不偿失了,这时c++在程序的体系结构方面的优势就非常明显了。但c++起点高,开始收获比付出小,我见过有人在论坛里讨论overtune的问题,如果看过的人就知道,还是很复杂的,而且写程序的大概也不乏高手,但就是这样的程序,体系结构也还是说不上好。所以,一旦你要用c++,就要有迎接失败的准备。
cfd程序是很复杂的,语言只是一方面,正确的物理概念和理论基础往往更重要,在求解器正确的情况下,追求程序的可维护性和可扩展性就变得重要了。
再次声明,这只是一家之言,并且没有保证它的正确性。因为这个问题大概本身就是仁者见仁,智者见智的问题,但现在都是民主社会了,应该允许有不同的见解存在。
说的不对的地方,一笑了之罢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表