前言
本人在接觸RxJava之後,由於被其獨特的優雅之處深深吸引,便自發的瞭解一些背後的歷史(考據狂本質),在瞭解之後十分想為大家分享這位站在RxJava背後的巨人 —— Erik Meijer。
注:由於本文大多數連結來自Youtube。而且尚未發現國內有轉載。所以幾乎有所視訊可能都需要FQ觀看。敬請諒解。所謂 Knowledge comes to those who crave for it. 我相信對大家來說這應該不是問題。
背景
Erik Meijer 出生於庫拉索,是一位資深學院派電腦科學家,同時也是一位企業家,和扎染愛好者。
早先在微軟作為軟體架構師,對.Net,F#等有重要貢獻。包括LINQ,Volta,Rx.Net等等。至今Rx擴充套件到多種語言,尤其以RxJava和RxJs最為出名。
同時 Erik Meijer 作為堅定的學院派,參與設計Haskell。並且也參與推出一系列課程比如:C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals
在離職微軟後,與facebook合作參與設計 Hack (php的一種方言)。與Google合作參與設計 Dart。
目前 Erik Meijer 在Facebook就職,而他的主要工作就是我們討論的很多的人工智慧。主要課題就是如何訓練模型來自動生成程式碼。
Erik Meijer 與 Rx
Erik 本人其實也出過許多的Rx解釋視訊。其中最為精華的我認為便是這個Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx)
。我也是第一次從這個視訊接觸到 Rx 是從IEnumerable
(Java 中的Iterable
)來推匯出。也第一次從這個視訊瞭解到 Erik 是如何將 Monad 的概念應用到 Rx 中,來使其更加強大。
從 IEmuerable
到 IObservable
一個簡單的對偶操作。極大的簡化了非同步的複雜度。Erik 本人也稱 Rx 是非同步的表現形式(representation of asynchrony)。
對這個概念的具體解釋,可以參考我的之前一篇文章:一篇不太一樣的RxJava介紹
Erik Meijer 與 Machine learning
我第一次聽說到Erik Meijer 是有些驚訝卻又覺得理所當然的。 驚訝是我個人以為他會繼續在軟體架構或者函數語言程式設計上繼續深造。而理所當然的是,他本人作為數學的狂熱愛好者,做以數學為主的機器學習就顯得十分理所應當。
我第一次接觸是在Erik Meijer 在一次 Kotlin Conference 中提到:KotlinConf 2017 - My Life as a Tech Transfer Monad by Erik Meijer 。 雖然他在研究機器學習相關,他本人並不認同“人工智慧”這一說法。他認為這只是對資料的一個一般化(Generalization),並且用的是18世紀的古老數學:貝葉斯概率公式。 視訊中,他有講到在我們目前的軟體工程世界(Software 1.0)。程式設計師喝咖啡(吃零食),寫程式碼。而在新世界(Software 2.0)。我們給機器輸入資料,通過機器學習來生成模型。
而模型與程式碼的重要區別就是:程式碼是精確的,例如一個Boolean
型別就一定只會是true
或false
。而模型是不確定的,他的結果可能是一個概率分佈,例如80%可能性下是true,20%是false。
另一個區別是程式碼是離散的,模型是連續的。
而且也由此引出了,貝葉斯公式其實實際上是一個Monad(真的是萬物皆可Monad)。
至此,後面Erik講到他將通過概率程式設計(probabilistic programming)的方式,來對模型進行訓練。從而實現機器自己生成程式碼而不是由人來進行手寫程式碼。
由於本人對機器學習,概率程式設計等等概念並不是十分了解。所以也不在此多做解釋。有興趣的同學可以觀看視訊嘗試理解一下。
視訊中也提到了他們團隊目前的一些目標:
看了之後覺得如果真的在短期內做成功,可能我這種程式設計師就要面試“失業”了吧。當然,擁抱未來和變化的我們,也不應該恐懼。而是更加期待這一天的到來。
總結
短短一篇博文肯定不能概述Erik對業界的貢獻。而且作為一個普通程式設計師,我對這種級別的大神的瞭解只能停留在Conference和一些視訊,文獻等等資料中。僅僅是冰山一角。但是他的種種貢獻對我可以說是改變了人生軌跡。從一個程式式程式設計程式設計師慢慢走向了函式式的世界。 也從RxJava等等中瞭解了數學以及範疇論中一些的一些理論。更在之後的講座中瞭解概率程式設計這種目前來看十分超前的概念。 他在視訊中說到:
如果糾結於Framework諸如 Vue和React 哪個更好,Flutter和Kotlin哪個更該學這種問題,我們無疑是自掘墳墓。
這句話也是我想分享給大家這篇的主要原因。雖然生活不易,但是如果想在技術上有一些建樹,就不要把眼界放的太窄,只糾結於眼前這些區別不大而又收穫甚微的細節。
最後
雖然這次其實也是由於某位女粉絲強烈催更下寫出。但本著寫文章就不要水的原則。也是糾結了很久的主題。希望大家看完這篇會有所收穫而不會覺得浪費了人生中寶貴的5分鐘。