> 记得去年8月份就曾经想自己动手设计一门语言,
一开始的想法是先实现一门跟自己的目标语言特征有相似性
>
> 的现存语言的编译器,在实现中积累对语言设计和实现的理解.
记得当时选定了Ruby以后,就把C Ruby的源码
>
> 下载下来,打印出其语法BNF范式. 后来就是一直在研读Ruby的源码,零零星星也花了些时间,
因为总是感觉对
>
> C Ruby本身的实现理解的还不够通透,
就一直没有真正开始自己的实作,在我的想象中,
真正动手去实现一门
>
> 编程语言(仅指实现,不包括设计层面的工作)
并不是一件容易的事情,潜在的这种假想就这样让自己一直处于
>
> 储备阶段.
>
> 及至到了新公司这边,自己的第一个任务就是实现一门语言(
已经有相应的IEEE标准)的编译器. 这门语言已
>
> 经比较成熟,市面上支持它的编译器很多,也不乏一些开源的实现.
自己一开始当然也是下载了语言的IEEE标准
>
> 和相应的开源实现研读了一番.
不过公司里的工作不像个人任务那样,
总是在你感觉达到一个好整以暇的状态
>
> 以后才开始进行,项目的schedule,
release的deadline往往会驱使个人在达到相对准备
就绪的状态以后就需要
>
> 开始实际工作的推进了(在我的理解中,对于预研型的项目来说,
可能还可以有更多的储备时间,但对于工程性
>
> 较强的项目来说,储备时间往往并不会给很长).
>
> 于是在阅读了语言的BNF描述,
并对相应开源实现作了一些研究以后,自己就开始上马了.
到现在为止,过去了大
>
> 概有两个月时间,回头看来,自己也基本上实现了这个语言的词法,
语法部分,支持80%的核心语法,可以成功地
>
> 读入该语言的源文件,并生成内存语法树.
现在自己已经开始着手作一些语意层面的事情了.这个进度还是有些
>
> 出乎自己意料之外的.在刚着手作这件工作的时候,
自己其实还多少是有些忐忑不安的,因为毕竟感觉还有太多
>
> 的东西不完全处于自己的掌控中,没有那种充沛的成竹在胸的感觉. 但真的推进起来,才发现,有很多东西,很多
>
> 理解,都是在实际的工作中强化,获得的.
>
> 想想去年的8月份,自己就开始蕴酿设计一门语言,
也一直在作储备工作.过了一年时间,还是停留在储备阶段,没
>
> 有开始多少实质工作. 而真的被工作驱使,
却在不到两个月的时间就已经大致实现了一门以前自己并不太熟悉
>
> 的语言的parser前端. 这里面固然有部分原因是因为近一年来工作的积累让自己可以更快速
的完成相应工作,
>
> 但也真切的感受到 一个问题,如果不实际动手作,仅仅是从外面看,
往往会被一些表面上的困难阻塞住,产生不
>
> 可逾越的感觉,及至真的动手作了,才会发现未必然.
如果不是在新公司有工作需要,自己可能还是感觉没有作
>
> 好自主实现编译器的积累. 虽然自己现在在编译器设计实现方面仍存在大量的知识薄弱项需要补
充,但这并不
>
> 意味着自己不可以开始着手作一些实际的工作.
总是期待达到一个完美的积累状态再去动手实际作,结果可能
>
> 就是一直陷入积累的状态不能拔出.
>
> 的现存语言的编译器,在实现中积累对语言设计和实现的理解.
>
> 下载下来,打印出其语法BNF范式. 后来就是一直在研读Ruby的源码,零零星星也花了些时间,
>
> C Ruby本身的实现理解的还不够通透,
>
> 编程语言(仅指实现,不包括设计层面的工作)
>
> 储备阶段.
>
> 及至到了新公司这边,自己的第一个任务就是实现一门语言(
>
> 经比较成熟,市面上支持它的编译器很多,也不乏一些开源的实现.
>
> 和相应的开源实现研读了一番.
>
> 以后才开始进行,项目的schedule,
>
> 开始实际工作的推进了(在我的理解中,对于预研型的项目来说,
>
> 较强的项目来说,储备时间往往并不会给很长).
>
> 于是在阅读了语言的BNF描述,
>
> 概有两个月时间,回头看来,自己也基本上实现了这个语言的词法,
>
> 读入该语言的源文件,并生成内存语法树.
>
> 出乎自己意料之外的.在刚着手作这件工作的时候,
>
> 的东西不完全处于自己的掌控中,没有那种充沛的成竹在胸的感觉. 但真的推进起来,才发现,有很多东西,很多
>
> 理解,都是在实际的工作中强化,获得的.
>
> 想想去年的8月份,自己就开始蕴酿设计一门语言,
>
> 有开始多少实质工作. 而真的被工作驱使,
>
> 的语言的parser前端. 这里面固然有部分原因是因为近一年来工作的积累让自己可以更快速
>
> 但也真切的感受到 一个问题,如果不实际动手作,仅仅是从外面看,
>
> 可逾越的感觉,及至真的动手作了,才会发现未必然.
>
> 好自主实现编译器的积累. 虽然自己现在在编译器设计实现方面仍存在大量的知识薄弱项需要补
>
> 意味着自己不可以开始着手作一些实际的工作.
>
> 就是一直陷入积累的状态不能拔出.