哈喽~我是北方素素。
在看书的时候,我发现了一些对编译器和解释器的解释,觉得很通俗易懂,所以在这里转载给大家,希望对大家的学习有所帮助。
Tip:可以在群文件里找到这本电子书。
本文的以下内容出自《Python for Informatics(中文版)》。
Python是一种高级语言,旨在较为方便地让人类进行读写,让计算机进行读取与处理。其他高级语言包括:Java、C++、 PHP、Ruby、Basic、Perl以及JavaScript等。CPU里的硬件并不能理解任何一种高级语言。
CPU能理解的语言称之为机器语言。机器语言非常简单,坦白讲,编写起来非常无聊。它全部由0和1组成:
01010001110100100101010000001111
11100110000011101010010101101101 ...
虽然机器语言表面看起来很简单,只有0和1,但它的语法比Python复杂得多。所以,很少有程序员用机器语言编程。相反, 借助各种翻译器,程序员可以编写像Python或JavaScript这样的高级语言,这些翻译器会将程序转换成机器语言,再交由 CPU执行。
因为机器语言依附于计算机硬件,所以不能在不同类型硬件之间移植。使用高级语言编写的程序可以在不同的计算机之间移植,通过在另一台计算机上使用不同的编译器,或者重新编译代码,生成一个适合这台计算机的机器语言版本。
编程语言的翻译器大体可分为两类:(1)解释器 与 (2) 编译器。
解释器读取程序员所写程序的源代码,解析源代码并实时解释指令。Python是一种解释器。当交互式执行Python时,输入一 行Python语句,Python就会立即处理它,并做好准备让我们输入下一条语句。
Python语句中有一些地方会告诉Python,你想要Python记住等下会用到的一些数据。这时就需要为数据挑选一个名称来记住它,这样之后就可以通过这个名称来获取对应的数据了。我们使用变量(variable)来代表存储的数据。
>>> x = 6
>>> print x 6
>>> y = x * 7
>>> print y 42
>>>
在这个例子中,我们让Python记住数值6,并将6赋值给变量x,以便后续使用。为了确认Python已经记住这个数值,使用print命令打印变量x的值。接下来,我们让Python获取变量x的值并乘以7,然后将结果赋给新变量y。最后,打印出当变量y的当前值。
一次输入一行命令,Python将其视为一个语句序列,后面的语句可以获取前面语句的数据。四句组成的段落以一种有逻辑的和有意义的顺序编写,这就是我们写出的第一个简单的多行程序。
如上所示,解释器的本质是进行交互式对话。编译器需要将整个程序放在一个文件中,将高层次的源代码翻译成低层次的机器语言,然后编译器将生成的机器语言放到一个文件中以便后续执行。
如果你使用Windows系统,这些可执行的机器语言程序通常带有“.exe”或“.dll”后缀,分别代表这是“可执行的”和“动态可加载库”。在Linux和Mac中没有这样的后缀来明确表示文件是否是可执行的。
如果在文本编辑器中打开一个可执行文件,满眼望去完全看不懂:
^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@\xa0\x82 ^D^H4^@^@^@\x90^]^@^@^@^@^@^@4^@ ^@^G^@(^@$^@!^@^F^@ ^@^@4^@^@^@4\x80^D^H4\x80^D^H\xe0^@^@^@\xe0^@^@^@^E ^@^@^@^D^@^@^@^C^@^@^@^T^A^@^@^T\x81^D^H^T\x81^D^H^S ^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@^A\^D^HQVhT\x83^D^H\xe8 ....
机器语言的读写并不容易,好在借助解释器和编译器,能够使用Python或C这样的高级语言编写程序。
通过对解释器与编译器的讨论,你应该对Python解释器本身有了一些了解。那它又是用什么语言写的?是用汇编语言写的吗?当我们输入“python”,究竟发生了什么?
Python的解释器是用C语言编写的。你可以访问http://www.python.org网站,查看Python解释器的源代码,如有你有意愿改造这些源代码也是可以的。Python本身就是一个程序,它被编译成机器代码。当你(或硬件供应商)在计算机上安装了 Python,实际上是将一份编译好的Python程序的机器代码拷贝到你的计算机系统。
要成为一名Python程序员,你知道这些还远远不够。但在一开始,花一些时间解释这些细节问题,还是值得的。
作者:北方素素
https://www.bilibili.com/read/cv289714/
出处: bilibili