乐趣区

关于python: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 的生命周期。

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”即可收费获取,每日干货分享

退出移动版