首页 技术 正文
技术 2022年11月18日
0 收藏 618 点赞 4,347 浏览 1458 个字

编译 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/

上一篇: js 单线程 异步
下一篇: STM8 定时器
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,999
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,357
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,140
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848