《自制编程语言》读书笔记

2014-03-31 By LiuMian

自制编程语言----引


前段时间图灵出版了一本《自制编程语言》,运气很好手里有一本,决定利用好这个博客记录一下自己的学习过程,写写自己的心得,将厚书读薄是第一步。如果您是编程爱好者,不妨和我一起学习,相信一定会大有裨益。

翻开这本书之前,如果别人问我要不要尝试自制一门编程语言,我会觉得you are crazy,因为在潜意识里,自制编程语言一定是像C语言之父丹尼斯里奇或者Ruby之父松本行弘那样的业界大牛才能完成的浩大工程。但其实,创造一门语言,只需要一些C语言基础、一些正则表达式知识、加上不断思索的大脑。

为什么要制作编程语言

单说目前主流的编程语言,就有C/C++、Java、C#、Python、ruby、php、lisp、JavaScript等等,那为什么要制作一门新的语言呢?

1.可以帮助理解编程语言的内部运行机制

2.能制作领域专用语言

如同php专门面向web一样,很多语言都是Dsl(Domain-specific Language),那么如果掌握了制作语言的技术,就可以可以在必要的情况下制作出DSL。

3.可以用编程语言扩展应用程序

例如Emacs就内置了Emacs Lisp这种Lisp方言,为Emacs的自定义性提高了无限的想象力。

4.还有就是非常有趣

有人说过,想写出终极程序的程序员最终都去写操作系统或者编程语言了!

用什么语言制作

作者采用的是C语言作为语法处理器的编写语言。 理由是可以降低依赖度,并且作者要用的的yacc/lex工具(后文会解释)也是面向C语言的。

要制作什么样的语言

1.设计什么样的语法

作者在经过复杂的内心活动之后,决定制作一门与C语言类似的编程语言。

当然需要改造一些东西,比如

1.C语言中的if {}是可以省略的,作者觉得很混乱,所以在语法层次将{}设置为不可以省略。

2.增加关键字

3.switch case中,去掉忘了写break就会进入下一个case的设计。

4.同时如果没有进入任何一个 case或者也没有写default分支,运行时就报错。

5.还要加上python的缩进表示逻辑结构(真是贪心-,-)

2.设计怎样的运行方式

点击查看评论