程式語言學習心得文

連續一個禮拜沉浸在Microsoft Small Basic裡, 有點小小心得, 想要記錄下來.

資工系專長–電腦程式語言–和外文系專長–人類自然語言–看似大相逕庭, 實有異曲同工之妙. 它們都是語言, 但程式語言是給電腦與電腦之間溝通使用(當然也包含部分人腦), 人類自然語言是給人與人之間溝通使用, 就是一般大家熟知的中文,英文,法文,德文等等語言. 兩者都有各自的詞彙,語意,和語法. 都必須遵守某些該語言內部的規定才能互相理解. 人類語言有五六千種, 程式語言也有好多種, 各自應付不同需要, 有使用場合之分, 消耗腦力(或是硬體資源和運算速度)程度也不同. 例如在家裡我使用閩南語, 在學校與同學朋友間使用國語, 在學術專業領域內使用英語. 使用英語最耗大腦CPU, 使用閩南語和國語最不消耗資源, 大腦CPU運作速度也最快. 程式語言也會根據實際需求而使用C, Perl, Python或其他語言撰寫.

雖然電腦程式語言和人類自然語言有如此多共通點, 但有一點確定的是: 電腦程式語言的變化性與靈活性遠遠不及人類自然語言. 人類有複雜的心機, 會想欺騙, 說謊, 密謀, 說服, 諷刺, 造謠, 抹黑等等, 語言只是做為一個手段, 來達成我們心裡真正想要做的事, 例如說服法官相信我是清白的, 或是故意挖洞給對手跳, 使其失去辯護立場, 前後邏輯矛盾等等. 2011年的電腦程式語言發展或許可以做到部分, 但離真正模擬人類語言還有很長一段距離.

這讓我想起最近讀的一本書 “人心難測-心與認知的哲學問題" (彭孟堯, 三民出版, 2005)裡面第110頁到第126頁提到的 “圖林算機" (Turing machine)與 “圖林測試" (Turing test). 圖林算機只是一個抽象概念, 不是一台真的機器. 一個算機的概念包含四件事: (1)輸入資料與輸出資料的類型(就像程式裡的data type); (2)算機的起始狀態(輸入input); (3)算機的結束狀態(輸出output); (4)算機所處的各種狀態(即算機的讀寫頭遇到格子裡的資料時所應做出相對應的動作); 這算是現代電腦程式的濫觴. 關於圖林(Allan Turing, 有時譯為涂林)的詳細介紹, 可參考前台大數學系教授李國偉發表於科學月刊第30卷第11期, 題為 “謎樣的計算機科學之父" 的文章. 另外所謂的圖林測試, 在李國偉的文章中有如下描述:

“涂林擔任計算機實驗室的副主任,但是涂林沒有實權。因為當時英國政府急於發展計算機,用在製造原子彈的任務上,所以威廉斯趁勢打造自己的王國,把紐曼原來的方案涼在一邊。而涂林大才小用,只能做些雜七雜八的事。不過在這一片混亂中,涂林於一九五○年發表了一篇思慮清晰的哲學論文:〈計算機械與智能〉 (Computing Machinery and Intelligence),是人工智能研究上,一篇具歷史性的文獻。涂林討論的問題是如何研判機器會不會思想,他採取的方法不是思辯性的分析,而是建議一種可操作的評判標準。他提出所謂的模仿遊戲 (Imitation Game) 來研判計算機的思考水準,這個遊戲的布局如下:在一個房間裡安置一台計算機和一位助理,在另一個房間裡有一位詢問者。詢問者分別與計算機及助理以通訊管道連接起來,並且利用鍵盤敲擊出螢光幕上的文字交談。詢問者事先並不知道哪一個通話的對象是計算機,他用各種各樣的問題查探二者的真實,遊戲終結時詢問者要決定哪一個是計算機。在遊戲過程中,計算機盡量要讓詢問者猜不出自己的真實身份,而助理的作用在協助詢問者做出正確的判斷。現在一般稱呼這種類型的遊戲為涂林測驗 (Turing test),如果計算機能以高成功率瞞騙過詢問者,我們就可以說計算機已有人腦思維的功能。涂林自己很樂觀地認為在二十世紀末,計算機的功能已經強大到多數人不能否認它有思考能力。但是目前電子計算機的功能,雖然已經發揮到連涂林也不見得想像得出的地步,然而定期在世界各地舉行的涂林測驗比賽,至今仍然無法讓計算機展現接近人的思考能力。不過涂林的想法與信心不僅刺激了人工智能的研究,也使心理學產生變革,更間接催生了當代的認知科學。人腦到底是不是電腦,也成為研究人類心靈與意識上爭論不休的問題。"

人腦與電腦之爭, 是人工智慧, 認知科學, 哲學等研究領域的熱門話題. 如果回歸 “語言" 這件事, 我又會想到 “自然語言處理" (Natural Language Processing, 簡稱NLP). 維基百科對自然語言處理的定義是: “自然語言處理是人工智慧和語言學領域的分支學科, 在此領域中探討如何處理及運用自然語言; 自然語言認知則是指讓電腦懂人類的語言. 自然語言生成系統把計算機數據轉化為自然語言, 自然語言理解系統把自然語言轉化為計算機程序更易於處理的形式." 台灣的語言學研究(Linguistics)大部分放在外文或英語科系底下, 大部份唸語言學的學生都是文組學生, 從高中唸第一類組到大學唸外文或英語系, 因此基本的邏輯數理與電腦程式能力當然無法應付 “自然語言處理" 的需求. 國內 “自然語言處理" 研究放在資工系底下, 最有名的應該就是台大自然語言處理實驗室清大資工系的自然語言處理實驗室. 先前我在 “為什麼想摸電腦程式?" 這篇文章裡有提到Python程式語言和自然語言的處理工具 NLTK (全名是Natural Language Toolkit), 也發現陽光宅男的擴音器部落格有題名為 “用Python也能輕鬆玩自然語言處理" 的一系列10篇優質教學文章, 列出如下:

最後附上維基百科裡 “計算機科學主要領域" 圖表:

廣告

About leeoxygen

吱吱喳喳,嚕嚕啦啦,嗯嗯啊啊.
本篇發表於 資訊科學院, 我的Small Basic學習記錄 並標籤為 , 。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s