Web/04-JavaScript基础/00-编程语言.md

122 lines
5.2 KiB
JavaScript
Raw Normal View History

---
title: 00-编程语言
publish: true
---
<ArticleTopAd></ArticleTopAd>
2019-12-11 15:22:20 +08:00
## 编程语言
### 编程
**编程**让计算机为解决某个问题而使用某种程序设计语言编写程序代码并最终得到结果的过程
**计算机程序**就是计算机所执行的一系列的**指令集合**而程序全部都是用我们所掌握的语言来编写的所以人们如果要控制计算机则需要通过计算机语言向计算机发出命令
### 计算机语言
2021-10-30 00:38:12 +08:00
**计算机语言**人与计算机之间通讯的语言它是人与计算机之间传递信息的媒介用来控制计算机的一系列指令
2019-12-11 15:22:20 +08:00
计算机语言的种类非常的多总的来说可以分成三大类机器语言汇编语言和高级语言
计算机最终所执行的都是机器语言它是由01组成的二进制数二进制是计算机语言的基础
### 编程语言
通过类似于人类语言的 语言来控制计算机让计算机为我们做事情这样的语言就叫做编程语言不同的编程语言有不同的语法必须遵守
如今通用的编程语言有两种形式汇编语言和高级语言
- **汇编语言**与机器语言实质是相同的都是直接对硬件操作只不过指令采用了英文缩写的标识符容易识别和记忆
- **高级语言**主要是相对于低级语言而言它并不是特指某一种具体的语言而是包括了很多编程语言比如C语言C++JavaC#PHPJavaScriptPythonObjective-CSwiftGo语言等
2021-10-29 22:17:17 +08:00
## 编程语言的分类
### 翻译器
2021-10-30 00:38:12 +08:00
计算机不能直接理解任何除机器语言以外的语言所以必须要把程序员所编写的高级语言翻译成机器语言计算机才能执行程序为此我们需要一个翻译器**程序语言翻译成机器语言的工具被称为翻译器**
2021-10-29 22:17:17 +08:00
2021-10-30 00:38:12 +08:00
由此可见所谓的翻译指的是将人类所编写的源代码转换翻译为机器能够执行的指令这也被称为二进制化
2021-10-29 22:17:17 +08:00
翻译器翻译的方式有两种一种是**编译**另一种是**解释**两种方式之间的区别在于**翻译的时机**不同
- **编译器**在代码执行之前事前把所有的代码一次性翻译好生成中间代码文件然后整体执行
- **解释器**边翻译边执行在代码执行时进行及时翻译并立即执行当编译器以解释的方式运行时也称之为解释器
对应的语言称之为编译型语言解释型语言
2021-10-30 00:38:12 +08:00
### 1编译型语言
- 定义需要事先通过编译器**把所有的代码一次性翻译编译/转换**然后整体执行比如 exe文件
- 优点执行效率高运行更快
- 不足移植性不好不跨平台编译之后如果需要修改就需要整个模块重新编译
- 编译型语言举例CC++
比如说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)
2021-10-29 22:17:17 +08:00
2021-10-30 00:38:12 +08:00
上方图片的来源[JavaScript基础-基本概念](https://www.jianshu.com/p/230093183f47)
2021-10-29 22:17:17 +08:00
2021-10-30 00:38:12 +08:00
![20211030-0026-2](http://img.smyhvae.com/20211030-0026-2.png)
2021-10-29 22:17:17 +08:00
2021-10-30 00:38:12 +08:00
上方图片的来源[编译型语言](https://p.0x06.cn/zh/program/)
2021-10-29 22:17:17 +08:00
2021-10-30 00:38:12 +08:00
### 2解释型语言
2021-10-29 22:17:17 +08:00
2021-10-30 00:38:12 +08:00
- 定义在运行过程中runtime通过解释器**边翻译边执行**也就是逐行翻译翻译一行执行一行不需要事先一次性翻译
2021-10-29 22:17:17 +08:00
- 优点移植性好跨平台
2021-10-30 00:38:12 +08:00
- 缺点运行速度不如编译型语言
2021-10-29 22:17:17 +08:00
2021-10-30 00:38:12 +08:00
- 解释型语言举例JavaScriptPHPPython
2021-10-29 22:17:17 +08:00
### Java语言
2021-10-30 00:38:12 +08:00
Java 语言是属于半编译半解释型语言翻译过程
2021-10-29 22:17:17 +08:00
1编译`.java`代码文件先通过 javac 命令编译成`.class`文件
2执行`.class`文件再通过 jvm 虚拟机解释执行有了 jvm 的存在 java 跨平台了
## 我的公众号
想学习**更多技能**不妨关注我的微信公众号**千古壹号**
扫一扫你将发现另一个全新的世界而这将是一场美丽的意外
![](http://img.smyhvae.com/20200102.png)