為什麼沒有人創造一種中文的編程軟件?

小阿呆的故事


為啥總是追求中文編程,無論中文還是英文,只是一種載體,而英文或者說符號化在編程領域有著中文無法比擬的優勢,就是簡潔,比如if,英語只需要兩個按鍵,中文需要ruguo5個按鍵,還有,編程與英語無關,只是借用英語這個語言,英語啥都不會也不影響學習編程,一個編程語言就那幾個關鍵字,其他的都用拼音不也一樣,我就是學習計算機的,英語極差,但也不影響我學習編程


淺夢涼城


從這個問題來看,題主有一腔熱情,但是又對計算機編程的認識不夠深刻。在此先說明一下,不是沒有中文編程軟件,而是不實用,難以解決現實問題,所以知道的人並不多。

先看一段簡單的中文程序,關鍵字、類型、註釋等等全是中文,可是這對程序員來說,並沒有實際意義,甚至還不如使用英文關鍵字高效。為什麼這麼說呢,講點理論性的東西,就當是做一次科普,希望題主能看懂。

假設某計算機的全體機器指令組成的集合為X,從X中取出一些指令(可重複取同一指令)並組成一個有效的序列稱x,則x就是一段用機器語言編寫的程序。假設某高級編程語言的全體指令組成的集合為Y,從Y中取一些指令組成一個有效的序列y,則y就是一段用該語言編寫的程序。高級語言編寫的程序不能直接執行,需要編譯器(針對編譯型語言,如C/C++等)或者解釋器(解釋型語言,如javascript、python等)將它們轉換為機器語言,也就是將一個由集合Y的元素組成的變量,映射為一個由集合X的元素組成的變量,這就是編程軟件做的工作。所以從理論上來說,中文編程、英文編程、或者其它語言編程,只需要將集合Y中的指令和關鍵字換位不同的語言,就可以實現不同語言編程,這並不難實現,甚至不用改變編譯器的源代碼,只要使用一些技巧就可以實現中文編程,如上面的程序所示。

既然中文編程可行,為什麼沒有大範圍推廣呢,這就要從編程語言的功能說起。編程語言的根本功能是要方便將現實問題用一種高效的方式描述,並轉換為計算機可以理解和執行的指令。每一種編程語言就是一種描述問題的方式,對應有一套自己的方法論,比如彙編語言是面向指令的編程,C語言是面向過程的編程,C#、Java等是基於虛擬機的面向對象編程,Lisp是函數式編程語言,Ptyhon是混合編程,此外還有如Labview、Prolog以及PLC中的梯形圖,都有不同的編程模型與方法論。開發一門新的編程語言的本質就是要開發一套新的方法論,而這個一方面需要對實際問題的深度認識,另一方面需要紮實的計算機理論知識。

計算機最先起源於歐美,所以很多編程語言由它們發明是很自然的事情,但是隨著計算機應用的不斷推廣,我國在這方面也逐漸追趕上來,相信在不久的未來一定會有一套由中國人提出的編程方法論以及配套的編程語言。


編碼之道


首先明確一點,的確有人創造了一種中文的編程軟件,“易語言”就是,不過這麼多年了,基本處於沒人管的狀態了。

究其原因,個人覺得將程序語言由英文替換成中文其實是偽需求。原因如下:

第一、意義不大:

首先,雖然在常人看來代碼看起來特別難懂,就像是天書,但是大學只要學過計算機語言的都能知道,代碼裡那些看起來特別“高大上”“難懂”的英文只是表面工夫,重點是裡面的算法、邏輯。

比如一些代碼常用的英文,在一般人看來是:

Compile、Run、Class、Object、System、out、print、line、variable、type、static、array、parameter、method、function、public、default、get、private、import、set、package、access、protected、void、final......

但是常年跟代碼打交道的程序員看到的是:

編繹、運行、類、對象、系統、輸出、打印、行、變量、類型、靜態的、數組、參數、方法、函數、公有的、默認、得到、私有的、導入、設置、包、訪問、受保護的、無(返回類型)、最終的不能改變的......

所以,這樣對比下來,代碼裡出現的那些英文相對於四六級來說,簡直是so easy了~將英文替換成中文的意義不是很大~


第二、沒必要:

那些英文單詞根本就不是阻礙成為程序員的障礙,相反的,代碼裡那些一般人看不見的算法、邏輯才是最難學習的。

以一個C語言中一個經典的算法舉例。

題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。

不具備算法思維的人的方法:

一個個的試下去?費時費力不說,人容易變瘋吧。

具備算法思維的人的方法:

利用for循環控制100-999個數,每個數分解出個位,十位,百位。然後for循環一寫。

————————————

程序源代碼:

main()

{

int i,j,k,n;

printf(“‘water flower’number is:”); 

for(n=100;n<1000>

{  

i=n/100;/分解出百位/  

j=n/10%10;/分解出十位/  

k=n%10;/分解出個位/  

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)   

{   

printf(“%-5d”,n);   

} 

}

printf(“\\n”);

}

————————————

所以,還是那個觀點,語言不是難的點,算法才是!不管用什麼語言來書寫代碼,裡面涉及到的算法邏輯都是大同小異的,而代碼裡的那些算法一個比一個難,比如:

遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分治算法、回溯算法、動態規劃、字符串匹配算法等。

如果能學會掌握了這些算法,那麼,那幾個英文單詞又有什麼難的呢?


最後,最簡單的一點!

換成中文後敲鍵盤次數變多了啊~比如“RUN”,英文敲擊鍵盤3下,中文拼音輸入法敲擊鍵盤“yun xing”7下,對於時間如此寶貴的程序員哥哥們來說,浪費時間就是犯罪呀~當然了,這只是玩笑~


最後總結一下:

綜上所述,將代碼中的英文替換成中文意義不大且沒必要。

(以上觀點謹代表個人,如有不嚴謹的歡迎評論)


分享到:


相關文章: