第一节 认识Python(1 / 1)

尽管很多编程语言都能够实现“深度学习”等人工智能的各类型算法,但毫无疑问,Python是当前人工智能领域的第一语言。从事人工智能编程的人们有多么喜欢Python呢?读者可以看这样一张有趣的照片(图2-1)。

图2-1

在开始学习具体内容之前,下面首先对Python做一个简单的介绍,以便读者对Python建立整体的认识。Python的设计理念崇尚优美、清晰、简单,这种理念正是它具有优秀的使用体验和广泛的使用群体的最直接原因。在学习和使用过程中,它呈现出来的特点可以概括为如下几个方面。

1.简单

Python是一种奉行简单主义思想的语言,简单是它最大的优点之一。阅读一段好的Python程序感觉就像是在读英语,尽管这种“英语”的语法要求稍微严格了一些。也正是因为如此,Python被称为可执行的伪代码。

2.易学

Python语法简洁明了,结构清晰。无论是已经熟悉其他编程语言的高手还是初次接触编程的菜鸟,都非常容易学习。这样的特点,使得人们在使用过程中不必过度关注程序设计语言的形式细节,从而可以将更多的注意力放在程序自身的逻辑和算法上。

3.免费且开源

Python是FLOSS(自由/开放源码软件)之一。FLOSS是一个基于社区概念建立的组织,推崇知识分享的概念。Python作为FLOSS成员软件之一,可以自由地发布Python的拷贝、阅读它的源代码、对它进行修改、把它的一部分用于新的自由软件。这也正是Python如此优秀的原因之一——它由一群希望看到更加优秀的Python的人创造并持续改进着。

4.解释型语言

这是Python的运行机制。计算机通常不能直接接收和执行高级程序语言编写的源程序,这些源程序一定要先通过翻译程序翻译成0-1序列的机器语言,才能被计算机的CPU或者GPU执行。这种翻译有编译和解释两种方式。编译是指源代码先由编译器编译成可执行的机器代码,然后执行;解释是指源代码程序被解释器直接执行。这两种方式各有优缺点。例如,经典的C语言就是采用编译执行的方式,而Python这种解释型语言的方便之处在于,它可以通过在不同系统上安装解释器,使得使用Python编写的程序可以直接在这些系统上运行而无须进行修改。

5.丰富的库

这是Python又一个非常吸引人的地方。全世界的爱好者、开发者为Python编写了众多的可完成各类任务的库,很多商业公司(包括Google、Microsoft、Facebook等IT巨头)也在开发和维护可以媲美商业软件的Python库。例如,著名的深度学习平台TensorFlow就是Google开发的Python库。

6.面向对象

Python既支持面向过程的编程,也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是由可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主流的编程语言如C++和Java相比,Python以一种非常强大又简单的方式实现了面向对象编程。

Python的这些特点与它自诞生之日起就秉承的开放态度密不可分。Python由荷兰人吉多·范罗苏姆创造,他认为自己不是全能型的程序员,所以从发明这种语言之初,他就只负责框架。遇到复杂的问题时,社区起到了关键的作用,吉多会把问题抛给社区,交由开放社区中的其他人来解决。由于社区中人才丰富,各有专长(甚至创建网站、筹集基金这样距离技术开发较远的事情也有人乐于处理),所以Python发展过程中的许多问题都得以采用很好的方案解决。

Python的开放性还体现在积极汲取其他语言的优点,它几乎借鉴了所有语言的成功之处,无论是已经进入历史的ABC,还是依然在使用的C和Perl,以及许多没有列出的其他语言。基于这种开放与合作的心态,Python同时也在输出它的设计理念,如Ruby就借鉴了Python的很多想法。其实换个角度,Ruby的成功何尝不是代表了Python某些方面的成功呢?许多大型的网站都使用Python作为开发语言,这些大型项目的成功,也进一步促进了Python的进化。例如,它是Google的第三大开发语言、多宝箱(Dropbox)的基础语言、豆瓣的服务器语言,甚至美国航空航天局(National Aeronautics and Space Administration,NASA)都在大量地使用Python。

具体到人工智能领域,许多人工智能算法及行业应用软件,都是基于Python实现的。除了已经提到的那些Python的优点,还在于与人工智能相关的工作都不能回避数据处理,而使用Python可以轻松地处理数据文件,进行各种统计分析,这使得开发者不必依赖Excel等商业软件就可以进行数据处理和统计分析。另外,Python还是一种网络编程语言,基于它可以进行网站的构建、分析、数据抓取、构建服务器-客户端的链接等,这使得基于数据流的业务,不需要在多个语言之间进行接口定义和传送,数据的传输也更加直接,这在某种程度上比采用API接口(用于程序或软件之间的沟通)效率更高。当然它最便利之处还在于,已有大量的使用Python的人工智能平台和工具,这种强大的人工智能生态系统使得通过它可以方便地构建和使用各种人工智能方法。