Crest-大家都来山寨一个GObject吧
感谢园子的两位博友给我们带来了和GObject相关的知识(参看《使用C语言进行面向对象的开发--GObject入门》系列和《玩玩 Vala》),受到他们的启发,决定也来仿造一个类似GObject的系统,用流行的话,就叫“山寨”了。希望bigtall这次也能做一个物美价廉质优轻便的“山寨”产品。
这次行动的目的有如下的几个:
- 揭开所谓“面向对象”编程语言的神秘面纱,带领大家到编程语言的深处旅游一下。
- 试探一下C语言在承载新语言特性方面的水深
- 展示一下C系列语言宏定义(Macro)的强大功效和不足
- 如果万一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简单对象的设计

公众号:老翅寒暑
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2007-11-23 监视oracle的执行sql情况