作为一枚大气人,不会几门编程语言那怎么行呢?
但编程语言众多,学哪个好呢?
只有小孩子才做选择,我全都要。贪心的结果是。。。每一样只会一些皮毛。
记得当时上气候模拟课,老师关于编程说了一句话,我记得特别清楚:“学好一两个,要到削铁如泥的那种。”
所以我现在主要是matlab+NCL, 但因为python的大趋势,python也学了不少,但是因为实战少,操作还是不熟练。
NCL是为WRF-Chem学的,好用,画图好看,好学也不太好学;但NCL也要投入python的怀抱了,诶,我还没来得及学,之后要把PyNGL补上。
IDL是一开始为了GEOS-Chem学的,现在也快弃了,毕竟它亲妈都快不要它了哈哈哈。
闲话不多说,开始吧~
Linux:(这个不是语言了,算计算机基础吧)
概述:一种免费试用和自由传播的类UNIX操作系统。(windows更多是可视化的操作系统,而Linux更多是命令行操作,尽管它现在也有图形化界面)
优点:开源,多用户、多任务、多平台,功能完善、操作稳定。
缺点:除了可视化弱一些,也没啥缺点了吧?
适用情形:跑模式、画图、数据分析等等,就是一个操作系统啊,想干啥都能干。
难点:跑模式或者安装软件环境变量的设置
学习资料:
鸟哥的Linux私房菜
掌握程度:会基本的操作命令
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/
掌握程度:没学过的可以不用学了,一句话,吃力不讨好。血泪教训,学会画一个图的功夫我python一个包都摸清楚了。。。
看看连GEOS-Chem也要抛弃它了。(对不起,感觉我字里行间充满了怨念,为什么博客不能搞的表情包呢,诶,想抒发一下情绪还得去微信里截小黄豆~)
“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
感觉任重而道远呐,大气人真不容易,光是计算机语言这一块儿就要学好久好久了。
第一个阶段小目标,希望毕业前达到自己定下的掌握程度喽!
没几天要返校了,新学期也要加油呀!