热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python的顶级高手_《Python高手之路(第3版)》——1.5JoshuaHarlow访谈

本节书摘来自异步社区《Python高手之路(第3版)》一书中的第1章,第1.5节,作者[法]JulienDanjou

本节书摘来自异步社区《Python高手之路(第3版)》一书中的第1章,第1.5节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 Joshua Harlow访谈

Joshua Harlow是一名Python开发人员,自2012年起任雅虎OpenStack团队的技术主管之一,他还曾作为CTO小组的成员之一负责调研IaaS解决方案。自那时起他陆续开发了若干Python库,如Taskflow(https://git.openstack.org/cgit/openstack/taskflow/)、 automaton(https://github.com/harlowja/automaton) 和Zake(https://github.com/yahoo/Zake)。

是什么促使你开始使用Python的?

我开始使用Python(那时候肯定还是Python 2.3或2.4)编程大概要追溯到2004年,那时我在IBM纽约(我的大部分亲戚和家人都住在纽约州北部,离他们很近)的Poughkeepsie实验室做实习生。我基本已经忘了当时具体做什么,但是主要用wxPython(http://www. wxpython.org/)和一些Python代码自动化某些系统。那就是我第一段和Python有关的经历,而且我将其称为我所迈出的第一步(那时候基本就是不断地输入self)。在实习结束之后我返回了学校(克拉克森大学,Clarkson University),后来我又读了研究生(罗彻斯特理工学院,Rochester Institute of Technology),并最终在毕业后加入雅虎,工作至今。

在接下来的几年里我在不同的团队(主要使用PHP、C++和Java)里工作过,而且还有幸和一些PHP核心开发人员一起工作,如Rasmus Lerdorf(https://en.wikipedia.org/wiki/ Rasmus_Lerdorf,他发明了PHP)和Sara Goleman(他负责http://www.yahoo.com 的后台和其他一些工作)。

最终我止步于CTO小组,在那里我和其他一些成员负责调研可用的开源云平台。最终我们选择了OpenStack(我们还调研了CloudStack以及基本上已经废弃的Eucalyptus),它几乎完全用Python开发(很可能是现存的最大的两三个Python项目之一)。我自2012年加入OpenStack社区并先后参与了若干组件的开发,目前我主要专注于OpenStack内外皆可用的扩展库(在oslo项目下,http://wiki.openstack.org/wiki/Oslo) 开发。我坚信(并且作为一名鼓吹者),创建OpenStack内外皆100%可用的库是非常重要的,而且我感觉这可以确保社区所开发的设计/开发良好的库不光是被它自己所使用(这意味着那些库不能令更大的开源世界获益,我觉得这不太好,也不应该是开源该有的样子)。

关于这门语言,你喜欢什么不喜欢什么?

我喜欢的一些方面如下(不完整列表)。

简洁。Python可以让新手开发人员迅速上手,也能让有经验的开发人员很容易地持续使用它。

代码风格检查(审阅代码是软件开发的重要组成部分,而且可以通过flake8、pep8和pylint这样的工具来保持一致性)。

自由选择编程风格并随意组合(但不会给自己带来麻烦)的能力。

一些我不太喜欢的方面如下(不完整列表)。

Python 2到Python 3的切换仍然比较痛苦(尽管six已经解决了大部分问题),但强制切换对维护一个社区来说似乎并不是个好办法。

Lambda太过简单,应该赋予其更多的能力。

缺乏好用的包安装器(pip仍然需要改进,如果能有个真正的依赖处理器就太好了)。

GIL(以及对它的需求)令我很不爽。

对显式asyncio模型的补充。我其实更乐于看到对隐式模型(如eventlet)的原生支持,而且现在已经有方法对使用green-threads和native-threads(对运行代码是透明的)进行切换(在解释器启动的时候)。在高并发/负载的情况下,我觉得无论如何都不能用单进程,反倒宁可让隐式的green-thread风格仅作为一种方式存在,人们如果想用的话(如果想得到额外的性能提升,那么在不得不切换到多线程之前,早晚都得做)可以切换到上面(这使得无需额外工作便可实现到新模型的转换)。

割裂的Python社区,主要是关于cPython和pypy(以及其他变种)的拆分。这件事让人总觉得不太对,而且应该互相协作以便两个项目能够合并在一起(共赢?)。

你最近在开发一个名为debtcollector的新库,进展如何?

进展很顺利!前面提到的简洁性使得开发一个新库非常容易,而且能够很容易地发布以便为他人所用。因为其代码主要源自我开发的另一个库(taskflow),所以代码的移植和扩展相对很容易而且不用太担心API的设计。我非常高兴地看到其他人(OpenStack社区内外都有)也对它有需求并开始使用这个库,我希望这个库能进一步成长,从而包含一些其他库(或应用)认为有用的更为丰富的废除模式。

依你之见,Python最大的缺憾是什么?

这是个很难的问题,因为并不多,所以我只挑两个我认为能让Python更现代的(我所认为的现代):

大多数新兴的语言(如rust、使用Chrome V8 Javascript引擎的Node.js以及其他语言)都包含了Python所具有的许多能力,但是它们都是即时(JIT)编译的。如果默认的cPython也能即时编译(并且能高性能地这样做),以便Python能够在性能方面能与这些新兴语言进行竞争。(是的,我知道开发出一个好的JIT编译器会花掉一个团队若干年的时间,但是我相信PyPy的相关工作已经进行一段时间了?)

随着时间的推移(在我协助开发taskflow以及其他库之后),对我来说一个越来越明显的需求是,Python真的需要一套强大的并发模式。我指的不是asyncio和/或threading风格的模式(我认为这些太底层),而是更高层次的有助于使应用程序能够有效地运行于更大规模的负载的概念。我知道一个名为goless的Python库(除taskflow之外的),它从Go语言(它提供了内置的并发模型)借鉴了很多概念。我相信这些更高层次的模式有必要作为标准库内置的顶级原函数/模式(或者通过其他机制提供)并妥善维护,以便新手开发人员(甚至是有经验的开发人员)能随心所欲地使用它们。我甚至觉得,如果没有这些功能,Python 很难与那些已经提供了类似支持的语言进行竞争。

有机会再谈,愿你编程顺利,生活愉快!



推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • MateCloud 3.5.8 发布,基于 Spring Cloud Alibaba 的微服务框架
    基于SpringCloudAlibaba的微服务框架MateCloud3.5.8已经发布。此版本更新内容包括:功能升级针对MybatisPlus3.4.3新特性进行微调依赖升级升级至SpringCloud2020.0.3升级至Mybatis-Plus3.4.3详 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • 寻求更强大的身份和访问管理(IAM)平台的企业正在转向云,并接受身份即服务(IDaaS)的灵活性。要为IAM选择正确的场外解决方案,业务管理人员和IT专业人员必须在实施之前评估安全 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有