我与 Forth 和栈式机器的历史

这是一篇关于 Forth 编程语言及相关经历的文章,主要内容如下:

  • Forth 的特点与作者经历:Forth 激进,如无语法、无冗余、无类型等。作者因读 Bruce Eckel 的书对 Forth 感兴趣,后深入研究 pForth 源代码,了解到其独特的编译时自我修改代码机制,如通过“(”定义注释、定义条件原语等。作者还实现了运行 Forth 的堆栈机器 CPU,编写了 Forth 交叉编译器,但编程体验痛苦,因难以遵循代码的“流”且无法摆脱大量的堆栈操作指令。
  • Forth 与其他语言的比较:Forth 与 C++对比,在注释和代码映射方面有优势;与 Lisp 对比,作者在学校未学到 Lisp 中类似 Forth 的部分。Forth 与传统编程语言在定义关键字和语法约定方面不同,能更紧凑地实现一些功能。
  • Forth 在实际项目中的应用与思考:作者在工作的实际项目中使用 Forth,最初编写的 Forth 代码简洁但功能有限,后来引入 LLVM 后端生成代码,发现用 C 编程更轻松。Forth 强调自由改变语言等,但作者认为在实际项目中难以做到,需要不同团队或人员关注不同层面,而自己更擅长通过协商找到合理妥协。Forth 适合小目标,但作者认为其编程思想难以应用于一般编程。
  • Chuck Moore 与 Forth 的实践:Chuck Moore 用 Forth 设计芯片和工具,如简化晶体管模型计算、手动实现 MD5 哈希函数等,体现了 Forth 追求小而优的工程方法。但作者认为 Chuck Moore 能做到的,自己不一定能做到,且 Forth 的一些理念与自己的工作方式不符。

总之,作者认为 Forth 令人惊叹,在特定领域有优势,但自己难以完全应用其编程思想和方法。

阅读 8
0 条评论