8月29日,IEEE Spectrum发布2023年顶级编程语言排行榜,在排行中,Python愈加拥有统治地位,一度成为嵌入式的得力竞争者,嵌入式开发的未来就在Python了吗?
IEEE Spectrum公布了三类榜单,虽然每种榜单的权重有所不同,但得出的结果却极为接近。
学Python,有未来?
IEEE Spectrum的综合排行中,Python、Java、C++、C、JavaScript、C#、SQL、Go位列前八,Python极具统治地位,流行度指标一度碾压第二的Java。
其实Python早蝉联多年榜首,其丰富的库和框架,如Pandas、Scikit-learn等成为其最大的竞争优势,在近两年表现强势,但需要注意的是,C、C++、C#等大型语言相加的总和是超过Python的,同时这几种语言也在特定维度拥有更好的流行度。
在就业语言使用排行中,SQL摘得桂冠,其次才是Python、Java、JavaScript、C++、C#、C等。
曾经作为查询数据库的SQL,无疑是现在就业市场最基本的技能,而事实上,大多雇主更希望应聘者在掌握其它语言,诸如Python、C、Java的基础上,同时具备SQL能力。
语言发展趋势榜单中,Python表现依然强势,与位列第二和第三的Java和JavaScript拉开巨大差距。
IEEE Spectrum强调,Python的已经成为万能语言,并在特定领域成为佼佼者,就比如,人工智能领域。此外,虽然摩尔定律对于高端数字芯片的提升已遇瓶颈,但MCU依然深受其影响,从而提升性能,这意味着一个价值0.7美元的CPU上,就有足够的计算能力让Python进行嵌入式开发,尽管解释器的开销很大。
当然,IEEE Spectrum还特别提示,不能过于迷信榜单,一方面,多数情况公司都要求工程师同时掌握Python和SQL,另一方面,各种C和Java语言综合的受欢迎程度远超Python,特别对于一些高性能的任务,解释器的开销还是过大。
很多工程师时常会发问,嵌入式,现在上车Python,有未来吗?而在EEWolrd论坛中,也不缺乏观望Python的学生,想要通过熟练掌握Python,作为嵌入式的敲门砖。
颇具争议的Python
人工智能:Python是一种用LISP和JAVA编译的语言,按照Norvig文章中对Lips和Python的比较,这两种语言彼此非常相似,仅有一些细小的差别; 数据分析:大数据时代,数据可以说明一切,现在很多做数据分析并没有那样简单,Python语言成为了做数据分析师的第一首选,它同时可以给工作带来很大的效率; Python Web网站工程师:Web一直是不可忽视的存在,我们离不开网络,离不开Web,利用Python的框架可以做网站,而且都是一些精美的前端界面,还有我们需要掌握一些数据的应用; Python自动化测试:Python语言对测试帮助非常大,自动化测试中Python语言用途很广,可以说Python太强大,掌握和熟悉自动化的流程,方法和我们总使用的各个模板,到现在为止Python使用最多的应该是自动化测试; Linux运维:用Python实现的测试工具及过程,包含服务器端、客户端、web、andriod、client端的自动化测试,自动化性能测试的执行、监控和分析,常用selenium appium等框架。
在嵌入式开发中,Python一般以MicroPython的形态所出现,对于Python进行嵌入式开发,工程师们众说纷纭。
中立派对它的评价是,Python要么是用在数据分析,再者就是Web、人工智能、自动化办公,其它领域还是没法工业化应用。
也有人评价:“Python简单易学, 第三方模块超多,但是缺点也很明显:,即解释执行, 打包问题,项目管理和发布等。”
更有甚者称,Python是一种胶水语言,不要再被它所忽悠了,并在EEWorld论坛中引发大面积讨论。
反对者称,Python主要特性是调用C语言的程序包较为容易,所以有很多人把各种C语言的程序库修改成Python能够调用的包。总结来说,Python有两大硬伤:
一是解释执行效率的硬伤。
Python是一种动态语言,解释执行,就如同JavaScript一样,JavaScript是网页里嵌入的特定领域语言,目前也在被新的编程体系取代(webassembly,可以由其它语言编译而来)。
现在,很多解释执行的语言都有被静态编译语言取代的趋势,GOlang有可能取代Java,Rust有可能取代C/C++,webassembly有可能取代JS。Java、C/C++,JS都是目前的主要生产语言,就是可以用来写大型的应用的语言。
Python是后来者,主要用来写简短的、临时性的试验代码。例如,在写软件时可能需要临时处理文本格式或统计数据,此时就没有必要使用工作语言临时建立工程,这种情况用Python,很好。所以在大型商业(开源)软件基本见不到Python。
二是没有专业的软件库,基本是第三方语言库。
如绘图软件库,Python只能使用其它语言库,往往C语言等语言的库都比较底层,如果Python想拿来使用时需大量的封装代码,需要很多专业知识,新手(或只懂Python)很难做到,对于需要扩展程序库的功能基本上就没法解决,所以Python不能独立完成一个大型复杂项目。
此外,编写大型软件时,Python代码的组织结构很不友好,阅读起来费劲,Python的高级语法和其它语言也一样很不好理解的。对于专业程序来说,只掌握程序语言知识并不能写出能赚钱吃饭的程序,必需要有其它体系知识,就像嵌入行业不知道高低电平、上拉下拉电阻一样,职业程序员不是只写打印个字符三角形、求解个一元二次方程之类的教学程序,而是涉及大量行业知识。
反对者强调,“Python对于专业程序员来说可有可无,学与不学都无所谓,不要被那些做培训的忽悠,这些人只是为了让你交钱而已,才不管你是不是要吃饭的。对于想成为专业程序员还是学JAVA、C/C++、C#靠谱。”
参考资料 [1] The Top Programming Languages 2023 Python and SQL are on top, but old languages shouldn’t be forgotten.2023.8.29.https://spectrum.ieee.org/the-top-programming-languages-2023 [2] EEWorld论坛:http://bbs.eeworld.com.cn/thread-1193555-1-1.html [3] EEWorld论坛:http://bbs.eeworld.com.cn/thread-1173450-1-1.html [4] 橙子物联网:Python在嵌入式领域有没有前途?.2021.3.1.https://mp.weixin.qq.com/s/nVH9pnEQ5pPZoGEv4i-HOA