
---
## **编译语言（Native Compiled）**
**特点**：直接编译为机器码，不需要运行时虚拟机
- **C/C++**：直接编译为平台相关的机器码
- **Rust**：编译为原生机器码
- **Go**：编译为静态链接的可执行文件
- **Swift**：编译为机器码（通过LLVM）
- **Fortran**：传统科学计算编译语言
- **Ada**：安全关键系统的编译语言
- **Zig**：直接编译为机器码
---
## **虚拟机语言（VM-based）**
**特点**：编译为中间字节码，在虚拟机上运行
- **Java** → JVM字节码
- **C#** → .NET CLR字节码
- **Kotlin** → JVM字节码
- **Scala** → JVM字节码
- **Erlang/Elixir** → BEAM虚拟机
---
## **解释语言（Interpreted）**
**特点**：由解释器直接执行源码或简单字节码
- **Python**：CPython解释器直接执行字节码
- **Ruby**：MRI解释器执行
- **JavaScript**：早期浏览器解释执行，现代有JIT编译
- **PHP**：Zend引擎解释执行
- **Perl**：解释器执行
- **Lua**：解释执行，可嵌入其他程序
---
## **混合/特殊类型**
**需要特别说明的语言**：

### **JIT编译语言**（既有编译特性又有解释特性）
- **JavaScript (V8引擎)**：先解释后JIT编译
- **Python (PyPy)**：使用JIT编译的Python实现
- **C# (.NET AOT)**：可AOT编译为原生代码
- **Julia**：JIT编译，针对科学计算优化

### **可编译为多种目标**
- **TypeScript** → 编译为JavaScript
- **CoffeeScript** → 编译为JavaScript
- **WebAssembly** → 可在浏览器中运行的字节码格式

### **脚本语言（通常解释执行）**
- **Bash/Shell**：命令行解释执行
- **PowerShell**：.NET基础上的脚本语言
- **R**：统计计算，解释执行

## **重要说明**

1. **界限模糊**：现代语言实现趋于混合
   - Java有AOT编译选项（GraalVM）
   - Python可编译为C扩展
   - JavaScript引擎大量使用JIT

2. **实现与语言分离**：
   - 语言规范 ≠ 具体实现
   - 如Python有CPython（解释）、PyPy（JIT）、Cython（编译）等实现

3. **趋势**：
   - 越来越多的语言采用混合策略
   - WebAssembly让字节码可在浏览器原生运行
   - 即时编译技术使解释语言性能接近编译语言
