會場一下子騷亂起來,在座的人們反應迥異,有的點頭稱讚、有的若有所思、有的一臉茫然。
王海濱被授意走到主持人身邊講解。
“各位仁兄,你們知道介面是什麼嗎?
廣義上講,介面指實體把自己提供給外界的一種抽象物,這一抽象物可以是另一個實體,使其能被修改內部,而不影響外界其他實體與其互動的方式。這個定義十分拗口,我來舉個形象的例子。”
他指了指身後的大螢幕,“這個大顯示器,能夠接收電腦主機輸出的影片訊號,並放映出來。它和電腦之間用一根影片線相連,接上這跟影片線,它就顯示這一臺電腦裡的內容,接上另外一根影片線,它就顯示另外一臺電腦裡的內容。它本身並沒有被電腦輸出的影片訊號所改變。”
說完他一把扯下螢幕背後的hdmI線,拿在手中,“這就是介面,是顯示器和電腦溝通的橋樑,當它插在電腦主機上時,能夠顯示出畫面;拔下時,畫面消失,變為黑屏。但電腦始終正常運作。
它隻影響顯示器(內部),不影響電腦(外部),是一個標準的介面。”
線被插回原位,王海濱繼續介紹:
“狹義上講,介面是物件導向程式設計提供的多重抽象化。通俗來說,介面就是規定要程式做什麼,但不在其中定義實現。它只約定了一個協議,規定當傳入何種引數時,就獲得何種結果,不在乎你是如何實現的。”
他指了指螢幕上的基因模型上的那段未知序列,“比如這種結構它就很像是一個介面,宿主基因透過它接入外源基因,它本身不具備任何功能,但接入的外源基因卻不知為何直接被完整表達。
各位仁兄都知道我的觀點,生命活動是正在執行的程式,中心法則是編譯器,基因是它們的原始碼。
也許這些美麗的程式正是用類似於JAVA這種既高階又嚴謹的語言書寫的,為了防止意外,不允許多重繼承。所以如果要實現多個類的功能,只能透過介面。
當然這是後話了,有關物件導向、類、繼承之類的概念,是否可以應用在生物身上,我們以後再探討。現在需要進行的,是驗證工作。
驗證過程中需要注意,介面有幾個重要特點:
1.介面中不包含任何方法和屬性。也就是說,這段未知序列必須在所有物種上通用,並且全部不表達任何功能。
2.介面可以被繼承。也就是說,這段未知序列必須可以隨基因組穩定遺傳。
3.介面不能被例項化。也就是說,這段未知序列不能作為遺傳物質獨自存在,它不能成為一個單獨的生命。
也許我這樣生硬地把計算機的規則套用在生命體上,缺乏邏輯和依據。但在面對一個完全未知的食物時,‘鴨子測試’是一種非常好用的方法:
如果它看起來像鴨子、游泳像鴨子、叫聲像鴨子,那麼它可能就是隻鴨子。”
話音落下,會場被掌聲填滿。顯然,王海濱的觀點被大部分人所認同了。
雖然這套理論十分地生澀,但它就像是一個初生的孩子,也許會早早夭折,也許會一生平平無奇,也許會成為一個創造新時代的偉人。
這場空前熱烈的會議持續了到了第二天中午,散場時,每個人都依舊神采奕奕。他們並不打算休息,而是直接聯絡各方準備開展複雜的驗證工作。
針對介面的第一個特點,需要製造一大批不同種類的模式生物,比如小鼠、果蠅、酵母、擬南芥,用鋅指技術精確地把未知序列敲入它們的基因組中,然後在生命週期內監測未知序列的功能。
針對介面的第二個特點,需要做遺傳學試驗,比如讓被敲入未知序列的果蠅自由交配,觀察序列是否可以世代遺傳。