当前位置:网站首页>原则、语言、编译、解释
原则、语言、编译、解释
2022-07-02 11:57:00 【一个想当作家的工科男】
前言
学习 计算机的原则与语言
内容!
一、硬件和软件
硬件:看得见摸的着的东西,例如,鼠标、键盘、显示器。
软件:看不见摸不着的东西,例如,电脑上安装的程序,qq 和微信。
二、三大原则
计算机本质上就是在执行:“输入-> 运算-> 输出” 步骤,计算机做的大部分事情就是这三步。
例如,在键盘输入信息,点击一些程序的相关按钮进行相关计算,然后在屏幕上显示 结果。
例如,看电影:搜索(输入)-> 联网请求(运算)-> 显示搜索结果(输出)。
输入、运算和输出操作的是数据。指令和数据的集合就是程序。
程序:程序就是指令和数据的集合,指令也是特殊的一种数据。
指令:不参与运算,而是控制运算,指令就是一种命令。控制计算机进行怎样的输入,运算,输出。类比工作中领导给你下达命令,安排任务,你负责完成。我们写的每一行代码都可以看作是对计算机的一个指令,指令可以组合。
数据:可以分为两种,输入数据与输出数据。无论多么复杂的程序,本质都是数据和指令的集合。计算机处理的信息都是数字 -> 二进制 -> 数据都是以二进制的形式存储在内存中。
文字,视频,颜色怎么用数字表示?
颜色:RGB
。
文字:需要用数字表示计算机才能看懂,通过字符编码。
计算机只认识数字,那只需要将要展现的信息做一个与数字一 一对应的映射表不就可以了?ASCII
码是将文字转换成计算机认识的数字。
三、计算机语言
计算机语言针对的是两方,一个是计算机,另一个是人,是连接计算机与人的一个桥梁。
要么这个语言对计算机友好,要么对人友好。对人友好的叫就叫高级语言,对计算机友好的就叫低级语言。
- 低级语言
- 机器语言:机器语言又叫原生代码,是计算机的原生语言(
0
和1
两个二进制数字书写的编程语言),可以被计算机直接识别,不需要额外的翻译,对计算机友好。 - 汇编语言:将
0
和1
组合在一起包含特定指令的数据起一个名字,用英文字母表示,这种东西就叫做助记符。
- 机器语言:机器语言又叫原生代码,是计算机的原生语言(
- 高级语言
四、编译和解释
明确:无论是编译还是解释,本质上都是翻译,翻译就是将程序翻译成另一种状态。例如,将英语翻译成汉语,将我们写的程序源代码翻译成计算机可以执行的机器语言即二进制的形式(翻译的最终目的),从而完成工作。
- 编译
就是一次性的把所有源代码翻译成机器语言,执行速度快。 - 解释
不是一次性翻译,在程序执行时,一条一条的将源代码翻译成机器语言,执行速度慢。 - 区别
编译:程序经过编译之后会生成另外一套可存储的代码。例如,java
编译生成字节码,是可存储的。
解释:边解释边执行,解释一条执行一条,这个过程是不生成可存储的代码
总结:编译的翻译和执行时分开的,而解释则是同步进行的
五、翻译和执行
- 翻译的目的:生成另外一套格式的代码,将
A
变成B
的过程,B
可以被计算机直接执行。 - 编译:一步到位,直接将源代码翻译成目标机器码(机器语言),可以直接运行。强调的是一次性, 直接将源代码翻译成机器代码,想要运行时可以直接读取运行。
- 解释:
A
变成B
,B
不是机器语言,不能直接被计算机执行,属于一种中间代码,需要再次翻译成目标机器代码(机器语言)才能被计算机执行。再次翻译的过程一般为解释,强调的是再次翻译,也就是逐条翻译,边翻译边执行。 - 执行:执行的最终目的是要在计算机中运行起来,要想运行起来就需要执行前面的翻译过程。
五、两种形式结合起来
- 编译执行:就是将源程序一步到位翻译成目标机器码,然后直接运行。
- 解释执行:将生成的中间代码,已经不是源程序了,然后将中间代码一条一条翻译成目标机器码,翻译一条,执行一条,即边翻译边执行。例如,
java
,中间代码就是class
文件,即字节码。java
原文件:xx.java
,经过编译生成中间代码:xx.class
字节码文件,需要再次解释成目标机器代码进行执行。
六、编译
python
先翻译成中间代码,然后再交给特定的 ·python· 解释器去解释执行生成的目标代码,然后运行。c c++
属于编译型语言,把源程序一次性翻译(编译)成机器代码,然后运行。
边栏推荐
猜你喜欢
MFC timer usage
Reuse and distribution
Jenkins Pipeline 应用与实践
Fatal: unsafe repository is owned by someone else
Advanced C language (learn malloc & calloc & realloc & free in simple dynamic memory management)
Dragonfly low code security tool platform development path
CTO如何帮助业务?
Why can't programmers who can only program become excellent developers?
Add vector formula in rich text editor (MathType for TinyMCE, visual addition)
Socket and socket address
随机推荐
OpenCV调用USB摄像头的点滴
About text selection in web pages and counting the length of selected text
Why can't browsers read JSX?
Add vector formula in rich text editor (MathType for TinyMCE, visual addition)
ONNX+TensorRT:将预处理操作写入ONNX并完成TRT部署
##51单片机实验之简易验证码发生器
mathML转latex
C#代码审计实战+前置知识
Dragonfly low code security tool platform development path
LeetCode_滑动窗口_中等_395.至少有 K 个重复字符的最长子串
Full of knowledge points, how to use JMeter to generate encrypted data and write it to the database? Don't collect it quickly
MFC 控制台打印,弹出对话框
It's no exaggeration to say that this is the most user-friendly basic tutorial of pytest I've ever seen
btrace-(字节码)动态跟踪工具
Introduction to mathjax (web display of mathematical formulas, vector)
【C语言】详解指针的初阶和进阶以及注意点(1)
C语言实现N皇后问题
tmall.product.schema.get( 产品信息获取schema获取 ),淘宝店铺上传商品API接口,淘宝商品发布接口,淘宝商品上传API接口,店铺上传接口,oAuth2.0接口
MFC timer usage
TiDB 软件和硬件环境建议配置