node.js的前世今生 (誕生記)

任何技術的誕生都不會憑空出現,是有相應的歷史起源 發展 和經歷

下面我們先來看下這位老哥   Node.js 之父 Ryan Dahl

Ryan Dahl 現在是 Google Brain 的一個軟件工程師。他是 Node.js 之父現在他從事深度學習研究項目,工作重點是彩色化和超分辨率等圖像轉換工作。他曾經貢獻過幾個開源項目,包括 HTTP Parse、libuv

 

node的誕生

Ryan Dahl的經歷比較奇特他並非科班出身的開發者,在2004年的時候他還在紐約的羅徹斯特大學數學系讀博士,期間有研究一些分形、分類以及p-adic分析,這些都跟開源和編程沒啥關係

2006年 他有了『世界那麼大,我想去看看』的念頭,做出了退學的決定,開始了一些通過雲的研究來進行他的工作,使用 Ruby on Rails 爲滑雪板公司開發網站是他的正式編程生涯的開始,(後面的事件發展大家可以自己。。。)

直到2008年Chrome 發佈,並且同時發佈了 V8 JavaScript 解釋器。這是一個很棒很厲害的運行環境。 V8 發佈後,Ryan Dahl開始對它進行分析,它看起來迷人而且乾淨,而且很快,突然之間Ryan Dahl想到:JavaScript 是單線程的,而且已經實現了非阻塞 ,但在 web 瀏覽器中人們使用 AJAX 請求和事件時已經實現了非阻塞請求 這有點兒諷刺 

Ryan Dahl認爲JavaScript 結合異步 IO,再結合一些 HTTP服務器事件,將會變成一件非常酷的事情所以在接下來的四年裏一直在做這項工作

2009年的2月,按新的想法他提交了項目的第一行代碼,這個項目的名字最終被定名爲“node”

Ryan Dahl在柏林舉行的JSConf EU會議上發表關於Node.js的演講,之後Node.js逐漸流行於世。

於是Ryan Dahl於2010年加入Joyent(硅谷的創業公司),全職負責Node.js項目的開發。此時Node.js項目進入了它生命歷程裏的第二個階段:從個人項目變成一個公司組織下的項目。

他對node的想法是以非阻塞的方式做所有事情 這樣的話可以解決編程過程中遇到的很多問題,比如我們可以完全可以不需要關線程處理,只使用過程抽象和序列化通信就可以完成我們的工作。而且在過程中,完全異步方式可以處理很多很多的請求 這讓他很堅信這個觀點這種方式是很好的(很久之後當Ryan Dahl 遇到了Go 的時候他改變了他原來的想法  因爲Go擁有合適的綠色線程和易於使用的抽象,由於Go和操作系統的接口都是綠色線程,也是非阻塞 I/O 。但是,他們給用戶的接口是阻塞的,這樣的話對於使用者來說是非常友好  例如處理事件 A,等待一個響應或者一個錯誤;處理事件B,等待一個響應,出錯很明顯知道做什麼遇到什麼。但是在 Node 中,這就變得更加困難,因爲必須跳轉到另一個函數調用多回調操作,雖然node社區的發展對這種方式的處理做的很好的解決方案,但本質是和Go有區別的)

 

V8 

V8 作爲一個 JavaScript 引擎,最初是服役於 Google Chrome 瀏覽器的。它隨着 Chrome 的第一版發佈而發佈以及開源。現在它除了 Chrome 瀏覽器,已經有很多其他的使用者了。諸如 NodeJS、MongoDB 等

V8作用:把 JavaScript 直譯成機器碼,然後運行

與傳統的「編譯-解析-執行」的流程不同,V8 處理 JavaScript,並沒有二進制碼或其他的中間碼 但這中間,往往是一個複雜的過程,它需要處理很多的難題,比如:編譯優化 內存管理 垃圾回收  ( 要理解弄懂v8的在後文探討)

 

綠色線程(Green Thread)

綠色線程(Green Thread)的意思是,程序裏面的線程不會真正映射到操作系統的線程,而是由語言運行平臺自身來調度。

 

總結

本文只是簡單描述了一下node的誕生原由和背景

我的博客原由是想通過node系列的博客讓自己對node有個更深入的理解,多總結自己的理解,從而寫出高質量的代碼,也希望大家相互學習探討

後續博文:

node.js概念和特點

node.js本質核心

node.js運行原理源碼解讀

node.js使用場景及案例分析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章