update: 编译型语言

This commit is contained in:
qianguyihao 2021-10-30 00:38:12 +08:00
parent 12b153ca36
commit 8a47a3719e
2 changed files with 46 additions and 22 deletions

View File

@ -84,7 +84,7 @@ publish: true
![](http://img.smyhvae.com/20180124_1700.png)
1User InterfaceUI界面包括地址栏前进/后退按钮书签菜单等除了浏览器主窗口显示的您请求的页面外其他显示的各个部分都属于用户界面
1User InterfaceUI界面包括地址栏前进/后退按钮书签菜单等也就是浏览器主窗口之外的其他部分
2Browser engine 浏览器引擎用来查询和操作渲染引擎是UI界面和渲染引擎之间的**桥梁**
@ -94,7 +94,7 @@ publish: true
5JavaScript InterpreterJavaScript解析器用于解析和执行 JavaScript 代码
6UI BackendUI后端用于绘制复选框弹窗等窗口小组件它会调用操作系统的UI方法
6UI BackendUI后端用于绘制组合框弹窗等窗口小组件它会调用操作系统的UI方法
7Data Persistence数据存储模块比如数据存储 cookieHTML5中的localStoragesessionStorage

View File

@ -15,7 +15,7 @@ publish: true
### 计算机语言
**计算机语言**人与计算机之间通讯的语言它是人与计算机之间传递信息的媒介用来控制计算机的一系列指令
**计算机语言**人与计算机之间通讯的语言它是人与计算机之间传递信息的媒介用来控制计算机的一系列指令
计算机语言的种类非常的多总的来说可以分成三大类机器语言汇编语言和高级语言
@ -31,12 +31,6 @@ publish: true
- **高级语言**主要是相对于低级语言而言它并不是特指某一种具体的语言而是包括了很多编程语言比如C语言C++JavaC#PHPJavaScriptPythonObjective-CSwiftGo语言等
### 编译器
高级语言所编写的程序不能直接被计算机识别必须经过转换才能被执行为此我们需要一个编译器
编译器可以将我们所编写的源代码转换翻译为机器语言这也被称为二进制化
@ -44,9 +38,9 @@ publish: true
### 翻译器
计算机不能直接理解任何除机器语言以外的语言所以必须要把程序员所编写的语言翻译成机器语言计算机才能执行程序**程序语言翻译成机器语言的工具被称为翻译器**
计算机不能直接理解任何除机器语言以外的语言所以必须要把程序员所编写的高级语言翻译成机器语言计算机才能执行程序为此我们需要一个翻译器**程序语言翻译成机器语言的工具被称为翻译器**
由此可见所谓的翻译指的是翻译成计算机能够执行的指令
由此可见所谓的翻译指的是将人类所编写的源代码转换翻译为机器能够执行的指令这也被称为二进制化
翻译器翻译的方式有两种一种是**编译**另一种是**解释**两种方式之间的区别在于**翻译的时机**不同
@ -56,31 +50,61 @@ publish: true
对应的语言称之为编译型语言解释型语言
### 编译型语言
### 1编译型语言
- 定义需要事先把所有的代码一次性翻译编译然后整体执行比如 exe文件
- 定义需要事先通过编译器**把所有的代码一次性翻译编译/转换**然后整体执行比如 exe文件
- 优点运行更快
- 优点执行效率高运行更快
- 不足移植性不好不跨平台
- 不足移植性不好不跨平台编译之后如果需要修改就需要整个模块重新编译
- 编译型语言举例cc++
- 编译型语言举例CC++
比如说c语言的代码文件是`.c`后缀翻译之后文件是`.obj`后缀系统执行的是 obj 文件再比如 java 语言的代码文件是`.java`后缀翻译之后的文件是`.class`后缀注意Java 语言不是严格的 编译型语言这个一会儿会讲
比如说c语言的代码文件是`.c`后缀翻译之后文件是`.obj`后缀系统执行的是 obj 文件再比如 java 语言的代码文件是`.java`后缀翻译之后的文件是`.class`后缀但是Java 语言不是严格的 编译型语言这个一会儿会讲
### 解释型语言
以C语言的`hello.c`来举例
- 定义**边翻译边执行**翻译一行执行一行不需要事先一次性翻译
```c
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("Hello world!");
return 0;
}
```
对于以上C代码main是程序入口实现的功能是打印字符串`hello world`到屏幕上编译和执行过程如下
1. C语言代码经过预处理比如依赖处理宏替换以上方代码示例`#include<stdio.h>`会在预处理阶段被替换
2. 编译编译器会把C语言翻译成汇编程序一条C语言通常被编译为多条汇编代码同时编译器会对程序进行优化生成目标汇编程序
3. 汇编语言通过汇编器再汇编成目标程序`hello.o`
4. 链接程序中往往包含一些共享目标文件如示例代码中的`printf()`函数位于静态库需要经过链接器进行链接
![20211030-0031-2](https://img.smyhvae.com/20211030-0031-2.png)
上方图片的来源[JavaScript基础-基本概念](https://www.jianshu.com/p/230093183f47)
![20211030-0026-2](http://img.smyhvae.com/20211030-0026-2.png)
上方图片的来源[编译型语言](https://p.0x06.cn/zh/program/)
### 2解释型语言
- 定义在运行过程中runtime通过解释器**边翻译边执行**也就是逐行翻译翻译一行执行一行不需要事先一次性翻译
- 优点移植性好跨平台
- 缺点运行更慢
- 缺点运行速度不如编译型语言
- 解释型语言举例JavaScriptphpPython
- 解释型语言举例JavaScriptPHPPython
### Java语言
Java 语言既不是编译型语言也不是解释型语言翻译过程
Java 语言是属于半编译半解释型语言翻译过程
1编译`.java`代码文件先通过 javac 命令编译成`.class`文件