Python 高速增长的三次历史机遇

很多对Python不熟悉的人,认为Python在最近这些年的兴起是运气而已。本文帮助大家回顾一下过去十几年Python的3次增长和对应的历史背景。
Python设计之处的特点,包括易学易用,以及作为胶水语言。易学易用是个难以量化的东西,但至少我接触的绝大多数朋友都认同Python在学习和使用上是比大部分语言简单的。有些人不认同Python通常也不是认为Python相对其他语言难学,而是认为Python的运行速度慢,或者动态类型语言的通病。至于胶水语言就比较窄了,面向作为胶水而设计的语言是很少的,印象里只有Lua算得上一个。另一个Python相较其他语言的优势是字符串处理。
以下介绍Python获得发展的3次机遇期。
2006年的搜索/NLP:2006年前后正好是搜索引擎公司发展的爆发期。那一年Google中国李开复搞了关门弟子计划,百度也做了诸多广告,比如百度更懂中文系列。在那个时代搜索引擎就是IT行业的高科技。之后不久,阿里巴巴也搞了个ASC(阿里巴巴搜索技术研究中心),后来多次追潮流更名,一直作为阿里巴巴内部的前沿研发部门。
而Python用作搜索引擎和NLP是很有历史的。早期Google在90年代开发搜索引擎爬虫就是使用Python实现的。而即便是现在,开发爬虫,Python也基本上就是第一选择。很多人学习Python的入门程序也是爬虫。而Python适合开发爬虫的关键在于Python的字符串处理是很方便的。
也就是从2006年末开始,国内的python-cn邮件列表涌入了大量的新人,并以爬虫为例开始深入学习Python。
2010年的WEB创业潮:2010年开始,国内外出现了新一轮的创业潮,大家开发的是各种各样的网站。此时的WEB开发上,Python已经逐步成为主流WEB服务器开发选项中的一种。相对于同时代的Java和PHP等,有着开发效率上的优势。
正因为早期创业公司需要迅速的迭代和试错,使得这个时代的Python成为了一个不错的选项。进而让更多工程师开始学习起来Python。
也就是从这个时期开始,才逐渐有较多的公司会公开招聘Python工程师。在此前招聘Python工程师的广告是非常非常少见的。
2014年的Deep Learning:从2014年开始火起来的深度学习上,Python的优势是近乎绝对的。深度学习的主流开发语言只有C++和Python两种了,其他语言可以认为根本就没能在这里分到什么像样的空间。所有主流的Deep Learning框架,也是官方直接提供了C++和Python两种接口。而由于C++开发的难度,当前确实有不少从业工程师是直接用Python搞定深度学习的相关步骤。
这次Python的增长期被更多不了解Python的人认为是Python的狗屎运。但其背后的逻辑反倒是非常坚固的。原因就是Python是个很好的胶水。最初的起点是numpy库。
numpy是封装了BLAS的科学计算库。BLAS是对CPU向量指令集高度优化的数学运算库。通过BLAS进行科学计算可以得到顶级的计算性能,这个计算性能比未经向量指令集优化的C程序还能快上数倍。而numpy的另一个重要特点就是,把buffer做了封装,使得buffer的内容是无需Python处理的,而是实际交给特定的软件库来处理,numpy只是负责维护该buffer的生命周期,形状等元数据。这就使得numpy的计算性能不会受到Python的影响,但同时却可以利用Python的易学易用来管理buffer的生命周期。
【Python 高速增长的三次历史机遇】numpy对buffer的管理带来的易用性优势在后来得到了很大的发展。如以下几点:
OpenCV:在opencv-python中就是使用了numpy.array来管理图像数据,却没有像C++接口一样使用Mat。同样的顶级性能。
PyCuda/PyOpenCL:也是利用了numpy.array来透明传递数据给GPU做高性能计算。尤其是集成了JIT,使得可以用字符串的方式传递kernel function,不再像C++一样要独立编译一遍。
Caffe/TensorFlow:同样利用了numpy.array,并利用了PyCuda/PyOpenCL的集成。
所以这样一路发现下来,由Python是个好胶水,就真的把若干很好用的库全流程的粘在了一起。在流程集成上都是顶级的性能,而没有Python的性能损耗,同时带来了非常好的易用性。
相比其他语言,对这些C/C++库的玩法都是先封装一层对象,包准封装的前后对不上。而且因为大部分语言并不是面向胶水设计,开发C接口都很困难。自然与这些高性能计算库的结合困难重重。累计起来就与Python产生了差距。
以上就是本次分享的所有内容,想要了解更多 python 知识欢迎前往公众号:Python 编程学习圈 ,发送 “J” 即可免费获取,每日干货分享
Python 高速增长的三次历史机遇
文章图片

    推荐阅读