为什么 Python 不是未来的编程语言?

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

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

F9EAC7BC_7743_4c2b_AF52_B96402E112D5

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

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

预测这个时间点到底什么时候到来可能会像科幻小说一样充满各种可能性。我在本文中,将阐述 Python 那些受欢迎的优点,以及将来会打败它的弱点。

1.是什么让 Python 现在如此流行

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

BF5AC1B6_8B71_470b_BEA4_5534F5497591

尽管 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 一直处于发展前沿,从过去几年机器学习的火热的浪潮中可以看出来。

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

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

  • 速度

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

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

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

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

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

  • 作用域

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

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

  • Lambda

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

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

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

F96399BE_41E4_4f07_9D66_B9AE2D7D2B68

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

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

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

  • 移动开发

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

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

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

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

  • 运行时错误

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

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

3.未来何时,谁将取代 Python?

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

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

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

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

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

31D119AE_22FE_4183_9AAD_A4FFC902AF33

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

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

  • 作者介绍

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

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-04-14
本文作者:Rhea Moutafis
本文来自:“InfoQ 微信公众号”,了解相关信息可以关注“InfoQ

相关文章
|
1天前
|
安全 Python
Python 高级编程:高效读取 txt 文件的技巧与实践
在 Python 中,读取 txt 文件是常见操作。本文介绍了使用 `with` 语句自动管理文件资源、逐行读取文件、读取特定字节范围内容、处理编码问题以及使用缓冲读取提高性能等高级方法,确保代码高效且安全。通过这些技巧,你可以更灵活地处理文件内容,并避免资源泄漏等问题。原文链接:https://www.wodianping.com/app/2024-10/44183.html
32 18
|
2天前
|
机器学习/深度学习 Linux Python
Python编程教学
Python教学
24 13
|
2天前
|
缓存 Python
Python编程中的装饰器深度探索
本文深入探讨了Python中装饰器的高级用法,从基本定义到实际应用,展示了如何利用装饰器提升代码的灵活性和可维护性。通过具体示例,解析了装饰器在函数增强、日志记录、权限验证等方面的应用,旨在帮助读者彻底理解和掌握这一强大的编程工具。
|
2天前
|
数据处理 开发者 Python
Python编程中的列表推导式:简洁而强大的工具
【9月更文挑战第35天】在Python的众多特性中,列表推导式以其简明扼要和强大功能脱颖而出。本文不仅将介绍列表推导式的基础知识,还将探讨其背后的逻辑,并辅以实际代码示例。无论你是初学者还是有经验的开发者,都能从中获取新的见解和应用技巧。
12 5
|
3天前
|
机器学习/深度学习 数据挖掘 开发者
探索Python编程:从基础到实战
【9月更文挑战第34天】在这篇文章中,我们将一起踏上Python编程的旅程。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。我们将从Python的基础语法开始,逐步深入到更复杂的主题,如面向对象编程和网络应用开发。我们还将探讨如何在实际项目中应用这些知识,以及如何通过持续学习和实践来提高你的编程技能。让我们一起探索Python的世界,发现它的无限可能!
|
3天前
|
机器学习/深度学习 人工智能 数据可视化
Python比较适合哪些场景的编程?
Python比较适合哪些场景的编程?
15 7
|
1天前
|
机器学习/深度学习 存储 人工智能
Python 编程之旅:从基础到进阶
【9月更文挑战第35天】在这篇文章中,我们将一起探索 Python 编程的奇妙世界。无论你是初学者还是有一定经验的开发者,都能在这里找到有价值的内容。我们将从 Python 的基本语法开始,逐步深入到面向对象编程、函数式编程等高级主题。此外,我们还会介绍一些实用的库和框架,帮助你更高效地完成各种任务。让我们一起踏上这段激动人心的 Python 编程之旅吧!
|
3天前
|
大数据 Python
Python 高级编程:深入探索高级代码实践
本文深入探讨了Python的四大高级特性:装饰器、生成器、上下文管理器及并发与并行编程。通过装饰器,我们能够在不改动原函数的基础上增添功能;生成器允许按需生成值,优化处理大数据;上下文管理器确保资源被妥善管理和释放;多线程等技术则助力高效完成并发任务。本文通过具体代码实例详细解析这些特性的应用方法,帮助读者提升Python编程水平。
23 5
|
3天前
|
程序员 数据库 开发者
探索Python编程之旅:从基础到进阶
【9月更文挑战第34天】本文将引导你踏上Python编程的奇妙旅程,从最初的安装和运行第一个程序开始,逐步深入到面向对象编程、文件操作和网络编程等高级主题。我们将通过代码示例和清晰的步骤解释,帮助你构建起对Python语言的深刻理解,并鼓励你在遇到问题时主动寻找解决方案,培养解决问题的能力。无论你是初学者还是有一定经验的开发者,都能在这篇文章中找到有价值的内容和启发。
|
8天前
|
数据挖掘 索引 Python
Python数据挖掘编程基础3
字典在数学上是一个映射,类似列表但使用自定义键而非数字索引,键在整个字典中必须唯一。可以通过直接赋值、`dict`函数或`dict.fromkeys`创建字典,并通过键访问元素。集合是一种不重复且无序的数据结构,可通过花括号或`set`函数创建,支持并集、交集、差集和对称差集等运算。
15 9
下一篇
无影云桌面