我想尝试创建我自己的非常基本的语言,它是非常基本的编译器。全部使用Java。
目前,只需启用“程序员”即可将内容打印到屏幕上。
我知道如何做到这一点,我想知道的是:这会被视为一个真正的“编译器”,一个真正的“语言”和一个真正的“虚拟机”吗? (当然,所有非常非常基本的。)
我的想法是创建一个程序,它将作为'IDE'(编辑器和编译器),另一个将作为'虚拟机'。
这意味着IDE不会将编写的代码编译为某些现有的机器代码,例如Java Bytecode,但实际上会编译为由我编写的某种编译代码。
这个编译过的代码只能通过我的“虚拟机”程序理解,并且只能在这个程序中运行。 “虚拟机”程序将使用高级Java操作来理解和执行已编译的代码。
“虚拟机”程序将是一个在JVM上运行的Java程序。
我的问题是:从概念上来说,这被视为虚拟机和“机器代码”吗? 如果没有,这仍然被认为是一种“编程语言”,即使它的编译字节码只能在特定程序中运行吗?
答案 0 :(得分:1)
它将被视为解释器,编译的代码将是字节代码。
要成为“虚拟机”,您需要创建与其运行的PC上的“所有内容”进行交互的方式。为您的用户/开发人员提供“打印到屏幕”功能不是虚拟机。
http://en.wikipedia.org/wiki/Virtual_machine
编辑:你问过:“另外:从概念上讲,你会说一种只能创建可以在另一个程序中运行的程序的编程语言仍然被认为是一种编程语言吗?”
这取决于这个“其他程序”的功能。如果你问的是JVM:是的。维基百科对编程语言的定义可以在这里找到:
http://en.wikipedia.org/wiki/Programming_language
编程语言是一种旨在实现的人工语言 将指令传达给机器
我们说虚拟机可以满足这个属性。所以,是的,Java(以及编译为由适当的虚拟机运行的字节码的其他语言)是一种编程语言。