很多对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的生命周期。
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” 即可收费获取,每日干货分享