读 开玩笑 有关语言设计的书籍!
Clojure的作者推荐使用Christian Queinnec的书“lisp in small Pieces”。该 Clojure阅读清单 涵盖了许多包含Clojure语言设计的书籍。
怎么办?我从哪里开始?我需要知道什么?
首先学习更多编程语言。
学习了几种语言之后,买一本关于编译器的书。有许多。谷歌将提供帮助。你买哪一个都没关系。你需要几个。阅读很多书都没关系。
学习语言并阅读编译器后,请执行以下操作。
构建您需要的运行时库。用一些合适的语言(如C或Python等)实现它们。
一旦你有真正有效的运行时库。 的 真 强> 完全工作。完全。您可以考虑语法和词汇扫描和编译。这些都是难题,但不是让运行时库运行起来的一半。
弄乱语法(即域特定语言)是一种有吸引力的麻烦。许多人都有“改进”的语法,但没有可用的运行时库。所以他们的“语言”是不完整的,因为它没有 的 做 强> 任何东西。
让你的语言先做点什么。
不要害怕编写编译器,编译器编译成现有语言,而不是编写目标代码。例如,Lightweight C ++是一个C ++ - > C编译器基于这个想法(尽管如此,C ++在某处做了同样的工作): http://linux.wareseeker.com/Programming/lightweight-c-1.3.2.zip/331414
如果你对如何改进编程有一个小而聪明的想法,那么这是一个快速的胜利方式。
搜索引擎也有类似的情况。如果我说,我可以做得比谷歌好,也许我可以使用谷歌混搭,重组谷歌的结果集,我不需要购买343千兆字节的存储空间来设置第二个谷歌只是为了改变从10到15的结果数量。(不幸的是,如果我有不同的排名或抓取想法,它就不起作用。)
也许,Twitter是一个更好的例子。使用Twitter API编写自己的Twitter。 (当然,只有你的想法适合Twitter的基础模型。)
我们现在正在研究数据流引擎(参见Wikipedia:基于流程的编程,数据流编程)。我们开发了一种非常精简的新语言,它有3种指令类型(组件创建,参数设置,消息声明)和2种块类型(组件声明和实现)。它被编译为C ++代码,因此编译器很简单,结果很快。此外,有几种情况,我们的语言脚本是从配置生成的,或者更优雅的是,它支持元编程。
我们应该中断1步(source->可执行文件)和0步(源脚本是可执行文件)的complilation语言; 3-4级易于概述,而且 - 如果我们做得对 - 它可以使开发更有效。
最简单的方法是使用a 连接编程语言 , 喜欢 向前 , 因子 或者你自己设计的一个。
Forth解释器非常容易实现,不需要占用超过几KB;对乐高设备很重要。您需要了解Forth解释器的工作原理。例如,这包括在内 第9章 的 从第四位开始 。