收藏 分销(赏)

CLIPS程式技巧.doc

上传人:xrp****65 文档编号:7219605 上传时间:2024-12-28 格式:DOC 页数:29 大小:175.50KB 下载积分:10 金币
下载 相关 举报
CLIPS程式技巧.doc_第1页
第1页 / 共29页
CLIPS程式技巧.doc_第2页
第2页 / 共29页


点击查看更多>>
资源描述
CLIPS程式技巧 練習一 (安裝與設定) 練習二 (簡易程式) 練習三 (資料定義與邏輯比較) 練習四 (模組化) 練習五 (讀取資料) 練習六 資料(知識)結構 練習七 物件導向程式設計 練習八 程序控制與平行處理 撰寫程式經常發現的問題 實例討論 專家有何特殊不同之處?和用網頁來表達有何不同? Procedure/non-procedure languages 哲學思考 練習一 (安裝與設定) l 下載程式及安裝 ( l 請下載示範程式(http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex 1-3 ICstrategies.CLP ),供練習一、二、三使用。 l 請嚐試交談式操作 n 視窗操作 n load:載入「純文字檔(.txt)」的應用程式 (*.clp) n reset:重置。不移除應用程式,但是所有參數均重設成原預設值。 n run:先要執行reset後,才能執行run。 n clear:移除程式,再重新load/reset/run其他程式。 l 交談式簡易操作 n CLIPS是類似LISP 的人工智能(AI)語言。 n 所有的運算式均為函數(function),寫在 ( … ) 之內,運算子(operator)位於第一位,其餘運算元(operand)跟隨在後。運算子和各運算元之間均以空格隔開(不是逗號)。空格只要一格以上即可,多空無妨。 n 請試 (+ 1 2) ,看會發生什麼結果? n (+ 1 3 5) n 請自行試其它的運算式。 l 實務上,仍須寫成應用程式。 l 請注意:括號要雙雙對對!!! 請養成良好的程式格式習慣,會減少很多程式除錯的時間和體力!!! 練習二 (簡易程式) l TXT檔案格式;副檔名: CLP l 主要包括二部份: deffacts, defrule 【此二字均是「保留字」,視為operator】 l deffacts 定義已知的事實, defrule 定義推理規則 l ; 註記行 l 事實以串列表示。如: (Relation X Y Z) l ?X 代表變數。如: (Relation ?X ?Y ?Z ) l 英文字之大小寫有別!!! 例如:(duck) 和 (Duck) 是不同的fact。 l 請注意雙引號 " 之使用,不能用Words裡的雙引號。WordPad 或小作家的雙引號才行。 l 僅註記行及字串得用中文。指令及變數均須英文字母(及合法之符號)。 l 推理方法為「型態比對」(pattern matching),同位之常數要相同,變數可以對應變數或常數。元素個數要相同。=>左(上)方之所有事實均比對成功後,該規則被啟動(activate)並置入議程(agenda)之中。議程依一定之策略(strategy)次序執行(fire)已被啟動之規則的=>右(下)方各指令。 l 各規則之啟動,係因左(上)方事實成立。換言之,一旦事實有所增減,專家系統即會自動找尋有那些規則可被啟動,或議程內原被啟動之規則,不再可以啟動,而自議程撤下。 l 以下是可執行的應用程式實例。 ;------------------------------------------------------ ; 例: 都市發展策略 ; 宣告基本信念 ;目標/策略關係 [策略本身是一種次目標] (deffacts goal-strategies (gs "都市發展策略" "減少失業率") ; 都市發展策略: 減少失業率 (gs "減少失業率" "吸引廠商") ; 減少失業率策略: 吸引廠商 (gs "吸引廠商" "降低通信成本") ; 吸引廠商策略: 降低通信成本 (gs "吸引廠商" "充足的網路建設") ; 吸引廠商策略: 充足的網路建設 (gs "降低通信成本" "民營化") ;降低通信成本策略: 民營化 ) ;推理規則 ; 推出所有的 目標--策略 關係 (策略本身也是一種次目標) (defrule t-gs (gs ?x ?y) (gs ?y ?z) => (assert (gs ?x ?z)) ;已知之事實用 deffacts。後來推論所得者用assert。 (printout t "欲達成" ?x "可採取" ?z "之策略" crlf) ) ;---------------------------------------------------------------------------------- ;實例結束 ;---------------------------------------------------------------------------------- 【作業】 l 會推導出「欲達成減少失業率可採取民營化之策略」,合理嗎? l 請將「城鄉發展」相關文獻之知識改寫成專家系統之形式,以CLIPS推理,看結論是否合理?並討論其問題出在何處?如何修正,可以使推理合理化? 練習三 (資料定義與邏輯比較) l 用 deftemplate 定義某一資料型態之綱目(schema),再用描述該資料型態之實例。如下,我們先定義city資料型態,再描述Glasgow市之各屬性值。 ; 定義city資料型態 (deftemplate city (slot name) (slot area) (slot population) (slot popu-year) (slot popu-year-type) (slot rate-of-jobless) (slot rate-of-jobless-year) (slot rate-of-jobless-year-type) ) ; 描述Glasgow市之各屬性值 (deffacts basic-data-of-Glasgow (city (name Glasgow) (population 600000) (popu-year 1980) (popu-year-type s) (rate-of-jobless 0.168) (rate-of-jobless-year 1996) (rate-of-jobless-year-type y) )) l 邏輯比較要放在RHS,用IF-THEN-ELSE,如下例: (defrule determine-the-degree-of-jobless (city (name ?x) (rate-of-jobless ?y) (rate-of-jobless-year ?z)) => (if (> ?y 0.05) then (assert (status-of-jobless ?x serious)) (printout t ?x "在" ?z "年的失業率十分嚴重" crlf) else (assert (status-of-jobless ?x no-problem)) (printout t ?x "在" ?z "年沒有失業問題" crlf) ) ) 【作業 – 新增資料及規則】 (1) 自行以deffacts之指令,增加1-2個城市的資料。 (2) 執行練習三之程式,看是否正確判斷城市之失業問題。 (3) 加入以下的規則:「若X在z年的失業率十分嚴重,則X應找尋新的發展策略。」 練習四 (模組化) l 可以分別寫在不同檔案 l 分別load各檔 l 或者寫成一批次檔(如下,副檔名BAT),再以 load batch指令一次載入,例如: n (load "C:/Documents and Settings/ftlin/My Documents/courses/空間邏輯/資訊城市/模組化/ex4 -- 變數中文意義.CLP") n (load "C:/Documents and Settings/ftlin/My Documents/courses/空間邏輯/資訊城市/模組化/ex4 -- 目標策略關係.CLP") 練習五 讀取資料 l 用read讀取一個字;用readline讀取一個句子(數個字)。 l 用bind 將讀取的字(句),指派給某一變數 l 請注意執行過程中,Facts視窗內容的變化。(read 或readline所讀入之資料會出現在Facts視窗) l 由鍵盤讀取資料: l 相關指令: read (defrule test-read (initial-fact) => (printout t "Name a primary color" crlf) ; 【printout 後面的 t 代表輸出到螢幕 】 (assert (color (read))) ; 【單獨的 read代表由鍵盤輸入】 ) l 由鍵盤讀取一行字,並存於某變數,以供後續使用。 l 相關指令:(readline) 、(bind …) (defrule test-readline (initial-fact) => (printout t "Enter input" crlf) (bind ?string (readline)) ; 【bind 指令: 將由鍵盤讀入之文字存於變數 ?string之中】 (assert-string (str-cat "(" ?string ")"))) ; 【str-cat 指令:將數個字串連成一個字串】 l 開啟檔案,並寫入、讀取、增加一行字。 l 相關指令: open, close, printout, readline, read (defrule test-read (initial-fact) => (open "test.dat" rfile "w") ; 【檔案test.dat位於與程式相同之目錄中】 ; 【可以加上路徑,以存取位於其他目錄之檔案】 ; 【rfile為「簡稱」,爾後程式中均使用簡稱,不用(含路徑之)檔案名稱】 ; 【w表示本檔案僅能從頭「寫入」,會覆蓋原有文字;不能讀取】 (printout t "請輸入文字: " crlf) (printout rfile "This is the first test line. " crlf) ; 【printout後加上檔案簡稱,將字串輸出於該檔案】 (close) ; 【關閉檔案,檔案游標將回到檔案開頭】 (open "test.dat" rfile "r") ; 【r表示本檔案僅能被讀取,不能寫入】 (printout t (readline rfile) crlf) ; 【readline後加上檔案簡稱,表示由該檔案讀取一行字串】 (close) (open "test.dat" rfile "a") ;【a表示該檔案僅能由文末寫入新字(串),不會覆蓋原有資料】 (printout rfile "This is the 2nd test line. " crlf) (close) ) 【完整程式範例—親屬】 ; 本程式可以推論親屬關係 ; 本程式使用了以下之述詞(predicate) ; ( A X Y) 代表: X 是 Y 的 長輩 ; (deffacts names (A "甲" "乙") (A "乙" "丙") (A "乙" "丁") (A "乙" "戊") (A "丁" "己") ) (defrule ancestor (A ?X ?Y) (A ?Y ?Z) => (assert (A ?X ?Z)) ) (defrule ask => (printout t "請輸入長輩的名字:") (bind ?x (read)) (assert (person ?x)) (printout t crlf) ) (defrule answer (person ?x) (A ?x ?y) => (printout t ?y "是" ?x "的晚輩" crlf) ) 【作業—新增資料並存檔】 增加上述「親屬」程式之功能:詢問新的親屬關係,寫入資料檔案。下次執行時,先行讀取該資料檔。 練習六 資料(知識)結構 一、指令練習 l 複選及重置 n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/指令練習/複選.clp l Global variables n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/指令練習/globalvar.clp n local variables l 串列(list) n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/指令練習/事實串列.clp n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/指令練習/num-arguments.clp l While loop l 複合條件邏輯運算AND, OR, NOT l 檢查某事實不存在: NOT n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/指令練習/事實不存在的not.clp 二、 基本資料結構 l 宗親(質性關係) n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/指令練習/宗親.clp n 【作業—兄弟姐妹】利用「宗親」程式,推論出"同父母之兄弟姐妹"的關係。 n 【作業—同輩】改寫(增修) 「宗親」程式,推論出"同輩"的關係。(提示:記錄輩份差) n 【作業—親等及輩份差計算】找出任二人之間的親等及輩份差。 l 決策樹(質性因果推論) n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/指令練習/決策樹.doc n 【作業—決策樹】(1)撰寫上述決策樹之CLIPS程式。(2)擴充決策樹,繼續判斷不同物種。(3) 增加quit 及 「回到start」的功能。 l 水災防治因果關聯圖 n 決策時經常遇到左右為難,或者長、短期效益矛盾的困境。本例模擬研訂治水政策所面對的問題。從知識結構的角度來說,本例的知識結構是比「決策樹」還複雜的「循環圖」。 n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/範例/水災防治因果關聯圖(教學範例).clp l 聯立方程式(量化預測) n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/數學/聯立方程式.clp n 【作業—一元二次方程式】:可以求 aX2+bX+c=0 解的專家系統 n 【作業—汽機車數量預測模型】 http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/數學/汽機車數量預測.doc l 堆疊與佇列 n 利用defclass n 堆疊: http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/basic data structure/stack.clp n 【作業—佇列】:改寫stack.clp,使之成為具有佇列(排隊)行為的串列 l 模糊推理 (Fuzzy reasoning) n 模糊集合理論,請參見 http://myweb.ncku.edu.tw/~ftlin/course/CAAD/CourseInformation/document/模糊集合及邏輯.doc n 身高判斷(物理量à心理量):輸入一身高,回報其身高的心理量:高、很高、矮、很矮、不高也不矮。 u 提示 1.分別建立「高」、「矮」、...等「概念(心理量)」的membership function。 2.進一步建立「很高」、「不算高」、「不高也不矮」...的membership function。 3.輸入一身高值後,分別計算它的各種degree of membership。 4 .回報degree of membership最高值所對應的「概念(心理量)」。 u 程式: http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/數學/模糊集合(身高).clp n 【作業】 請修正上列程式,加入「很高」、「很矮」、「不高也不矮」三個membership functions。 n 【作業】承上題,輸入心理量之後,估計其可能的身高。 l 階乘 (deffunction之運用) n http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/數學/階乘.clp l 樹狀結構 n 讀入一連串的數目,以左方小於等於根,右方大於根之規則,建成樹狀資料結構,並輸出成一資料檔。 n 程式1: http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/樹及圖/tree-example1.clp n 程式2: http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/樹及圖/tree-example2.clp 三、拓樸演算法 【注意:請在CLIPS的執行環境下,將Execution/Options/Strategy設定為Breadth】 1. 以CLIPS練習「拓樸學」(topology) 或稱「圖論」(graph)之基本表示法。 http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/樹及圖/ex6-1 graph-basic.clp 2. 偵測迴圈之存在。 http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/樹及圖/ex6-2 loop.clp 3. 延伸樹之演算。 http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/樹及圖/ex6-3 spanning-tree.clp 4. 樹狀結構之廣度優先搜尋法 (Breadth First Search) http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/樹及圖/BFS-tree.clp 【學習重點: (1) defclass 指令的用法。 詳練習七!! (2) 演算法 (algorithm)】 5. 樹狀結構之深度優先搜尋法 (Depth First Search) http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex6 資料結構/樹及圖/DFS-tree.clp 【學習重點: stack, push, pop】 【作業】 (1) 修改上述程式,讓操作者可以(1)自行增加節點及連結,如已經存在,應提醒已經存在,不必再加;(2)自行刪減連結(不刪節點,只刪連結),若該連結本不存在,應提醒該連結本不存在,無法刪去,(3)輸入二個節點名稱,系統告知二者之間是否存在路徑? (2) 請自行建構一個具有多個迴圈,ex6-2 loop.clp程式能夠找到多少迴圈? 【討論】 圖論之各種(程序性)演算法,以「規則式」來撰寫,有何其便利及困難之處? 【作業—中序】 讀入上一題所建之樹的資料檔,依中序列印出其由小而大的順序。 提示: 每一個node要有一個編碼(ID),左右子點及父點均是指向其ID,而不是指向資料內容本身。 Node的格式如: (node   ID    value   left-ID   right-ID   parent-ID) 【討論—divide, conquer and merge】 如何將一個複雜的問題切割(divide)成小的子問題,分別解決(conquer)之後再加以合併(merge)? 在上例,排序問題被切成「建樹」及「中序」二個子問題,透過檔案加以結合。子問題的程式可以分別獨立撰寫,互不影響其所設定的local variable的命名。如是,子問題如同軟體零組件,可以交由不同國家/設計團隊開發,運用其低廉的人力,但他們僅知其一,不知其二,而由系統規劃分析人員加以組裝之。 練習七 物件導向程式設計 基本觀念 http://myweb.ncku.edu.tw/~ftlin/course/GIS/物件導向式資料庫.doc http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex7 物件導件基本技巧.clp 【Word 版: http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex7 物件導件基本技巧(MSword).doc 】 練習八 程序控制與平行處理 http://myweb.ncku.edu.tw/~ftlin/course/LOGIC/clips基本練習/ex8 程序控制及平行作業 -- OO之現勘準備作業.clp 本練習模擬營建署審議開發案現勘籌備作業之流程 【註】 目前(2005)CLIPS的OO僅能描述ISA的關係,尚不能描述HAS或其他關係。但仍能用原來的 predicate來描述各種關係。 撰寫程式經常發現的問題: l (建議)步驟: n 以「查詢者」之身分,設定問題情境。【誰問什麼問題?】 n 以「領域專家」之身分,回答問題,建構知識體系(決策樹)。 n 繪製「事件圖」(決策樹) n 以「知識工程師」之身分,撰寫程式。 n 找「查詢者」及「領域專家」進行測試,修正程式。 l 程式的正確性:只好多翻翻手冊,問問有經驗的人。 l 邏輯流程 n 問題的前後次序 n 重複問問題 n 中文語意不清、不明確 【User Interface】 n 出現Y/N 殊途同歸。不須問該問題,因為Y/N之結果一樣。 n 有不可能發生的路徑? l 問題的本質:判斷/決策樹 n 診斷:汽車、電腦 n 分類:古蹟、動物 (terminals 為 Classes) n 指認:古蹟、動物 (terminals 為 instances) n 簡單的問題結構可以用decision tree來表達。複雜的問題便會需要graph。 l 知識的體系化、結構化 n 讓領域專家成為知識工程師(合為一人)。 u 領域專家與知識工程師之間的溝通十分困難,經常造成專家系統的失敗。如今,我們讓領域專家成為知識工程師(合為一人)。希望能突破此一困境。 n chunk:片斷知識 n 有效的將片斷知識予以系統化,尤其當新的知識進來,或刪去舊知識,而仍舊保持明晰的系統(仍維持是decision tree) n 儘量避免預設的問答次序。(宜採用switch…case…default指令) n 可以將已知的資料(庫)建立於deffacts/instances,讓查詢者有案例可參考。 l 化簡(精緻化) n 邏輯已經是正確 n 如何縮短決策步驟? = 去除不必要之步驟 n 如何設定default 值?(尤其是多選項) l 【User Interface】 n 如何讓專家與一般使用者正確瞭解用詞之語意? n 如何很快的瞭解到(感知到)使用者與專家之間的知識差距? n 應請查詢者做專家系統測試,以瞭解使用者之查詢需求。 n 應使用查詢者可以理解或者回答之語句。 n 如使用「術語」,應能讓查詢者進一步查詢該術語之意義。 n 應確認程式設計者與查詢者的「語意」是否相同?(是否對問答之用詞有相同之理解)。 實例討論 【王文君:法律專家系統】 n 可以納入全部法條,變成一部「電子書」。 n 可以加入案例(判例)及說明、參考。利用「案例式推理」的方法,擷取條件最近似之案件,提供查詢者參考。 【分類問題】 l 鳥類辨識、電腦問題診斷、古蹟分級、…均是「分類問題」。 l 分類有其目的。目的不同,分類的準則(屬性)不同,其結果也不同。 l 分類的述詞: n 需要二種述詞 u IS (X, A, V): X的A屬性值為V u CLASS (X, Y): X 的類別為Y n X 為待分類之物件集合 n A = {A1, A2, A3, …} 【可以有不同的屬性,如體積、重量、價格…】 n V = {VA1, VA2, VA3, …} 【不同屬性,分別對應不同的值域】 n Y = {Y1, Y2, Y3, …} n 例: n X 為所有中國建築之集合 n A = {屋群型式,屋頂型式,樓層數,建材} n V屋群型式= {獨棟式,四合院,三合院,連棟式街屋} n V屋頂型式= {歇山式、硬山式、懸山式、燕尾、平屋頂 } n V 樓層數 = 自然數系 n V建材 = power set of {木,石,磚,竹,水泥,鋼骨} 【容許多種建材混用】 n Y = {官式建築,民居,窯洞,吊腳樓,廟,家祠,…} 規則 n 某類建築型式構成要素之規則 u IS(x, 屋群型式, 四合院) Ù IS(x, 歇山式) à CLASS(x, 官式建築) n 類型及次類型之間的關係規則 u CLASS(x, 窯洞) à CLASS(x, 民居) l 以首階邏輯描述之分類體系,即便是「樹狀」的,其層級順序並非固定的。亦即,不一定要先就A1分類,再依A2, A3,…依序分類。 l 首階邏輯描述之分類體系容許「網絡結構」,讓一個子類同時(可能)屬於不同的父類。例如:歇山式的四合院建築可能是官式建築、宮殿,也可能是國家劇場(如中正紀念館之國家劇院、音樂廳) l 上述首階邏輯之分類體系,其基本事實之描述是「表格式」的。 專家有何特殊不同之處?和用網頁來表達有何不同? l 語言的表述能力(expression power)。 n 各種(電腦)語言的表述能力是否一樣? n 某些概念或者問題,用某種語言比較容易表述。 l 可以用網頁來表達樹狀、網絡的知識結構。 l 「祖先問題」是一個「樹狀結構」問題。 l 可否用「網頁」來表述祖先問題? n 不能用網頁,一次「全部」推論出「所有的」祖先或子孫。 u 要加上以下之能力才行 l 推論 n 仍然要建立「龐大的」資料庫。 n 是否容許網頁具有「搜尋」、「網頁編輯器(維基百科)」的功能? n 功能程式一定要用ES來寫嗎? l Google可以不經首頁,直接找到某頁。 l 網頁:必須一頁一頁去找。 l 也必須沿者決策樹一層一層往下走。 l 對使用者而言,無差別。 l STRATEGY(程序控制策略):這是專家系統的特色之一。 Procedure/non-procedure languages l 傳統的程式語言(例如:FORTRAN, C, VB)大多是程序性語言(procedural languages),程式指令的順利相當重要。次序不同就會得到不同的結果。 l 許多人工智能(AI)語言,是「非程序語言」。專家系統CLIPS即是。數學的聯立方程式也是。理論上(理想上),指令、規則的順序無關緊要。 l 程序性語言的重點是HOW to do, 要把演算程序步驟詳細的寫出來。 l 非程序性語言的重點是 WHAT to do, 只要把問題要素的關係、規則講清楚即可,不必考慮解決的步驟為何。(事實上,領域專家也經常說話顚三倒四,並不按一定的次序想起規則) l 聯立方程式是一種non-procedure language l 方程式的順序不重要 l 存在二種(以上)的解題程序。 l 解題程序之控制,在程式執行時,才由使用者決定。(程序性語言必須於程式撰寫時同時決定各模組之執行順序)。 l 概念的層級。高階概念(專業術語)是從低階概念建構上來的;例如,「容積率」是由「土地面積」、「建築面積」、「除法」等基本概念所構成。使用高階概念,會十分便利、迅捷。但是,必要時仍然可以用低階概念來重述高階概念。程式語言亦復如此。CLIP是一種相當高階的語言,具有許多「浮現」出來的能力(例如程序控制),但它仍然是可以用程序語言來表達(但就會十分繁瑣費事)。 l 這是一個專業化、模組(具)化的分工過程。資訊系統因為如此分工,才使系統的發展變得相當有彈性、可以多樣化的組合(重構),結果,成長相當快速。必須注意的是,分工只是一個面向;另一個面向是整合。資訊系統因為有清楚定義的分工和整合界面,才能夠多而不亂、快速累積知識,產生知識的綜效力量。(知識分工反而造成零碎、片斷化,這是各知識領域之間未能有效整合之故)。 l 從知識論來說,我們企圖建構一種知識整合平台,讓不同的知識能夠源源不斷的新陳代謝,而不失其系統性、結構性。(如何整合不同專家的知識?) l 使用某一種語言,得到了某一種便利,但也必然會受到它所帶來的限制。自然語言正如礦泉水,有許多雜質,也充滿了養分;電腦程式語言就像蒸餾水,十分純淨,可以醫療使用,避免細菌感染,但是毫無養分。所以,就單一事件而言,有所取捨。但是,交替使用,則可兼得其利。正如,太陽之下,必有陰影,有白天,必有黑夜。但是,太陽會旋轉,會使每一個地方都有白天與黑夜。是故,在多元的社會、多元的認知中,經常要從不同角度去看問題,要「毌意、毌必、毌固、毌我」,不要死守一方,要多元觀照。語言也是一樣。不要限制自己「只能」用一種語言。「如筏喻者,法尚應捨,何況非法?」,再多高強的語言,都無需堅持只使用該種語言。 l 有些問題先天本質上就是網絡式,無法化成樹狀結構。 哲學思考 【符號系統可以表述所有的現實世界嗎?】 l NO! 哥德爾(Kurt Gödel, 1906/4/28 -1978/1//14,http://web.edp.ust.hk/math/history/3/3_157.htm)證明了「具內在一致性之符號系統無法對應到現實世界的所有陳述」。例如:「我說的話都是謊話」是一種詭論(paradox)陳述。這種詭論便無法被「具內在一致性之符號系統」所處理。 l 不過,「具內在一致性之符號系統」的確可以處理「非真即假」的命題邏輯及首階邏輯體系。近來,更有人引進模糊理論、歸納法、設證法、多值邏輯、等非傳統邏輯之符號系統。這些新的符號系統究竟能走多遠?值得討論。 l 這裡面有一個很根本的「語意」問題。我們知道,有些語意是蘊含在「語法」之內,也就是說,語句的文法結構決定了某些語意。例如:「下雨天留客天天留我不留」。不同的斷句(語法結構),會有完全相反的意思。但是,哥德爾也同時告訴我們,語法(具內在一致性之符號系統)不能完全涵蓋所有的現實世界的陳述。易言之,有些語意仍然是無法用語法來涵括的。究竟什麼是「語意」呢?或者什麼是「意義」呢?恐怕還是得傷傷腦筋吧! l 相對於現實世界,數學是一個抽象系統。「1」可以代表一個人,也可以代表一顆樹。到了二十世紀初期,更發展出了「符號系統」。符號系統可以說是數學的進一步抽象化。其實,被抽象化的不只是數學而已,它也抽象化了邏輯系統。數學、邏輯是符號系統的實例。那麼,符號系統也揭示了存在著其他的(理念)世界。在下圖,我們標示了現實世界、數學、邏輯、符號系統、其他世界的關係。圓圈的包含關係說明它們之間的「不完全(替代)性」。 l 科學哲學家卡爾波普(Karl Popper)曾劃分了三個世界:物理世界、心理世界、知識世界。人類心智活動所發現的知識世界似乎是獨立於物理和心理之外。數理世界是知識世界的一部份。二十世紀初期的哲學家們(或者只是數學家們和符號邏輯學家們?)致力於建構一個「具內在一致性之符號系統」,希望能以它來打造「堅固」的知識世界。不過,似乎沒那麼簡單。不單是哥德爾的「不完全理論」揭示了它的侷限性,現象學、詮釋學也一再挑戰它。 l 現象學大師胡賽爾(Edmund Husserl, 1859-1938),受過嚴謹的自然科學訓練。但是他認為瀰漫二十世紀初期的實證主義是一種「不完善的理性」,忽視了認識論的問題,沒有考慮感官認知和詮釋的問題。他希望建構一個完全的理性主義來代替殘缺不全的理性主義。所以,胡賽爾所質疑的是哲學的危機。只有正視哲學問題,才能正確的對待科學問題。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服