Python已经成为目前使用最广泛且用户增长最快的编程语言。它优雅简洁的语法、强大的第三方库支持等都是Python能够风靡各行各业的原因。然而,你或许不知道,Python能够实现用户飞速增长,背后其实另有玄机。
就让大讲台老师从近年来大数据的兴起说起,为你娓娓道来Python火爆的真正原因。
Ruby与Python的“Web开发语言之争”
大讲台老师再往回讲讲,在大数据还没有真正风靡之前,Ruby和Python曾在成为最受欢迎的“web开发语言”上发生过激烈的争战。 两者都非常适合开发Web应用程序。 Ruby的受欢迎程度与Rails框架密切相关。 在那个年代,大多数自称为“Ruby程序员”其实更应该称自己为 “Rails程序员”。 而Python在学术界和少数不同行业已经相当完善。 在Python中,与Rails最相近的是Django,Django尽管在Rails之前发布,但它的受欢迎程度似乎远远落后于Rails。
很多人认为,Python和Ruby的性能都很相似,最终只会有一种语言能够赢得“web开发语言之战”。 但实际上,Ruby的流行度与Rails密切相关,而Django只代表了一个已经很活跃的Python生态系统的一小部分。事实也证明,“Web开发语言之战”的重要性远低于人们的预期。即便从很多层面来讲,Ruby都凭借Rails赢得了这场争战,但这丝毫不影响Python成为当今最受欢迎的语言。这到底是为什么呢?
Oliphant的大手笔
为了揭开这个谜团,大讲台老师就不得不提一下一位大佬了,他就是Travis Oliphant。追溯到2006年。当时,Travis Oliphant还是BYU的助理教授,他仍未创办Anaconda(注:Anaconda是一个完全以Python为基础的,目前最成功的商业数据科学平台之一)。 一年前,他参考科学计算库Numeric开发了NumPy。 他后来又成为SciPy的创始人并兼任了PSF的主管。
在2006年,他与Carl Banks一起提交了PEP 3118,这是Python的“缓冲区协议”的修订版。这为Python的兴起埋下了重要伏笔。
Python的缓冲协议:Python风靡全球的首要原因
缓冲器协议是一个极低级别的API,被其他库用来直接操纵内存缓冲区。 这些是由解释器创建和使用的缓冲器,用于存储连续存储器中某些类型的数据。
提供这样一个API的主要动机是:消除在只读取时复制数据的必要性,澄清缓冲区的所有权转移语意,并将数据存储在连续的存储器中,其中读取访问速度非常快。 那些将使用该API的“其他库”一般都是用C写的,而且对性能十分敏感。 这一新协议意味着,如果我创建了一个NumPy的int数组,其他库可以直接访问底层内存缓冲区,而不是间接访问或者在使用该数据之前复制该数据。
现在问题来了:什么类型的程序员会从快速、零拷贝的大量数据获取中受益呢?
当然是数据科学家了!
让大讲台老师梳理一下事件的发展过程:
Oliphant和Banks提出了Python的缓冲协议的修订,以简化对刚开始的NumPy项目工作所驱动的某些数据结构的底层内存的直接访问。
PEP 3118提交,被认可,实施。
受益于PEP 3118的实现,Python已悄然成为一个非常吸引人的编译语言。在此基础上,就有了很多基于C语言扩展的数字计算库被开发出来。
Python和Ruby在网络上一决雌雄,大多数人认为“Web开发语言之战”必有分晓。
随着磁存储设备价格暴跌,存储大量数据以供日后分析变得可行。
对新一代程序员的需求发生变化:具有统计学背景,最好还得有应用数学背景的,且先前有过一些编程经验的程序员开始被哄抢——数据科学家的时代来临了!
数据科学家们想寻找一种既具有表现力又快速的语言,所有的这些需求都指向于Python。
后来,就如大家看到的那样,Python受到万千宠爱,一跃成为了最受欢迎的编程语言。