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

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

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

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

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

6ce88dc1087ecb8cc828a11b1844bcf1.jpg-wh_651x-s_798156341.jpg

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

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

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

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

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

e3855f606be80ee322b84782404a44e3.jpeg

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不能为它们所用。

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

28541964ecaa9c052063360d0dddae01.jpeg

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

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标签的数量显示,这些语言的市场份额仍然很小,尽管如此,它们未来的上升趋势却显而易见。

5a0350c12ec19f762b5b89030f3eff80.jpeg

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

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

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

你觉得呢?

6d6d3a897e7d5327414fbb243ddfaaba.jpg

【编辑推荐】

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

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NCT全国青少年编程能力等级测试教程中的Python语言编程二级要求学生具备一定的Python编程基础。下面是一些关键的知识点和技能要求。 首先,学生需要了解掌握Python语言的基本语法,包括变量、数据类型、运算符、条件语句、循环语句和函数等。他们应该可以使用这些基本语法来编写简单的程序。 其次,学生需要熟悉Python中的基本数据结构,例如列表、元组和字典,并能够使用它们来存储和处理数据。他们应该了解如何访问、添加、删除和修改这些数据结构中的元素。 此外,学生还需要了解文件操作和异常处理。他们应该知道如何打开、读取和写入文件,并且知道如何处理可能出现的异常情况。 在编程能力方面,学生需要能够分解问题和设计程序。他们应该能够将复杂的问题分解为更小的子问题,并设计相应的算法和数据结构来解决这些子问题。 此外,学生还应该具备良好的编程习惯和规范。他们应该能够写出清晰、可读性强、结构良好的代码,并使用适当的注释来解释代码的功能和实现方式。 在NCT全国青少年编程能力等级测试中,学生需要通过理论考试和实际编程任务来展示他们的能力。这些考试和任务将涵盖以上提到的知识点和技能要求。 通过完成Python语言编程二级的考试,学生能够进一步提高他们的Python编程能力,并为进一步学习和使用Python做好准备。这将为他们今后在计算机科学和编程领域的发展打下坚实的基础。 ### 回答2: NCT全国青少年编程能力等级测试教程是为了评估学生们在编程方面的能力等级而设计的一项测试。其中,Python语言编程二级是其中的一个测试等级。 Python是一种广泛应用于科学计算、人工智能、机器学习和网站开发等领域的编程语言Python语言编程二级的测试主要考察学生对Python编程的基本语法和概念的掌握程度。 在Python语言编程二级的测试中,学生可能会遇到以下内容: 1. 变量和数据类型:学生需要了解Python中的各种数据类型,如整型、浮点型、字符串和布尔型,并能够正确地声明和使用变量。 2. 条件语句和循环语句:学生需要理解条件语句(如if语句)和循环语句(如for循环和while循环),并能够运用它们解决简单的问题。 3. 函数和模块:学生需要了解函数的定义和调用,并能够编写简单的函数。此外,学生还需要了解如何使用Python的内置模块来扩展其功能。 4. 文件操作:学生需要掌握如何打开、读取和写入文件,以及如何处理文件中的数据。 5. 错误处理:学生需要了解异常处理的概念,并能够使用try-except语句来捕获和处理可能出现的错误。 Python语言编程二级的测试旨在帮助学生进一步巩固和提高他们在Python编程方面的基础知识。通过参加这个级别的测试,学生可以评估自己在Python编程方面的能力,并发现自己的不足之处,以便更好地学习和提升。希望这个简要的回答对您有帮助。 ### 回答3: NCT全国青少年编程能力等级测试是一项评估青少年编程水平的考试。本教程将介绍NCT编程等级测试的Python语言编程二级内容。 Python语言编程二级主要考察以下几个方面的知识和技能: 1. 数据类型和运算符:了解Python中常用的数据类型,例如整数、浮点数、字符串和布尔型,并熟悉基本的运算符(加、减、乘、除等)和运算规则。 2. 控制结构:掌握条件控制语句(if语句)和循环结构(for循环和while循环),能够根据不同的条件执行相应的代码块。 3. 函数和模块:了解函数的定义和使用方法,知道如何创建函数并调用函数。同时,了解如何使用Python的模块,例如数学模块(math)和随机数模块(random)。 4. 列表和字典:熟悉列表和字典的定义和操作方法,能够对列表和字典进行增添、删除、修改和遍历等操作。 5. 文件操作:熟悉如何在Python中打开、读取和写入文件,了解文件指针的概念以及基本的文件操作方法。 在学习过程中,建议通过实践来加深对Python语言的理解和掌握。可以使用Python的集成开发环境(IDE)编写和运行代码,并通过编写一些简单的小程序来巩固所学内容。 最后,参加NCT编程能力等级测试需要认真学习,并且多进行练习。除了掌握考试内容,还要培养编程思维和解决问题的能力。希望你能通过努力学习,顺利通过Python语言编程二级的考试!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值