Java中的Forth解释器
我发现了一个用Java实现的简单的Forth解释器。Java中的Forth解释器,java,interpreter,forth,Java,Interpreter,Forth,我发现了一个用Java实现的简单的Forth解释器。 但是如果我想使用它,我不明白它的意义 第四个口译员的优势是什么: 如果最终编译的代码是 JVM执行的仍然是“字节” 代码“我们第四个要做什么 你在干什么 这对写作有帮助吗 高效/紧凑的程序 我会用Forth写代码吗 解释器将转换它 到Java 你的想法…不是字节码翻译器 你的问题的答案是:“见下文,有点像,没有” 它只是一个接受一些输入并产生一些输出的程序。输入是第四个脚本。除了一些非常重要的系统外,很少真正产生字节码。jRuby、Clo
但是如果我想使用它,我不明白它的意义 第四个口译员的优势是什么:
- 如果最终编译的代码是 JVM执行的仍然是“字节” 代码“我们第四个要做什么 你在干什么
- 这对写作有帮助吗 高效/紧凑的程序
- 我会用Forth写代码吗 解释器将转换它 到Java
你应该考虑所有这些,直到你理解它 它确实允许您编写高效/紧凑的程序。部分原因是定义定义词(在编译时执行的词)的能力可以有效地定义领域特定语言(DSL)。Forth还鼓励重构(否则堆栈内容就会变得不可理解……),因此代码会很紧凑。作者在页面上描述at实现了Forth的一个子集,适合在其他应用程序中合并;据推测,它旨在为应用程序提供脚本功能。系统不太可能通过吐出java或JVM字节码来工作;它几乎肯定使用Java编写的解释器 传统上,FORTH解释器可以在非常小的内存占用中实现。我知道有人在COSMAC上实现了一个,核心解释器有30字节长。面向堆栈的字节码也非常紧凑,因为它不需要指定操作数的位置——它只是从堆栈中读取并将结果存放在堆栈顶部。这使得它在嵌入式系统界非常流行,在嵌入式系统中,解释器的小开销被程序逻辑的紧凑表示所抵消 如今,它不再那么重要了,因为机器往往要大得多,尽管digitalross还谈到了其他仍然使用FORTH的情况 这对写作有帮助吗 高效/紧凑的程序 这是有争议的 我相信福斯的人会告诉你这很快。但我怀疑在Java实现的FORTH解释器上运行的FORTH程序的执行速度是否会与直接在Java中实现的等效程序的速度一致。首先,JIT编译器在优化FORTH解释器方面做得不如在普通Java版本中那么好
如果你所说的“紧”是指“使用更少的内存”,我认为两者之间的差别将是微不足道的。请记住,在“FORTH in Java”和“plain Java”两种情况下,您都有Java JVM的所有内存开销。这可能会淹没对FORTH代码密度与等效编译Java代码密度的任何比较。有几个FORTH系统在Java中实现了FORTH解释器。据我所知,有两种方法可以将forth源代码编译成JVM类,并允许您直接执行forth代码,而无需解释器
- 沃尔夫·韦杰加德
- “帮助”这个词
- 是面向对象的吗
- 有一种类似perl的模式匹配
- 复数和数组是语言的一部分
- 一种可重定向/不可重定向的机制,用于选择性地将输出发送到堆栈或控制台,并防止执行文件io字,例如在测试时
- 与JVM上的任何其他RPN语言相比,更接近forth的原始设计。有一个带有行号和代码beautyfier的编辑器。“interpiler”和字典的实现与词汇表/当前/上下文匹配。
有条件地,大多数与硬件相关的字(存储到特定内存地址或从特定内存地址获取)丢失。无论如何,在JVM上计算内存的任何字眼都是毫无意义的。
对第四种语法进行了一些有用的补充: