- 单片机可以用java吗?
- JAVA和Python编程语言可以编写单片机程序吗?
- JAVA、C、C++、Python同样是高级语言,为什么只有C和C++可以编写单片机程序?
- 单片机为什么还在用C语言编程?
- 学java和学单片机(也就是嵌入式)哪个更好?
单片机可以用java吗?
单片机一般***用汇编语言或C语言来编程,而不是Java,因为JAVA成为了高级语言后就是为了在桌面计算机上运行而不是嵌入式系统上。
J***a的虚拟机需要较大的内存空间和较快的运行速度,而单片机的***有限,不具备运行J***a应用的条件。因此在单片机编程中,使用C语言和汇编语言可以更好地控制硬件和节省***。
单片机目前并不支持直接使用J***a语言进行编程。单片机主要使用汇编语言和C语言进行编程,因为它们能够提供更高效的控制和更快的执行速度。此外,J***a程序需要J***a虚拟机(JVM)的支持来运行,而单片机并没有足够的硬件***支持JVM的运行。因此,如果想要在单片机上进行编程,应该选择适合单片机的编程语言,如C语言或汇编语言。
J***A和python编程语言可以编写单片机程序吗?
理论上,C语言、J***A语言、VB语言、Python等任何一门语言都可以用作上位机开发语言,这个是毋庸置疑的。但是选择哪一门语言,会有一些考虑。
首先,要考虑开发的难易程度,如果一门语言艰涩难懂,肯定不利于开发。
其次要考虑通用性,如果一门语言,只有少数人在用它开发单片机,显然不利于推广使用。
就执行效率而言几乎是没有区别的,因为开发的语言可以五花八门,但最终都被编译成单片机通用指令,以二进制的形式被烧录到单片机内存。
目前来看,单片机开发主要是用汇编语言或者C语言。
J***A主要用来做WEB开发,大数据分析。
Python主要用来做人工智能相关的工作,当然Python几乎已经渗透到所有行业。
综上,如果题主想从事单片机开发,建议用C语言。
实际情况,单片机编程,一般用c语言或者汇编。
j***a
j***a首先不是一个可以直接把代码转换为二进制代码的编译器,如果你想在单片机上运行j***a程序,首先单片机得有一个jvm的环境,但是很显然市场上貌似没有这种东西,既然没有jvm环境,用j***a来编写单片机程序就行不通了。
python
python也是解释性的语言,也是不可以直接转换成二进制代码的,因此, 如果想用python编程,你的单片机里面也得有解释python的环境, 但是很显然,现在没有呀。 因此用python 在单片机上编程也是行不通的。
如果有符合你的单片机的编译器,就可以用啦。 跟其他的可以直接转换为二进制的语言一样。
以J***a为例,J***a只是一种编程语言,最终J***a源码要被编译成字节码,运行在J***a虚拟机上。所以只要有对应平台的虚拟机就可以。
另一种思路是,用J***a语言写代码,但使用特殊的编译器编译成目标平台直接可执行的文件。
J***A、C、C++、Python同样是高级语言,为什么只有C和C++可以编写单片机程序?
这个问题很简单,python,j***a是解释型语言,需要有虚拟机解释器支持,需要更多的内存和cpu处理速度,而c,c++可以直接由编译器生成机器指令,所需要的***少,单片机可以正常运行。另外python,现在j***a在设计时就是为了大型程序而生,不适合单片机。
单片机能否提供程序所需的运行环境决定了某种语言能否用于单片机程序的开发。单片机的总线宽度决定了单片机存储空间的大小。其中,拥有32位总线的单片机的存储空间可达4GB,装个Linux差不多可以跑各种程序了。这里我们只讨论总线宽度在16位以下的单片机。
单片机上没有I/O设备,只有I/O接口,程序要以机器码的形式写入随机存储器(就是PC的内存)。主流单片机的总线宽度一般是16位,比如,51单片机。存储器空间最大能做到64K。一些单片机的存储空间只有256个字节甚至更小。这么小的存储空间容不下操作系统,所以能在单片机上跑的程序都得是原生的机器码。C/C++都能直接编译成原生的机器码程序,因此,广泛用于单片机程序开发。J***a需要虚拟机,基本上不能在单片上运行(JVM有几百M)。Python可以编译成C语言的原生程序,有可能在单片机上运行。但是,Python的程序里一般都带着一庞大的标准库,简单移植到单片机上不太可行,需要做一些定制化改造才有可能。这类语言不能移植到单片机上的原因主要是他们为了能在不同的操作系统上移植,使用了独立的运行环境,而这个环境的体量太大装不到单片机上。
最后科普一下高级语言的概念。机器码被称为第一代语言,汇编被称为第二代语言。其他语言都是高级语言。C/C++是第三代语言。J***a和Python被称为3.5代或者是第四代语言。主要是因为他们废除了内存操作指令。还有更高级的语言,SQL因为没有了变量定义(准备内存空间)被称为第四代或第五代语言。
C和CPP是编译型语言,也就是可以生成exe文件直接放在单片机内部运行的,其他解释型语言需要解释器放在单片机内部而且要与单片机对接才行。第一占空间,第二影响运行速度。
簡單的說就是單片机的內存及cpu速度有限。像J***a 這類需要JVM吃內存怪獸的直接淘汰,因為別說在上面開發j***a,連jvm能否po上單片机都是問題。Python 雖說可以編譯成机械碼,但遠不如c來的簡潔扼要,所以c是最佳選擇。
例如j***a程序的运行需要虚拟机来解释运行,如果厂家所设计的单片机,为其提供了虚拟机支持的话,就能运行j***a编写的程序。同理Python也行。
但由于单片机对[_a***_]和效率要求较高,基于这些考虑,厂家一般都只提供C语言的支持(相关编译工具链、开发工具)
而稍微高阶一点,厂家为单片机提供了C++的工具链,支援了C++编程语言,所以这些芯片平台,也可以用C++来开发单片机程序
单片机为什么还在用C语言编程?
单片机内存小,譬如一些用于小家电的8位单片机,内存是以K算的,所以用汇编或C编译出来的目标二进制代码是最小最高效的,J***A,C#之类的语言,他们本身是需要JVM或CLI的虚拟机环境来解释代码运行,效率太低,而且内存占用太高,只能用于相对高端的应用程序开发。任何单片机的引导层或驱动层,都是使用汇编或C开发。
其实PASCAL也是可发展为单片机开发语言,可是业界都以ASM与C为标准,没企业开发基于PASCAL嵌入式编译器,所以,就只有C和汇编适合单片机开发了。
最后附上一个视频大家看看,一位大牛用JS写的8位CPU指令流水执行时内部硅晶电路运行的模拟情况,浏览器可以运行,模拟器可以真实执行6502机器码。
6502CPU是70年代末,乔布斯用来做appLE II电脑时用的芯片,也是后期中华学习机任天堂FC,小霸王学习机等产品使用的芯片,没什么商业价值,但是有研学价值。
地址:
1.汇编太麻烦,移植性差;
2.C/C++为操纵硬件而生,它的编译器编译成的目标平台机器码可直接运行,并非生成字节码或者脚本;
3.J***A,.NET语言编译出来的程序是字节码,需要庞大的运行环境将字节码实时翻译成机器码才能运行;
4.Python,Ruby等属于脚本语言,需要解释器逐条解释(pyo可以无视),比字节码性能更差;
5.单片机性能差,实时性要求高,而且没有强大的运行环境和解释器,故一般不能运行J***A,.NET,Python,Ruby等程序,倒是可以执行Lua这样轻量级脚本。
C语言是最适合的,没有之一!
单片机***有限,最好使用汇编,但是汇编移植性差,跳转要写标号,有时一段代码跳转条件多了,写标号名称要想半天,换平台后修改麻烦,不亚于重新写,而c语言移植性好,换个平台修改寄存器相关配置就可以重新使用了,节省时间,一般经常用的比如除法乘法运算用汇编写,c语言直接嵌入,可以提高效率,加快运行速度。
目前单片机常用开发语言也就汇编语言和C语言。 汇编语言虽然有着优化程度高,可控性更好的优点,但是由于不同单片机***用不同的汇编指令,导致汇编编程学习难度大,易读性差,可移植性差的缺点。
C语言则避免了这些缺点。由于C语言已基本与汇编指令无关,所以对于同一功能的实现,你只需要了解寄存器的不同,更容易移植。并且,由于C语言***用模块化编程,易读性大大提高。
只有两种语言可选,汇编语言和C语言,汇编语言要对单片机内部的寄存器非常清楚,程序可读性差,可移植性也差。C语言编程只需了解一下单片机的寄存器即可,程序的可读性好稍做修改也便于移植到另外一款单片机。
学j***a和学单片机(也就是嵌入式)哪个更好?
首先要搞清楚你对哪个更感兴趣。
J***a只是一门编程需要,本身并不难,互联网行业用到的比较多。
单片机只是嵌入式用到的一种处理器,更复杂的还有arm等。嵌入式要求要高一些,对软件硬件都要了解一些。
希望能帮到你[微笑]