之前因为非常忙,加上无聊开发什么类似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) 阅读(3407)
评论(11) 编辑 收藏 引用 所属分类:
C++