Topics in CS(difference between compile and interpret)
编译 Compile:把整个程序源代码翻译成另外一种代码,然后等待被执行,发生在运行之前,产物是「另一份代码」。
解释 Interpret:把程序源代码一行一行的读懂然后执行,发生在运行时,产物是「运行结果」。
高级语言代码
High-Level Code
高级语言代码,自然是指由高级编程语言编写代码,对计算机的细节有更高层次的抽象。
相对于低级编程语言(low-level programming language)更接近自然语言(人类的语言)。
集成一系列的自动工具(垃圾回收,内存管理等),会让程序员延长寿命,更快乐的编写出更简洁,更易读的程序代码。
低级语言代码
Low-Level Code
低级语言代码,指由低级编程语言编写的代码,相对高级语言,少了更多的抽象概念,更加接近于汇编或者机器指令。
但是这也意味着代码的可移植性很差。
在我看来,高与低,只是一组相对词而已。
越高级的语言,性能、自由度越不及低级语言。
但是在抽象、可读可写性、可移植性越比低级语言优秀。
在以前的年代,C/C++语言相对汇编语言,机器指令来说,肯定是高级语言。
而到了今天,我们更多人对C语言偏向认知为「低级语言」。
或许未来世界的开发者,看我们现在所熟悉的Java、PHP、Python、ECMAScript等等,都是「low」到爆的语言。
汇编语言 Assembly
Language
汇编语言作为一门低级语言,对应于计算机或者其他可编程的硬件。
它和计算机的体系结构以及机器指令是强关联的。
换句话说,就是不同的汇编语言代码对应特定的硬件,所以不用谈可移植性了。
相对于需要编译和解释的高级语言代码来说,汇编代码只需要翻译成机器码就可以执行了。
所以汇编语言也往往被称作象征性机器码(symbolic machine code)
字节码 Byte Code
字节码严格来说不算是编程语言,而是高级编程语言为了种种需求(可移植性、可传输性、预编译等)而产生的中间码(Intermediate Code)。
它是由一堆指令集组成的代码,例如在javac编译过后的java源码产生的就是字节码。
源码在编译的过程中,是需要进行「词法分析
→ 语法分析 → 生成目标代码」等过程的,在预编译的过程中,就完成这部分工作,生成字节码。
然后在后面交由解释器(这里通常指编程语言的虚拟机)解释执行,省去前面预编译的开销。
机器码 Machine
Code
机器码是一组可以直接被CPU执行的指令集,
每一条指令都代表一个特定的任务,或者是加载,或者是跳转,亦或是计算操作等等。
所有可以直接被CPU执行的程序,都是由这么一系列的指令组成的。
机器码可是看作是编译过程中,最低级的代码,因外再往下就是交由硬件来执行了。
当然机器码也是可以被编辑的,但是以人类难以看懂的姿势存在,可读性非常差。
Mark: Java is often called a compiled language, while Python is called an interpreted language
Reference:
1.版权声明:本文为CSDN博主「NumX」的原创文章,遵循 CC
4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_36316735/article/details/58148449
2.http://huang-jerryc.com/2016/11/20/do-you-konw-the-different-between-compiler-and-interpreter/
Topics in CS(difference between compile and interpret)的更多相关文章
- CS(计算机科学)知识体
附 录 A CS( 计算机科学)知识体 计算教程 2001 报告的这篇附录定义了计算机科学本科教学计划中可能讲授的知识领域.该分类方案的依据及其历史.结构和应用的其 ...
- RPC和RMI的区别(Difference Between RPC and RMI)
RPC和RMI的区别(Difference Between RPC and RMI) RPC vs RMI RPC (Remote Procedure Call) and RMI (Remote Me ...
- 一起去打CS(codevs 5059)
题目描述 Description 早就和lyk约好了去打cs,一直没找着时间,终于今天我家没人,他家也没人,总算可以出去了.但是偏偏天公不作美,某某人非要留那么多题要做.没办法只能尽快做完然后抓紧时间 ...
- 虚拟变量和独热编码的区别(Difference of Dummy Variable & One Hot Encoding)
在<定量变量和定性变量的转换(Transform of Quantitative & Qualitative Variables)>一文中,我们可以看到虚拟变量(Dummy Var ...
- 表单送件按钮代码(一)cs(C#)(未完)
protected void BtnRequest_Clich(object sender, EventArgs e) { lblMsg.Text= " " ; lblfmsg.T ...
- C#导入Excel表格功能aspx.cs(代码)
using System; using System.Data; using System.Configuration; using System.Collections; using System. ...
- 图像金字塔、高斯金字塔、差分金字塔(DOG金字塔)、尺度空间、DoG (Difference of Gaussian)角点检测
[图像金字塔] 图像金字塔是一种以多分辨率来解释图像的结构,通过对原始图像进行多尺度像素采样的方式,生成N个不同分辨率的图像.把具有最高级别分辨率的图像放在底部,以金字塔形状排列,往上是一系列像素(尺 ...
- 【CLAA系列】CLAA协议学习(CS方向)
工作上用Lora,需要开发相关模块,分享一下学习的内容: Lora: 博主是做IT的,对Lora不了解.简单理解为LPWAN(Low Power Wide Area Network)中一种技术,目前主 ...
- CS系列(一):Cobalt Strike初体验
0X01 环境准备 Cobalt Strike安装包(链接:https://pan.baidu.com/s/1wCHJcJrF6H0wUCdetz3Xjg 提取码:rjuj) Cobalt Strik ...
随机推荐
- Spring cloud微服务安全实战-3-6API安全机制之数据校验
校验:非空.唯一性等校验 密码的加密:密码加密来存储. 如何做https的访问 校验 一个层面是接口层面,另外一个层面是数据库层面. Springboot给我们提供了简单的封装 校验的包里面还有其他的 ...
- linux追加所有文件到新的文件(cat)
例子如下,存在test1.txt, test2.txt, test3.txt,现在准备把这三个文件的内容都追加到testall.txt 中 test1.txt 1 2 3 4 5 6 test2.tx ...
- python web开发Django连接mysql
需要MYSQL-python,一般情况下直接pip install window系统会报错,所以要去 https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml ...
- html如何修改hr水平直线的粗细
hr是常见的超文本标签,是一条水平直线,要设置该直线变粗一些.可以先把hr本身的border隐藏掉,然后设置border-top-width,也就是只留上边框,如图:hr的默认高度height是0,所 ...
- jquery img src赋值
不用Jquery时:document.getElementById("imageId").src = "xxxx.jpg"; 用Jquery时:$(" ...
- 07点睛Spring MVC4.1-ContentNegotiatingViewResolver
转发地址:https://www.iteye.com/blog/wiselyman-2214965 7.1 ContentNegotiatingViewResolver ContentNegotiat ...
- clickHouse可视化查询工具
clickHouse以卓越的查询性能著称,目前在大数据的存储和分析领域有广泛应用,目前TreeSoft已支持clickHouse的数据在线查询分析,可以与Mysql,oracle等数据库并存操作. 1 ...
- [计算机视觉][ARM-Linux开发]OpenCV 3.1下载 ippicv_linux_20151201失败
安装OpenCV 3.1的过程中要下载ippicv_linux_20151201,由于网络的原因,这个文件经常会下载失败. 解决的办法是手动下载: 先下载 OpenCV 3.1 Download MD ...
- 【GStreamer开发】GStreamer基础教程11——调试工具
目标 有时我们的应用并没有按照我们的预期来工作,并且在总线上获得的错误信息也没有足够的内容.这时我们该怎么办呢?幸运的时,GStreamer自身提供了大量的调试信息,通常这些信息会给出一些线索,指向出 ...
- idea安装svn
idea不像eclipse那样是用插件,idea是直接指向已经安装好的svn.exe.