| 查看: 2342 | 回复: 4 | |||
liqizuiyang木虫 (著名写手)
|
[交流]
有关编程语言的选择已有4人参与
|
刚打完一大段回复结果被告知含有敏感词,瞬间被吞,连个修改的机会都不改。木虫的系统还需要改善啊。有关于与solarman的讨论,再加上数年来混迹于各语言相关论坛,对科研人员学习哪种语言更好有些感慨,写在此处,还望众虫友多指点。 在长篇大论之前,先罗列下基本出发点。这就好比构建一套数学理论,先要阐述定义和公理。 一、人精力有限,分配到细枝末节上的越多,拿来做正事的就越少; 二、凡是能犯错误的地方,肯定会有人犯错误(好象是《编程匠艺》里的一句话); 整个科研流程中涉及计算的环节主要有搭建模型,编写输入文件,提交任务和数据处理三步。 现在的建模软件,比如MS导出的格式与计算用程序输入文件的格式,比如VASP的POSCAR,之间存在一些差别,也就是说要转换之后才能用。像VASP还有VESTA可用,而其它的程序就要自己手动转换,至少要手动提取原子坐标,有时还要计算原胞基矢。这些事由人来做很是劳心费力,并且重复做一件事很容易让人厌烦。写脚本来完成这项任务是一个不错的选择。这项任务的特点是计算量微乎其微,但是问题比较刁钻,逻辑结构很复杂,涉及字符串、整数、浮点数等多种数据类型。这种情况下适合用python/perl一类的脚本程序。计算量很小,因此不需要考虑执行速度。又因为文件长度因文件而异,需要灵活处理。同时需要内置对字符串强大支持。用C之类的编译型语言不合适,首先变量必须先声明,而忘记声明这种事时常发生,因此处理"undefined identifier"这样的低级错误就会浪费不少精力。而且每个文件长度不固定,用python一个readlines()函数就能搞定任务,用C就要更多的代码,可能还会用到指针这种危险的东西。 编写输入文件,一般以某个模板为基础,再根据计算需求作相应修改。相信各位做过大量计算的虫友都有自己的一套模板。实际操作过程一般是先新建文件夹,再切换到模板所在文件夹,复制,粘贴,再用UltraEdit之类的文本编辑器修改。用TotalCommander这样的软件会提高一部分效率,但直接用类Unix系统效率更高,可以在同一行命令上完成需要点好多下鼠标切换好多个窗口才能完成的任务。如果需要经常重复某项操作,比如复制某个目录下面某几个文件,还可以写成函数或这脚本。因此这一步操作不需要编程,当然会shell script更好 提交任务这一环节就不细说了,shell script的主场。 数据处理是最需要编程的地方,归纳起来,大概有这么几种: 一、待处理文件有固定的格式,计算量很大,比如读取不同的CHGCAR计算差分电荷密度,或者求静电势在某个晶面上的均值。因为计算量比较大,因此首选编译型语言,又因为这种数据多以三维数组形式给出,且数组大小与动能截断、晶格常数有关,因此需要用到在运行时才能知道其大小的数组。如果问题更复杂,可能需要一个输入文件指定输入参数。这种情况下Fortran是首选,因为天生支持动态数组和有名参数列表,会节省很多宝贵的时间。如果C++ STL学得好,也可以用C++。更进一步,如果指针玩得好,可以保证无内存泄漏,同时对字符串处理函数很熟,可以从输入文件中灵活抽取不同类型变量的值,也可以用C。 二、同上一种,计算量较小,比如结合OUTCAR和EIGENVAL将能带数据转换成更易于作图的格式。这种任务复杂程度比上一种高,因此需要更为灵活的语言。同时计算量相对较小,效率已经不是首要因素。这种情况下最好用python/perl脚本,也可以用编译型语言。 三、提取某个物理量的值,把从多少行到多少行数据的某几列相加或者相减,对某几行排序等。这种情况下最好用awk, grep, sort等工具和管道,经常使用的复杂命令可以写成shell script。UNIX家族发展了几十年,很多实际需求前人早已经想到了。实在找不到相应的工具,可以用python/perl编写。 综上所述,个人认为: 1. shell script必学; 2. python/perl推荐学; 3. Fortran用时再学; 以上针对一般人。 大牛即使用汇编也能随心所欲,完成各种任务。 |
» 猜你喜欢
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有7人回复
申请2026年博士
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有5人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有6人回复
2025冷门绝学什么时候出结果
已经有7人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有7人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
做研究需要学编程吗。学什么语言好
已经有20人回复
做研究需要学编程吗。学什么语言好
已经有17人回复
关于C++找工作
已经有8人回复
科学计算首选语言是C++
已经有20人回复
求助:并行计算的首选语言是C,C++还是Fortran?
已经有11人回复
求解 自学入门C语言,该选用什么资料?
已经有30人回复
编程入门应从那种语言开始学起
已经有34人回复
编程语言的选择?
已经有108人回复
求助数据筛选的问题
已经有31人回复
选择某一范围内强度最大的数赋值,怎么用VB编程啊,谢谢
已经有10人回复
大家看看,我该如何投稿到哪个期刊?《从金庸的武学视角谈计算机编程思维的培养》
已经有10人回复
新手入门,如何理解计算机编程
已经有8人回复
关于c语言的一个小问题 坐等回复啊 急啊 是关于建立数组的
已经有9人回复
一个从来没有编程经验的人,你们觉得VB作为入门语言怎么样?
已经有23人回复
求助大家一道2010百度实习笔试题(有关数据库)
已经有12人回复
【求助】有关“SW0PC_FXGP编程软件”的介绍
已经有1人回复
【讨论】大家是怎么提高自己的编程能力的?
已经有22人回复
2楼2014-10-20 14:37:54
shi398914439
木虫 (正式写手)
- 应助: 15 (小学生)
- 金币: 2290.3
- 散金: 100
- 红花: 8
- 帖子: 666
- 在线: 228.3小时
- 虫号: 2335618
- 注册: 2013-03-10
- 性别: GG
- 专业: 金属材料的制备科学与跨学
3楼2014-10-20 18:44:56
stractor
金虫 (著名写手)
- 1ST强帖: 6
- 应助: 91 (初中生)
- 金币: 1487.6
- 散金: 666
- 红花: 30
- 沙发: 1
- 帖子: 2224
- 在线: 426.8小时
- 虫号: 394087
- 注册: 2007-06-06
- 专业: 半导体材料
4楼2014-10-21 11:53:29
5楼2016-03-06 17:10:09













刚打完一大段回复结果被告知含有敏感词,瞬间被吞,连个修改的机会都不改。木虫的系统还需要改善啊。
大牛即使用汇编也能随心所欲,完成各种任务。
回复此楼
初级菜鸟,顶礼膜拜