前言
这本书是为那些想独立制作一门编程语言的人而写的。
一听到这个话题,有的人会想:太疯狂了,制作编程语言肯定很有难度吧?有人会怀疑:制作编程语言能有什么用呢?其实这些都是误解。
制作编程语言在技术层面上其实并不难,只要掌握一些基础知识即可。而且,制作编程语言对于我们深入理解日常使用的C、Java、JavaScript等语言都有帮助。在一些应用程序的内置脚本语言中,我们也经常会因为种种限制从而萌生制作替代语言的想法。因此,自制编程语言并不是少数极客的个人癖好,它对大多数程序员都颇具实用价值。
日本关于制作编程语言的书已经很多了,其中一些还被选定为大学教科书。这些书中常出现有限状态机、NFA、LL(1)、LR(1)、SLA等专业词汇,同时还大量使用∩、∈等数学符号,对于不熟悉这部分理论知识的人(包括我自己在内)来说非常难以读懂。针对这种现状,本书会偏重实践,避免枯燥的理论。
本书将分别制作两种编程语言:crowbar与Diksam。crowbar是运行分析树的无类型语言,Diksam是运行字节码的静态类型语言。无论哪种语言,都具备四则运算、变量、条件分支、循环、函数定义、垃圾回收等功能,最终版则可以支持面向对象、异常处理等高级机制。总之,作为现代编程语言所必须具备的功能都基本覆盖了(唯一可能没实现的就是多线程了吧)。所有源代码都提供下载,读者可以一边对照书中的说明一边调试源代码,这样应该不难理解整个程序的运行机制。
当然,要一次实现如此多功能的编程语言,对于初学者而言可能有点吃力,因此本书会详细介绍crowbar、Diksam的制作步骤,请放心。
在制作编程语言的过程中,我体会到了一种无法用语言形容的快乐。其实无论在日本或其他地区,世界上还有很多人都在尝试自制编程语言,这正是编程语言不断增加的原因。如果以本书为契机,有朝一日你也向本已混乱的巴比伦之塔再添一门新语言的话,作为本书作者,这将是无上的光荣。
在本书的撰写过程中,得到了很多朋友的帮助与支持:
感谢百忙之中通读原稿并给出很多改进意见的吉田敦、间野健二、藤井壮一、山本将;感谢对本书原型,即网页版“自制编程语言”提出意见的朋友;感谢对博客连载“自制编程语言日记”提出意见的读者朋友,以及实际使用crowbar与Diksam并提出意见的朋友。最后还要感谢每次对我延迟交稿仍然充满耐心的技术评论社的熊谷裕美子编辑。多亏大家的鼎力支持,本书才终能完成,在此我表示深深的谢意。
2009年5月7日01:06 J.S.T
前桥和弥