我应该学习哪种新的语言来实现高性能,高并发性,Web开发?

我对服务器上只有PHP非常有信心。 但是,我有一些额外的时间,我想学习一种新的服务器语言。

我知道如何比较慢的PHP比较新的平衡和线程服务器技术。 我一直在调查:

NodeJS:用JavaScript编写,编译并通过Google的V8版本运行。

RingoJS:用JavaScript编写,运行在Mozilla的Rhino基于Java的引擎下。

erultin:Erlang,不知道多less,但似乎超快: http : //www.ostinelli.net/a-comparison-between-misultin-mochiweb-cowboy-nodejs-and-tornadoweb/

mochiweb:Erlang也是,而且通常被认为是快速的。

龙卷风:基于Python,似乎是最慢的。

我想知道我应该学什么语言。 如果我使用RingoJS / NodeJS,那么我实际上不需要学习任何东西。 但是,我对Erlang或Python一无所知。 我应该考虑学习一个,如果我的目标是能够build立高端networking服务器(软件/网站)?

一般来说,哪一种语言和图书馆在推动高性能网站方面拥有最大的发展前景? 当然,我可以用C ++来完成所有的工作,但是这似乎很费时,而且我认为Python和Erlang更容易。

带线程的ASP.NET似乎很痛苦,所以,我想我会离开它。 那么Twisted(Python)呢? 或者Eventmachine(ruby)?

高性能,高并发性

您将需要一个asynchronouseventloop驱动的HTTP服务器。 这是最重要的事情。 你甚至可以使用PHP&nginx,但是与使用ASP.NET和ASyncHTTPRequests类似

Mochiweb,misultin,Tornade和node.js都满足这一点。

我个人build议node.js,因为它太棒了!

受Mochiweb:

mochiweb似乎缺乏我能看到的文档。 它确实有WebMachine 。

ringoJS:

我不能给你一个在node.js上使用ringojs的好论据。 node.js社区更大,支持更多,更有可能成为稳定的行业领导者。

其他:

我还build议替代asynchronousWeb服务器manos [C#], eventmachine [ruby],并扭曲 [Python]。

misultin:

这是值得一看的,因为Erlang是一种巨大的并发性语言,而且这也有合理的文档。

结论:

Erlang和node.js的优点是服务器和所有的IO本身都是非阻塞的并且是开箱即用的,所以我会考虑这两者。

如果您希望今天以高度并发的语言高度扩展服务器,请select使用Erlang编写的misultin / mochiweb。 Erlang只是在缩放部门获胜。 学习Erlang的好处是你学习了function范例。

如果您希望有一个活跃的增长型社区的asynchronousnetworking服务器,可以selectnode.js进行第三方库的开发。 使用节点的好处是你熟悉JavaScript。

如果我使用RingoJS / NodeJS,那么我实际上不需要学习任何东西。 我应该考虑学习一个,如果我的目标是能够build立高端networking服务器(软件/网站)?

我会说在软件工程中nothing I actually need to learn任何东西。 即使有人从世界前端熟练使用JS,也需要学习大量的东西和技术来build立高质量的服务器端的东西。 如果你select非JS框架,那么你将不得不投入更多的时间来掌握其他语言。 每种语言都可以提供特定的优势,例如语法糖,但我认为你应该坚持一个最适合你的语言。

一般来说,哪一种语言和图书馆在推动高性能网站方面拥有最大的发展前景?

我认为这个问题的答案是非常主观的。 Node.js在实时networking和可扩展的networking程序中逐渐受到欢迎和引人注目,但很难说“一般”是未来所在。

带线程的ASP.NET似乎很痛苦,所以,我想我会离开它。

你可以试着看看manos ,这个就像node.js for .NET世界。

那么Twisted(Python)呢? 或者Eventmachine(ruby)?

我在Python和Ruby中都没有经历过,但我会build议听这 两个播客。

Google的Go是值得考虑的。 这是干净和富有performance力的代码,并发内置和性能可以与C.

这是Go的networking世界你好:

 package main import ( "fmt" "http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } 

编辑:

哈斯克尔也值得一提。 这是一个纯粹的function语言和基准 。 但是像大多数语言一样,运行到同步库很容易。

缺less同步库是node.js最好的部分之一

尝试Python + 金字塔 ,它比龙卷风更强大。 有了这一对,你会写出快速和非常小的代码。