關於中文編譯的一些設想 1

2021-10-19 09:27:26 字數 3449 閱讀 4531

對於已經習慣於現有編譯體系的我們來說,或許是想象不到真正的中文編譯究竟是何種模樣。又或許是計算機專業人與包括筆者的我們來說,思考角度存在偏差,致使我們對中文編譯的那些「中文編譯是黑科技」,「文言編譯」等天馬行空的想象,看起來像是為難計算機專業人的髮際線。

不過,對於中文編譯,筆者始終期望能夠在現代編譯體系中佔據一席之地。筆者也絲毫不懷疑,中文編譯能不能實現,因為筆者始終堅信,編譯語言採用英語只是因為它的發明者的母語恰好就是英語。

就筆者個人感悟來說,平常交流寫作中,往往關注語義方面,而不會太多關注語法方面,且還是筆者中學開始學習英語時才初次了解語法這個概念。所以筆者選擇從語義作為切入點,就此**中文編譯未來的可能模樣。另外,筆者對於語法的認知是,語法是對語言應用的總結歸納,因此,筆者選擇語義作為切入點,就此**語義推導出語法的可能。

什麼是描述,先看例子:

桌面上有個蘋果,這時,你是直接觀察者,你的朋友問你,你看到了什麼,你回答說,「桌面上有個蘋果」,這句話就是對你看到的場景的描述。

從上面的例子可以看出,觀察目標,我們用 a

aa 來表示,你朋友限定的觀察方式「看」,我們用 f

ff 來表示,描述,我們用 b

bb 來表示。現在,我們可以將三者的關係為:b=f

(a

)b=f(a)

b=f(a)

,讀作對於觀察方式 f

ff,b

bb 為 a

aa 的描述。

這時,你觀察到蘋果被移動了一下,描述跟著改變,「桌面上有個蘋果,它被移動了一下」。描述改變了,因此我們用 c

cc 來表示。觀察方式不變,觀察目標不變,而觀察目標的狀態變了,因此,我們用 a′a'

a′來表示狀態變化,那麼三者關係表示為:c=f

(a′)

c=f(a')

c=f(a′

)進一步思考,例子中觀察目標的狀態變化是 a

aa 到 a′a'

a′,而描述從 b

bb 到 c

cc ,這個過程我們可以表示為:b→c

=f(a

→a′)

b \rightarrow c = f(a\rightarrow a')

b→c=f(

a→a′

)接著思考例子,作為直接觀察者的你觀察到的是乙個場景,而你的朋友問你,「桌面是什麼顏色,蘋果是什麼品種」。如果要回答這個問題,你需要對觀察的場景進行解構描述,即,場景由什麼組成。在例子中,我們看到,場景是由「桌面」,「蘋果」組成,我們分別用 d

dd 和 e

ee 來表示。那麼,對於觀察方式 f

ff ,描述可以表示為:=f

(a

)\ = f(a)

=f(a

) 。而例子中,兩個物體又具有空間關係,進一步可以表示為:de=

f(a)

de =f(a)

de=f(a

)。假設,這是蘋果沒有被移動,那麼可以得到:b=d

eb=de

b=de

,其中 dede

de表示兩個物體的任意空間組合共同描述。

現在,我們接著回答問題「桌面是什麼顏色,蘋果是什麼品種」。桌面顏色我們可以直接看到,即觀察方式不變,而蘋果什麼品種直接看是看不到的,即觀察方式有所改變,用 m

mm 來表示。若將觀察目標變為蘋果,那麼描述可以表示為:g=f

m(e)

g=fm(e)

g=fm(e

) 。其中 fmfm

fm表示兩個觀察方式。

接著將觀察目標變為桌面,觀察方式沒有變,但是是由「顏色」還有「位置」共同描述桌面,即桌面解構為兩個屬性。這時,我們可以用剛才解構場景的方法,解構描述桌面。桌面的「顏色」用 dcdc

dc來表示,桌面的「位置」用 dsds

ds來表示,那麼可以得到桌面的描述為:=f

(d

)\=f(d)

=f(d)

描述空間

定義一:

對於任意觀察方式 f

ff ,觀察目標 a

aa 的描述表示為集合 k

kk 時,稱這個集合為 a

aa 的描述空間。當描述為 k

kk中任意個元素組成的任意有序序列時,稱此描述為描述向量

定義二:

對於任意觀察方式 f

ff ,描述系統 a

aa對被描述系統 d

dd 的所有描述構成的集合,稱此集合為d關於a的描述空間,記作 a′=

f(d)

a'=f(d)

a′=f(d

)。在講解這一段前,我首先要感謝我們的先輩們,是他們創造了文字,並留下乙個龐大豐富的文字元號體系,讓我們不再為標識事物而絞盡腦汁用何種事物來標識。

回到正題,什麼是標識,最為簡單的回答是分門別類,用易傳中的描述講,方以類聚,物以群分。

簡單例子,分蘋果,蘋果在我們的觀念中可以在不同場合中可以用乙個符號a標識它是蘋果。設現在有三個蘋果,我們可以分別用a,a,a標識,因為在觀念中它們是相同,而分給三個人後,還是三個蘋果,但所屬關係不一樣了,所以,我們可以這樣區分,i,y,h,代表三個人,每人的蘋果就可以這樣標識,ia,ya,ha。

由此我們可以引申出標識的定義,標識是用於區分事物的,讓被標識事物具有與標識相同的描述的事物。這是一般的定義,我們觀念中的標識一般是指我們所用的龐大複雜的文字元號系統。

定義的解釋先放在一邊,我們先想乙個問題,在討論描述時採用了乙個描述事物的方法,那就是繪畫,那麼我們能不能畫出世界上所有的事物?或許可以。在這裡我們假設可以描繪出世界上所有事物,且存在觀察手段f,使得它們不同,又存在觀察手段m使得它們相同,那麼它們它們能不能描述世界?

這個問題轉化過來,就是有沒有無限個符號,且它們互不相同,用於描述世界上所有事物。而這些符號又可作為標識,來標識事物的屬性。

這個問題筆者不知道答案,而且筆者個人認為這個問題是沒有意義的。不過,從這個問題我們可以反過來看,有限個不同的符號能不能描述世界上所有事物。這個問題,先輩們已經給出一部分答案,那就是我們的文字元號系統。

我們的文字元號系統是有限個不同符號組成的系統,為了應對複雜的描述,我們建立了以一維有序序列為基礎的書寫體系,這部分是標識的核心。

在忽略文字元號的自然語言語義後,可以將之單純的用作識別符號。在標識超出文字元號數量的事物時,採用一維序列方式進行標識,尤其發展出兩套標識方法。

第一,迴圈遞進標識法,對應現代數字符號系統,比如,十進位制的0,1

,2,3

,4,5

,6,7

,8,9

,10,11

……

0,1,2,3,4,5,6,7,8,9,10,11……

0,1,2,

3,4,

5,6,

7,8,

9,10

,11…

…第二,結構標識法,對應現代代數系統以及自然語言。比如,a+b

a+ba+

b,自然語言中的語法,就屬於結構標識法。

關於這兩個標識法,留待下一章討論。

關於中文編譯的一些設想 3

先看例子,你有乙個蘋果,你怎麼去描述它呢?假設蘋果有大小,顏色,位置。我們先看程式語言中如何表達 public int color 0 double volume 10 double site 0 int main 將這三個序列從乙個序列各自分成連個序列,乙個屬性,乙個物件標識,說明它們是有結構的。...

關於編譯opencv contrib的一些總結

首先說下我的程式設計環境 win10 64 位 vs2017 opencv3.3.1dubug opencv2.4.9 提到opencv2.4.9的原因 opencv2.4.9為十分經典的版本,如果在多次編譯opencv contrib未果的情況下,不妨可以退回到opencv2.4.9,實測在上述環...

關於編譯的一些感觸

今天因為需求去編譯qt5的時候遇到錯誤 nmake fatal error u1077 cd 返回 0x2 以前編譯opencv的時候也遇到很多編譯錯誤 我說一下感觸 第一 不要帶中文路徑 第二 路徑不要帶空格,比如這種program files x86 第三 也是今天遇到的,路徑不要太長,太長也會...