开发者社区花了几十年的工夫才领略到 Python 迷人之处。但自 2010 年初以来,Python 就始终在蓬勃发展,并最终在受欢迎水平上超过了 C、C#、Java 和 JavaScript。但这种趋势还会继续到什么时候呢?什么时候 Python 最终会被其余编程语言所取代?为什么会被取代?
预测这个工夫点到底什么时候到来可能会像科幻小说一样充斥各种可能性。本文将论述 Python 那些受欢迎的长处,以及未来会战胜它的弱点。
1. 是什么让 Python 当初如此风行
Python 的胜利体现在 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 始终处于倒退前沿,从过来几年机器学习的炽热的浪潮中能够看进去。
2.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 上设置工夫戳的最大因素。
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 标签的数量能够看出,它们的趋势都很显著:回升。
鉴于目前 Python 已无处不在的风行水平,这些新语言中的任何一门要想取代它,必定要花上五年的工夫,甚至终其“毕生”。
到底会是哪一门编程语言将取代 Python,是 Rust?Go?Julia?抑或是将来的一门新语言?当初还很难说。然而鉴于 Python 架构中的最根本的性能问题,这些语言中的一门将会不可避免地占据一席之地。
本次分享就到这啦~ 以下是我这的局部材料哦~ 有感兴趣的读者能够私聊支付哦~