Python怎么变得如此流行

2020-05-18 17:10:02 浏览数 (1)

翻译:老齐

注:本文选自《Behind the Code》。

与本文相关的图书推荐:《Python大学实用教程》


StackOverflow在2019年做的调查表明,Python已经在“开发者喜爱的编程语言”中名列第二,超过了Java;在最常用的编程语言中,Python排名第四,位于JavaScript、HTML和SQL之后。自Python发布以来的30年里,它在忠实于核心原则的同时,一直在努力发展,这一点在Python之禅中得到了证实。随着Python在程序员中受欢迎的程度日益提高,现在似乎是研究Python历史的最佳时机,让我们来揭示它是如何成为世界上最有影响力语言之一的。

根基深厚

Python最初是由吉多·范·罗苏姆(Guido van Rossum)在20世纪80年代后期创造的,用于继承和改进ABC语言。作为仁慈的终身独裁者,范·罗苏姆在2018年7月之前一直领导着Python项目,正是在这个发展过程中,它坚持了下面的核心原则。

  • 可读性:Python的简单语法与自然语言很接近,提高了程序员的工作效率,给编程带来了乐趣。
  • 可扩展性:Python被设计成为“小核心”、“大标准库”和“易于扩展”的类型,这允许程序员可以利用现有的程序,增加新的模块。
  • 可维护性: 在Python中 “应该有一种,并且最好只有一种明显的方法来解决问题”,Python的这一特性使得编码标准、样式和建议成为可能,它提高了项目的可读性和可维护性。

许多程序员将Python的流行归功于它对这三种原则的顽强坚持。Salt开源项目的创建者、SaltStack的首席技术官Thomas Hatch来说,可扩展性是其成功的关键。他说:“Python在很多方面都很出色,但最棒的是它能够很好地处理多种语言。这就是它成功的原因。你可以将Python与其他语言结合使用,这些语言可能在其他领域具有优势。这就为各种编程问题提供了完整的解决方案。”

早期版本

1994年1月,Python发布了1.0版,这个版本受Lisp影响,引入了lambda、reduce()、filter()和map()等函数式编程。五年后,范·罗苏姆面向开发者推出了CP4E方案——Computer Programming for Everybody,目的是使程序更易读,鼓励遵从基本的编程格式。正是其干净的语法,Python才能扮演重要角色。

那个年代,Perl是当时流行的脚本语言,还没有多少人使用Python,尽管它也在某些方面学习了Perl的做法,例如加载模块等,但许多开发者还是忽视了Python。只是一些寻找Perl替代品的开发者才发现Python是他们所需要的。

同时,在面向对象编程的世界中,迎来了Visual Basic和C/C 的时代和Java的兴起。事实上,到了90年代末,有了Sun Microsystems的支持,Java被誉为C/C 的替代品,注定要占据主导地位。

成熟期

Python核心开发团队迁移到BeOpen.com并组建PythonLabs团队之后不久,于2000年发布了Python2.0。在这个版本中,引入了列表解析,并且在函数编程中借鉴了Haskell的一些特性。第二年年底,又发布Python2.2,这个版本中将语言的类型和类统一到一个结构中,使得Python的对象类型能够完全一致地面向对象。

尽管Python是一种面向对象的语言,但它从未与Java或其他由公司赞助的语言竞争。相反,它的开发人员把精力集中在语言的发展和社区上。

此时,许多程序员认为Python是一种很好的脚本语言,或用于快速构建项目的原型。随着Java在企业应用中的普及,Python只能在管理数据和运维应用等脚本程序中找到一席之地。又由于它可以与其他语言进行互操作,甚至Java程序员也开始将它用于他们的部分程序,以提高生产效率。

2007年,Dropbox推出,不到一年,它就获得了融资,很快成为完全用Python编写的最大项目之一。此时,许多初创企业都在使用Python进行各阶段的应用程序开发,但作为大型企业的首选语言,Python依然进展缓慢。Dropbox项目的成功改变了这一点,促使业界的许多技术经理更加认真地考虑Python。

第二年,Python3.0发布了。可以说,它是迄今为止最重要的Python版本之一,也是推动Python成为焦点的版本之一。它修复了Python语言中的一些基本缺陷。还保留了与2.x系列的向后兼容性,而其指导原则是“通过删除旧的操作方式减少功能重复”。

Python也开始受到科学界的关注,特别是在神经网络中,Python开始被广泛使用。随着NumPy库的开发,Python开始被视为R、Matlab和其他用于研究项目的科学计算语言的替代品。

大数据、机器学习和数据科学的兴起

新世纪以来,公司存储、跟踪和管理的数据量呈指数级增长。此外,从2005年起,Facebook、Instagram、YouTube和Twitter等社交媒体公司也开始流行起来。到2019年,美国74%的成年人至少使用一个社交媒体平台。营销人员对突然从社交媒体上获得的大量数据欣喜若狂,各地的初创企业也开始纷纷利用这些数据。因而,在此期间,许多B2B和B2C的应用在初创企业界得到发展。

由于Python便于使用,这些年轻的公司发现它是早期开发中最划算的解决方案。因而,Python成为管理社交媒体数据的首选语言。与Java等语言相比,Python提高了程序员的工作效率。如前所述,它为编程注入了乐趣,节省了时间和金钱。

2008年金融危机后,金融界掀起了一股自动化浪潮。随着监管审查的加强,大型金融机构需要找到更好的方法来进行交易管理、风险管理、以及运营和销售工作流程方面的管理,以减轻系统性风险。经济复苏在望,对冲基金率先利用机器学习和数据科学寻找交易机会。很快,这些机构就选择用人工智能替代工作流程中“人工”干预的部分,从而以更清洁的方式管理金融世界每天生成的大量数据。

随着数据在金融界和初创企业界的迅速增长,机器学习和数据科学很快成为程序员新的“热门”职业。突然间,技术人员越来越需要编写算法,如:神经网络和强化学习算法等。2019年初,在分析其用户数据后,求职网站Glassdoor表示,数据科学家被评为美国最有前途的工作。

随着需求从软件编程向数据科学的转变,工具的需求也随之出现。从研究和金融领域开始的各种探索受到了谷歌和Facebook等大型科技公司的支持,这些工具包括以下3个Python库:

  • Pandas:由Wes McKinney在2008年启动的一个项目,对财务数据进行定量分析。
  • Scikit-learn:由David Cournapeau在2007年发起,它使程序员能够使用机器学习和数据科学算法。
  • Matplotlib:由John D.Hunter于2008年开始,将MATLAB中的许多图形功能移植到Python中。

2010年到2015年间,Python正在与R竞争机器学习和数据科学的首选语言,当时有很多统计学家使用R进行分析和可视化。但Python生态系统增长迅速,作为一种编程语言,它比R强大得多,是将机器学习代码生成完整的产品系统的唯一选择。

Facebook、Google和Netflix等大型科技公司很快成为机器学习和数据科学领域的先驱。这些公司使用Python开发了工具、编码规范、最佳实践、算法和扩展解决方案,包括以下示例:

  • TensorFlow:谷歌于2015年启动的一个项目。
  • Seaborn:由MichaelWaskom于2012年创建,旨在改进科学计算中的数据可视化工具。

随着Python现在成为机器学习和数据科学的首选语言,程序员开始与数据科学家、机器学习工程师和研究人员密切合作,开发更复杂的人工智能应用程序。Andy O’Harney是人工智能研究人员、软件工程师和ObjektivApp的创始人。他说:“我们让工程师和研究人员从第一天起就开始合作,当他们完成工作后,很容易把代码传给软件工程师,然后说:‘好啦,现在就把它产品化。’我认为这就是使用Python的最大优势所在。”

快速发展

随着Python的迅速发展,它的社区中提供了很多更实战化的资料,如编程规范、标准和最佳实践。在某些方面,范·罗苏姆最初的哲学“应该有一种,并且最好只有一种明显的方法来解决问题”在这段时间非常有用。随着开发人员对Python的“试验”,那些经验丰富的人很快就开始实施Python编码风格和约定,这意味着可以维护涉及全球数百名开发人员的大型代码库。

诸如《Python大学实用教程》、《跟老齐学Python:轻松入门》、《有效的Python》等书籍帮助指导程序员更有效地编写代码,而“老齐教室”等社交媒体在教育开发社区方面发挥了重要作用。到2017年,Python问题主导了StackOverflow网站。

在web开发方面,Django和Flask等框架巩固了Python作为开发web应用程序后端和中间层的首选语言的地位。《Generative Deep Learning》的作者David Foster解释道:“对于我们的数据科学网站,我们使用Django作为后台。效果很好。”

作为初学者首选编程语言的Python

从2014年开始,Python被用作世界各地大学、高中和编程训练营的主要编程语言,这一点非常引人注目。由于AI发展,全民学编程的广告随处可见,一种简单易学的语言必然受到追捧。

很多中学教孩子们使用Python编写代码,与此同时,数学教师也有兴趣在课堂上使用Python的可视化工具,《Math Adventures with Python》一书的作者Peter Farrell说:“当你在绘制数据和进行数据可视化时,你在思考边界、域和范围等概念时,这些概念基本上要求你思考极限问题。‘数学极限’是一个重要的概念,它将为以后学习微积分和其他更难的数学概念奠定基础。形象化也让孩子找到了理解原理方法,在孩子的头脑中,他们可以旋转视觉效果,从不同的角度看问题。这解放了他们创造性思维能力。”

同年,在由Philip Guo编写的一项调查中,美国大学中排名前10的计算机科学系中有8个系使用Python向学生介绍代码。

这一趋势也可以从StackOverflow网站对于高校季节性流量的统计数据中看出。在Python起步的几年内,它已经超过了Java,获得了最大的访问率。

Python 3.5及3.5以上的版本

2015年,Python 3.5问世。然后,在2017年到2019年的一系列发布中,Python开发社区解决了该语言的一些持续存在的问题,巩固了它作为跨行业的主要编程语言之一的地位。

在此期间,许多公司开始扩大其机器学习和数据科学应用。人们关注的是内存使用、并发处理、性能、代码分布等。解决方案包括:Python3.8为并发处理引入异步;多进程使基于过程的并行成为可能; 还像操作符使赋值表达式更易于管理。

尽管PyPy仍然是某些Python代码的即时编译器,但如果你希望更快的实现,现在有了Numba。这是另一个开源的即时编译器,它允许你使用行业标准LLVM将Python和NumPy代码的子集转换为快速机器码。使用PyInstaller,可以将Python应用程序部署为独立的可执行文件。

Python开发者社区通过发布版本、文档和基于社区的工具,解决了一系列的问题,赢得了程序员的信任。

Python的未来

Python是2019年发展最快的编程语言,它的迅速崛起主要是因为严格遵循如下理念:成为一种动态的、多范式的、可扩展的、开源的语言。它的语法简单,程序易于维护。难怪Python拥有世界上最大的编程社区之一。

它的未来是光明的。在即将到来的人工智能、机器学习和数据科学时代,Python的创新正呈指数级增长,它是动态的、通用的,可以与其他编程语言一起使用。它的继续成功将在很大程度上取决于坚持同样的原则,正是这些原则促成了它迄今的成功。

由编程社区左右Python未来发展方向和潜在改进,这只是Python发展的一种方式。Salt's Hatch说:“我认为,首先,能够极大地推动Python向前发展的是有更好的内置方法,如解决单个二进制问题,或者在PyInstaller上继续发展。其次,我们有可能从LLVM的角度来理解Julia开发人员所做的工作,并使这些工作成果适用于Python。”

结论

在接下来的几年里,Python将与Java一起作为主要语言,用于许多行业的企业应用程序开发。在未来的人工智能应用开发时代,Python作为通用语言的地位不会改变。然而,术语“通用语言”的定义将随着我们编程需求的变化而变化。随着Python语言的发展,理解Python迄今为止的发展、坚持Python的基本原则,将变得越来越重要。

原文链接:https://www.welcometothejungle.com/en/articles/btc-python-popular

参考资料:https://realpython.com/regex-python/

0 人点赞