Crest-大家都来山寨一个GObject吧

感谢园子的两位博友给我们带来了和GObject相关的知识(参看《使用C语言进行面向对象的开发--GObject入门》系列和《玩玩 Vala》),受到他们的启发,决定也来仿造一个类似GObject的系统,用流行的话,就叫“山寨”了。希望bigtall这次也能做一个物美价廉质优轻便的“山寨”产品。

这次行动的目的有如下的几个:

  1. 揭开所谓“面向对象”编程语言的神秘面纱,带领大家到编程语言的深处旅游一下。
  2. 试探一下C语言在承载新语言特性方面的水深
  3. 展示一下C系列语言宏定义(Macro)的强大功效和不足
  4. 如果万一bigtall设计的新特性比原来的GObject要好些,说不定也能有些用场

首先bigtall要给我的“山寨”特性起一个合适的名字。嗯,我觉得“山寨”这个名字其实还是不错的,不过要翻译成英文可就不容易了,山寨==山顶别墅?首先看山顶,有解释说knap=the crest of a hill,看到crest比较顺眼,看看意思:“冠状物,(头盔上的)羽饰,(尤指山的)顶部”。不错!就是Crest了。

其次,我们要列出我们的需求,也就是要实现的“面向对象”特性的清单,不过bigtall也不知道到底我们能实现几个,我们“骑驴看唱本--走着瞧”吧。

  • 类(含duck type)
  • 接口
  • 类和接口的继承(包括类的单继承、类的多继承,接口的实现和继承,prototype继承)
  • 成员函数调用(包括普通成员、虚函数、纯虚函数)
  • 属性
  • 类型的检查和转换
  • 对象的创建和销毁(构造函数、析构函数)
  • 对象的内存分配和释放机制(new、delete)
  • 消息message、事件event、信号signal机制
  • 闭包Closure
  • 反射Reflection
  • 调试支持
  • 多线程

因为bigtall对函数式语言不熟悉,所以如果还有其他什么比较好玩的特性,请大家踊跃提供,因为我们这是属于研究探讨形式,所以也不必拘泥于能否最终实现。而且这个文章应该会写一个系列,bigtall希望展现一个完整的“设计、妥协、平衡”的完整过程给大家。

在进入正题之前,bigtall还想多说两句。在使用C语言的时候,我们一定要注意它的特点之一就是“没有异常处理”(setjump也许算)。这个特点带来的欢笑就是任何一个函数的出口都是设计好的,不会有异常Exception突然throw来中断代码的运行,简单;坏处就是判断出口代码会烦得要人命。

下一篇: Crest简单对象的设计

posted on 2009-11-23 09:53  老翅寒暑  阅读(1986)  评论(2编辑  收藏  举报

导航