作者:楊軍
記得去年8月份就曾經(jīng)想自己動(dòng)手設(shè)計(jì)一門(mén)語(yǔ)言,一開(kāi)始的想法是先實(shí)現(xiàn)一門(mén)跟自己的目標(biāo)語(yǔ)言特征有相似性 的現(xiàn)存語(yǔ)言的編譯器,在實(shí)現(xiàn)中積累對(duì)語(yǔ)言設(shè)計(jì)和實(shí)現(xiàn)的理解.記得當(dāng)時(shí)選定了Ruby以后,就把C Ruby的源碼 下載下來(lái),打印出其語(yǔ)法BNF范式. 后來(lái)就是一直在研讀Ruby的源碼,零零星星也花了些時(shí)間,因?yàn)榭偸歉杏X(jué)對(duì) C Ruby本身的實(shí)現(xiàn)理解的還不夠通透,就一直沒(méi)有真正開(kāi)始自己的實(shí)作,在我的想象中,真正動(dòng)手去實(shí)現(xiàn)一門(mén) 編程語(yǔ)言(僅指實(shí)現(xiàn),不包括設(shè)計(jì)層面的工作)并不是一件容易的事情,潛在的這種假想就這樣讓自己一直處于 儲(chǔ)備階段.
及至到了新公司這邊,自己的第一個(gè)任務(wù)就是實(shí)現(xiàn)一門(mén)語(yǔ)言(已經(jīng)有相應(yīng)的IEEE標(biāo)準(zhǔn))的編譯器. 這門(mén)語(yǔ)言已 經(jīng)比較成熟,市面上支持它的編譯器很多,也不乏一些開(kāi)源的實(shí)現(xiàn).自己一開(kāi)始當(dāng)然也是下載了語(yǔ)言的IEEE標(biāo)準(zhǔn) 和相應(yīng)的開(kāi)源實(shí)現(xiàn)研讀了一番.不過(guò)公司里的工作不像個(gè)人任務(wù)那樣,總是在你感覺(jué)達(dá)到一個(gè)好整以暇的狀態(tài) 以后才開(kāi)始進(jìn)行,項(xiàng)目的schedule,release的deadline往往會(huì)驅(qū)使個(gè)人在達(dá)到相對(duì)準(zhǔn)備就緒的狀態(tài)以后就需要 開(kāi)始實(shí)際工作的推進(jìn)了(在我的理解中,對(duì)于預(yù)研型的項(xiàng)目來(lái)說(shuō),可能還可以有更多的儲(chǔ)備時(shí)間,但對(duì)于工程性 較強(qiáng)的項(xiàng)目來(lái)說(shuō),儲(chǔ)備時(shí)間往往并不會(huì)給很長(zhǎng)). 于是在閱讀了語(yǔ)言的BNF描述,并對(duì)相應(yīng)開(kāi)源實(shí)現(xiàn)作了一些研究以后,自己就開(kāi)始上馬了.到現(xiàn)在為止,過(guò)去了大 概有兩個(gè)月時(shí)間,回頭看來(lái),自己也基本上實(shí)現(xiàn)了這個(gè)語(yǔ)言的詞法,語(yǔ)法部分,支持80%的核心語(yǔ)法,可以成功地 讀入該語(yǔ)言的源文件,并生成內(nèi)存語(yǔ)法樹(shù).現(xiàn)在自己已經(jīng)開(kāi)始著手作一些語(yǔ)意層面的事情了.這個(gè)進(jìn)度還是有些 出乎自己意料之外的.在剛著手作這件工作的時(shí)候,自己其實(shí)還多少是有些忐忑不安的,因?yàn)楫吘垢杏X(jué)還有太多 的東西不完全處于自己的掌控中,沒(méi)有那種充沛的成竹在胸的感覺(jué). 但真的推進(jìn)起來(lái),才發(fā)現(xiàn),有很多東西,很多 理解,都是在實(shí)際的工作中強(qiáng)化,獲得的. 想想去年的8月份,自己就開(kāi)始蘊(yùn)釀設(shè)計(jì)一門(mén)語(yǔ)言,也一直在作儲(chǔ)備工作.過(guò)了一年時(shí)間,還是停留在儲(chǔ)備階段,沒(méi) 有開(kāi)始多少實(shí)質(zhì)工作. 而真的被工作驅(qū)使,卻在不到兩個(gè)月的時(shí)間就已經(jīng)大致實(shí)現(xiàn)了一門(mén)以前自己并不太熟悉 的語(yǔ)言的parser前端. 這里面固然有部分原因是因?yàn)榻荒陙?lái)工作的積累讓自己可以更快速的完成相應(yīng)工作, 但也真切的感受到 一個(gè)問(wèn)題,如果不實(shí)際動(dòng)手作,僅僅是從外面看,往往會(huì)被一些表面上的困難阻塞住,產(chǎn)生不 可逾越的感覺(jué),及至真的動(dòng)手作了,才會(huì)發(fā)現(xiàn)未必然.如果不是在新公司有工作需要,自己可能還是感覺(jué)沒(méi)有作 好自主實(shí)現(xiàn)編譯器的積累. 雖然自己現(xiàn)在在編譯器設(shè)計(jì)實(shí)現(xiàn)方面仍存在大量的知識(shí)薄弱項(xiàng)需要補(bǔ)充,但這并不 意味著自己不可以開(kāi)始著手作一些實(shí)際的工作.總是期待達(dá)到一個(gè)完美的積累狀態(tài)再去動(dòng)手實(shí)際作,結(jié)果可能 就是一直陷入積累的狀態(tài)不能拔出. 轉(zhuǎn)載自: https://groups.google.com/group/pongba/browse_frm/thread/9a459b6efe94985a/ |
|
來(lái)自: 田原牧哥 > 《牛人觀點(diǎn)》