本文转载自公众号"读芯术”(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是一种什么类型的语言

    小时不识月,呼作白玉盘.很多人习惯地说Python不过是一种脚本语言而已,实际上这种说法是非常不准确的,完全不能体现出Python的强大. 严格来说,Python是一门跨平台.开源.免费的解释型高级动 ...

  2. python是什么类型的编程语言-python是一种什么类型的编程语言

    Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/)是一种广泛使用的解释型.高级编程.通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年.可以视之为一种改良(加入一些 ...

  3. python 是什么类型的语言-python是一种什么类型的语言

    小时不识月,呼作白玉盘.很多人习惯地说Python不过是一种脚本语言而已,实际上这种说法是非常不准确的,完全不能体现出Python的强大. 严格来说,Python是一门跨平台.开源.免费的解释型高级动 ...

  4. python是一种语言吗-python是一种什么类型的语言

    小时不识月,呼作白玉盘.很多人习惯地说Python不过是一种脚本语言而已,实际上这种说法是非常不准确的,完全不能体现出Python的强大. 严格来说,Python是一门跨平台.开源.免费的解释型高级动 ...

  5. python是一种解释类型的编程语言-Python入门你要懂哪些?这篇文章总算讲清楚了...

    原标题:Python入门你要懂哪些?这篇文章总算讲清楚了 作者 | 小土豆Yuki 来源 | 洁癖是一只狗(ID: rookie-dog) 从今天开始学习Python,今后会不定期更新Python的相 ...

  6. python中内置的四种数值类型为_浅谈python语言四种数值类型

    Python语言支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下.希望对 ...

  7. python是一种什么类型语言-Python还是一种

    [判断题]Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义 [填空题]Python还是一种 类型语言, 变量的类型也是可以随时变化的. [填空题]Pytho ...

  8. python是一种汇编类型的语言_python全栈开发学习_day2_语言种类及变量

    一.编程语言的分类及python相对其他语言的优势 1)三大语言种类及细分 1.机器语言(低级语言):直接用计算能够理解的二进制进行编写,直接控制计算机硬件. 优点:执行效率高. 缺点:开发效率低,跨 ...

  9. python程序设计语言是什么类型的语言-Python 是弱类型的语言 强类型和弱类型的语言区别...

    Python 是弱类型的语言 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言.C++.Java 是强类型语言的代表. 下面我们以 C++ 为例来演示强类型语 ...

最新文章

  1. PHPRunner(网页制作工具)v10.3中文版
  2. Yarn ResourceManager High Availability
  3. 若依前后端分离版怎样根据数据库生成代码并快速实现某业务的增删改查
  4. LeetCode 多线程 1116. 打印零与奇偶数
  5. jzoj100046-收集卡片【暴力】
  6. SAP License:SAP 期初数据导入
  7. 知识总结和记录——递归
  8. 一个关于反序列化的小问题
  9. IAR Embedded Workbench IDE 显示行号
  10. c语言c++三人/双人贪吃蛇源码,双缓冲,多线程,AI蛇,吃啥长啥
  11. db4o java教程_Db4o 社区版 8.1.1 发布,面向对象数据库
  12. UESTC-1633 去年春恨却来时,落花人独立,微雨燕双飞(取模最短路)
  13. 《机器学习实战》机器学习概述
  14. 教你如何在vue-cli项目打包时避免踩雷(一)【早看早受益】
  15. 时间戳转换成YY-MM-DD HH:MM:SS格式
  16. java 鼠标动眼睛动_java实现眼睛跟着鼠标转动的跟踪眼代码
  17. 小米手机第一次使用SSR提示“创建一个XXX链接”,无法点击确定
  18. 【C++】游戏开发--基础
  19. (三)【矩阵论】(子空间)常见子空间|基扩张定理|和空间与交空间|直和
  20. JavaScript写移动端答题网页程序

热门文章

  1. 注解处理器开发过程相关问题
  2. 函数式编程——做到并发,不可变数据修改就只能复制后修改返回
  3. 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2
  4. python dns server开源列表 TODO
  5. Python:SMOTE算法——样本不均衡时候生成新样本的算法
  6. HBase单机环境搭建
  7. Vue开发跨端应用(三)添加cordova
  8. THinkPHP 5.0 域名路由
  9. Android的AutoCompleteTextView在API17高版本添加的setText函数在低版本系统居然能正常调用?官方文档是不是不靠谱了?...
  10. UHF RFID编码之TPP编码