为什么 Python 不是将来的编程语言?
以下是译文:
Python 通过了几十年的致力才失去了编程社区的赏识。自 2010 年以来,Python 失去了蓬勃发展,并最终超过了 C、C#、Java 和 JavaScript。
然而,这种趋势将继续到什么时候?何时 Python 会被其余语言取代?被取代的起因又是什么呢?
对于 Python 被淘汰出局的确切日期有很多猜想,它可能会像科幻小说一样成为过来。在本文中,我将探讨促成 Python 大面积遍及的劣势,以及未来导致它陨落的弱点。
促成 Python 风行的因素
通过 Stack Overflow 发展趋势就能够洞悉 Python 的胜利。思考到 StackOverflow 的规模,咱们能够认为这是掂量编程语言风行度的一个很好的指标。
只管在过来几年中,R 语言的倒退始终处于安稳状态,很多其余编程语言已开始稳步降落,但 Python 的增长仿佛势不可挡。在所有 StackOverflow 的问题中,带有“python”标签的占到了 14%,而且这种趋势还在回升。其中的起因有很多。
Python 是一种古老的语言
Python 于 90 年代问世。这不仅意味着 Python 有足够的工夫成长,而且还领有了一个宏大的反对社区。
因而,如果你在应用 Python 进行编程时遇到任何问题,只需上网搜寻就能够失去答案。因为总是会有人在这之前就遇到了这个问题,并为此撰写了一些有用的材料。
对初学者很敌对
Python 对初学者敌对的起因不仅仅是因为它曾经存在了数十年,予以程序员足够的工夫编写杰出的教程,而且还因为 Python 的语法十分易于了解。
首先,无需指定数据类型。你只需申明一个变量即可,Python 会依据上下文判断这个变量是整数、浮点数、布尔值还是其余类型。对于初学者来说,这是一个微小的劣势。如果你有过应用 C ++ 编程的经验,那么就会懂得只因为你错把浮点数定义成了整数,就导致程序无奈通过编译有如许好受了。
此外,比拟 Python 和 C ++ 代码,不难发现 Python 有如许易于了解。只管 C ++ 在设计时思考到了英语,但与 Python 代码相比,浏览 C ++ 的代码还是相当崎岖。
用处宽泛
因为 Python 曾经存在了很长时间,因而开发人员为之开发出了各色的软件包。现在,无论遇到什么问题,你都能够找到相干的软件包。
想解决数字、向量和矩阵?那么就来试试 NumPy 吧。
想进行技术和工程的计算?那么就来试试 SciPy 吧。
想操作和剖析大数据?那么就来试试 Pandas 吧。
想学习人工智能?为什么不试试 Scikit-Learn 呢。
无论你须要进行哪方面的计算工作,都能够找到相干的 Python 软件包。因为过来几年中机器学习的迅猛发展,Python 曾经站在了时代倒退的最前沿。
Python 的毛病,这些毛病是否致命?
通过上述探讨,你能够设想在很长一段时间内 Python 的倒退都势不可挡。然而,Python 也逃不开所有技术的命运,它也有本人的弱点。接下来,我将一一介绍 Python 的重大缺点,并评估这些缺点是否致命。
速度
Python 很慢,十分十分慢。均匀而言,应用 Python 实现某个工作所需的工夫是应用任何其余语言的 2–10 倍。
其中的起因有很多。其中之一是因为 Python 是动静类型的,别忘了你不须要像其余语言一样指定数据类型。这意味着内存的消耗十分大,因为在任何状况下程序都须要为每个变量保留足够的空间。而微小的内存使用量必然须要消耗大量的计算工夫。
另一个起因是 Python 一次只能执行一个工作。这是灵便的数据类型带来的后果,Python 须要确保每个变量只有一个数据类型,而并行过程可能会在这一点上出问题。
相比之下,一般的 Web 浏览器一次能够运行十几个不同的线程。当然其中还波及别的因素。
但最终所有的速度问题都不打紧。因为电脑和服务器的价格越来越低,咱们议论的也只不过是几分之一秒的问题。最终用户并不真正在乎他们的利用加载须要 0.001 还是 0.01 秒。
范畴
最后,Python 是动静作用域。这基本上意味着,为了评估表达式,编译器首先须要搜寻以后块,而后顺次搜寻所有调用函数。
动静作用域的问题在于,每个表达式都须要在所有上下文中进行测试,这很繁琐。这就是为什么大多数古代编程语言都应用动态作用域。
Python 曾尝试过渡到动态作用域,但搞砸了。通常,外部作用域(例如函数中的函数)可能查看和更改内部作用域。在 Python 中,外部作用域只能看到内部作用域,但不能更改。因而引发了很多凌乱。
Lambdas
只管 Python 非常灵活,但 Lambdas 的应用还是有肯定的局限性。Lambda 只能是 Python 中的表达式,而不能是语句。
另一方面,变量申明和语句始终是语句,这意味着它们不能应用 Lambda。
在 Python 中,表达式和语句之间的区别相当随便,这是其余编程语言都没有的问题。
空白
在 Python 中,你须要应用空白和缩进来示意不同级别的代码。这种格局具备视觉吸引力,而且易于了解。
其余编程语言(例如 C ++)都须要依赖大括号和分号。只管这可能在视觉上没有那么强的吸引力,而且对初学者不够敌对,但能够进步代码的可维护性。在大型项目中,这种形式更为得当。
Haskell 等新兴的编程语言解决了这个问题:它们依赖空白,但同时也为那些心愿不必空白的人提供了另一种语法。
挪动开发
咱们目击了从台式机向智能手机的转变,很显著,咱们须要弱小的语言来构建挪动软件。
然而,应用 Python 开发的挪动利用并不多。这并不意味着 Python 无奈开发挪动利用,你能够试试看一个名为 Kivy 的 Python 包。
然而,Python 的设计被没有思考到挪动设施。因而,即便 Python 能够应酬根本的工作,但咱们最好还是抉择专门为挪动利用程序开发而创立的语言。宽泛用于挪动编程的语言包含:React Native、Flutter、Iconic 和 Cordova。
咱们须要明确的是,笔记本电脑和台式计算机曾经存在很多年了。然而,因为挪动设施的应用未然超过了桌面设施,因而咱们必定地说,学习 Python 不足以成为经验丰富的全方面开发人员。
运行时谬误
Python 不须要首先编译,而后再执行。相同,它会在每次执行时编译,因而所有编程上的谬误都会在运行时显示进去。这会导致性能降落、浪费时间,而且还须要进行大量测试。
对于初学者来说,这未必是好事,因为测试能够教会他们很多常识。然而,对于经验丰富的开发人员而言,必须应用 Python 调试简单的程序很令人头疼。性能欠缺是 Python 最大的问题。
Python 什么时候会被取代?
现在,编程语言市场上涌现了新的竞争力量:
Rust 提供了与 Python 雷同的安全性——不会意外笼罩任何变量。然而,它通过所有权和借用的概念解决了效率的问题。依据 StackOverflow Insights,Rust 是近几年最受欢迎的编程语言。
Go 与 Python 一样非常适合初学者。语言自身非常简单,保护代码更加简略。此外,乏味的是,Go 开发人员是市场上支出最高的程序员之一。
Julia 是一种十分新的语言,可与 Python 侧面竞争。Julia 填补了大规模技术计算的空白:以前,人们通常都须要应用 Python 或 Matlab 编写代码,而后再应用 C ++ 库修补整个程序,因为 C ++ 库是大规模必不可少的。现在,人们能够应用 Julia,而不用在两种语言之间挣扎。
只管市场上还有其余语言,但 Rust、Go 和 Julia 能够补救 Python 的弱点。所有这些语言在行将到来的技术中都有杰出的体现,最典型的就是人工智能。只管它们的市场份额仍较小,但依据 StackOverflow 的数据显示,这些语言的倒退呈现出显著的回升趋势。
现在,Python 无处不在,咱们还须要五年甚至更长的工夫,才有可能看到 Python 被新语言所代替。
就目前而言,咱们很难判断哪种语言有可能代替 Python,是 Rust、Go、Julia 抑或是其余的新语言。但鉴于 Python 体系结构中最根本的性能问题,其终将难逃被人代替的命运。
以下是局部材料,如有想学习的读者能够后盾私信我收费支付哦,感激浏览~