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

2021-10-22 07:24:57 字數 1824 閱讀 9004

先看例子,你有乙個蘋果,你怎麼去描述它呢?假設蘋果有大小,顏色,位置。我們先看程式語言中如何表達:

public:

int color=0;

double volume=10;

double site=0;

}//...

int main()

.. 」將這三個序列從乙個序列各自分成連個序列,乙個屬性,乙個物件標識,說明它們是有結構的。

接下來我們看看自然語言對例子中蘋果的描述:

蘋果

顏色 大小

位置 在使用中,我們是這樣描述的:蘋果的顏色,蘋果的大小,蘋果的位置

可以看到,「的」字將蘋果與它的屬性連線了起來。

接著,我們讓「蘋果」發生變化,看下面**:

public:

int color = 0;

double volume = 10;

double site = 0;

public:

change_color(int color);

change_volume(double volume);

change_site(double site);}

從中我們可以看出,是乙個一對多對映關係的樹形結構。我們再來看自然語言的描述,蘋果移動了一下,蘋果放黃了,蘋果被吃了一口,我們也畫出乙個關係圖,如下:

現在,我們用另一種描述方式:蘋果發生了變化,*蘋果的顏色(位置、大小)發生了變化。還是畫出乙個關係圖,如下:

從上面的關係圖我們不難發現,蘋果被描述或者標識成四個屬性,在上乙個關係圖中需要三個動詞的描述我們將之轉化為乙個動詞。若我們用 a,s

,c,v

a,s,c,v

a,s,c,

v 分別標識關係圖中四個屬性,再用 f

ff 標識 發生,y

yy 標識 變化 ,那麼我們可以表示為下面的關係:

這個關係圖是不是接近數學上函式的定義,多對一的對映關係。由此,我們可以總結,不管是自然語言,還是程式語言對乙個蘋果進行精確的描述時,都會分離屬性,搭配相應的動詞與函式,將一對多的關係轉化到一對一。到最後乙個關係圖時,已經將多對一轉化到多對一,當到這一步時,我們已經能用數學中的函式工具進行問題處理了,在計算機**中,到這一步就是在具體函式中對類應用了。

在此轉化過程中,程式語言(以c++為例)採用. ::等符號分離,自然語言則採用 的 進行分離。由此,我們引申出乙個概念,多項式

先看一下數學意義上的多項式:a2+

2ab+

b2

a^2+2ab+b^2

a2+2ab

+b2 我們都知道這個多項式,是和平方公式,公式中有加法,乘法,平方三個運算。如果詳細展開這個公式,那麼如下:a×a

+2×a

×b+b

×b

a\times a + 2\times a\times b + b\times b

a×a+2×

a×b+

b×b從上面公式我們知道,×

\times

×,++

+它們在數學公式中或許有多種意義,但是不會變,而 a,b

a,ba,

b 作為代數項,它們是可以變的,把它們組合到一起,就是多項式。

引用數學概念上的多項式,定義:由多個不變的符號,以及可變的標識所組成的序列稱為多項式或描述多項式

回到上面公式,我們知道,確定公式各項的值,就能確定多項式的值。同樣,**…的…**左右兩側的項能夠確定值,那麼就能確定這個多項式描述的是什麼了。對於其中的 值,定義:對於乙個描述多項式,其各項的值稱為語義

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

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

關於編譯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 第三 也是今天遇到的,路徑不要太長,太長也會...