计算机语言的分类
到目前为止,我自己学过或者说碰过的语言有 C、Java、JavaScript、Python、Go。最近在学的是 Go,看到 Go meta描述是:静态、编译型。但是突然发现自己对于编译型的理解就是:该种语言若要执行,则需要从源码转换为二进制,而语言的静态和动态却摸不着头脑。看来自己基础不牢,需要总结了。
语言大致可以按一下分类:
- 编译型、解释型、混合型;
- 动态类型语言、静态类型语言;
- 强类型、弱类型;
实际上,上述分类并不能说具有绝对的科学性。
一、编译、解释、混合型
定义
- 编译型:需通过编译器(compiler)将源代码编译成机器码,然后链接为可执行文件。编译的工作流程大致为:源代码 → 词法分析 → 语法分析 → 语义分析 → 目标代码(编译) → 链接 → 可执行文件,其中:
- 编译:把源代码编译成机器码;
- 链接:把各个模块的机器码和依赖库串连起来生成可执行文件;
- 解释型:解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。
- 混合型:编译器将源码编译成中间码而不再是二进制机器码,然后中间码需要被即时编译器翻译成目标平台的本地代码;
分类<