語言實在是一個很有趣的東西。一種語言就像一個資料庫一樣儲存著使用這個語言的人們共同有的文化背景、歷史經驗、個人想法…等等的資料。剩下的問題只在,要怎麼去把這些東西提取或是搜尋出來呢?
市面上有很多 SQL 類型的資料庫,它們都支援一組共通的 SQL 資料庫指令,但由於這組指令常常看起來不是很「友善」,如果沒有一點功力的話,閱讀起來也很辛苦,所以各家公司才會又出了各種「資料庫軟體」做包裝,好讓本來不是很好懂的 SQL 指令變得便於閱讀一些。於是…
select {user.*} from User user where user.age > 20
像這一句大概是說「從 User 這個表格裡尋找,當 user 的 age 這一欄的數字大於 20 的時候,回傳這個 user 所有欄位的內容。」
但在 Django 裡就可以被包裝成…
users = User.objects.filter(age>20).user
這句大意是「從 User 這個表格物件 (objects) 裡濾出所有 age 大於 20 的 user。」
在一樣的意思下,我個人覺得後者比較簡單。
而人類的自然語言其實也是一樣的道理。我們全人類都共同擁有一些很難說清楚的意念、想法、片段的思維…等等在腦袋裡。內容大概不脫吃喝拉撒這些大家都有的基本功能。如果用邏輯式寫出來,那就只剩下有學過的人才看得懂 (一個簡化的例子:[[吃]] = λxλy.((EAT x)y) ),但是如果用中文這個語言來包裝一下「吃」這個概念的話,就可以直接說「某人吃某個東西」這種比較好懂的句子了。
類比之下,邏輯式就像是通用 SQL 指令,而上面例子裡的中文就像是用 Django 包裝後的產物了。
我想生物資訊的架構應該也是可以由此切入。DNA 序列就像一個資料庫一樣,目前麻煩的地方只在我們還不清楚到底 G C T A 組成的這串一維陣列裡要用什麼結構去詮釋它。如果一個外國人來學中文,那麼在沒有老師的情況下,他聽到「橘子我吃掉了」之後,又聽到「我吃掉那個橘子了」之後,就會猜「橘子」這兩個音是一定要相連在一起的,就像 GC 總會成雙成對,而 TA 又總是一起現身一樣。但問題是…如果這個老外一開始聽到的是「橘子口味的汽水」和「橘子口味的香水」時,他會不會誤把「橘子口味的」這五個字當作某種固定的結構呢?
在語言裡用試誤法 (trial and error method) 還滿容易的,他下次可以說「我的鞋子是橘子口味的顏色」看看有沒有人聽得懂,會不會有人糾正他,就知道了。但我們總不能硬是弄個新的 DNA 序列,然後再試試看這個細胞或是蛋白質的生長/折疊表現和自然界中的正常細胞/蛋白質是否一樣。除了小說家/劇作家們心中出現的變種怪物的因素外,這個方法在生物這個領域裡不太好用的原因大概是,要長成/折疊成一個細胞/蛋白質要顧及的變因太多了!
但這幾年裡,我漸漸對自己還有一份自信。只要資料量夠多,我就有能力看出其中的結構或是分佈的 pattern (模式?)!
開始接觸程式設計以後,有些人會問說「你怎麼會這種東西?你有去外面學嗎?」嗯…我的確是有花了八萬塊去補習 Java 程式設計,但是重聽了兩期,還看完了線上課程,還是什麼都寫不出來…直到有一次翻著中英對照版的 Java 訓練手冊時,我才發現原來我學不起來的原因是因為…我看不懂中文的程式教學書籍裡那些字句的意思。
也許這就像每一個語言都因著自己的使用族群而編進了最適當的辭彙一樣。我們的中文也因著米食文化而在不同的階段給予 rice 這個東西不同的名字 (米、飯、稻、秧、穀、粥、糜…),夾帶著 A 文化的背景試圖去詮釋 B 文化時,總會遇上搔不到癢處的困難。
那麼既然這些程式語言不是講中文的人發明的,我用中文的思考方式去看這些翻譯的作品,自然會有摸不著頭緒的感覺了。最後,再經過幾次評比以後,我選擇從頭開始重新自學 Python。主因是因為…我很討厭「括號」。括號讓我有一種「受限」的感覺。Java 和其他的程式語言一樣,在每個函式區塊、類別區塊、迴圈區塊裡都要有一個 "{" 和一個 "}" 來表示界線,這讓我覺得被某種東西束縛著。Python 用縮排而不是括號來區別每個段落,程式碼除了清爽外,更有一種不受限的感覺 (錯覺?)
固然,在學術界的學科分類裡,這三種人的來源可能分佈在一、二、三類組 (又是另一種無形的束縛?),但其實除去了外在的變因以後,語言、程式和生物的內在其實並沒有那麼大的分別。(如此看來,其實我也一直沒有做出什麼「跨領域」的事情,我的人生只是一直在同樣的主題上探尋而已。這就叫自我束縛吧。)或是說,其實學程式設計和學生物對我來說,就只是學另一種語言而已。
人不都是這樣的嗎?如果喜歡某件事情或是某個人的話,就會去學和這件事情或是這個人相關的語言、行話、專有名詞、術語…
我想…應該是這樣的原因,讓我在大學時就一頭栽入外文系裡唯一會和骨頭、神經、肌肉有關的語言治療這個領域。而直到我在相關研究所筆試失利以前,我一直認為自己是「只要我想學,什麼都學得會;只要我想做,什麼都做得到的」。我對自己曾經有這樣 (近乎盲目) 的自信!
放榜前,自己算算成績應該是考不上研究所的。在大學的四年裡,我沒讀多少外文系的東西,而我唯一下過功夫的語言治療,才剛剛被研究所的教授們認定為「不夠格」。那紙通知書像是在說明我沒資格跨入另一個領域,我沒資格說那些行話,沒資格用那些術語,也沒資格去喜歡某件事或是某個人。而偏偏我在原來的領域裡也沒花多少心思。
這種跨不過去的感覺,就像奮力一躍卻掉到水溝裡的落水狗。我驚覺自己如果沒拿到入學許可最後考取証照的話,在一般人的眼裡,其實自己什麼都不會,什麼都沒有,根本就不值得被愛,恨不得找個洞躲起來之餘,自爆了,把身邊所有關心我的人都狠狠地傷了一遍…畢業典禮那天,我不敢邀請媽媽來觀禮,甚至連畢業生的座位都不敢去坐,如果我都沒有努力,那我有什麼資格拿這個學位呢?緊接著當兵、重考研究所、讀碩士、工作…這幾年裡,自己把自己當成某種有機垃圾似的活著,我逃避所有的目光,甚至自己都不敢面對鏡子裡的自己…
畢業十年後的今天,客觀地說,我依然什麼都沒有。但我慢慢地在自己的讀語言學、學習程式設計、研究生物…等等行為中看出了一個固定的模式。
我不再汲汲於努力追求要和別人「一樣」,以免顯得太過於「奇怪」。雖然我想過,也許「和其他人的背景不一樣」是我當時失敗的原因之一。但我要接受「我就是無法簡單地被分類」這件事,並且放下它。
我不再每日每夜地企盼我的人生能有一個機會改變所有的錯誤,得到原諒,畢竟連我自己都無法原諒自己當時幼稚的自爆行為。但我要接受這份自責會這樣跟著我一輩子,並且想辦法讓日子繼續過下去。
我也不再幻想我能得到一份可以充份發揮我的能力的工作,並且得到能舒服過日子酬勞。也許有一天,我做的機器人可以有夠強的心智運作機制讓他們可以完全取代人類所有的勞力工作,那時候人類不再需要「為了生活而工作」,而是「為了生活而生活」。人類可以把心智留給更需要創造性的事情,而不是在每日日夜夜的雜務中白白消耗了自己的有限的人生時間。
我應該是活不到那一天的來臨,但我必需要接受,在人類可以過著 clean life 以前,我就是那個動手做 dirty jobs 的傢伙。
這一點點體悟,就當做我十年來的畢業作品吧。
Peter v3.3
0 意見:
張貼留言