贪心ai架构师2期笔记

241 阅读10分钟

Download:学习资料 提取码:pakq

5 月 13 日,由 ThoughtWorks 主办的 2017 技术雷法峰会在北京召开。

  正如官方宣传提到的:“ThoughtWorks 技术雷达” 并非一个客观的行业分析或者报告,也无意成为一份权威的官方文档。由各行各业诸多顶尖技术专家组成的 ThoughtWorks 全球技术委员会(TAB)每年定期讨论全球热门技术的发展现状,并以雷达形式对各类技术的成熟度进行评估并给出建议,为从程序员到 CIO/CTO 的利益相关者提供参考。而这也是大会名称之所以叫 “雷达” 的意义所在。

  13 日上午,ThoughtWorks 高级咨询师,中国区数据团队资深技术专家佟达,在大会上发表了题为《无处不在的Python》的主题演讲。

  Python 已经有将近 30 年的历史,在过去 30 年中,Python 在运维工程师和数据科学家群体中受到广泛欢迎,然而却极少有企业将 Python 作为生产环境的首选语言。在最近几年,这一情况有所改变。随着云计算、大数据以及人工智能技术的快速发展,Python 及其开发生态环境正在受到越来越多的关注,技术雷达上和 Python 相关的技术也越来越多。为什么 Python 成为了 “被选中的语言”?这一趋势将给企业 IT 带来怎样的变化?

  以下为演讲全文(雷锋网做了不改变原意的修改):

  刚才我们的几位同事已经给大家介绍了我们在过去一段时间看到的一些技术趋势,这些趋势怎么样落地到实际呢?今天我们给大家看一看用什么样的语言比较合适。所以我的主题是无所不在的 Python。

  我今天不会讲怎么样用 Python 编程序,我今天主要给大家讲的是 Python 的无所不在。在我们最新的一期技术雷达上面关于无所不在的 Python 是这么说的:Python,这门语言总是不断的出现在有趣的地方。这句话让我想起来我上学的时候,我的注意力不是很集中,好奇心特别强,到处什么事情都想参与一下。老师经常夸我,怎么哪儿都有你?天天不务正业!今天我发现不务正业的说法可以有这样一个说法,就是总是出现在有趣的地方。

  我们看一下 Python 这门语言到底是怎么不务正业的?说起不务正业让我想起来这么一个大人物,他十几岁的时候先进入了一个印刷厂工作作为印刷工,后来成立了自己的印刷公司,再后来发行了报纸,他在上面开始发表文章。当所有人都以为这个人要他要投身在,把自己的余生都投身在印刷行业的时候,他去干嘛了呢?他去成立了北美第一个志愿者组成的消防队。后来他又成立了北美的第一家医院。这个时候他不务正业停不下来了,有一天他到雷雨天放风筝,然后发明了避雷针,对我们的气象事业做出了贡献。后来他成为美国驻欧洲的代表,作为一个非常出色的外交官,在北美独立的过程中又起到了非常大的作用。后来他起草了《独立宣言》,现在他的头像印在美钞上。这个人一生都在不务正业中,这个人在美国最伟大人物排名第五,他就是富兰克林。在他墓碑上刻的是,他说自己是一个印刷工。然后他在印刷工外做了很多不务正业的事情。

  Python 在各大排行榜也能排在前五位,Python 之前是作为系统管理工具的开发语言出现的。在上世纪八十年代末,九十年代初的时候 Python 刚刚发明的那个年代,实际上是处在什么时候呢?各种科学家,工程师都在尝试着不同的操作系统,Python 认为要给程序员们提供一个更好的管理系统的工具,所以为了这样一个目标而发明了 Python。过了二十多年我们发现,可能当年有几百个操作系统在同步开发,到现在是什么情况?可能只剩下了几十个操作系统还活着,而 Python 内置在大部分这些主流的操作系统之内的。为什么 Python 对系统管理工具是非常合适的语言呢?因为它的执行效率远高于 shell,而且开发效率远高于 C。现在我们听到比较著名的操作系统上面都是基于 Python 开发的。当我们发现我们管理任务越来越复杂的时候,我们系统的配置越来越复杂的时候,我们又有了配置管理的概念。而在配置管理领域 Python 也占据了非常多的份额,比如说曾经在技术雷达上也出现过一些系统管理工具里非常著名的技术。当把这些基础设施变成代码管理的时候,我们发现我们其实还希望对这些代码,像我们写业务代码一样做单元测试,做自动化测试。在最新的一期技术雷达里,我们持续关注着这样的趋势,基于前面我们说的系统管理工具技术,像一些专门对基础设施即代码的测试工具,比如 molecule、testinfra 也越来越流行。

  除了在系统管理工具领域, Python 很自然的就平滑地过渡到了软件开发工具领域。从系统管理工具到软件开发领域 Python 一直都在帮助着程序员,帮助着工程师提高效率。在软件开发工具无论是版本控制还是版本评审,Python 进入的都是比较早的,应该说是比较先驱的一波。Python 不仅在早期进入了软件开发工具领域,在新一期技术雷达里也出现了,一种老树开新花的感觉,即使在持续交付领域也是一枝新秀,Netflix 开源的 spinnaker。它主要利用了云技术对一些应用更适合的搭建,它利用了很多云平台以及容器技术,可以和我们现有的架构非常好的融合在一起。

  实际上,在软件开发工具领域里的后来者们可能看起来都比先驱们——比如 Python ——更出色一些,或者接受度更广泛一些。这种情况也给了 Python 去做其他事情的理由,Python 至此就走上了跨界这条路,而且越走越远。

  Python 首先尝试的领域是WEB开发。我们说 Python 做WEB开发,大家也都听说过,但是WEB开发并不是 Python 的主要标签。比如曾经在我们技术雷达上出现的一门技术,它可以基于 Python 开发一些WEB的网站,还有不少更小巧的、基于Python 的网站,比如 Youtube 等等网站。但是 Python 语言本身和其他语言相比,尤其就是和互联网泡沫同一年出生的语言,Python 在外部开发上的专注度看起来总是心不在焉。

  在这个时候 Python 社区把注意力都放在哪儿了呢?都放到了科学计算领域。那个时候科学计算领域已经有了几个比较著名的软件,那么 Python 凭什么在这个领域里占有一席之地呢?实际上在 1995 年,也就是大家都开始研究互联网的时候,Python 的作者就参加了一个由一些科学家组成的小组,唯一目标就是使 Python 在科学计算领域广泛使用起来。为了使 Python 符合科学家的直觉并让他们使用,Python 的作者甚至改了一些Python 本身的语法去讨好科学家,让科学家能更平滑使用 Python 做一些科学计算。所以到了今天我们发现 Python 在科学计算领域已经是一个非常重要的分支。就在Python 科学计算小组成立的同一年有一个软件库发布出来,就是 Maple。

  在 2007、 2008 年这个时期,我们进入了云计算时代,基于过去一段时间 Python 在系统管理工具的积累,以及其本身具备了非常好的系统集成能力,Python 在云计算领域可以说大放异彩。最著名的就是大家都应该都听说过的 Openstack,它里面最著名的开发语言就是 Python。不仅在私有云领域,在公有云领域,包括 AWS,包括 Google 云,当这些公有云提供出 SDK 的时候,它们首选的技术路线依然是 Python。现在在阿帕奇基金会下面有一个项目,它是用来评各个不同云之间异构性的,也是基于 Python 做的。在云计算后期兴起的容器技术也是基于 Python 做的。

  当云计算技术发展起来后,发现还需要大数据技术。其实Python 并不是一门开发语言,但是因为 Python 很早就在科学计算领域占据了一席之地,所以当我们希望能够让数据分析师使用大数据工具的时候,Python 变成了一个不可忽视的因素。所以很多开源工具或者是大数据主要使用的工具都会提供一个 Python 的接口给数据分析师使用。在 Spark 刚刚发布的时候,它也带了一个 Python 接口,这都是曾经在技术雷达出现的技术。虽然底层实现不以 Python 为主,但是上层的接口一定会有 Python 存在。除了本身主要的数据分析工具以外,我们还有什么呢?比如 Data Pipeline,最新一期雷达里介绍的 Airflow可以让工程师将 Data Pipeline 更好的可视化出来,可以知道数据怎么样一步一步处理的。这个工具相比于之前的 Hadoop 的生态环境它的可视化效果更酷炫一些,可用性更高。

  最近这两年最火的词就是人工智能。Python 过去多年积累在人工智能到来的时候出现了大爆发。在传统概念中,我们认为人工智能主要谈到的是感知层的技术,比如图像处理、自然语言识别等等这些技术。尽管像 OpenCV 等工具,底层工具不一定以 Python 实现的,但是它真正用到最广泛的地方却是以 Python 接口提供出来的这部分内容。在做图像识别的时候,尽管用的是 OpenCV,但是用的都是 Python OpenCV库。最近两年人工智能火起来,非常重要的一个原因是深度学习火了,深度学习被证明非常有效,尤其在数据量特别大的情况下去洞见一些特征的时候,比人工寻找更有效一些。在深度学习领域几乎没有任何其他语言可以跟 Python 相提并论的,比如 Caffe,Theano,TesnorFlow,Keras 这些非常流行的深度学习框架,都是以 Python 为主要开发语言。还有一个有趣的现象,就是 FB 深度学习的工具 Torch,最早它的前端工具是 Lua,在2017 年发布了一个新的版本叫做 PyTorch,它发现如果不提供 Python 接口的话,它好像没有办法流行起来。这再次证明了在深度学习领域目前 Python 是处于非常主导的地位。