国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

JAVA、C、C++、Python同樣是高級語言,為什么只有C和C++可以編寫單片機程序?

網(wǎng)友解答: 謝邀。之前回答過類似的問題,這里再解釋一下。問題里說的是單片機,那首先你得知道什么是單片機。根據(jù)不同的內(nèi)核,單片機一般有51內(nèi)核單片機和ARM內(nèi)核單片機,根據(jù)位數(shù)不同分為8位

網(wǎng)友解答:

謝邀。之前回答過類似的問題,這里再解釋一下。

問題里說的是單片機,那首先你得知道什么是單片機。根據(jù)不同的內(nèi)核,單片機一般有51內(nèi)核單片機和ARM內(nèi)核單片機,根據(jù)位數(shù)不同分為8位、16位、32位單片機。單片機不同于電腦的CPU,它集成了CPU、ROM(理解為電腦硬盤)、RAM(理解為內(nèi)存)以及板載通信總線(SPI、IIC、UART等),高端的單片機還會集成以太網(wǎng)、LCD和USB等功能,看起來就像一臺微型電腦一樣。

說完單片機再說一下單片機編程,一般的單片機編程都是裸機編程,也就是沒有操作系統(tǒng)的單進程程序。程序員通過代碼直接操作單片機的CPU寄存器、內(nèi)存以及其集成的所有外設(shè),所以單片機編程不同于基于操作系統(tǒng)的編程。前者直接操作硬件層,從選擇編程語言上來講,匯編是最好的選擇,因為它執(zhí)行效率高,可以直接對寄存器、內(nèi)存進行操作。但是不同的單片機指令集是不同的,匯編可移植性太差,給一個單片機寫的程序在不同指令集的單片機上不能運行。

說到這很多人會想到可以用高級語言代替匯編語言,然后再通過編譯器將高級語言編譯成匯編,最后生成機器語言給單片機執(zhí)行。這是個不錯的想法,那如何選擇高級語言呢C、C++、JAVA、Python還是C#等。這里面最好的就是C語言,為什么呢?通俗來講,C語言誕生之初就是用來替代匯編的,提高代碼可移植性,而且C語言具有匯編的很多特性,比如其可以通過指針操作寄存器、內(nèi)存地址,C語言語法簡單,更貼近硬件層,執(zhí)行效率高。

這里提到了執(zhí)行效率,計算機專業(yè)的同學(xué)都知道匯編語言效率最高,C語言效率僅次于匯編,因為C語言在通過編譯器生成匯編的時候會產(chǎn)生一些冗余指令。因為編譯器也是一個程序,它的編譯性能再好,也不如程序員直接寫一個匯編程序的執(zhí)行效率高。

說到這差不多快明白了,C++、Java、Python這類語言我們也可以用于寫單片機程序,只要有適應(yīng)的編譯器,將其編譯成單片機的機器語言就行了。但是這類面向?qū)ο蟮恼Z言,其語法格式比較復(fù)雜,而且執(zhí)行效率不如C語言,其特性不利于操作硬件寄存器、內(nèi)存地址等,比如Java設(shè)計之初為了避免程序員操作地址,就取消了C++里的指針的概念,另外編譯器也是一個程序,編譯器也會有bug,編譯復(fù)雜語言出問題的概率也會增加。

因此,在單片機執(zhí)行的程序,直接接觸硬件層,這類程序要求效率高,出現(xiàn)異常的概率要小,還要具有可移植性,滿足這些條件的,好像只有C語言了。

(*^▽^*) 寥寥數(shù)語,不知道有沒有表達清楚,歡迎對編程、硬件感興趣的小伙伴點贊加關(guān)注。

網(wǎng)友解答:

首先,C語言是比匯編高一個等級的語言,編程風(fēng)格是面向過程編程,數(shù)據(jù)操作比較簡單,且易實現(xiàn),編寫起來比匯編容易;C++是繼C語言上起來的語言,有自己的庫和很多通用的模板類,編程風(fēng)格是面向?qū)ο?,對?shù)據(jù)處理進行了嚴格的封裝,處理起來不太方便;Python就比較高級了,有更為專業(yè)的庫,使用時只需調(diào)用接口函數(shù)。

標(biāo)簽: