计算化学公社

 找回密码 Forget password
 注册 Register
Views: 2701|回复 Reply: 9
打印 Print 上一主题 Last thread 下一主题 Next thread

[综合交流] 计算软件的使用语言

[复制链接 Copy URL]

44

帖子

0

威望

3842

eV
积分
3886

Level 5 (御坂)

本帖最后由 泡泡媛 于 2022-8-1 12:02 编辑

比较好奇为什么现在在计算领域还是有非常多的软件使用Fortran语言编写,感觉C++应该是更好的选择,没有写过计算软件,比较好奇如果使用C++重构的话,会是很大工程么?

306

帖子

2

威望

3251

eV
积分
3597

Level 5 (御坂)

2#
发表于 Post on 2022-8-1 11:54:59 | 只看该作者 Only view this author
这东西本身就没啥可讨论的,一千个人就有一千个理由。并且很早就讨论过这类话题了,永恒导火索。
http://bbs.keinsci.com/thread-1145-1-1.html

44

帖子

0

威望

3842

eV
积分
3886

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2022-8-1 12:16:16 | 只看该作者 Only view this author
lyj714 发表于 2022-8-1 11:54
这东西本身就没啥可讨论的,一千个人就有一千个理由。并且很早就讨论过这类话题了,永恒导火索。
http://b ...

好咧,感谢指路我去看看

403

帖子

4

威望

2874

eV
积分
3357

Level 5 (御坂)

4#
发表于 Post on 2022-8-1 12:51:04 | 只看该作者 Only view this author
很重要的一个原因是历史遗留问题。开发程序的时候,C++还没有现在的诸多特性,写起来非常不方便。实际上,就算在今天,如果涉及高阶稠密数组,用C++写依然非常麻烦。

C++提供的语法特性太多了,和Java/Python等更“面向对象”的语言比起来,也不是特别完美。导致一些开发人员掉书袋,写一些炫技的复杂程序,可读性很差。一层层模板套起来,哪有FORTRAN直接声明数组简洁?

关于软件重构这件事,VASP开发者曾在介绍VASP6的ppt里倒过苦水,说为什么要收费。因为重构软件只有工程价值而非学术价值,拿不到基金。

评分 Rate

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

查看全部评分 View all ratings

403

帖子

4

威望

2874

eV
积分
3357

Level 5 (御坂)

5#
发表于 Post on 2022-8-1 12:56:13 | 只看该作者 Only view this author
计算软件需要处理的问题,实际上可以大致分为两类。

一类是问题不复杂,但计算量很大。这类程序的数据类型不多,也比较齐整,非常适合分类统一成数组,用FORTRAN或者C写。
另一类是计算量不大,但问题很复杂。为描述模型,就需要大量复杂的数据类型。这种就适合用C++或Python等支持面向对象的语言编写。

举个例子:有100个原子,每个原子有坐标、电荷、质量、磁矩等属性。按FORTRAN和C的写法,就是每种属性统一存在一个大数组里。C++/Python就是定义一个Atom类,再用一个List存储Atom。前者性能好,后者更灵活。

评分 Rate

参与人数
Participants 2
eV +9 收起 理由
Reason
snljty2 + 4 我很赞同
泡泡媛 + 5 赞!

查看全部评分 View all ratings

44

帖子

0

威望

3842

eV
积分
3886

Level 5 (御坂)

6#
 楼主 Author| 发表于 Post on 2022-8-1 19:23:21 | 只看该作者 Only view this author
万里云 发表于 2022-8-1 12:56
计算软件需要处理的问题,实际上可以大致分为两类。

一类是问题不复杂,但计算量很大。这类程序的数据类 ...

回答的很清楚,看来混着用也挺好,难怪我看有些软件是两种语言编写的

5万

帖子

99

威望

5万

eV
积分
112354

管理员

公社社长

7#
发表于 Post on 2022-8-1 21:25:28 | 只看该作者 Only view this author
FORTRAN极其好用
学习难度远远低于C++,语法特性也没那么复杂
FORTRAN的数组特性好用至极
FORTRAN用不着每行末尾写分号,方便得多。而FORTRAN也同时支持通过分号进行连行
FORTRAN对变量的隐式声明极其方便(虽然往往被妖魔化)
FORTRAN的序号从1开始记,至少对我来说明显比从0记要好
FORTRAN里也有指针并且可以方便地使用,却远没有C/C++复杂
等等

另外,很多人完全不了解现代的FORTRAN,且不说FORTRAN 2003及之后提供的丰富的面向对象特征,甚至居然都不知道FORTRAN 90开始就能自定义type(诸如可以定义用于描述原子的type,一个原子的各种属性都可以作为此type下属的变量)。

如今那么多人用FORTRAN,主流量化/第一性原理程序大部分也都是FORTRAN写的(比较知名的Fortran写的计算化学类程序:Gaussian、Multiwfn、GAMESS-US、NWChem、MOPAC、xtb、Molcas、Molpro、Turbomole、Dalton、ADF、NBO、AMBER、CHARMM、CP2K、Quantum-ESPRESSO、VASP、CASTEP、SIESTA、Tinker、CPMD、WIEN2k、Crystal、CFOUR、Abinit、Octopus、Dmol3、Wannier90、Exciting),哪怕包括年代并不远的CP2K、xtb等(二者都充分利用了现代FORTRAN的特性),绝对不仅仅是历史原因,而是在于FORTRAN的设计对于从事科学技术研究的人在开发计算程序方面提供了大量的便利。科学技术工作者大量用Fortran自有其理由。


顺带一提,评论FORTRAN极其忌讳拿老掉牙的、在现在来看相当难用的FORTRAN 77说事。FORTRAN 77是我如论如何也不会去用的。
FORTRAN 77写的程序,像Gaussian那样,若为了可持续发展,用现代FORTRAN重构是有明显意义的。


评分 Rate

参与人数
Participants 2
eV +2 收起 理由
Reason
泡泡媛 + 1 谢谢
zjxitcc + 1 我很赞同,type yyds

查看全部评分 View all ratings

北京科音自然科学研究中心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!

120

帖子

0

威望

2560

eV
积分
2680

Level 5 (御坂)

8#
发表于 Post on 2022-8-21 22:14:10 | 只看该作者 Only view this author
各有优劣,有些只是语法糖。真正的区别不是使用什么语言,而是使用语言的人。

验证一些算法,用matlab、python,后续上超算跑,用fortran、C/C++。

44

帖子

0

威望

3842

eV
积分
3886

Level 5 (御坂)

9#
 楼主 Author| 发表于 Post on 2022-8-28 19:58:32 | 只看该作者 Only view this author
贴个在知乎上看到的有趣的的讨论
对于科学计算,大家对新出来语言Julia怎么看,相比C、Python和Fortran有什么优势发展? - EigenSolver的回答 - 知乎
https://www.zhihu.com/question/391088022/answer/2312952244
我原先是不知道fortran其实是专门为科学计算设计的,我觉得相比底层开发,科学计算还是挺重要的,自然科学的研究领域可能是学科属性的原因,开放性要差得多,更新迭代的速率也要慢得多,有时候接受一些新鲜事物感觉还是有意思的。

194

帖子

0

威望

3694

eV
积分
3888

Level 5 (御坂)

10#
发表于 Post on 2022-9-13 23:04:42 | 只看该作者 Only view this author
Fortran的作者是化学转数学的背景,可能更偏向科学计算来设计,虽然不是说背景是什么就要做什么

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
泡泡媛 + 2 我很赞同

查看全部评分 View all ratings

本版积分规则 Credits rule

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

GMT+8, 2024-11-24 00:33 , Processed in 0.198941 second(s), 22 queries , Gzip On.

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