打算把DTwisted开放出来
cookoo
2007-01-20
没干嘛,忙着准备读研。。。最近又要重写个项目,还在研究业务模型中。。。
Erlang语言用起来是有点难受,比如简陋的字符串函数,容易出错的断句符号,让人晕菜的出错信息。要说程序员体验还是Ruby好啊。只是Erlang那个分布式框架OTP很强,别的语言就算并发性再强要达到高可用还得重新搞一套类似OTP的东东,印象中只有Sun搞了多年的Jini比较接近。不过高可用也是个myth,我这里的网上银行每天半夜还会定期维护个把小时呢,死不了人的。 |
|
qiezi
2007-01-20
我看了一下Fortress教程,里面的并发部分看起来也很不错嘛,可惜只有一页,更可惜好像3年后才能见得到成品,变数太大。erlang我也没研究过,不过Fortress看起来语法容易接受一些。
Fortress里面有个例子代码,语法我忘记了,大概是: for x in 1#10 a[x] = x + 1 end 这样子吧,它旁边标注了这里是并发的,还有个平行赋值,也是并发的。我怀疑这样子是不是反面性能降低很多哦,除非CPU有8个核以上。 今年以后出现的语言,不把并发做到语言里面去,都没什么竞争力了。。 支持并发可能不是最重要的,如何让用户不自己控制并发,而是把普通代码编译出中间代码,运行时根据配置、负载自动分配任务片,可能才是最重要的。erlang实现得应该也算是比较基础,自动还称不上,不知道这么强悍的语言什么时候才能做出来。 |
|
cookoo
2007-01-20
Fortess是并行计算,面向有成百上千个cpu的超级计算任务。这和高并发还是有区别的,高并发是开尽可能多的线程、进程处理访问;高并行只要求充分利用cpu。
况且这种隐式并行也不是Fortess独创,狗狗的map reduce就是,还有大型机上的向量编程语言听说也是的,矩阵运算全是自动分解分配到各个cpu的。不过能这么简单切蛋糕分着吃又没有锁也不需要协调的常规问题毕竟不多阿。比如上面的for循环里面要是a[x+1] = a[x] + 1这样的,就不容易高效并行咯。 |
|
qiezi
2007-01-21
的确是有很大差异,并行应该能为并发提供些基础设施吧,可能最终还是要依赖于框架实现,erlang不光是门语言,本身也算是个框架了,用其它语言应该也可以实现出一个类似erlang的框架。我在做dtwisted前想的就是这个,把整个逻辑放入reactor驱动循环,包括消息驱动,最终应该也可以做一个类似的东西,当然目前只是想想而已,网络基础库可以用在很多方面。
一些简单的循环做成并行的我怀疑是不是会降低性能呢,除非能在分配任务片时,估算出任务的负担。好像现在的CPU已经可以自动并行执行一些不相依赖的指令流,这技术叫什么名字我就不记得了,P4应该就有。 向量编程语言只是听说没看到过,不知道是虾米东西,也没有大型机可以玩。 |
|
cookoo
2007-01-26
这个可以靠编译器分析出哪些地方可以并行且值得并行,不过实际能做到怎样的效果就难说了。Fortess现在只有一个在JVM上的解释器,离取代科学计算老大Fortran的日子相去甚远。我很怀疑JVM能否胜任科学计算,虽然Java已经足够快了,但是科学计算上就算只比Fortran慢50%,那算2小时就变3个小时,怎么受得了哈哈。
|