學習形式語言有什麼用?
最近想要學習一下形式語言,但一直不太明白形式語言除了學術討論外還有什麼其他用處.
形式語言很多時候會被賦予一些莫名其妙的功用,這種功用本身是不切實際的。
最經典的例子就是絕大多數人的錯覺:學了(形式)邏輯會不會腦子清晰啊?大概不會,腦子不清晰的人學不懂,就算考試過關了,那也只是照貓畫虎罷了。真的頭腦清晰需要進行大量的具體思考,而不是單純的看看邏輯教材那種學(無意貶低醫學生,但是很多人頭腦中的學習模型是那種醫學生式的死背書+數學系學生式的死刷題)。
另一方面,卡片選擇實驗告訴我們,具有相同邏輯形式的問題,由於受試者對於相關內容的敏感與否,會得到不同的反應速度,乃至不同的反應結果。(參:邏輯思維和直覺判斷哪個更容易幫助人們做出正確的決策?)所以單純地說學個邏輯,學一門形式語言,一種純形式上的推導,看上去你好像學到了什麼,但是這種東西在你具體應用中你就是看不出來,而那些本身具有對應能力的人,不去將這些東西形式化也能看出哪裡有問題。
同樣地,形式語言作為一種理想語言本身也是奢望。關於理想語言的吐槽,見:
- 語言能否完整地表達思維?
- 語言可以做到邏輯上的絕對嚴謹嗎?
- 哲學論證有可能像數學一樣精確嗎?
簡單來說,語言使用的精確性本身在於說話者和聽話者是否有相同的語境以及邏輯能力。如果使用者沒有這種能力,那麼精確的東西他無法理解,如果使用者有這種能力,那麼自然語言和形式語言並沒有太大區別。就像是精確的法律辭彙如果你望文生義也會出很多亂子。
那好,既然形式語言的學習並不能讓你的思維變得精確,也不能讓交流變得精確,那麼作用是什麼呢?
大概有如下用處,不過不太確定這些用處之間是不是獨立的。
篩選讀者。這就不展開說了。量子力學弄得大家都能討論,狹義相對論弄得大家都能討論,但是你一寫薛定諤方程,一寫洛侖茲變換,傻逼們就閉嘴了。畫個費曼圖好像大家都能做到,但是你把後面的式子寫出來大家就慫了。
打包概念。打包概念並不是一個特別的功能,只不過形式語言本身會用一種特別的方式將這些東西明細出來,比如說邏輯學裡面,如果你要舉例子,隨便一個人名都三五個字,長的十幾個字都有,但是告訴你說用 表示 Alexander ——瞬間就簡單了。此外還有各種邏輯常元的使用,當我們在使用 的時候我們非常清楚地知道我們使用的不是 。當然這或許依賴於一個額外的層面。
肅清語境。我們習慣用特定的符號來表示特定的東西,這種約定俗成就像是書面語一樣,將語境嚴肅化,這種嚴肅化當然和書面語那種意義上的嚴肅化不同,這是用來,比如說,讓人知道這裡不存在任何修辭、比喻、反諷等模糊的東西,也不會有雙關或者歧義。(注意,這並不是說形式語言本身一定不能表達這些,顯然是可以的,畢竟我們有哥德爾編碼。問題是我們默認了當如此這般說話的時候,我們就是在學術意義上非常嚴肅地討論這些問題)
加速識別。符號通過字體和呈現形式跳出來,使得辨認識別的速度加快。當然這種效果並不限於形式語言,有一種類似的操作是古文中給所有人名加上下劃線,或者像德語那樣所有名詞大寫——這種做法有助於人們快速意識到這是一個不普通的概念。但是有時候形式語言也會令人噁心,比如說在加各種上下標的時候,你看 i、j 真是想死。有些地方你發現結論過不去,結果發現——媽的他不是說所有的 而是說所有的 你怎麼不去死呀哼!
區分元語言和對象語言。正如 Wittgenstein 和 Anscombe 所注意到的,有些時候哲學討論的含混性在於我們使用同一種語言同時進行語法討論和使用。當我們在進行語法評論的時候,我們並沒有在日常意義上使用語言。許多哲學結論,尤其是形而上學結論,作為語法結論是普遍有效的——語法結論的特質使得它不可錯,而人們卻又忽略了其作為語法結論本身的無用性,而試圖從語法中得到經驗的內容。比如說如果你規定只有會死的東西才算作是人,那麼「人皆有死」就是一個平凡的句子,但是你卻又試圖用一種超越的方式去讀這個句子,得到某種生物學上的結論,那就會很荒謬。
形式符號非常明確地將我們考察的部分和我們計算 的部分分離開來。使得我們明確自己的爭論到底是在設定上還是計算結果上。
當然這種區分本身也並不是非得用符號不可,畢竟語言中可以通過引號來區分使用和提及,而如果一個概念要落入到第三類,迫使我們不得不加入一個額外的符號來進行區分的話,那麼對於這個概念的理解本身很多時候會出現如下窘境:如果我們不理解這個第三種情況我們就沒有辦法知道什麼情況下應該加這個額外的符號,但是如果我們理解了要怎麼將這第三種情況額外挑選出來,那麼我們也就沒有必要畫蛇添足插入這個符號了。類似的論證也被 Kripke 用作批評 Donallan 的指稱性用法(referential use)和歸屬性用法(attributive use)——如果我們有能力在語言中通過加入某種方式(比如說一個語音上的變調)來區分這兩種用法,那麼我們就掌握了區分這兩種用法的能力,因此我們也就沒有必要加入這樣一個語言習慣。而事實上就是我們區分不了這兩種用法,因此這種形式上的修整也是不可能的。
輔助符號的使用。形式語言中最重要的輔助符號是括弧。很多日常語言中模糊的句子都是因為括弧的混亂。
摹狀詞理論常有的兩種對於否定的解讀是因為否定到底放在了括弧裡面還是括弧外面。
當今法國國王不是禿頭:
- 寬轄域翻譯
- 窄轄域翻譯
類似地,模態的 de re 和 de dicto 的兩種讀法,比如「黑牆必然是黑的」:
- de dicto:
- de re:
很多時候也是因為模態詞到底有多大的轄域——這種轄域本身在日常語言中是體現不出來的,因為作為副詞的必然(necessarily)可以放在句子的任何地方,而不影響這兩種可能的讀法。同理,信念的 de re 和 de dicto 並不因為「A believes that」這個信念運算元可以放在最外面就避免了歧義。
除了形式語言本身的用處之外,學習形式語言還有一些額外的用處,比如說順便學學代數或者編程,讓人更習慣某種思維方式。但是這些都是長期訓練的結果,而絕不是考前翻兩晚書就能搞定的。
大概就這樣。
有用。
只說我接觸過的:編程語言編譯器的實現與形式語言理論有關。目前的編程語言大多都依賴於上下文無關文法。譬如詞法分析和正則表達式對應於正則文法。語法分析有很大的一部分是關於上下文無關文法的。
正則表達式有多有用就不贅述了。單說編譯原理的部分,不要覺得學會編譯原理就只能寫編譯器了,然後自己不寫編譯器也用不到。NAIVE!處理 XML 和 json 字元串啦,查找蛋白質模式啦,Web 的模板引擎啦,代碼的語法高亮,自動生成代碼,轉化代碼到 UML 圖,OpengGL 里的 shader 啦等等有各種各樣好玩的應用。這些都是和形式語言相關的。
差不多就這樣,想到新的了再補充。形式語言相對來說沒有二義性和斷詞之類的問題,而且更方便演算。
然後,具體的用途嘛。。。既然題主想知道學術以外的作用,就。。。可以用來畫漫畫(大霧)
(不過我有故意引入一些二義性,也沒有嚴格的語法,所以純屬娛樂)
(對這個漫畫感興趣的話,漫畫的微信公眾號是AtWildDo)
形式語言嘗試將語言的語法分離出來,用另外一種語言精確描述它。
如果可以將語言的語法,當做數據動態載入,那麼編譯解釋器就可以同時識別多種語言。
模式識別技術,就是把模式抽象成數據來比較,分析,判斷。其本質還是對某種數據序列的文法抽象。硬著頭皮答一下形式語言很重要 減少溝通誤差 邏輯性有保障 雖說中國語言 文字 什麼的博大精深但對於無知的話在博大精深的表達也會形成溝通誤差 誤差就是有知和無知之間的知識差距往往使雙方溝通大大降低效率,再到執行事件的效率更低甚至是事與願違而數學等等公式表達似乎更準確簡潔、把語言公式化或者把集合中的個體知識的量提到同一個維度誤差也許會小點。上段話就是亂看東西滿網的檢索搜集來的辭彙混到一起的。如此的混亂想想形式語言很重要吧!
推薦閱讀:
※邏輯學專業人士如何解釋看下面這道邏輯題?
※如何看待抗日神劇?
※為什麼《無間道》1、2 各有一個 bug 還能成為經典?
※有哪些佛經,論,能在邏輯嚴謹,思辯深度上勝於《楞嚴經》《金剛經》?
※「寧可信其有,不可信其無」有何依據?能否從博弈論角度解釋?