PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

Rails与Node.js/PHP/Python等对比

巴扎黑
巴扎黑 原创
2016-11-11 09:58:58 1144浏览

首先,这不是一个比较贴,语言和框架能比较吗? 

其次,我也没有全部用过 

本文唯一的目的在于提醒自己(还有正在浏览的你)真正所需要关注的究竟是什么 

php 
php是simple but dirty的语言,simple是指学习曲线低,主要是因为有大量的基于php的傻瓜式应用,比如wordpress,discuz之类的,如果你只有一般的博客或论坛需求的话,只要善用google,你不用写哪怕一行代码。但是,php本身simple吗?个人认为不是的,原因就不一一列举了。至于dirty,我更觉得说的是他的设计,语言设计比较糟糕,看着常常的下划线连接的函数名就略窥一二,除了有丰富经验的php程序员,很难有人能写出没有严重漏洞的代码。 

php开发框架推荐:一等:yii,yaf,symfony;二等:zend,cake,ci 

django 
django是基于python的web开发框架,和rails十分的相似,几年前,他比rails好的地方在于python比ruby更“可靠”,所谓可靠,就是更多人用,文档更多,更能通过询问找到答案,但随着近几年ruby的逐渐兴起(大部分靠rails的带动),越来越多的网站使用rails。单论语言设计,python不见得比ruby简洁,一致性也略逊于ruby,可以说python唯一的优势就是有很多serious scientists都在使用它,在科学计算领域占据大半江山,而ruby是日本人造的(ruby借鉴了python)。倘若ruby是与python同时代的的欧美国家诞生的语言,相信现在已经没python什么事儿了。 

rails 
rails是个惊人的web框架,几乎现在所有的主流web框架都能看到rails的影子,rails把ruby的特性用到了极限。rails能应用于一切大中小型应用,超大规模应用不是单靠任意一个脚本语言就能胜任的。rails经过多年的发展已经洗尽铅华,现在正处于“一枝独秀”的状态,可以说没有一款框架的综合能力(易用性,简介性,效率,学习曲线等)能超越rails,nodejs不行,django不行,其他“小众”的语言更不行,相反,rails正处于飞速发展状态,以后超大规模应用的成功案例也会逐一出现。 

nodejs 
nodejs是一款很有前途的web框架,可惜就是晚生了几年,不然现在也是能和rails一较高下,相比php,django和rails,nodejs的开源项目相对较少,大型的成功案例也略少,但其设计和性能也是相当简洁和高效。相信不久的将来也会大放异彩。 

asp,jsp等 
复杂,臃肿,企业级,靠人数堆积的公司,国企,银行,电商,创业公司用这些的话就是自杀,重要部门不用这些的话也是自杀(招的人不行,只能用售后啦)。 

其他 
其他语言就是各有各的用途,只不过业务恰好用到该语言罢了,严格的说不能算是专门搞网络开发的,比如clojure,io等。这里暂时不讨论了。 

总结: 

如果让我再次选择学习路线(只有语言,不包括server,db方面)的话,我会 

了解一下php,不用深入 

了解一下yii,一款php的mvc框架,不必深入 

基本学习ruby 

基本学习rails 

彻底学习ruby 

彻底学习rails 

了解python,django,lisp,clojure,nodejs等 

-------------------------分割线------------------------------ 

这篇文章对rails和nodejs的适用场景描述的非常到位。rails和nodejs是最值得关注的两种后台技术。 
声明:这篇文章绝不是一篇讨论 nodejs 和 ruby on rails 孰优孰略的檄文。它描述的只是我们做决策过程中的一些思考、决策背后的原因。两种框架都非常优秀,都出色的完成了它们的设计初衷,这也是为什么我们部分的模块仍然运行在nodejs上的原因。 

我是nodejs的大粉丝,认为这是一项让人非常兴奋的技术,相信它会变的越来越流行。我对这项技术非常的欣赏——尽管我们最近把targeter app从nodejs迁移到了ruby on rails。 

我们当时使用nodejs开发它的原因很简单。我有一个程序包,能很快的将我们的应用弄上线(我们花了54小时做这个事情),相比起ruby,我更 常使用的是javascript。因为我们的技术架构牵涉到mongodb,我的这些特长只有在nodejs环境里才会有意义。然而,随着应用规模的增 长,我认识到,选择nodejs来实现这个应用是个错误的选择。下面让我来概述一下其中的原因。 

nodejs很适合做那些有大量短生命期请求的应用。对于传统的crud应用,它也很好,但不是非常的理想。在 php,ruby,python语言里都有很成熟、优化的很好的框架来处理这种应用。nodejs里的所有东西都异步执行的理念对于crud应用来说没有 任何效果。其它语言里的流行的框架能提供非常好的缓存技术,你所有的需求都能满足,包括异步执行。 

nodejs是一种非常年轻的技术框架,它的周边程序库都不是很成熟。我说这些并没有任何对那些代码捐赠者冒犯 的意思,他们很优秀,开发出来很多优秀的程序库。然而,大部分程序库需要改进,而nodejs的这种快速成长的环境意味着每一版升级中都带有大量的变化; 当你使用一种前沿技术时,你十分有必要尽快的紧跟最新的版本。这给创业型的企业带来了很多的麻烦。 

另外一个原因是关于测试。nodejs里的测试框架还不错,但跟django或ror平台上的相比还是差一些。对于一个每天都有大量的代码提交、并且在一两天内就要发布的应用来说,程序不能出问题是至关重要的,否则你为此辛苦的努力变得得不偿失。没有人愿意花一天的时间改一些弱智的bug。 

最后一点,我们需要的是一种能缓存一切的东西,并且要尽快的实现。尽管我们的应用在增长,每秒钟有上万次的hits,但绝不会出现很大量的访问请求;这不是一个聊天程序!主程序最多时也就达到1000rps,这样的负载对于ruby on rails和nginx来说算不了什么。 

如果你现在还在读这篇文章,那你已经看到了我所有要说的了,你也许非常坚持的想知道我们的应用什么地方还在使用nodejs。是这样的,我们的应用 由两部分组成。一是界面,用户看到的这部分,二是负责报表管理的部分,以及做日志的功能。后者是nodejs的一个最佳使用场景,存在有大量的短周期的请 求。这部分的动作需要尽快的执行完成,甚至要在我们的数据推送还没有完成之前。这很重要,当请求执行还未结束,浏览器继续等待响应结束,这会影响用户使用 体验。nodejs的异步特性救了我们。数据要么被存入数据库,要么被处理掉,当请求一旦执行完成,浏览器就可以开始做其它重要的事情了。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。