社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 什么时候会被取代?

脚本之家 • 5 年前 • 783 次点击  

  脚本之家

你与百万开发者在一起

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

作者 | Rhea Moutafis

译者 | 弯月,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下是译文: 

Python经过了几十年的努力才得到了编程社区的赏识。自2010年以来,Python得到了蓬勃发展,并最终超越了C、C#、Java和JavaScript。

但是,这种趋势将持续到什么时候?何时Python会被其他语言取代?被取代的原因又是什么呢?

对于Python被淘汰出局的确切日期有很多猜测,它可能会像科幻小说一样成为过去。在本文中,我将讨论促成Python大面积普及的优势,以及将来导致它陨落的弱点。


1



促成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已经站在了时代发展的最前沿。


2



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最大的问题。


3



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体系结构中最基本的性能问题,其终将难逃被人替代的命运。

原文:https://towardsdatascience.com/why-python-is-not-the-programming-language-of-the-future-30ddc5339b66

本文为 CSDN 翻译,转载请注明来源出处。

- END -



👇👇👇👇👇







今日书籍推荐

《Python网络编程从入门到精通》编写秉承让更多的 Python 爱好者能看懂的原则,以让读者以较少的时间、较低的成本,快速掌握 Python 网络编程为目标。每个步骤都很详尽,读者可按步骤操作,还配有相应代码,方便读者实现网络编程的开发。
《Python 入门到人工智能实战》是针对零基础编程学习者编写的教程。从初学者角度出发,每章以问题为导向,辅以大量的实例,详细地介绍了Python 基础、机器学习,以及最好也最易学习的两个平台PyTorch 和Keras。
《Python网络爬虫开发从入门到精通》坚持以实例为主,理论为辅的路线,从 Python 基础、爬虫开发常用网络请求库,到爬虫框架使用和分布式爬虫设计,以及最后的数据存储、分析、实战训练等,覆盖了爬虫项目开发阶段的整个生命周期。

  留言赠书参与方法 


分享一下你在学习或者使用Python、分布式系统的经验感受,活动截止时获得点赞数最多的前2名获得以上书籍中的任1本,同时我们也将选择3名小锦鲤同样获得赠书1本

截止时间:2020 年 06 月 30 日 16:00 整




●  人人都欠微软一个正版?

●  脚本之家粉丝福利,请查看!

●   Python 爬取周杰伦《Mojito》MV 弹幕,这个词亮了!

● 2020年开发者生态报告:Python超越Java

● 人生苦短,为什么我要用Python?

 2020年Python金融实战书单,我就选这几本

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/70706
 
783 次点击