人生中的很可能的最后一次期末考就到了,復習之余不免忙里偷閑,想想程序的那些破事。
相對于去年來說,今年做的事情比較少。06年做了一個軟件渲染器和一個強類型的腳本引擎和一個基于OpenGL的GUI,07年沖做了一個基于OpenGL的GUI,一個正則表達式和動態的上下文無關文法分析器(并在年內重寫了一次),還有一個基于閉包的無類型腳本引擎。今年做的是一些修修補補的工作,首先為最新的腳本引擎提供了基于閉包實現的class和namespace、重寫了內核并加上了multi-method和operator overloading,為正則表達式引擎重寫了一個新的幾乎提高了9倍速度的分析器(于是寫了一篇招口水的文章)。自從Borland的沒落導致我狠一狠心從Delphi過渡到C++之后,一直到現在我都在維護一個我自己個人使用的“非標準模板庫”。STL啊Boost啊什么的就不用了,函數的名字比較鳥。
大三也快完了,學院要求我們自己張羅實習的事情,班主任推薦我去微軟,后來花了點時間準備了一下。不過不幸的是最后發現準備是沒有用的,面試官總會在意外的時間問你意外地問題。兩次電話面試一次HalfLife玩得正爽,第二次看片看得正爽。后來獲得了飛去上海(Microsoft STB,工程院分院)面試的資格,被一個老外暗示了一下導致一道題目答不出來。回來見到WP同學,他說:“去大公司面試總是要郁悶的。”所幸終于還是拿到了實習的Offer,遂簽。班里另外一名也做了一個正則表達式引擎的同學則到了MSRA的STC實習。
勞動節某瓶去了福建見網友,我就讓那個也是我的網友的某阿姨捎了本日語教材給我,每日一課一點一點讀。算是接觸點兒新鮮事物,也好消磨一下時間。不過我還是準備要花點心思去學好的,也給自己制定了一個non-deterministic的長期計劃。打算在實習的時候,晚上看書寫程序之余閱讀點兒日語材料玩點兒AVG算練練聽力。
今天重新翻開了以前的代碼,回想起寒假曾經信誓旦旦想封裝Windows Common Control 6.0的事情。框架和GDI都做完了,空間封了一個BUTTON class,其他的還沒。無奈微軟寫的這Common Control 6.0在XP底下有個難看到無法忽略的bug,所以還是算了。Vista想必應該沒有了罷,等以后有空再弄吧。不過今天還是為這套褲的GDI部分加上了保存bmp以及讀寫emf的功能,然后瞄到了桌子上以前非常喜愛的一些圖形學的書。
我也奇怪,圖形學看了十幾本書沒什么建樹,編譯器和虛擬機只有一本編譯原理和一些零散的論文看倒是把一個完整的無類型動態語言腳本引擎給弄出來了。語法上自己的一些想法實現以后,有一次看了python和ruby的資料發現很多東西都是異曲同工,也好不算偏門。功能都有了,C++和.NET的兩個接口也做了,就剩下補充一下腳本的預定義庫了。不過這個也得慢慢來,至少比做那個純粹是消磨時間的“封裝Common Control 6.0”來得有意義。
今天在MSDN上終于找到了以前就很想找到的函數了,可以提取一個字符串的貝塞爾曲線邊框。這樣一來該有的輸入數據都有了。目前有一個想法,借助GDI的這個提取文字邊框和加載BMP的功能,自己從一個DIB緩沖區上重新實現一套比較好一點的2D繪圖庫,至少要實現GDI+那些用得上的功能,然后做點兒它沒有的。GDI+那個可憐的版本問題導致每每需要自己寫manifest,GDI又太弱,反正時間還多,就這么辦吧,不用GDI了全部重頭寫,除了獲得文字邊框這個沒辦法一定要用API,自己讀ttf文件還是麻煩了一點的。自從軟件渲染器做完之后,也快兩年了。重新動一下,有助于減少審美疲勞,也算是把未了的心愿給完成了。于是接下來就會有一堆問題了。如何根據幾何畫刷把曲線轉換成封閉的多邊形,這個一做好,什么都好了。填充倒是以前早就做了,于是連文字都可以自己來渲染了。自己掃描曲線真是美啊。
做好了這個圖形庫以后就可以把繪圖設備抽象掉,然后再上面構造一個類似Flash那種結構的新型GUI了,用于對付一些比較特別的應用程序了。然后想個辦法把這套GUI封進Vczh Free Script之后,這個腳本推廣起來也就容易了。已經有一位網友用我這套腳本引擎代替PHP開發了一個網站,不過似乎沒做好,我也沒看到結果。果然語言還是需要庫的。
于是,找到了接下來要寫的程序。從0開始構筑2D圖形庫,很多東西都需要這個玩意兒。
posted on 2008-06-09 10:16
陳梓瀚(vczh) 閱讀(1537)
評論(5) 編輯 收藏 引用 所屬分類:
其他