zoukankan      html  css  js  c++  java
  • 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简单对象的设计

  • 相关阅读:
    java打包成windows服务(转)
    java程序在windows系统作为服务程序运行(转)
    java String 转 Long 两种方法区别(转)
    css清除浮动clearfix:after的用法详解(转)
    管理界面的头2
    ROS 设置串口USB软连接
    ROS 用 roboware实现节点信息发送和接收
    javascript实现html中关键字查询
    winfrom 中 label 文字随着窗体大小变化
    lattice planner 规划详解
  • 原文地址:https://www.cnblogs.com/BigTall/p/1608489.html
Copyright © 2011-2022 走看看