Craig 在书中讲到,这些比较总是有些抵牾。作为一个故意思的随访,我们哀求 Bruno Škvorc (SitePoint 的 PHP 开拓者)和 James Hibbard (SitePoint 的一个 JavaScript 开拓者)对每一轮供应评论。
下面是他们详细的意见…
第一轮:开始

Round 1 寻衅是看你用每种措辞多快可以构建一个“Hello World”的页面。这个包括搭建做事器环境所花的韶光。
据 Craig 估计,PHP 赢得这一轮,部分缘故原由是由于这种措辞“观点上更大略”,并且“对付新的开拓者来说不那么吓人”。
Bruno:
PHP 赢得”开始”这一轮纯粹是由于更多的主机支持这种措辞因此开始非常大略。这是拿来就好用了而不须要做额外的事情。如果更多的主机忽略利用 Node 命令行而直接采取文件上传的办法,并且在掌握面板上用一个大略的 “reload app” 键,那么两者将会一样。然而就在屏幕上显示东西的实际语法而言,PHP 是更大略些——特殊是对那些没有编程履历的人而言。
James:
当在本地机器上开拓的时候,我没有在两者之间看到很大的不同。在你的浏览器上运行 PHP 脚本,你须要安装一些做事器软件;要运行 Node 脚本,你须要安装 Node, 并且最好安装一个 web 框架比如express. 然而,正如 Craig 说的, PHP“观点上更大略”.Node 的进入门槛更高。对此没有争议。
第二轮: 帮助和支持
第二轮会考量在两种措辞中,得到帮助和支持的难易程度。PHP赢得了这一轮,紧张由于它涌现的更久一些。
Bruno:
关于这个保持沉默。
James:
我赞许这个说法。Node是一门新技能,以是目前,帮助会少一些。可是当Node越来越成熟的时候,这方面就不是问题了.
第三轮: 语法
第三轮比较了理解两种措辞语法的难易程度。Craig剖断这一轮Node得胜。
Bruno:
我非常不同意这个不雅观点。PHP的语法中的确有一些怪象,个中的很多已经被修复了,在新的版本中,还有很多要被移除。另一方面,JS中也有“this”这个问题~
关于bullet 3 (开拓的时候,利用js你不须要在client端开拓和Server端开拓的时候做切换),我不同意这个不雅观念。做事器环境和客户真个开拓环境已经完备不通了,大脑中的切换还是须要的。总是有些新的语法你不能再浏览器中利用,反之亦然,以是这某种程度上也是措辞的切换。
Bullet 4 (理解 JS 会让你更希望利用它) 这从某种程度上来说我是赞许的。 我在事情中利用 JS 和 PHP多年,利用 JS 的韶光更久,但我对它却喜好甚少——只管那纯粹是个人方向。
James:
我爱 JavaScript。我知道它有它的怪癖,并且我知道一些缘故原由,ECMAScript 2015 将会修正掉一些,并给措辞带来一部分令人激动的新特性。JavaScript 是强有力和灵巧的,并能适应很多不同风格的编程。与 PHP 对照,我享受利用 JavaScript。Node(Node.js)便是个中之一。
第四轮:开拓工具
Round 4:考虑这两种技能所利用的开拓工具,Node 由于有开拓工具 npm,以是略胜一筹。
Bruno:
虽然,开拓者最初受到 npm 的鼓舞,但是现在有 leaps 和 bounds 比 npm 用着更舒畅,而且如果你在电脑上安装了同一个库的两个版本的话,leaps 和 bounds 不会让你的系统崩溃。而且相对付 npm 而言,leaps 和 bounds 许可设计者利用递归思想,而递归思想是如此的主要,以至于当开拓者准备动手建立一个包管理器时,首先考虑的便是这一点。
npm 还有一个致命的缺陷,我把它称为“开拓者协作友好”,npm 不能很好地做到这点,对付 npm 而言只有开拓者本身能够理解自己写的东西。末了,npm 与 Vagrant 不能很好地兼容,这直接的妨碍了您开始自己事情,就更别说 npm 不关注用户们的需求了。npm 有一个 bug 已经存在了很多年,它导致该软件在 windows 上基本不能利用,这可不算是小问题了。当然 PHP 也有很多屈曲的缺点,但是这些缺点并不会与你的系统之间发生问题。
的确,PHP并没有自带编译器,但我不认为它该当这样做。这样的便利不应该由一个包管理器或者说是一个独立的运用来完成。如果将来有一天,有人为 Node 开拓了一个很好的包管理器,把它与现有的编译器更换将会极其困难。让它相对独立,人们可以便于切换。此外,安装它仅须要在终端上输入一行代码,或者下载一个安装程序。
书中提到的编译器影响很小的说法,是显而易见的缺点。自从PHP开拓完成后,编译器就影响了每一位新加入进来的 PHP 开拓者,他们中的一些佼佼者不得不将它添加到现有的流程中。只基于编译器存在之前就有很多 PHP 用户的情由,并不能解释它的浸染较小。事实上,自从有了它,它就产生了巨大的影响。一些人所说的“对社区造成的影响很少“的辞吐根本没有事实依据。
现在,我不能在大多数 PHP 开拓者都希望安装 Node 这个问题上辩论,这是真的事实。可悲的是,很多好的工具都首先基于 Node 下开拓,但我仍旧希望就像 Node-free 开拓环境一样,也可用于开拓BowerPHP。
James:
我很高兴有人加入Node。
我喜好 npm。它易于安装,易于利用,并有数以千计的包可用于险些任何必要。我也喜好这样的事实,npm 可以选择环球的和本地的程序包(比较之下,一些措辞如Ruby,它的标准须要将你的程序包安装在你的 Ruby 版本的阁下)。它的工具也很棒。一些工具,例如 Bower 和 Grunt,在我事情流中都有一个固定的位置,它们成倍地提升了我的事情效率。
其余值得一提的是,npm 已经开拓出了第3版的 β 版。它办理了 Bruno 提到很多问题,例如嵌套node_modules 方法缺点等。
下文引用自entire smackdown:
PHP开拓职员可能希望(或须要)在某些场合安装Node.js。反过来不是真的。
第五轮: 环境
第5轮要说的是技能的可用性和支配情形,以及被哪些平台和生态系统支持。Craig 对付这一点也不十分明确,但是看起来彷佛更倾向于 Node。
Bruno:
Craig 说他曾比较 PHP 和 Node 在 web 方面的上风(常见的 web 开拓问题),然后说到处都用到了 JS。首先,我们来比较 Node.js,而不是 JS 本身,其次,我们比较了两种措辞在什么环境下可以运行。猴子比鱼要厉害,由于鱼太蠢了不能爬树,但是猴子和鱼都会拍浮。那么我们来比较它们做得怎么样吧。
在 web 开拓环境中,PHP 得胜了。这里是一些基于 PHP 的桌面程序工具——是的,大概你不会利用它们,但你一定会用这些基于 PHP 的命令行程序。
James:
我和 Craig 又一次达成同等。一些特性让 Node.js 变得如此盛行(速率,可扩展性,与 JSON 密切相连,低资源占用)使它适宜于许多其他类型的运用程序,例如强有力的物联网设备。我以为,谁会不喜好机器人呢?
Node 使得项目得到了提升,诸如NW.js(一个基于 Chromium 和 Node.js 的运用),它许可你在 HTML 和 JavaScript 上编写本地 APP。这多令人愉快!
第六轮: 整合
第 6 轮我们来看一下数据库和驱动的整合方面,PHP 胜出紧张是由于它的年事比较大。
Bruno:
整合方面实在是平局的,PHP 熟年龄的上风,可以有更多可选项,但是也意味着要照顾很多过期技能,如 mysql 扩展 —— 我们可以升级到 PHP7 来摆脱,但多年来一贯不可用。
James:
我当然赞许这个不雅观点,这虽然看起来模糊其词,而且我很喜好这个例子:“过期的,更受欢迎的技能”。这也很好突了 Node一个很大的优点 —— 它原生支持 JSON。JSON 或许是 web 中最主要的数据传输格式了,同时也是最新的 NoSQL 数据库的通用构造。JavaScript 程序中利用 JSON 是非常随意马虎的,意味着当你利用 Node 事情时,数据可以非常简洁地进行传输,不用进行格式转换了。你可以只利用一种语法(JSON 格式)通报在浏览器、做事器和数据库之间。
第七轮:主机和支配
第七轮会看看将新运用支配到 Web 做事器是否随意马虎,在 Craig 看来,PHP 在这方面明显是赢家
Bruno:
Bruno 再一次保持沉默。
James:
这是 Node 须要努力改进的区域。每个供应 Web 主机的公司,都供应了 PHP 和 MySQL。你想看到输出,只须要建立一个以“.php”为扩展名的文件,在<?和?>间写一些有效的代码,上传,用浏览器访问。但同样的方法不适用于Node。当然,Node 主机有很多选项,但是它们须要更多的设置和命令行办法的访问,这对付初学者来说可不愉快。毫无疑问,PHP 在这一轮赢了对手。
第八轮: 性能
第八轮 紧张关注速率。虽然这项常常依赖于履历以及开拓团队到底多上心,Craig 把稳到 Node 在一些方面的上风。
Bruno:
缺点比比皆是。首先,这篇文章 有关于性能的详细谈论, 个中打消了开拓者履历以及运用类型对性能的影响。如果那篇文章依然无法让你明白抛开高下文谈性能有多愚蠢,那来我来谈谈我的不雅观点:
PHP 正在嵌入一个多线程做事器。这使得完备绕过外部做事器成为可能,但暂时还不推举利用。其余也有一些超快速的的做事器(像 Nginx),他们使得全体启动 PHP、派发要求的过程快到可以忽略。
PHP 的原生异步 (无壅塞 I/O)支持将在 PHP7 中推出,而且多年前 ReactPHP 就实现了类似的模式,因此这一点也毫无意义。
PHP single-request 的生命周期模式是最大的包袱。确实,如果你纯挚的追求速率,但是这条依然可以很随意马虎绕开,不止可以通过 Memcached 和 Craig 说的类似的方法, 而是通过类似;Ajax 的方法。顺便说一下——做事端 JS 运用默认也是 single-request的。其余——这种 single-request 的生命周期也是一种上风,每次要求重新构建运用,避免了很多内请安题,清空垃圾内存,保持苗条干净。你上次利用一个稳定的永劫光运行的的无内存透露的 Javascript 运用是什么时候,不论前端或后端?
关于性能的谈论现在是,而且往后也将是——平局(除非你用的是 Java,那 Java 一定输)
James:
Node 以高性能低延迟的运行时环境而有名,而且它也找到了属于自己的办法来嵌入部分500强公司的代码栈。由于它的无壅塞 I/O 机制以及 Google Chrome V8 引擎技能,现在 Node 已经成为了“快速”以及“可扩展的”的同义词。 现在网上有很多故事,像Node 如何让公司获取更好的性能提升 以及给开拓者供应更高的生产力。我很高兴,这回合 node 胜,但我也理解有人质疑这点。
第九轮: 程序员情结
第九轮来看一看 Craig 以为一样平常程序员们对付 PHP 和 Node 有多少感情,末了他认为,Node 得胜了。
Bruno:
你肯定看错地方了,Craig,PHP 社区令人难以自傲地激情亲切和生动,每年有超过 20 个大会和非常精彩的主题谈论。正是这样才完成了 HHVM 的 PHP7。
其余,我想说的是我很好奇 Node 的开拓者们在利用哪个版本来事情(v0.12.5 已经开始在写了),纵然经由了 6 年的必展。这是不成熟的和危险的(天啊,你利用一个不稳定的技能,你在故意让你的企业挂掉吗),加上一点,它忽略了一些操作系统中的旧 bug,将导致一些主要的开拓职员从这个措辞的生态系统中离开。
一些负面的经历让我不喜好 Node,紧张是由于 npm。未来或许会改变,但现在每次利用 Node 都以为恐怖和失落望。我们都有自己的喜好,但保持客不雅观,选择精确的工具来事情是很主要的。但同样主要的是要许可别人试错,由于大家都是马后炮。以是不要听 Craig 的,不要听 Jim 的,也不要听我的。大胆去试,看看什么可以用,找些让你觉得不错的来利用,终极,那些让你觉得富有成效的便是最好的,而不是哪些只能节省一些加载韶光的。
James:
Node 很火,在 Node 的领域有很多创新,只管激情是不客不雅观的,但很高兴 Node 赢得了这一局。
第十轮:未来
第十轮着眼于两种措辞的前景,基于两种措辞在现阶段看起来都有一个出路强劲的未来,Craig 断定这一轮的结果是平局。
Bruno:
Bruno 不得不赶紧去写多写一些关于 PHP 的文章,还要掩护那让人惊叹的 SitePoint PHP 频道。
James:
James 也等不及要回到他挚爱的 JavaScript 频道,但是他留下了这些不雅观点:
平局对付这一轮来说是公正的。Node 是一颗崛起的明星,但是如果想撼动 PHP 的宝座,他还须要付出巨大的努力。
总的来说,如果锤子是你唯一的工具,那么每个问题看起来都像一颗钉子。Node 并不会完美适配于每一个方案,当然很多时候不该用 Node 也是非常合理的。然而,Node 能做到的,他可以做得非常好。这完备由你自己来做一个明智的决定,去选择一个适宜自己项目的最好的工具。
既然 Bruno 和 James 都揭橥了自己的不雅观点,那么你是怎么看这个问题的呢?
Bruno Skvorc
克罗地亚的程序员Bruno拥有打算机科学,英语和文学三个硕士学位。他是 SitePoint 网站 php 专栏作家,还是 Diffbot.com 的开拓布道者. 他避免像瘟疫一样的遗留代码,挑选项目是只管利用最新技能,他还是一个 treadmill desk enthusiast 和活板玩家,他有一个博客:sometimes blogs.
James Hibbard
我是一个网站开拓者,目前居住在阳光明媚的德国北部。我喜好利用 JavaScript 和 Ruby 编程,你在SitePoint 的 javascript 论坛常常能看到我。不写代码时我喜好跑步。
来云路教室http://yun.lu参加《Web前端就业实训营》,年轻人的第一份事情,年薪20万不是梦!
快加群346392529,变身高薪程序员。