IoLanguage

有点厌倦了ErLang。

这种语言有很多优点,但缺点也是致命的。和C库的交互能力不是很好,主要原因是C库都是基于线程、阻塞线程的。Port不能很好地解决需要多线程来操作的资源,所以ErlyDB宁愿自己实现协议。

相比之下优点不是很突出了。分布式?一直在做分布式系统,积累的库再借鉴点Erlang的优点,已经解决大部分问题了。并发?状态机也不是很难写,就是有点恶心,当然C++有更高的效率,恶心点也值了。鲁棒性?编写服务器程序也有些经验了,虽然自己觉得写得也不怎么样,但稳定性方面不是问题。平滑升级?从架构上消除单点,再做到协议兼容,这方面也不是问题,即便是Erlang写程序也要考虑这两点。无锁什么的,本来就应该避免到处加锁,必须加锁的地方效率是有些损失,C++超强的性能可以弥补,也可以自己实现无锁队列。


我考虑过用C++/D来实现一个简单点的框架,它由两个部件组成,Coroutine和Actor,由LibEvent来做调度器(省事)。Coroutine用来简化状态机类程序的编写,Actor用来解除线程间的耦合。我在C++/D之间犹豫了很久,C++没有Lambda可用,我现在几乎无法忍受。D使用Coroutine可能影响到GC,也不方便做私有堆。

抽空上网查询了一下,竟然有很多C++的Coroutine实现,看了一些,受益匪浅。最终找到一个叫作IoLanguage的东西,好像和我想要的东西很相似,而且是纯OO语言(FP还是让我感觉不爽,为了效率我不能老是重建List),它没有关键字(从介绍上看的),从效率上看(它自己介绍的)它比Python还要好。其它方面没有仔细研究,编译时看到它需要LibEvent,和我的想法也很接近啊。

打算近期就仔细研究一下这个了。测试了一下,竟然有段错误,不过这没什么关系,既然是研究就不用管这些,或许可以帮助测试出BUG并打个补丁什么的。。。

====================
IoLanguage印象

1、它是个Prototype-Based的语言,和JavaScript挺像。
2、语法某些方面和Lisp有些像,和Objective-C也挺像,也有点Ruby的模样。
3、它没有关键字。
4、它支持高并发,用Coroutine实现。
5、它支持同步、异步调用,Actor模式。
6、面向对象、动态类型。

从它的例子看,它在支持高并发、Actor方面,比ErLang更友好,由于是面向对象的,又有Prototype-Based的可扩充的优点,看起来非常好。

主页:
[url]http://www.iolanguage.com[/url]

忍不住贴点代码,一个简单的Web服务器,从它主页上抄过来的:

WebRequest := Object clone do(
handleSocket := method(aSocket,
aSocket streamReadNextChunk
request := aSocket readBuffer betweenSeq("GET ", " HTTP")
f := File with(request)
if(f exists, f streamTo(aSocket), aSocket streamWrite("not found"))
aSocket close
)
)

WebServer := Server clone do(
setPort(8000)
handleSocket := method(aSocket,
WebRequest clone @handleSocket(aSocket)
)
)

WebServer start

这是个支持并发的服务器。不过把上面的@符号去掉就不支持并发了,比erlang的spawn简单吧。

==============================
搞明白了,段错误实际上是没捕捉的异常,这让我感觉很亲切。。


==============================
测试好像效率比较差。


==============================
看了下它的代码,它竟然也使用了libcoroutine,和我之前看中的是同一个东西。

这世界真小。

挺喜欢这个语言的。

==============================
看来还是想错了,它的Socket模块是用LibEvent的,其它部分并没有使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值