卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

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

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

網(wǎng)友解答:

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

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

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

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

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

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

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

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

網(wǎng)友解答:

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

標(biāo)簽: