数据是代码

主要观点:作者用自制的 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 的灵活性添加自定义元素。
阅读 12
0 条评论