构造Pythonic C module(续1)

这些天持续尝试完成list的方法,实现了完全Pythonic的slice等。过程中,发现将所有的东西都包装成对象还是有很多好处的,至少传递参数后初始操作层面可以做到统一的api及后续的内存自动管理的引用计数。


因此,将思路调整为:

1. 三个基本值对象: int, float,string

    如果不是整型浮点型运算性能差异,我真想把前两个合并了...

2. 两个容器对象: list, map

    我想,作为基本的容器,一个有序集和一个映射集完全可以应付所有数据处理场景,因此取消了之前设想的dict和tree。而且,之前做过粗略的比较,python中一次哈希运算和一个长度为10的列表遍历的时间差不多,那我为什么不采用二叉树来实现映射呢?!O(log2N)的时间复杂度不比一个O(10)的哈希差多少。而且,不采用哈希还可以避免key必须可哈希的限制,这完全可以采用内存地址来唯一的确定一个作为key的对象。

    同时,用二叉树实现的map,由于其本身的树结构,避免了dict的内存浪费,实在是再好不过了!

3. 一个动作对象: agent

    面向对象是个很伟大的思想,但是面向对象并不是语言和处理问题的本质,而只是为了方便程序员或者人类去表述逻辑而存在的。开发过程中,面向对象也不是必需的,其本身也不过是捆绑在一起的变量和函数而已。同时,面向对象思想发展至今,越来越多的程序员都认为接口优于继承,关心对象能干什么比知道对象是什么重要的多。因此,在这里想将erlang和stackless python中的微线程引入进来。对于一个功能函数,包装为一个agent微线程,对外定义惟一的接口,采用消息传递机制来io,对内持续循环来获取命令执行包装起来的函数完成功能。通过这样的封装还可以方便的保证函数执行的原子性和并发。


后续考虑file和socket两个基本对象的功能。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值