1. 9 months ago 

    On Parsing 6/2(1+2)

    第一次看到這算式爭議時,是某卡西歐舊型計算機得出的答案與 6/2*(1+2) 不同的新聞。當時我的反應是,看不出來這個例子那裡模糊了。本來也就打算讓它這樣過去……

    然而現在卻寫了這篇。因為竟然有人拿它去作秀質詢,認為教育出了問題。但坦白説我覺得教育能不能夠保證這件事完全一致反而是有困難的。成人累積了足夠的知識與訓練之後,能夠拿這個來玩遊戲,但是兒童或青少年當時未必能夠吸收超過某個難度的東西。而 facebook 上去回這一題的人可能什麼程度都有(搞不好是常態分布?),結果卻是大約一半一半?要怎麼繼續推論其實我就不清楚了。

    如果不要講那麼遠的話,先説明一下我決定如何剖析這則算式的過程。

    首先,如果按照已知各種沒有歧義的規則,該算式會直接被判定為不可剖析,原因不只在於某個運算子是否被省略,還在於 () 也能被當成是函式,然而無論是把 (1+2) 當成 anonymous function 還是把 2() 當成函式都沒有幫助,前者的結果只能解決 1+2 先做,效果跟不把 () 當 anonymous function 相同, 後者則是完全的 syntax error.

    接下來,如果強迫這算式要有答案(有很多剖析系統會嘗試這麼做),則可以開始引入某些 context 附加的新知識。由於這裡面沒有代數,所以純數的 context 優先引用了。而純數如果要附加上乘法省略規則,不完全照代數的來看是比較簡單的,因為照係數的作法,規則至少會多出一條。比如説,雖然 6÷2(x+1) 可以視為 2 作為 x 的係數而直接結合,但是並不知道為什麼 +1 會在裡面而不是在外面當成常數,更糟的是,如果參考二項式係數的概念,會發現 (1+x)(1+y)(1+z)…(1+n) 其實也不只是乘號被省掉了,而是所有的 component 都要長得同一個結構然後全部展開。基於這個 context 一來符合程度不夠高、二來附加規則不只一條的情況,只能 fallback 到純數附加乘法省略這種策略。

    這種手續有點多的判定,我懷疑一般的教育方式能否畢其功於一役,因為通常教導一個領域時,會假設都留在這個領域的 context 裡,只用這個領域的約定。我印象中國中代數的説法只是「乘號會影響到使用 X 作為變數的習慣,所以先是改用在別的領域其實是內積的點號,接著在因式分解時乾脆省略點號」。至少在這個時候是解釋了部分的「內容」,但未來能不能推廣乘號省略的約定到其他運算上其實很難説是不是當時教育者的責任。但是要説是「後來」的教育者得負責也實在不容易,也許高中之後如果改用 reverse Polish notation 會更一致?

    原則上我完全可以理解這個算式引發問題的批判,大部分我也都同意,但只是想説,規則一致性(用係數代數的可能可以套用在比較多地方?)和因果關係(乘法省略約定究竟怎麼來的?)恐怕也不是唯一的。

    最初我説「看不出來這個例子那裡模糊」其實有件事模糊掉了,在剖析的時候,模糊 (fuzzy) 或歧義 (ambiguity) 説的是「這樣也可以,那樣也可以」,但這則算式如果要完全一致,就我所知的各種形式系統全部考慮進來的話,只有 reject 這條算式一途;如果要「救回」這條算式,引入最少的規則是比較安全的,因為誰也不敢保證新規則會不會破壞其它地方的一致性。加上我並不完全同意來自係數的規則可以完全適用(理由如上所述),結論就被壓縮成「我看不出來」了。這算式不是「模糊」,照一般看法,白話説就是「題意不清」,不清楚的地方在於「這到底是什麼題目?」以及「這題在考誰?」如果題目出在國中試卷上,真正受考驗的其實是教師吧!XD 如果題目出在網路上,由我來作答,按照對剖析系統要「能用」而且要「夠強健」的偏好,完整的輸出如下:

    6/2(1+2) ^ expect “;” or a missing operator

    當然,如果我必須扮演國中生的角色,那麼我應該會把它寫成 6/2*(1+2) = 9, 重點在於老師通常都會這樣説:「要寫計算過程!」

    最後的感想是,為救回某則形式不完全的算式讓它能被直譯 (interpret) 或編譯 (compile), 比程式更聰明更有彈性的人們有意或無意地採用了某些詮釋 (interpret) 並且重新編輯 (compile) 了它。

  2. Notes

avatar_128
 
 
 
 

Following

kennedycursefashionblogscalliope-winecharmyannmslilithbettyadacartocacoetheshalcyon-dazegingerangiefieldsofelysiumiamendinmiloliciousreaktorplayermothernaturenetworkcherichictopiabjornstaraliceobsidianbeckyandfrankroyaltybloodicouldsleepforathousandyearszonbledigdoghlbexplodingdogyllanlukhnosiwdrmmjhsiehmomizialexshtacchangpomin5evenwunotaluminisgugodmlchenxditeyrchenlyicihowernightlife9whitegzoeejeffhungsafariextensionsxkcdexplainedothreejedilinqweazjiingqingwang
 

Tumblr