Skip to content

计算机程序 = 数据 + 操作

计算机的世界只有 2 种东西:数据和操作。 数据有很多表现形式,比如数字、文字、图像、视频、音频等。 操作就是对数据的处理,比如复制、粘贴、下载、上传等。

编程的本质就是用编程语言(代码)去描述数据和操作,然后交给计算机执行。

你的第 1 行 JavaScipt 代码

现在按下 F12 打开浏览器的开发者工具(Devtools),切换到 Console(控制台)面板, 试着输入 alert('今天中午吃啥') 并按回车执行。

数据类型

有些数据类型是跨计算机语言的,即几乎每种语言都有这种数据。

  1. 布尔值:表示是或否。
  2. 字符串:表示文本数据。如姓名、自我介绍等。
  3. 数字:整数、不同精度的浮点数(小数)。
  4. 序列:表示一系列数据。如一本书里的所有章节标题,是字符串序列。
  5. 键值对:表示两种数据的映射关系。 如一本书里的所有章节标题与其页码的对应关系,是以字符串为键、数字为值的键值对。
  6. 函数:表示对数据的操作,操作本身也能作为一种数据。

执行代码

计算机只读得懂机器语言(二进制语言), 所以代码必须得先转换为机器指令才能交给计算机执行。除非你打算用二进制开发程序。

把代码转换为机器指令的程序称为编译器(Compiler)和解释器(Interpreter), 比如 Python 的 CPython 解释器、C 的 gcc 编译器。 当然还有混合体,比如 JavaScript 的 V8 引擎。 同一种语言也可以有多种转换工具, 比如 Python 解释器就有 CPython、Jython、IronPython、PyPy 等。

但在实际开发中,“编译”这个词,不一定只表示把代码转换为机器指令,也有可能转换为中间产物或其他语言。 “编译”表示的更多是一种语法层面的转换操作,类似于自然语言的“翻译”。

我们可以把编译过程看作对数据(代码)的操作(转换为机器指令),其中数据的载体就是代码文件。 代码文件本身并没有什么特别的地方,它们和 .txt 文件没有本质区别,都是纯文本文件。 所以即使把 Python 代码写到 .txt 文件中,Python 解释器依然可以正确执行文件。

你的第 1 行 HTML 语句

新建一个文本文件,在其中写入 <h1>今天中午吃食堂</h1> 并保存, 把文件扩展名改为 .html 后用浏览器打开

当你用浏览器打开本地 .html 文件时, 浏览器会把其中的内容(HTML 标记语言)转换为机器指令,然后交给计算机执行。 我们看到的所有网页都是基于这个过程形成的, 在浏览器地址栏输入网址后,浏览器会先从这个网址下载 .html 文件,再进行转换操作。

语义化版本(Semantic Versioning)

语义化版本是一种命名约定,其规定版本号由三位数字组成,分别表示主版本号、次版本号、修订号。

  • 主版本号:当你做了不兼容的 API 修改,
  • 次版本号:当你做了向下兼容的功能性新增,
  • 修订号:当你做了向下兼容的 bug 修复。

正则表达式(Regular Expression)

正则表达式是一种用来匹配字符串的模式,我们可以使用它从复杂的文本数据中提取我们想要的部分。

参考资料: 游戏式学习在线尝试

WARNING

正则表达式功能强大,但不建议滥用,由于它的低可读性和潜在性能问题。