Python 什么时候会被取代?

来源:CSDN

译者 | 弯月,责编 | 郭芮

以下是译文: 

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

原文:

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

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

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java负数右移_Java中的按位右移运算符 - Break易站

在C / C 中,只有一个右移运算符>>,它只能用于正整数或无符号整数。在C / C 中不推荐使用右移运算符来表示负数,当用于负数时,输出依赖于编译器。与C 不同,Java支持以下两个右移操作符。Java中的按位右移运算符1)…

Android开发艺术探究Note

第一章:Activity的生命周期和启动模式 生命周期onPause表示activity正在停止,onPaus必须先执行完(栈顶的activity),新的activity的onResume才会执行。onStop表示activity即将停止(透明不会执行)…

html设置焦点图片,HTML设置焦点

**插件简介**这是一款很有特点的HTML5图片切换焦点图动画,点击左右按钮即可将图片进行弹性切换,图片在被切换时,都会左右晃动几下,产生一定的弹性缓冲动画效果。[contenteditable]:focus{outline: none;}如果input失去焦点时,有进…

烧脑:宇宙时空结构是量子纠错码

来源:Future远见现在越来越多的理论物理学家开始相信,时空起源于纠缠的量子信息。粗略地讲,时空中最重要的“相邻”概念,可以认为是起源于量子纠缠:有纠缠就是相邻,没有纠缠就是不相邻。如果你相信这一观念…

dataframe 取2列_DataFrame通过两列进行分组,并获取另一列的计数

新手程序员在这里寻求帮助。我有一个看起来像这样的数据框:Cashtag Date Message0 $AAPL 2018-01-01 "Blah blah $AAPL"1 $AAPL 2018-01-05 "Blah blah $AAPL"2 $AAPL 2019-01-08 "Blah blah $AAPL"3 $AAPL 2019-02-09 "Blah bl…

解决黑苹果的887驱动问题

使用audio_cloverALC工具,下载地址https://github.com/toleda/audio_CloverALC/blob/master/audio_cloverALC-120.command.zip。 首先需要挂载efi分区 1 promote:~ asher$ diskutil list2 /dev/disk0 (internal, physical):3 #: TYPE NAME…

tornado 获取html,python使用tornado实现简单爬虫

本文实例为大家分享了python使用tornado实现简单爬虫的具体代码,供大家参考,具体内容如下代码在官方文档的示例代码中有,但是作为一个tornado新手来说阅读起来还是有点困难的,于是我在代码中添加了注释,方便理解,代码如下:# codingutf-8#!/usr/bin/env p…

李德毅院士:通用人工智能十问

来源:学术头条共识:智能是学习的能力,以及解释、解决问题的能力;人工智能是脱离生命体的智能,是人类智能的体外延伸;通用人工智能通过不断学习,积累本领,进化成长,能够面…

gdt描述_全局描述符表GDT

写在前面添油加醋系列第二弹——剖析GDT话说C语言的话除了刷刷OJ外,就是用来实现操作系统这个大头了。C语言比C少了很多很多臃肿的语法特性,写起来非常优美(至少写操作系统是这样的)。虽说C有许多的奇技淫巧,一个算法有N种实现方法&#xff0…

咸阳高考成绩查询2021,2021咸阳市地区高考成绩排名查询,咸阳市高考各高中成绩喜报榜单...

距离2018年高考还有不到一个月的时间了,很多人在准备最后冲刺的同时,也在关心高考成绩。2018各地区高考成绩排名查询,高考各高中成绩喜报榜单尚未公布,下面是往年各地区高考成绩排名查询,高考各高中成绩喜报榜单,想要了解同学可以…

云计算与人工智能

来自:cnblogs.com/popsuper1982/p/8505203.html我今天要讲这三个话题,一个是云计算,一个大数据,一个人工智能,我为什么要讲这三个东西呢?因为这三个东西现在非常非常的火,它们之间好像互相有关系…

泸西一中2021高考成绩查询,云南红河州四所好高中,红河州一中一本率领先,建水一中不容小觑...

红河州地处我国西南,是一个常住人口超过467万的多民族聚居边疆自治州(地级行政区划),下辖4市(县级)、9县(其中3个自治县),经济总量在全省仅次于昆明与曲靖,是一个综合实力较强的自治州。红河州的基础教育实力相当不错,…

Date类

Date:是时间对象,它也是对象数据类型的一个细分 获取的是当前自己电脑的时间(获取客户端的时间) var nowTime new Date(); GMT:格林尼治时间(经纬度都是0) 中国是 GMT0800 东八区 美国是 UTC-0…

python 遍历list_Python列表遍历知多少

遍历列表中的所有元素是常用的一种操作,在遍历的过程中可以完成查询、处理等功能。在生活中,如果想要去商场买一件衣服,就需要在商场中逛一圈,看是否有想要买的衣服。逛商场的过程相当于列表的遍历操作。在Python中遍历列表的方法…

【JavaWeb】Maven(学习笔记)

一、Maven概述 1、Maven Maven 是一个项目管理工具 2、Maven解决的问题 jar 包问题编译测试运行打包 3、Maven的组成 项目对象模型 :pom.xml标准集合:目录结构标准一个项目生命周期(Project Lifecycle)依赖管理系统:通过配置文件管理用…

高中计算机学考操作ppt,高中信息技术基础学考专题复习(共25张PPT)

ID:11883433资源大小:308KB资料简介:信息的加工与管理 信息资源管理 计算机的功能与特征 文字处理:WORD 图表处理:EXCEL 多媒体信息处理:图像、音频、视频基本概念 算法及其实现 信息资源管理基本概念 网上数据的管理 数据库系统及简单应用:ACCESS 信息的表达 信息的…

自我监督学习:AI技术的未来发展方向

尽管深度学习已经在人工智能领域做出重大贡献,但这项技术本身仍存在一项致命缺陷:需要大量数据的加持。来源丨The Next Web尽管深度学习已经在人工智能领域做出重大贡献,但这项技术本身仍存在一项致命缺陷:需要大量数据的加持。深…

vue8 生命周期

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>智能社——http://www.zhinengshe.com</title><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum…

简述css属性选择器的几种定义方式_CSS简介,语法,选择器分类使用,属性设置

1.CSS简介CSS(Cascading Style Sheets)通常称为CSS样式表或层叠样式表(级联样式表)&#xff0c;主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。CSS以HTML为基础&#xff0c;提供了丰富的功能&a…

AI无间道!清华AI团队推出AI安全平台,欺骗顶尖人脸算法后又强势修复漏洞

随着人工智能技术的发展&#xff0c;人工智能在很多场景里正逐渐替代或协作着人类的各种劳动&#xff0c;它们可以成为人类的眼睛、耳朵、手臂甚至大脑。其中&#xff0c;机器视觉作为AI时代的基础技术&#xff0c;其背后的AI算法一直是各科技巨头和创业公司共同追逐的热点。然…