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

栏目: Python · 发布时间: 5年前

内容简介:花下猫语:Python 在最近几年确实很火,这导致很多人对 Python 心生疑惑:Python 这么火,到底是名副其实的呢,还是被培训机构们过度吹捧了呢?跟其它语言相比,Python 真的有那么“无所不能”么,它到底有什么长项是旁人不能及的?事实上,Python 诞生快 30 年了,在最初的 10 多年里,它根本无法与其它编程语言抗衡。不像今天某些语言的家里有个富有的爹扶持,Python 就是一介穷小子出身,能取得今天的成绩,实属不易。

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

花下猫语:Python 在最近几年确实很火,这导致很多人对 Python 心生疑惑:Python 这么火,到底是名副其实的呢,还是被培训机构们过度吹捧了呢?跟其它语言相比,Python 真的有那么“无所不能”么,它到底有什么长项是旁人不能及的?

事实上,Python 诞生快 30 年了,在最初的 10 多年里,它根本无法与其它编程语言抗衡。不像今天某些语言的家里有个富有的爹扶持,Python 就是一介穷小子出身,能取得今天的成绩,实属不易。

关于 Python 的“天赋”和后天习得的种种“武艺”,我们已经多篇文章写过,后续也会继续写下去。而今天分享的文章,主要介绍的是帮助 Python 成长起来的三次重大机遇。

这篇文章来自知乎的一个问答,作者  gashero 是前果壳网技术总监,资深 Python 工程师,多才多艺的极客。为保证阅读体验,转载时略有删减。

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

图片来源:pexels

作者: gashero (本文经原作者授权转载,不得二次转载)

https://dwz.cn/CmzWkFQD

很多对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服务器开发选项中的一种。相对于同时代的 JavaPHP 等,有着开发效率上的优势。

正因为早期创业公司需要迅速的迭代和试错,使得这个时代的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产生了差距。

最后补两句:

1、 Facebook工程师给Python学习者的进阶指南  极客时间的课程优惠还有 2 天结束,有需要的同学不要错过了。

2、本月 25 日开始,有当当满 400 减 230 活动,我这里有优惠码,想购书的同学请留意了(数量有限,可提前找我预约)。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Thinking Recursively

Thinking Recursively

Eric S. Roberts / Wiley / 1986-1-17 / USD 85.67

The process of solving large problems by breaking them down into smaller, more simple problems that have identical forms. Thinking Recursively: A small text to solve large problems. Concentrating on t......一起来看看 《Thinking Recursively》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具