本期名家
Ola Bini

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

互动访谈
你为什么对编程语言如此感兴趣?
我从很小的时候就开始编程了,我学了很多编程语言。对于我来说,作为一名程序员,我认为最重要的工具就是编程语言,其他所有的一切,库、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, 这个词是个法语词,它的本意是爱好者,但是在英语中它的意思变成了非专业的。 极客就是自己享受自己做的事,对于我来说就是技术,同时包含的意义还有对于细节的关注。喜欢和细节以及很多信息打交道,虽然很难解释,但是就是这样一种感觉。如果你一直在写程序,几年来一直在完善一个产品,有上百万行的代码在那里,但是你仍然要全神贯注在每一行代码上,而且你得知道每一行代码在整个系统中是如何工作的。所以这就要求你对每一行代码极端地精雕细酌,而且还要时刻谨记整个大环境是什么样的。我觉得这就是极客擅长做的事。无论是关于科幻小说,还是什么的,这样的精神的本源都是相同的。
相关图书推荐
其他专题推荐
  • Cocos官方首批认证CVP,是国内建立完整的Cocos2d-x学习知识体系的第一人。

  • 中国人工智能学会理事、百度百科学术委员、51CTO学院讲师。

名家名作
关注微信
喜欢读书的朋友请扫我
也可以加我们的
QQ群342347198
联系我们
  • 负责人 萌萌
  • 电话: 010-68476606-8185
  • 邮箱: wunm@51cto.com
  • Q Q:3132396579
Copyright©2005-2015 51CTO.COM 版权所有 未经许可 请勿转载