本文转载自公众号“读芯术”(ID:AI_Discovery)

Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在。

虽然问世几十年后,Python才得到编程社区的重视。

但是,其发展的势头似乎无人能及。

自2010年年初以来,Python一直在蓬勃发展——在流行趋势方面,它最终超过了C、C#、Java和Javascript,成为计算机语言中的“大热门”。

它为人们提供了优质的服务——但这样的趋势会持续到什么时候呢?Python何时会被其他语言取代?为什么会这样?

关于Python的确切有效期众说纷纭,这些猜测可能会像科幻小说一样荒诞不经。与其猜测,不如评估一下当前促进Python流行的优势,以及未来会阻碍其流行的劣势。

是什么让Python在当下如此流行

Python的成功体现在Stack Overflow趋势上,该趋势测量了平台上帖子的标签数量。考虑到Stack Overflow的大小,这确实是衡量语言受欢迎程度的良好指标。

Stack Overflow上各种编程语言的标签快照

尽管R语言在过去几年一直处于平稳状态,而且很多其他语言也处于稳步下降趋势,但Python的增长却似乎势不可挡。在所有的Stack Overflow问题中,几乎有14%被标记上了“python”,而且这种趋势越来越明显。以下是出现这种情况的几个原因:

1. 出现时间早

Python大约诞生于90年代。这不仅意味着它有足够的时间成长,还获得了一个庞大的粉丝群体。

所以如果人们在用Python编码时遇到了问题,那么很可能只需用谷歌搜索一下便能解决。这不过是有些人已经遇到了相同的问题,写了一些有助于解决问题的内容而已。

2. 适合初学者

Python已经存在了数十年,程序员们可利用这段时间写出优质的教程。除此之外,Python的语法也很容易理解。

首先,无需指定数据类型。指定变量即可;Python会根据语境判断它是整数、浮点值、布尔值还是其他值。对于初学者来说,这是一个很大的优势。如果是C++语言,那么用浮点值替换整数时,程序将不会进行编译,曾经使用该语言编程的初学者应该对这种情况带来的挫败感深有体会。

如果初学者曾经并行阅读过Python和C++代码,那么会明白Python是多么容易理解。

即使C++语言在设计时考虑到了英语,但是和Python代码相比,它还是难以看懂。

3. 用途广泛

Python已经存在了相当长的时间,开发人员们根据不同目的制作出了不同的程序包。现在,几乎所有的东西都能打包。

想处理数字、向量和矩阵?Numpy是个好帮手。

想对技术和工程进行计算?用Scipy。

想在数据处理和分析领域大展身手?试试Pandas。

想从人工智能入手?为什么不用Scikit-Learn。

无论人们要管理什么样的计算任务,都有可能用到Python程序包。从机器学习在过去几年间的迅猛发展便可看出,自身用途的广泛让Python处于近期发展的前列。

Python的缺点——以及它们是否致命

根据先前的论述,可以想象Python会在很长一段时间之内保持发展的迅猛势头。但和其他技术一样,Python也有自己的弱点。笔者将一一介绍其最值得关注的缺点,并分析这些缺点是否致命。

1. 速度

Python的速度很慢。真的很慢。和其他语言相比,Python需要花2-10倍的时间来完成任务。

速度慢有多种原因。其中一个原因是Python属于动态类型——请记住,无需像其他语言一样指定数据类型。这意味着需要占用大量内存,因为程序需要为那些可在任何情况下运行的变量保留足够的空间。大量的内存占用转化为大量的计算时间。

另一个原因是Python一次只能执行一个任务。灵活的数据集会出现这样的结果——Python需要确保每个变量只有一个数据类型,平行进程可能会造成混乱。

相比之下,普通的网络浏览器一次可以运行十二个不同的线程。还有一些其他的理论。

但归根结底,所有的速度问题都无关紧要。电脑和服务器的价格十分便宜,所以人们讨论的只是关于几分之一秒的运行速度。而且终端用户并不在意自己是用0.001秒还是0.01秒加载应用程序。

2. 范围

起初,Python使用动态作用域。这基本上意味着,为了评估表达式,编译系统首先要搜索当前块,然后依次搜索所有调用函数。

动态作用域方面的问题在于,每个表达式都需要在每个可能的语境中进行测试——这相当繁琐。这就是大多数现代编程语言都使用静态作用域的原因。

Python曾试图过渡到静态作用域,但却造成了混乱。通常情况下,内部作用域——比如函数中的函数——将能够查看并更改外部作用域。但Python中的内部作用域只能查看外部作用域,却不能对其进行更改。这会导致严重的混乱。

3. Lambdas

尽管Python具有很高的灵活性,但Lambdas的使用还是有一定的局限性。在Python中,Lambdas只能是表达式,而不能是语句。

另一方面,变量声明和语句始终是语句。这意味着Lambdas不能为它们所用。

表达式和语句之间的区别相当随意,而其他语言并没有这样的情况。

空格让代码更容易看懂,但也让其更难以

4. 空格

Python使用空格和缩进来表示不同级别的代码。这使得代码在视觉上更具有吸引力,能够直观理解。

其他语言,比如C++语言,更多使用的是大括号和分号。虽然在视觉上没有什么吸引力,对初学者也并不友好,但这样做让代码更易于维护。对于较大的项目来说,这大有帮助。

Haskell这样较新的语言解决了这个问题:该语言多使用空格,但又为那些不想使用空格的人提供了另一种语法。

5. 移动开发

人们见证了从台式机到智能手机的转变,很明显,人们需要强大的语言来构建移动软件。

但正在使用Python进行开发的移动应用软件并不多。这并不意味着用Python进行移动开发无法实现——名为Kivy的Python程序包就可以做到移动开发。

但Python并没有考虑到移动设备。所以即使它有可能完成一些基本任务,也最好使用为移动应用程序开发而创建的语言。广泛使用的移动编程框架包括React Native、Flutter、Iconic和Cordova。

需要明确的是,在未来的很多年,笔记本和台式机应该都会继续存在。但是,移动设备在通信量方面已远远超越了桌面设备,因此可以肯定地说,想要成为经验丰富的全能型开发人员,只学习Python是不够的。

6. 运行错误

Python脚本并不是遵循先编译后执行的流程。相反,它在每次执行时进行编译,所以任何编码错误在运行时都会显现出来。这会导致性能下降、浪费时间以及需要进行大量测试。真的是大量的测试。

对于初学者来说,这是一件好事,因为他们可以从测试中学到很多。但对于经验丰富的开发人员来说,对Python中的复杂程序进行调试会让他们感到无所适从。性能不佳是在Python上设置时戳的最大原因。

什么会在未来取代Python——具体是什么时候

编程语言市场上出现了几个新的竞争者:

Rust具备与Python相同的安全性——不会意外覆盖任何变量。但它通过所有权和借用的概念解决了性能问题。Stack OverflowInsights显示,它还是过去几年当中最受人们喜爱的编程语言。

Go非常适合初学者,就像Python一样。它是如此简单,甚至连维护代码都变得更加容易。有趣的一点是:Go开发人员是市场上收入最高的程序员之一。

Julia是一种非常新的语言,可与Python展开正面竞争。它填补了大规模技术计算的空白:以前,人们通常会使用Python或Matlab,并使用C++库对整个程序进行修补,这一过程在大规模技术计算中是必需的。现在,人们可以使用Julia,而不必费力使用两种语言。

虽然市面上还有其他的语言,但Rust、Go和Julia却是弥补了Python弱项的语言。所有这些语言都在尚未投入使用的技术中表现出色,在人工智能领域的表现尤其亮眼。Stack Overflow标签的数量显示,这些语言的市场份额仍然很小,尽管如此,它们未来的上升趋势却显而易见。

Stack Overflow上各种编程语言的标签快

目前,Python十分流行,可以说是无处不在,新语言要想取代它,肯定需要五年(甚至可能是十年)的时间。

这个时候,很难说会是哪种语言取代Python(Rust、Go、Julia还是未来的某种新语言)。但考虑到Python体系结构中最基本的性能问题,一定会有某种语言取代它的位置。

你觉得呢?

【编辑推荐】

【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0

python缺点这么多、为什么还流行_Python这么火,为什么说它不是未来的编程语言?...相关推荐

  1. 为什么说python是计算机语言的未来_Python这么火,为什么说它不是未来的编程语言?...

    本文转载自公众号"读芯术"(ID:AI_Discovery) Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在. 虽然问世几十年后,Python才得到编程社 ...

  2. python属于哪种类型的语言_Python是什么类型的编程语言,有什么特性

    由于近几年人工智能的不断发展,Python也跟着火了,因为Python是深度学习技术的主流应用编程语言.同时它的应用场景很多,被称为"胶水语言".下面给大家科普一下Python这门 ...

  3. Python 最抢手、Java 最流行、Go 最有前途,7000 位程序员揭秘 2019 软件开发现状...

    作者 | 屠敏 整理 报告来源 | JetBrains 出品 | CSDN(ID:CSDNnews) 互联网的下半场,科技公司为面对更加严峻的竞争环境,越来越重视开源节流.而对于身处其中且撑起 IT ...

  4. python的缩进规则是什么意思_Python编程思想(2):Python主要特性、命名规则与代码缩进...

    目录 那么什么是动态语言呢? 那么什么是弱类型语言和强类型语言呢? Python命名规则 缩进原则 李宁老师的<Python编程思想>上线了,囊括了Python的核心技术,以及Python ...

  5. Python最抢手、Java最流行、Go最有前途,7000位程序员揭秘2019软件开发现状

    作者 | 屠敏 整理 来源 | JetBrains 出品 | CSDN(ID:CSDNnews) 互联网的下半场,科技公司为面对更加严峻的竞争环境,越来越重视开源节流.而对于身处其中且撑起 IT 半边 ...

  6. python杨辉三角输出指定行_python杨辉三角输出指定行_使用python打印十行杨辉三角过程详解...

    如何用python输出杨辉三角 程序输出需要实现如下效果: [1] [1,1] [1,2,1] [1,3,3,1] .. 方法:迭代,生成器 12345678910111213141516171819 ...

  7. 【爆肝更新】Python基础教程:第五章_Python函数

    原创:公众号 数据说话 [爆肝更新]Python基础教程:第五章_Python函数 函数介绍 学习目标: 快速体验一下函数的使用 了解函数的作用. 函数:是组织好的,可重复使用的,用来实现特定功能的代 ...

  8. python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章

    原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...

  9. python日常能做什么-Python除了做AI、还能干啥?

    先说个笑话,很多人一开始学习 Python 的时候,会感到无聊和枯燥,因为一开始都不知道那些循环语句呀.列表呀.元组等知识点的用武之地,所以慢慢的就没什么动力了,然后就去买滑板鞋,开始在地上摩擦,像魔 ...

最新文章

  1. 使用ELK 搭建core文件展示平台
  2. python最全知识点_史上最全的Python面向对象知识点疏理
  3. Python面向对象中反射和双下的正确用法
  4. HTTP referer/HTTP referrer
  5. boost::fusion::back_extended_deque用法的测试程序
  6. nginx负载均衡基于ip_hash的session粘帖
  7. 《PHP和MySQL Web开发从新手到高手(第5版)》一一1.7 万事俱备,摩拳擦掌
  8. linux 混杂模式 收包,Linux下使用混杂模式抓包(2)
  9. JSTL使用总结(2) fmt标签库和fn标签库
  10. Rsync的配置与使用
  11. 红米5a android,红米5A值得买吗?红米5A测评告诉你(附全文)
  12. 【前端】盒子水平垂直居中的六大妙招
  13. 软件测试52讲-测试先行:测试驱动开发(TDD)
  14. 体育新闻html模板,HTML5响应式体育新闻资讯类门户网站模板源码+自适应移动端...
  15. JAVA在线小说电子书阅读系统毕业设计 开题报告
  16. postgresql12-timescaleDB多节点部署安装
  17. BigDATA面试题
  18. Codeforces Round #460 (Div. 2) C Seat Arrangements
  19. nginx负载均衡 tomcat报异常: parseHost The host [*] is not valid
  20. Windows浏览器无法联网,提示代理服务器没有响应

热门文章

  1. Spring Boot Learning(模版引擎)
  2. 学习OpenStack之 (4): Linux 磁盘、分区、挂载、逻辑卷管理 (Logical Volume Manager)
  3. C#语言之“中英文混合字符串对齐”的方法
  4. AdoHelper使用MySQL存储过程示例
  5. 2020年9月25日-01-项目启动(团队分工)+带宽,网络速度的计算
  6. 2.42死锁的处理策略一预防死锁
  7. 第二章 物理层 1 物理层的基本概念 [计算机网络笔记]
  8. html5+实现图片自动切换,js图片自动切换效果处理代码
  9. php 面相对象设计,PHP面向对象设计的规范
  10. 华为p10plus能用鸿蒙吗,华为P10/P10 Plus对比评测:自家兄弟大对决