為什麼中文不能用來編程呢?

大街鳳凰島

不是中文不能用於編程,而是目前來說並沒有一個成熟的中文開發者生態!

  • 中文編程早就有,但不能當飯吃

其實不是沒有中文編程,軟件工程師吳濤先生,現在是大連大有易語言公司的總經理,就已經開發出了一套中文編程語言,並且有開發工具,但是因為應用場景有限,生態不夠,而且語言本身也具有很大的侷限性,所以沒辦法得到普及。

2001年1月:發明了中國自主知識產權的中文編程語言——易語言。總體設計、詳細開發、所有的關鍵技術全部由本人完成,70多萬行的源代碼也均由吳濤本人具體編寫實現。

這是關於易語言誕生的介紹,但是這款語言終究不可能像Java、C、C++、C#、JavaScript等等編程語言一樣,成為主力開發群體的編程語言。並且語言在設計上有很多問題,而且很多設計參考了微軟的VS等體系,再加上沒辦法獲得開發者生態支持,自然沒辦法成為主流語言。

  • 為什麼沒法普及,因為歷史沿革

大家要明白一個問題是,那就是計算機科學技術,這門學科領域從一開始就是來自英語世界的,從操作系統,網絡通信,TCP/IP協議,編譯原理,算法,數據結構,編譯原理等等包括你今天說的internet互聯網,幾乎全是那群用英語的人發明的。

你瞭解的unix/linux啊,macOS啊,Windows啊,vim啊,emacs啊,C啊,C++啊,Java啊,swift啊,Lisp啊,visual studio啊等等與計算機有關的工具都是基於英語環境以及英語使用者設計的,這就是根本原因。

舉個例子,有幾個人會用毛筆寫英語?有幾個人會用川菜的做法做沙拉?又有幾個人會用古箏和枇杷給搖滾樂伴奏?

  • 基礎研究差很多,我們仍需努力

其實這是歷史沿革,也是沒有辦法!

我們在基礎研究領域,比如操作系統,半導體芯片,深度學習,開發生態等等基礎研究領域還跟美國有很大差距,這是沒辦法迴避的事實,要知道我們國家有計算機比美國落後了多少年,在核心專利核心技術領域的差距不是一天兩天能縮短的。

好在今天因為移動互聯網的發展,我們在應用開發領域的進步已經是行業領先了,未來這些大公司將會逐漸承擔起底層生態建設的重任。

最後總結是我們不能夜郎自大,但也不要妄自菲薄!

我們目前已經有了很多進步,我們的鳥哥惠新宸就是PHP核心開發組的三個成員之一,我們也有白鷺時代這麼棒的開發者工具生產商,我們還有Hbuilder這麼棒的前端開發工具,餓了麼基於Vue做出了這麼棒的element,螞蟻金服打造了ant design這麼棒的設計語言,阿里巴巴做出了最棒的商業化Java代碼規範......

作為一個一線技術行業從業者,我想說的是:我們有差距我們知道,但是我們從來沒有放棄過努力!


EmacserVimer

作為科班出身的碼農來幫你解惑吧,其實根本沒有英文編程還談什麼中文編程,事實上我們都是用C語言、C++語言,JAVA語言,Python語言編程,它們都有自己的語法,用的也不是英文語法。編程中用到的英文實際就是一些關鍵字(類名,函數名,變量名等),都是很簡單的字符,其實跟自然語言關係不大,對機器而言最後都是0和1,跟自然語言更沒關係。編程對國人不友好的其實是好的教材、資料、說明都是英文的,閱讀起來困難一些。

程序員編程、然後編譯、處理器執行,這就是程序,這裡面編譯器還是老外寫的呢,操作系統底層還是C語言。不考慮這些,先用C語言寫個最簡單的hello,world看看換成中文是什麼樣的

#include
int main(void)
{printf("\\nhello world!");
return 0;
}

翻譯成中文就是

#包含
整型 主函數(無返回)
{打印(”\\回車換行 hello world!");
返回 0;}

明顯更麻煩,而且沒必要,你就是英文再爛這些簡單的單詞還是可以記住的吧,事實上編程語言也一直在改變,最開始都是0和1,然後因為太不友好有了彙編語言,後來又有了C語言,再後來可視化的IDE編程崛起了,對於大眾來說有更簡單的編程,比如按鍵精靈這樣的,還有一些啟發智力的編程機器人,都是最簡單的編程,而評論里人們說的易語言啟蒙編程還行,工作就別想了,勝任不了訓練的是一種編程思想,如果你糾結於中文還是英文,即便全改成中文你也學不好。


補充

中文和英文都是自然語言,不是編程語言,如果認為編程的門檻是幾個英文單詞的化那這人對編程的認知基本是零。

C++ 發明人都是丹麥人,母語是丹麥語。

Python 的發明人是荷蘭人,母語是荷蘭語。

Ruby 的發明人是日本人,母語是日本語。

Pascal 的發明人是瑞士人,母語估計是德語。


萌哈科技

首先,編程是可以用中文的。只不過大部分的編譯器都是外國人寫的,國人寫的編譯器寥寥無幾。那怎麼用中文編程呢,其實很簡單。

比如用中文編程,打印hello world,那可以把所有的英文字母,英文字符替換成中文的。同樣能夠用文中編程,實現打印效果。替換代碼如下:

QString tmp = str.replace("主函數\

火星一號

要回答這個問題,我們首先要從電腦程序運行基本說起。電腦本身只能識別0和1組成的機器碼指令,為了方便對機器代碼的記憶,人們就用英文字符代替機器碼。例如x86的指令mov,對應的機器16位代碼0x88, 二進制代碼10001000。這些英文字符的集合就是彙編語言。彙編語言是最接近機器語言的編程語言。高級語言,例如c,java等等,都需要用編譯軟件把他們的代碼編譯成彙編語言,或者用匯編語言來對代碼進行解釋。前者叫做編譯型高級語言,後者叫做解釋型高級語言。無論那種高級語言,在機電腦上運行最終只能是機器碼。在電腦編程語言的發展中,大部分都是英美研發和設計的主力,所以都是英文作為基礎,所以編程語言都是英文的。

其次,電腦的發展都是英文系統先發展。中文系統相對比較落後。早期的電腦系統都沒有中文,還要專門的硬件和軟件來進行漢化。早期有什麼漢字卡,南極星、中文之星等漢化軟件。而且早期的電腦的內存小,按照k計算的,不像現在是按G計算的,英文就26個字符+符號就能解決輸入,而漢字系統一二級字庫就要200多k,極度不方便。所以一直未有漢字做為編程的語言出現。

其實中文是可以用來編程的。編程語言都是用關鍵字來做代碼的。關鍵字可以漢字來代替。例如if,就用如果,while就用當,函數printf就用打印,等等。不知道有多少人玩過中文的logo語言,我小時候玩過,在apple ii電腦上,全部指令都用中文拼音代替了,例如repeat,變成了chongfu, 蠻有意思的。

我覺得用中文編程還是英文編程,就像用c還是java一樣。關鍵不是編程工具本身,而是要實現的功能和算法。


Cosmo777

學過計算機的應該都知道計算機語言經歷了機器語言,彙編(偽機器語言),高級語言三個階段。

假設我們要計算1+2(數值先不管,我們只看+號,)。計算機可不認識什麼加號,它只認識0和1。

計算機誕生之初,只有人來遷就計算機,我們就假定0000 0001這段代碼表示加法,當計算機讀到這段代碼時計算機就知道它要將兩個數值進行相加了(最開始就是這麼幹的,用打孔器打孔,打個凍表示1不打表示0,然後把紙帶也即'程序'輸入給計算機)。這就是機器語言。

這麼做的效率顯然效率非常低下(比如一個幾十頁的紙帶,錯打了一個孔,吼吼……),也不方便人去理解,怎麼辦呢,我們可不可以用一個短語(詞)來方便我們記憶呢?當然可以,然後約定俗成就讓“ADD(話說如果是中國人發明的,這個可能是[加]了)”替代0000 0001 來代表加法,這個時候程序大概就變成了ADD 1 2,我們將這個輸入計算機,可惜了,計算機還是不認識,仍舊需要轉換成 00000001 1 2的形式計算機才能理解,只要能開發出門轉換的工具(核心技術),事實上就是這麼做,這個時候人只需要關注ADD就可以了,剩下的可以不管,交給轉換工具來處理。這是彙編語言(第二階段),相對機器語言而言,更加接近自然語言,更加方便人去理解成語了。

但是彙編語言仍舊是是直接操作硬件,對人仍舊不友好,然後就出現了高級語言,高級語言仍舊需要將程序翻譯成計算機可識別的代碼,這個翻譯的過程肯定不是漫無目的(比如add,不能說我第一次翻譯成加,第二次翻譯成減吧),它仍舊需要遵從一定的規則(這個規則就是各個編程語言的語法[關鍵字],比如c語言的print,就是打印,當碰到這個關鍵字時就會分解成多個指令調用計算機硬件完成向計算機屏幕打印信息)(聽到有人說中文的多意性導致計算機不識別的,真想呵呵你們一臉!)

其實從這個角度來說,高級語言就是一套語法,然後和這套語法對應的翻譯器。這套語法怎麼實現無所謂(中文也OK),只要你能有對應的翻譯器將這個翻譯成計算機可執行的程序……

不難看出計算機語言的發展是越來越接近人類語言,越來越方便人的理解的,所以也有人提出計算機語言的發展到最終的結果就是自然語言。

總結一下吧,中文編程肯定是可以的,問題是值不值得?有沒有必要的問題??

這是我個人的一點粗淺看法,礙於能力見識,可能有不對之處,歡迎指正!


_笨_鳥_慢_飛_

誰說中文不能去編程?中文也是有編程語言的。大家可能不知道有一款編程語言叫做易語言,他也是用中文來編寫的,它誕生的時候是十分的,也很抓眼球,但是他沒有走好,發展的也不壯大,以至於很多人都不知道還有這麼一款編程語言。

中文是可以編程的,只不過目前對於我們來說,中文編程還是比較的麻煩,為什麼這麼說呢?首先,我們的鍵盤都是輸入我寫字符和字母,而電腦裡要顯示中文,必須通過這些字符和字母進行一次轉換,也就是我們的這些輸入法。對於程序員來說,你能用字母來完成的事情為什麼還要再轉換一次,來增加工作量呢?這也是中文編程,不溫不火的原因。

所謂編程語言,就是進行人機對話的一種語言。提起他只認可101010這種二進制的代碼,最早出現的就是機器語言,因為機器語言太難控制了,後來出現了一種過度的語言,叫做彙編語言,彙編語言比機器語言要來的簡單,但它也屬於一種低級語言,後來的高級語言的出現,就是把人們常用的語法和機器語言進行近似化了。編程語言的發展是越來越簡單,也越來越接近人的正常的語法。這是一種大的趨勢。

根據這種趨勢來分析,以後,中文作為一種編程語言也是會在編程語言的世界裡佔有一席之地的。一般不會在現在這種鍵盤錄入的時代。

中文作為一種編程語言,我估計會在下一個智能輸入時代,那時候語音,手勢可能會作為編程的一種模式。中文到時候會大行其道。


歷史麻辣鍋

只是發明人不是中國人,如果是中國人,世界一定都會學中文。在中文環境裡,絕對產生不了數理化等科學,比方說化學上,高分子公式怎麼用中文表述?沒辦法,這是中文的先天缼陷,我們要承認。

中文漢字編程,還不如中文拼音編程,其實很多程序員就是中文拼音和英文混合代碼,比如變量、函數,對象名稱的定義,有時候用中文拼音或者縮寫也巧妙。

英語組成是一維的,主要是邏輯關係,而中文是屬於三維的,一句話的意思除了本身意思外,還要看時間,空間。比如:夏天衣服能穿多少穿多少,冬天衣服能穿多少穿多少。按照這個中國人一看就明白,英語就不一樣了。

中文完全可以用來編程,比如國內發展較好的易語言,很多都用易語言寫過外掛,易語言有很多框架可以讓你直接使用。雖然如此,但中文卻不適合做主流的編程語言。因為英文影響力最廣,幾乎都會學英文,學起來也不太難,還有很多開源代碼需要全世界各國的人來優化,所以說不適合做編程語言。


笑搞

編程為什麼不用中文呢?原因如下: 因為編程是外國人出的,外國人肯定要用英文,而且英文是全世界通用的語言,而中文僅僅是在中國大陸和臺灣使用,中文難學。 中文打字效率太低,任何一個字最少也要兩次擊鍵,效率上不如英文。 中文符號不規範,存在全角和半角的問題。 此外,中文編程也是存在的,像易語言,和vb很像,而且操作很簡單,很容易學會,如果想學的話可以學一學。

其實是有中文的編程語言的,最出名的是易語言,此外還有cpython之類的。都是中文的編程語言。 但之所以大部分編程不用中文,其實是有他的道理的。 中文打字效率太低,任何一個字最少也要兩次擊鍵,效率上不如英文。 中文符號不規範,存在全角和半角的問題。 大部分編程語言在一開始就是以英語做為母語的(即使日本人開發的ruby,母語也是採用的英語)。這主要是為了交流的需要。 英語能夠被所有的操作系統和編譯器支持,而操作系統與編譯器要想支持中文,則需要付出額外的努力。

很多亞洲語言都屬於”曖昧“的語言,即語法中存在太多不確定因素,所以天生不適合做為編程語言使用。(不相信麼?那麼解釋一下,為什麼 ”中國人大勝日本人“和”中國人大敗日本人“居然是一個意思) 最後,其實中文程序語言並不比英文的好學,而且可讀性也比不上英文程序。


計算機最早從美國誕生,而美國運用的是英語進行編程,英語是如今世界上運用最廣泛的言語。它用26個英文字符構成,淺顯易記。本來,計算機的底層只知道二進制0001111之類的,也即是說計算機自身只能辨認0和1,並不知道別的數字、英文和字符,可是每個程序和核算都運用二進制並不簡單記,這麼對編程人員的技能請求很高,也很難操作,並且通常人很難了解二進制代表的是什麼東西,也就不知道它究竟履行的是什麼,為了便利回憶和了解,it界就誕生了用英語編寫的更利於回憶的編程言語,包含彙編、C、C++,java,C#,php等。可是計算機並不知道0和1以外的字符。那麼它是怎樣辨認編程言語的呢?本來,它的底層是把編程言語翻譯城二進制,也即是0和1構成的字符。就像我們跟英國人溝通相同,必須把漢語翻譯成英文、把英文翻譯成漢語或許把各自知道的言語翻譯成我們都辨認的言語。那麼從上面看漢語能否作為計算機言語呢?答案是肯定沒問題,那麼為何如今很少用中文編程呢?一方面我國計算機技能發展比較晚,在國際上沒有話語權。也沒有自個老練和讓我們承受的中文操作系統,並且許多技能只要國外有,英語編程都有很大的溝通圈,技能老練,我國前十多年誕生了自個的全中文言語易言語,可是一直不瘟不火,社區不行老練,計算機支撐的也不大好,並且用易言語編寫的軟件許多都會被殺毒軟件報毒,殺毒軟件不辨認易言語。所以通常用戶看到殺毒軟件報毒都會認為是病毒,本來大多數易言語編寫的軟件並沒有毒僅僅殺毒軟件不辨認。


草叢裡的野生熊貓

可以用中文編程,而且似乎也有必要,這對於普及電腦編程也許會有意義,只是現在還沒有比較實用的中文編程系統,還沒一套由中文構築的實用的高級語言,在不久的將來,也許會有人做。目前的所有高級的編程語言,大多是英文的,這與計算機的起源以及計算機編程的起源有關,如果計算機最早是中國人發明的,如果最早的編程語言是中國人寫的,那現在的編程語言也許都是中文的,這不奇怪。但,目前的現狀是,不僅編程語言都是外國人寫的,最令人不爽的是,計算機的操作系統都是外國人寫的,你家的電腦,我家的電腦,用的都是Windows,目前還沒有我們自己寫的家用電腦的操作系統,這是非常不爽的,而且涉及到國家的安全,非同小可! 聽說有機構在搞,這讓我感到很欣慰,我們要有自己的操作系統,我們也要有自己的編程語言,但說實話,這比造原子彈難多了,因為,我們不能再從零做起,因為,外國人寫的操作系統,外國人搞的編程語言,已經發展到一定的高度,是一種智慧與知識的積累,如果我們再從頭搞,從最底層做起,需要巨大的人力,物力,財為,時間……,如果不從最底層做起,意義又不大,讓我們想想,該怎麼辦!

如果不是創造一種編程語言, 如果僅僅是要使用漢字來寫程序的話,那應該是好辦的。例如,下面這段程序:

dim a,b,c

b=2

c=3

a=b+c

If a>4 Then

end

end If

如果換成中文輸入該怎麼辦呢?請看下面:

定義變量 老王,老李,老趙

老李=2

老趙=3

老王=老李+老趙

如果 老王>4 那麼

退出系統

假設結束了

哈哈,如果只是這樣變化,意義就不大了,好像顯得更繁瑣。真不知如何是好! 其實,目前數學,物理,化學等的公式,也都是些字母,也沒有影響我們學習使用,反倒是這些外文字母,給我們帶來了許多方便,在對待是否有必要用中文編程這個問題上,我們不妨也從這一角度正視它!


冷眼無邪

作為程序員,我表達以下幾個觀點 :

1、完全能用中文編程 : 理論上只要能表示0和1的語言都能編程,所以中文是能用來編程的,易語言就是一個典型的例子。

2、編程的起源不在中國 : 計算機的起源在美國,自然而然的優先使用了英文。

3、流通性差 : 英語是全世界最流行的語言,幾乎成了不同語種國度之間的共同語言。外國人學中文簡直就是難於上青天,流通性差又怎麼互相交流怎麼共同進步?

4、沒有成熟的體系 : 儘管機器只有0和1那麼簡單,但要用一種語言通過0和1表達人類的所有想法,設計這樣一個龐大的體系談何容易。現在匯聚的全人類智慧發展了幾十年的高級語言,依然存在很多問題。

5、成本高 : 用中文編程,只能有兩種方式,一是在原有硬件基礎上,將中文編程轉成英文編程再轉成機器語言;二是重新定義硬件,重新設計製作符合中文編程的硬件。這兩種方式的成本相當高,完全沒必要。


分享到:


相關文章: