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

2,178 阅读10分钟

u=1395355792,3954371055&fm=26&fmt=auto&gp=0.jpg

【此文章转自乐字节】

Python 现在如此火爆,已发展成为一种非常通用的语言,无论是从入门级选手到专业技术数据挖掘、科学计算、图像处理、人工智能,Python 都可以胜任。它会是未来的编程语言吗?它是完美无缺的编程语言吗?有人发出了不同的声音。

编程社区花了几十年的时间才开始欣赏 Python。但自 2010 年初以来,它一直在蓬勃发展——并最终在流行度上超过了 C、C#、Java 和 JavaScript。

但这种趋势会持续到什么时候?Python 何时最终会被其他语言取代,为什么?

给 Python 设定一个确切的到期日期将是太多的猜测,它可能会像科幻小说一样过去。相反,我将评估目前正在提升 Python 流行度的优点,以及将来会破坏它的弱点。

是什么让 Python 现在流行

Python 的成功体现在Stack Overflow 趋势中,它衡量平台上帖子中的标签数量。鉴于 StackOverflow 的规模,这是语言流行度的一个很好的指标。

461deb8374507d22c6d076755e10668d.png

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

尽管 R 在过去几年一直处于稳定状态,并且许多其他语言都在稳步下降,但 Python 的增长似乎不可阻挡。几乎 14% 的 StackOverflow 问题都被标记为“python”,而且这个趋势还在上升。这有几个原因。

成熟

Python 从 90 年代就出现了。这不仅意味着它有足够的时间成长。它还有一个庞大的用户支持社区。

如果你在使用 Python 进行编程时遇到任何问题,通过一次 Google 搜索就可以解决的可能性很高,不仅是因为有人已经遇到了同样的问题并为此写了一些有价值的总结。

初学者友好

这不仅是因为Python已经存在了几十年,让程序员有时间制作精彩的教程——更重要的是,Python 的代码语法非常易读。

首先,不需要指定数据类型,开发者只需声明一个变量即可;Python 会从上下文中理解它是整数、浮点值、布尔值还是其它类型的值。这对初学者来说是一个巨大的优势。如果你曾经用 C++ 编程,你会知道程序无法编译是多么令人沮丧,你可能将浮点数做为整数处理。

如果你并排阅读过 Python 和 C++ 代码,你会知道 Python 是多么容易理解。尽管 C++ 在设计时就考虑到了英语短句,但与 Python 代码相比,C++的代码阅读过程却是相当坎坷。

用途广泛

由于 Python 已经存在了很长时间,开发人员已经为各种目的制作了软件包。如今,你可以找到几乎所有东西的包。

比如:

1、想要处理数字、向量和矩阵?NumPy 是好帮手; 2、想为技术和工程做计算吗?使用 SciPy; 3、想在数据操作和分析方面大展宏图吗?试试Panda吧; 4、想从人工智能开始?为什么不使用 Scikit-Learn。

无论你尝试管理某个计算任务,都有可能有一个 Python 包可用。这使得 Python 始终处于最新发展的前沿,从过去几年机器学习的激增就可以看出来。

Python 的缺点——它们是否会致命?

根据先前的阐述,可以想象 Python 将在未来很长一段时间内保持在顶峰之上。但和所有技术一样,都有生命周期,同样Python 也有其弱点。我们一一分析最重要的缺陷,并评估这些缺陷是否致命。

运行速度

Python 运行很慢,真的很慢。平均而言,使用 Python 完成一项任务所需的时间比使用任何其他语言要慢约 2 到 10 倍。

这里有很多个原因。其中之一就是它是动态类型的———开发者不需要像在其它语言中那样指定数据类型,这意味着需要使用大量内存,因为程序需要为它在任何情况下工作的每个变量保留足够的空间,大量的使用转化需要大量的服务器计算时间。

另一个原因是 Python 是单线程,即一次只能执行一个任务。这也是灵活数据类型的结果——Python 需要确保每个变量只有一种数据类型,而并行进程可能会搞砸。

相比之下,人们的浏览器可以同时运行十几个不同的线程,还有一些其他的技术。

但归根结底,速度问题已经不再重要。计算机和服务器现在变得非常便宜,以至于人们谈论的只是相差几分之一秒。

最终用户并不真正关心他们的应用程序是在 0.001 秒还是 0.01 秒内加载完成的。

范围

最初,Python 是动态作用域。这基本上意味着,要评估一个表达式,编译器首先搜索当前语句块,然后再依次搜索所有函数调用。

动态范围的问题在于每个表达式都需要在每个可能的上下文中进行测试——这很单调乏味。这就是大多数现代编程语言使用静态作用域的原因。

Python 尝试过渡到静态作用域,但搞砸了。通常,内部作用域——例如函数内的函数——能够看到和改变外部作用域。在 Python 中,内部作用域只能看到外部作用域,而不能改变它们。这会导致很多混乱。

Lamda表达式

尽管 Python 具有很多灵活性,但 Lambda 的使用却非常有限,而且Lambda 只能是 Python 中的表达式,不能是语句。

另一方面,变量声明和语句段始终做为语句, Lambda 不能使用它们,在Python中表达式和语句之间的区别相当随意,而在其它语言中则不会出现。

空格

在 Python 中,开发者可以使用空格和缩进来表示不同级别的代码,这使人们在视觉上具有很强的吸引力并且容易理解。

其他语言,例如 C++,更多地依赖大括号和分号。虽然这可能不具有视觉吸引力和初学者友好性,但它使代码更易于维护,对于更大的项目来说,括号和分号更有用。

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

移动开发

近年来,我们目睹着从桌面到智能手机的转变,很明显人们需要更强大的语言来构建移动应用软件。

使用 Python 开发移动应用程序并不多,这并不意味着它不能完成——有一个名为 Kivy 的 Python 包是做这件事情的。

但是 Python 并不是为移动端应用而设计。因此,即使它能为基本任务产生可通过的结果,最好的方法还是使用一种为移动应用程序开发而创建的语言。

一些广泛使用的移动编程框架包括 React Native、Flutter、Iconic 和 Cordova。

可以明确的是,笔记本电脑和台式电脑应该会存在很多年,而移动端的流量早已超过桌面端,可以肯定地说,学习 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 标签的数量可以看出,它们的趋势都很明显:上升。

2f24afe4b0ab4daab45dcfa5e930b6b5.png

虽然这三种语言的份额还很小,在人工智能等技术方面也还没有得到很广泛的应用,但是在趋势上是一直在增加的。

不过考虑到 Python 架构中的基本性能问题,这三种语言一定有机会取代Python。

考虑到目前Python的无处不在,这些新语言中的任何一个肯定需要五年、十年甚至更长的时间才能取而代之。

它将是哪种语言?Rust、Go、Julia 或未来的一种新语言,目前还很难说。

但考虑到 Python 架构中的运行性能问题,这些编程语言将不可避免地占据一席之地。

python70个项目.png

python70个项目1.png

注:每周福利均会更新,更多福利等你领取,更多技巧,欢迎在评论区一起交流!

+君羊前面三位606,中间三位846,后面三位127,进君羊暗号123,领取Python ,web前端开发,Python爬虫,Python数据分析,大数据开发,人工智能,Java项目,Java基础等精品学习课程。带你从零基础系统性的学好Python,Java,web前端和大数据等!做一名牛逼的程序员!

希望偶的这些项目能够帮助大家从一个项目小白成长为项目大牛,最后提醒大家,不要在拼搏的年纪选择安逸,希望小编的文章能够帮助到小伙伴们!

END
祝大家学的愉快,学的神速。
有帮助的话,各位小伙伴可以点个赞收藏支持下啦!❤️
也欢迎关煮lili,一个在变秃,但能带你变强的程序员~
今天先说这么多,我是乐字节哩哩,一个有趣的灵魂!下期见!