首页 > 编程知识 正文

解释是在什么的基础上进行思考,什么叫解释型编程语言

时间:2023-05-04 20:31:25 阅读:20971 作者:3051

% E6 % 88 % 91 % E4 % bb % AC % E7 % 9f % a5 % e9 % 81 % 93 % ef % BC % 8c % E4 % bb % E4 % BD % 95 % E7 % BC % 96 % E7 % 25。 a % 8f % E5 % 88 % 97 % ef % BC % 89 % E6 % 89 % a7 % E8 % a1 % 8c % E7 % 84 % ef % BC % 8c % E6 % A0 % E8 % AE % 25 % 20 E8 % 20f % E7 % 9a % 84 % E6 % ba % 90 % E4 % bb % a3 % E7 % A0 % 81 % e9 % 83 % BD % E6 % 98 % af % E4 % b8 % 80 % E4 % b8 % aa % 9e % 90 % E5 % 99 % A8 % E7 % bb % 8f % E8 % BF % 87 % E5 % a4 % E6 % AC % a1 % E8 % BD % E6 % 8d % a2 % E5 % AE % 208 % 0 % ab % 98 % E5 % B0 % E4 % BD %8E8 % E8 % B6 % 8a % E6 % E8 % B6 % E6 % 8e8% BF % 91 % E4 % ba % 25 % 20e7% A0 % 81 % E5 % 99 % A8 % E7 % 9a % 84 % E6 % 8c % 87 % E4 % bb % a4 % e9 % 86 % E4 % BD % 93 % E7 % bb % E7 % bb % 93 % 208 c 208 % BF % 91 % E4 % ba % E7 % B1 % bb % E7 % 9a % 84 % E8 % af % ad % E8 % E4 % B9 % A0 % E6 % 83 % af % E3 % 80 % 20 % a1 % E4 % b8 % ba % E6 % 8c % E7 % E4 % bb % a4 % e9 % E4 % BD % 93 % E7 % bb % E7 % bb % 99 % 25 % 208 % BF % B0 % E4 % E7 % bb % 8f % E8 % BF % 87 % E7 % BC % 96 % E8 % E6 % 88 % 96 % E8 % a7 % a3 % 87 % 87 % 25a % 25 % 20a1% A8 c % 89 % E5 % 8a % 9f % E8 % 83 % BD % E5 % 88 % 92 % E5 % 88 % 86 % E4 % b8 % ba % ef % 9a % 0a % 201.% E6 % 208 e e 20 % AE % 97 % E6 % 8c % 87 % E4 % bb % a4 % ef % BC % 8c % E6 % af % 94 % E5 % a6 % 82 % ef % BC %9aaddl % E6 % 89 % a7 % E8 % 80 % 82 % 0a % 204 % ba % 8e % E5 % AE % 9e % E7 % 8e % B0 % e9 % ab % 98 % E7 % ba % a7 % E7 % A8 % 8b % E8 % af % ad 87 % E7 % A8 % 82 % EB % 25 % 20e % B0 % E5 % 87 % BD % E6 % 95 % B0 % E8 % B0 % 83 % E7 % A8 % ef % BC % E5 % 88 % e9 % 85 % 81 % E8 % a2 % ab % 25 % 209 a % 84 % E6 % 8c % E4 % bb % a4 % E5 % ba % E5 % 88 % ef % BC % 8c % E6 % af % 94 % E5 % a6 % 9 %7bint % 20 result % 200 d % 2000 % 20b % 7d return % 20 result % 3b % 7d % 0a % 20 % E5 % 9c % a 832 bit % E6 % 9c % ba % E5 % 95 % E4 % b8 % ba % ef % BC % 9a % 20 % 0a % 20 % 0a % 208 % 2020.l7 % 20.l 10: % 20 imull % 20 % EDX % 2c % 7 % A8 % 8b % E5 % ba % 8f % E7 % 9a % 84 % E6 % 9c % ba % E5 % 99 % A8 % E4 % bb % a3 % E7 % A0 % 81 % 25ei % 208 c % 96 % E4

% E5 % BD % 93 % E7 % 84 % B6 % ef % BC % 8c % E5 % 9c % A8 % E8 % BF % 9b % E8 % a1 % E5 % 87 % BD % E6 % B0 % E8 % 2082 % E8 % a1 % EC % 25 % 20e % a1 % E7 % AE % 97 % E6 % 9c % ba % E7 % a7 % 91 % E5 % ad % a6 % E4 % b8 % ad % E7 % 94 % A8 % E6 % BC % 8c % E6 % A0 % 88 % E4 % b8 % 25 % 20e5% 87 % BD % E6 % 95 % B0 % E8 % B0 % 83 % E7 % A8 % E5 % af % B9 % E5 % ba % E4 8f % 98 % e9 % 87 % 8f % E3 % 80 % 81 % E4 % 20 % B0 % E6 % 8d % ae3 % 82 % E8 % E8 % E6 % A0 % B7 % E5 % 87 % BD % 7 % ba6 % A0 % E3 % 80 % 80 % 25 % 209 % E4 % b8 % a4 % b8 % aa % E4 % b8 % 93 % e9 % 97 % A8 % E7 % 94 % A8 % E4 % ba % 8e5% 88 % E5 % af % 84 % E5 % 25 % 20 % B0 % E6 % A0 % 88 % E6 % A0 % 88 % e9 % B6 % E7 % E5 % 86 % E5 % ad % 98 % E5 % cc 84 % E5 % 86 % E5 % 25 % 20 % 8e % E5 % BD % 93 % E5 % 89 % 8d % E5 % 87 % BD % E6 % E7 % 84 % A0 % 88 % E5 % b8 % ad 06 % ad % a4 % E5 % 87 % BD % E6 % 95 % B0 % E8 % B0 % 83 % E7 % A8 % BF % 87 % E7 % A8 % 8b % E6 % E8 % BF % 2083 % 00 % 83 % E7 % 94 % A8 % E5 % 87 % BD % E6 % B0 % E8 % BF % 87 % E7 % A8 % ef % BC % 8c % e9 % 80 % b8 % BF % 87 % 20 % 8c % EC f % BC % 8c % E5 % B0 % 86 % E8 % a2 % ab % E8 % B0 % 83 % E7 % A8 % E5 % 87 % BD % E6 % B0 % E7 % 94 % E6 % A0 % 25 % 20 E5 % 88 % 9d % E5 % a7 % 8b % E5 % 8c % 96 % E3 % 81 % E6 % 81 % a2 % E5 % a4 % 8d % E6 % A0 % 88 % E5 % b8 % a7 % ee7 % 20b 00

返回值的问题,这些都是由编译器实现的。

        上面介绍了C语言和机器语言的关系,下面看一下其他类型语言的实现机制。首先,我们可以把编程语言分为编译型语言、解释型语言和虚拟机语言。编译型语言直接被编译成本地机器代码,比如C、C++。解释型语言是通过解释器执行,比如javascript、shell、python等。虚拟机语言运行在虚拟机上,需要被编译成虚拟机代码,由虚拟机执行,比如java。虽然python也有自己的虚拟机,但是不需要编译,所以把它归类为解释型语言。


图2 编程语言实现结构

        通过上文的分析、我们知道对于一门语言最重要的是数据类型、控制结构和语法结构以及系统调用。从上图可以看出,C和C++更接近于底层硬件,但是不能像汇编语言一样可以直接访问寄存器等硬件。而python和java相对于C和C++的抽象层次又高了一层,它们不能通过指针直接访问内存。从机器语言->汇编语言->系统语言(C和C++)->解释型语言(python)和虚拟机语言(java),抽象层次越来越高,越贴近于人的思维,不需要考虑那么多细节;同时,程序员的自由度和程序的运行速度越来越低。下面从低向高j讨论一下。

        在底层,汇编语言会经过汇编器转换为机器代码。比如,通过gcc编译C程序时,会调用汇编器进行汇编。通过汇编器和汇编语言这一层次,可以很好的隔离底层机器硬件的实现细节。不同的处理器具有与之对应的汇编器,将汇编语言汇编成该处理器支持的指令集。这样就是实现了汇编语言这一层的移植性。

        在C和C++系统编程语言这一层,会通过编译器完成语言元素到汇编语言的映射。比如前文描述的,数据类型、控制结构、函数调用等结构的转换。

        python是解释型语言,它通过python解释器实现向底层语言的映射。我们知道python虚拟机是由C语言编写的,所以python程序会转化为C程序而执行。比如,python中的所有对象都会在C中有对应的PyObject结构体。python的list、dict等数据类型也要在C中有对应的表示。而像生成器、迭代器等语法结构需要相应的支持。

        而虚拟机是模拟一个指令集的程序,所以它自身有一套独立于具体硬件、操作系统的指令集。需要通过底层语言实现这套指令集。虚拟机本身也有自己的数据类型系统、语言结构等。比如,java虚拟机上支持的数据类型有基本数据类型和引用类型,也支持tableswitch和lookupswitch等实现switch语法结构的字节码指令。对于这些语言元素映射到底层语言的实现方式可以不同的方式。首先是解释器模式转化为C++,还有就是JIT直接编译成本地机器代码。

        像java这样的虚拟机语言会被编译器编译成虚拟机本地的机器代码,然后再虚拟机上执行,这里就需要向javac编译器实现java语言的数据类型、语言结构和java虚拟机上的数据类型、语法结构的映射。

        通过谈论,可以看出编译器和解释器以及虚拟机在编程语言中的重要性,它们都是编程语言可以在计算机上运行的基石。一门编程语言的编译器、解释器或者虚拟机可以很大程度上影响这门语言的执行效率。因为它们在进行语言转换时会进行很多的优化以提高执行效率。这也是为什么JVM上有那么多优秀的语言,因为JVM很强大。所以,要深入语言的底层,要学会编译器、解释器和虚拟机的实现,这方面还需要下功夫啊。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。