解释型语言是否需要操作系统?

问题描述 投票:1回答:4

Java和Python等解释型语言是否需要操作系统?

例如,在裸机ARM微控制器上,可以安装一个解释器,以便我们可以同时拥有编译代码(如C)和解释代码(如Python),或者是需要支持此操作系统的操作系统吗?

operating-system embedded interpreter compiled
4个回答
3
投票

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

它可能不像解释和编译那么简单。例如,Java在虚拟机上运行并“编译”为字节码。解释字节码(或在某些情况下即时编译),而不是直接使用Java源代码。在嵌入式系统中,您可能会在目标而不是源上部署交叉编译的字节码。然而,肯定存在裸机的JVM。一些支持通过第三方RTOS进行多线程,其他一些支持内置支持或根本不支持线程。

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


3
投票

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

当Java在2000年左右全新且令人兴奋时,每个人都认为它将成为下一个重要的通用语言,取代C ++。语法是如此干净,它是“纯粹的OO”而不是一些“污秽的混合”。

这是当时的主要热门话题。学校停止教授C和C ++。 MCU制造商开始用硬件制造Java VM芯片。微软制定了自己的Java“标准”。每个人都对Java炒作很高兴。

然后随着互联网大肆宣传在2002年全面崩溃,它采取了Java炒作。在之后的清醒过程中,人们开始意识到像字节码,虚拟机和垃圾收集这样的东西可能不属于裸机系统。

他们回到使用编译的C进行硬件相关的编程。或者实际上它们从未停止过,因为Java从未在那里完成,除了一些奇怪的异国情调的架构。

Java仍然只在适合的领域使用,即网络,桌面和移动开发。因此,2010年智能手机炒作爆发时,它又迎来了第二个黄金时代。


2
投票

请参阅picoJava,它是本机运行Java的几种解决方案之一。你不能靠近裸机而不是在CPU上运行字节码。


2
投票

虽然没有任何类似于现代操作系统的东西,但有些8位计算机已经在ROM中解释了语言。 Apple 2就是一个例子。您可以在没有任何磁盘或磁带的情况下启动系统,它将直接进入BASIC提示符,您可以在其中编写基本(无双关语)程序。

请注意,当谈到这些日子时,操作系统在某种程度上是模糊的 - 这些8位计算机确实具有某种程度的固件,并且该固件确实提供了一些操作系统类型的功能,如访问基本外围设备。在这些日子里,我们现在所知的操作系统通常被称为“DOS” - 磁盘操作系统。 MS-DOS就是其中之一,也是Apple的ProDOS。这些DOS已演变成我们的现代操作系统(例如,Windows 95基于MS-DOS,而现代Windows版本来自一个单独的分支,主要是用更现代的技术重新实现),所以可以声称他们的祖先是我们现在称之为操作系统的最接近的。

但是什么是翻译但是一个软件呢?

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

这个模型有点简化吗?当然。差异是程度问题,而不是自然问题。添加非常基本的用户输入和输出功能(例如TTY),您可以基础实现Java字节代码,Python或BASIC等语言的所有或几乎所有基本功能。您将缺少的主要内容是库和诸如屏幕操作,多处理和网络之类的东西,但您也可以随着时间处理它们。

© www.soinside.com 2019 - 2024. All rights reserved.