之前因為非常忙,加上無聊開發什么類似WCF和WPF的東西,最近終于找到了新的目標了,于是之前那些就不做了。隔了這么久沒法文章主要是因為最近沒寫出什么完整的東西。國慶玩了9天,之前在計劃VL++3.0。
VL++3.0被定位為一個為了數據處理而開發的C++庫。這個庫不的特點在于“
其他語言的味道很濃”。C++的庫用起來不爽主要是因為老是要我按下劃線,而且大量應用非OOP特性導致IDE的自動補全無法發揮作用。所以為了彌補這個缺陷我做了一個很不一樣的東西,也就是VL++了。經過了三年多的開發,1.0和2.0已經相繼出爐,每一次打翻新都解決了一些前一個版本解決不了的問題。所以這次從2.0到3.0的變化主要有:
1:庫組件的結合不夠緊密
2:沒把OOP和GP結合好
3:最重要的,用起來沒C#爽
庫在好用的基礎上還要寫起來爽。爽有兩個方面,第一個是無論你做什么都發現已經完成了,第二個是庫里面的東西都在IDE的自動補全里面顯示出來了你不用去查額外的東西。當然第一個要達到是基本不可能的,但是這么多年寫代碼的經驗也知道經常需要重復做的東西是什么。第二個就需要慢慢規劃了,什么東西可以放進類,什么東西不行。所以3.0的結構如下:
庫主要面對的有容器、流、字符串和自動以數據結構(包括XML等,主要是樹)。為了讓他們之間可以互相轉換,譬如字符串到容器啦,字符串到數據結構再到流等等(譬如把一個程序分析稱語法樹之后保存下來),需要有15種操作:
源\目標 |
Collection |
String |
Stream |
XML/Tree |
Collection |
LinQ |
Formatter |
Serialization |
Combinator |
String |
Regex |
LinQ |
Writer |
Combinator |
Stream |
Deserialization |
Reader |
Stream |
Serialization |
XML/Tree |
TreQ |
Formatter |
Deserialization |
|
所以我們可以知道VL++3.0需要實現的組件有:
1:Collection
2:String
3:Stream
4:XML
5:LinQ
6:Formatter
7:Serialization
8:Combinator
9:Regex
10:Writer
11:Deserialization
12:TreQ
至于什么是LinQ我相信大家肯定很明白了。
國慶前已經在C++上實現Collection、Stream、String和LinQ了。TreQ是我自己想出來的想模仿LinQ的方法,但是專門處理樹形結構而不是順序結構的。
上面就是VL++3.0的主要內容了,
做完之后就可以用它來實現一個專門開發編譯器的類庫和工具集了。
posted on 2009-10-09 07:17
陳梓瀚(vczh) 閱讀(3437)
評論(11) 編輯 收藏 引用 所屬分類:
C++