为什么说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

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

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

相关文章

win 杀掉占用的端口_Windows netstat 查看端口、进程占用、杀掉进程

转载:http://ywsm.iteye.com/blog/510670http://58582786.blog.51cto.com/1550000/671487目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用.操作:操作分为两步:(1)查看该端口被…

C++课程上 有关“指针” 的小结

上完了C的第二节课以后,觉得应该对这个内容进行一个小结,巩固知识点,并对我的心情进行了一个侧面烘托... 开始上课的老师: 正在上课的我: 上去敲代码的我: 过程是这样的: 下来的我: …

python安装路径查看_查看python安装路径及pip安装的包列表及路径

一、Linux系统 查看Python路径 whereis python 此命令将会列出系统所安装的所有版本的Python的路径效果如下:使用以下命令可分别查看Python2,Python3的安装路径 whereis python2 whereis python3 查看使用pip安装的软件包 默认Python3 pip list Python2查…

python循环10次_开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择...

开发一个循环 5 次计算的小游戏,设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择“、-、*”运算符,构成一个表达式,让用户计算式子结果并输入结果,如果计算结果正确则加一分,如果计算结果错误不…

配置java编译环境

2019独角兽企业重金招聘Python工程师标准>>> (1)我的电脑属性->高级系统配置->环境变量(2)点击第二个"新建(W)..."->输入变量名"JAVA_PATH",变量值"C:\Program Files\Java\jdk1.8.0_91"->确定(3)找系统变量中的Path并双击…

spring aop 必须的包 及里面用到的东西_Spring 原理初探——IoC、AOP

前言众所周知, 现在的 Spring 框架已经成为构建企业级 Java 应用事实上的标准了,众多的企业项目都构建在 Spring 项目及其子项目之上,特别是 Java Web 项目。Spring 的两个核心概念是 IoC(控制反转)和 AOP(面向切面编程)。想了解 Spring 的工…

Android平台和java平台 DES加密解密互通程序及其不能互通的原因

为什么80%的码农都做不了架构师?>>> 网上的demo一搜一大堆,但是,基本上都是一知半解(包括我)。为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DES 加密和Java DES加密…

PDM系统服务器管理,基于PDM的异地协同设计系统

基于PDM的异地协同设计系统随着经济全球化的不断发展,产品设计分工越来越细,产品协同设计团队越来越分散。由于产品设计的需要,分布在不同地方的设计人员和其他相关人员都要参与产品的开发过程,各自承担相应的设计任务&#xff0c…

flex 下对齐_Flex 布局示例

感谢阮一峰老师的教程http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html本示例将教程上所有的布局都简单的实现了一遍,并保存GitHub上面https://github.com/JailBreakC/flex-box-demo​github.com容器的属性1、flex-direction属性flex-direction属性决定主…

python读csv最快方法_使用Python读写csv文件的三种方法

Python读写csv文件觉得有用的话,欢迎一起讨论相互学习~Follow Me前言逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件…

url过滤怎么解除_Shiro-实战(四)---过滤器机制

1 简介Shiro使用了与Servlet一样的Filter接口进行扩展 1.1 NameableFilterNameableFilter给Filter起个名字,如果没有设置默认就是FilterName 当我们组装拦截器链时会根据这个名字找到相应的拦截器实例1.2 OncePerRequestFilter用于防止多次执行Filter,也就是说一次请…

django使用LDAP验证

1.安装Python-LDAP(python_ldap-2.4.25-cp27-none-win_amd64.whl)pip install python_ldap-2.4.25-cp27-none-win_amd64.whl 2.安装django-auth-ldap(django-auth-ldap-1.2.8.tar.gz)(下载:https://pypi.py…

风变的python课程怎么样_风的解释|风的意思|汉典“风”字的基本解释

【戌集下】【風】 風康熙筆画:9 部外筆画:0〔古文〕 𠙊 𠙈凬飌檒【唐韻】方戎切【集韻】方馮切【正韻】方中切, 𠀤音楓。風以動萬物也。【莊子齊物論】大塊噫氣,其名爲風。【河圖】風者&#x…

getprivateprofilestring读不到数据_Tomcat NIO(11)请求数据读取

在上一篇文章里我们主要介绍了 tomcat io 线程中涉及到的主要核心类,包括 AbstractProcessorLight,Http11Processor,CoyoteAdapter,这里主要介绍对于请求数据的读取。对于 tomcat 请求数据的读取来说,可以分为请求行的…

企业办公自动化系统_OA系统的核心功能有哪些?分析当下OA系统的缺陷以及相关解决方案...

什么是OA系统,OA是英语Office Automation的简称,字面意思是办公自动化,即将计算机、通信等现代化技术运用到传统办公中,进而形成的一种新型办公方式。它利用现代化设备和信息化技术,代替了办公人员传统的部分手动或重复…

python whl_python whl是什么文件

在安装whl文件之前,我们需要先搞清楚什么是whl文件,whl格式本质上是一个压缩包,里面包含了py文件,以及经过编译的pyd文件。使得可以在不具备编译环境的情况下,选择合适自己的python环境进行安装。在Win7下安装whl文件&…

android activity生命周期_Android岗高频面试题合一集,看你能答出几题?

前言面试季黄金时期来袭,想必许多朋友在这时有找工作、换工作、跳槽涨薪等想法,但你们都有一个相同的过程那就是面试。大家肯定想知道面试时都问哪些面试相关问题,所以就去网上查找题去刷题,为了省去大家找题的时间,小…

java web判断服务器是否是本机

1,如何获取浏览器的ip Java代码 /*** * 获取客户端ip地址(可以穿透代理) * param request * return */ public static String getClientIpAddr(HttpServletRequest request) { String ip request.getHeader("X-Forwarded-For"…

数据字典简单例子_Python学习100天-Day14(数据分析篇-pandas02)

Day14-读取文件接着上一天的内容,我在学习的过程中发现,DF数据还可以利用几个Series数据组成,具体看一个例子:两种形式,第一种是直接对Series创建DF对象,得出的结果。第二种是通过字典的形式创建DF对象&…

把百度网站设为首页_网站百度推广效果好不好?怎样才能把网站推广到百度首页?...

在移动互联网营销的过程中,有着各式各样的营销手段,也有着丰富多彩的营销平台,而百度平台是大家非常熟悉的,它拥有着亿万用户,几乎小伙伴们每天都需要通过百度查找各种资讯,来满足自己的需求,丰…