核心概念
编译型 vs 解释型
你写的代码是给人看的,但机器只会执行它自己那套底层指令——所以中间必须有人来「翻译」。翻译大体上有两种方式,而这个区别会影响你如何构建、发布和调试程序。
编译型语言(比如 C 或 Rust)会在程序运行之前,一次性把整份代码全部翻译成一个可以独立运行的机器文件。这是单独的一道「构建(build)」工序——启动前要等一会儿,但成品跑起来往往很快,而且很多错误在编译时就被揪出来了。
解释型语言(比如 Python 或 JavaScript)则是一边运行一边翻译,逐行就地执行。它没有构建这道工序,所以你改完就能立刻重跑——很适合随手折腾——但代价是:错误往往要等真正执行到那一行时才冒出来。
实际上两者的界线挺模糊:许多现代语言会先编译成一种中间的「字节码(bytecode)」,再配上各种巧妙的技巧。但这个心智模型依然管用——是「先把全部翻译完」,还是「走到哪翻到哪」。
# Compiled: build once, then run the binary $ rustc hello.rs && ./hello # Interpreted: no build step, just run the source $ python hello.py
编译型语言先构建、再运行;解释型语言直接运行源代码。
一个粗略的经验法则:编译型用启动时间换运行速度,解释型用运行速度换即时反馈。
又称
另见