会场一下子骚乱起来,在座的人们反应迥异,有的点头称赞、有的若有所思、有的一脸茫然。
王海滨被授意走到主持人身边讲解。
“各位仁兄,你们知道接口是什么吗?
广义上讲,接口指实体把自己提供给外界的一种抽象物,这一抽象物可以是另一个实体,使其能被修改内部,而不影响外界其他实体与其交互的方式。这个定义十分拗口,我来举个形象的例子。”
他指了指身后的大屏幕,“这个大显示器,能够接收电脑主机输出的视频信号,并放映出来。它和电脑之间用一根视频线相连,接上这跟视频线,它就显示这一台电脑里的内容,接上另外一根视频线,它就显示另外一台电脑里的内容。它本身并没有被电脑输出的视频信号所改变。”
说完他一把扯下屏幕背后的HDMI线,拿在手中,“这就是接口,是显示器和电脑沟通的桥梁,当它插在电脑主机上时,能够显示出画面;拔下时,画面消失,变为黑屏。但电脑始终正常运作。
它只影响显示器(内部),不影响电脑(外部),是一个标准的接口。”
线被插回原位,王海滨继续介绍:
“狭义上讲,接口是面向对象编程提供的多重抽象化。通俗来说,接口就是规定要程序做什么,但不在其中定义实现。它只约定了一个协议,规定当传入何种参数时,就获得何种结果,不在乎你是如何实现的。”
他指了指屏幕上的基因模型上的那段未知序列,“比如这种结构它就很像是一个接口,宿主基因通过它接入外源基因,它本身不具备任何功能,但接入的外源基因却不知为何直接被完整表达。
各位仁兄都知道我的观点,生命活动是正在运行的程序,中心法则是编译器,基因是它们的源码。
也许这些美丽的程序正是用类似于JAVA这种既高级又严谨的语言书写的,为了防止意外,不允许多重继承。所以如果要实现多个类的功能,只能通过接口。
当然这是后话了,有关面向对象、类、继承之类的概念,是否可以应用在生物身上,我们以后再探讨。现在需要进行的,是验证工作。
验证过程中需要注意,接口有几个重要特点:
1.接口中不包含任何方法和属性。也就是说,这段未知序列必须在所有物种上通用,并且全部不表达任何功能。
2.接口可以被继承。也就是说,这段未知序列必须可以随基因组稳定遗传。
3.接口不能被实例化。也就是说,这段未知序列不能作为遗传物质独自存在,它不能成为一个单独的生命。
也许我这样生硬地把计算机的规则套用在生命体上,缺乏逻辑和依据。但在面对一个完全未知的食物时,‘鸭子测试’是一种非常好用的方法:
如果它看起来像鸭子、游泳像鸭子、叫声像鸭子,那么它可能就是只鸭子。”
话音落下,会场被掌声填满。显然,王海滨的观点被大部分人所认同了。
虽然这套理论十分地生涩,但它就像是一个初生的孩子,也许会早早夭折,也许会一生平平无奇,也许会成为一个创造新时代的伟人。
这场空前热烈的会议持续了到了第二天中午,散场时,每个人都依旧神采奕奕。他们并不打算休息,而是直接联络各方准备开展复杂的验证工作。
针对接口的第一个特点,需要制造一大批不同种类的模式生物,比如小鼠、果蝇、酵母、拟南芥,用锌指技术精确地把未知序列敲入它们的基因组中,然后在生命周期内监测未知序列的功能。
针对接口的第二个特点,需要做遗传学试验,比如让被敲入未知序列的果蝇自由交配,观察序列是否可以世代遗传。