「道德經」說,「天地不仁,以萬物為芻狗。」
自然科學,以及它的載體語言,都是不以人的情感而轉移的。
所以,什麼樣的語言更適合自然科學?
從編程的角度來看,語言也是對科技人文的一種編程。
既然是編程,那麼目的就是以最簡單的方式,編碼最多的信息。
只不過人類語言與程式語言有一個區別:電腦的編譯器都是一樣的,而人腦的編譯器是不一樣的。
所以,程式語言是沒有歧義的,但人類語言是有歧義的。
1,自然科學的基礎是第一外語,
自然科學,不受地域文化的影響,在全宇宙都是通用的,自然也可以在全球範圍內交流。
如果不能及時在更大的範圍內交流,那麼自然科學就肯定會落後。
古埃及的衰亡、瑪雅文明的衰亡,都是因為過於偏僻,很難與其他文明交流而導致的。
要在全球範圍內交流自然科學,使用的大多是第一外語。
大多數科技文獻正好是母語的情況,從概率的角度來算,非常少。
雖然英語的科技文獻非常多,但我的scf編譯器框架的文章全是中文的[捂臉]
我沒寫英文文章,估計也沒人把我的文章翻譯成英文。
所以,自然科學的基礎是第一外語。
第一外語與母語相比,它的學習時間更短!
母語是什麼?
母親的語言。
還不會說話的時候,老媽教的什麼語言,母語就是什麼語言。
所以,第一外語的學習時間是遠不如母語的。
如果是第二外語,那學習時間會更短。
所以,自然科學的載體語言,必須簡單易學!
法語,據說學起來先難後易,所以它不適合寫科技論文:第一關都過不了,誰還有興趣等它後易的時候?
就算是C語言,它也得先hello world,後指針。
不可能說先指針,然後說等指針學會了,剩下的1天就看會了:要是這樣,那換本先hello world的書顯然更容易。
總之,簡單易學,入門曲線要平滑,是必要條件。
這是由第一外語的學習時間所決定的。
所以,自然科學的載體語言,只能是拼音文字。
不可能在給國際期刊寫論文之前先要學上幾千個象形文字,大多沒這個時間,除非是母語。
母語,可以看做是遺傳自母親的先天語言,後天騰不出那麼多時間去學。
拼音文字簡單,認識幾十個字母,就可以湊合著寫一篇文章[捂臉]
2,多少個字母最合適?
50-100之間,這是從查找效率來考慮的。
32 = 2的5次方,
64 = 2的6次方,
128 = 2的7次方,
4096 = 2的12次方,
可以看出,字母個數從64增加到4096,查找的難度增加到了2倍。
如果人腦的底層機制跟電腦一樣使用二分查找的話,3000個漢字的難度是26個英文字母的2倍。
這對第一外語的人影響很明顯,外國人學中文,絕對比我們學法語難得多[捂臉]
字母數如果太少的話,則單個字母的信息量不夠。
我說過詞法分析的數學原理,就是利用空格降低樣本空間的個數,提高信息量。
單個字母的信息量,就是字母的總數N:它的作用是把不確定度從 1/N 提高到1。
如果字母的個數太少了,那麼詞的長度就會變大。
計算機使用二進位,相當於只有0和1兩個字母,所以機器指令是非常長的!
如果把機器指令的二進位碼寫出來,估計沒幾個人看得懂,程式設計師實際使用的是16進位。
在只有1個字母的情況下,16進位是2進位的8倍效率。
如果2個字母,16進位就是2進位的8^2 = 64倍效率。
從數學上看,這就是字母個數對語言的影響。
當然字母個數太多了也不行,因為查找效率會降低。
計算機的出現,更是對字母個數添加了額外的限制:鍵盤的大小有限,太多了放不開。
3,打字和寫字有什麼不同?
打字,相當於把寫字的過程記住了、簡化了。
寫字,是手在紙上的二維運動過程,它消耗的時間更多。
打字,相當於把這個過程提前轉化成了一維的,點一個按鍵就行,消耗的時間更少。
小孩子算 5 + 8 = 13很慢,因為Ta是一個個的數數:
sum = 0;
for (i = 0; i < 5; i++) sum++;
for (i = 0; i < 8; i++) sum++;
printf("5 + 8 = %d\n", sum);
以上是小孩子算數的C代碼[呲牙]
成年人算5 + 8 = 13很快,因為他早就記住了,只需要查表就行:
printf("5 + 8 = %d\n", sum[5][8] );
這是成年人算數的C代碼!
個位數的加法,成年人的時間複雜度是O(1),小孩子的是O(N1 + N2).
與之類似,打字的時間複雜度是O(1),寫字的時間複雜度是O(N),N是跟字形有關的筆畫長度。
總的來說,字母的個數應該在50-100之間,是這幾個因素決定的:
1)查找的效率,
2)字母的信息量,
3)打字的效率,
4)鍵盤的大小。
英語和俄語的字母個數都是偏少的,所以它們的單詞都很長。
4,縮寫符號只能在右上角,不能在字母上方,
在右上角,字母和縮寫符號還是一維排列。
在正上方,字母和縮寫符號就是二維排列了,在鍵盤上怎麼打出來?
所以,牛頓的導數符號不合適了,萊布尼茨的導數符號更合適。
像上圖這種撇號加在字母上方的,是把它當作單獨的字母,還是在鍵盤上另加一個類似shift的按鍵?
字母要儘量一筆寫出來,同時空白區域要儘量大。
一筆寫出來,書寫速度更快。
空白區域越大,對人眼的干擾越小。
5,名詞和動詞需要有點詞綴變化,
有點詞綴變化,但不能多:超過5種就沒有意義了,因為人眼難以第一時間區分。
主調函數,caller.
被調函數,callee.
英文雖然沒有格的概念,但這兩個詞實際上就是主格和賓格。
在計算機的文檔里,末尾的這點詞綴區別,是程式設計師避免歧義的關鍵。
所以說,自然科學的載體語言,需要有一點點的曲折度,不能是純分析語。
程式語言可以是純分析語,是因為它的編譯器是通用的。
但是人腦的編譯器,每個人都有點區別[捂臉]
純分析語,相當於把語義全放在了語法層面,而不是詞法層面。
這會放大作者和讀者的「編譯器差異」,產生歧義。
因為詞法分析的分隔符是明確的,就是空格、逗號、句號,etc.
語法分析就不一樣了:就算是程式語言的語法,也是存在大量的複雜遞歸的。
實際的人類語言,比這更複雜。
所以,名詞和動詞在詞法層面保留一點詞綴變化,可以極大地降低歧義。
詞綴變化的數量,不能超過5種。
我覺得,名詞有2種詞綴表示主格、賓格,動詞有5種詞綴表示時態,在大多數的科技資料里就夠用了。