热门标签 | 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 很难与那些已经提供了类似支持的语言进行竞争。

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



推荐阅读
  • MyBatisCodeHelperPro 2.9.3 最新在线免费激活方法
    MyBatisCodeHelperPro 2.9.3 是一款强大的代码生成工具,适用于多种开发环境。本文将介绍如何在线免费激活该工具,帮助开发者提高工作效率。 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 本文探讨了 Java 中 Unsafe.park 和 Object.wait 方法的区别,分析了它们的性能和适用场景,并提供了专业建议。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 多线程基础概览
    本文探讨了多线程的起源及其在现代编程中的重要性。线程的引入是为了增强进程的稳定性,确保一个进程的崩溃不会影响其他进程。而进程的存在则是为了保障操作系统的稳定运行,防止单一应用程序的错误导致整个系统的崩溃。线程作为进程的逻辑单元,多个线程共享同一CPU,需要合理调度以避免资源竞争。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • CSS3 @font-face 字体应用技术解析与实践
    在Web前端开发中,HTML教程和CSS3的结合使得网页设计更加多样化。长期以来,Web设计师受限于“web-safe”字体的选择。然而,CSS3中的`@font-face`规则允许从服务器端加载自定义字体,极大地丰富了网页的视觉效果。通过这一技术,设计师可以自由选择和使用各种字体,提升用户体验和页面美观度。本文将深入解析`@font-face`的实现原理,并提供实际应用案例,帮助开发者更好地掌握这一强大工具。 ... [详细]
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Spring Cloud 学习指南:初学者入门篇
    Spring Cloud 学习指南:初学者入门篇 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 成都服务器租赁适用于哪些网站业务部署——Vecloud专业解析
    成都,作为四川省的省会,不仅是西南地区唯一的副省级城市,也是国家重要的高新技术产业基地和商贸物流中心。Vecloud专业解析指出,成都服务器租赁服务特别适合各类网站业务的部署,尤其是需要高效、稳定和安全的在线应用。无论是电子商务平台、内容管理系统还是大数据分析,成都的服务器租赁都能提供强大的支持,满足不同企业的需求。 ... [详细]
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社区 版权所有