Python的环境我们已经搭建好了,可以开始学习基础知识了。但是,在此之前,还要先说说编译器与解释器相关的内容。
如果这部分内容,让你觉得难以理解或不能完全明白,可以暂时跳过,等以后再回过头来重新读一遍。
一、数据的表示方式
我们都知道,现实生活中,数字的表示方式有很多种,常见的有二进制、八进制、十进制和十六进制。十进制我们都很熟悉,加法口诀表我们都背过,主要是使用0~9,这10个阿拉伯数字来构建整个十进制的体系,其中最核心的法则是“逢十进一”,借位则是“借一当十”。那么为什么全世界不管什么国家,什么历史,什么文化水平基本都是用十进制作为基本进制呢?是因为我们人有10个手指头,掰起来最方便!我们对十进制有着天然的友好度。
那么对于计算机呢?计算机不是人,没有10个手指头可以掰,所以它用不了十进制。那么它用几进制?二进制!二进制是用0和1两个数码来表示的数,也就是形如的样子。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。
为什么计算机要使用二进制作为自己的机器语言也就是数据的表示方式呢?因为计算机最小的计算单元是根据开关状态高低电平来确定的,它只有开和关,高和低的概念,换成数学就是0和1的两种。同样的,在物理存储方面,硬盘的磁道只能区分打孔和未打孔的状态,也是0和1两种。同时二进制便于进行加、减运算和计数编码。二进制与十进制数易于互相转换。二进制便于逻辑判断(是或非),逻辑判断通常也是两种状态,这和二进制很搭配。二进制表示数据还具有抗干扰能力强,可靠性高的特点,因为当受到一定程度的电磁干扰时,只要可以分辨出它是高电平还是低电平,至于高多少或低多少并不重要,就能区分0和1,这在网络信号中,就是天生自带抗干扰能力。
但是,在人机交流上,二进位制有致命的弱点,数字的书写特别冗长,并且没有人类可读性!例如,十进位制的写成二进制就是11000011010,长了好几倍,而且你能从一个这么长的二进制数里读出它的十进制数是多少吗?
计算机不能独立存在,目前也无法自我创造,不管是输入还是输出,它的一切都必须和人交流。那么问题来了,人类只能读10进制和英语、汉语等,可计算机只会,至于英语、汉语对它而言更是天书。那么我们是怎么和计算机交流的呢?怎么将我们的英语或者汉语编码成计算机能够识别的1呢?
二、编程语言发展历程
1.打孔纸条
我们已经知道了计算机只懂机器语言,也就是二进制的数据表示方式,任何对它的操作和编码,最终都要统一到这上面来,然而这是一个悲伤的故事。
起初,为了让计算机按我们的想法工作,程序员不得不编写计算机可以读懂看明白直接执行的机器码,也就是01的样子,打孔字条就是这么干的。用打没打孔来代表0和1。OK,计算机没问题,它能无障碍阅读,可程序员就难受了。拍脑袋也能想得到这里面的问题。容易出错,效率低,编写困难,维护困难。可能就是个简单的打印“helloworld”,也许就需要好几米长的字条。这简直就是原始社会,生产效率低下的令人发指。发生个火灾什么的,直接Over。唯一的好处就是无需转换,可直接执行,但相对缺点来讲,这点好处完全可以被忽略。
2.汇编语言
汇编语言是一种可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。也就是说不同平台之间不可直接移植,它是平台相关的,你在这个硬件平台写的汇编程序,换到另外一套硬件上去是运行不了的。因此,汇编语言通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序较多使用汇编语言。相比于机器码,它更偏向人类的语言习惯,更易于编写和阅读,也就是有一点抽象符号概念化了,这大大提高了编程效率。但是,这依然是一种低级语言,还有改善和提高的空间。
上面一段看得晕没关系,简单地说就是汇编语言相比打孔纸条,对人类更友好一点了,至少能用几个类似ADD\CALL\MOV的英文缩写了。但是,它牺牲了一定的性能,并且依然不够友好。
3.C语言
在C语言之前其实还有很多低级语言,我们不关心它们。为了让编程更简单,更高效,聪明的计算机程序员,一步步发明了FORTRAN、BASIC、B等许多语言,然后在年诞生了无人不知,应用最广,影响最深,至今仍然地位不可动摇的C语言。
C语言为什么这么厉害?归根结底是一句话:直接操作硬件!同样的算法,用C语言,其执行效率超过JAVA等语言很多。那可能有人会问,C和汇编和机器码比呢?肯定是C慢,但是写个汇编程序和写个C程序的效率差别那就更大了。C语言在人类友好性和底层相关性上达到了一个高度的平衡。这两者是互相矛盾的,不可同时兼得。
C干了些什么?其实它就是在人类友好性方面相比以前跨出了更大一步。人类是方便了,可机器就迷糊了!你给我这么多字符都是啥意思?机器它只懂二进制啊!那么C的代码是如何被执行的呢?这就得请出编译器了!
编译器将编程语言写的代码翻译成机器能够执行或者说“看懂”的二进制机器码。
其实我们安装JAVA也好,C也好,Python也罢,主要就是安装的这个编程语言的“编译器”。
4.Python语言
在几十年前,C语言是当之无愧的高级语言代表,现在也依然是语言排行榜第二的霸主。然而,在很多领域,它已经不太适用了,现今更主流的语言是那些上手快、简单易懂,说白了就是门槛低的语言,让更多的人能进入程序员行业,让编程能更容易、更快是未来的发展趋势。也就是说,需要让编程语言更贴近人类语言,更远离机器语言。
Python就是这么一种语言。它的语法简单明了,更贴近人类的使用习惯。作为一种动态解释性语言,让人们在写代码的时候可以更多的