您的位置:首頁>正文

Node也許不是構建大型服務的最佳選擇——Node之父Ryan Dahl訪談錄

Ryan Dahl 是 Google Brain 的軟體工程師, Node.js 的創始人。 目前他正專注於深度學習研究專案, 目前的關注重點主要是圖像轉換。 他為幾個廣為使用的開源項目做出了巨大貢獻, 其中包括 HTTP Parser, libuv。

Pramod:你好, 這裡是 Ryan Dahl, 他讓我們領會使用同步 IO 是不正確的姿勢, 並教會我們如何使用純非同步程式設計模型來構建軟體, Ryan 也是 Node 的創始人。 很高興 Ryan 接受我們的採訪。

Ryan:你好! 很高興來這裡。

Pramod: 您作為 Node 的創造者而知名, 可以告訴我們你之前的技術經歷嗎?

Ryan:當然可以。 我在聖地牙哥長大, 今年 36 歲, 當我六歲的時候, 媽媽拿到了一台蘋果 2C, 所以我很早就接觸電腦了。

隨著互聯網的出現, 我的時代就來了。 我去了聖地牙哥的社區學院, 然後去了 UCSD, 在那裡我學習數學。 然後我去了羅切斯特大學的數學研究生院。 在那裡, 我研究代數拓撲, 這是一個非常抽象的主題。 畢業後, 我開始攻讀博士學位, 隨後我意識到自己並不想成為數學科學家, 於是我就退學去了南美, 找到一份做網站的工作。 這就是我程式設計生涯的開始, 在一個滑雪板公司做 Ruby on Rails 程式開發。

Pramod:退出數學博士攻讀去南美做 Web 開發?這個經歷聽起來非常有意思!

Ryan:是的。 我的意思是你習慣於處理非常抽象的問題, 而做網站是一個非常具體的過程。 但是我真的試圖把它變成一個美麗的數學理論, 就像我在研究生學習過程中一樣。 我真的很喜歡 Ruby,

你可以在 Ruby 中更清楚地表達你的想法。 我認為 Rails 真的很有趣。 它給了一個新的結構, 雖然可能不是原創的, 我認為 Rails 普及了 MVC 結構。 Ruby 能夠清楚的表達我的想法和 MVC 這兩件事結合在一起, 對我來說真的很有趣。

Pramod:構建 Web 應用程式是非常有意思的事情。 而 Ruby 是一個完美的工具。 接下來, 您繼續在德國擔任自由職業的 Web 開發人員。 您工作的其中一個專案是 Node, 我想那時候接下來六到八個月內都在忙這個?

Ryan:對。 離開南美以後, 我和女朋友一起搬到了德國, 因為她是德國人, 不得不回到大學繼續學業。 我開始去參加那裡的 Ruby 會議, 人們經常會討論 Rails。 其中有個人叫 Chris Neukirchen。 他開發了一個名為 Rack 的專案, 這是 Web 伺服器的簡化抽象。 它是把一個 Web 伺服器變成單一函數介面,

你發起一個請求, 然後得到一個回應。 結合我在 Nginx Module 上做的一些工作, 這讓我想起過去。 在 Nginx 中一切都是非同步的。 因此當你為其構建模組時, 必須非常小心地避免阻塞。 我認為 Chris Neukirchen 的腳手架加上 Nginx 的非阻塞 IO, 使我開始思考如何將這兩個問題結合起來。

Pramod:現在你有結合 Rack 和 Nginx 的想法了。 你是怎麼說服自己, 花半年時間做出可以在伺服器端運行的 JavaScript, 這可能會很大程度提高性能?

Ryan:那麼這兩個簡單的 Web 伺服器介面就是 Rack, 而這個非同步部分是 Nginx, 我一直在思考這一問題。 Chrome 於 2008 年 12 月發佈。 隨之而來的是 V8 JavaScript 解譯器。 這是一個很好的運行時。 所以, 當 V8 出來的時候, 我嘗試了一下, 它看起來真的很有意思。 JavaScript 實際上是單執行緒的, 每個操作都是非阻塞的。

人們使用 AJAX 請求和內容時, 就已經在執行非阻塞請求了。 我想:我認為 JavaScript 加非同步 IO 加上一些 HTTP 伺服器實際上是一件很酷的事情。 而且我對這個想法感到非常興奮, 在接下來的四年裡, 我一直堅持不懈。

Pramod:是的 JavaScript 加非同步 I / O 工作得非常好。 我相信開發商正在期待看到一個這樣做的框架。 在這段時間裡, 你曾經諮詢過別人嗎?

Ryan:基本上只是我。 有些有程式設計經驗的人給了建議。 後來, 我最後搬到了三藩市, 在 Joyent 工作, 並遇到了很多很棒的專業人士。 很多人的思想彙聚而成日後的的 Node。

Pramod:自從你在 2009 年左右創建了 Node 之後, 我知道 Ryan 這個名字就已經很久了。

Ryan:我覺得至少對我自己來說, 在我的生活中, 沒有比這更偉大的時刻了, 真的有時間坐下來好好地工作。

我認為 Node 是一個等著發生的想法, 如果我沒有做, 別人會有。 但碰巧的是, 我失業了有一些閒置時間, 可以連續工作幾個月。

Pramod:太好了這太妙了。 你做得很好, Node 是建立在“純非同步”程式設計模型的基礎上。 這個想法如何產生的?

Ryan:是的, 我認為這是一個非常有趣的問題。 現在已經好幾年了, 而且自 2012 年或 2013 年以來, 我還沒為 Node 工作過。 當然, Node 已經是一個很大的專案了。 所以當它剛出現的時候, 我試圖說服人們以非阻塞的方式完成一切工作, 我們將解決很多程式設計難題。 也許我們可以完全忘記執行緒, 只使用進程和序列化通信。 但是在單個進程中, 我們可以通過完全非同步處理許多請求。 當時我非常堅持這個想法, 但是在過去的幾年裡, 我認為這可能不是最終目的。特別是當 Go 出來的時候。當我第一次開始聽到 Go 的時候,那是 2012 年左右, Go 有一個非常漂亮的運行時,它有 goroutine, goroutine 是真的很容易使用抽象。程式師以為在使用阻塞 IO,而實際上是在執行非阻塞 IO。

而 Go 向使用者提供的介面是阻塞的,我認為這是一個更好的程式設計模型。如果阻塞調用介面,你可以在很多情況下思考你在做什麼。如果你有一連串的行動,可以說:做 A,等待回應,也許返回錯誤。做事 B,等待回應,或者出錯。在 Node 中,這更困難,因為你必須跳轉到另一個函式呼叫。

Pramod:是的,我喜歡 Go 的程式設計模式。使用 goroutines 是非常容易和有趣的。事實上,我們正在工作中使用 Go 構建分散式應用程式。

Ryan:是的,我認為這是某種類型的應用程式,如果你正在構建伺服器端程式,我無法想像使用 Go 以外的任何系統。我認為 Node 的非阻塞範式非常適用於沒有執行緒的 JavaScript。而且我認為,回檔有很多問題,您必須跳入許多匿名函數才能完成工作。對使用 async 關鍵字,非同步功能的現階段 JavaScript 來說,這個問題已經緩解很多了。因此一些較新版本的 JavaScript 使得完成工作更容易。我認為 Node 不是構建龐大伺服器網路的最佳系統,我一定會用 Go 去做,這基本上是我離開 Node 的原因。實際上, Node 不是最好的伺服器端系統。

我認為讓 Node 真正發光的是用戶端。例如,在建立網站時做一些腳本,捆綁用戶端的 JavaScript。你可以在用戶端和伺服器端使用同樣的語言。對一些比較小的伺服器功能來說, Node 可能是正確的選擇。但是如果你正在構建一個大規模分散式的 DNS 伺服器,我不會選擇 Node。

Pramod:這應該是全世界所有開發人員的好消息。選擇正確的應用工具非常重要。 我們對 Node 沒有任何偏見。您在 JsConf 2009 Berlin 中介紹了 Node.js。你驚訝於它突然收到的成功和牽引力嗎?

Ryan:是的。我四年來基本上處於驚喜狀態。因為它增長非常快,人們非常喜歡它。

Pramod:你加入 Joyant 之後,為 Node 工作,你搬到了 SF 嗎?經驗怎麼樣?開發者很喜歡 Node,你是 Node 的中心。

Ryan:這是一生只有一次的經歷,我感覺到我是這一切的中心。有一次,我去了日本,人們要求和我拍照,我覺得有點奇怪。在網上,每當我評論一些東西,我會得到很多人回應。所以,我發現我不得不非常仔細地選擇我的言論,以及我如何表達自己,因為似乎人們真的在聽。而我也不喜歡這樣。我是一個程式師,我僅僅想寫代碼而已,有時分享我的意見,大家不必太在意。

Pramod:我記得你是在 29 或者 30 年紀時候就創造 Node,而 Node 造成如此巨大的影響。

Ryan:是的。我在那時候還是一個新手。

Pramod:好的 Ryan,當時有很多伺服器端的 JavaScript 專案。 Node 不是唯一的。你對 Node 的成功歸因於什麼?

Ryan:對。當時有幾個人都在嘗試讓 JS 運行在伺服器端。我完全忘記了他們是什麼。問題在於他們都使用阻塞 I / O,然而 JS 根本沒有執行緒。因此,如果您正在使用阻塞 I / O,您根本無法提供請求。如果一次只能提供一件事情,那麼 Node 永遠不會成功的。我希望使得 HTTP 伺服器運行的更加良好。而且我把這些事情做得很好,讓人們可以很快的建立網站。老實說,構建 Web 伺服器並不是簡單的事情。我認為重要的是,當你發佈一個軟體框架,或者任何種類的軟體,需要讓人們可以坐下來立即使用。這是 Node 所做的事情之一,就是人們可以立即下載並使用 Web 伺服器。

Pramod:如果人們可以輕鬆下載,安裝和使用它,會有很大的不同。此外,人們都知道 JavaScript,他們可以隨時開始編碼。

Ryan:是的。我們認為在語言之間切換是很容易的事情。我的意思是,即使你會用另一種語言,切換語言也是非常困難的。還有很多人非常熟悉 JavaScript。並且給他們這些工具,以便能夠在其他情況下使用它激發人們。你突然能夠做到比以前能夠做的更多的事情。

Pramod:是的在 2012 年的 Node 已經有一個巨大的開發者基礎。你為什麼離開,把 Node 的控制權轉轉交給 Joyent 的 Isaac Schlueter?

Ryan:我認為有兩個原因讓我做出如此決定。我已經為 Node 工作了四年。已經達到了我想要的地步。我從來不想讓 Node 成為一個非常大的 API。我想讓它成為一種小而緊湊的核心,人們可以在其上構建模組。還有幾個關鍵的特性,在早期添加了擴展模組,我們已經得到了所有的網路庫, HTTP, UDP, TCP,我們可以訪問所有的檔案系統。然後把它移植到 Windows,而且我們想使用 Windows 抽象來進行非同步 IO,即是用 Windows 的 IOCP 介面。這需要重寫核心庫,其結果是編寫了 libuv 庫。在那個時候,所有這一切都已經完成了,我們已經在 Windows 上發佈了。雖然接下來有很多 BUG 需要修復,但已經有不少人參與其中。而我想去做別的事情,加上 Go 已經出來的事實,我看到 Node 並非伺服器端的終極解決方案。當我發表博客時,也不想成為關注的焦點。

Pramod:確實有些人不喜歡成為眾人注目的焦點。當您開始在 Node 上工作時,您絕對有一些目標。今天的 Node 是否達到你的期望呢?

Ryan: Node 被這幾十萬的用戶廣泛使用,我覺得這絕對超出了我的預期。

Pramod:Ryan 在你與 Node 的精彩旅程之後,你決定從事什麼工作?

Ryan:在 Node 之後,我搬到了紐約,花了一些時間來完成自己的專案。當時 Instagram 已經出來,我也忍不住想做同樣的事情。我有一個社交網路專案,還有有一個 C++ 的構建系統專案,甚至有另一個 HTML 的構建系統專案。我有一堆專案,其中沒有一個是在我心目中淘汰的。我會在某個時候回到這個項目。我這樣做了一段時間。然後我我開始聽到卷積網路,圖像分類,這讓我對機器學習真的很感興趣。

Pramod:你也是 Google Brain 的 Residency 計畫的一部分,裡面的經歷怎麼樣?

Ryan:是的。我剛剛在山景城度過了一年。回過頭來, TensorFlow 已經在兩年前發佈了。與此同時,他們宣佈了 Google Brain Residency 計畫,邀請了 20 人來到 Google Brain。我認為這個有想法的並不一定是真正懂機器學習的人,而是在數學和程式設計方面有一些背景,並且對機器學習感興趣,喜歡這些新想法。因為機器學習正在快速變化,而且還有大量的工作已經完成,現在縮小的神經網路成為機器學習中最有用的演算法,加上 TensorFlow,將產生一些有趣的想法。

我花了一年的時間,編寫了基本模型,並寫了關於這些模型的論文。我主要從事圖像轉換問題。如果你有一些輸入圖像,你想得到一些輸出圖像。例如,您可以將黑白照片作為輸入,嘗試將照片的顏色預測為輸出。這個問題最酷的地方是有無限的訓練資料。你可以拍任何彩色照片,然後把它的飽和度調低,就是你的輸入圖像。機器學習的一個問題就是需要大量的資料,而使用這些方式,這個問題就不是問題了。最近也有很多關於生成模型的工作,也就是輸出圖像的模型。它們已經表現出了學習自然圖像多樣性的能力,能夠真正理解什麼是真實圖像,什麼不是真實圖像,什麼看起來像真實圖像。我的想法是把這個最近的工作應用在生成模型中,並採取這個無限的訓練資料,看看是否可以做一些圖像轉換問題。因此,我做了一些關於超解析度的工作(轉換低解析度圖像到高解析度)。這也是一個圖像到圖像的轉換問題。

Pramod:我已經看到, TensorFlow 是許多機器學習問題的一個很好的平臺。圖像分類和轉換,我相信這很有趣。你是否繼續專注於 ML?

Ryan:對。我還是在谷歌,作為一名軟體工程師,處理同樣的問題。研究生成模型,並試圖説明研究人員構建下一代系統和下一代模型。

Pramod:生成模型與之前的 JavaScript, Node 或 Web 開發工作有很大的不同?

Ryan:我想是這樣的。我想我有相當不錯的數學知識基礎。我不想成為一個隻做 JavaScript 的人,我也不想只成為一個機器學習研究者。對我來說探索什麼是可能的非常有趣。令人興奮的是建立一些以前從未做過的新事物,它可能在某種程度上造福人類。

Pramod:很高興知道機器學習需要一個很好的數學背景,在最近的博客關於 Optimistic Nihilism 的話題,你說我們有可能有一天會模仿大腦,並建立一個像人類一樣理解和思考的機器,我們距離這個目標還有多遠?

Ryan:我必須對一些預言有點小心。我們無法接近人類智慧。我們正在使用的機器學習系統非常簡單,它基本還不工作。事實上,我有一篇博客文章,其中列舉了開發這些模型的所有困難。我認為那些不在這個領域工作的人有這樣的想法:你可以接受這個模型並通過它得到一些資料。但事實並非如此。這些東西都是非常挑剔的,不是很好理解的,它需要很長時間的精心調整和實驗才能得到結果。

我認為最近確實出現了一些有希望的技術,也就是說卷積網路似乎起作用了。事實上,這些東西是建立在一個模型的基礎上的,這種神經網路模型不是真正的大腦,但是它是由大腦激發出來的,這是非常誘人的。我們有 GPU,我們展示了如何在這些 GPU 上進行訓練,並在一定程度上分配載入在 GPU 上的訓練。因此,我認為建立更大、更智慧的系統的基礎正在發生。就我個人而言,我是一個無神論者,我相信除了化學物質和大腦中的神經元外,我腦子裡再也沒有別的東西了。我們的意識是編碼,但是我們還不知如何在神經元之間的相互作用。我不知道哪一天,我們有足夠的研究和工作在這個領域可以效仿那種行為。這太遠了,無法預測會有多長時間。

Pramod:你想在未來 20 年看到什麼新科技?

Ryan:我對機器學習和它帶來的可能性感到非常興奮。我認為這種技術有很多應用。基本上,任何一個可以説明你的系統,都將從這項技術中獲益匪淺。有不可數的工業流程可以從這種事情中受益。有很多很多系統可以從簡單的機器學習系統中受益。而且我認為我們將越來越多地看到這些系統應用於不同的領域。所以我認為這會大大影響科技界。

Pramod:是機器學習是非常令人興奮的。當我在山景城看到自動駕駛車時,我感到非常興奮。謝謝 Ryan,為我們帶來了漂亮的 Node,感謝您的參與訪談。也祝你未來的專案成功。

Ryan:是的,它非常酷,感謝邀請我出席訪談。

Pramod:謝謝。我真的很喜歡和 Ryan 聊天,一個非常謙遜及厲害的人物,在非常年輕時候就在技術上取得了很大的成就,這樣一個鼓舞人心的故事。

英文原文:https://www.mappingthejourney.com/single-post/2017/08/31/episode-8-interview-with-ryan-dahl-creator-of-nodejs/

本文作者 Pramod HS,由 Jesse 翻譯,轉載譯文請注明出處,技術原創及架構實踐文章,歡迎通過公眾號功能表「聯繫我們」進行投稿。

我認為這可能不是最終目的。特別是當 Go 出來的時候。當我第一次開始聽到 Go 的時候,那是 2012 年左右, Go 有一個非常漂亮的運行時,它有 goroutine, goroutine 是真的很容易使用抽象。程式師以為在使用阻塞 IO,而實際上是在執行非阻塞 IO。

而 Go 向使用者提供的介面是阻塞的,我認為這是一個更好的程式設計模型。如果阻塞調用介面,你可以在很多情況下思考你在做什麼。如果你有一連串的行動,可以說:做 A,等待回應,也許返回錯誤。做事 B,等待回應,或者出錯。在 Node 中,這更困難,因為你必須跳轉到另一個函式呼叫。

Pramod:是的,我喜歡 Go 的程式設計模式。使用 goroutines 是非常容易和有趣的。事實上,我們正在工作中使用 Go 構建分散式應用程式。

Ryan:是的,我認為這是某種類型的應用程式,如果你正在構建伺服器端程式,我無法想像使用 Go 以外的任何系統。我認為 Node 的非阻塞範式非常適用於沒有執行緒的 JavaScript。而且我認為,回檔有很多問題,您必須跳入許多匿名函數才能完成工作。對使用 async 關鍵字,非同步功能的現階段 JavaScript 來說,這個問題已經緩解很多了。因此一些較新版本的 JavaScript 使得完成工作更容易。我認為 Node 不是構建龐大伺服器網路的最佳系統,我一定會用 Go 去做,這基本上是我離開 Node 的原因。實際上, Node 不是最好的伺服器端系統。

我認為讓 Node 真正發光的是用戶端。例如,在建立網站時做一些腳本,捆綁用戶端的 JavaScript。你可以在用戶端和伺服器端使用同樣的語言。對一些比較小的伺服器功能來說, Node 可能是正確的選擇。但是如果你正在構建一個大規模分散式的 DNS 伺服器,我不會選擇 Node。

Pramod:這應該是全世界所有開發人員的好消息。選擇正確的應用工具非常重要。 我們對 Node 沒有任何偏見。您在 JsConf 2009 Berlin 中介紹了 Node.js。你驚訝於它突然收到的成功和牽引力嗎?

Ryan:是的。我四年來基本上處於驚喜狀態。因為它增長非常快,人們非常喜歡它。

Pramod:你加入 Joyant 之後,為 Node 工作,你搬到了 SF 嗎?經驗怎麼樣?開發者很喜歡 Node,你是 Node 的中心。

Ryan:這是一生只有一次的經歷,我感覺到我是這一切的中心。有一次,我去了日本,人們要求和我拍照,我覺得有點奇怪。在網上,每當我評論一些東西,我會得到很多人回應。所以,我發現我不得不非常仔細地選擇我的言論,以及我如何表達自己,因為似乎人們真的在聽。而我也不喜歡這樣。我是一個程式師,我僅僅想寫代碼而已,有時分享我的意見,大家不必太在意。

Pramod:我記得你是在 29 或者 30 年紀時候就創造 Node,而 Node 造成如此巨大的影響。

Ryan:是的。我在那時候還是一個新手。

Pramod:好的 Ryan,當時有很多伺服器端的 JavaScript 專案。 Node 不是唯一的。你對 Node 的成功歸因於什麼?

Ryan:對。當時有幾個人都在嘗試讓 JS 運行在伺服器端。我完全忘記了他們是什麼。問題在於他們都使用阻塞 I / O,然而 JS 根本沒有執行緒。因此,如果您正在使用阻塞 I / O,您根本無法提供請求。如果一次只能提供一件事情,那麼 Node 永遠不會成功的。我希望使得 HTTP 伺服器運行的更加良好。而且我把這些事情做得很好,讓人們可以很快的建立網站。老實說,構建 Web 伺服器並不是簡單的事情。我認為重要的是,當你發佈一個軟體框架,或者任何種類的軟體,需要讓人們可以坐下來立即使用。這是 Node 所做的事情之一,就是人們可以立即下載並使用 Web 伺服器。

Pramod:如果人們可以輕鬆下載,安裝和使用它,會有很大的不同。此外,人們都知道 JavaScript,他們可以隨時開始編碼。

Ryan:是的。我們認為在語言之間切換是很容易的事情。我的意思是,即使你會用另一種語言,切換語言也是非常困難的。還有很多人非常熟悉 JavaScript。並且給他們這些工具,以便能夠在其他情況下使用它激發人們。你突然能夠做到比以前能夠做的更多的事情。

Pramod:是的在 2012 年的 Node 已經有一個巨大的開發者基礎。你為什麼離開,把 Node 的控制權轉轉交給 Joyent 的 Isaac Schlueter?

Ryan:我認為有兩個原因讓我做出如此決定。我已經為 Node 工作了四年。已經達到了我想要的地步。我從來不想讓 Node 成為一個非常大的 API。我想讓它成為一種小而緊湊的核心,人們可以在其上構建模組。還有幾個關鍵的特性,在早期添加了擴展模組,我們已經得到了所有的網路庫, HTTP, UDP, TCP,我們可以訪問所有的檔案系統。然後把它移植到 Windows,而且我們想使用 Windows 抽象來進行非同步 IO,即是用 Windows 的 IOCP 介面。這需要重寫核心庫,其結果是編寫了 libuv 庫。在那個時候,所有這一切都已經完成了,我們已經在 Windows 上發佈了。雖然接下來有很多 BUG 需要修復,但已經有不少人參與其中。而我想去做別的事情,加上 Go 已經出來的事實,我看到 Node 並非伺服器端的終極解決方案。當我發表博客時,也不想成為關注的焦點。

Pramod:確實有些人不喜歡成為眾人注目的焦點。當您開始在 Node 上工作時,您絕對有一些目標。今天的 Node 是否達到你的期望呢?

Ryan: Node 被這幾十萬的用戶廣泛使用,我覺得這絕對超出了我的預期。

Pramod:Ryan 在你與 Node 的精彩旅程之後,你決定從事什麼工作?

Ryan:在 Node 之後,我搬到了紐約,花了一些時間來完成自己的專案。當時 Instagram 已經出來,我也忍不住想做同樣的事情。我有一個社交網路專案,還有有一個 C++ 的構建系統專案,甚至有另一個 HTML 的構建系統專案。我有一堆專案,其中沒有一個是在我心目中淘汰的。我會在某個時候回到這個項目。我這樣做了一段時間。然後我我開始聽到卷積網路,圖像分類,這讓我對機器學習真的很感興趣。

Pramod:你也是 Google Brain 的 Residency 計畫的一部分,裡面的經歷怎麼樣?

Ryan:是的。我剛剛在山景城度過了一年。回過頭來, TensorFlow 已經在兩年前發佈了。與此同時,他們宣佈了 Google Brain Residency 計畫,邀請了 20 人來到 Google Brain。我認為這個有想法的並不一定是真正懂機器學習的人,而是在數學和程式設計方面有一些背景,並且對機器學習感興趣,喜歡這些新想法。因為機器學習正在快速變化,而且還有大量的工作已經完成,現在縮小的神經網路成為機器學習中最有用的演算法,加上 TensorFlow,將產生一些有趣的想法。

我花了一年的時間,編寫了基本模型,並寫了關於這些模型的論文。我主要從事圖像轉換問題。如果你有一些輸入圖像,你想得到一些輸出圖像。例如,您可以將黑白照片作為輸入,嘗試將照片的顏色預測為輸出。這個問題最酷的地方是有無限的訓練資料。你可以拍任何彩色照片,然後把它的飽和度調低,就是你的輸入圖像。機器學習的一個問題就是需要大量的資料,而使用這些方式,這個問題就不是問題了。最近也有很多關於生成模型的工作,也就是輸出圖像的模型。它們已經表現出了學習自然圖像多樣性的能力,能夠真正理解什麼是真實圖像,什麼不是真實圖像,什麼看起來像真實圖像。我的想法是把這個最近的工作應用在生成模型中,並採取這個無限的訓練資料,看看是否可以做一些圖像轉換問題。因此,我做了一些關於超解析度的工作(轉換低解析度圖像到高解析度)。這也是一個圖像到圖像的轉換問題。

Pramod:我已經看到, TensorFlow 是許多機器學習問題的一個很好的平臺。圖像分類和轉換,我相信這很有趣。你是否繼續專注於 ML?

Ryan:對。我還是在谷歌,作為一名軟體工程師,處理同樣的問題。研究生成模型,並試圖説明研究人員構建下一代系統和下一代模型。

Pramod:生成模型與之前的 JavaScript, Node 或 Web 開發工作有很大的不同?

Ryan:我想是這樣的。我想我有相當不錯的數學知識基礎。我不想成為一個隻做 JavaScript 的人,我也不想只成為一個機器學習研究者。對我來說探索什麼是可能的非常有趣。令人興奮的是建立一些以前從未做過的新事物,它可能在某種程度上造福人類。

Pramod:很高興知道機器學習需要一個很好的數學背景,在最近的博客關於 Optimistic Nihilism 的話題,你說我們有可能有一天會模仿大腦,並建立一個像人類一樣理解和思考的機器,我們距離這個目標還有多遠?

Ryan:我必須對一些預言有點小心。我們無法接近人類智慧。我們正在使用的機器學習系統非常簡單,它基本還不工作。事實上,我有一篇博客文章,其中列舉了開發這些模型的所有困難。我認為那些不在這個領域工作的人有這樣的想法:你可以接受這個模型並通過它得到一些資料。但事實並非如此。這些東西都是非常挑剔的,不是很好理解的,它需要很長時間的精心調整和實驗才能得到結果。

我認為最近確實出現了一些有希望的技術,也就是說卷積網路似乎起作用了。事實上,這些東西是建立在一個模型的基礎上的,這種神經網路模型不是真正的大腦,但是它是由大腦激發出來的,這是非常誘人的。我們有 GPU,我們展示了如何在這些 GPU 上進行訓練,並在一定程度上分配載入在 GPU 上的訓練。因此,我認為建立更大、更智慧的系統的基礎正在發生。就我個人而言,我是一個無神論者,我相信除了化學物質和大腦中的神經元外,我腦子裡再也沒有別的東西了。我們的意識是編碼,但是我們還不知如何在神經元之間的相互作用。我不知道哪一天,我們有足夠的研究和工作在這個領域可以效仿那種行為。這太遠了,無法預測會有多長時間。

Pramod:你想在未來 20 年看到什麼新科技?

Ryan:我對機器學習和它帶來的可能性感到非常興奮。我認為這種技術有很多應用。基本上,任何一個可以説明你的系統,都將從這項技術中獲益匪淺。有不可數的工業流程可以從這種事情中受益。有很多很多系統可以從簡單的機器學習系統中受益。而且我認為我們將越來越多地看到這些系統應用於不同的領域。所以我認為這會大大影響科技界。

Pramod:是機器學習是非常令人興奮的。當我在山景城看到自動駕駛車時,我感到非常興奮。謝謝 Ryan,為我們帶來了漂亮的 Node,感謝您的參與訪談。也祝你未來的專案成功。

Ryan:是的,它非常酷,感謝邀請我出席訪談。

Pramod:謝謝。我真的很喜歡和 Ryan 聊天,一個非常謙遜及厲害的人物,在非常年輕時候就在技術上取得了很大的成就,這樣一個鼓舞人心的故事。

英文原文:https://www.mappingthejourney.com/single-post/2017/08/31/episode-8-interview-with-ryan-dahl-creator-of-nodejs/

本文作者 Pramod HS,由 Jesse 翻譯,轉載譯文請注明出處,技術原創及架構實踐文章,歡迎通過公眾號功能表「聯繫我們」進行投稿。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示