成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

采訪Node.js之父Ryan Dahl

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

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

2017 年 8 月 31 日 Ryan Dahl 做客于英文播客 mappingthejourney,分享了他的個人經歷,開發 Node.js 的過程,對 Node.js 的理解,他在 Google (Brain) 的工作現狀,對學習 ML 的看法等。

[[220099]]

Pramod: 大家好,歡迎來到 mapping the journey。當我們聽到 Node.js 時就會想到 Ryan Dahl。他向我們展示了我們的I/O工作完全錯誤,并教會了我們如何使用純異步編程模型來構建軟件。我們今天的嘉賓就是 Ryan Dahl ,一個黑客、出色的程序員、也是 Node 之父。我們非常榮幸能夠邀請到他,歡迎 Ryan。

Ryan: Hello!很高興到這兒來。

Pramod: Ryan 我們知道您是Node之父,能跟我們聊聊做技術之前的經歷嗎?

Ryan: 當然,我在圣地亞哥 (San Diego) 長大,在我 6 歲的時候,我媽媽買了一臺 Apple 2C ,所以我想我屬于比較早接觸電腦的人。順便說一句,我今年 36 歲。因此,我是伴隨著互聯網長大的。我去了圣地亞哥的社區大學,然后在加州大學圣地亞哥分校攻讀數學,畢業后在羅切斯特大學研究生院攻讀數學博士。

在那里我學習了代數拓撲學,那是一門非常抽象的課程,我當時非常討厭這門課程,因為我感覺它與現實生活離得太遠了,但是很多年后我發現這門課程非常棒。博士期間,我突然發現自己不想當個數學家,于是放棄了這個計劃。然后我買了一張去南美的單程票并在那里呆了一年,在那里我開啟了饑餓學習模式,并且找到一份和一個名叫 Eric 的家伙共同開發一些網站的工作。這就是我編程生涯的開始,使用 Ruby on Rails 為滑雪板公司開發網站。

Pramod:很好!放棄博士學位、到南美旅行并成為一名 Web 開發者。

Ryan:是的,在羅切斯特大學,我習慣于處理非常抽象的問題,然而在網站工作是一個非常具體的過程。但是我嘗試著將這個過程變成一套很棒的數學理論,就像我在研究生院接觸到的那樣。我認為這讓我想到了…我認為,我喜歡 Ruby 是因為它極大的改變了網站開發,我認為,在使用 Ruby 時,你可以很好的表達自己的想法。那在當時非常有趣。而且我認為Rails 給人留下了深刻的印象。它提出了新的結構(也可能這不是新的),但是我認為 Rails 推廣了模型視圖控制器(MVC)結構。我對把這兩件事情結合在一起非常感興趣。

Pramod: 是的,建立網站非常有意思。Ruby 是非常棒的工具。接下來,你到德國成了一名 Web 開發的自由職業者,其中的一個項目就是 Node ,而且我認為你在接下來的六到八個月一直在做這項工作。

Ryan:是的,離開南美之后我跟我的女朋友搬到了德國,因為她是德國人,而且她必須重返校園。在那里我開始參加 Ruby 會議,人們在那里討論模型視圖控制器(MVC)的新案例。如果我發音正確,其中一個家伙叫 Chris Neukirchen,他開發了一個 Rack 的項目對 Web 服務器進行簡單抽象。一個 Web 服務器變成了一個函數接口,你可以從那里獲得一個請求,然后返回一個響應。

結合我為 Engineyard 的 Nginx 模塊做的一些工作,讓我想到如何…讓我后退一步。在 Nginx 中,一切都是異步的。因此,當你為它新建一個模塊時必須非常小心來保證它是非阻塞的。是的,我想 Chris Neukirchen 的 rack 和 Nginx 使用非阻塞 IO 架構 web 服務器的方法,讓我開始思考如何能將這兩件事情結合在一起。

Pramod: 現在,你有了結合 Rack 和 Nginx 的想法。你是如何說服自己用未來 6 個月的時間開發可以在服務器端運行 Javascript 的框架,這能大大提高性能嗎?

Ryan: 一邊是 Rack 的簡單 web服務器界面,一邊是 Nginx 的異步部分,我一直在想這兩個部分。然后2008年Chrome 發布,并且同時發布了 V8 JavaScript 解釋器。它應該不算是解釋器,它是一個很棒的運行環境。 V8 發布后,我開始對它進行分析,它看起來迷人而且干凈,而且很快,突然之間我想到:JavaScript 是單線程的,已經實現了非阻塞。

這有點兒諷刺,但在 web 瀏覽器中人們使用 AJAX 請求和事件時已經實現了非阻塞請求。哦,哇!我認為 JavaScript 結合異步 IO,再結合一些 HTTP服務器事件,將會變成一件非常酷的事情。我對這個想法感到非常興奮,在接下來的四年里一直在做這項工作。

Pramod: 是的,JavaScript 與異步I/O 配合的很好。我相信開發人員都在等待看到一個實現這項功能的框架,我好奇的是,在那段時間里,你有導師或者能夠相互討論的人嗎?還是只有你一個人。

Ryan:只有我自己,我有一些提供建議的程序員朋友,我的意思是,第一步絕對是我在自己的房間里完成的。但后來,我搬到了舊金山,在 Joyent 工作,在那里我遇到很多非常棒的編程專家。是的,在那之后許多人給我指導并且為 Node 貢獻點子。

Pramod:很好,與我們分享一下開發 Node 的心路歷程吧,我知道 Node 從 2009 年開始的,開發經歷了很長時間。

Ryan:我覺得至少對于我自己而言,在我的生活中,沒有比喜歡并且有堅信的想法更好的事情了。并且我有時間坐下來開發 Node 。我認為 Node 是一個等待發生但是還沒做到的想法,別人或許能夠做到。但是突然間我相對失業并且有空閑時間,可以不停的工作幾個月,而這正是開發初步產品所需要的。這很棒而且很有趣。

Pramod:非常好,這太奇妙了。你確實做的非常棒。Node 建立在“純異步”編程模型的基礎上,你是怎么為 Node 想到這個點子的?

Ryan:是的,我認為那是一個非常有趣的問題。現在已經過去好幾年了。從 2012 年或 2013 年開始我沒有再進行 Node 開發了。從這點來看,Node 是一個大項目。因此,是的,當初實現 Node 之后,我到處游說人們使用 Node。或許我們處理 I/O 的方式有錯,或許我們以非阻塞的方式做所有事情將會解決編程過程中遇到的很多問題,比如我們可以完全忘記線程,只使用過程抽象和序列化通信。但是在一個過程中,完全異步方式可以處理很多很多的請求。那時我堅信這個觀點,但是幾年之后,我認為這可能不是編程的最終和全部想法。特別是當 Go 出現的時候。

我認為 Go 很早之前就出現了,但我大約在 2012 年第一次聽說 Go 。他們有一個非常好的運行環境,具有合適的綠色線程和易于使用的抽象。我認為阻塞 I/O(引號中的阻塞I/O),由于Go和操作系統的接口都是綠色線程,我認為那完全是非阻塞 I/O 。

但是,他們給用戶的接口是阻塞的,我認為這是一個更好的編程模型。如果阻塞,我們可以更加輕松的考慮大多數情況需要做的工作。你知道,如果有非常多的后續動作,這樣做是很好的:做 A,等待一個響應或者一個錯誤;做 B,等待一個響應,出錯。在 Node 中,這更加困難,因為必須跳轉到另一個函數調用中。 

Pramod: 是的,我喜歡 Go 的編程模型。使用 goroutines 如此簡單有趣,事實上,我們用它來創建分布式應用。

Ryan: 是的,我認為..對于特定類型的應用,比如說,我們要建一個服務器,我很難想象除了使用 Go 還能使用什么。意思是說,我認為 Node 的非阻塞編程對于沒有線程的 JavaScript 非常好用。我認為很多需要跳轉到多個異步函數來實現的回調問題,現在已經通過 JavaScript 異步特性-異步關鍵字緩解了。

因此,在更新版本的 JavaScript 中,這更容易實現。這就是說,我認為 Node 不是構建大型服務器網站的最佳系統。我會用 Go 構建大型服務器網站,說實話,那是我離開 Node 的原因。我意識到:這不是有史以來最好的服務端系統。

是的,我認為 Node 在客戶端大放異彩,可以實現網站開發周邊的一些腳本,比如打包客戶端 JS 腳本的 Browserify。你可以實現所有客戶端 JS 的服務端處理。然后可以做小型服務器……或許很小的開發服務器,或許是處理實時事務的一些真實服務器。Node 或許有用,或者說它可以是正確選擇。但是如果要建立一個大規模的中心 DNS 服務器,我不會選擇 Node。

[[220100]]

Pramod:這對全世界所有的開發者來說應該是一個很好的選擇。 為應用選擇合適的工具非常重要。 你完全沒有偏向 Node。 在 2009年柏林的 JsConf 上你介紹了 Node.js。 你會對突然獲得的成功和擁簇感到驚訝嗎?

Ryan:是的,我的意思是,我基本上連續四年都處于驚喜之中。因為它發展的非常快,大家非常喜歡它。

Pramod:然后你加入 Joyant、全職開發 Node 并去了 SF ,對嗎?體驗如何?開發人員喜愛它,而你是這一切的核心。

Ryan:這絕對是我一生中,感覺自己處于會議和其他事情中心的體驗。有一次去日本,人們要求我與他們合影,我意識到…我不知道,我很討厭這種感覺。而且每當我在線上回復某件事情時,也將收到 100 條答復。

因此,我感覺自己需要非常小心的選擇用語以及表達自己的想法,因為好像大家都在傾聽,這種感覺很奇怪。而且我不喜歡這種感覺。我的意思是,我是一個程序員,我愿意寫代碼,有時也會在沒有仔細考慮的情況下發表個人觀點。所以,我覺得我不是一個…是的,我不太喜歡這種感覺。

Pramod: 推出 Node 時你只有 29 ?30 歲?但是 Node 卻有如此大的影響力。

Ryan:是的,我的意思是,我絕對是個開發新手。

Pramod:好的,Ryan。原來會同時涌現很多服務器端 JavaScript 項目。Node 并不是唯一一個。你認為Node 的成功源于什么?

Ryan:是的,有一些人嘗試開發服務器端的 JavaScript 。我現在甚至不能說出他們的名字,而且我忘記了他們是誰。

事情是這樣的,他們都使用阻塞I/O ,因為沒有線程,這與 JavaScript 結構一點兒關系都沒有。使用阻塞I/O 理論上無法處理請求。比如,一次處理一個,這永遠都沒用。基于這個原因,還有我喜歡做這件事,讓我能夠坐下來并且開發運行良好的 HTTP 服務器。我有一個 demo 可以…我有一個 HTTP服務器(一個原始 TCP服務器)。并且我使這些服務器運行良好,這樣大家可以坐下來不用花費多大力氣就可以建一個網站。

說實話,創建 web 服務器不是最簡單的事情,我想這些系統中很多是留給社區做的,所以沒有人做。因為沒有什么可以使用的系統。我認為發布一個軟件框架(或者任何軟件)時,有一個 demo 可以讓用戶坐下來立即使用非常重要。這就是 Node 所做的事情之一。人們可以下載并直接使用 web 服務器。

Pramod: 是的,好的 demo、容易下載、安裝和使用,這些會產生很大區別。而且,大家了解 JavaScript ,他們可以在任何時刻開始寫代碼。我開始使用 node 時感覺非常簡單,因為我了解 JavaScript。

Ryan:是的,我感覺我們理所當然地認為在語言之間切換非常容易。 我的意思是,即使你知道另外一種語言,但要做到這一點也會非常困難。 而且很多人對 Javascript 非常熟悉。 為他們提供能夠在其他情況下使用的工具,可以激勵人們。 你突然之間發現可以比以前做得更多。

Pramod:是的,在 2012 年 node 已經有了龐大的開發基礎。那么為什么你要把它交給 Joyent 的 Isaac Schueter?

Ryan:有許多原因。我最主要的原因在于,那時我已經開發 Node 四年了。我已經實現了自己的愿望,我從來不希望 Node 成為一個龐大的 API 。我希望它是個小巧緊湊的內核,人們可以用它構建模塊。

還有一些重要的事情,我希望能夠支持關鍵特性。因此很早就添加了擴展模塊,我們實現了所有的網絡庫,HTTP、UDP、TCP,我們可以訪問所有的文件系統。

然后,一大塊內容(差不多時五個人一年的工作)需要放到 Windows 中并且運行良好。而且我們希望使用 Windows 抽象( IO完成端口)來實現異步IO 。所以,這需要重寫核心庫,最后做出的是 libuv 庫。

是的,但是在某些時候,所有這些都做完了,我們已經發布 Windows 版本了,而且你知道,它也運行良好。我的意思是,這是我本來打算實現的,我很高興能夠有機會實現。當然,之后會有無數的錯誤需要修正,但是……你看,有足夠多的人參與進來。我沒有必要去做這件事情,而且我希望其做些其他事情。再加上 Go 的發布,我認為 Node 不能夠成為服務器的終極解決方案。而且,我發表博客文章時不希望成為關注的中心。

Pramod:很好,是的,有些人不喜歡出名。當你開始開發 Node 的時候,你肯定有一些目標,現在的 Node.js 實現這些目標了嗎?

Ryan:我的意思..成千上萬的人使用 Node (如果不是數百萬人),我認為這肯定超出了我對它的期望,是的,這很酷。

Pramod: Rayan當你完成 Node 的奇妙之旅后,你決定做些什么呢?

Ryan:Node 之后,我搬到…我離開 Joyent 并且停止參與 Node 項目后,我搬到了紐約。花了一些時間在一些項目上。我有許多項目,你知道那時 Instagram 已經發布了,但是它很新而且看起來很簡單,每個人都在說:哇,它是如此簡單,我也可以開發這樣的項目。我也這樣想。因此,我有了一個社交網絡項目;我有一個 C++ 編譯系統項目,還有另一個 HTML 編譯系統項目,與 Browserify 類似,它以一種更聰明方式打包 JavaScript 和 HTML。

是的,我做了一大堆項目,但是沒有一個項目讓我心動。我認為可以推遲其中一些項目,比如我的社交網絡項目,我可以在某些時候回頭處理。是的,我開發了一段時間。然后我開始閱讀關于……我開始了解卷積網絡和如何解決圖像分類,這讓我對機器學習很感興趣,

Pramod:你還是 Google Brain 見習項目的成員,給我們講講體驗吧?

Ryan: 是的,我只在山景城呆了一年。 因此,晚了一步,TensorFlow 兩年前發布了。

與此同時,他們宣布了這個 Google Brain 見習項目,他們邀請 20 個人參與 Google Brain ,Google Brain 是 Google 的一個機器學習研究實驗室。 人們……我認為這個實驗室的觀點是并不一定要學過機器學習,如果你有一定的數學和編程背景,并且對機器學習感興趣,那么請來這里并實現這些新想法。 因為機器學習變化很快,而且這里已經做了大量的工作。

但是現在社區已經把機器學習的范圍縮小到最有用的神經網絡算法了,它可能只需要一些人實現神經網絡,而這個新的 ML 框架就是TensorFlow,這將激發一些有趣的想法。 我在那里花了一年的時間,基本上是編寫模型和模型文件。 我主要從事圖像轉換問題的研究。 所以,你知道,如果你有一些輸入圖像,你想預測一些輸出圖像。 我覺得這個問題很有趣,讓我舉一些例子。

著色的問題。你可以使用黑白照片作為輸入,嘗試預測輸出照片的顏色。這個問題最酷的地方在于有無限的訓練數據。你可以拍攝任何彩色照片并去飽和,然后它就成了輸入照片,對吧?

機器學習的一個問題是需要大量數據,然而對于這類任務,數據將不再是一個問題。而且,最近出現了大量生成模型的工作(輸出圖像的模型),特別是出現了對抗性網絡和像素 CNN,這些模型已經展示了學習自然圖像多樣性的能力,就像真正理解真實圖像是什么、什么不是真實圖像、什么看起來像真實形象。

我的想法是在生成模型中使用這些最新模型,并采取無限的訓練數據,看看能否解決一些圖像轉換問題。 所以,我做了一些超分辨率的工作,也就是提高低分辨率圖片的分辨率。 這也是一個圖像轉換的問題。 現在我已經完成了兩個著色的項目。

Pramod:很好的解釋,Ryan。是的,我認為 TensorFlow 是處理許多機器學習問題的好平臺。我不太了解圖像分類、轉換,但我相信這一定很有趣。你還在繼續做 ML 的工作嗎?

Ryan:是的,我現在還在 Google(作為一個軟件工程師)從事這種類型的工作,研究生成模型,并嘗試幫助研發人員建立下一代的生成系統,下一代的生成模型。

Pramod:生成模型與你之前從事的 node 或 web開發工作使用的 JavaScript 差別是如此之大。

Ryan:是的,我想也是。但是我是數學專業,所以我想我有相當不錯的數學基礎。是的,我認為人們喜歡把別人固定到特定領域,我不想這樣做。我不想成為一個 JavaScript 專家,我不想成為一個機器學習專家,我認為探索可能性非常有趣。令人興奮的是,做以前沒做過,并且能夠以某種方式令人受益的事情。

Pramod:很好,是的,機器學習需要好的數學基礎。在你最近一篇關于樂觀虛無主義的博客中,你說我們有朝一日能夠模仿大腦、開發一個像人類一樣理解和思考的機器,我們離實現這個目標還有多遠?

Ryan:是的,我要對這種說法更謹慎一些…我的意思是,這是我的個人觀點。我們開發的東西遠不及人類的智慧。我的意思是,我們使用的機器學習系統非常簡單,根本不會工作。實際上,我有一篇關于我的見習的文章,我在那篇文章中列舉了開發這些模型的所有困難。我認為不從事這類工作的人們可能會有這樣的想法,你可以采用這類模型然后輸入一些數據,它就能工作了。但事實并非如此,這些模型非常挑剔,而且還沒有被很好的理解,要花費很多個月的時間進行精心調整和試驗,才能得到相似的結果。

所以,我們離它很遠,但是我認為基礎……最近有一些有希望的技術得到了改進,卷積網絡似乎起作用了,而且 propagation 似乎也正在起作用。事實上,這些東西都建立在模型基礎上的,這個神經網絡模型不像大腦一樣工作,但是以大腦的某種方式激發,這是非常誘人的。我們也有 GPU,我們展示了如何在這些方面訓練它和如何通過 GPU 進行分布式訓練。所以,我認為出現了建立更大、更智能的系統的基礎。而且,我個人認為,我是一個無神論者,我相信我們的大腦中除了化學物質和神經元之外再沒有別的東西了。而且我認為我的意識,我們所有的意識都以某種方式都被編碼到這些神經元之間的相互作用中。所以,我不明白我們為什么不能通過足夠的研究和工作來模仿這種行為。當然,現在還遠遠沒達到能夠預測需要多久能夠實現的程度。

Pramod:很棒,你已經看到了這一切,Ryan 你認為未來 20 年技術將在哪些領域發展?

Ryan:我對機器學習和它帶來的可能性感到非常興奮。我認為即使在我們實現真正的人工智能之前,這種技術也非常有用。我的意思是,你使用的任何系統都將從這項技術中受益匪淺,比如佩戴智能眼鏡將會幫助你。有無數的工業過程可以利用這項技術。比如使用計算機視覺的進行分揀回收的回收中心。我的意思是,將有很多很多系統可以從簡單的機器學習系統中受益。而且我們會不斷看到這些系統適用于不同的流程。所以,我認為這將對科技行業產生重大的影響,對人類都將產生很大的影響。

Pramod:是的,機器學習令人興奮。我在山景城看到自動駕駛汽車時非常興奮。有一天我會坐到后面并把控制完全交給汽車。Ryan,謝謝你帶給我們如此出色的 Node 框架,謝謝你參加這次節目。祝你好運,和你聊天的感覺非常棒。

Ryan:是的,很棒,感謝你邀請我。很高興能夠和大家分享這些。

Pramod:謝謝你。這就是所有內容了,聽眾們。我真的非常喜歡與 Ryan 聊天,他謙虛而且受人尊敬。他早些年在科技領域取得了如此大的成就,這是一個非常鼓舞人心的故事。再見,我們兩周以后會踏上另外一個有趣的旅程,Shukriya。 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2021-03-31 10:18:07

Node.jsDeno公司開發

2015-03-10 10:59:18

Node.js開發指南基礎介紹

2013-11-01 09:34:56

Node.js技術

2011-09-08 13:46:14

node.js

2011-11-01 10:30:36

Node.js

2011-09-02 14:47:48

Node

2011-09-09 14:23:13

Node.js

2011-11-10 08:55:00

Node.js

2012-10-24 14:56:30

IBMdw

2021-12-25 22:29:57

Node.js 微任務處理事件循環

2020-05-29 15:33:28

Node.js框架JavaScript

2015-06-23 15:27:53

HproseNode.js

2012-02-03 09:25:39

Node.js

2020-10-26 08:34:13

Node.jsCORS前端

2021-04-06 10:15:29

Node.jsHooks前端

2024-07-08 08:53:52

2021-02-01 15:42:45

Node.jsSQL應用程序

2021-07-09 00:24:10

No.jsNode.js原理

2013-09-03 10:20:10

SlashdotPythonPython之父采訪

2022-08-28 16:30:34

Node.jsDocker指令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线精品一区二区三区 | 黄色三级免费网站 | 九九国产| 91麻豆精品国产91久久久资源速度 | 日韩欧美三级在线 | www国产成人免费观看视频,深夜成人网 | 久久精品一区二区三区四区 | 免费电影av | 国产一区电影 | 91五月婷蜜桃综合 | 国产精品亚洲综合 | 亚洲毛片在线观看 | 国产精品天堂 | h片免费在线观看 | 97精品超碰一区二区三区 | 国产精品久久亚洲7777 | 亚洲精品久久视频 | 日韩av一二三区 | 国产片一区二区三区 | 国产精品精品视频一区二区三区 | 一区二区精品 | 精品一二区 | 一级看片免费视频囗交动图 | 91精品国产91久久久久久吃药 | www.99热.com| 国产真实精品久久二三区 | 成人特区 | 亚洲福利 | 91一区二区三区在线观看 | 久久精品免费观看 | 成人在线影视 | 中文字幕综合在线 | 久草网址 | 欧美在线综合 | 国产美女自拍视频 | 激情三区| 久久成人一区 | 日韩精品在线视频免费观看 | 精品少妇一区二区三区日产乱码 | 欧美精品网| 欧美一级久久 |