注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

太阳神上的博客

青青子衿,悠悠我心,但为君故,沉吟至今。

 
 
 

日志

 
 
 
 

Tenshi中关于数据结构部分的设计  

2008-02-06 16:35:18|  分类: 程序设计创意 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  在一个脚本语言中,什么动态数组啦,哈希表啦等结构可以说是必须的,而标准C中又没有提供相应的库,导致这个问题总是困扰着我。
  最初的时候,我使用的是C++来开发,所以有STL可用,在C里,就没有了这个便利。于是有两条路来选择,一是使用第三方库,第二便是自己来写。我在选择的途中有不少反复。
  首先我在SourceForge上找到了一个叫CTL的东西,名字很吓人,叫C Template Library,其实就是用宏来实现C++中的模板,但是里面只有一些最简单的结构,没有映射这类的东西,那怎么办呢?我后来专门搜了一番,有一个younglib,是国人写的,里面的库比较丰富,里面还有字符串结构。能用的地方都比较好用,但是也有一些严重的问题。那个哈希表至今是如何插入键值对我也不大清楚,它的例程里也没有相应的说明,此外一个类型的初始化函数参数太多,而它的成员往往还带有一些m_的前辍,这一点我也很不喜欢,不过其源代码是开源的,因此可以用来做参考。
  要想找一个较为通用的库,我想了想,还是找到了著名的glib,这个库更新很快,版本已到2.15,但是主版本号一直还是2,这个库的风格我很喜欢,命名很有规律,源代码也很好,它的构造很精妙,上次我在看它的GArray的实现里就发现了其用C语言来实现数据隐藏的方法,很好。我从中尝到了很多东西,这个东西在Linux里应用很广泛,它同时也是GTK的基础,GNU的主打工程之一。
  我用这个库把Tenshi完成得差不多了,可是这个程序在Windows上运行时,需要好几个动态库,这个一是很麻烦的地方,我想保持我的程序尽量小巧,Lua是最好的榜样,如果一两个动态库还好说,四五个动态库就太臃肿了。而且那个glib的哈希表不能使用栈空间的数据作为键值,一定得是静态空间或是堆空间。这样一来也不是很好用。
  于是我想还是除掉glib,自己手写数据结构。这个过程很容易产生问题,不过我花了一些时间和精力终于弄好了。但除去glib的代码很多事情都不能做了。而不久后我开始没时间了,于是Tenshi至今连个半成品都不是。
  这样,从STL->CTL->YoungLib->Glib->自己手动写,转了好几次,我还是决定自己造轮子,这样一则更熟悉数据结构,少了一些黑箱,二则解释器的技术含量也就更高了。
  评论这张
 
阅读(72)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017