摘要: 上一篇文章基本上把分析的過(guò)程都講完了,于是這次就把FpMacro作為一個(gè)Demo拿了出來(lái)。不第一次就發(fā)的原因主要是那個(gè)時(shí)候FpMacro剛剛寫(xiě)完,當(dāng)然寫(xiě)完就要用的,于是后來(lái)就在Vczh Library++ 3.0的庫(kù)里面大量使用了FpMacro作為代碼生成的一個(gè)工具,用來(lái)代替一部分的宏的功能。當(dāng)然最后我并沒(méi)有寫(xiě)個(gè)插件安裝到VC++里,而是寫(xiě)了一個(gè)批處理文件去調(diào)用FpMacro.exe。
代碼內(nèi)詳
閱讀全文
posted @
2009-12-12 22:19 陳梓瀚(vczh) 閱讀(4936) |
評(píng)論 (0) |
編輯 收藏
摘要: 在上一篇文章中,我們已經(jīng)實(shí)現(xiàn)了在C++中直接寫(xiě)文法并轉(zhuǎn)換成文法樹(shù)的工作,現(xiàn)在要開(kāi)始實(shí)現(xiàn)三個(gè)組合文法了。
閱讀全文
posted @
2009-12-11 22:49 陳梓瀚(vczh) 閱讀(2990) |
評(píng)論 (1) |
編輯 收藏
摘要: 上一篇文章中我們看到了可配置語(yǔ)法分析器使用起來(lái)的樣子,在這篇文章中我將告訴大家如何通過(guò)重載操作符的方法構(gòu)造文法表達(dá)式樹(shù),從而使用遞歸向下法進(jìn)行語(yǔ)法分析的工作。
閱讀全文
posted @
2009-12-04 23:43 陳梓瀚(vczh) 閱讀(3205) |
評(píng)論 (1) |
編輯 收藏
摘要: 上一篇文章提到了我開(kāi)發(fā)了可配置語(yǔ)法分析器之后做了一個(gè)FpMacro用來(lái)生成C++有規(guī)律的代碼。這一篇文章就從FpMacro入手,分析可配置語(yǔ)法分析器所需要具備的功能。首先讓我們來(lái)了解一下什么是FpMacro。
閱讀全文
posted @
2009-11-27 21:21 陳梓瀚(vczh) 閱讀(3246) |
評(píng)論 (3) |
編輯 收藏
摘要: 花了差不多兩個(gè)星期的時(shí)間將一個(gè)可配置語(yǔ)法分析器寫(xiě)好了。這個(gè)語(yǔ)法分析器被設(shè)計(jì)來(lái)完成以下任務(wù):
1、易于使用,并且在運(yùn)行時(shí)可更改
2、提供對(duì)分析字符串和容器的支持
3、可使用正則表達(dá)式輔助定義分析器
4、如果覺(jué)得預(yù)定義的設(shè)備不滿意,用戶可以自行提供新的文法元素(譬如說(shuō)增加一種使用通配符進(jìn)行語(yǔ)法分析的元素)
5、提供可配置錯(cuò)誤恢復(fù)策略,提供合理的錯(cuò)誤發(fā)生位置信息,用戶可根據(jù)自己的意愿來(lái)決定錯(cuò)誤信息的內(nèi)容。
閱讀全文
posted @
2009-11-27 10:01 陳梓瀚(vczh) 閱讀(3123) |
評(píng)論 (2) |
編輯 收藏
http://news.cnblogs.com/n/51405/ 年9月,剛剛辭去谷歌全球副總裁、大中華區(qū)總裁的李開(kāi)復(fù)博士,又創(chuàng)立了旨在培育創(chuàng)新人才和新一代高科技企業(yè)的創(chuàng)業(yè)平臺(tái)——?jiǎng)?chuàng)新工場(chǎng)。幾個(gè)月來(lái),李開(kāi)復(fù)奔赴全國(guó)各地,四處招賢納才。在三四十名得到面試通知的大學(xué)生中,一些人的求職理由讓他感到非常驚訝。
“我父母覺(jué)得我跟著李開(kāi)復(fù)干就對(duì)了!”
“我父母覺(jué)得我應(yīng)該去家跨國(guó)公司工作。”
“我父母希望我待在上海。”
“來(lái)應(yīng)聘到底是你的決定還是你父母的決定?”聽(tīng)完這些大學(xué)生的回答,李開(kāi)復(fù)感覺(jué)很無(wú)奈,便跟他們說(shuō):“我來(lái)發(fā)一封E-mail跟你的父母溝通一下吧。”“對(duì)不起,我的父母不會(huì)用E-mail。”
不會(huì)用E-mail的父母,居然告訴孩子應(yīng)該去哪一個(gè)互聯(lián)網(wǎng)公司工作,這不是很奇怪的事嗎?11月14日,在第二屆新東方家庭教育高峰論壇上,李開(kāi)復(fù)跟大家分享了他最近的一些經(jīng)歷,并鄭重地告訴在座的家長(zhǎng),在嚴(yán)管和壓力下長(zhǎng)大的孩子,雖然聽(tīng)話,但最后可能會(huì)失去管理自己的能力,甚至沒(méi)法獨(dú)立。
他建議,在家庭教育中,家長(zhǎng)對(duì)孩子要多信任、多放權(quán),少嚴(yán)管、少施壓。在當(dāng)今時(shí)代,家長(zhǎng)可能不懂下一代,不清楚孩子自己希望成為一個(gè)什么樣的人。此外,如果家長(zhǎng)幫孩子做了太多的決定,會(huì)讓孩子形成一種心理:反正有父母幫我作決定,這不是我的責(zé)任。當(dāng)他有一天面對(duì)獨(dú)立,他的路反而會(huì)走得非常艱難。
“我常常在大學(xué)演講時(shí)聽(tīng)到學(xué)生舉手問(wèn),你總告訴我們要追隨我心,可我不知道我心是什么。你總告訴我們要學(xué)自己有興趣的東西,但是我不知道自己的興趣是什么。”李開(kāi)復(fù)認(rèn)為,過(guò)于嚴(yán)格的管教,已經(jīng)使得一些從小生長(zhǎng)在被動(dòng)環(huán)境里的孩子,被培養(yǎng)成機(jī)器,他們聽(tīng)不到自己的聲音,找不到自己的興趣,不知道自己將成為什么樣的人。
李開(kāi)復(fù)也承認(rèn),在實(shí)施家庭教育的過(guò)程中,每個(gè)人都會(huì)犯錯(cuò),都會(huì)有管得太多的時(shí)候,但關(guān)鍵是要讓孩子知道,最終的決定權(quán)掌握在他們自己手中。
posted @
2009-11-16 00:52 陳梓瀚(vczh) 閱讀(8168) |
評(píng)論 (5) |
編輯 收藏
摘要: DFA與捕獲和預(yù)查結(jié)合起來(lái)的話很麻煩,不能用一張表來(lái)迭代,而是要用回溯,然后在回溯的時(shí)候記下?tīng)顟B(tài)。至此正則表達(dá)式的所有算法都完成了,接下來(lái)是詳細(xì)介紹。
閱讀全文
posted @
2009-11-14 19:13 陳梓瀚(vczh) 閱讀(2470) |
評(píng)論 (1) |
編輯 收藏
摘要: 今天花了一個(gè)晚上完成并測(cè)試了從NFA到DFA的代碼。NFA到DFA的主要過(guò)程就是構(gòu)造出一個(gè)等價(jià)于NFA的狀態(tài)機(jī),使得從任何一個(gè)狀態(tài)出去的狀態(tài)轉(zhuǎn)換都不具有相同的條件。這個(gè)約束就是“確定性”的含義,給定一個(gè)狀態(tài)和一個(gè)輸入,最多只能跳轉(zhuǎn)到一個(gè)目標(biāo)狀態(tài)。于是知道了這個(gè)過(guò)程,代碼就很好寫(xiě)了:
閱讀全文
posted @
2009-11-03 08:34 陳梓瀚(vczh) 閱讀(2728) |
評(píng)論 (8) |
編輯 收藏
摘要: 這篇文章的代碼所描述的算法在這里有詳細(xì)的說(shuō)明。
Epsilon-NFA到NFA的目標(biāo)主要是產(chǎn)生一個(gè)沒(méi)有Epsilon邊的,跟原狀態(tài)圖等價(jià)的新?tīng)顟B(tài)圖。過(guò)程不復(fù)雜,首先從起始狀態(tài)開(kāi)始,尋找所有Epsilons邊到達(dá)的對(duì)象的集合,然后復(fù)制這個(gè)集合的所有狀態(tài)包含的非Epsilon狀態(tài)。其實(shí)狀態(tài)做完之后,尋找所有能夠產(chǎn)生非Epsilon邊的狀態(tài)然后重復(fù)這個(gè)過(guò)程,最后NFA就出來(lái)了。代碼如下:
閱讀全文
posted @
2009-10-28 04:34 陳梓瀚(vczh) 閱讀(2381) |
評(píng)論 (7) |
編輯 收藏
2006年的職場(chǎng)出奇的冷清,相比前幾年,簡(jiǎn)歷的數(shù)量和質(zhì)量都大為不如,很難得找到三年工作經(jīng)驗(yàn)以上的人,有一個(gè)不是特別笨,就是特別怪。就是么,干得好誰(shuí)沒(méi)事?lián)Q工作啊!Simon是一家外企軟件公司的總經(jīng)理,最近給這個(gè)問(wèn)題愁壞了。項(xiàng)目一個(gè)接一個(gè)的接下來(lái),人手越來(lái)越緊張。雖然Simon是個(gè)極限編程的粉絲,但也不得不批準(zhǔn)了一份又一份的加班申請(qǐng)。HR經(jīng)理把這個(gè)問(wèn)題歸結(jié)到房?jī)r(jià)上,他的妙論是“怕失業(yè)了還不上房款,不敢跳槽”。
這天,K項(xiàng)目組長(zhǎng)Allen終于忍不住了,帶了一個(gè)只有一年工作經(jīng)驗(yàn)的小伙子要Simon面試,“很聰明!經(jīng)驗(yàn)少了點(diǎn)。”
Simon皺了皺眉毛,說(shuō):“你不知道這個(gè)職位最低要求是三年工作經(jīng)驗(yàn)嗎?”
Allen說(shuō):“這已經(jīng)是三個(gè)月里通過(guò)技術(shù)考試中最好的一個(gè)了,老大,試試吧。”Allen是Simon多年的哥們,比較隨便。
抵到面子上來(lái),Simon只好讓Allen把小伙子帶進(jìn)來(lái)。
Simon的面試通常是三步曲:
問(wèn)題一:你能說(shuō)說(shuō)畢業(yè)后的主要工作經(jīng)歷嗎?
問(wèn)題二:再說(shuō)說(shuō)你在公司的地位?
問(wèn)題三:你的發(fā)展目標(biāo)是什么?等回答后,比如說(shuō)構(gòu)架師,他就跟著問(wèn):想象一下你當(dāng)構(gòu)架師的一天,說(shuō)給我聽(tīng)聽(tīng)?
小伙子回答第一問(wèn)題很快很清楚,一年工作當(dāng)然沒(méi)什么東西。Simon覺(jué)得小伙子挺聰明。所以在小伙子回答了第二個(gè)問(wèn)題后,問(wèn)了一個(gè)發(fā)散性的問(wèn)題:“你剛才說(shuō)你在公司里處于中等水平,那比你差的人為什么會(huì)比你差呢?”
這個(gè)問(wèn)題是個(gè)陷阱。
小伙子冒冒失失回答說(shuō):“我覺(jué)得他們每天工作是為工作而工作,工作沒(méi)有責(zé)任感。”
Simon點(diǎn)點(diǎn)頭說(shuō):“是嗎?那真是糟糕的員工。那你剛好比糟糕的員工好一點(diǎn)了?”
小伙子的臉一下子紅了,“我不是這個(gè)意思……”
“好了,那你說(shuō)說(shuō)比你好的人為什么比你強(qiáng)?”
“我覺(jué)得他非常努力,工作很多年了還在學(xué)習(xí)各種構(gòu)架,水平很高。”于是Simon就問(wèn)那最后一個(gè)問(wèn)題。果然,小伙子回答的是要成為構(gòu)架師。大概70%的人想成為構(gòu)架師。但是構(gòu)架師是什么呢?
Simon問(wèn)道:“那你為什么要成為構(gòu)架師呢?”
小伙子一愣,大概還沒(méi)有人這么置疑過(guò)他。“年紀(jì)大了,不能老寫(xiě)程序吧。”這個(gè)回答,讓Simon想起關(guān)于他對(duì)什么是老的定義:當(dāng)你希望做年輕人做的事情時(shí),你就還年輕;如果你希望做老年人做的事情,你就老了。這和你出生了多長(zhǎng)時(shí)間是沒(méi)有關(guān)系的。
Simon接著問(wèn):“好吧,那你說(shuō)說(shuō)你成為構(gòu)架師以后,每天都會(huì)做什么?”
小伙子說(shuō):“我還沒(méi)想過(guò),不過(guò),我想應(yīng)該主要是需求分析,設(shè)計(jì)構(gòu)架吧……”這大概是現(xiàn)在年輕人的通病,年輕人很容易追逐一些自己也不清楚的目標(biāo)。
Simon問(wèn):“那設(shè)計(jì)構(gòu)架具體都做些什么呢?”
小伙子這次的回答是:“比如,選擇程序框架,決定用Spring或Struts等等。”
“哦,那我問(wèn)你,你怎么說(shuō)服別人是用Spring還是Struts呢?”
“如果我有經(jīng)驗(yàn),我會(huì)知道哪個(gè)更好……”
“是嗎,但關(guān)于Spring或Struts的知識(shí)任誰(shuí)都可以很容易得到。如果別人不同意你的建議,你怎么說(shuō)服他?如果同意你的建議,那你不過(guò)是作出了和別人一樣的認(rèn)識(shí),別人又憑什么認(rèn)可你呢?”
小伙子沒(méi)想過(guò)構(gòu)架師日子里還有一個(gè)說(shuō)服人的工作,說(shuō):“我是構(gòu)架師,我應(yīng)該有權(quán)力做決定吧?”
Simon想起權(quán)力的三種層次,第一層,任命;第二層,專業(yè);第三層,品德。
Simon問(wèn):“如果在一個(gè)成熟的軟件企業(yè)里沒(méi)有你所想象的構(gòu)架師呢?或者說(shuō),構(gòu)架師這種職業(yè)已經(jīng)死亡或消失了呢?你會(huì)怎么定位你的職業(yè)?”
小伙子顯得很震驚。
Simon畫(huà)了一個(gè)系統(tǒng)構(gòu)架,然后又給小伙子看了一段代碼。
“那一個(gè)更難懂?”Simon問(wèn)。
小伙子指著代碼說(shuō):“代碼難懂。”
Simon的解釋是:“這就是為什么實(shí)際上所謂的構(gòu)架師不存在的原因。一個(gè)更簡(jiǎn)單的東西怎么會(huì)更有價(jià)值呢?每個(gè)人都能夠畫(huà)出這種構(gòu)架圖,但不是每個(gè)人都能寫(xiě)出好的代碼。”
送走了小伙子,Simon有點(diǎn)難受。他有點(diǎn)喜歡這個(gè)小伙子,但是,這又是一個(gè)被愚蠢的教育和誤人子弟的技術(shù)雜志污染的家伙。Simon在自己的筆記本中加了一句話:中國(guó)程序員最愚蠢的認(rèn)識(shí)之三:我想當(dāng)構(gòu)架師。前面兩個(gè)赫然是:
35歲后寫(xiě)不動(dòng)程序了;
我只要做Java(C++);
posted @
2009-10-26 23:57 陳梓瀚(vczh) 閱讀(18615) |
評(píng)論 (57) |
編輯 收藏