26

我正在寻找开发一个新的Forth系统,旨在使游戏开发更容易在一个或多个复古控制台平台上进行。我有点像 Forth 初学者,需要您的帮助来决定从哪个 Forth 代码库开始移植。

我基本上是在寻找特定 Forth 之间的优缺点。我已经阅读了JonesFORTH的来源以及对它的赞扬和批评,以及关于 ANS 的讨论,不幸的是,我感到相当困惑。据我所知,Forth 社区似乎在标准合规问题上存在相当残酷的分歧,两个阵营都提出了很好的论据,说明为什么标准既好又坏。但是,我似乎找不到关于标准究竟发生了什么变化的实用建议,除了一般意义上的它使事情变得比他们可能需要的更复杂和臃肿。

我希望让目前被汇编或 C 语言开发前景吓坏的程序员和爱好者更容易开发,所以我倾向于更简单的 Forth,但我对 Forth 的了解还不够,无法制作受过教育的决定。

4

7 回答 7

7

我有点像你现在的位置。一段时间以来,我一直在随意阅读 Forth,并且认为它有很大的潜力——也许也可以用于脚本编写。但是,我远非权威,但这是我的想法。

首先,Forth 似乎是终极的可编程编程语言——甚至超过 lisp。为此,我不确定您需要编写多少 C 或程序集。我更倾向于在 Forth 本身中开发词汇表。毕竟,这就是它应该如何使用的方式。

其次,在我尝试过的实现中,我最喜欢 Gforth 和 Pforth。

您正在使用哪些?

最后,这是我发现的在线阅读列表:

  • 从头开始
  • 思考
  • 第四入门
  • 第四语言
  • 第四教程
  • Pforth 教程
  • Gforth 手册
  • 开始
  • 维基福斯
  • OLPC 第四版
  • 让我们构建一个编译器
  • 你找到其他人了吗?

    于 2010-07-15T18:00:54.280 回答
    4

    一个基本的 Forth 系统非常小,可以快速实现。我认为以下页面对您非常有用:“ Linux / i386 系统的有时最小的 Forth 编译器和教程”。这是一个关于引导 Forth 系统的线性教程!

    确保实现定义词(在编译时执行的词)。这就是 Forth 的力量的来源;使其真正可扩展。

    我实际上并没有尝试过,但我曾经选择过bigFORTH,因为它是少数几个拥有开源许可证的 Forth 之一。它也得到积极维护;例如,今年早些时候发布了一个版本。

    在过去的几年里,我收集了一组关于 Forth 的带注释的链接。有些东西很难找到。

    关于标准讨论:这是一个 20 年前的讨论。我认为实际做某事比说话更重要:实现软件、提供杀手级示例、编写文档、邀请其他人参与等等。Charles Moore 继续前进并完成了Forth 芯片machineForthColorFORTH。如果您在链接的注释列表中搜索“machineForth”和“ColorFORTH”,可能会找到一些有趣的文章和声明。Charles Moore 现在也有一个博客

    于 2010-07-20T20:28:02.203 回答
    3

    作为第一步,您可能想尝试的一件事是用 Java、C++、Python 等高级语言编写 Forth 解释器。它将缺乏机器级 Forth 的主要优点:速度和紧凑性,但是编写自己的虚拟机,您将了解不同类型的线程等,用于各种 Forth 风格。

    大多数新的 Forth 实现基本上都是从将 CPU 视为虚拟机开始的——因此,当需要从解释版本转移到机器代码版本时,创建一个显式虚拟机不会浪费知识。此外,您将拥有自己的代码蓝图,以便在构建机器版本时进行交叉引用。

    但是,如果您真的非常熟悉机器代码,您可以跳过上述步骤,直接移植其中一个标准。

    就标准而言,我会选择一些标准,但一开始就保持最低限度。如果您需要在用户定义的单词以外的事物方面超越标准,您总是可以根据实现需要向那个方向发展——无论是标准的还是非标准的。Forth 最酷的事情之一是它非常简单,您可以重新编写整个编译器,而不是重新编写一些您将在其上运行的 Forth 代码,哈哈。

    于 2010-07-28T21:48:53.543 回答
    2

    我建议寻找 eForth,Ting 写道。在某些方面有点现代图。他有一个用 C 编写的内核,但是 eForth 内核/系统已经被移植到许多平台/cpu 上,大多数都有汇编内核/内核。但是,有一种很酷的方法叫做 Factor。它一开始只是“只为游戏”,最终出现在编程语言世界的一个狂野而有趣的角落

    于 2010-07-21T20:16:14.210 回答
    2

    Gameduino是一个基于 Arduino 的游戏开发平台,内部有一个最小的第四个 CPU(J1 第四个)运行。

    除了J1的 Verilog 源代码,还有一个 PC 模拟器,一个用 google go 编写的编译器,这里是 Serge Zaitsev。

    J1 已在 Xilinx FPGA 中实现。也可以在任何现代 MCU 上“模拟”J1 CPU。

    于 2013-10-19T13:10:03.940 回答
    2

    关于 ANSI 兼容性,如果您将 Forth 用于您自己的应用程序,您可以省略任何您不需要的内容,甚至更改您不喜欢的内容。间接线程 Forth 在 16 位处理器上是最紧凑的(在 64 位处理器上不再如此)。所以这可能是要走的路。

    称为FIG-Forth 的间接线程Forth 系列仍然是教育材料。jonesforth 是 Forth 的一个例子。我本人是 ciforth 的作者,它是 jonesforth 和 yourforth 的灵感之一,这可能值得你花时间,因为它试图解释设计事物的原因。Ting 的 eforth(到处都是)和 Camelforth 也是很好的例子。gforth 通过 c 绕道而行,它的体积对您来说价值较低。

    一个普遍的建议是,如果你需要一个代码字(用汇编程序编码,而不是 Forth,最低级别)你最好偷走它,然后重新实现。除了最晦涩难懂的处理器之外,所有处理器上的 32 位除以 16 位的代码肯定会在某处找到。所以收集一些在你正在使用的处理器上实现的 Forth。

    您必须选择一个处理器,这将几乎锁定您然后您可以只使用 Camelforth 的一个(因为它适用于大多数流行的处理器)并开始您的应用程序。如果你不太满意,你可以修改它成为你自己的 Forth。如果您使用的是 6809 或 Renesas 处理器,或 16 位 i86,您可以使用我的 ciforth 作为起点。

    于 2015-02-09T22:00:49.103 回答
    1

    我知道这是一个老问题,但为了记录,另一个伟大的开始是“ff”(Felix 第四)。

    这里有用 x86 (NASM) 和 ARM (gas) 编写的程序集版本。

    而最新的版本是用一个汇编程序编写的,它是从创建者自己的页面中自行创建的。

    于 2019-01-18T05:08:50.077 回答