Python 什么时候会被取代?

Stella981 等级 203 0 0

Python 什么时候会被取代?

编译:CSDN-弯月,作者:Rhea MoutafisPython

经过了几十年的努力才得到了编程社区的赏识。自 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 体系结构中最基本的性能问题,其终将难逃被人替代的命运。

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

最后,发起一个长期活动,每 15 天 (最后一天,明天公布)留言最多的人送上一本书或企鹅公仔。

今日问题:假如 python 真的过气了,下一个火起来的语言是什么呢?

推荐阅读:

30岁开始学编程晚吗?

为什么一定要学Go语言?

阿里出现S1级别事故,疑似内部员工人为导致

Python 什么时候会被取代?

本文分享自微信公众号 - 编程三分钟(coding3min)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

收藏
评论区

相关推荐

5 行 Python 代码调用电脑摄像头
**前提:** 确保 python 中安装了 opencv-python 模块。如果没有安装,可以参考:[https://pypi.org/project/opencv-python/](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fpypi.org%2Fproject%2Fopencv
UI自动化的第一步(Python,pip,selenium,PyCharm安装配置)
### 一,py安装 1.python下载,安装,环境配置 地址:[https://www.runoob.com/python/python-install.html](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.runoob.com%2Fpython%2Fpython-in
Udemy 课程下载利器
送给已经购买Udemy课程的同学(需要账号登录) 下载udemy-dl git clone https://github.com/r0oth3x49/udemy-dl.git 安装依赖 pip install -r requirements.txt 开始下载 python udemy-dl.py [课程地
VSCode 配置 Python 开发环境
### 一、环境准备 首先需要先安装好 Python 和 VSCode, 下载地址如下 * [VSCode](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fcode.visualstudio.com%2F) * [Python](https://www.oschina.net/
PEP 333
> > 翻译自 Python Web Server Gateway Interface v1.0 [PEP 333 - Python Web Server Gateway Interface v1.0](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.python.org%2F
CentOS升级Python到2.7版本
查看python的版本 python -V Python 2.4.3 1.先安装GCC yum -y install gcc 2.下载Python-2.7.2 wget http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2 3.解压Python-2.7.2
FreeBSD python安装MySQL
fetch https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.4.zip unzip MySQL-python-1.2.4.zip cd MySQL-python-1.2.4 python setup.py install ln -s /usr/loca
Jenkins Python Plugin获取环境变量
Jenkins Python Plugin 官方wiki:[https://wiki.jenkins-ci.org/display/JENKINS/Python+Plugin](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwiki.jenkins-ci.org%2Fdisplay%2F
Mac 升级Python 2.7 到 Python 3.7
MAC上默认内置安装了Python 2.7,但是Python 2.7到2020年就会停止维护了,并且有时候会出现依赖库的不兼容问题,那么怎么安装Python 3.X,并且将Python 3.X的版本设置为默认版本呢? ### 安装Python 3.7 有两种安装方式。 第一种是直接下载python3安装包安装: 1、下载地址如下:[https://w
Python 3 教程
Python 3 教程 =========== ![python3](https://www.runoob.com/wp-content/uploads/2014/05/python3.png) Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,
Python 全栈开发
**如果你已经玩转了 Python 编程语言语法,肯定想用这些知识,开发一款应用程序,它可以是在网上,可以炫耀或出售,那就需要全栈式开发 Python。具体如何创建,部署和运行生产 Python Web 应用程序,参考 [Full Stack Python](https://www.oschina.net/action/GoToLink?url=https%
Python 随笔
Python的windows包:[http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.lfd.uci.edu%2F%7Egohlke%2Fpythonlibs%2F%23mys
Python中Requests库的高级用法
前面讲了Python的urllib库的使用和方法,Python网络数据采集Urllib库的基本使用 ,Python的urllib高级用法 。 今天我们来学习下Python中Requests库的用法。([官方手册](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fdocs.python-req
Python安装Oracle数据库驱动
**1.环境设置** \[root[@oracle](https://my.oschina.net/oracle) ~\]# cat /etc/redhat-release  CentOS release 6.9 (Final) \[root[@oracle](https://my.oschina.net/oracle) ~\]# python -V
supervisor 监控redis & mongodb
安装 == 1. 安装python `brew install python` 2. 安装pip `wget https://bootstrap.pypa.io/get-pip.py` `sudo python get-pip.py` 3. 安装supervisor `pip ins