Kodokon kodokon.com

为什么代码只不过是文本

发现每个程序都只是一个文本文件,以及这为什么会改变你的工作方式。

6 分钟 · 3 题

在 Kodokon 中打开本课

这里有个几乎让所有人都意外的真相:代码只不过是文本。不是什么秘密格式,也不是什么神秘的二进制文件。一个网站、一个手机应用、一款电子游戏:这一切都始于一些你可以用记事本打开、一个字符一个字符读下去的文件。里面没有任何隐藏的东西,而这恰恰是编程可以被学会的原因。

不过有一点要注意:我们说的是纯文本,不是富文本。当你在 Word、LibreOffice 或 Google Docs 里写东西时,文件里装的远不止你敲下的那些字母:字体、字号、颜色、页边距,全都以看不见的格式信息存了进去。而一个代码文件包含那些字符,按顺序排列,没有一丝一毫的修饰。你之后在编辑器里看到的颜色并不在文件里:那是编辑器为了帮你,画在屏幕上的。

TEXT
文件 index.html 的真实内容,一个字符一个字符地看:

<h1>Hello</h1>
<p>My first page.</p>

没有别的了。没有字体,没有颜色,没有页边距。
一个代码文件只包含你敲下的那些字符。

扩展名呢,就是点后面那个小小的后缀:.txt.html.py.js?它无非是贴在盒子上的一张标签。它丝毫不改变内容。它的作用是告诉各种程序、也告诉你自己,这个文件里应该装着什么。把 photo.jpg 改名成 photo.txt,并不会把图片变成文本:内容原封不动,只是标签在撒谎。反过来也一样,同一段文本存成 page.txt 还是 page.html 都是完全相同的文件,但只有在后一种情况下,你的浏览器才会把它当成网页显示出来。

这一切还有另一个后果:永远不要在文字处理软件里写代码。Word 和 Google Docs 会自动“纠正”你敲下的内容,尤其会把你的直引号换成漂亮的弯引号。对你来说,这个差别根本看不出来。对机器来说,那是两个完全不同的字符,你的程序会直接拒绝运行。

TEXT
机器期待的          "hello"      直引号
Word 写出来的       “hello”      弯的印刷体引号
另一个常见陷阱      'hello'  ->  ' 变成了弯撇号
两个看起来很像的字符,并不是同一个字符。

知识检测

确认你已牢记本课的重点内容。

  1. 一个代码文件里到底装着什么?
    • 只有你敲下的那些字符,没有任何格式信息
    • 那些字符,外加它们显示时的颜色
    • 一种没有专门软件就读不了的压缩格式
  2. .html 这样的文件扩展名有什么用?
    • 告诉你这个文件里应该装着什么
    • 压缩文件的内容
    • 保护文件不被修改
    • 改变文件的内容
  3. 为什么不该在 Word 里写代码?
    • 它会自动替换某些字符,比如引号
    • 它没法保存文件
    • 它限制了允许的行数