自用计算机词典(前端方向)

自用计算机词典(前端方向)

💡 原文中文,约4000字,阅读约需10分钟。
📝

内容提要

本文是前端方向计算机词典,解释运行时、JavaScript引擎、浏览器引擎、编译器、解释器、JIT、AOT、字节码、机器码等概念。运行时为程序提供运行环境,管理内存、栈堆和垃圾回收;V8、SpiderMonkey等是JS引擎,WebKit、Blink、Gecko是浏览器引擎。编译器将高级语言转为机器码,解释器边转换边执行,JIT在运行时编译以提升速度。

🔎

延伸解读

运行时环境与引擎:概念区分

文章指出运行时环境为程序提供运行基础,管理内存、栈堆和垃圾回收,并包含与操作系统交互等机制。JavaScript引擎如V8只专注于执行JavaScript,不理解DOM等浏览器概念;而浏览器引擎如WebKit、Blink、Gecko则统合渲染引擎和JavaScript引擎。理解这一区分有助于前端开发者明确问题归属:是语言执行层面的问题,还是浏览器渲染或API层面的问题。

编译与解释:策略与开销

文章用口译和笔译类比解释器与编译器:编译器将源代码整体转换为机器码或字节码,解释器则边转换边执行。JIT在运行时编译,结合两者,虽带来overhead,但通过编译和重编译提升速度,V8会缓存多次使用的代码编译结果。AOT则在执行前提前编译。这些策略影响程序启动时间和运行效率,开发者可据此理解不同语言或引擎的性能特征。

字节码与机器码:执行层次

字节码和机器码都是二进制形式,但CPU只能直接执行机器码,字节码需由虚拟机解释或即时编译。文章举例Java class文件和JavaScript字节码。机器码包含store、load、jump等指令,是计算机母语。汇编语言是机器码的人类可读版本,由汇编器转换为机器码。这解释了为什么有些语言需要虚拟机,而有些可直接运行。

❓

Q&A

运行时环境是什么?它负责哪些事情?

运行时环境(Runtime Environment)为程序提供运行环境,负责管理应用内存、变量访问、参数传递、与操作系统交互等,通常还负责设置和管理栈与堆,并可能包含垃圾回收、线程等动态特性。

JavaScript引擎和浏览器引擎有什么区别?

JavaScript引擎(如V8、SpiderMonkey)只专注于JavaScript,不理解DOM相关概念;浏览器引擎(如WebKit、Blink、Gecko)包含渲染引擎,并统合JavaScript引擎。

JIT编译是什么?它和AOT、解释器有什么关系?

JIT(Just-in-time compilation)是AOT和解释器的组合,在运行时将源代码或字节码编译成机器码并立即运行。JIT会造成overhead,但编译和重编译带来的速度提升可以弥补。

编译器(Compiler)和解释器(Interpreter)有什么区别?

编译器将源代码转换为机器码或字节码,等待执行;解释器则边转换边执行,通常内部也有编译器,但流程连贯,生成代码后立即执行。

字节码和机器码有什么不同?

字节码和机器码都是0和1,但CPU看不懂字节码,只有虚拟机才能理解;机器码是CPU的母语,可以直接运行每一条指令,如store、load、jump等。

V8引擎的编译管道是怎样的?

2017年5月15日,V8团队发布Launching Ignition and TurboFan,宣布新管道更换为Ignition(解释器)和TurboFan(编译器)。

🏷️

标签

➡️

继续阅读