帳號:
密碼:
最新動態
 
產業快訊
CTIMES / 文章 /
除錯和解構
 

【作者: 田華湘】   2004年04月25日 星期日

瀏覽人次:【2557】

「霸客」是什麼?它就是所有工程師的公敵,是一種想像中的「昆蟲」,經常像「飛蛾撲火」般,不請自來。讀者應該猜出這個「霸客」是指什麼了吧?您應該答對了!就是指BUG。雖然,它的名字只有三個英文字母,但是只要在它後面多加一個S,就會讓工程師痛苦數日、數月、甚至數年呵!因此,叫它「霸客」一點也沒錯。


驅除「霸客」就是「除錯」,不管是軟體或硬體工程師,他們幾乎每天都要做這件事。有些人甚至連吃飯或睡覺時,都在想要如何驅除「霸客」。


其實,程式碼也是一種「符號(sign)」。我們在日常生活中,可以到處看到「符號」的身影,不只是開車時需要它來引導,我們更是無時無刻必須經由它來思考。但是,符號不是自然的產物,而是人類文化的記錄。如果人類是尋找「意義」的動物,「符號」便是從尋找「意義」的過程中產生的。而且,符號能建立「意義」之間的關係。


現代「符號學」(Semiotics)起源於十九世紀,代表人物有美國哲學家Charles Sanders Peirce及瑞士語言學家Ferdinand de Saussure。到二十世紀,因為不同學者對符號理論的研究及應用,便將此思潮推至高峰。目前它已經被廣泛地應用到哲學、自然科學、文學、藝術、社會學......等各種領域。


笛卡爾的「我思故我在」是唯心論的,雖然,他主張以人的理性代替神的啟示,以分析論證代替盲目信仰。不過,笛卡爾對思想自主性的體認,亦即不藉助任何東西而單獨進行思考或「空想」,這種理念在十九世紀時,開始受到懷疑。Charles Sanders Peirce認為人類的思考是需要藉助「符號」才能進行的。笛卡爾的數學著作,也是利用數學符號和法文完成的,不是嗎?不過,如果太過注重「符號」的邏輯性推理的話,也會讓我們的直覺或天生的靈感喪失,變成機械化的空想家或理論家,極端的好像「電腦」一樣「酷」,或美其名為 - 「人工智慧」。


有三位現代的哲學家對「符號」的看法非常有趣,他們分別是Umberto Eco、Jacques Derrida、Gilles Deleuze。他們也是「解構主義(destuctionism)」學者。


Eco把「符號」看作是「空的位置」或「空格(null space)」,這可以用C程式語言裡的「Void」型態(type)來做「狹義」的比喻,因為屬於「Void」型態的資料(data)可以被轉換成其它任何型態的資料。其實,我們也可以拿「C程式語言」的全部來做「廣義」的比喻,因為RAM記憶體是實體的(physical)存在,但是程式碼卻是「虛擬的(virtual)」存在。C程式語言的「符號」(亦即程式碼),實際上並不佔用RAM的空間,但是當程式執行時,程式碼、資料和運算結果,都依程式邏輯和軟硬體環境,暫時存在於RAM中。關機後,這些程式碼、資料和運算結果都將消失,因為這些「符號」是「虛無的」。


如果「符號」是虛空的物質,它不像金木水火土一樣存在於自然界,那麼「符號」就變成沒有任何無意義了嗎?Derrida曾對這個問題,提出他的看法。符號學家用「能指」與「被指」來形容「符號」的「虛空性」。「能指」具有自主的活動性,它並不受限於「被指」的約束。早期的符號學學者Saussurre認為,符號學的終極研究對象不是「能指」而是「被指」。相反的,Derrida認為「能指」完全擺脫了「被指」,而取得自主的活動性。因此,「意義的創造」不再受限於「被指」的對象,而成為「能指」之間的活動,這是一種不斷的活動及意義創造的過程。在Derrida的著作中,對「能指」與「被指」的關係說的很抽象,很不容易理解。但是,程式設計師一眼就能夠看出,其實這個想法也是取自於C語言中「指標(pointer)」的觀念,例如:


p = &x; /* 將x的位址存入p中。 */


*p = 100; /* 將100存入p所指的位址中。 */


z = *p/10; /* z將等於10


在上面簡單的C程式中,x是「能指」,p是「被指」,z是最後運算的結果。像Derrida等解構主義學者所強調的是「能指」(x)的功能,而傳統的結構主義者強調的是「被指」(p)的功能。數個「能指」之間會產生很複雜的「指標」連結關係,例如:C語言中的「結構(structures)」和「類別(classes)」,它們就是電腦軟體系統的「靈魂」。「能指」之間不斷建立新的「關係」,而「能指」與「被指」的單一關係已經不再是最終的目標。「能指」之間這種不斷持續的「關係」來自於一種動力基礎,Derrida稱它為「差異(differance)」。這是一個不容易理解的觀念,很容易令人感到困惑。簡單而言,這可以歸納為「空間性」與「非定決性」,同時用C語言來解釋,它們所指涉的對象就是「狀態機器(state machine)」。C語言中的switch和case、if...else判斷迴路(loop)的功能,具有「分支(branch)」的觀念,當在switch/case或if...else上做判斷時,程式是在一個「點」上執行,但這個「點」是沒有「空間密度」、沒有面積或體積的,程式本身預先不知道下一步會到哪一個「分支」去執行,所以充滿了「非定決性」。因此,在這個點上面,任何情況都可能在下一刻發生,而「差異」將決定什麼情況會產生。


Deleuze在詮釋尼采(Friedrich Nietzsche)的「恆常的回歸(eternal return)」思想時指出,不斷的回歸並不是同一事件在不同時間中,一次又一次的不斷發生。事實上,重複發生的並非事件本身,而是引發「偶然性」的動作,Deleuze比喻為「擲骰子」的動作,每擲一次骰子的動作都會引發出「偶然」的可能性。而擲骰子所得出的結果,不一定是事件的「真面貌」或「意義」。我們可以用C程式的偵錯測試動作,來理解Deleuze的想法。在100次的偵錯試驗中是正確的,但可能在101次或102次時出現錯誤。我們似乎永遠也無法只從一個方向真正地超越其界限,因為每次當我們越過一個界限,便會發覺我們又處於另一個界限之內,亦即又回到了「原點」。零錯誤似乎是不可能的(bug-free is impossible)。


(作者為資深系統工程師,marvintien@pchome.com.tw)


相關文章
用Arduino 打造機器人:循跡、彈鋼琴、下棋都行!
樹莓派推出AI攝影機、新款顯示器
智慧充電樁百花齊放
充電站布局多元商業模式
以爆管和接觸器驅動器提高HEV/EV電池斷開系統安全性
comments powered by Disqus
相關討論
  相關新聞
» 陽程科技採用ARES PP主動保護機敏資料
» Basler全新CXP-12影像擷取卡可獨立進行程式設計
» 遠傳電信營運每年減碳5萬噸 獲施耐德電機永續發展影響力獎肯定
» 高科大以AI演算法輔助醫療應用 大幅提高精準度
» Fortinet資安報告:96%企業憂心雲端安全 雲地整合成解方


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.3.138.105.255
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw