内容来源:2017年5月13日,ThoughtWorks高级咨询师佟达在“2017技术雷达峰会|洞察构建未来的技术和趋势”进行《无处不在的Python》演讲分享。IT 大咖说(WeChat_ID:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
阅读字数:1699 | 6分钟阅读
观看嘉宾完整演讲视频及PPT,请点击:http://t.cn/EUwp8g5
摘要
Python已经有将近30年的历史,在过去30年中,Python在运维工程师和数据科学家群体中受到广泛欢迎,然而却极少有企业将Python作为生产环境的首选语言。在最近几年,这一情况有所改变。随着云计算、大数据以及人工智能技术的快速发展,Python及其开发生态环境正在受到越来越多的关注,技术雷达上和Python相关的技术也越来越多。为什么Python成为了“被选中的语言”?这一趋势将给企业IT带来怎样的变化?
不务正业的Python
说起“不务正业”让我想起了一个大人物。他在十几岁的时候进入了印刷厂工作,当一名印刷工。之后成立了自己的印刷公司,出版报纸发表文章。当所有人都以为他会把余生都投入到印刷行业的时候,他却去成立了北美第一家由志愿者组成的消防队。再后来他又成立了北美的第一家医院。又有一天他心血来潮地在雷雨天里放风筝,由此发明了避雷针,为气象事业做出了伟大贡献。他还作为美国驻欧洲的外交官,在北美独立的过程中起到了巨大作用。他参与起草了《独立宣言》,现在他的头像被印在了百元美钞上面。
这个人的一生都是在“不务正业”之中,他就是美国最伟大人物第五位——本杰明·富兰克林。
技术路线各大编程语言排行榜前五位——系统管理工具开发语言Python
系统管理工具
在Python刚刚出现的时候,所有人在开发各种各样的操作系统,而Python选择了另一条路。
Python是以给程序员们提供更好的管理系统的工具而发明出来的。现在Python内置于大部分主流操作系统之内,执行效率远高于shell,开发效率远高于C。
软件开发工具
从系统管理工具,到软件开发工具,Python一直在帮助工程师提升效率。
在软件开发工具领域,无论是构建工具还是版本控制,或者是代码评审,Python都属于是先驱。
Python不仅在早期介入到软件开发工具领域中,Spinnaker在持续交付领域也算是新秀,它主要是利用了云技术来搭建持续交付流水线。
在Python对于软件开发工具这几个领域里面,它的后来者看起来都比先驱要出色一些,所以Python自此就在跨界的这条路上越走越远。
WEB开发
首先Python尝试的是WEB开发。互联网时代来临,各个编程语言都在发力争抢WEB开发的地盘,Python却显得心不在焉。
Django这门技术可以基于Python去开发一些WEB的网站,还有一些更小巧的比如Flask,Tornado,Pyramid。基于Python开发的WEB网站也有不少,比如著名的Youtube,Reddit,Pinterest,Dropbox,Douban。
但是Python这门语言本身和其它语言相比,在WEB开发上Python的专注度总是不够,看起来“心不在焉”。
科学计算
曾经的科学计算领域,工具有Matlab, Maple, Mathematica,编程语言有Fortran, Pascal。
机器学习流行起来后里面关联的一个技术就是Scikit-learn,是结合了NumPy, SymPy, SciPy,还有可视化技术Matplotlib, Jupyter Notebook等等结合起来的工具,在机器学习领域有非常大的用户群。现在在生产环境当中,在工程领域也在逐渐开始流行起来。
云计算
在2008年之后,我们进入了云计算的时代。得益于在系统管理工具方方面面的积累,以及Python语⾔言强大的系统集成能力,让Python在云计算领域大放异彩。OpenStack里面最主要的开发语言就是Python。
不仅是私有云领域,在公有云领域,像aws-cli, gcloud等等这些公有云希望提供给开发者SDK,或者以命令行方式提供的时候,首选依然是Python。
大数据
尽管Python并不是大数据工具软件的主要开发语言,但却是每一个大数据工具不可忽视的力量。
Pandas是Python作为主要开发语言的一个数据分析工具。在Spark刚刚发布的时候,也带了PySpark这样一个接口。虽然底层实践不一定是以Python为主,但是上层接口一定会有Python的存在。
除了主要的数据分析工具以外,还有流程编排。Airflow可以很好地让我们的工程师可视化地去编辑,让我们更清楚地知道数据是怎样一步一步处理的。这个工具的可用性比较高,可视化效果也更为酷炫。
人工智能
在人工智能,尤其是深度学习领域,Python占据主导地位。尽管像OpenCV还有sox这样的工具,它本身底层不一定是以Python来实现的,但真正运用最广泛的地方却是以Python接口提供出来的这部分内容。包括我们在做图像识别的时候,即使用的是OpenCV,但实际上大家用的都是Python的OpenCV库。
早期的自然语言处理都是基于斯坦福的NLTK,而在最新一期的《技术雷达》中我们发现了SpaCy。它是一个希望能用现代化的自然语言处理技术,同时又能支持生产环境的这样一个工具。它的出生就是奔着希望能够让自然语言处理在生产环境领域中使用的。
人工智能火起来的一个原因是因为深度学习火了,深度学习被证明了特别有效。尤其是在数据量特别大的情况下我们去发现里面一些特征的时候要比人工地寻找特征更有效。在深度学习领域几乎没有其它语言可以和Python相提并论。比如著名的Caffe也是在《技术雷达》里出现了的。TensorFlow是谷歌开源的深度学习框架。Keras是基于Theano和TensorFlow可以做顶层计算图的编排、深度神经网络设计的一个语言,也是基于Python来做的。
为什么是Python
业务没有线上与线下之分,只有已经数字化和即将数字化之分。
模糊的行业界限
比如做视频的网站开始做汽车,做手机的公司开始做空气净化器,自行车可以连上互联网。现在这些都和软件、IT、互联网相结合了。
更快的交付速度
DevOps运动的兴起让开发、测试、运维紧密的合作。平台的兴起让工程师可以专注在业务上。新一轮人工智能浪潮让软件有可能自我学习,自我进化。
技术领域细分
每一个技术都可能是一个非常深的领域。对于一个开发人员我们可能需要了解DevOps、云计算,需要学人工智能、IOT、大数据、Paas、Web开发等等。可能一个业务需要使用以上所有的技术。对于开发人员来说学习每一项的成本都是非常高的,而对于决策层来说也无法接受让开发团队一切从零开始。
人生苦短,我用Python
幸好我们有Python。因为Python过去多年在不同的领域中“不务正业”的表现让Python成为了一个当我们尝试在各个领域都要做一点事情时的最佳选择。这就是Python在现在如此流
网友评论