简介:
Ola Bini,他从7岁开始编程到现在,如果他不在电脑前,那他很有可能在研究箭术,武术,或者在理发店里。他一直关注与安全、AI,以及编程语言。他是JRuby开发团队的早期成员,让它从一个玩具变成一个工具,并顺便写了一本《JRuby实战》。他设计了两种编程语言,它们都是他的试验品。去年他一直都在学习关于基因和分子生物学的知识,因为结合大数据的信息,基因测序技术的发展已经让攻克癌症变成可能。

编程语言会变得面目全非

你为什么对编程语言如此感兴趣?

我从很小的时候就开始编程了,我学了很多编程语言。对于我来说,作为一名程序员,我认为最重要的工具就是编程语言,其他所有的一切,库、IDE、甚至操作系统都不是最重要的。编程语言会制约我,但也会指导我如何写一个程序,如何解决一个具体问题。所以,对于我来说,如果可以控制一个编程语言,也许就可以在很多不同的环境下优化我的程序,可以优化和团队成员的沟通,可以让我把一个问题描述得更清楚,甚至可以简化我的代码数量。比如50万行的java的代码,有时可以用5000行ruby代码就解决掉,这种区别是巨大的,更少的代码就意味着更少的bug,也意味着代码也更容易理解。这对于我来说是最重要的,理解,并作出合理的决定。

你自己写了一种语言Ioke/ai’oki/,你写这个语言的初衷是什么?

我认为现在所有的语言都挺糟糕的。虽然有好一些的,也有差一些的,但是它们的层次都很低,都没有达到理想中的效果。甚至最好的语言也有一些自身的问题。我创造Ioke不是为了用它写我下一个项目,它是我的一个实验,我就是想看看如果我完全忽视性能和其他一些东西,我是否能创造出一种表现力更强的语言。这就是我的初衷。然后我又创造了另外一种语言Seph,它也是一个试验品,我想研究各种可能性。

这些语言第一无二的特点是什么?

最大的特点就是它们超级慢!但是非常灵活,就像是一块粘土,怎么捏怎么弄都可以。所有东西在运行时都可以改,所有东西都是开放的。它是基于原型的语言,我认为基于原型的设计是很纯净的,比如Io, Smalltalk, Lisp, 以及Ruby。同时它还是一种面向JVM的动态语言,它有运行时宏命令,这个是很强大的,你在运行时就可以对程序进行修改。还有一个就是很多语言都会在自身上执行,而Ioke所包含的几乎是最少的,它的库不多,因为所有的东西都可以用语言自身来实现。

你觉得未来的编程语言是什么样子的?比如20年后,或者100年后?

我觉得到那时编程语言会变得面目全非,它们看起来什么样我不知道。我认为到时候计算机会起到更大的作用,计算机很可能已经可以自己解决一些问题了。但是我认为大方向上应该是,因为我们到时候会面对更复杂的系统(现在就已经可以看出我们每年要面对的系统都比去年要复杂得多)。所以20年后,甚至100年后的复杂系统有多复杂真的是很难想象。

另外还有一个方向是互联网方面的。我们越来越多地把计算机放进我们生活的环境中。你回家时,会有电脑控制照明,电冰箱里也有电脑,它会提醒你你的饮料不够了,你的车上也有很多电脑系统。这些电脑越来越多,也越来越小。甚至在你的眼镜上,衣服上,手表上都会有电脑。20年后,如果一个人的身上有成百上千台电脑,我一点也不会感到奇怪。这时候你就要考虑为这些小设备编程是怎么回事,因为这些设备需要和人如何交互,设备之间如何交互,能量怎么获取。我们现在的假设都是只要让它们连上服务器就行了,跑什么都可以,我怀疑很多这些概念都会改变的。

另外还有一点就是我们现在还在用浏览器,HTML5,我们也用JS,大家还都挺满意的。但是说实话,我认为用浏览器和HTML5在5到10年后应该是件落伍的事。因为在你面前摆一个长方形的屏这样的概念,已经不适用与我们和周围环境和设备沟通的方式了。到了那时,我不确定我还想用CSS来渲染这些交互界面,我相信HTML5和CSS在这种情况下都不是称职的工具。但是话说回来,我真的不知道未来会是什么样的,但是可以确定的是未来一定会有所改变,而我们现在就能从很多事情上看出些端倪。

你打算针对你对移动和可穿戴设备的趋势写一种更合适的语言吗?

未来有可能。我打算创造的下一种语言也是一个试验品,但都是对于编程语言表达能力的探索。所以刚才所说的一切都跟我眼前打算做的事没有直接关系。因为表达能力是第一步,而其他问题可以在以后慢慢解决。设计编程语言是一件很花时间的事情,在过去的一年半我都没有时间做这件事,因为我一直都在忙一个和癌症相关的项目。今年我的工作重点是在互联网隐私,安全,监管这些问题上,所以要设计编程语言真的要挤时间。

你自己设计语言的最大收获是什么?

我觉得首先是很有趣。说真的,我们真不应该低估从编程中获得快乐这件事。我是个编程者,你看,我没有说我的工作是个程序员。当我和客户分开之后我的工作也没有停止,我在半夜也会读书,也在想着怎么解决问题。作为一个编程者,我整天都在编程,如果这件事没有乐趣,那我为什么还要这么做呢?

设计语言的另一个乐趣是从零到有创造一个东西的感觉。这和写一个新程序不一样,一个新程序无疑是一样崭新的东西。但是创造一种编程语言实际上是你创造了一种可以用来创造其他东西的工具。你制造了一个制造者。这个过程和写书也有点像,你写的书会完全反映你的想法。而编程语言也是同样。

你建议其他程序员也设计一种自己的语言或者操作系统之类的吗?

执行语言和操作系统最重要的不是设计。我认为不是所有人都应该去设计自己的语言或者操作系统。但是我认为大家都应该去执行语言,实现操作系统。因为对于后者来说,一个程序员应该理解我们在操作系统上建立的各种层级,从机器的最底层,到最顶层的浏览器,中间的各个层都值得程序员好好理解。而对于前者来说,编程语言是一种最重要的工具,理解它是如何工作的也很重要。但是我个人认为编程语言的重要性更胜一筹。

所有人都觉得你是一个极客,甚至你公司介绍你的页面也是这么说的,中文对于GEEK的翻译有点像极端主义者,你自己是怎么定义极客的?你在平时是个Hacker吗?

我没说过自己是极客,也没把这个标签往自己身上贴。别人说我是极客我觉得没有关系,但是我很不喜欢被称为传统意义上的黑客(当然,我知道这个词现在有了引申的意义)。同样类似的情形还有这个词amateur, 这个词是个法语词,它的本意是爱好者,但是在英语中它的意思变成了非专业的。

极客就是自己享受自己做的事,对于我来说就是技术,同时包含的意义还有对于细节的关注。喜欢和细节以及很多信息打交道,虽然很难解释,但是就是这样一种感觉。如果你一直在写程序,几年来一直在完善一个产品,有上百万行的代码在那里,但是你仍然要全神贯注在每一行代码上,而且你得知道每一行代码在整个系统中是如何工作的。所以这就要求你对每一行代码极端地精雕细酌,而且还要时刻谨记整个大环境是什么样的。我觉得这就是极客擅长做的事。无论是关于科幻小说,还是什么的,这样的精神的本源都是相同的。

Ruby 的作者松本行弘认为21世纪是属于开源软件的,你同意吗?

我认为是20世纪来着,哈哈,开玩笑的。我希望松本是对的,但是在过去的5到10年中,云(面向服务器的架构)变得越来越普及,虽然开源一直都在我们身边,但是变得越来越无关紧要。因为如果你在自己的计算机上用开源软件,这没什么关系,但是如果你要用一个大家都在用的网站的话,开源就不那么重要了,举例来说,誰需要Google把Gmail开源呢?我认为这个趋势正在继续,面向服务器的架构和云计算正让开源变得越来越没有用武之地。当然,对于库来说,开源无疑还是很好的,但是对于我们每天都在使用的东西,开源都不构成任何话题,我其实对此感到很难过。但是这似乎就是现实。

让征服癌症成为可能

关于癌症的那个项目,可以简要的向我们介绍一下吗?

这个很难简要的说明,要知道我把整个演讲压缩到一个小时都很苦难来着(笑)。癌症并不是一种病,而是很多种病,直到不久以前,我们仍然不明白基因在整个癌症发展过程中扮演的角色。我们现在了解得更多了,因为基因组测序变得越来越简单、廉价,为癌症排序成为可能,从而分析癌症的致病机理到底是什么。一旦完成了为癌症测序,我们就可以利用这些信息和研究信息以及临床实验信息进行比对,由此就能知道对于特定病人来说正确的治疗方法是什么。这就是我们所做的,我们把特定病人的癌症基因信息拿出来,告诉病人最合适的治疗方法是什么。这就要比现行的治疗方法要好很多了,如果有人得了肺癌,那就按照肺癌方法治疗,如果有人的了胰腺癌,就按照胰腺癌方法治疗。但是事实上,癌症从哪个器官出现并没有癌症序列重要,所以有些治疗胰腺癌的方法对于治疗肺癌同样适用(当然,对于某些人来说)。所以我们要做的就是基于癌症序列给病人提供更好的治疗方案。

现在所有的信息都已经到位了。再过几年,病人只要打个喷嚏就可以做一次基因测序,现在我们会给患癌症的病人做基因测序。在一两年前,这都是不可能的,但是在现在,这都是可以实现的了。我们在两年前就开始了这个项目,而现在我们可以说是领先于世界的,这也是我们一直以来想达到的目标。很多其他公司也开始了类似的研发,但是我们现在至少领先于其他人一年的时间。这个系统其实有潜力成为在接下来十年都对相关领域产生重大影响的项目。

有具体的案例吗?

卵巢癌的生存率在几十年内都没有什么明显提高,这都是因为对于防止这种癌症复发一直依靠着试验试错法。而现在我们知道卵巢癌是一种异种疾病,癌症的特征会根据每个病人而有显著不同。DNA测序和基因表达分析这样的技术让每个肿瘤都有自己的分子档案,整合和解读这些数据,为每个病人都有自己个人化的解决方案是很有挑战性的工作。Clearity基金已经建立了专业bono服务帮助医师和他们的病人做出更加合理的选择。

技术上你们解决了什么问题?

这个项目是由Annai主持的,MedTrust E2软件系统建立在科学研究报告之上,从专业健康专家的临床经验数据库到具体病人具体肿瘤的药物治疗可行性报告,数据库的来源不能不说是非常广。MedTrust E2系统最强大的一点在于它极其灵活,可以吸收很多不同种类数据中的内容,并轻松把数据和概念从一个环境中联系到另一个环境中。E2是一个证据驱动,而非规则驱动的引擎。这让这个系统变成了一个真正的可学习系统。

在这过程中你需要学习不少关于癌症的知识吧?

当然!我带领这个项目团队一年零两个月,在这期间,我从对分子生物学一无所知,到最后我的想法可以影响到生物科学家和基因科学家,我的同事要学习的也有很多。因为我们的客户知道自己要做什么,而我和我的同事则负责做的方法,具体要实现什么。但是要做到这些,就需要学习大量分子生物学的知识。我很喜欢学习,所以整个项目对我来说都很有趣。

我们团队有四个人,我是领队,但是我们每个人都是开发者,每个人也都是专家,我们都是QA,我们也都做模型分析,我们四个人什么都干。虽然有点怪,但是最后的效果非常不错。