1x 由查尔斯·摩尔编写的 Forth 语言,日期为 1999 年 4 月 13 日

主要观点

  • Chuck Moore 回顾 Forth 语言在过去 15 年的演变,强调硬件问题解决后应关注硬件,其开发了多个 Forth 处理器及相关 Forth 版本。
  • 主张简化硬件软件组合的复杂性,Forth 应是高度分解的代码,基于栈操作,避免过多参数和复杂结构。
  • 提出新的 Forth 语法,如用“红色”定义、简化“:**”操作、限制栈深度等,认为这样能使代码更清晰简单。
  • 指出 Forth 程序员常写过多代码,应避免“钩子”“复杂化”,通过分解代码去除不必要部分,如文件系统相关代码可大幅减少。
  • 探讨在 Color Forth 中字符大小与信息展示的平衡,以及 Machine Forth 中的一些特殊操作和概念,如“IF”“-IF”“@+”等,同时强调局部变量无用且有害。

关键信息

  • 第一个 Forth 处理器是 Novix,速度 8mips,后续有 ShBoom(32 位,50mips)、i21(20 位,500mips)。
  • Forth 是高度分解的代码,基于栈,一个 Forth 单词不应有多于一两个参数,栈应较浅。
  • 新的 Forth 语法,如红色定义、简化“:**”、用分号表示不同状态等。
  • 避免“10x 代码”,即避免写不必要的复杂代码,减少维护成本和漏洞。
  • 在 Color Forth 中字符大小与信息展示的权衡,以及 Machine Forth 中的特殊操作和概念。

重要细节

  • 硬件工程师工作不如 Forth 软件工程师,Chuck Moore 尝试解决硬件问题。
  • cmForth 因未用于很多应用,其效果难以确定。
  • i21 处理器为追求速度添加了复杂性,目前应用受限。
  • SETI 项目可能需要更快的处理器。
  • 新的循环构造简单方便,需递归版本的 Forth 且消除了“SMUDGE/UNSMUDGE”概念。
  • 各种循环结构的来源及选择,新的循环构造优于其他。
  • “BLOCK”在 Color Forth 中更简单,用于划分内存。
  • 微软程序因兼容过去而代码冗余,程序应尽量简洁,约 1000 条指令。
  • 关于屏幕字符大小,要平衡可读性和信息展示。
  • Machine Forth 中的特殊操作如“IF”“-IF”“@+”等在不同应用中的使用和效果。
  • 坚持局部变量无用且有害的观点,应专注于写应用而非优化工具。
阅读 10
0 条评论