策划 | 刘燕

作者 | Rhea Moutafis

翻译 | Sambodhi

编辑 | Linda

Python 现在如此火爆,已发展成为一种非常通用的语言,无论是从入门级选手到专业技术数据挖掘、科学计算、图像处理、人工智能,Python 都可以胜任。它会是未来的编程语言吗?它是完美无缺的编程语言吗?有人发出了不同的声音。此前,InfoQ 中文站曾编译过相关文章,今天,我们翻译并分享了 Rhea Moutafis 对 Python 的看法,权当一家之言吧!

编程社区花了几十年的时间才领略到 Python 迷人之处。但自 2010 年初以来,Python 就一直在蓬勃发展,并最终在受欢迎程度上超越了 C、C#、Java 和 JavaScript。

但这种趋势还会持续到什么时候呢?什么时候 Python 最终会被其他编程语言所取代?为什么会被取代?

要给 Python 设定一个确切的“死期”可能是一个很大的猜测。它可能会像科幻小说一样。相反,我在本文中,将阐述 Python 那些受欢迎的优点,以及将来会打败它的弱点。

是什么让 Python 现在如此流行

Python 的成功提现在 Stack Overflow 趋势 上,该趋势衡量平台上帖子中的标签数量。鉴于 Stack Overflow 的规模,因此它是编程语言受欢迎程度的一个很好的指标。

Stack Overflow 上各种编程语言的标签快照。

尽管 R 语言在过去几年里一直处于停滞不前的状态,而且许多其他编程语言也在稳步下降,但 Python 的增长似乎势不可挡。几乎所有 Stack Overflow 上的问题有 14% 被标记为“Python”,而且这一趋势还在上升。

这其中有几个原因:

它是古老的

Python 早在 20 世纪 90 年代就出现了。这并不仅仅意味着它有充足的时间来成长,它还得到了一个庞大的支持社区。

因此,如果你在用 Python 编写代码遇到了什么问题,你很有可能通过 Google 搜索一下就能解决。这是因为有人已经遇到过和你一样的问题,并记下了一些有用的东西。

它对初学者很友好

这不仅是事实,因为它已经存在了几十年,让程序员得以有时间来编写优秀的教程。更重要的是,Python 的语法非常易于理解。

首先,无需指定数据类型。你只需声明一个变量即可;Python 将会从上下文中理解它是整数、浮点值、布尔值还是其他值。这对初学者来说,是一个巨大的优势。如果你曾经使用 C++ 进行编程的话,你就会知道你的程序无法通过编译是多么令人沮丧,仅仅只是因为你将浮点数换成了整数。

如果你曾经同时阅读过 Python 和 C++ 代码,你就会知道 Python 有多么容易理解。尽管 C++ 在设计时考虑到了英语,但与 Python 代码相比,它的阅读还是相当困难。

它的用途广泛

由于 Python 已经存在了如此久的时间,开发人员已经为各种潜在需求制作了软件包。现在,你可以找到几乎所有用途的软件包。

想要计算数字、向量和矩阵吗?NumPy 就是你要找的东西。

想要做技术和工程方面的计算吗?请使用 SciPy

想在数据处理和分析方面做大吗?那就试试 Pandas 吧。

想从人工智能开始吗?那为什么不使用 Scikit-Learn 呢?

无论你想做哪种计算任务,都有相应的 Python 软件包。这使得 Python 一直处于发展前沿,从过去几年机器学习的火热的浪潮中可以看出来。

Python 的缺点以及这些缺点是否会致命

基于前面的阐述,你可以想象 Python 在未来几年仍将兴盛不衰。但是,像所有的技术一样,Python 也有它的弱点。我将一一介绍最重要的缺陷,并评估这些缺陷是否致命。

速度

Python 很慢。真的,非常非常慢。平均而言,使用 Python 完成一项任务所需的时间,是任何其他编程语言的 2~10 倍。

造成这种情况的 原因有很多。其中之一是,它是动态类型的,记住,你不需要像在其他编程语言那样指定数据类型。这意味着需要使用大量的内存,因为程序需要为它在任何情况下都能工作的每个变量预留足够的空间。而且大量的内存使用意味着大量的计算时间。

另一个原因是,Python 一次只能执行一个任务。这是灵活数据类型的结果:Python 需要确保每个变量只有一种数据类型,而并行化的进程可能会弄乱这一点。

相比之下,一般的 Web 浏览器可以同时运行十几个不同的线程。此外,还有其他一些理论。

但说到底,这些速度问题都无关紧要。计算机和服务器已经变得如此便宜,以至于我们谈论的只是几分之一秒的时间。实际上,最终用户并不在乎他们的应用程序是在 0.001 秒还是 0.01 秒内加载的。

作用域

最初,Python 的 作用域是动态的。这基本上意味着,要计算表达式,编译器首先搜索当前块,然后依次搜索所有调用函数。这就是大多数现代编程语言使用静态作用域的原因。

Python 曾试图过渡到静态作用域,但 搞砸了。通常情况下,内部作用域(例如函数中的函数)能够查看和更改外部作用域。但在 Python 中,内部作用域只能看到外部作用域,而不能改变它们,这就导致了很多混乱的情形。

Lambda

尽管 Python 具有所有的灵活性,但 Lambda 的使用还是相当受限的。Lambda 只能是 Python 中的表达式,不能是语句。

另一方面,变量声明和语句始终是语句。这意味着 Lambda 并不能用于它们。

表达式和语句之间的这种区别是相当随意的,在其他编程语言中并不会存在。

空白使代码的可读性更强,但可维护性却更低了。

在 Python 中,你可以使用空格和缩进来表示不同级别的代码。这使得它在视觉上具有吸引力,理解起来也更直观。

其他编程语言,如 C++,则更多地依赖花括号和分号。尽管这可能在视觉上不够吸引人,对初学者也不太友好,但是它使代码更易于维护。对于较大的项目,这个方法更有用。

像 Haskell 这样的新语言解决了这个问题:它们依赖于空格,但为那些希望不使用空格的人提供了另一种语法。

移动开发

我们正在见证从台式计算机到智能手机的转变,很明显,我们需要强大的语言来开发移动软件。

但使用 Python 开发的移动应用并不多。不过,这并不意味着它做不到 — 有一个名为 Kivy 的 Python 软件包就是专门用于开发移动应用的。

但是 Python 在设计时并没有考虑到移动开发。因此,即使它可能会为基本任务产生差强人意的结果,你最好的选择是使用一种专为移动开发而创建的编程语言。一些广泛使用的移动编程框架包括 React Native、Flutter、Iconic 和 Cordova。

需要明确的是,笔记本计算机和台式计算机应该会在未来很多年里继续存在。但是,由于移动设备的流量早已超过台式计算机,所以可以肯定地说,学会 Python 并不足以成为经验丰富的全能开发人员。

运行时错误

Python 脚本不是先编译后执行的。相反,它会在每次执行时编译,因此,任何编码错误都会在运行时显示出来。这会导致性能差、耗时长,并且需要进行大量测试。比如,很多很多测试。

这特别适合初学者,因为测试可以教会他们很多东西。但是对于经验丰富的开发人员来说,必须用 Python 调试复杂的程序会让他们出错。这种性能的缺乏是在 Python 上设置时间戳的最大因素。

未来何时,谁将取代 Python?

在编程语言市场上有几个新的竞争对手:

  • Rust 提供了与 Python 同样的安全性,任何变量不会被意外覆盖。但是,它用所有权(ownership)和借用(borrowing)解决了性能问题。根据 Stack Overflow Insights 的统计,Rust 也是过去几年来最受欢迎的编程语言。

  • Go 对于 Python 这样的初学者来说很棒。它是如此简单,以至于维护代码更加容易了。有趣的是:Go 开发人员是市场上收入最高的程序员之一。

  • Julia 是一门非常新的编程语言,可以与 Python 一较高下。它填补了大规模技术计算的空白:通常情况下,人们会使用 Python 或 Matlab,然后用 C++ 库来修补整个程序,这在大规模应用时是必需的。现在,人们可以使用 Julia,而不是同时使用两种编程语言。

虽然市场上还有其他编程语言,Rust、Go 和 Julia 是修补了 Python 薄弱部分的编程语言。所有这些语言在未来的技术上表现出色,尤其是在人工智能领域。虽然它们的市场份额仍然很小,但从 Stack Overflow 标签的数量可以看出,它们的趋势都很明显:上升。

StackOverflow 上各种编程语言标签快照。

鉴于目前 Python 已无处不在的流行程度,这些新语言中的任何一门要想取代它,肯定要花上五年的时间,甚至终其“一生”。

究竟会是哪一门编程语言将取代 Python,是 Rust?Go?Julia?抑或是未来的一门新语言?现在还很难说。但是鉴于 Python 架构中的最基本的性能问题,这些语言中的一门将会不可避免地占据一席之地。

作者介绍:

Rhea Moutafis,目前正攻读暗物质物理学的博士学位。热爱艺术、音乐和美好的事物。

延伸阅读:

https://towardsdatascience.com/why-python-is-not-the-programming-language-of-the-future-30ddc5339b66

为什么Python不是未来的编程语言?相关推荐

  1. AI领域都在用Python即将被淘汰?网友预测未来的编程语言不会是TA

    网友时隔一年再次发文狂怼Python!人民群众都喜欢的Python为何在未来一定会被淘汰? >>>> 近日,关于一篇关于Python的讨论又重出江湖. 哦,不是这个. 这篇「为 ...

  2. python是一种什么类型的编程语言-Python这么火,为什么说它不是未来的编程语言?...

    本文转载自公众号"读芯术"(ID:AI_Discovery) Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在. 虽然问世几十年后,Python才得到编程社 ...

  3. 为什么叫python编程-Python这么火,为什么说它不是未来的编程语言?

    本文转载自公众号"读芯术"(ID:AI_Discovery) Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在. 虽然问世几十年后,Python才得到编程社 ...

  4. python缺点这么多、为什么还流行_Python这么火,为什么说它不是未来的编程语言?...

    本文转载自公众号"读芯术"(ID:AI_Discovery) Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在. 虽然问世几十年后,Python才得到编程社 ...

  5. 为什么说python是计算机语言的未来_Python这么火,为什么说它不是未来的编程语言?...

    本文转载自公众号"读芯术"(ID:AI_Discovery) Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在. 虽然问世几十年后,Python才得到编程社 ...

  6. TIOBE 1 月编程语言:Python 摘得 2020 年度编程语言!

    [CSDN 编者按]恭喜 Python 荣获 2020 年度编程语言称号,这也是自 TIOBE 榜单发布以来,首款编程语言四次获得该奖项. 整理 | 苏宓 出品 | CSDN(ID:CSDNnews) ...

  7. 现在学python和java哪个好_java和python学习哪个未来发展前景更好?

    原标题:java和python学习哪个未来发展前景更好? 学java和python哪个更好?这是现在大家热议的一个问题. Python崛起这已经是一个不争的事实,并且已经成为人工智能时代的第一语言.P ...

  8. python语言发展历时_编程语言十年发展史

    原标题:编程语言十年发展史 作者 | Cabe Atwell 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 过去十年,编程语言发生了很大的变化,随着互联网大时代的迈进, ...

  9. python是什么类型的编程语言-Python是个什么语言?

    利利:Python是什么样的一门语言,又是因为什么,从众多编程语言当中"杀出重围",成为了大家的选择? Scratch.Python.C++三门语言,被众多少儿培训机构,选做&qu ...

最新文章

  1. SAP QM Multiple Specifications的使用III
  2. php服务docker化,docker化你的PHP应用环境Nginx PHP-FPM
  3. 平衡树-Treap基础内容
  4. java必读书籍_必读:Java Java
  5. 配置静态IPV6 NAT-PT
  6. LeetCode之两数之和
  7. 用最科学的方法展示最形象的图表——前段数据可视化选型实践
  8. Win7,Win8下多实例运行Excel2010
  9. 南华大学计算机学院吴取劲,一种基于图深度优先搜索的基本路径集自动生成优化算法-南华大学学报.PDF...
  10. 微信云服务器有效期,关于云存储文件有效期问题总结
  11. 【kafka】kafka /log_dir_event_notification的LogDir脱机事件通知
  12. 文件传输服务器的默认端口,服务器上传文件端口
  13. SpringBoot+Nacos+Seata实现Dubbo分布式事务管理
  14. linux 卸载jdk和安装
  15. 为什么今年高考数学又出编程题?
  16. 2021年G3锅炉水处理模拟考试及G3锅炉水处理考试试题
  17. Power BI DAX 编写利器 —— DaxStudio 的简单用法
  18. mysql查缺补漏(一) and or优先级和多表join
  19. 华为mate50参数配置 华为mate50是5g吗
  20. Context initialization failed

热门文章

  1. MATLAB寻址访问按什么优先,matlab笔记
  2. java里面怎么添加表约束_mysql给表增加约束条件
  3. mysql查询前10条记录
  4. python自然语言处理一作者书
  5. AWS pytorch-model API
  6. void addColumn(TableColumn aColumn)
  7. XLNet 发明者杨植麟:从学习的角度看NLP现状与未来(附PPT下载)
  8. 豆瓣评分8.6,这本书启发无数开发者
  9. Ajax与企业级应用开发
  10. Python 3 利用 Dlib 实现人脸检测和剪切