为什么有些天文从业者也需要写代码?

DanielCasio


天文学是个实实在在的,理论、观测一体的学科。现代天文学家,已经很少有只从事理论工作的工作的了。

大概在2001年,我曾与到访的一位在日本专门从事超新星遗迹理论工作的学者交流,在那个时候,因为理论推导的繁复,他们也开始用mathmatica来校验公式推导。这也就意味着,理论工作中曾经非常人工化、技巧化的一个分支,公式推导,都开始自动解决了。这已经是17年前的事情了。

通常来说,天文学家是必须和数据打交道的。我举一个很简单的例子。我们拍一张星星的照片,大概5秒钟。要去把照片上星星的星等测出来。这个工作,大致的步骤是什么呢?

我们拍星星,用的是CCD,首先,要在拍摄在同样温度下,不曝光的CCD,我们称为暗场,大概要拍20多张,做叠加,做平均。还要把均匀光源的照片,拍上20多张,做叠加,做平均,然后,要减掉暗场,除以归一化平场。整个过程,用到的数学,只有四则运算。但是因为是图像的操作,为了方便,就自己编程。做完这些准备工作后,再开始编程序来求星星的亮度。为什么?因为星星太多啊,必须用算法,用程序来做啊。

这只是一个很简单的例子。天文观测,硬件供应商给的,都是最直接的硬件。而天文学家,是不希望硬件供应商自行写太多程序,来处理数据。因为,中间如果算法不对,查找起来反而麻烦。

所以,天文数据往往有两类,一类是完全没有处理的原始数据,不同的天文学家按照要求去处理。这需要编程。另一类是给出完整处理步骤,并给出源程序,最后提供做了初步处理的干净数据。而干净数据的进一步使用,大多数情况下,还是需要天文学家自己编程。


令狐迦基


代码多少还是要写的,要不怎么叫科研民工。

主要原因有两点,一是现代天文学是定量化的科学,一颗恒星有多远、有多亮、有多大、有多老,含有哪些元素各有多少,都是需要用数字来说明的,而这些数字是需要计算出来的,计算需要计算机,需要代码。

二是因为天文学比较小众,很多程序没有现成的可以下载,就只能自己写呗。

现在一些热门app,比方说抖音啦今日头条啦,可能在中国就有好亿人在用,但是天文上的专业望远镜,可能全世界用的人只有几十几百几千(因为全球天文学工作者加起来也没多少人)。虽然望远镜所在的天文台一般会写一些基本的数据处理程序来给大家用,但是天文台人手也有限,不可能面面俱到。

这样一来,要想把数据变成科研成果就需要自己把缺少的程序补全,有时候需要看懂并改进已有的代码,有时候需要重新写一个符合自己要求的程序。

而且科研讲究创新,新的数据、新的方法往往需要新的程序,这种新程序显然没法去应用商店下载现成的,所以科研工作者就自己动手写。

好在大学天文系一般都有几门计算机相关课程,所以天文专业学生写代码的能力还是可以的,有同学开玩笑地说自己是码农,也有同学毕业之后就转行去做IT了。

此外,天文台等机构会招计算机专业的学生读研究生或者在工作,天文台也有大型计算机来进行复杂的计算(比如宇宙的演化),天文台的童鞋们也会和IT公司的人进行交流,提升自己写代码的能力。


乔小海


这问题应该严谨点,换成"为什么越来越多的天文从业者需要写代码?"

通俗地说,是观测星星,研究宇宙……需要它。


为什么说越来越多的天文从业者需要写代码?实际上,不仅天文从业者如此,几乎各行各业的工作者都如此,尤其是与工科理科相关的,"越来越多"体现的是(科学)发展越来越需要技术。

最近这几年,AI的技术发展达到了新的高潮,学编程,写代码都纳入国家教育发展体系里了。小学生学Python,高中生考Python,大学生感觉没啥关系的专业也学简单的编程……计算机二级考试更是火的不得了,现在还是自愿,过几年我估计都得像英语四六级一样强制了!这在以前的中国哪有的事!


天文学是一门 研究宇宙以及宇宙里的各种天体的发展和结构的科学。它的每一次的大发展几乎都伴随着技术的重大革新。当然了,它的每一次突破也会反作用于技术,造福人类,这也是研究感觉和我们没啥关系的宇宙的一个重大意义。

从伽利略的望远镜到今天形式各异,功能齐全的各种探测器,从观察探测到模拟研究,从内太阳系到太阳系外层空间……哪一样少了机器语言,汇编,和各式各样的高级语言的加持能做到的?没有,所有和计算机有关的技术都无法和代码撇开关系。

在天文行业,有些你的需要似乎是可以通过像很多企业一样找个开发单位,给钱让人家帮你完成。确实,很多无法自力开发的单位就这样,这也是庞大的程序猿群体存在的需要。但实际上这是有很多麻烦的,对于有些行业更是如此。

别把程序猿像的神通广大,就说天文学这一门科学,很多你需要的技术会掺杂学科的知识,思维等等。你给程序猿项目难道还要让他精通天文?或者某些天文思维?别吧,他们很累的,他们也不愿意这样做。



以上的说法结合其他的限制,不是自己懂编程,会写代码来的更实在吗?当然了,天文从业者也不需要有着程序猿那种相对全的能力才能写出自己的需要,反正你也不是去接各种各行各业的需要需求项目,但懂得更多也不是坏事,毕竟什么的都是术业有专攻。


通俗科普


因为天文学是一门基于观测的科学,而我们现在的天文观测,早已不是简单的肉眼观测,而是要利用各个波段的电磁波(现在甚至还包括了引力波)来进行天文观测。在这个过程中,涉及到各种天文数据的观测、获取、处理、分析、数据可视化等等,这些过程中都离不开编程。即使我们不自己亲自进行观测,哪怕只是利用目前国际上常用的恒星、星系天文学数据库,或者读取详细的星表,这些数据的读取和分析也是需要一定的编程基础的。

如果希望从事天体力学的研究,研究天体的运动,那么在研究中常常需要用到数值求解微分方程的方法,这样的求解过程也离不开编程。如果希望从事天体物理学的研究,那么有可能需要进行恒星、星系等的模拟,这些模拟同样也离不开计算机,例如我们熟悉的引力波探测,其中两个黑洞合并的模式就是通过计算模拟得到、并且跟观测结果进行对照的。


分享到:


相關文章: