Io Language学习:Prototype-Based Language

Io Language是一种Prototype-Based Language,像JavaScript一样(其它类似的语言我不清楚),这也是个常见的词,JavaScript也非常流行,所以不用再详细解释这个概念了,主要说一下它的库扩展能力,玩过JavaScript/Ruby的对这个特性应该是很喜欢了。

举个小例子说一下这种模型的好处。

Io Language的Object有一个wait方法,它的实现就是个死循环,在没有其它任务的情况下会不断地取时间判断有没有超时。它的附加库里面有个Socket,是使用libevent来实现的,由于libevent使用的是基于事件接口,比如select/poll/epoll,原有的wait方法会对它造成影响,所以Socket库覆写了Object的wait方法,改成用libevent来实现,很好地和libevent结合起来。

并不是所有情况下都会自动扩展,它和Ruby/JavaScript一样,需要把该模块加载才能产生效果,在Io Language里面只需要简单地在程序里写一行:

Socket

,它的自动模块加载机制会找到Socket目录并加载。

另一个例子,Io Language的File模块使用的是Posix接口,在有些情况下可能效率不够高,还会造成线程阻塞。AsyncRequest模块(目前只有aio实现)解决了这个问题,它用aio来实现文件的读写操作,只需要简单地加载它(测试也有问题)。当然它没有彻底解决问题,在很多文件系统上,文件IO的瓶颈在open/close上而不是read/write,aio没有解决这个问题。

在我的测试中发现许多BUG ,毕竟还是个非常不成熟的语言,库还没有经过充分测试,效率也是非常非常低,对于现有的很多C库也没有比Erlang做得更好,不过我很喜欢它。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值