莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          最近的學(xué)習(xí)和工作

          Posted on 2008-03-04 19:09 dennis 閱讀(685) 評論(1)  編輯  收藏 所屬分類: 涂鴉
              最近一直在寫Ruby腳本,說出來你可能不相信,我用Ruby寫游戲腳本。用的是JRuby,采用JRuby是因?yàn)槎〞r(shí)器的問題,Ruby1.8.6因?yàn)榫€程是用戶空間內(nèi)的本地線程,標(biāo)準(zhǔn)庫沒有提供強(qiáng)大的定時(shí)器功能,而對于游戲邏輯有相當(dāng)多的任務(wù)需要定時(shí)處理,權(quán)衡之下,最后決定使用JRuby,封裝了java的ScheduledExecutorService,等以后Ruby有更完善的定時(shí)器的時(shí)候就切換回來(我猜測引入了native thread的Ruby1.9應(yīng)該有更強(qiáng)大的定時(shí)器),基本滿足了要求。這一過程也更讓我覺的JRuby是個(gè)非常有前途的項(xiàng)目,利用Ruby的語法以及動態(tài)語言的高效加上java極其豐富的類庫,這樣的組合有莫大的威力,況且 JRuby的性能比之c ruby在某些方面更有優(yōu)勢,在1.1出來后應(yīng)該可以有一個(gè)更大的提升。

              寫Ruby腳本唯一比較郁悶的是重構(gòu),盡管Netbeans比RDT提供了更好的重構(gòu)功能,但是對于一些復(fù)雜重構(gòu)仍然沒有比較好的支持,況且我也不敢完全信任IDE的自動化,這種時(shí)候更顯示出完備的單元測試的重要性,如果沒有單元測試,對Ruby腳本的重構(gòu)簡直難以想象。另外一個(gè)比較麻煩的是,Ruby對二進(jìn)制的處理并不是很方便,盡管使用了bit-struct,但是它只能支持定長的數(shù)據(jù)結(jié)構(gòu),而不是可變長度的array list,變長的string,或者switch結(jié)構(gòu);盡管我自己做了簡單的擴(kuò)展,仍然很局限。幸好我遇到這樣的情況不多,通過其他手段變通處理也還能接受。后來javaeye上的莊表偉老大發(fā)布了DynamicStruct,這個(gè)才是根本解決之道,兩者結(jié)合使用應(yīng)該可以處理所有情況了。不過那時(shí)我的協(xié)議處理部分都已經(jīng)完成,下次有機(jī)會再試試。
              讀書嘛,最近終于開始讀買了許久的《代碼大全2》,以前是真怕這種大部頭,看著就沒信心讀完,哇哈哈,沒想到一讀下去就一發(fā)不可收拾,真是好書一本,就軟件構(gòu)建中的設(shè)計(jì)一章就值回書錢了。又利用晚上在重讀sicp前三章,在注釋這樣的邊邊角角原來也非常有價(jià)值,例如對閉包和組合的解釋,靜態(tài)語言由于有太多的聲明式結(jié)構(gòu)(struct、class etc.)反而對組合造成了阻礙和懲罰,而在Lisp中由于通用的組合粘合劑cons的存在,可以以一種統(tǒng)一的方式去處理組合結(jié)構(gòu),模擬各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。今天托同事在當(dāng)當(dāng)上買的書到了,《unix編程藝術(shù)》到手,這書按牛人的說法是sicp的實(shí)踐版,不讀就相當(dāng)遺憾了。

          評論

          # re: 最近的學(xué)習(xí)和工作  回復(fù)  更多評論   

          2008-03-05 13:30 by Arbow
          《Unix編程藝術(shù)》過目一遍了,收益不是太多,或許我該去看看SICP。。
          主站蜘蛛池模板: 孟津县| 柯坪县| 新巴尔虎右旗| 普兰店市| 营口市| 广汉市| 滦南县| 荥经县| 炉霍县| 扶绥县| 佛坪县| 开江县| 子长县| 五家渠市| 五原县| 晋城| 伊宁县| 昭觉县| 镇平县| 梅河口市| 闵行区| 祁连县| 福安市| 怀仁县| 道孚县| 灵丘县| 郯城县| 桓仁| 巫山县| 专栏| 合肥市| 得荣县| 泽库县| 宁武县| 杨浦区| 高唐县| 云梦县| 邵武市| 新宁县| 宁波市| 青田县|