10月,Python历史性登顶TIOBE排行榜(并在11月保持蝉联),20年来首次将C和Java挤下榜首。这成为Python的光荣一役,也标志着一个编程语言的巅峰时刻。但是,Python惊人成功的背后又隐藏着怎样的原因?
Python的起步颇为低调,它只是Guido van Rossum在1989年假期时打发空闲时间的爱好。他也很难想到,他创造的这一编程语言会在30年间为IT世界一隅带来如此的深远影响。
Van Rossum将Python定位为解释型通用编程语言,他最初的设计目标是, Python应该是一种简明易懂好上手的语言, 像简单英语一样好理解,适用于日常工作,并且开源。
当Python社区聚集了越来越多的人,这些人又用Python做着各种各样的事,这个设计目标就为社区成员间的交流奠定了良好基础。看上去程序员是在为了工作写Python,但实际上他们也 真的享受其中 。
“我选择Python,是因为用它写代码真的很有意思,”Calvin Hendryx-Parker是一家咨询公司的联合创始人和CTO,这家公司主要做Python定制化开发。
“我乐在其中,因为这不只是搬砖,而是 具有创新和创造性的工作 。这更像是一种匠心式的技能,工程师每天做着一成不变的工作,但工匠需要用创造性的方式解决各种问题,因为他们周围的环境是持续变化的。”
Calvin Hendryx-Parker的公司创立初期主要做定制化Web应用开发,但越来越多客户希望他们能为大数据项目落地提供帮助。Python不是项目涉及的唯一语言,他们通常也会适度加入其他人擅长的脚本语言。
“好处是,很多大数据工具开始基于Python构建了,”Calvin Hendryx-Parker表示, “Python更像是一种数据领域的通用语言。”
Python蝉联11月TIOBE榜首
(图片来源:TIOBE Index)
Python的全面生态
Python的数据生态覆盖广泛并在持续扩展。从支持TensorFlow运行Keras的Python封装,到诸如scikit-learn 和 NumPy的机器学习库,从面向Spark和Dask集群的Python接口,到利用Jupyter notebooks或者Pandas进行代码测试,数据科学家和工程师可以在熟悉的Python语法下做任何事。
Python的灵活性,是一家位于华盛顿特区的企业最看重的,他们使用Python开发数据pipeline工具。其CTO Chris White认为,对他们来说Python就是完美的工具。
“从更高层次上看,我们的设计敏感度,就是既有合理的默认设置也可以深度配置,这样在有需要的时候可以快速的运行起来,在想深入细化的时候也可以做到深入细化,”Chris White表示,“Python帮助我们实现了这一目标,因为说到底 Python是一种非常灵活的语言 。你不需要知道‘编译是什么’之类的事,你就可以直接写出一段脚本。”
一切都可以回到van Rossum为Python设计的风格,就是 要简单不要复杂 。归功于其即时可读性,Python的入门门槛极低。这使得无论是初级码农还是资深程序员都可以一样的使用Python。
“Python是我了解的不多的几种可以写原始脚本的语言之一。你不需要懂太多就可以可以直接运行它,”Chris White说,“所以Python非常易用。当然你也可以做其他事,比如用C写扩展之类。”
灵活与性能
与C语言相比, 性能并不是Python的强项 ,这是为了即时的灵活性和易用性而做的一个折中。还好有C扩展,提供了实现更高性能的路径。但是在很多情况下,高性能并不是必须的。
“对于实时处理之类的极端需求,有很多其他编程语言比Python要快得多,”Chris White表示。“但是对于人们平常所处理的90%数据,都无需这样的高速度。”
Python的另一大劣势是 类型安全性 。Python是强类型语言,这也是被一些人所诟病的。但人们已经开始意识到,这并没有想象中那么严重,Chris White说。
“人们一开始对很多事情都有抱怨,诸如速度和类型安全,现在态度也缓和了一些。可能在人们的部分应用中这并不是什么大事,”他说,“不支持数据的类型检查,确实是个问题,因为大部分数据是非结构化的。但是Python至少开始迭代并去解决了,而其他语言可能很早就迫使你另做打算。”
开发速度是Python的一大加分项。因为它的易用性, 开发者可以轻松攒出点什么,而不需要非得做成大型项目。 Python的这种随意性在Juypter中表现的淋漓尽致,就算代码并不严谨,你也可以在浏览器中直接运行。
能力放大器
如果使用得当, Python就可以成为能力放大器,提供先进的数据工程和数据科学能力, 如果使用C或Java,你得成为相关专家才能做到。Chris White举例说明,他们的一个客户使用了基于Python的工具来编排颇为复杂的数据工作流。
“这位客户提到,他并不是专业的软件工程师,但也可以写出他认为高度鲁棒、容错的批处理工作流,并且部署在Kubernetes中,”Chris White讲到。“他说,他并不需要完全弄懂那些代码的含义,只要借助相应的工具就能把事做成。”
Python降低了应用门槛, 在Python的灵活性和热情的用户社区的帮助 下,谁都可以写出会被DevOps工程师欣然接受的高质量代码。
“Python让你能够快速搞定事情,”Hendryx-Parker表示。“而且,如果有单元测试或CI/CD部署等其他各种相关需求时, Python也提供了可以轻松转换为完整软件项目的附加能力。 ”
开源社区
Hendryx-Parker认为, 为Python提供又一大加持的是基于其构建的开源社区 。Hendryx-Parker已经参加了Python Conference近20年,并且创立了当地的Python用户社群。
“我们的社群成员都非常优秀,他们也开放欢迎其他优秀人才加入并成为社区一员,这对技术人来说并不那么容易。”
Python有数千个add-ons、addition和integration,绝大部分都是开源的,但其中也有一些维护的并不好。这就导致有时候难免会遭遇到过时或坏掉的Python包,Hendryx-Parker说。
反过来说,如果遇到有用但疏于维护的库,其实也为Python用户提供了一个机会, 通过自愿帮助维护这些代码来回馈社区。
“当我们的客户遇到这样的情况,我们也会劝说他们,允许我们在预算范围内花些时间来改进这些开源项目,”Hendryx-Parker说。“我认为这总体来说是好事,是三赢。如果他们能拿到预算,他们知道他们也需要在供应链中获得这样的能力,就很容易接受了。”
与文档充分的R生态相比,Python生态稍显无序,这就是有利就有弊,Chris White说。
“R确实很强的吸引力,因为它感觉更像是一个标准。R的软件包都在同一个‘宇宙’中,可以很好的协作,我想这就是吸引人们使用R的原因,”他说。“Python更像是野生派,你差不多可以做任何事,但没有Tidyverse那样严格标准化的一整套R包。”
而另一方面,Python拥有如此巨大而开放的社区,用户有大量的支持资源。“社区中有非常多的优质资料,你总能快速找到所需的解答,”Chris White说。“不过答案并不是现成的,我们确实还需要专门去查找。”
Python拥有光明的未来。 它已经处于或者接近每个人心目中的数据科学和数据工程所需技能之首。 如果保持现在的势头,Python看上去肯定会继续增长,直到其他竞争者把它挤下巅峰。
作者:Alex Woodie
原标题:What’s Driving Python’s Massive Popularity?
原链接:https://www.datanami.com/2021/10/20/whats-driving-pythons-massive-popularity/
如果大家在学习Python的过程中不知道学习方向,该怎么学,没有好的系统的学习资料、没人交流解答等等,都可以私我,我都给大家准备好了。https://docs.qq.com/pdf/DR3FNamhPQVpmZnJvhttps://docs.qq.com/pdf/DR3FNamhPQVpmZnJv