從編程的角度看,什麼語言更適合自然科學

底層技術棧 發佈 2022-11-28T11:01:02.704851+00:00

「道德經」說,「天地不仁,以萬物為芻狗。」自然科學,以及它的載體語言,都是不以人的情感而轉移的。所以,什麼樣的語言更適合自然科學?從編程的角度來看,語言也是對科技人文的一種編程。既然是編程,那麼目的就是以最簡單的方式,編碼最多的信息。

「道德經」說,「天地不仁,以萬物為芻狗。」

自然科學,以及它的載體語言,都是不以人的情感而轉移的。

所以,什麼樣的語言更適合自然科學?

從編程的角度來看,語言也是對科技人文的一種編程

既然是編程,那麼目的就是以最簡單的方式,編碼最多的信息

只不過人類語言與程式語言有一個區別:電腦的編譯器都是一樣的,而人腦的編譯器是不一樣的

所以,程式語言沒有歧義的,但人類語言是有歧義的。

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種詞綴表示時態,在大多數的科技資料里就夠用了。

關鍵字: