作者zanyking (遙遠的旅人)
看板Soft_Job
標題Re: [討論] code generator
時間Fri Oct 15 21:35:57 2010
※ 引述《pennymarkfox (潘妮小狐狸)》之銘言:
: 這幾天發覺有個同事對code generator跟code review很不以為然(理由我大概猜的
: 出來不過這不是重點)
: 在版上好像沒有看到相關的討論,其實我好像有映像但是鬼遮眼的找不著(默)
: 我的認知是,code generator是幫你助完成實作的工具,它應該是幫忙你減少實
: 作一些刻版的程式碼的時間。
我通常不是用到Code Gen的人,而是需要寫Code Gen給別人用的人。
Code Generator通常只有一個目的:
Make Common Case Faster.
可以加快的就加快,不能快的就不要想太多,Code Generator的目的不是用來取代
programming,只是用來帶過那些目標語言力有未逮而討人厭的部份(例如Java的
Getter/Setter)。
另外,到底誰那麼了不起可以對Code Review 不以為然啊?
做數學證明與物理模型的都需要一大堆的同儕審查了,他是有多了不起阿?
完全不需要Code Review的程式就是不重要所以可以寫過即丟的程式,一個開發者會
很喜歡寫免洗程式嗎?(『不需要』跟『沒有被』是差很多的。)
我今天一個下午就是在修一個兩年前離職的同事寫的一段程式碼,他因為某些原因
呼叫了一個4年前就被Eclipse官方Deprecated掉的API。
這段程式碼的測試很不幸的與Server-Client端的Protocal狀態有關,我得要花更多
的時間將那個狀態複製出來才能確定我的修改是對的。
這一切如果在兩年前我或是我主管有好好做Code Review的話就不會有今天的浪費了。
而一間軟體公司一旦開始開發產品、累積程式碼,就會因為該做的沒做而累積這樣的
債務。
當累積的設計弱點、架構複雜度大到頃全開發團隊之力在資金燒光前都無法修正時,
那就是該產品熱力學第二運動定律的終點了。
也就是軟體在架構設計上的『死亡』。
: 他覺得"code generator 間接的宣告程式「設計不重要」",因為
: 一段程式不用大腦想就可以寫出來, 就不用設計了. 如果有個工具讓你不用大腦
: 想就可以寫程式, 那不就是間接的告訴你不用設計, 就是間接的告訴你設計不重要
: 當我說出上面code generator應該是當成工具來減少開發時間的想法,他說
: 實作從來不是寫程式裡面花時間的部份
: well, 所以我寫程式很花時間是因為我不會寫程式嘛 T_T
: 其實我自已在開發的時間的確是設計多過實作,但debug又多過於實作。
: 不知道版上的高手對於code generator的看法又是怎麼樣的呢?
作人不要鐵齒,有些東西,你不用Code Generator,你就真的很笨。
出個題目:
請用Java簡單實做一個可以讀取S-Expression的 Lisp Interpreter。
你去問看看除了做IDE的有誰會拒絕用Antlr所提供的Grammar DSL與Code Gen tool,
一定得要自己手工用Java刻 Tokenizer與 Syntax Parser。
--
我所信仰的科學是一種謙卑的理性,承認自身的無知與渺小才能觀察到世界在我們貧
弱的知覺上留下來的痕跡。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.44.37
推 Ting1024:是阿。該不會寫韌體的吧,寫小玩具還自以為是。 10/15 21:56
→ Ting1024:寫AP的,你用MFC不產生樣本,自找苦吃阿。 10/15 21:56
推 a1e:跟手工刻gui介面一樣,第一次做很好玩,做多了覺的很麻煩Orz 10/15 22:35
→ TonyQ: antlr 這例子真的是個經典 XDD 10/16 00:06
推 a1234957:通常軟體跟韌體的思維完全不一樣 10/16 00:14
推 pennymarkfox:是做web application... 10/16 01:32
推 pennymarkfox:code review那部份我不確定他反對的原因 10/16 01:34
→ pennymarkfox:我跟他是同個team但不同語言, 他java我c# 10/16 01:34
→ brianhsu:Code generator 或許有諍議,不過 code review 會反對就 10/16 08:52
→ brianhsu:真的很奇怪了……@_@ 10/16 08:52
推 dryman:Lisp interpreter讚XD 10/16 17:01
推 wildpeanut:推! 10/16 19:00
→ ykjiang:我們部門寫韌體的,我及同事都有寫code generator給大家用 10/17 00:09
→ juriolegend:code generator外還有custom script讓大家學習使用XD 10/17 01:54