JAVA、C、C++、Python同样是高级语言,为什么只有C和C++可以编写单片机程序?

网友解答: 谢邀。之前回答过类似的问题,这里再解释一下。问题里说的是单片机,那首先你得知道什么是单片机。根据不同的内核,单片机一般有51内核单片机和ARM内核单片机,根据位数不同分为8位

网友解答:

谢邀。之前回答过类似的问题,这里再解释一下。

问题里说的是单片机,那首先你得知道什么是单片机。根据不同的内核,单片机一般有51内核单片机和ARM内核单片机,根据位数不同分为8位、16位、32位单片机。单片机不同于电脑的CPU,它集成了CPU、ROM(理解为电脑硬盘)、RAM(理解为内存)以及板载通信总线(SPI、IIC、UART等),高端的单片机还会集成以太网、LCD和USB等功能,看起来就像一台微型电脑一样。

说完单片机再说一下单片机编程,一般的单片机编程都是裸机编程,也就是没有操作系统的单进程程序。程序员通过代码直接操作单片机的CPU寄存器、内存以及其集成的所有外设,所以单片机编程不同于基于操作系统的编程。前者直接操作硬件层,从选择编程语言上来讲,汇编是最好的选择,因为它执行效率高,可以直接对寄存器、内存进行操作。但是不同的单片机指令集是不同的,汇编可移植性太差,给一个单片机写的程序在不同指令集的单片机上不能运行。

说到这很多人会想到可以用高级语言代替汇编语言,然后再通过编译器将高级语言编译成汇编,最后生成机器语言给单片机执行。这是个不错的想法,那如何选择高级语言呢C、C++、JAVA、Python还是C#等。这里面最好的就是C语言,为什么呢?通俗来讲,C语言诞生之初就是用来替代汇编的,提高代码可移植性,而且C语言具有汇编的很多特性,比如其可以通过指针操作寄存器、内存地址,C语言语法简单,更贴近硬件层,执行效率高。

这里提到了执行效率,计算机专业的同学都知道汇编语言效率最高,C语言效率仅次于汇编,因为C语言在通过编译器生成汇编的时候会产生一些冗余指令。因为编译器也是一个程序,它的编译性能再好,也不如程序员直接写一个汇编程序的执行效率高。

说到这差不多快明白了,C++、Java、Python这类语言我们也可以用于写单片机程序,只要有适应的编译器,将其编译成单片机的机器语言就行了。但是这类面向对象的语言,其语法格式比较复杂,而且执行效率不如C语言,其特性不利于操作硬件寄存器、内存地址等,比如Java设计之初为了避免程序员操作地址,就取消了C++里的指针的概念,另外编译器也是一个程序,编译器也会有bug,编译复杂语言出问题的概率也会增加。

因此,在单片机执行的程序,直接接触硬件层,这类程序要求效率高,出现异常的概率要小,还要具有可移植性,满足这些条件的,好像只有C语言了。

(*^▽^*) 寥寥数语,不知道有没有表达清楚,欢迎对编程、硬件感兴趣的小伙伴点赞加关注。

网友解答:

首先,C语言是比汇编高一个等级的语言,编程风格是面向过程编程,数据操作比较简单,且易实现,编写起来比汇编容易;C++是继C语言上起来的语言,有自己的库和很多通用的模板类,编程风格是面向对象,对数据处理进行了严格的封装,处理起来不太方便;Python就比较高级了,有更为专业的库,使用时只需调用接口函数。

标签: