Operating system 解释语言需要操作系统才能工作吗?

Operating system 解释语言需要操作系统才能工作吗?,operating-system,embedded,interpreter,compiled,Operating System,Embedded,Interpreter,Compiled,Java和Python等解释语言是否需要操作系统才能工作 例如,在一个裸机ARM微控制器上,可以安装一个解释器,这样我们就可以让编译代码(如C)和解释代码(如Python)一起工作,还是需要一个操作系统来支持这一点 没有。一些8位计算机在ROM中解释语言,尽管没有任何与现代操作系统相当相似的东西。这是一个例子。您可以在没有任何磁盘或磁带的情况下启动系统,它会直接进入基本提示符,在那里您可以编写基本(没有双关语)程序 请注意,在谈到这些日子时,操作系统是一个模糊的术语——这些8位计算机确实有一定级

Java和Python等解释语言是否需要操作系统才能工作


例如,在一个裸机ARM微控制器上,可以安装一个解释器,这样我们就可以让编译代码(如C)和解释代码(如Python)一起工作,还是需要一个操作系统来支持这一点

没有。一些8位计算机在ROM中解释语言,尽管没有任何与现代操作系统相当相似的东西。这是一个例子。您可以在没有任何磁盘或磁带的情况下启动系统,它会直接进入基本提示符,在那里您可以编写基本(没有双关语)程序

请注意,在谈到这些日子时,操作系统是一个模糊的术语——这些8位计算机确实有一定级别的固件,并且这些固件确实提供了一些操作系统类型的功能,如访问基本外围设备。在这些日子里,我们现在所知道的操作系统通常被称为“DOS”——一种磁盘操作系统。MS-DOS和苹果的ProDOS都是其中之一。这些DOS演变成了我们现代的操作系统(例如,Windows 95是基于MS-DOS之上的,而现代Windows版本则是从一个独立的分支衍生出来的,该分支在很大程度上是用更现代的技术重新实现的),因此人们可以说他们的祖先是最接近我们现在所说的操作系统的

但是除了一个软件,什么是解释器呢?

从更理论的意义上讲,解释器只是一种软件——一种接受输入并产生输出的程序。假设您要实现一个定制的固态存储器。在这种情况下,您的“输入”将是要解释的程序,“输出”将是程序的行为。如果“软件”可以在没有操作系统的情况下运行,那么解释器也可以


这个模型有点简化吗?当然差异是程度的问题,而不是性质的问题。添加非常基本的用户输入和输出能力(例如TTY),并且您有基础实现语言的基本功能(如java字节码、Python或Basic)的全部或几乎所有功能。您可能缺少的主要内容是依赖于屏幕操作、多处理和网络等功能的库和其他东西,但您也可以随着时间的推移来处理它们。

否。例如,请参阅,这是用于以本机方式运行Java的几种解决方案之一。在CPU上运行字节码是最接近裸机的。

Java需要一个虚拟机-虚拟机。它不是解释的,而是执行的。解释意味着在运行时获取源代码,就像BASIC一样

当java在2000年前后是新的和令人兴奋的,大家都认为它将成为下一个通用的通用语言,取代C++。语法非常干净,它是“纯OO”而不是“肮脏的混合体”

这是当时的主要流行语。学校停止了C和C++的教学。MCU制造商开始在硬件上使用Java虚拟机制造芯片。微软制定了自己的Java“标准”。每个人都对Java的宣传很感兴趣

2002年,随着互联网炒作的全面崩溃,Java炒作也随之崩溃。在事后清醒的等待中,人们开始意识到诸如字节码、虚拟机和垃圾收集之类的东西可能不属于裸机系统

他们回到使用编译的C语言进行硬件相关的编程。或者,事实上,它们从未停止过,因为Java从未真正实现过它,除了一些奇怪的异国情调的架构


Java只在合适的领域继续使用,即web、桌面和移动开发。因此,2010年左右,当智能手机大肆宣传时,它迎来了第二个黄金时代。

当然,你可以编写一个在裸机上运行的解释器,只是如果平台没有操作系统,任何运行时支持,语言需要必须是解释器的一部分。在某些情况下,此类解释器可能本质上是一个操作系统。也就是说,如果它提供操作一个系统的服务,那么它可以被称为操作系统

它可能不像解释和编译那样简单。例如,Java在虚拟机上运行,并被“编译”成字节码。字节码被解释(或者在某些情况下被及时编译),而不是直接从Java源代码中编译。在嵌入式系统中,您可能会在目标而不是源上部署交叉编译的字节码。当然,JVM是为裸机而存在的。有些支持通过第三方RTO执行多线程,有些则支持内置或根本不支持线程


在裸机微控制器上运行的JavaScript和Python的简化子集有解释器。我不确定是否有完整的实现,但如果有足够的运行时支持,即使没有显式实现,在技术上也是可能的。要完全支持其中一些语言以及开发人员可能期望的所有标准和第三方库和框架,可能需要大量的运行时支持和资源,从而更易于部署和部署操作系统,因此,资源受限系统的实现通常是子集或具有受限库。

我怀疑“解释语言理论上能在裸机上运行吗?Java能在裸机上运行吗?Python能在裸机上运行吗?”的答案分别是是是、否和否。因此,您的问题的答案取决于具体程度。Java不是解释语言@瓦迪姆也不是一种编译语言。Java字节码是独立于平台的。无论如何,Java不是解释语言。JVM不是解释程序。JVM代码是编译的,依赖于平台并在其上编写的C@Vadim那么事实上,一切都被解释了,也没有什么是真实的。如今,这是一个程度问题——现代处理器有时会将其体系结构的机器代码“解释”为其自身的内部表示