分享

有些事情做起来比想象中容易

 田原牧哥 2016-06-16

作者:杨军

 

记得去年8月份就曾经想自己动手设计一门语言,一开始的想法是先实现一门跟自己的目标语言特征有相似性

的现存语言的编译器,在实现中积累对语言设计和实现的理解.记得当时选定了Ruby以后,就把C Ruby的源码

下载下来,打印出其语法BNF范式. 后来就是一直在研读Ruby的源码,零零星星也花了些时间,因为总是感觉对

C Ruby本身的实现理解的还不够通透,就一直没有真正开始自己的实作,在我的想象中,真正动手去实现一门

编程语言(仅指实现,不包括设计层面的工作)并不是一件容易的事情,潜在的这种假想就这样让自己一直处于

储备阶段.

及至到了新公司这边,自己的第一个任务就是实现一门语言(已经有相应的IEEE标准)的编译器. 这门语言已

经比较成熟,市面上支持它的编译器很多,也不乏一些开源的实现.自己一开始当然也是下载了语言的IEEE标准

和相应的开源实现研读了一番.不过公司里的工作不像个人任务那样,总是在你感觉达到一个好整以暇的状态

以后才开始进行,项目的schedule,release的deadline往往会驱使个人在达到相对准备就绪的状态以后就需要

开始实际工作的推进了(在我的理解中,对于预研型的项目来说,可能还可以有更多的储备时间,但对于工程性

较强的项目来说,储备时间往往并不会给很长).

于是在阅读了语言的BNF描述,并对相应开源实现作了一些研究以后,自己就开始上马了.到现在为止,过去了大

概有两个月时间,回头看来,自己也基本上实现了这个语言的词法,语法部分,支持80%的核心语法,可以成功地

读入该语言的源文件,并生成内存语法树.现在自己已经开始着手作一些语意层面的事情了.这个进度还是有些

出乎自己意料之外的.在刚着手作这件工作的时候,自己其实还多少是有些忐忑不安的,因为毕竟感觉还有太多

的东西不完全处于自己的掌控中,没有那种充沛的成竹在胸的感觉. 但真的推进起来,才发现,有很多东西,很多

理解,都是在实际的工作中强化,获得的.

想想去年的8月份,自己就开始蕴酿设计一门语言,也一直在作储备工作.过了一年时间,还是停留在储备阶段,没

有开始多少实质工作. 而真的被工作驱使,却在不到两个月的时间就已经大致实现了一门以前自己并不太熟悉

的语言的parser前端. 这里面固然有部分原因是因为近一年来工作的积累让自己可以更快速的完成相应工作,

但也真切的感受到 一个问题,如果不实际动手作,仅仅是从外面看,往往会被一些表面上的困难阻塞住,产生不

可逾越的感觉,及至真的动手作了,才会发现未必然.如果不是在新公司有工作需要,自己可能还是感觉没有作

好自主实现编译器的积累. 虽然自己现在在编译器设计实现方面仍存在大量的知识薄弱项需要补充,但这并不

意味着自己不可以开始着手作一些实际的工作.总是期待达到一个完美的积累状态再去动手实际作,结果可能

就是一直陷入积累的状态不能拔出.

转载自: https://groups.google.com/group/pongba/browse_frm/thread/9a459b6efe94985a/



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多