账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
除错和解构
 

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

浏览人次:【2603】

「霸客」是什么?它就是所有工程师的公敌,是一种想像中的「昆虫」,经常像「飞蛾扑火」般,不请自来。读者应该猜出这个「霸客」是指什么了吧?您应该答对了!就是指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)。


(作者为资深系统工程师,marvin tien@pchome.com.tw)


相关文章
微透镜阵列成型技术突破性进展
EdgeLock 2GO程式设计简化设备配置
触觉整合的未来
智慧型无线工业感测器之设计指南
高效轴承支持洁净永续生产
comments powered by Disqus
相关讨论
  相关新闻
» 资策会成立全台首家车辆软体评测单位 打造智慧车辆信赖环境
» 震旦家具推动DEI多元共融有成 协助打造幸??职场环境
» 报告:Action12024 年软体漏洞评级五大趋势
» AWS研究指出:掌握AI将提高台湾员工薪酬39%并促进职涯发展
» 研华携手满拓科技、群联 举办Edge AI工程师实战营


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

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK87SAXMRH6STACUK3
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw