当前位置: 首页 > 后端技术 > Python

什么时候会取代Python?

时间:2023-03-26 14:27:16 Python

为什么Python不是未来的编程语言?以下为译文:Python经过数十年的努力,才得到编程界的赞赏。自2010年以来,Python蓬勃发展并最终超越了C、C#、Java和JavaScript。但这种趋势会持续多久?Python何时会被其他语言取代?被替换的原因是什么?关于Python消亡的确切日期有很多猜测,它可能会像科幻小说一样成为过去。在本文中,我将讨论有助于Python大规模采用的优势,以及将导致其在未来垮台的弱点。促成Python流行的因素查看StackOverflow趋势可以深入了解Python的成功。鉴于StackOverflow的规模,我们可以认为这是编程语言流行程度的一个很好的指标。虽然R在过去几年处于稳定状态,许多其他编程语言开始稳步下降,但Python的增长似乎势不可挡。“python”标签占所有StackOverflow问题的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需要保证每个变量只有一种数据类型,并行处理在这一点上可能会出现问题。相比之下,一个普通的网络浏览器可以同时运行十几个不同的线程。当然还有其他因素。但最终所有速度问题都无关紧要。因为计算机和服务器变得越来越便宜,所以我们只是在谈论几分之一秒。最终用户并不关心他们的应用程序加载时间是0.001秒还是0.01秒。作用域最初,Python是动态作用域的。这基本上意味着,为了计算表达式,编译器首先需要搜索当前块,然后依次搜索所有调用函数。动态作用域的问题是每个表达式都需要在所有上下文中进行测试,这很乏味。这就是为什么大多数现代编程语言都使用静态作用域的原因。Python试图过渡到静态作用域,但搞砸了。通常,内部作用域(例如函数中的函数)能够查看和更改外部作用域。在Python中,内部作用域只能看到外部作用域,但不能改变它们。所以产生了很多混乱。Lambdas虽然Python非常灵活,但是Lambdas的使用有一定的局限性。Lambda在Python中只能是表达式,不能是语句。另一方面,变量声明和语句始终是语句,这意味着它们不能使用Lambda。在Python中,表达式和语句之间的区别相当随意,这是其他编程语言所没有的问题。空格在Python中,您需要使用空格和缩进来指示不同级别的代码。这种格式在视觉上很吸引人并且易于理解。其他编程语言(例如C++)依赖花括号和分号。虽然这可能在视觉上不太吸引人并且对初学者不太友好,但它可以提高代码的可维护性。在较大的项目中,这种方法更为合适。Haskell等新兴编程语言解决了这个问题:它们依赖于空格,但也为那些希望不用它的人提供了一种替代语法。移动开发当我们目睹从台式机到智能手机的转变时,很明显我们需要强大的语言来构建移动软件。但是,使用Python开发的移动应用程序并不多。这并不是说Python不能开发移动应用,你可以试试一个叫Kivy的Python包。然而,Python在设计时并没有考虑到移动设备。因此,即使Python可以处理基本任务,我们最好还是选择一种专门为移动应用程序开发而创建的语言。广泛用于移动编程的语言包括:ReactNative、Flutter、Iconic和Cordova。让我们明确一点,笔记本电脑和台式电脑已经存在多年。然而,随着移动设备的使用已经超过桌面设备,可以肯定地说,学习Python不足以成为一名经验丰富的全面开发人员。运行时错误Python不需要先编译再执行。相反,它会在每次执行时编译,因此任何编程错误都会在运行时出现。这会导致性能不佳、时间浪费,并且需要进行大量测试。对于初学者来说,这未必是坏事,因为考试可以教会他们很多东西。然而,对于有经验的开发人员来说,必须使用Python调试复杂的程序可能会令人头疼。性能不足是Python最大的问题。什么时候会取代Python?今天,编程语言市场出现了一个新的竞争者:Rust提供与Python相同的安全性——没有变量会被意外覆盖。然而,它通过所有权和借贷的概念解决了效率问题。根据StackOverflowInsights,Rust是近年来最流行的编程语言。Go和Python一样,非常适合初学者。语言本身很简单,维护代码更简单。此外,有趣的是,Go开发人员是市场上收入最高的程序员之一。Julia是一种非常新的语言,可以与Python正面交锋。Julia填补了大规模技术计算的空白:以前,人们通常需要用Python或Matlab编写代码,然后用C++库修补整个代码,这在大规模计算中是必不可少的。今天,人们可以使用Julia而不必在两种语言之间挣扎。虽然市场上还有其他语言,但Rust、Go和Julia可以弥补Python的弱点。所有这些语言都擅长即将到来的技术,尤其是人工智能。尽管它们的市场份额仍然很小,但根据StackOverflow的数据,这些语言的发展呈现出明显的上升趋势。Python今天无处不在,我们可能需要五年或更长时间才能看到Python被一种新语言取代。目前,我们很难判断哪种语言有可能取代Python,是Rust、Go、Julia还是其他新语言。但鉴于Python架构中最基本的性能问题,它也难逃被取代的命运。以下是部分资料,想要学习的读者可以后台私信我免费获取,感谢阅读~