编程是一门艺术,而编程语言则是这门艺术的缔造者。计算机系的很多学生都对编程语言涉及到的编译原理表示畏惧,其实编译原理本身并不复杂,不过由于目前市面上有关编译原理的书籍大部分都是由国外的原著翻译过来的,翻译过来的文字很多时候没办法完美的表达出原文的意思,所以有时候让人感觉像天书,例如国外有名的 龙书(Dragon book),龙书是Alfred V. Aho等人于1986年出版的,虽然时隔了几十年,不过里面的编译原理和算法却相当经典,可惜大部分翻译的质量都不过关,需要仔细研读作者提供的源代码再加上英文原著,才能够领悟出编译原理的奥妙。
不过作者提供的源代码做出来的最终例子因为与别的编程语言相比过于简单,可用性不强,再加上一堆的数学公式,很多人都放弃了研究,再加上目前国内.net,java,android之类的商业开发环境,很多程序员没时间做开源项目,所以全世界那么多的编程语言就没看到中国人开发的编程语言,可能有人会说有易语言,易语言确实是很难得的应用于实际开发的中国的编程语言,不过好像没开源吧,商业的味道更浓点。
不过任何事情都不是绝对的,外国人能做到的,我们一样可以做到,zengl开源网的站长根据龙书里的编译原理,使用C语言开发出了一套开源的编程语言,名字叫zengl编程语言。
不过作者提供的源代码做出来的最终例子因为与别的编程语言相比过于简单,可用性不强,再加上一堆的数学公式,很多人都放弃了研究,再加上目前国内.net,java,android之类的商业开发环境,很多程序员没时间做开源项目,所以全世界那么多的编程语言就没看到中国人开发的编程语言,可能有人会说有易语言,易语言确实是很难得的应用于实际开发的中国的编程语言,不过好像没开源吧,商业的味道更浓点。
不过任何事情都不是绝对的,外国人能做到的,我们一样可以做到,zengl开源网的站长根据龙书里的编译原理,使用C语言开发出了一套开源的编程语言,名字叫zengl编程语言。
zengl编程语言创建的本意是为了让人们能够揭开编译原理的神秘面纱。本着开源的精神,作者将该编程语言开发过程中的所有版本都公开出来,每个版本都有windows系统的用于vs2008的版本,以及linux系统下的包含makefile的源代码,并且都有对应的测试脚本用于测试编程语言的实用性。
作者从编译原理的词法解析开始创建了第一个词法扫描的版本,接着是抽象语法树的生成等,在做出一个像样的编译器后,又接着做了一个解释器(就像JAVA的虚拟机),用于解释执行编译器生成的中间代码。作者抛开了龙书中的复杂的数学算法,利用简洁的C语言和常用的条件,循环,函数等结构构建了一个简单易懂的编程语言,并且在很多重要的代码处做了注释,每个版本都在网站中有个单独的页面,在其中有详细的阐述,力求让人们能更直观的深入到编程语言的核心部分,最重要的是这些都是中文的,无需进行蹩脚的翻译。
如果把zengl编程语言比作金字塔,那么其中的每个版本就是金字塔的台阶,只要沿着台阶一级一级的往上走,就可以领悟到编译原理和编程语言的魅力,最终能够开发出属于自己的编程语言,就算不能开发出一个自己的编程语言,也能将编译原理应用到其他项目中去。
作者使用zengl v1.0.5的版本开发了俄罗斯方块游戏:
在linux下按P键暂停时的截图如下(linux下的kde截图软件像素不太高):