0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python在實(shí)時(shí)嵌入式系統(tǒng)中扮演的角色

GReq_mcu168 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-11-05 11:08 ? 次閱讀

早年,雖然Python是一款比較容易上手的腳本語(yǔ)言,而且有強(qiáng)大的社區(qū)支持,一些非計(jì)算機(jī)專(zhuān)業(yè)領(lǐng)域的人都選它作為入門(mén)語(yǔ)言。遺憾的是,它不能實(shí)現(xiàn)一些非常底層的操控,所以在硬件領(lǐng)域并不起眼。

然而今時(shí)不同往日!

硬件圈同樣非常關(guān)注Python!

說(shuō)到Python用于硬件開(kāi)發(fā)。很多人可能想到的是樹(shù)莓派等支持linux系統(tǒng)的(樹(shù)莓派和Arduino應(yīng)用Python的的例子實(shí)在是多,比如,利用Raspberry Pi的硬件和Python語(yǔ)言來(lái)完成一個(gè)機(jī)器人制作。),然而現(xiàn)在Python已經(jīng)完全可以脫離系統(tǒng),直接進(jìn)行單片機(jī)的開(kāi)發(fā)了。

用Python語(yǔ)言控制單片機(jī)

MicroPython是在單片機(jī)上可以跑的Python,你可以通過(guò)Python腳本語(yǔ)言開(kāi)發(fā)單片機(jī)程序。MicroPython基于ANSI C,語(yǔ)法跟Pyton 3基本一致,擁有自家的解析器、編譯器、虛擬機(jī)和類(lèi)庫(kù)等。目前它支持基于32-bit的ARM處理器,比如STM32F405、STM32f407等,也就是說(shuō)ARM處理器STM32F405上直接可運(yùn)行Python語(yǔ)言,用Python語(yǔ)言來(lái)控制單片機(jī)。

借助Micro Python,用戶完全可以通過(guò)Python腳本語(yǔ)言實(shí)現(xiàn)硬件底層的訪問(wèn)和控制,比如說(shuō)控制LED燈泡、LCD顯示器、讀取電壓、控制電機(jī)、訪問(wèn)SD卡等。

下面這篇美國(guó)EDN發(fā)布的文章,介紹了Python在實(shí)時(shí)嵌入式系統(tǒng)中扮演的角色:Python's role in developing real time embedded systems。

Python具有良好的跨平臺(tái)性,比如Linux和Windows,或是諸如Raspberry Pi等單板計(jì)算機(jī)。不過(guò),隨著Python的日益普及,人們可能會(huì)問(wèn),在實(shí)時(shí)嵌入式系統(tǒng)中是否也有Python的一席之地。答案是肯定的。下面是開(kāi)發(fā)人員發(fā)現(xiàn)Python在實(shí)時(shí)嵌入式系統(tǒng)開(kāi)發(fā)中有可能扮演的五個(gè)主要角色。

作用# 1設(shè)備調(diào)試和控制

嵌入式軟件開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)人員常常需要分析總線通信量,如USB、SPI或I2C。有的分析僅僅是出于調(diào)試目的,但有時(shí)則需要控制總線分析儀并發(fā)送信息至嵌入式系統(tǒng)。許多總線分析儀和通信工具都有友好的用戶接口,可以用來(lái)控制工具。他們通常還提供一種方法來(lái)開(kāi)發(fā)腳本,也可以用來(lái)控制工具。Python是一種普遍支持的腳本語(yǔ)言,有時(shí)則是一些工具的接口,或是用來(lái)控制工具。

作用# 2–自動(dòng)化測(cè)試

通過(guò)Python控制工具在嵌入式系統(tǒng)中發(fā)送和接收消息的能力,使得利用Python構(gòu)建自動(dòng)化測(cè)試(包括回歸測(cè)試)成為可能。Python腳本可以設(shè)置嵌入式系統(tǒng)進(jìn)入不同的狀態(tài),設(shè)置配置文件,并測(cè)試所有可能的干擾以及系統(tǒng)與外部環(huán)境的相互作用。使用Python開(kāi)發(fā)自動(dòng)化測(cè)試的好處是,回歸測(cè)試可以開(kāi)發(fā)持續(xù)測(cè)試并訓(xùn)練系統(tǒng)。任何的代碼變動(dòng)導(dǎo)致的bug或不合格的結(jié)果都將被實(shí)時(shí)的檢測(cè)出來(lái)。

作用# 3–數(shù)據(jù)分析

通過(guò)Web簡(jiǎn)單地搜索Python庫(kù),你會(huì)發(fā)現(xiàn),有許多免費(fèi)強(qiáng)大的Python庫(kù)都可以用來(lái)開(kāi)發(fā)應(yīng)用程序。Python可以用來(lái)接收非常重要的嵌入式系統(tǒng)數(shù)據(jù),然后存儲(chǔ)到數(shù)據(jù)庫(kù)或是本地進(jìn)行分析。開(kāi)發(fā)者還可以使用Python開(kāi)發(fā)實(shí)時(shí)可視化功能來(lái)展現(xiàn)臨界參數(shù),或是存儲(chǔ)這些參數(shù)用于后續(xù)分析。使用Python進(jìn)行數(shù)據(jù)分析的優(yōu)點(diǎn)之一是當(dāng)基礎(chǔ)性工作完成之后,新功能的植入會(huì)顯得比較簡(jiǎn)單。

作用# 4–實(shí)時(shí)軟件

Python已經(jīng)證實(shí)了自己的強(qiáng)大性和易使用性,甚至發(fā)現(xiàn)它是作為一門(mén)編程語(yǔ)言進(jìn)入實(shí)時(shí)嵌入式系統(tǒng)。是的,嵌入式軟件本身就是用Python寫(xiě)的而不是C/C++。用于實(shí)時(shí)軟件最廣泛的Python版本是MicroPython,大多是設(shè)計(jì)在ARM Cortex-M3/4微控制器上運(yùn)行。MicroPython并不孤立。Synapse和OpenMV公司在嵌入式系統(tǒng)中既使用MicroPython也使用他們自己的Python port。對(duì)MicroPython感興趣的讀者可能對(duì)DesignNews(EDN的姐妹機(jī)構(gòu))的繼續(xù)教育課程也感興趣。

作用# 5–學(xué)習(xí)面向?qū)ο缶幊?/p>

Python是一門(mén)免費(fèi)的編程語(yǔ)言,可以跨多個(gè)平臺(tái)使用,對(duì)于學(xué)生和非編程人員而言比較簡(jiǎn)單。該語(yǔ)言與C語(yǔ)言不同,它也是現(xiàn)代式的,并且可以在自由形態(tài)的腳本類(lèi)型中結(jié)構(gòu)化,或是作為一個(gè)復(fù)雜的面向?qū)ο蟮捏w系結(jié)構(gòu)。Python本身也很靈活。甚至還有這種情景:沒(méi)有編程經(jīng)驗(yàn)的電氣工程師可以利用Python寫(xiě)出有用的測(cè)試腳本或用最少的時(shí)間實(shí)施電板檢查。

Python的學(xué)習(xí)曲線并不陡峭,熟悉Python學(xué)習(xí)曲線的開(kāi)發(fā)人員發(fā)現(xiàn),當(dāng)你有了其它語(yǔ)言的基礎(chǔ)之后,學(xué)習(xí)Python比學(xué)習(xí)任意其他的編程語(yǔ)言都要簡(jiǎn)單。出于這些原因,當(dāng)開(kāi)發(fā)人員看到Python扮演著編程孵化器角色,并吸收其它缺乏經(jīng)驗(yàn)的工程師對(duì)宜早不宜遲的設(shè)計(jì)周期做出貢獻(xiàn)時(shí),不應(yīng)該感到驚訝。

什么?Python+FPGA!?

夏宇聞老師幾個(gè)月前在微信上推薦了一個(gè)帖子,說(shuō)的是有人用Digilent的PYNQ-Z1板卡實(shí)現(xiàn)了超強(qiáng)的加速性能。

早年,關(guān)于FPGA的開(kāi)發(fā)都是基于硬件描述語(yǔ)言,從開(kāi)始的VHDL到現(xiàn)在更為流行的Verilog,軟件應(yīng)用也從由最開(kāi)始的匯編語(yǔ)言發(fā)展到現(xiàn)在的c/c++實(shí)現(xiàn),這些都是目前為大多數(shù)FPGA開(kāi)發(fā)者所熟悉的FPGA發(fā)展路程。上個(gè)月,IEEE收錄了一篇關(guān)于使用Python開(kāi)發(fā)FPGA應(yīng)用的論文。

在美國(guó)納帕舉行的第25屆關(guān)于可編程計(jì)算機(jī)器領(lǐng)域IEEE國(guó)際討論會(huì)上,一篇名為“評(píng)估通過(guò)Python快速開(kāi)發(fā)異構(gòu)處理器FPGA應(yīng)用性能”的短篇論文獲得了最佳短篇論文獎(jiǎng)。這篇論文主要討論了Python開(kāi)發(fā)FPGA應(yīng)用的優(yōu)勢(shì)和效率,論文中針對(duì)Digilent的PYNQ-Z1板卡(內(nèi)部集成一個(gè)Xilinx Zynq SoC),通過(guò)支持Python編程和Jupyter Notebooks框架的PYNQ開(kāi)發(fā)環(huán)境,應(yīng)用Python對(duì)此板卡進(jìn)行開(kāi)發(fā)編程,并最終評(píng)估開(kāi)發(fā)結(jié)果的優(yōu)勢(shì)和效率。值得一提的是,發(fā)表這篇論文的作者都是業(yè)界大佬,包括高級(jí)計(jì)算機(jī)科學(xué)家AndrewG.Schmidt、計(jì)算機(jī)科學(xué)家Gabriel Weise以及來(lái)自美國(guó)南加州大學(xué)工程技術(shù)科學(xué)協(xié)會(huì)的研究室主任Matthew French。在論文中,Matthew French教授主要就利用PYNQ開(kāi)發(fā)環(huán)境,應(yīng)用Python語(yǔ)言對(duì)Xilinx Zynq器件進(jìn)行編程應(yīng)用開(kāi)發(fā)時(shí)對(duì)FPGA器件的影響、性能結(jié)果以及瓶頸影響進(jìn)行了評(píng)估。此外,各位教授就基于Python的開(kāi)發(fā)結(jié)果與已經(jīng)存在的基于C語(yǔ)言的開(kāi)發(fā)及手動(dòng)開(kāi)發(fā)結(jié)果進(jìn)行了比較分析。

在論文中,各位教授還對(duì)PYNQ開(kāi)發(fā)環(huán)境的優(yōu)缺點(diǎn)進(jìn)行了闡述:

首先來(lái)說(shuō),PYNQ應(yīng)用開(kāi)發(fā)框架是一個(gè)開(kāi)源的開(kāi)發(fā)環(huán)境,提供了標(biāo)準(zhǔn)的可以約束芯片I/O引腳的“Overlay”比特流,同時(shí),開(kāi)發(fā)人員可以在此開(kāi)發(fā)環(huán)境中,利用Python對(duì)FPGA進(jìn)行快速編程開(kāi)發(fā)。此外,PYNQ開(kāi)發(fā)環(huán)境內(nèi)部集成標(biāo)準(zhǔn)的編程范式,支持HDMI視頻流的輸出輸出,同時(shí)具有兩組12pin的PMOD連接器和一個(gè)兼容Arduino的連接器(可以連接或配置為Arduino系列板卡)。其中,默認(rèn)的overlay中實(shí)例化了多個(gè)可以驅(qū)動(dòng)多I/O接口的微Blaze處理器核,也可以配置一些支持圖像濾波功能和試驗(yàn)SIMT(單指令,多線程)編程軟邏輯GPU的overlay。同時(shí),PYNQ也提供了支持比特流編程的API和可擴(kuò)展的通用Python庫(kù)和包,并且可以通過(guò)存儲(chǔ)映射I/O(MMIO)直接尋址可編程邏輯單元,另外還支持DMA交易(不需要經(jīng)過(guò)器件驅(qū)動(dòng)和核模塊之間的不斷握手確認(rèn))。

其次,就目前來(lái)說(shuō),PYNQ還不支持任何高級(jí)的綜合,也無(wú)法將Python應(yīng)用直接移植到FPGA中。這就意味著,開(kāi)發(fā)者依然原型必須使用FPGA來(lái)創(chuàng)建一個(gè)設(shè)計(jì),即當(dāng)PYNQ提供一個(gè)支持板卡IO接口的Overlay框架以時(shí),任何用戶邏輯依然必須由開(kāi)發(fā)者親自創(chuàng)建并綜合。不過(guò),開(kāi)發(fā)者仍然可以使用高級(jí)綜合工具或上面提到的Python-to-HDL工程來(lái)完成這個(gè)任務(wù),但是最終,開(kāi)發(fā)者依然需要基于此設(shè)計(jì)并創(chuàng)建一個(gè)整合了Python代碼比特流文件。

也正是由于PYNQ存在這方面的缺陷,論文的作者并沒(méi)有簡(jiǎn)單依賴現(xiàn)存的PYNQ API接口和overlay,他們開(kāi)發(fā)出一個(gè)基于Redsharc項(xiàng)目的特定應(yīng)用程序內(nèi)核進(jìn)行研究。

結(jié)果如何呢?論文最后,作者對(duì)給出了Python開(kāi)發(fā)Zynq應(yīng)用的各項(xiàng)評(píng)估結(jié)果。結(jié)果中給出了通過(guò)c/c++實(shí)現(xiàn)這項(xiàng)研究的一般圖像處理管道性能,以及定制的硬件加速器和Python實(shí)現(xiàn)的性能結(jié)果(下圖所示),幫助我們更好地理解了Python + FPGA開(kāi)發(fā)環(huán)境的性能和能。表中可以看出,結(jié)果十分明顯,通過(guò)PYNQ實(shí)現(xiàn)較c實(shí)現(xiàn)速度提高了30倍之多,更甚者,從結(jié)果中可以看出,當(dāng)Python實(shí)現(xiàn)時(shí)有更加有效的可用庫(kù)時(shí),比如OpenCV,其性能可以增長(zhǎng)更多。

Python軟件實(shí)現(xiàn)和FPGA性能潛力的結(jié)合是一個(gè)非常有意義的工作,將會(huì)開(kāi)創(chuàng)出一個(gè)類(lèi)似于樹(shù)莓派和Arduino的廣大的開(kāi)發(fā)者社區(qū)。Python+FPGA是一個(gè)廣闊的未經(jīng)勘察過(guò)的領(lǐng)域——一個(gè)全新的更加高效的開(kāi)發(fā)空間——通過(guò)PYNQ開(kāi)發(fā)環(huán)境將會(huì)吸引更多的系統(tǒng)開(kāi)發(fā)者加入的領(lǐng)域。

日前在賽靈思OPENHW2017創(chuàng)新大賽暨教師峰會(huì)上,北京理工大學(xué)嵩天副教授《Python編程語(yǔ)言和PYNQ在中國(guó)》的演講,科普了Python編程風(fēng)靡全球的原因。

Python編程語(yǔ)言舉例,只用了21行代碼就完成了一個(gè)圖像素描的處理,Python大大提升了開(kāi)發(fā)效率。

人工智能機(jī)器學(xué)習(xí)走熱,讓 Python 從眾多編程語(yǔ)言中脫穎而出。

還等什么呢?

人生苦短,我用Python

附11大編程語(yǔ)言薪資排行榜

編程語(yǔ)言有很多,但并非每一種的需求或工資都相同。人工智能和機(jī)器學(xué)習(xí)走熱,讓 Python 從眾多編程語(yǔ)言中脫穎而出。下文將綜合各種信源,以不同編程語(yǔ)言在美國(guó)市場(chǎng)的相關(guān)薪資水平、人氣和前景,為你提供一些參考。

薪資水平

使用國(guó)外招聘網(wǎng)站 Indeed.com 將編程語(yǔ)言的薪資水平劃分為 9 檔:基于這個(gè)結(jié)果,Ruby/Ruby on Rails 看起來(lái)會(huì)讓你掙得最多,而 Python,C++,iOSJava 也是體面的選擇。如果薪資是你的主要關(guān)注點(diǎn),那么也許 C,PHP 和 SQL 不是最理想的選擇……

而下面是來(lái)自 gooroo.io的數(shù)據(jù),根據(jù)每條招聘啟事給出的薪酬范圍取了平均數(shù):懂 Ruby,C++ 或 Java 的開(kāi)發(fā)人員看上去起始工資更高。Python 和 Ruby 開(kāi)發(fā)人員的薪資潛力最大,這可能意味著好的 Ruby/Python 開(kāi)發(fā)人員市場(chǎng)缺口相對(duì)較大。

有些人可能對(duì)“拜金求職”這種事情比較嗤之以鼻,但是即便你不太關(guān)注薪資,每種語(yǔ)言的需求(有多少招聘職位)和供應(yīng)(有多少開(kāi)發(fā)人員了解語(yǔ)言)情況,你也得多少了解一些吧。

工作需求

根據(jù)你熟悉的編程語(yǔ)言找到工作的可能性有多大?以下是來(lái)自 Indeed.com 的工作趨勢(shì):

可以看到,C,SQL,Java 和 Java 在招聘啟事中經(jīng)常被提到,而 C#,C++ 和 Python 也是表現(xiàn)不錯(cuò)的語(yǔ)言。

另一方面,如果你的目標(biāo)是在創(chuàng)業(yè)公司工作,那么可能 Indeed.com 的工作趨勢(shì)不是你應(yīng)該參考最佳的指標(biāo)。我們找到了 AngelList 網(wǎng)站,這里有更多美國(guó)初創(chuàng)公司發(fā)布的職位,來(lái)看看基于 AngelList 的軟件開(kāi)發(fā)人員需要的編程技巧:再一次地,Java 高居榜首。但是,美國(guó)創(chuàng)業(yè)公司似乎更喜歡 Python 和 Java,對(duì)這兩者的需求超過(guò)了 Ruby(兩年前 Ruby 最受歡迎),PHP,C 或 C#。

供應(yīng)情況

我們?cè)賮?lái)看開(kāi)發(fā)人員這邊,根據(jù)網(wǎng)站 Codementor 的數(shù)據(jù):當(dāng)然,這個(gè)結(jié)果并不能準(zhǔn)確反映實(shí)際市場(chǎng)的情況,但可以作為參考。例如,雖然移動(dòng)應(yīng)用業(yè)務(wù)已經(jīng)蓬勃發(fā)展了一段時(shí)間,但 Objective-C 專(zhuān)家仍然很少。由于 Objective-C 開(kāi)發(fā)人員供應(yīng)不足,他們的薪資自然相對(duì)更高。

另一方面,PHP 在勞動(dòng)力中的供應(yīng)量很大,因此雇主有更多的選擇,在薪資方面議價(jià)能力更強(qiáng)。同時(shí),市場(chǎng)對(duì) PHP 開(kāi)發(fā)人員的需求也不如 Java,SQL 或 Java 那么多。 因此,PHP 開(kāi)發(fā)人員普遍收入較少。這個(gè)情況也體現(xiàn)在了我們文章一開(kāi)始的那張圖里面(參見(jiàn)圖2)。

Java 是個(gè)很特殊的例子。盡管供應(yīng)量最大,但 Java 開(kāi)發(fā)人員并不處于薪水層的底線。

了解每種語(yǔ)言的需求和供應(yīng)情況,薪資信息,我們需要看看各大語(yǔ)言前景。

Github 過(guò)去 16 年編程語(yǔ)言遷徙:更多人轉(zhuǎn)而使用 Python

一種編程語(yǔ)言將來(lái)的發(fā)展前景如何?首先,這在很大程度上取決于其社區(qū)的發(fā)展,因?yàn)樾迈r血液/采用率是使語(yǔ)言受歡迎的保障。因此,讓我們來(lái)看看人們最感興趣的語(yǔ)言是什么:

根據(jù)谷歌搜索,2016 年使用 Python 的興趣大增。

其次,Github 的項(xiàng)目數(shù)量能夠從一定程度上體現(xiàn)出語(yǔ)言的流行程度。

同時(shí),我們還需要注意——開(kāi)發(fā)人員或許有過(guò)這樣的體驗(yàn),在掙扎完成第 N 個(gè)艱難晦澀的項(xiàng)目后,心想:“我可以用這種語(yǔ)言做這件事,但為什么不換種語(yǔ)言更加愉快地工作呢?”分析了 4500 萬(wàn) GitHub 用戶、393 種不同的語(yǔ)言以及 10 TB 的源代碼后,Waren Long 在博客 sourceygueq2q 發(fā)表博文,用詳盡的數(shù)據(jù)和科學(xué)的方法展現(xiàn)了過(guò)去 16 年 Github 用戶編程語(yǔ)言的大變遷(也就是從一種語(yǔ)言換到另一種語(yǔ)言的情況)。

使用 5 種最流行的語(yǔ)言(Java,C,C ++,PHP,Ruby)其中一種的開(kāi)發(fā)人員,最有可能用切換到 Python,平均 24% 的機(jī)率。

過(guò)去 16 年,Python 和 Java 逐漸取代了 C 語(yǔ)言。

Python 在 2014 年成為美國(guó)高校入門(mén)課程最受歡迎語(yǔ)言

最后,為了想要學(xué)習(xí)編程語(yǔ)言的讀者,我們簡(jiǎn)要介紹一下各種編程語(yǔ)言。

I. 動(dòng)態(tài)語(yǔ)言(Dynamic Languages)

動(dòng)態(tài)語(yǔ)言通常更容易讓初學(xué)者學(xué)習(xí),因?yàn)樗鼈冹`活而有趣。你可以從頭開(kāi)始快速構(gòu)建一個(gè)應(yīng)用程序,需要的代碼數(shù)量較少,并且沒(méi)有硬性規(guī)則。由于動(dòng)態(tài)語(yǔ)言通常是非常高級(jí)(high level)的語(yǔ)言,所以你會(huì)花更少的時(shí)間糾結(jié)細(xì)節(jié),更多的時(shí)間學(xué)習(xí)編程概念,這也是動(dòng)態(tài)類(lèi)型的語(yǔ)言受初學(xué)者歡迎的一個(gè)原因,初學(xué)者一般都會(huì)因能夠構(gòu)建事物和快速看到結(jié)果得到反饋而鼓舞。

Java

不要與 Java 混淆了,Java 是主要用于前端開(kāi)發(fā)的客戶端腳本語(yǔ)言。Java 在所有瀏覽器中都兼容,用于創(chuàng)建交互式 Web 應(yīng)用程序,通常是通過(guò)諸如 jQuery 和前端框架(比如 AngularJS,Ember.js,React 等)的庫(kù)來(lái)創(chuàng)建。Java 也可以通過(guò) Node.js 平臺(tái)用作服務(wù)器端語(yǔ)言。過(guò)去兩年來(lái),Node.js 開(kāi)發(fā)社區(qū)已經(jīng)有了很大的發(fā)展,現(xiàn)在你可以在這里找到很多資源。你還可以通過(guò)使用諸如 phonegap 這樣的框架,用 Java 構(gòu)建混合移動(dòng)應(yīng)用程序。Facebook 的 React Native 能讓你使用 Java 構(gòu)建本地移動(dòng)應(yīng)用程序。不過(guò),Java 的難度很高,因?yàn)樗菬o(wú)類(lèi)型的語(yǔ)言,因此很難調(diào)試。也有靜態(tài)類(lèi)型的版本,比如 Microsoft的 Type 或 JSX,在 React 上使用。

Ruby

有了 Ruby,開(kāi)發(fā)人員可以很開(kāi)心地工作。Ruby 的流行得益于 Ruby on Rails 框架,Ruby 與英語(yǔ)很類(lèi)似,而 Rails 框架(是全棧 Web 框架)有“開(kāi)箱即用”的工具,讓開(kāi)發(fā)工作變得簡(jiǎn)單。因此,很多人會(huì)建議你首先學(xué)習(xí) Ruby。Ruby 主要用于后端開(kāi)發(fā),一些常用大網(wǎng)站,比如 Airbnb,Shopify,Bloomberg,Hulu,Slideshare 都是使用 Ruby on Rails 構(gòu)建的。

Python

Python 是另一種強(qiáng)烈推薦初學(xué)者學(xué)習(xí)語(yǔ)言,Python 也是美國(guó)頂尖大學(xué)最受歡迎的入門(mén)級(jí)介紹語(yǔ)言。開(kāi)發(fā)人員使用 Python 構(gòu)建桌面應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,Python 也是數(shù)據(jù)挖掘的好工具。此外,Python 在科學(xué)計(jì)算,數(shù)據(jù)分析和生物信息學(xué)的學(xué)術(shù)界尤其受歡迎。Google,Dropbox,Pinterest,Instagram,Reddit,BitTorrent,Civilization IV 等都是用 Python 構(gòu)建的。

不僅如此,Python 從 2014 年起就成為美國(guó)頂級(jí)高校入門(mén)級(jí)課程教學(xué)語(yǔ)言(Introductory Teaching Language):

下面是部分美國(guó)頂級(jí)高校計(jì)算機(jī)相關(guān)課程使用編程語(yǔ)言列表:

美國(guó)頂級(jí)高校入門(mén)級(jí)課程使用編程語(yǔ)言的情況

PHP

PHP 是一種服務(wù)器端腳本語(yǔ)言,通常被認(rèn)為是初學(xué)者友好的。要理解 PHP 代碼要做什么比較容易,因此 PHP 很容易學(xué)。大多數(shù)網(wǎng)站都是用 PHP 構(gòu)建的,因?yàn)檫@種語(yǔ)言是專(zhuān)門(mén)針對(duì)網(wǎng)絡(luò)的。Facebook,維基百科,Yahoo!, Tumblr,Wordpress 等都是用 PHP 構(gòu)建的。

II. 靜態(tài)語(yǔ)言

使用靜態(tài)類(lèi)型的語(yǔ)言構(gòu)建的應(yīng)用程序有更高的可擴(kuò)展性、穩(wěn)定性和可維護(hù)性。靜態(tài)語(yǔ)言在通過(guò)類(lèi)型檢查查找錯(cuò)誤時(shí)一般更嚴(yán)格,并且需要更多的代碼來(lái)構(gòu)建一個(gè)原型。游戲引擎、移動(dòng)應(yīng)用和企業(yè)級(jí)后端通常使用靜態(tài)類(lèi)型的語(yǔ)言構(gòu)建。

Java

作為通用語(yǔ)言,Java 用于構(gòu)建 Android 應(yīng)用程序、桌面應(yīng)用程序和游戲。Java也常用作企業(yè)級(jí)后端開(kāi)發(fā)的服務(wù)器端語(yǔ)言——90% 的財(cái)富 500 強(qiáng)公司使用 Java。此外,用于存儲(chǔ)和處理大數(shù)據(jù)的 Hadoop 是基于 Java 的流行框架,Yahoo,F(xiàn)acebook 和 Amazon Web Services 等企業(yè)都在用 Hadoop。

C

C 常用于編程系統(tǒng)軟件,是操作系統(tǒng)的通用語(yǔ)言(lingua franca)。C 幾乎影響了本文中提到的所有編程語(yǔ)言,尤其是 Objective-C 和 C++。所以,如果你知道 C 語(yǔ)言的話,你可能更容易學(xué)習(xí)其他流行的語(yǔ)言。由于 C 語(yǔ)言需要用更復(fù)雜的代碼來(lái)執(zhí)行簡(jiǎn)單的任務(wù),所以初學(xué)者如果把 C 語(yǔ)言作為第一語(yǔ)言往往很難保持動(dòng)力。但是,從長(zhǎng)遠(yuǎn)看,C 語(yǔ)言的知識(shí)肯定對(duì)你程序員的工作有所幫助。

Objective-C

Objective-C 是建立在 C 語(yǔ)言之上的一層,因此是靜態(tài)的。話雖這么說(shuō),Objective-C 也可以用于動(dòng)態(tài)打字。Apple 的 Swift 是一種靜態(tài)語(yǔ)言,與 Objective-C 兼容,但它的靜態(tài)類(lèi)型使其更有彈性。Swift 受 Python 啟發(fā)而來(lái),旨在為新手輕松編寫(xiě)新手,旨在修復(fù) Objective-C 的一些問(wèn)題。

C++

C++ 是基于 C 語(yǔ)言的一種強(qiáng)大的語(yǔ)言,專(zhuān)為編程系統(tǒng)軟件而設(shè)計(jì),但也被用于構(gòu)建游戲/游戲引擎,桌面應(yīng)用程序,移動(dòng)應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序。C++ 功能強(qiáng)大且速度很快,F(xiàn)acebook 用 C++ 已經(jīng)開(kāi)發(fā)出了好幾個(gè)高性能、高可靠性的組件。許多軟件都用 C++ 構(gòu)建,包括 Adobe Systems,Amazon,Paypal,Chrome 等。與 C 語(yǔ)言類(lèi)似,C++ 通常被認(rèn)為不太好讓初學(xué)者自己學(xué)習(xí)。所以,如果你決定學(xué)習(xí) C++ 作為你的第一個(gè)編程語(yǔ)言,建議與人討論或找一個(gè)導(dǎo)師。

C#

C# 用于微軟的 .NET 框架,主要在Microsoft Windows 上運(yùn)行。C# 用于 Web 開(kāi)發(fā)、游戲開(kāi)發(fā)和一般 Microsoft 開(kāi)發(fā)。此外,Xamarin 一直在開(kāi)發(fā)一個(gè)名為 Mono 的開(kāi)源項(xiàng)目,該項(xiàng)目旨在將 C# 移植到其他平臺(tái),為 Linux 開(kāi)發(fā)人員帶來(lái)更好的開(kāi)發(fā)工具。最近,你還可以使用 C# 通過(guò) Xamarin 為 iOS 和 Android構(gòu) 建原生手機(jī)應(yīng)用。

III. 其他

SQL

SQL(“Sequel”)或結(jié)構(gòu)化查詢語(yǔ)言,是用于與數(shù)據(jù)庫(kù)通信的查詢語(yǔ)言。雖然 SQL 不能用于構(gòu)建應(yīng)用程序,但它用于管理使用關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDMS)的應(yīng)用程序中的數(shù)據(jù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    40

    文章

    3520

    瀏覽量

    128805
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84077

原文標(biāo)題:Python正向硬件圈殺來(lái)!工程師們,別再問(wèn)需不需要學(xué)Python了!

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python開(kāi)發(fā)實(shí)時(shí)嵌入式系統(tǒng)的作用

    Raspberry Pi等單板計(jì)算機(jī)上被采用。隨著這種廣泛且不斷增長(zhǎng)的采用,人們可能想知道實(shí)時(shí)嵌入式系統(tǒng)是否存在
    發(fā)表于 01-11 18:22

    如今Python嵌入式系統(tǒng)起到了怎樣的作用

    Python腳本語(yǔ)言實(shí)現(xiàn)硬件底層的訪問(wèn)和控制,比如說(shuō)控制LED燈泡、LCD顯示器、讀取電壓、控制電機(jī)、訪問(wèn)SD卡等。下面這篇美國(guó)EDN發(fā)布的文章,介紹了Python實(shí)時(shí)
    發(fā)表于 03-26 08:30

    Java嵌入式應(yīng)用開(kāi)發(fā)扮演什么角色

    對(duì)嵌入式系統(tǒng)設(shè)計(jì)師來(lái)說(shuō),Java有許多優(yōu)點(diǎn)。作為一門(mén)編程語(yǔ)言,Java允許面向?qū)ο缶幊?,又沒(méi)有C存在的嚴(yán)重問(wèn)題。Java運(yùn)行時(shí)環(huán)境還提供了有用屬性。Java提供的內(nèi)存管理功能使得編程人員不必分配
    發(fā)表于 07-05 06:33

    Python實(shí)時(shí)嵌入式系統(tǒng)中有什么作用?

    如何用Python語(yǔ)言去控制單片機(jī)?Python實(shí)時(shí)嵌入式系統(tǒng)中有什么作用?
    發(fā)表于 07-14 06:33

    嵌入式實(shí)時(shí)系統(tǒng)是什么

    、通信等領(lǐng)域中廣泛使用。由于嵌入式實(shí)時(shí)系統(tǒng)應(yīng)用環(huán)境的特殊性,因此設(shè)計(jì)實(shí)現(xiàn)過(guò)程存在著許多特殊問(wèn)題。其中,操作
    發(fā)表于 10-27 10:09

    Python實(shí)時(shí)嵌入式系統(tǒng)開(kāi)發(fā)中有何作用

    如何用Python語(yǔ)言去控制單片機(jī)呢?Python實(shí)時(shí)嵌入式系統(tǒng)開(kāi)發(fā)中有何作用?
    發(fā)表于 11-10 06:42

    Python開(kāi)發(fā)實(shí)時(shí)嵌入式系統(tǒng)的作用是什么

    Raspberry Pi等單板計(jì)算機(jī)上被采用。隨著這種廣泛且不斷增長(zhǎng)的采用,人們可能想知道實(shí)時(shí)嵌入式系統(tǒng)是否存在
    發(fā)表于 12-14 06:41

    嵌入式系統(tǒng)Python與C / C ++的相關(guān)資料分享

    嵌入式python c++ 盡管C / C ++編程語(yǔ)言有很多缺點(diǎn),但它們嵌入式系統(tǒng)編程占主
    發(fā)表于 12-15 07:14

    如何調(diào)試嵌入式代碼?

    、CMSIS-DAP 等硬件調(diào)試器嵌入式開(kāi)發(fā)調(diào)試過(guò)程扮演了怎樣的角色呢?目標(biāo)芯片內(nèi)部是如何處理Debug and Trace 信號(hào)的?我
    發(fā)表于 12-17 06:32

    實(shí)時(shí)嵌入式系統(tǒng)是否存在Python的位置

    Raspberry Pi等單板計(jì)算機(jī)上被采用。隨著這種廣泛且不斷增長(zhǎng)的采用,人們可能想知道實(shí)時(shí)嵌入式系統(tǒng)是否存在
    發(fā)表于 12-22 06:25

    嵌入式實(shí)時(shí)系統(tǒng)及其煙機(jī)的應(yīng)用

    近年來(lái), 嵌入式實(shí)時(shí)系統(tǒng)已經(jīng)工業(yè)等各個(gè)領(lǐng)域得到廣泛關(guān)注與應(yīng)用。 本文介紹嵌入式實(shí)時(shí)
    發(fā)表于 04-07 09:51 ?9次下載

    嵌入式實(shí)時(shí)系統(tǒng)及其通信系統(tǒng)的應(yīng)用

    闡述了嵌入式實(shí)時(shí)系統(tǒng)的原理及特點(diǎn),分析并論述嵌入式實(shí)時(shí)系統(tǒng)實(shí)現(xiàn)過(guò)程
    發(fā)表于 05-30 09:52 ?2887次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>系統(tǒng)</b>及其<b class='flag-5'>在</b>通信<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中</b>的應(yīng)用

    嵌入式系統(tǒng)的物聯(lián)網(wǎng)存在什么價(jià)值

    嵌入式系統(tǒng)物聯(lián)網(wǎng)應(yīng)用,已經(jīng)扮演著越來(lái)越重要的角色
    發(fā)表于 01-21 17:51 ?654次閱讀

    基于Python實(shí)時(shí)嵌入式軟件測(cè)試腳本總結(jié)

    基于Python實(shí)時(shí)嵌入式軟件測(cè)試腳本總結(jié)(嵌入式開(kāi)發(fā)技術(shù)棧)-該文檔為基于Python實(shí)時(shí)
    發(fā)表于 07-30 12:31 ?28次下載
    基于<b class='flag-5'>Python</b>的<b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>嵌入式</b>軟件測(cè)試腳本總結(jié)

    嵌入式Python環(huán)境

    ,最好對(duì)環(huán)境做的修改(諸如添加第三方包)可以二次分發(fā)給用戶。許多支持自定義功能的軟件,我們經(jīng)??梢钥吹?b class='flag-5'>嵌入式Python解釋器的身影,如GIMP、Blender
    發(fā)表于 10-21 11:21 ?10次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Python</b>環(huán)境