我需要创建一个简单的聊天系统,如Facebook聊天和类似Twitter的应用程序。 在这种情况下,最好的并发程序语言是什么?
Erlang,Haskell,Scala还是其他什么?
谢谢^ _ ^
答案 0 :(得分:6)
聊天系统,如Facebook聊天
Facebook聊天是用Erlang编写的,http://www.facebook.com/note.php?note_id=14218138919
和类似推特的应用
什么方面?邮件传递?网络前端?这最终都是消息路由。 Haskell最近被用于几个实时生产交易系统,使用大量多核并发。 http://www.starling-software.com/misc/icfp-2009-cjs.pdf
更相关:规模是多少:您希望同时投放多少用户?
答案 1 :(得分:4)
Erlang是我对此类药物的选择。但是如果你对JavaScript感觉更舒服,我也会查看Node.js。
答案 2 :(得分:4)
使用Scala / Lift完成聊天应用source code。
8分20秒实时,未经编辑,webcast使用Scala / Lift从头开始编写聊天应用。
答案 3 :(得分:2)
这实际上是一个相对容易解决的问题,可以通过任何具有良好线程支持的语言来完成,包括(例如Java,C#等)。该模型非常简单:
这是基本框架,但不是故事的结尾。任何可扩展的聊天系统都将支持内部或外部联合(意味着客户端可以连接到多个服务器),但除非您是Google,Facebook或Twitter,否则您不太可能遇到此问题。
如果你需要某种消息队列/总线进行服务器间通信。
这是你需要像Erlang这样的重型多线程语言,但是,Haskell和其他人当然能够做到这一点。
答案 4 :(得分:2)
F#以备将来使用。
答案 5 :(得分:2)
我建议你看看Akka(www.akkasource.org)
这是一个Scala Actor框架,其中包含很多用于制作可扩展后端应用程序的管道。
支持开箱即用:
演员监督 远程演员 群集成员 彗星JAX-RS(项目大气) HTTP Auth为您的服务 分布式存储引擎支持(Cassandra,MongoDB) +更多
答案 6 :(得分:1)
我会选择erlang,它在启用彗星的应用程序中的效率已得到很好的证明。
使用氮气这样的框架,你可以像Jquery一样轻松地启动彗星请求。
答案 7 :(得分:1)
如果它实际上是一个简单的应用程序(并且不是在非常高的负载下),那么答案就是使用你已经知道具有良好线程的任何语言。 Erlang,Scala,Clojure,Haskell,F#等都在这样的事情上做得非常好 - 但Java和C#也是如此。如果你选择你知道和/或喜欢的任何一个,你会没事的。
如果您以此为借口学习一种新的通用语言,我会选择Scala作为高性能的优秀组合(Erlang不是一般的,尽管它在高效并发方面很棒),高度功能(Java和C#不是),高度可部署(由于在JVM上运行),并且相当熟悉(假设你知道C语言)。
如果您以此为借口来实践容错并发,请使用Erlang。这就是它的设计目标,它做得非常好。