计算化学公社

 找回密码 Forget password
 注册 Register
楼主 Author: scf
打印 Print 上一主题 Last thread 下一主题 Next thread

[综合交流] 各种编程语言的优劣

[复制链接 Copy URL]

99

帖子

0

威望

1092

eV
积分
1191

Level 4 (黑子)

16#
发表于 Post on 2015-6-5 13:29:36 | 只看该作者 Only view this author
语言没有优劣,只有合适不合适。大规模计算必然是C,Fortran,C++的天下;建模、图形化、数据处理则大多数采用python这样的脚本语言,lammps、abinit等等自带的数据处理模块基本都是python写成的,好处不言而喻:无平台、编译器依赖,开发迅速,第三方库丰富。
另外,python的胶水特性在很多科学计算上也很有用,比如QM/MM上,从Gaussian的输出文件上读取Force,python只需要不到20行代码,有哪个高级语言可以做到?

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
sobereva + 2

查看全部评分 View all ratings

44

帖子

0

威望

663

eV
积分
707

Level 4 (黑子)

17#
发表于 Post on 2015-6-5 23:35:36 | 只看该作者 Only view this author
讨论科学计算,Fortran必然是有优点的,但相当一部分学生以后不从事科学计算相关的工作,学习C/C++,JAVA,python都更有益。

60

帖子

0

威望

486

eV
积分
546

Level 4 (黑子)

18#
发表于 Post on 2015-6-17 21:35:12 | 只看该作者 Only view this author
python,比较人性化,不笨拙~~~

689

帖子

21

威望

5019

eV
积分
6128

Level 6 (一方通行)

19#
发表于 Post on 2015-6-20 21:17:52 | 只看该作者 Only view this author
本帖最后由 beefly 于 2015-6-20 21:27 编辑
sobereva 发表于 2015-5-21 17:35
“在科学计算领域,Fortran很难和C++再竞争了”、“那现在,其中的90%已经被废弃了”根本没有这回事。 ...

fortran和c只要掌握一门,读另外一个语言写的代码,稍加训练就可以很快读懂,一边看代码一边翻书都来得及。但是读c++代码就不行了,必须从头学。

Q-Chem里面的c++代码主要是Krylov的组写的,也就是eom-xx-ccsd那一部分。Krylov从俄罗斯来的(奇怪,俄女姓氏难道不是Krylova吗?也许因为是女权主义吧,北京的国际量化会之前的搅局者之一),是个c++粉,要求学生必须用这个语言。但是eom方法的计算效率,比dalton、aces2、cfour这些fortran写的程序差得很远。

c++写的代码最头疼的事情,一是大量头文件,非常依赖于操作系统,很多头文件在不同系统上根本不通用;有些年代久远的头文件,如今根本就找不到。一个十多年前的代码,不经过修改往往无法编译。

二是c++程序作者热衷于调用一大堆外部的库,哪怕几百行的代码,不调用七八个库都不好意思发布。但是这些库不同版本之间的兼容性未必解决得很好。在大型的机集群上,普通用户根本没权限更新这些库,而系统管理员本着多一事不如少一事的原则,也不会做这种事情。比如学校的cluster是2013年安装的,操作系统scientific linux因为过于强调稳定性,系统库的版本一般都会晚一两年(个别还有晚七八年的),于是在2012年发布,用c++写的psi4程序,在上面根本编译不了,甚至生成pdf手册都不行。

这些问题在c代码中也存在,但是不如在c++中严重。可能是fortran和c++支持者的世界观不同,fortran程序作者重视历史积累,而c++程序作者重视新事物。

所有支持c++的理由,我感觉最合理、最现实的一个就是容易招到会编程的研究生/博士后,因为不少人在上学期间,都曾经用ms vc++写过一些小程序。















评分 Rate

参与人数
Participants 1
eV +7 收起 理由
Reason
sobereva + 7 我很赞同

查看全部评分 View all ratings

213

帖子

1

威望

2230

eV
积分
2463

Level 5 (御坂)

20#
发表于 Post on 2015-6-22 20:01:11 | 只看该作者 Only view this author
fhh2626 发表于 2015-5-21 10:51
不同意
和C比也就算了,在科学计算领域,Fortran很难和C++再竞争了。
如果说20年前,99%的科学计算程序 ...

gamess 的源代码还保留77的风格。
效率一般,我指的是us 版本。
而且里面的代码风格迥异,读起来想砸电脑。

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

21#
发表于 Post on 2015-6-23 06:24:49 | 只看该作者 Only view this author
fhh2626 发表于 2015-5-21 23:13
无意进一步争论,我保留“Fortran再难与C++竞争”的观点,你的其他疑问解答如下

Fortran当然可以享受 ...

"fortran程序员并不熟悉这样的编程方式"

这个对我不适用 我花了2天时间就习惯了
之前没有接触过类和对象

593

帖子

12

威望

4720

eV
积分
5553

Level 6 (一方通行)

密度泛函·小卒

22#
发表于 Post on 2015-8-14 07:37:19 来自手机 | 只看该作者 Only view this author
本帖最后由 yjcmwgk 于 2015-8-14 08:17 编辑

偶然看到在知乎上的回答,用于科研的hpc程序的特点,读来忍俊不禁。  
90%的时间用C/C++、Fortran。 偶尔用mathematica, matlab等高级工具干些零碎的活;
最重要的是正确性,其次是速度;
99%的时间花在除虫上,其中90%的情况是数组指标越界;
大量使用各种数值算法和线性算法,很少使用基于复杂数据结构的算法;
程序快不快,全看会不会迭代; 程序好不好,全凭文章在哪找;
程序里设置很多参数,取值都是试出来的,一般不能改动;
先写串行程序,再写并行程序;
经常访问数学维基或百科网站(wikipedia、mathworld、planetmath等);
科学计算领域的圣经是Abramowitz和 Stegun的数学手册,谭浩强是Numerical Recipe;
代码的长度随着科研项目的进展不断增长;
大量使用组里“祖传”下来的程序,被告知不要改变里面的参数;
使用双精度;
依赖编译器的优化,对硬件构架也有些了解;
被告知尽量不要使用闭源软件;
属于VIM或Emacs阵营之一;
hostname 是个科学家的名字;
有几个从师兄师姐那儿拷来的脚本;
程序的文档就是正在写的文章;
梦想再装块显示器;
有作为人形高级计算器的觉悟;
梦想着有一天写个巨牛逼的脚本把程序从编译到执行到数据处理都自动化了;
程序能跑的时候项目才完成了5%~10%;
用并行(parallelism)不用并发(concurrency),用数组不用链表;
变量名字起的很怪,其实都是直接从方程里来的;
程序不具有可读性,除非你先读懂对应的文章;
不断有新入组的学弟学妹抗议代码不符合软件工程,后来他们要么闭上嘴去灌水,要么拿了master走人了;
常常有重构代码的欲望,试过几次都放弃了,终于有天下午把代码重构了一遍,结果发现跑出来的数据怎么都不对,从此彻底放弃;
总以为做科学计算的人写的代码都很丑,后来看过一个大牛写的代码,彻底惊呆了 —— 但学CS的室友照样说丑;
写着写着,一不小心代码就成了某个领域某个小方向 the state of the art;
常常提醒自己是科学家不是程序员。
专业的程序员总是认为HPC的编程很弱智,真让他/她们去写HPC代码 ——开玩笑——他/她们连流体力学(量子化学、广义相对论 …… )都不懂,怎么可能会做科学计算

593

帖子

12

威望

4720

eV
积分
5553

Level 6 (一方通行)

密度泛函·小卒

23#
发表于 Post on 2015-8-14 07:37:47 来自手机 | 只看该作者 Only view this author
手机回复,回车键都消失了!?

19

帖子

0

威望

84

eV
积分
103

Level 2 能力者

24#
发表于 Post on 2016-2-8 04:21:07 | 只看该作者 Only view this author
python,C和C++都用过,整体感觉如下
pyhton语法简单(对于学过C的同学可能简单的有点过头),适合写一些日常处理文件的脚本(比linux上的bash脚本可读性更好),也适合写一些job flow'control的程序(执行计算A,如果A的能量高于多少多少,执行计算B)

C/C++ 语法严谨,也有很多的开发环境,比较适合开发一些正式的程序。缺点是难入门和指针引用满天飞(听我说个笑话,int *******p),老板办公室有一本介绍c++的书,厚厚的一层灰。

Fortran没实际用过,感觉做大规模数值计算会比较好。

学习这些语言了话,学通C一通百通,想一星期写脚本就去学python,至于fortran,学会了c对着几个sample code一看就会了

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
sobereva + 2

查看全部评分 View all ratings

41

帖子

0

威望

2566

eV
积分
2607

Level 5 (御坂)

25#
发表于 Post on 2016-2-10 11:42:31 | 只看该作者 Only view this author
http://pymol.chenzhaoqiang.com/index.html

230

帖子

0

威望

2653

eV
积分
2883

Level 5 (御坂)

26#
发表于 Post on 2016-9-5 02:15:02 | 只看该作者 Only view this author
本帖最后由 一颗赛艇 于 2016-9-5 02:16 编辑

干活的硕士和博士们,毕业后大多数都离开了科研。学了C++,学了Python,找相关工作还可以接着用,不算白学。

学Fortran出来有什么用?没有任何用。

屠龙之术。

30

帖子

0

威望

444

eV
积分
474

Level 3 能力者

27#
发表于 Post on 2020-5-25 10:36:32 | 只看该作者 Only view this author
一颗赛艇 发表于 2016-9-5 02:15
干活的硕士和博士们,毕业后大多数都离开了科研。学了C++,学了Python,找相关工作还可以接着用,不算白学 ...

作为刚毕业的博士,深有体会

221

帖子

0

威望

2685

eV
积分
2906

Level 5 (御坂)

28#
发表于 Post on 2020-5-25 12:37:39 | 只看该作者 Only view this author
C和C++的差别比C和Fortran的差别还大。

186

帖子

0

威望

4092

eV
积分
4278

Level 6 (一方通行)

29#
发表于 Post on 2020-5-25 14:38:57 | 只看该作者 Only view this author

5万

帖子

99

威望

5万

eV
积分
112353

管理员

公社社长

30#
发表于 Post on 2020-5-27 05:30:45 | 只看该作者 Only view this author
很多嫌弃Fortran的人实际上都对现代Fortran不充分了解,老是拿着从Fortran90学起的人往往都头痛的Fortran77的代码各种吐槽(诸如Gaussian、GAMESS-US那种风格),Neese在CCL上的发言给我的感觉也是如此。这是很不合理的。Fortran在写很多类型的科学计算代码方面的便利性明显强于C++,而且非常容易学。就算毕了业以后不搞科研,用不着Fortran,即便在博士期间花一个礼拜时间学学Fortran、之后用Fortran解决实际问题,也一点都不亏。

顺便在此强调一下:切勿拿Fortran77来评价Fortran。评价Fortran至少也得是充分掌握Fortran 90/95的基础上(后来Fortran 2003等规范又有很多在面向对象编程上的扩展)。
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 19:26 , Processed in 0.173308 second(s), 22 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list