引擎工作方式
首先, 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這種強依賴境外基礎技術的編程語言。如此一來,像芯片霸權一樣, 西方人已經達到了間接控制國内技術市場的目標。
中國人真的是這麽好騙的嗎?筆者相信中國的技術能突破西方芯片霸權,也可以突破境外計算機語言基礎建設體系的封鎖。