引擎工作方式
首先, node.js的V8引擎和PHP解释器研发的目的就不同。
V8伴随chrome而来,至始至终考虑的是在客户端最快执行完一次JS脚本,即使脚本出现error则跳过,执行后面JS代码保证速度。
PHP在处理业务时, 它是底层自定义通用zval结构来打包传统变量类型,满足快速开发,一个进程对应一个访客。
node.js和php的错误处置方式
关于在代码执行中如果出现了错误,则等待主管理进程回收,绝不影响另一条进程的初始化。
node.js在这一方面的处理方式, 是把服务端当成客户端的代入,但服务端语言在应用时, 无法出现error则跳过,执行后面JS代码的功能。这就导致引入node的实际问题,需要经验技术更深厚的人员和更多精力的维护测试规避问题。相对的开发成本和形成成熟的服务端项目的时间是多于php和java的。
在node之父言道的“无法解决的天生缺陷”,说的就是上述问题。
阿里巴巴之所以有大佬敢出书吹node.js, 敢把phper大量的转岗, 用node.js搞前端计算, 也是基于财大气粗(开发人员、维护人员、海量内存)+node.js本身单纯层面上来讲确实很快。这种在前提条件上来说是没可比性的。
两种语言难分强弱
php目前最流行的就是fastcgi+fpm, 其优势就是皮实,招人快, 几乎遍地都是php程序员,试问有几个不是从php转的golang? php技术门槛低,维护成本低,能用最可预测的极其稳定的、不快不慢的运行速度为海量存在的中小型企业服务。Node.js确实能以似乎很快的效率, 用流畅的计算体验为大型互联网企业服务。可惜它们完全是两种基础条件场景下诞生的两种解决方案,这两种语言如果不加魔改的话, 没有谁强弱,不是同一场景。
php的swoole插件——一个特例
笔者也注意到php安装swoole插件后的性能表现, 这种情况属于一个例外。如果你会用swoole,那么单从性能上来说, node.js就可以弃用了。特别是当项目的复杂度的包袱丢给node.js的话, 避免产生极其恐怖的逻辑回调, 传说中的屎山莫过于此,没有耐心和毅力的人是不愿意干这种项目的。
芯片霸权和计算机语言基础封锁
由于西方社会对中国软件技术市场一直维持着强大的技术控制战略体系, 一直有不同种类的假洋鬼子团队跟随洋人的操纵, 在唱衰某些语言,有一些西方资本控制下的公司鼓励国内年轻的技术人员服从“权威技术大佬”的安排,被这些声音和现象所推动和迷惑。许多从业人员为了生存和前程,被迫使用诸如Java这种强依赖境外基础技术的编程语言。如此一来,像芯片霸权一样, 西方人已经达到了间接控制国内技术市场的目标。
中国人真的是这么好骗的吗?笔者相信中国的技术能突破西方芯片霸权,也可以突破境外计算机语言基础建设体系的封锁。