S***y 发帖数: 186 | 1 关于C和Fortran: 一点儿个人观点
1. C和Fortran其实并不具可比性。C应该是算中级语言,而Fortran是高级语言。
也就是说,理论上上讲Fortran能干的事C全能干。我相信Fortran的compiler
很大部分应该是用C写的。所以,当你说Fortran支持Variable-size matrix时,
马上就有人能给你找出一个C的library来support这个功能。好,你说Fortran
支持复数计算,C高手立刻就能给你现写一个complex class支持所有你想要的
任何manipulations on complex numbers. 关键是你觉得那个更方便呢?
2. Fortran其实很容易学,有点编程语言基础的两三天就能上手用。再有多
两三个星期实践一下,Fortran的程序基本就能看懂了(当然前提是算法你已经
懂了)。这么简单,而且同行都在用,学学无防啊。
3. 这个有点老生长谈了。就是很多科学计算的老程序都是Fortran写的,都是
身经百战的,绝对bug-free。你非要用C把这些东西从写一遍,别人也没办法。
4. 再有就是performanc | c**z 发帖数: 1014 | 2 多谢多谢!
决定用fortran了.
感觉fortran对matrix操作不是很方便,是不是matrix不能作为function的参数啊?
这一点上没有matlab爽啊。
【在 S***y 的大作中提到】 : 关于C和Fortran: 一点儿个人观点 : 1. C和Fortran其实并不具可比性。C应该是算中级语言,而Fortran是高级语言。 : 也就是说,理论上上讲Fortran能干的事C全能干。我相信Fortran的compiler : 很大部分应该是用C写的。所以,当你说Fortran支持Variable-size matrix时, : 马上就有人能给你找出一个C的library来support这个功能。好,你说Fortran : 支持复数计算,C高手立刻就能给你现写一个complex class支持所有你想要的 : 任何manipulations on complex numbers. 关键是你觉得那个更方便呢? : 2. Fortran其实很容易学,有点编程语言基础的两三天就能上手用。再有多 : 两三个星期实践一下,Fortran的程序基本就能看懂了(当然前提是算法你已经 : 懂了)。这么简单,而且同行都在用,学学无防啊。
| S***y 发帖数: 186 | 3
可以的。
爽不爽,这东西见仁见智。可能Fotran要用几十行干的事,Matlab里几行就干了。
从这个角度讲,Matlab当然爽。可是当你要解个PDE,要solve一个几万个unknowns
的线性代数方程组的时候,你就发现用Matlab会等的很不爽了。说实话,我基本就算
没用过Matlab。
【在 c**z 的大作中提到】 : 多谢多谢! : 决定用fortran了. : 感觉fortran对matrix操作不是很方便,是不是matrix不能作为function的参数啊? : 这一点上没有matlab爽啊。
| c**z 发帖数: 1014 | 4
这个怎么用啊?
我问实验室师兄说fortran不支持这样的用法,:(
【在 S***y 的大作中提到】 : : 可以的。 : 爽不爽,这东西见仁见智。可能Fotran要用几十行干的事,Matlab里几行就干了。 : 从这个角度讲,Matlab当然爽。可是当你要解个PDE,要solve一个几万个unknowns : 的线性代数方程组的时候,你就发现用Matlab会等的很不爽了。说实话,我基本就算 : 没用过Matlab。
| y**********a 发帖数: 16 | 5 F77 can't, F90 can.
【在 c**z 的大作中提到】 : : 这个怎么用啊? : 我问实验室师兄说fortran不支持这样的用法,:(
| S***y 发帖数: 186 | 6
Program testing
real A(2,2)
A(1,1)=1.0
A(1,2)=0.0
A(2,1)=0.0
A(2,2)=1.0
D=Determinant(A)
Print *, D
End
Function Determinant(A)
real A(2,2)
Determinant=A(1,1)*A(2,2)-A(1,2)*A(2,1)
Return
End
[sunyy@17-25 sunyy]$ g77 testing.f -o testing
[sunyy@17-25 sunyy]$ ./testing
1.
不知道是不是误会你的意思了。你要是问Variable-size matrix,
你非得用F90不可了。
【在 c**z 的大作中提到】 : : 这个怎么用啊? : 我问实验室师兄说fortran不支持这样的用法,:(
| x*****u 发帖数: 3419 | 7 Fortran 的最大问题是用的人越来越少。这跟几个因素有关。
1。F77简单好学,但是过旧,濒临淘汰;
2。F90更现代丰富,不那么简单好学,而要命的是,不免费,难以potable;
3。相比之下,C/C++虽显得更复杂(其实绝非难以掌握),但随之而来的是功能更加强大,
表现更加丰富,而更要命的是,完全免费!加上无比丰富的学习资源,不断涌现的各种li
brary(包括scientific computation),以及更活跃的编译器升级换代。。。。你多花几
个礼拜啃一啃C,面对你的将是整个世界。Fortran做计算是绝对胜任,但是你就被圈住在F
ormula Transformation,享受不到编程的真正快乐。
【在 S***y 的大作中提到】 : 关于C和Fortran: 一点儿个人观点 : 1. C和Fortran其实并不具可比性。C应该是算中级语言,而Fortran是高级语言。 : 也就是说,理论上上讲Fortran能干的事C全能干。我相信Fortran的compiler : 很大部分应该是用C写的。所以,当你说Fortran支持Variable-size matrix时, : 马上就有人能给你找出一个C的library来support这个功能。好,你说Fortran : 支持复数计算,C高手立刻就能给你现写一个complex class支持所有你想要的 : 任何manipulations on complex numbers. 关键是你觉得那个更方便呢? : 2. Fortran其实很容易学,有点编程语言基础的两三天就能上手用。再有多 : 两三个星期实践一下,Fortran的程序基本就能看懂了(当然前提是算法你已经 : 懂了)。这么简单,而且同行都在用,学学无防啊。
| c**z 发帖数: 1014 | 8 你这里的D是一个数字,我想要的是能返回一个数组的,
不知道行不行?
【在 S***y 的大作中提到】 : : Program testing : real A(2,2) : A(1,1)=1.0 : A(1,2)=0.0 : A(2,1)=0.0 : A(2,2)=1.0 : D=Determinant(A) : Print *, D : End
| s***x 发帖数: 24 | 9 有一定的道理!
【在 x*****u 的大作中提到】 : Fortran 的最大问题是用的人越来越少。这跟几个因素有关。 : 1。F77简单好学,但是过旧,濒临淘汰; : 2。F90更现代丰富,不那么简单好学,而要命的是,不免费,难以potable; : 3。相比之下,C/C++虽显得更复杂(其实绝非难以掌握),但随之而来的是功能更加强大, : 表现更加丰富,而更要命的是,完全免费!加上无比丰富的学习资源,不断涌现的各种li : brary(包括scientific computation),以及更活跃的编译器升级换代。。。。你多花几 : 个礼拜啃一啃C,面对你的将是整个世界。Fortran做计算是绝对胜任,但是你就被圈住在F : ormula Transformation,享受不到编程的真正快乐。
| s***x 发帖数: 24 | 10 可以.
【在 c**z 的大作中提到】 : 你这里的D是一个数字,我想要的是能返回一个数组的, : 不知道行不行?
| | | S***y 发帖数: 186 | 11
直接返回数组没那么直接,要用到F90的东西。
可是我自己认为没必要非要用function,
Fortran里还有个东西叫subroutine。
Program testing
real A(2,2),B(2,2)
A(1,1)=0.0
A(1,2)=1.0
A(2,1)=-1.0
A(2,2)=0.0
1000 Format('Matrix A:')
1100 Format('Transpose of Matrix A:')
Write(*,1000)
Write(*,'(2F5.1)') A(1,1),A(1,2)
Write(*,'(2F5.1)') A(2,1),A(2,2)
Call Transpose(A,B)
Write(*,1100)
Write(*,'(2F5.1)') B(1,1),B(1,2)
Write(*,'(2F5.1)') B(2,1),B(2,2)
End
Subrouti
【在 c**z 的大作中提到】 : 你这里的D是一个数字,我想要的是能返回一个数组的, : 不知道行不行?
| S***y 发帖数: 186 | 12
持保留意见。应该说用Fortran和C的人都在增多,不过用C的增加更快。
但还是那句话,这没可比性,因为C应用领域广的多。
应该是已经淘汰了吧,没人再用F77写专业程序了,我想。
F90是比F77复杂多了,但其实把Module和Allocatable Array整明白,
再把那些增加的Intrinsic Functions记住,就差不多了。
Intel有免费的F90/95的编译器啊,性能不错。
你要是买更牛的机器,这compiler的成本应该是占很小的比例吧。
关于Portability, 我用过的commercial packages, 用Fortran写的都可以
在我所有的机器上编过,IBM, SGI, Alpha, Itanium, Pentium ...
C的我没用过。但我想实际上很少有C的程序是在ANSI Standard下写的,
都或多或少的使用了compiler-dependent extensions,所以这portability
反而会有问题。纯属个人愚见。:)
免费的Fortran写的library就更多到我都不想说了,当然都是做计算的。:(
当你面向整个世界时,
【在 x*****u 的大作中提到】 : Fortran 的最大问题是用的人越来越少。这跟几个因素有关。 : 1。F77简单好学,但是过旧,濒临淘汰; : 2。F90更现代丰富,不那么简单好学,而要命的是,不免费,难以potable; : 3。相比之下,C/C++虽显得更复杂(其实绝非难以掌握),但随之而来的是功能更加强大, : 表现更加丰富,而更要命的是,完全免费!加上无比丰富的学习资源,不断涌现的各种li : brary(包括scientific computation),以及更活跃的编译器升级换代。。。。你多花几 : 个礼拜啃一啃C,面对你的将是整个世界。Fortran做计算是绝对胜任,但是你就被圈住在F : ormula Transformation,享受不到编程的真正快乐。
| c**z 发帖数: 1014 | 13 非常感谢!
【在 S***y 的大作中提到】 : : 持保留意见。应该说用Fortran和C的人都在增多,不过用C的增加更快。 : 但还是那句话,这没可比性,因为C应用领域广的多。 : 应该是已经淘汰了吧,没人再用F77写专业程序了,我想。 : F90是比F77复杂多了,但其实把Module和Allocatable Array整明白, : 再把那些增加的Intrinsic Functions记住,就差不多了。 : Intel有免费的F90/95的编译器啊,性能不错。 : 你要是买更牛的机器,这compiler的成本应该是占很小的比例吧。 : 关于Portability, 我用过的commercial packages, 用Fortran写的都可以 : 在我所有的机器上编过,IBM, SGI, Alpha, Itanium, Pentium ...
| x*****u 发帖数: 3419 | 14
真的? Intel真是我最佩服的公司了。公司不想着赚钱,却出免费版本,还是成系列的出
。。。这样的公司,不知道有几个?
这点我想的有点走题。我是想如果编译器要钱,那程序就得跟这份钱绑在一起,如果谁要
用这程序,还要花这份钱,从这个角度来看,portable的问题。
大,
种li
花几
住在F
:) 有专业精神,这我是敬佩的。记得从前有个同学跟我讲起,说Fortran比起C来太差了
,云云。。。我当时啥都不懂,但就觉得,做不同的事情,用不同的工具,看你的要求了
,Fortran应该更适合做计算。我现在也仍是这样认为。我所想表达的意思是,如果可能
,最好不要只局限于一个Fortran,哪怕只做计算,而Fortran也足足够用。了解了解C,了
解了解底层,并能在适当的时候做适当的选择,应该也是一个对科学计算工作者的基本要
求。说道快乐,老实说,仅从编程角度来说,编Fortran程序的确没有编C程序来的快乐,
在windows下编程序没有在linux下编程序来的快乐。 当然这只是愚识,见笑。
【在 S***y 的大作中提到】 : : 持保留意见。应该说用Fortran和C的人都在增多,不过用C的增加更快。 : 但还是那句话,这没可比性,因为C应用领域广的多。 : 应该是已经淘汰了吧,没人再用F77写专业程序了,我想。 : F90是比F77复杂多了,但其实把Module和Allocatable Array整明白, : 再把那些增加的Intrinsic Functions记住,就差不多了。 : Intel有免费的F90/95的编译器啊,性能不错。 : 你要是买更牛的机器,这compiler的成本应该是占很小的比例吧。 : 关于Portability, 我用过的commercial packages, 用Fortran写的都可以 : 在我所有的机器上编过,IBM, SGI, Alpha, Itanium, Pentium ...
| x*****u 发帖数: 3419 | 15
我当然不是拿这个跟C比。我只是有这样的感觉。有一次,我问一个美国同学,工程专业
,本科居然不学Fortran,学C++,现在自己学Fortran因为要用。我的一个印度同学,完
全不懂Fortran,也不要学。而且,我这里大都只教C,不知道大家都是什么情况?
大,
种li
花几
住在F
【在 S***y 的大作中提到】 : : 持保留意见。应该说用Fortran和C的人都在增多,不过用C的增加更快。 : 但还是那句话,这没可比性,因为C应用领域广的多。 : 应该是已经淘汰了吧,没人再用F77写专业程序了,我想。 : F90是比F77复杂多了,但其实把Module和Allocatable Array整明白, : 再把那些增加的Intrinsic Functions记住,就差不多了。 : Intel有免费的F90/95的编译器啊,性能不错。 : 你要是买更牛的机器,这compiler的成本应该是占很小的比例吧。 : 关于Portability, 我用过的commercial packages, 用Fortran写的都可以 : 在我所有的机器上编过,IBM, SGI, Alpha, Itanium, Pentium ...
| q*****g 发帖数: 1568 | 16
ft, 你也太容易被感动了。Intel的命根子是什么?是写编译器吗?呵呵。
【在 x*****u 的大作中提到】 : : 我当然不是拿这个跟C比。我只是有这样的感觉。有一次,我问一个美国同学,工程专业 : ,本科居然不学Fortran,学C++,现在自己学Fortran因为要用。我的一个印度同学,完 : 全不懂Fortran,也不要学。而且,我这里大都只教C,不知道大家都是什么情况? : 大, : 种li : 花几 : 住在F
| c******m 发帖数: 599 | 17 u can learn Fortran in 3 days ya , if u aldreaday learned some c/c
++
【在 x*****u 的大作中提到】 : : 我当然不是拿这个跟C比。我只是有这样的感觉。有一次,我问一个美国同学,工程专业 : ,本科居然不学Fortran,学C++,现在自己学Fortran因为要用。我的一个印度同学,完 : 全不懂Fortran,也不要学。而且,我这里大都只教C,不知道大家都是什么情况? : 大, : 种li : 花几 : 住在F
| x*****u 发帖数: 3419 | 18 they have non-commercial version for linux.
free for ever...
列的出
果谁要 | x*****u 发帖数: 3419 | |
|