我想知道地球科学中最常用的编程语言是什么?我现在已经开始用Python编程了,但是我读了越来越多关于R的书!我想问一下经验丰富的科学家他们使用哪种语言,尤其是为什么?我还想知道在气候和地球科学界对这个问题是否有一个普遍的共识!江南体育网页版
-
3.\ begingroup美元 我不认为这是Stack Exchange的问题,因为它是100%基于意见的江南电子竞技平台。但顺便说一句,我去年就写过这个话题agilescientific.com/blog/2021/4/8/..。 \ endgroup美元- - - - - -马特·霍尔2022年5月24日13:13
-
4\ begingroup美元 我同意这是个有趣的问题,但是Stack Exchange江南电子竞技平台是不是一个讨论网站。 \ endgroup美元- - - - - -马特·霍尔2022年5月24日13:33
-
1\ begingroup美元 @kwinkunks我对地球科学一无所知,我甚至刚刚加入这江南体育网页版个社区。我只是想在这个对话中插话:假设问题是“Python还是汇编程序,我应该使用哪个?”,那么你也会说这是基于个人意见的吗?不,当然不是。没有一个头脑正常的人会建议使用Assembler,因为Python有一堆有用的库来处理这类事情。一个更难但类似的问题是Python vs. r。这个问题可以通过合理的论据来回答,比如容易使用和可用的库。还有:行业标准是什么? \ endgroup美元- - - - - -Opifex2022年5月24日23:12
-
3.\ begingroup美元 我觉得这个问题不是基于个人观点。去掉“常用”,我们就有了一个可能很难回答但有明确答案的问题:哪种编程语言在地球科学中使用最多? \ endgroup美元- - - - - -Joscha Fregin2022年6月6日16:09
-
2\ begingroup美元 我认为这个问题的意图是有效的,但是问这个问题的方式太宽泛和假设了。它应该提到你想通过编程完成的任务范围,并提供你对遇到的程序的观察(例如python和R)。然后问“在地球科学中,哪种编程语言最常用来完成这些任务,为什么”。 \ endgroup美元- - - - - -f.thorpe ♦2022年6月8日0:47
3答案
在我看来,与r相比,python是一种更成熟的全球语言,被更多的学科/用户使用。这可能是有利的,因为示例/教程无处不在,您可以在一个环境中完成许多编程任务。另一方面,R拥有非常强大的用户基础,专门用于数据分析和显示。所以,大多数用户都是科学或数学学科的,知道如何把这些任务做好。具体到地球科学,蟒蛇历史上一直与地理信息系统工作联系在一起,这是一项重要的遗产。python包(例如geopandas)非常容易和快速地处理GIS工作。但是,如果你想用实时数据做一些真正令人讨厌的显示工作,我的大多数同事都会推荐使用R进行实时计算和显示。
Python实现的天气模型也存在PACE天气模式。
我的观点与其他答案略有不同。对于天气预报模型来说,Fortran 2018具有强大的高性能计算链接,是最好的解决方案。
但是数据的后期分析呢?在这里,由于numpy和scipy等库很容易获得(并且经过了良好的测试),python是最好的替代方案。毫无疑问,在R语言世界中也存在这样的替代方案,但我还没有看到气象社区大规模采用这种语言。有一个AMCAMC年度Python大会致力于使用python语言的进步。
最后,从个人的角度来看,处理天气模型代码(有限差分或光谱模型,如GEMPAK或SPHEREPACK)的现有库是用fortran编写的。但是,单个研究人员可以很容易地使用诸如f2py之类的实用程序来结合两种语言的优点,并将这些库合并到他们的工作中。
实际上,库numpy和scipy本身使用C和Cython接口来加速它们的库。
基本上没有达成共识。在某种程度上,这取决于个人偏好,但也取决于应用程序——需要做什么。
Python是一种非常流行的语言,对于小规模的科学应用来说,它是一种很好的语言。Python的主要缺点是它的处理速度。它的计算速度为慢。如果你有一个大的数据集或者需要执行复杂的计算,我不推荐Python。对于概念验证或小型任务来说,Python是一种很好的语言。对于较大的数据集或复杂的计算,需要一种更快的语言。天气预报建模不是使用Python完成的。
在某些情况下仍然使用Fortran。尽管它年代久远,而且大多数人都在抱怨它的编程风格,但它仍然有应用。如果做不到这一点,繁重的计算有时要使用C或c++完成。
编译语言往往比解释语言更快。一种较新的、以科学为导向的语言是Julia,它引起了人们的兴趣。它比Fortran和C稍微慢一点,但是多比Python更快。
R语言最初是作为一个统计分析包编写的,这仍然是它的强项。
-
\ begingroup美元 这是一个简明扼要的回答,但我想补充一点,R的主要缺点是它糟糕的处理依赖关系的方式——尽管有些人认为这是它的优点,但与python、nodejs甚至java相比,它确实是一个麻烦。天气模型到今天仍然主要是Fortran,但Julia有一些特性,使它在地球科学中很有趣,也就是说,你可以直接取代码的导数(arxiv.org/abs/1607.07892) \ endgroup美元- - - - - -呼呼声2022年5月23日20:13
-
\ begingroup美元 我完全同意这一点。当你提到模型时,实体模型是计算密集型的……所以我认为大多数都是用Fortran和C这样的语言写的(它们确实曾经是)。而那些简单的,我使用像matlab这样的程序来简化工作。 \ endgroup美元- - - - - -JeopardyTempest2022年5月23日20:50
-
\ begingroup美元 我强烈建议不要使用matlab。你不能用并行化来做任何严肃的事情。没有任何一家稍微有点技术意识的公司会愿意为这么多的开源替代方案付出这么大的代价。我知道matlab经常在大学里使用,我们进入的依赖matlab的新员工也是那些有巨大知识差距的人,他们需要付出很多努力来最小化。 \ endgroup美元- - - - - -呼呼声2022年5月24日10:29
-
7\ begingroup美元 “Python很慢”,恕我直言,是一种相当肤浅的理解。Python对于许多大型的、计算密集型的任务来说显然是很好的。例如,它在计算地球物理和天体物理学中被广泛应用于巨大的数据集。代码的编写和调试比Fortran或C语言更快,此外,数值方面的东西是通过LAPACK, LINPACK等在Fortran中实现的,就像在MATLAB中一样,当然还有大多数Fortran程序。添加Numba, Jax, Dask和所有的CuPy的东西,和本地CPython的速度只是一个巨大的没有问题。 \ endgroup美元- - - - - -马特·霍尔2022年5月24日16:24
-
\ begingroup美元 @Whir我当然不是建议用matlab…20年前,像Mathematica和Matlab这样闪亮的新程序是一些研究人员涉猎的东西。它仍然显示了人们使用许多程序的更广泛的想法,对于我当时的专业教授来说,Matlab是关键,它仍然在其他领域有它的用途,听起来像。但我支持更开放的软件。 \ endgroup美元- - - - - -JeopardyTempest2022年5月24日20:03