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的主要內容了,做完之后就可以用它來實現一個專門開發編譯器的類庫和工具集了。


