简介#

  • 本节作者: 姚家园(作者)、田冬冬(作者)

  • 最近更新日期: 2022-03-12

  • 预计阅读时间: 5 分钟


为什么要学编程?#

几乎所有高校在大一都开设了类似《C 语言程序设计》这门课,想必你对 C 语言以及 编程都已经有了一些了解。编程本质上就是人将某个问题的解决思路写成 计算机能够读懂的指令,计算机则执行指令帮助人解决问题。

地震学是一门基于观测数据的科学。地震学科研中需要对大量观测数据进行处理和分析, 并作一些理论计算,因而需要通过编程让计算机辅助完成数据处理或科学计算。

编程语言有哪些?#

世界上存在的编程语言有几百个,其中用的比较多的大概有十几个。 编程语言根据执行方式的差异大致可以分为两大类:

编译型语言

编译型语言是指需要使用特定的编译器将源代码编译成在当前系统上可执行的 二进制文件,再通过运行该二进制文件以执行代码。 C、C++、Fortran 和 Java 等是常见的编译型语言。

解释型语言

解释型语言是指需要使用特定的解释器读取源代码并立即执行代码。 Python 和 Matlab 等是常见的解释型语言。

一般将解释型语言编写的源代码称为脚本(script),所以解释型语言也称为脚本语言。 实际上,脚本就是包含一系列指令的文本文件。解释器读取这个文件, 立即依次执行脚本里的所有命令、函数以及表达式等。

两种语言都有各自的优缺点。一般而言,编译型语言编写的代码运行速度更快,但需要 花费更多的时间编写代码,还需要先编译才能使用,因而需要掌握编译方法。解释型语言 更易于编写,开源的软件库和模块更多,不需要编译即可执行,但一般代码执行速度慢。

我该学习那种编程语言?#

地震学科研工作者需至少掌握一门脚本语言,同时推荐学习一门编译型语言。对于脚本语言, 推荐使用目前在地震学领域最流行的 Python 语言,其官方模块、第三方模块和软件包众多, 基本可以满足日常科研工作需求。而使用哪种编译型语言并不重要,熟悉掌握一门编译型语言, 其他编译型语言也就可以很快地学会和上手了。

日常的数据处理和简单的科学计算可以使用脚本语言快速实现,以便迅速上手和开展研究。如果需要 更高的计算效率,可以使用编译型语言编写代码。因此,完成一个项目往往是同时使用这两类编程语言 来编写代码。有时候还可以用脚本语言快速、便捷地实现一个任务的一部分,然后调用使用编译型语言 书写的需求计算效率的另外一部分的代码来加速计算。

需要注意的是,在本教程中我们将 Linux 和 macOS 系统的 Shell 也归为脚本语言。严格说来, Shell 其实本身只是一个空壳,具有最基本的条件判断和循环功能。借助 Linux 和 macOS 系统的 命令行工具,如 awksortgrep,其可以用来做日常的数据处理、 字符串处理等。Shell 脚本一般仅适合用几行就可以搞定的简单程序,更复杂的情况建议使用其他 脚本语言来完成。我们以一种常见的 Shell 来讲述其基本语法和用途,即 Bash,其他常见的 Shell 还有 Zsh、csh 等。

日常编程除了直接编写代码,往往还需要写 README 文件和记一些笔记,有时还要写代码的参考文档。 因此,推荐学习一种标记语言以便更简洁、更高效地完成上述事务。推荐学习 Markdown 标记语言。