其他干货——大气人计算机必备技能——不同编程语言比较(Matlab, python, fortran, NCL, IDL)

作为一枚大气人,不会几门编程语言那怎么行呢?

但编程语言众多,学哪个好呢?

只有小孩子才做选择,我全都要。贪心的结果是。。。每一样只会一些皮毛。

记得当时上气候模拟课,老师关于编程说了一句话,我记得特别清楚:“学好一两个,要到削铁如泥的那种。”

所以我现在主要是matlab+NCL, 但因为python的大趋势,python也学了不少,但是因为实战少,操作还是不熟练。

NCL是为WRF-Chem学的,好用,画图好看,好学也不太好学;但NCL也要投入python的怀抱了,诶,我还没来得及学,之后要把PyNGL补上。

IDL是一开始为了GEOS-Chem学的,现在也快弃了,毕竟它亲妈都快不要它了哈哈哈。

闲话不多说,开始吧~


Linux:(这个不是语言了,算计算机基础吧)

概述:一种免费试用和自由传播的类UNIX操作系统。(windows更多是可视化的操作系统,而Linux更多是命令行操作,尽管它现在也有图形化界面)

优点:开源,多用户、多任务、多平台,功能完善、操作稳定。

缺点:除了可视化弱一些,也没啥缺点了吧?

适用情形:跑模式、画图、数据分析等等,就是一个操作系统啊,想干啥都能干。

难点:跑模式或者安装软件环境变量的设置

学习资料:

鸟哥的Linux私房菜

https://www.linuxprobe.com/

掌握程度:会基本的操作命令

Linux常用命令https://blog.csdn.net/qq_27984679/article/details/107712916

 

FORTRAN :

概述:是Formula Translation的缩写,译为公式翻译,从名字就能看出它是为公式翻译而生的。尽享公式之美哈哈哈。

优点:计算高效,运行速度快呀,适合大规模科学计算。

缺点:需要编译,可视化弱一些。如果打草稿不是很直观。它更适合做成一个大项目。

适用情形:大气模式的内核框架, WRF-Chem, GEOS-Chem, CESM的动力框架、微物理过程全是Fortran,这也是为什么模式需要编译运行了。

虽然现在很多人猛推Julia,但是我觉得在可见的未来,在大气领域,fortran不会被替代的,毕竟要把那么多模式内核全部重写,谁愿意来干呢?而且现在也还是很好用的嘛。

一个改进例子:CESM2是一个很好的多语言结合的例子,结合了xml、fortran、python、perl……fortran的核心是不变的。以后有空再来说说这个。

参考资料:彭国伦,Fortran95程序设计

掌握程度:如果不需要去动模式的内核框架的话,不一定要会写,但一定要会读;如果想当模式的developer,那必须会读会写呀!

 

Python

概述:Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。数据结构高效,面向对象编程。

优点:高级语言,人称胶水语言,有大量第三方库,功能强大,容易学习。

缺点:计算速度貌似比较慢,线程不能利用多CPU(其他我也不知道了,当然一般优点多缺点也多。。。就好比事儿干的多的人犯错的次数也自然多了)

适用情形:好像啥都能干,如果要做机器学习相关的研究推荐使用这个,毕竟机器学习三大框架Caffe, Tensorflow, Keras都是基于python的。入门级直接用scikit-learn工具包就很好,http://scikit-learn.org/

参考资料:太多辽,自己喜欢啥搜啥吧

掌握程度:会读也会写,熟练掌握基本库Numpy(数值计算),SciPy (科学计算),Pandas(数据分析), Matplotlib(科学绘图)

更多python工具包汇总:https://blog.csdn.net/zhuzemin45/article/details/79889061

 

Matlab

概述:是Matrix Laboratory的缩写,译为矩阵实验室 ;本质是一个线性代数包,外加好多好多扩展工具箱。

优点:简单直观,易学,适合科学计算,demo演示,其他编程语言通常一次只能处理一个数字,MATLAB则是对整个矩阵和数组进行运算处理。

缺点:商业软件,需要付费使用;做循环处理速度慢

适用情形:适用于矩阵运算,数据处理,数学建模,仿真

参考资料:太多辽,不说啦。哪里不懂?百度一下; 命令不会?doc一下; 参数不会?help一下。O啦!

掌握程度:会读也会写,熟练掌握基本函数和m_map,毕竟大气人几乎天天处理数据画图哈哈哈。

 

NCL

概述:The NCAR Command Language,来自NCAR,它就是为大气人而生的!为气象数据处理和可视化量身打造。

优点:地理信息数据处理方便,画图好看,出图质量高。我现在基本是matlab打草稿,ncl精细处理画图。

缺点:画图的设置比较复杂,但是复杂才能精致呀!为了美观我认了!

适用情形:模式数据处理,地理信息数据处理;毕竟是大气人搞的软件,确实顺手呐!

参考资料:官网妥妥够用了,http://www.ncl.ucar.edu/,真心喜欢NCAR做的这个网站,实用细致好上手。

然而,NCL目前停止更新了,也要投入python的怀抱了,诶,之后也还是要去学PyNGL:

http://www.ncl.ucar.edu/Applications/NCL_to_Python/

https://geocat-examples.readthedocs.io/en/latest/gallery/index.html

掌握程度:会读也会写,熟练掌握基本函数和画图语句。新手就请直接奔向PyNGL的怀抱吧。

 

IDL

概述:Interactive Data Language,交互式数据语言

优点:分析GEOS-Chem模式结果挺方便

缺点:参考资料太少了,想当时我学的时候,想搜个命令百度半天也查不到,要不是因为gamap还有一些古早代码,可能更早就弃了。。。

适用情形:GEOS-Chem模式数据处理

参考资料:想学请人教吧,百度老费劲了。。。看到相关网页点进去经常就是“Not found”, "当前无法使用此页面"……

也就gamap还可以用用,http://acmg.seas.harvard.edu/gamap/

http://wiki.seas.harvard.edu/geos-chem/index.php/Other_tools_for_visualizing_and_analyzing_GEOS-Chem_output#GAMAP_and_other_IDL-based_software_tools

掌握程度:没学过的可以不用学了,一句话,吃力不讨好。血泪教训,学会画一个图的功夫我python一个包都摸清楚了。。。

看看连GEOS-Chem也要抛弃它了。(对不起,感觉我字里行间充满了怨念,为什么博客不能搞的表情包呢,诶,想抒发一下情绪还得去微信里截小黄豆~)

http://wiki.seas.harvard.edu/geos-chem/index.php/Other_tools_for_visualizing_and_analyzing_GEOS-Chem_output#Visualization_tools

“NOTE: IDL, which is proprietary software, can be very expensive. For this reason, the GEOS-Chem Support Team and other GEOS-Chem developers are currently developing several open-source software packages (mostly based on Python) for GEOS-Chem data analysis and visualization. Please see our Python tools for use with GEOS-Chem wiki page.”

 

Shell

概述:脚本语言,将各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。

优点:语法结构简单,容易上手

缺点:效率不高,I/O性能不高

适用情形:主要用于Linux下的批处理,流程化的系统管理工作 

参考资料:https://www.runoob.com/linux/linux-shell-basic-operators.html

掌握程度:会读,会写简单的脚本

 

孩儿们滴百度百科,读读也不错:

1. MATLAB-百度百科: https://baike.baidu.com/item/MATLAB/263035?fr=aladdin

2. Python(计算机编程语言)-百度百科:https://baike.baidu.com/item/Python/407313?fr=aladdin

3. FORTRAN语言-百度百科:https://baike.baidu.com/item/FORTRAN%E8%AF%AD%E8%A8%80/295590?fr=aladdin

4. ncl-百度百科:https://baike.baidu.com/item/ncl/7555401?fr=aladdin

5. IDL(交互式数据语言Interactive Data Language) -百度百科:https://baike.baidu.com/item/IDL/8026653?fr=aladdin

6. shell脚本-百度百科:https://baike.baidu.com/item/Shell%E8%84%9A%E6%9C%AC/572265?fr=aladdin

 


感觉任重而道远呐,大气人真不容易,光是计算机语言这一块儿就要学好久好久了。

第一个阶段小目标,希望毕业前达到自己定下的掌握程度喽!

没几天要返校了,新学期也要加油呀!

 

 

 

 

  • 18
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J同学的大气笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值