主要观点:作者用自制的 Forth 方言写作约一年,发现 Forth 结构的有趣之处。Forth 和 Lisp 常被认为相似,Lisp 有“代码即数据”,而 Forth 代码中“数据结构”少,多是代码,可像数据一样处理,如将数据直接编译进使用它的代码中。Forth 超 imperative,数字 4 也可视为有副作用的单词。代表常量的 Forth 单词和做决策的单词调用方式相同,不易陷入死角,能灵活扩展。Chuck Moore 定义“输入”为控制程序的信息,Forth 虽无真正的解析器,但有分词器等,可直接用语言解析器读取输入,大部分程序处理的数据是控制程序行为,决策是代码的工作。这种方法有缺点,如不方便用文本表达某些东西,但在约束内有很大灵活性,作者在写谜题游戏时就体会到了这一点。
关键信息:
- 用自制 Forth 方言写作一年,注意到结构特点。
- Forth 与 Lisp 的“代码即数据”比较。
- Forth 多代码少数据结构及相关特点。
- Forth 的超 imperative 特性。
- Chuck Moore 对“输入”的定义及 Forth 的相关做法。
- Forth 方法的优缺点及在写谜题游戏中的应用。
重要细节:
- 作者 Forth 代码中很少定义“数据结构”,靠指针算术写一次性单词。
- 代码可直接将数据编译进使用它的代码中,避免命名常量传递。
- Forth 中代表常量的单词和做决策的单词调用方式相同。
- Forth 有分词器、符号表、解释器和虚拟机,解析和执行同义。
- 写好 Forth 代码需投资于抽象以描述问题逻辑。
- 写谜题游戏时利用 Forth 的灵活性添加自定义元素。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。