8月29日,IEEE Spectrum發(fā)布2023年頂級編程語言排行榜,在排行中,Python愈加擁有統(tǒng)治地位,一度成為嵌入式的得力競爭者,嵌入式開發(fā)的未來就在Python了嗎? IEEE Spectrum公布了三類榜單,雖然每種榜單的權(quán)重有所不同,但得出的結(jié)果卻極為接近。 學Python,有未來? IEEE Spectrum的綜合排行中,Python、Java、C++、C、JavaScript、C#、SQL、Go位列前八,Python極具統(tǒng)治地位,流行度指標一度碾壓第二的Java。 其實Python早蟬聯(lián)多年榜首,其豐富的庫和框架,如Pandas、Scikit-learn等成為其最大的競爭優(yōu)勢,在近兩年表現(xiàn)強勢,但需要注意的是,C、C++、C#等大型語言相加的總和是超過Python的,同時這幾種語言也在特定維度擁有更好的流行度。 在就業(yè)語言使用排行中,SQL摘得桂冠,其次才是Python、Java、JavaScript、C++、C#、C等。 曾經(jīng)作為查詢數(shù)據(jù)庫的SQL,無疑是現(xiàn)在就業(yè)市場最基本的技能,而事實上,大多雇主更希望應聘者在掌握其它語言,諸如Python、C、Java的基礎(chǔ)上,同時具備SQL能力。 語言發(fā)展趨勢榜單中,Python表現(xiàn)依然強勢,與位列第二和第三的Java和JavaScript拉開巨大差距。 IEEE Spectrum強調(diào),Python的已經(jīng)成為萬能語言,并在特定領(lǐng)域成為佼佼者,就比如,人工智能領(lǐng)域。此外,雖然摩爾定律對于高端數(shù)字芯片的提升已遇瓶頸,但MCU依然深受其影響,從而提升性能,這意味著一個價值0.7美元的CPU上,就有足夠的計算能力讓Python進行嵌入式開發(fā),盡管解釋器的開銷很大。 當然,IEEE Spectrum還特別提示,不能過于迷信榜單,一方面,多數(shù)情況公司都要求工程師同時掌握Python和SQL,另一方面,各種C和Java語言綜合的受歡迎程度遠超Python,特別對于一些高性能的任務(wù),解釋器的開銷還是過大。 很多工程師時常會發(fā)問,嵌入式,現(xiàn)在上車Python,有未來嗎?而在EEWolrd論壇中,也不缺乏觀望Python的學生,想要通過熟練掌握Python,作為嵌入式的敲門磚。
頗具爭議的Python
在嵌入式開發(fā)中,Python一般以MicroPython的形態(tài)所出現(xiàn),對于Python進行嵌入式開發(fā),工程師們眾說紛紜。 中立派對它的評價是,Python要么是用在數(shù)據(jù)分析,再者就是Web、人工智能、自動化辦公,其它領(lǐng)域還是沒法工業(yè)化應用。 也有人評價:“Python簡單易學, 第三方模塊超多,但是缺點也很明顯:,即解釋執(zhí)行, 打包問題,項目管理和發(fā)布等?!?/span> 更有甚者稱,Python是一種膠水語言,不要再被它所忽悠了,并在EEWorld論壇中引發(fā)大面積討論。 反對者稱,Python主要特性是調(diào)用C語言的程序包較為容易,所以有很多人把各種C語言的程序庫修改成Python能夠調(diào)用的包。總結(jié)來說,Python有兩大硬傷: 一是解釋執(zhí)行效率的硬傷。 Python是一種動態(tài)語言,解釋執(zhí)行,就如同JavaScript一樣,JavaScript是網(wǎng)頁里嵌入的特定領(lǐng)域語言,目前也在被新的編程體系取代(webassembly,可以由其它語言編譯而來)。 現(xiàn)在,很多解釋執(zhí)行的語言都有被靜態(tài)編譯語言取代的趨勢,GOlang有可能取代Java,Rust有可能取代C/C++,webassembly有可能取代JS。Java、C/C++,JS都是目前的主要生產(chǎn)語言,就是可以用來寫大型的應用的語言。 Python是后來者,主要用來寫簡短的、臨時性的試驗代碼。例如,在寫軟件時可能需要臨時處理文本格式或統(tǒng)計數(shù)據(jù),此時就沒有必要使用工作語言臨時建立工程,這種情況用Python,很好。所以在大型商業(yè)(開源)軟件基本見不到Python。 二是沒有專業(yè)的軟件庫,基本是第三方語言庫。 如繪圖軟件庫,Python只能使用其它語言庫,往往C語言等語言的庫都比較底層,如果Python想拿來使用時需大量的封裝代碼,需要很多專業(yè)知識,新手(或只懂Python)很難做到,對于需要擴展程序庫的功能基本上就沒法解決,所以Python不能獨立完成一個大型復雜項目。 此外,編寫大型軟件時,Python代碼的組織結(jié)構(gòu)很不友好,閱讀起來費勁,Python的高級語法和其它語言也一樣很不好理解的。對于專業(yè)程序來說,只掌握程序語言知識并不能寫出能賺錢吃飯的程序,必需要有其它體系知識,就像嵌入行業(yè)不知道高低電平、上拉下拉電阻一樣,職業(yè)程序員不是只寫打印個字符三角形、求解個一元二次方程之類的教學程序,而是涉及大量行業(yè)知識。 反對者強調(diào),“Python對于專業(yè)程序員來說可有可無,學與不學都無所謂,不要被那些做培訓的忽悠,這些人只是為了讓你交錢而已,才不管你是不是要吃飯的。對于想成為專業(yè)程序員還是學JAVA、C/C++、C#靠譜?!?/span> 參考文獻 · END · |
|