计算化学公社

标题: 【耻辱柱】fortran不蠢,蠢人自蠢 [打印本页]

作者
Author:
yjcmwgk    时间: 2018-2-11 15:38
标题: 【耻辱柱】fortran不蠢,蠢人自蠢
本帖最后由 yjcmwgk 于 2018-2-13 09:32 编辑

如果用python,那么可以写
如果 这东西在某个数组中,那么执行XX。

如果用fortran,就要写
循环i从1到max,某个东西和某个数组的第i个元素相同吗?如果相同,exit循环并执行xx,如果不同,continue。

fortran怎么这么蠢

只是吐槽罢了,又想效率高又要写法简单,哪有那美事儿?!

=====在sob君回复后,加一段=========
上述吐槽纯属我自己不了解而乱吐。事实上fortran已经提供了类似功能:
ANY(mask[,dim]) 判断是否有数组值在指定维上满足mask的条件
最后引用sob的回复:“很多人批Fortran,其实是因为没有深入系统学习过Fortran
啊 脸红了
原帖内容不改了,留在这儿作历史的耻辱柱
帖子标题从《fortran怎么这么蠢》改为《fortran不蠢,蠢人自蠢》

作者
Author:
sobereva    时间: 2018-2-11 17:33
善用Fortran自带的函数
if (any(array==1)) then
....
end if

很多人批Fortran,其实是因为没有深入系统学习过Fortran

作者
Author:
Warm_Cloud    时间: 2018-2-13 08:09
Fortran2003很多东西是很不错的
作者
Author:
yjcmwgk    时间: 2018-2-13 09:25
sobereva 发表于 2018-2-11 17:33
善用Fortran自带的函数
if (any(array==1)) then
....

啊 拜谢!

ANY(mask[,dim])
判断是否有数组值在指定维上满足mask的条件

再次感谢!
作者
Author:
itpfeng    时间: 2018-2-13 11:20
毕竟我们都不是专门的programmer,一般都是简单应用而已,很难去透彻了解一个工具所有功能,比如谁又敢说对excel, origin熟悉的无以复加呢。而且fortran是在发展中,很多功能都是新加的。不知道很正常,知道的是大牛。
作者
Author:
sobereva    时间: 2018-2-13 16:07
itpfeng 发表于 2018-2-13 11:20
毕竟我们都不是专门的programmer,一般都是简单应用而已,很难去透彻了解一个工具所有功能,比如谁又敢说对 ...


强烈建议Fortran用户,买本彭国伦的书,把书末Fortran自带的函数列表扫一眼,顶多一刻钟时间,会少走很多弯路、避免写很多很多其实不必要写的代码。

any()、all()、where等不算高深应用,算是Fortran数组操作必会的。
虽然是简单应用,但不多知道点信息的话,“其实很简单”就成了“困难”了,如同用windows的人若不知道linux的shell脚本是多么出色,反倒觉得linux命令行超级难用、命令难记而喷linux(亦或是用linux的人,不知道windows下也能写批处理脚本,盲目也把windows批一顿)。评价一个东西应当建立在有基本的了解上(深入、高级的东西可以暂时不会用,但应该知道“有那么回事”、“其实可以做到”)。
PS:批Fortran的无数搞计算机的人,实际上往往就看过几眼F77的老代码,看见有一堆goto、没有缩进、变量名严格控制在<=六个字符等不爽的地方就开喷了,而无视F90和77的天壤之别、无视2003做的扩展、无视Fortran数组操作对科学计算的极度强大性、对科学计算的高度友好性。(人的时间都很有限,如果实在没有时间去系统了解一样东西,那么索性就保留意见,而不轻易评价就好了)

作者
Author:
一颗赛艇    时间: 2018-2-15 08:37
XX 不蠢,蠢人自蠢

啥都可以这么说。你非要用fortran,谁又能把你怎么样?
作者
Author:
ggdh    时间: 2018-2-15 15:13
反正最后是学到东西了,支持小卒
作者
Author:
greatzdk    时间: 2018-2-22 12:46
谈不上耻辱吧 这题目整的虐心,好好学习就是了




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3