分享一位影响业界的巨人,RxJava的设计者 —— Erik Meijer

1,936 阅读5分钟

前言

本人在接触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 中,来使其更加强大。 从 IEmuerableIObservable 一个简单的对偶操作。极大的简化了异步的复杂度。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类型就一定只会是truefalse。而模型是不确定的,他的结果可能是一个概率分布,例如80%可能性下是true,20%是false。 另一个区别是代码是离散的,模型是连续的。 代码与模型的区别 而且也由此引出了,贝叶斯公式其实实际上是一个Monad(真的是万物皆可Monad)。 Monad 至此,后面Erik讲到他将通过概率编程(probabilistic programming)的方式,来对模型进行训练。从而实现机器自己生成代码而不是由人来进行手写代码。 由于本人对机器学习,概率编程等等概念并不是十分了解。所以也不在此多做解释。有兴趣的同学可以观看视频尝试理解一下。 视频中也提到了他们团队目前的一些目标:

Goals

看了之后觉得如果真的在短期内做成功,可能我这种程序员就要面试“失业”了吧。当然,拥抱未来和变化的我们,也不应该恐惧。而是更加期待这一天的到来。

总结

短短一篇博文肯定不能概述Erik对业界的贡献。而且作为一个普通程序员,我对这种级别的大神的了解只能停留在Conference和一些视频,文献等等资料中。仅仅是冰山一角。但是他的种种贡献对我可以说是改变了人生轨迹。从一个过程式编程程序员慢慢走向了函数式的世界。 也从RxJava等等中了解了数学以及范畴论中一些的一些理论。更在之后的讲座中了解概率编程这种目前来看十分超前的概念。 他在视频中说到:

如果纠结于Framework诸如 Vue和React 哪个更好,Flutter和Kotlin哪个更该学这种问题,我们无疑是自掘坟墓。

这句话也是我想分享给大家这篇的主要原因。虽然生活不易,但是如果想在技术上有一些建树,就不要把眼界放的太窄,只纠结于眼前这些区别不大而又收获甚微的细节。