Posted on 2008-03-04 19:09
dennis 閱讀(682)
評論(1) 編輯 收藏 所屬分類:
涂鴉
最近一直在寫Ruby腳本,說出來你可能不相信,我用Ruby寫游戲腳本

。用的是JRuby,采用JRuby是因為定時器的問題,Ruby1.8.6因為線程是用戶空間內的本地線程,標準庫沒有提供強大的定時器功能,而對于游戲邏輯有相當多的任務需要定時處理,權衡之下,最后決定使用JRuby,封裝了java的
ScheduledExecutorService,等以后Ruby有更完善的定時器的時候就切換回來(我猜測引入了native thread的Ruby1.9應該有更強大的定時器),基本滿足了要求。這一過程也更讓我覺的JRuby是個非常有前途的項目,利用Ruby的語法以及動態語言的高效加上java極其豐富的類庫
,這樣的組合有莫大的威力,況且 JRuby的性能比之c ruby在某些方面更有優勢,在1.1出來后應該可以有一個更大的提升。
寫Ruby腳本唯一比較郁悶的是重構,盡管Netbeans比RDT提供了更好的重構功能,但是對于一些復雜重構仍然沒有比較好的支持,況且我也不敢完全信任IDE的自動化,這種時候更顯示出完備的單元測試的重要性,如果沒有單元測試,對Ruby腳本的重構簡直難以想象。另外一個比較麻煩的是,Ruby對二進制的處理并不是很方便,盡管使用了bit-struct,但是它只能支持定長的數據結構,而不是可變長度的array list,變長的string,或者switch結構;盡管我自己做了簡單的擴展,仍然很局限。幸好我遇到這樣的情況不多,通過其他手段變通處理也還能接受。后來javaeye上的莊表偉老大發布了
DynamicStruct,這個才是根本解決之道,兩者結合使用應該可以處理所有情況了。不過那時我的協議處理部分都已經完成,下次有機會再試試。
讀書嘛,最近終于開始讀買了許久的《代碼大全2》,以前是真怕這種大部頭,看著就沒信心讀完,哇哈哈,沒想到一讀下去就一發不可收拾,真是好書一本,就軟件構建中的設計一章就值回書錢了。又利用晚上在重讀sicp前三章,在注釋這樣的邊邊角角原來也非常有價值,例如對閉包和組合的解釋,靜態語言由于有太多的聲明式結構(struct、class etc.)反而對組合造成了阻礙和懲罰,而在Lisp中由于通用的組合粘合劑cons的存在,可以以一種統一的方式去處理組合結構,模擬各種復雜的數據結構。今天托同事在當當上買的書到了,《unix編程藝術》到手,這書按牛人的說法是sicp的實踐版,不讀就相當遺憾了。