除了有能力投入無限資源、時間窮盡測試的人膽敢號稱可以做出 bug-free 軟體系統,剩下就是就是天真無知的新手以及狂妄自大的天才。
“I believe that the final bug in TeX was discovered and removed on November 27, 1985. But if, somehow, an error still lurks in the code, I shall gladly pay a finder’s fee of $20.48 to the first person who discovers it. (This is twice the previous amount, and I plan to double it again in a year; you see, I really am confident! )” 《TeX: The Program》, Donald E. Knuth
《The Art of Computer Programming》 的作者 Donald Knuth 已經提供了典範[1],即便如此自信自己的軟體是無蟲的,他仍然送出了超過兩千張支票。
Donald 在幾年前的一個訪問中[3],提供了給年輕人的幾個建議,
1. 眾人追捧、人云亦云的方向更需要特別小心是錯誤的。
2. 盡可能接觸各種領域,那些是組成正確知識觀的基礎。
基於這兩個建議,我對於想要自許法律系統可以 bug-free 的理工人有幾個提問。身為一個軟體工程師就先別爭論那些何謂公平[7]的哲學問題[5]、法律系統[6]的差異、維持社會秩序的制度或是教化功能的監獄政策[8]。針對問題寫好一個 bug report 是基本技能
1. 針對了隨機殺人案例加進了特例,這個特例不會造成對於其他事件的 regression issue ?
2. 能夠定義問題才能寫出好的 test cases. 你是否可以定義出「公平正義」,又你知道公平正義隨著社會演化、地理區域、時間變化的動態概念嗎?
3. 最常發生失誤的不是 code (法律條款),而是人。這些 code 都是由人執行,你知道這期間有多少腦殘錯誤[4]?更別說透過政治手段扭曲法條解釋或是碰到惡意濫用漏洞的 Cracker 了。誰都經歷過研究 seurity vulnerability 寫 exploit 的小屁孩時代吧?有些小屁孩是永遠不長大的。
純粹是覺得理工人應該要寫好 bug report.
[1] BUG,規範,斷言和調試_缺陷管理_領測軟件測試網 http://www.ltesting.net/ceshi/ceshijishu/qxgl/2011/1104/203457.html
[2] Knuth reward check http://en.wikipedia.org/wiki/Knuth_reward_check
[3] My advice to young people http://www.youtube.com/watch?v=75Ju0eM5T2c
[4] 證據為何會說謊?改革鑑定制度、究責失職人員~刑事鑑定制度改革記者會 http://%E8%85%A6%E6%AE%98%E9%8C%AF%E8%AA%A4%EF%BC%9Fwww.jrf.org.tw/newjrf/index_new2014.asp?id=4248
[5] http://en.wikipedia.org/wiki/Philosophy_of_law
[6] http://en.wikipedia.org/wiki/List_of_national_legal_systems
[7] http://en.wikipedia.org/wiki/Justice
[8] http://en.wikipedia.org/wiki/Penology