计算机程序 = 数据 + 操作
计算机的世界只有 2 种东西:数据和操作。 数据有很多表现形式,比如数字、文字、图像、视频、音频等。 操作就是对数据的处理,比如复制、粘贴、下载、上传等。
编程的本质就是用编程语言(代码)去描述数据和操作,然后交给计算机执行。
你的第 1 行 JavaScipt 代码
现在按下 F12
打开浏览器的开发者工具(Devtools),切换到 Console
(控制台)面板, 试着输入 alert('今天中午吃啥')
并按回车执行。
数据类型
有些数据类型是跨计算机语言的,即几乎每种语言都有这种数据。
- 布尔值:表示是或否。
- 字符串:表示文本数据。如姓名、自我介绍等。
- 数字:整数、不同精度的浮点数(小数)。
- 序列:表示一系列数据。如一本书里的所有章节标题,是字符串序列。
- 键值对:表示两种数据的映射关系。 如一本书里的所有章节标题与其页码的对应关系,是以字符串为键、数字为值的键值对。
- 函数:表示对数据的操作,操作本身也能作为一种数据。
执行代码
计算机只读得懂机器语言(二进制语言), 所以代码必须得先转换为机器指令才能交给计算机执行。除非你打算用二进制开发程序。
把代码转换为机器指令的程序称为编译器(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
正则表达式功能强大,但不建议滥用,由于它的低可读性和潜在性能问题。