讀書就像買積木,積木多瞭,你就能造你自己的城堡。——李自在
有幾件事情我們是習以為常的:
一是目前全球有很多種語言,比如漢語,英語,法語,德語,意大利語,葡萄牙語。。。。。。每種主流的語言都有豐富的詞匯;
二是人類有數千年的文明歷史,我們腦子裡有很多的名詞,比如希臘,羅馬,蘇格拉底和亞歷山大;
三是我們熟悉的數字系統有阿拉伯數字和羅馬數字,阿拉伯數字是進位制的,同一個數字在不同的位置上代表的含義不同。
但這些習以為常的事情都是一直如此的嗎,我們為什麼有這麼多的漢字,而為什麼有些漢字有好幾種不同的意思?希臘羅馬的歷史是如何記載和傳遞的?阿拉伯數字和羅馬數字都是一樣的嗎?
01
我們常說“存在即合理”,事物的發展往往對應的是現實的需求。
小時候我們經常聽到“文盲”這個詞,不少生活在農村的爺爺奶奶輩是不認識字的,在後人看來,這似乎是一種落後的狀態。
可為什麼會出現這種情況?前輩們不識字,也沒有影響他們的生活,為什麼後來大傢又開始宣揚“學好數理化,走遍天下都不怕”瞭呢?
費孝通先生在《鄉土中國》中給出瞭一種解釋,就是早期的中國廣大地區是農村,農村的特點就少數人聚居,世世代代生活在一個地方,這是一種人情社會。在這個人情社會下,人們之間的“契約”往往不需要白字黑字寫下來,而是通過關系紐帶而作為背書的,所以對文字的需求其實並不高。
而隨著城市化發展和人口遷徙,不同地域的人需要一套通用的文字標準進行信息傳遞,並且人們之間由於沒有幾代人建立起的信任,也需要通過寫下“合同”來進行締約,大到你買房買車的合同,小到你工作中的會議紀要,你在樓下煎餅果子攤賒賬的簽名都是這種。所以人們需要認識字才能在當下,特別是城市中更好的生活。
也就是說社會發展催生瞭對“識字”的需要,間接的促進瞭教育的發展。
文字和數字的起源也遵循這樣一個規律。
在很久很久很久以前,人們需要傳遞的信息很少,可能就像猴子一樣通過一些吼叫就夠用瞭。
然後隨著文明的發展,需要傳遞的信息越來越多,於是這種需求催生瞭語言和文字。
接著,當人們對記錄數量的需求不斷提高之後(比如貿易),就誕生瞭數字系統。
02
再聚焦一些,語言和數字也是經歷瞭從簡到繁的過程的。
按理說隨著文化的不斷發展,文字的數量應該隨著不斷增加,文化發展無窮的話,文字也會無窮。
但事實並不是這樣,當文字發展到一定量的時候就達到瞭需求和易用性的平衡,再多的話雖然能夠滿足瞭新的需求,但是人們用起來就太煩瞭。
舉個例子,我們有很多的美食,同時也有很多種餐具,但我們日常隻用其中一部分, 因為如果我們吃不同的食物都要用不同的餐具的話,那太麻煩瞭。
這一切是怎麼發生的?可能我們一開始隻用筷子吃面條,用勺子吃米飯,也就是說筷子和勺子最開始隻有一個作用,後來發現太麻煩,我們用筷子也可以吃米飯,這樣筷子就有瞭兩種作用。人們開玩笑說懶惰是科學發展的動力,我們發明新的工具,每個工具集成瞭更多功能。
文字也是這樣,讓數量到達一定程度的時候,我們就不再增加數量,而是把語義進行歸納,開始給一個字賦予更多的意義,這就是一次多義的由來,和筷子既能吃面條也能吃米飯沒什麼兩樣。
另外一個方面,常用的工具當然是越簡單越好,我們希望手機能打電話,能玩遊戲,能花錢,但是我們不希望它像筆記本電腦一樣大。
同樣的,“常用的都比較簡單”這點在語言文字中也適用,你看我這篇文章用的字比劃都不多,沒有魑魅魍魎,饕餮,耄耋這種吧;就算是英語裡,一般也就幾個字母,沒有"pneumonoultramicroscopicsilicovolcanoconiosis"吧(沒錯,這個一行都寫不下的是一個單詞,意思是肺塵病),人們寧願用Pneumoconiosis來簡稱。
這裡有一點很有趣,即使我們日常對話和文字都是一些比較常用的簡單字,那也比過去的甲骨文,隸書,或者楔形文字,象形文字復雜,這是為什麼?
當我們還再用電報的時候,因為電報是按字收費,所以一般人傢都惜字如金,因為錢有限,太貴。
當我們在泥板,龜殼,竹子上面刻字的時候,我們也惜字如金,因為時間有限,太費勁。
如果說從甲骨文到90年代互聯網發明前的區區幾千年,人類生活所需要處理的信息有多麼大的差異的話,我是不太認同的,全世界的信息可能在增加,可是對於我們的生活,自然沒變,喜怒哀樂沒變,所需要傳遞的信息量應該也沒有特別大變化。那從惜字如金到現在書很多,寫信也很多,就是因為信息表達的成本降低瞭。
而在成本高的那些年,人們需要把"好久不見瞭,真的很想見你一面,但是奈何我們相隔這麼遠,千山萬水隻能通過文字來寄托我的思念,看到這些字就請當我就站在你的面前。。。"簡化成一句"見字如唔"。
這種其實就是一種"壓縮",人們讀信時腦子中的翻譯就是"解壓縮"。和我們在一個電腦裡把1G的東西壓縮成500M,然後傳給別人再解壓沒有什麼區別。
壓縮的一個缺點就是會降低信息的質量,容易產生歧義,反過來說,文字的冗餘可以提高理解準確性。
我一貫認為"成見和誤解是人與人之間最大的障礙",所以不論說話還是寫文章都會盡量多描述一些,多舉些例子。可能會有些囉嗦,但是語言和文字都隻是載體,想準確傳達的信息才是最重要的。
03
繼續說文字。
一詞多義把我們需要詞匯量控制在一個合理的范圍,但另一方面也會帶來歧義。
其實翻譯就是在消除歧義的過程,而上下文的補充信息就是保證翻譯準確性的一種方式。上下文信息越多,信息越準確。比如把上面的問題改成下面兩個,答案是不是顯而易見:
我特別喜歡彈吉他的男生,你會不會彈吉他?
我知道你吉他彈得好,過幾天年會,你會不會彈吉他?
翻譯的準確性是伴隨信息量趨向100%的,但是永遠到不到100%。更何況對很多古代語言的翻譯其實沒有那麼多補充的信息,所以不準確也很正常。同樣的,現在的語音識別也有這個問題。
上面的歧義性還建立在“我們對字的意思有瞭解,隻不過拿不準在這裡用哪個意思”的基礎上。
那如果有一門語言已經失傳,也沒有更多的上下文,我們就沒法翻譯瞭嗎?
其實不是這樣的,因為語言隻是工具,最主要的是其想表達的信息,比如我想表達的是桌子上有一個蘋果,不論用漢語還是英文,用甲骨文還是梵文,其實傳達的信息是一樣的。如果我們通過其他語言的描述,或者通過歷史研究瞭解到這個想傳遞的信息,其實我們就知道瞭這個語言的意思,在樣本多的情況下可以通過對比等方法倒推出文字意思。如果你看過卷福主演的《模仿遊戲》,你會發現破譯密碼也可以使用相同的手段。
說到密碼,可以意識到,文字其實是一種編碼,是用來與信息對應的。
04
隨著人工智能的大熱,很多人都知道瞭“自然語言處理”這個學科。那什麼是自然語言呢?
比如我們說的漢語,英語,法語這類都是自然語言。
那還有別的語言嗎?
當然有,比如編程語言,它也是一種編碼,用來向計算機傳達信息,指導計算機行動。‘
編程語言的具體形式有很多種,比如由0和1組成的機器語言,像0001011110000101……,又或者我們熟悉的高級語言,例如Python, C++,Java……
而高級語言的定義就是參考語言學和數學,用類似自然語言的方式描述的一種語言,比如我們想表達:
自然語言:a大於b,則c等於0
高級語言:if a > b, then c = 0
(具體為什麼要用if ,then這種英文詞,而不是漢語法語日語,這就是另外一個話題瞭。)
繼續這個話題,如果說自然語言和編程語言都是對信息的編碼,為什麼不直接用自然語言來作為編程的高級語言呢?
本質的區別在於使用范圍不同。自然語言是自然而然發展的,它的描述對象是現實生活中的諸多細節的,這些細節數量極大而且在不斷發展,所以自然語言是開放的。
而機器語言隻用在特定范圍內,它的一個重要要求就是不能有歧義,所以是封閉而嚴謹的。
這也是為什麼現在AI的語音識別,文字翻譯等等都還有很長的路要走,就是因為其實是在通過一個封閉語言編碼去翻譯開放的自然語言。
就像拿直線畫圓,可以不斷分段來趨近,但是沒那麼簡單。
05
最後再說說數字。
我們生活中用羅馬數字比較少瞭,一般在表盤上還能見到。大傢可能都知道下圖一些常見的羅馬數字的意思。
如果你仔細觀察你會發現,羅馬數字的:
1~3其實就是從I開始,逐漸增加豎條,I,II,III
4~5轉換成瞭與V相關
6~8又在V的後面繼續增加I
你有沒有想過為什麼IV是4,VI是6,我想過,因為我經常寫錯。
我們認為羅馬數字就是數字,和阿拉伯數字對比就像漢語和英語一樣,隻不過不同的說法,實質沒什麼兩樣,其實不是的。
數字的發展也遵循著從簡到繁的過程(這個過程很有意思,我後面會單獨用一系列文章來寫),當我們需要處理的數字超過我們的十個手指和十個腳趾的時候,我們就面臨一個問題,怎麼辦?
我們實在不想用IIIIIIIIIIIIIIIIIIIII來表示21瞭,寫起來太累瞭,這樣是老師罰抄寫100遍,不得累死。
於是人們開始對數字進行編碼,比如印度人用5代表IIIII(為印度人發明阿拉伯數字正名),羅馬人用V代表IIIII,接著有V(5),X(10),L(50),C(100),D(500), M(1000)。
那麼如何把這些數組合起來表達其他的數呢?
阿拉伯數字采用按位計數法,通過進位制解決這個問題,即不同的位置上同一個數表達的意義不同,通過乘法來解碼。
而羅馬數字采用羅馬計數法,則通過加減法來編碼,小數出現在大數左邊是減,出現在大數右邊是加。
顯然進位制更加容易計算,在現實中應用也更加廣泛。
比如計算機的二進制,月份的12進制,時分秒的60進制,周的7進制,世紀的100進制等等。
為什麼不統一用一種標準?這裡面各有各的故事。但是更重要的是這種進制的思想。
好吧,就寫到這,下篇文章見。
本文參考書:[1] 吳軍. 數學之美[M]. 北京:人民郵電出版社,2014
未經同意,請勿轉載,如果錯誤,敬請指教。