译者序

能翻开这本书的人,想必对编程都有着浓厚的兴趣。大部分编程爱好者都会利用业余时间写一些小程序、开源项目作为消遣,却很少有人会想要自己创造一门编程语言,这是为什么呢?

在翻译本书之前,如果别人问我要不要尝试自制编程语言,我一定会觉得他疯了。因为在潜意识里,我一直认为制作编程语言应该是C 语言之父丹尼斯·里奇这样的业界大牛才能完成的浩大工程,作为一个普通程序员只要安于本分,用好已有的语言就已经足够了。

在翻译完本书后,我才发现自己真的是大错特错。原来创造一门编程语言,只需要一些C 语言基础、一些正则表达式知识、加上不断思索的大脑就可以做到。如果你还觉得难以置信,那么就请看看在这本不算厚的书中,作者居然已经创造了两门编程语言,并且都具备高级编程语言的所有特性。

其实一开始的问题已经有了答案:很多看似难如登天的事情,一旦真的下决心去做,你会发现难度并没有想象中那么高,只是我们往往缺少一颗勇于挑战的心罢了。

本书记录了作者一步一步从零创造出编程语言的全过程,作者并不是什么行业精英,而是像你我一样的普通开发者。整本书中也没有用特别复杂的算法或酷炫的编程技巧,但是就凭借着一行行简单朴实的编程语句,作者最终完成了一个普通开发者看来几乎不可能完成的任务。阅读完本书后,除了自制编程语言的知识,我相信读者还能收获到一些更重要的东西。

本书原文讲到了日文编码的知识,为了更好的将内容精髓呈现给读者,我们大胆地将涉及日文编码的部分全部更改为中文编码的知识,译者刘卓还对此编写了很多原创的补充内容,力求能与原书保持同样的水平。如有错误或疏漏,还请读者随时指正。

读完全书后,你会对编程语言的原理和实现方式有一个全面深入的了解,比如你会明白为什么Java 中String 类型明明是对象类型却不能改变其内容,C 语言中为什么a++ + ++b 这样看似合理的语句却会报错等。以前知其然而不知其所以然的问题都会得到答案,这对日后进行更高阶的开发有很大的帮助。

更重要的是,你可以获得自制编程语言的能力,从而可以去做很多以前敢想却没有能力做的事情,比如我现在就在构思能否创造一门以文言文和中国古代文化为基础的编程语言:易经八卦就是天然的二维矩阵,《九章算术》则有不少基础算法……相信读者还会有更加天才有趣的想法出现。如果能运用本书中的知识最终将其实现,那么这将是对翻译工作最好的肯定。

最后,在这里代表其他二位译者一并感谢在翻译过程中给予我们帮助和支持的家人、同事,让这本书最终得以问世。

徐谦

2013 年中秋

目录

  • 版权声明
  • 译者序
  • 前言
  • 第1章 引子
  • 第2章 试做一个计算器
  • 第3章 制作无类型语言crowbar
  • 第4章 数组和mark-sweep垃圾回收器
  • 第5章 中文支持和Unicode
  • 第6章 制作静态类型的语言Diksam
  • 第7章 为Diksam引入数组
  • 第8章 将类引入Diksam
  • 第9章 应用篇
  • 附录
  • 编程语言实用化指南——写在最后
  • 参考文献