對於以中序表達式為主的編程語言,不實現運算符優先順序,統一求值順序(例如從左往右)會是個好主意嗎?
01-05
就是說,就是說我不想用(* 3 (+ 1 2)) 這種而是 1+2*3 而且結果等於 9 才是符合預期的結果。嗯,抱著一種「世人笑我太瘋癲」的態度。
引子:王垠有一篇《談語法_王垠_新浪博客》是說這個問題的。
Smalltalk就是這麼搞的啊。實現起來特別方便,習慣了之後讀起來也特別方便,因為要改變求值順序的地方肯定都加了括弧,一目了然。就看這語言是設計出來給誰用的唄。只要用戶都不介意這個也沒啥。
我記得那個誰喜歡的 J 就是這麼乾的,然而以它的流行程度效果你應該知道了。
強行扭轉用戶習慣從來都不是好主意,更何況在這種完全沒有明顯優勢的情況下。
這要重新定義數學意義上的優先順序順序,然後大家才覺得不彆扭。
否則好處沒有,而且容易帶來bug但是卻不管優先順序怎麼定義,膽小的程序猿們都會用括弧來控制運算範圍
多打個括弧,少點出bug的可能。反正是電腦計算,開心的很。
題主,你想通過統一結合性的方式來解決優先順序問題是做不到的,結合性本來就是在優先順序相同的條件下才激活的一個特性
優先順序主要是為了避免括弧的過度使用,題主你要是取消優先順序,必然要有括弧來做補充
比如(1+2)*(3+4),如果不使用括弧,你刻畫那個語言是表達不出來的,換個角度說,沒有括弧就意味著你那個語言沒有「棧」
如果有括弧的話,確實可以沒有優先順序,比如LISP
總結:結合性解決不了優先順序問題,全部改成左結合或者右結合都影響不了優先順序,唯一能解決優先順序問題的是括弧
無論優先順序怎麼改,程序員還是會加括弧來維護期望的計算順序的
編程語言是給人看和用的。完美的編程語言接近人類語言。你說,你這表達方式能存活嗎?
現有的parse技術已經無所謂優先順序概念了
推薦閱讀:
※如何編寫高效的 R 語言程序?
※十一歲的兒童學編程該如何開始,有什麼合適的入門書?
※編程語言有韻律嗎?
※有人質疑PL研究,比如program slicing的價值。如何解釋?
※英語和數學不好的學渣能學計算機嗎?