



学习任何一门课程,最不能忽略的内容都是其基础。对于现代的编程学习而言,了解编程语言和自然语言的不同是非常重要的。本节中将会介绍什么是计算机编程语言及Python语言的发展历程。
扫一扫,看视频
计算机编程语言也称为计算机程序设计语言,简称编程语言。不同于真实世界中用于交流的自然语言,编程语言是一组用来定义计算机程序的语法规则。编程语言通过固定的形式和语法向计算机发送指令。
计算机会接收到编程语言编写的内容,不过和人与人之间的交流不同,计算机并不能理解这些内容。现代的计算机以CPU为核心,简单来说,CPU在执行任何逻辑操作或者表示任何状态时都可以通过内部的电路开关状态实现,也就是说,计算机只会理解二进制数字的0和1(电路的开或关)。
用二进制代码编写程序对人类而言无疑是反智的,但是在计算机的诞生初期,有限的运算能力和存储设备的限制,使得人们不得不妥协于计算机,手工编写二进制代码,这也就促成了早期的穿孔卡和穿孔纸带的诞生。
穿孔纸带是早期计算机的I/O(input/output,输入/输出)设备,如图1-1所示。在纸带中用机器打孔,将程序和数据转换为二进制——纸带的孔表示二进制1,无孔表示二进制0,经过光电扫描输入计算机。当然,此时计算机的输出也使用纸带,需要对纸带的信息进行解析。
随着半导体技术的迅猛发展,超大规模集成电路的诞生使计算机开始快速发展,计算机存储设备及其应用领域飞速发展,出现了大型计算机、微型计算机和个人计算机(也称电脑)。从编程语言方面,汇编语言的出现逐渐代替了通过低级语言进行编程的手段,极大地提高了编程的效率。汇编语言通过固定的指令来完成一些计算,如下所示的指令就是两个操作数相加的运算。
图1-1 穿孔纸带(局部)
即便是这样,使用汇编语言编写一个大型的项目依旧很困难,通常只有操作系统或硬件驱动程序才会采用汇编语言编写。因为汇编语言必须直接对寄存器进行操作,依旧需要将人类的思想转换为机器能够理解的指令,甚至所有的操作都需要直接对内存进行访问或寻址。为了使程序员的想法能更方便地变成可以运行的程序,高级语言应运而生。
高级语言采用方便编写和理解的语法,将一些复杂而烦琐的操作通过一定的算法进行处理。将系统底层API封装为黑盒的形式,使得程序员无须理解编写的代码在计算机中是如何进行操作的,就可以完成需要的功能。早期的高级语言有FORTRAN、Pascal、Cobol和C语言等,而后出现的各种高级语言有数百种。
这些高级语言,很多至今依旧存在于程序开发的第一线,如C语言,或者是对C语言进行优化后诞生的C++,又或者是本书介绍的Python。
这类高级语言一般被人为地分为两种,即解释型语言和编译型语言。其中,C语言是编译型语言的代表,编写完成的C语言文件无法直接在计算机中执行,所以需要先通过编译器对C语言编写的程序执行一个“编译”过程,把程序转化为机器语言,编译后的程序便可以直接运行。另一种是解释型语言,这类语言是指通过专用的解释器对程序文件进行解释,并不会生成机器语言文件,如Python和Ruby语言。
除了这两种类型的语言外,还有一种语言介于这两种语言之间,采用虚拟机(JVM)的形式运行,Java语言就是其中的代表。如果读者写过Java程序,那么可以在如下所示的HelloWorld.java文件中实现字符串的输出。
如果要运行该文件,则需要首先将HelloWorld.java采用如下所示的命令进行编译,生成可以被JVM解释的中间文件HelloWorld.class。
HelloWorld.class文件会在命令执行的当前目录中自动生成,使用如下所示的命令执行,结果如图1-2所示。
图1-2 Java程序的运行结果
Python的整个执行过程和Java类似,Python并不是纯粹的解释型语言,在执行过程中会首先编译成后缀为“.pyc”的文件作为中间缓存。该文件不是直接可以执行的机器语言,还需要通过Python解释器进行解析才可以运行,这类语言一般称为先编译后解释型语言。
扫一扫,看视频
Python中文翻译为蟒蛇,诞生于1989的圣诞节,是荷兰人吉多·范罗苏姆(Guido van Rossum)在阿姆斯特丹开发的一款新的编程语言。
虽然Python至今为止已经有30多年的历史,甚至比Java的诞生还早,前期却默默无闻,直到最近的10年才飞速发展,开始在各个领域内大显身手。Python在2020年12月的TIOBE编程语言排行榜中位列第三,超过了C++,如图1-3所示。
图1-3 TIOBE编程语言排行榜
不仅如此,在近5年的编程语言发展趋势曲线中,Python一直排名在前,超过了多种语言,如图1-4所示,这当然也是由最近几年大数据分析及人工智能的火热导致的。
图1-4 Python发展趋势曲线
Python最大的优势在于,语言设计上坚持了清晰划一的风格,这使得Python成为一种非常易读、易用、易维护的语言。在某些应用场景中,即便Python可能达不到最优的性能,但是常常能作为快速开发的最佳选择,或者是作为一个胶水语言来调用不同语言编写的脚本,完成一些特定的工作。
Python简洁、便捷的语法与清晰的结构设计,使其不被局限于一个特定的需求环境中,在多种应用场景和应用环境中都有Python的身影。Python的主要应用场景和应用环境如下:
●Web和Internet开发
Python语言中自带了应用服务器作为网站开发的测试服务器,使用Python开发网站可以简单而迅速地完成一个产品的设计和原始模型,开发成本低且能与服务器上需要执行的某些批量任务脚本非常好地交互。
对于运行时间要求不高的企业应用而言,Python无疑是非常好的选择。在敏捷开发的原则中,尽早地开发出一款可用的产品远远比在技术之间踟蹰不决好得多。
●网络编程与服务器端开发
这是Python开发中经常会用到的一个领域,Python可以非常简单地构建一个socket服务器端系统或发起一些网络请求。使用socket可以简单地实现一个实时聊天系统。而使用Python发起请求,通过结合数据库和Python数据分析,也可以便捷地编写一个爬虫系统。
●科学计算和统计
如果需要对一些数据进行分析和统计,Python无疑是最好的选择。科学计算领域及统计学领域中使用的语言并不多,在Python语言没有像如今这样流行时,开发者一般会选择R语言或MATLAB语言进行科学计算。R语言中提供了非常多的函数和好用的API,不过R语言本身和其他的高级编程语言有着非常大的区别。相比之下,Python语言更加贴合真实的自然语言,经过简单的学习即可极快地上手,这也是Python能在科学计算领域占据一席之地的原因之一。
●人工智能及其机器学习
毋庸置疑,人工智能及其机器学习是一个新兴行业,而Python语言如今的市场占有量也和这些领域的兴起有关。甚至在某些场景中,Python开发者就意味着是人工智能等领域的开发者,因为Python语言是人工智能领域的不二选择。又或者说,伴随人工智能及其机器学习的发展,Python也会越来越流行。
●教育行业和办公应用
如果有一天你在朋友圈中看到了一条Python的培训广告,那么一定是告诉你学好Python会极大地提高工作效率。不仅仅是办公应用,在编程培训领域内,Python甚至被作为少儿编程培训中首选的语言。
●游戏类开发
在游戏类开发中,Python不是主流的选择,但是Python中有很多简单有趣的包可以让开发者极快地开发出一款不错的小游戏。
●桌面应用开发
随着如今桌面应用开发的逐渐没落,以及BS结构的广泛使用,如果针对一些小需求去学习一款桌面应用开发语言,无疑是高成本的。Python恰巧为程序员偶尔进行的桌面应用开发提供了低成本的最佳选项。
●手机软件开发
Python语言当然也可以开发手机APP,不过需要通过一些特定的框架。kivy是一个开源的、跨平台的Python开发框架,用于开发手机端的应用程序,kivy支持Linux、Windows、Android、iOS平台。
虽然Python开发APP的步骤较为烦琐,也存在不少限制,却是Python开发者满足自娱自乐需求的不错选择。
扫一扫,看视频
Python官网地址为https://www.python.org/,其主页如图1-5所示,在官网中提供了Python的文档和下载地址。
图1-5 Python官网主页
截至2021年1月,Python的最新版本为Python 3.9。Python曾经一度被分为两个版本,分别是Python 2与Python 3,因为Python 3相对于Python 2的改动较大,所以很多软件并不能及时支持Python 3,这导致了曾经一度出现了“学习Python 2还是Python 3”这样的问题。
随着时间的推移,Python 3几乎已经代替了Python 2,对于Python 2的维护支持也会逐渐停止。本书中的所有代码都基于Python 3实现,可以在Python3.9的环境中正确运行。
注意: 在学习Python的过程中,如果在网络上搜索一些问题的解,直接复制的代码可能在本机上无法正确运行,这有可能是因为安装的Python版本与编写网页代码的Python版本不一致。
虽然现在Python 3已经是主流开发工具,但是网络中依旧存在很多Python 2开发的代码,可以根据Python 2代码的思想对其进行更改,这样就可以使Python 2的代码也能在Python 3环境中运行。不仅仅是代码,很多需要引进的包也存在版本问题,很可能在Python 2中使用的包在Python 3中已经更改了名称或者已经被其他的包替代,一定要找到适合自己开发版本的代码和包。