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

大街鳳凰島


中文當然可以編程,實際上只要支持使用UTF8或者Unicode的編程語言、編譯器,都是可以的。舉兩個例子,易語言和Mathematica,前者是國產語言,後者是國外的產品,但都支持用中文編程。

易語言的畫風是這樣的:

而Mathematica雖然作為美國的產品,但也是可以用中文編程、計算的:

所以其實中文編程在技術上,根本不是什麼問題。

主要的問題來自於歷史。

大部分的程序包,都是用C/C++/Python/Java/JS/.....等一眾「英文」語言書寫的。你另起爐灶,沒有相應的庫輔助,難度是很大的。

一個程序語言,如果不流行,或者不在某個領域流行,基本就算是完了。

更重要的是,現在的編程語言其實也不是英語,只是借用了英語的單詞,有的還是語言自己造的單詞。

這就像是日語借用了大量漢字,但你不能說日語就是漢語一樣。

語法結構都是完全不同的東西。

更何況,程序注重的是完全精確的邏輯結構,是一種「指導」、「菜譜」一樣的東西。和自然語言是不一樣的。糾結於語言,其實根本沒有意義。特別是糾結於命令用什麼語言寫出,更是完全沒有意義。


章彥博


作為科班出身的碼農來幫你解惑吧,其實根本沒有英文編程還談什麼中文編程,事實上我們都是用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("主函數\

火星一號


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

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

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

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


中文不能用來編程,是因為英文編的程序已經形成一個龐大的體系,從而使得中文編程不僅無法短期完成,同時也很難獲得市場的認可!

其實仔細看一下,現在用英文編寫的程序,就會發現實際上和我們看到的普通的英語對話,有很多相似之處。只不過程序裡面還要加入很多數學的算法。這樣的情況下,中文雖然可以實現很多判斷語句的實現、循環語句的實現。但是由於數學公式主要還是以英文和拉丁文、希臘文等來表達的。從而使得漢語編程困難重重。

再加上,英語編程已經有近80年的歷史,因而已經積累億萬個各種各樣的程序包,很多現代的程序員實際上很多時候從事的工作很大一部分就是搭積木類型的工作。如果現在用漢語編程,相當於將以前近80年的工作推倒重來,其難度可想而知。而市場上也不會有太多人會對這個完全沒有基礎的、又沒有太大意義的新生事物,會有極大的興趣。

總結來說,就是英文編程已經佔領市場太多年,基礎已經太好了。漢語編程不僅耗時極長,而且顯得不合時宜,不會被市場所認可!


地震博士


就我們平時所接觸到的常用編程語言,Java、C、Python 似乎全是用英文編程,更確切地說,應該是用 26 個字母以及一些符號來進行的。怎麼就不見人用中文編程呢?

易語言是中文編程語言

其實在 2000 年的時候,易語言就以一種中文編程語言的方式出現,不得不說極大地降低了程序學習的門檻和難度。雖然經過了一段時間的發展使用,但是使用中文仍然存在著大量不便和存在其他問題,而沒能成為主流的編程語言,直到現在使用的人也不多。雖然不為人所熟知,但是不能否認它的存在。一些非程序員群體並不知道這個語言,就有了這樣的問題。

主流編程語言也不能算是全英文

目前來說,Java,Python 等語言仍然很火熱,對於不懂程序的群體來說,看一眼代碼,就覺得全是用英文編程,其實不然,真正稱得上英文的也就是那些關鍵字,而這些關鍵字總是那麼一些常見的,如 class,static。所以,更準確應該說是通過 26 個字母和一些符號來編程的,Java 語言有它自己的語法,其他語言也一樣。而這些編程語言中的語法跟英文的語法表達並沒有直接的關係,也其實不能算是英文編程。

編程工作國外先行

為什麼最後留下來的是用字母符號組合的編程方式呢,不是用中文加符號呢?其實也有一種先入為主的勢態在裡面,早些年計算機技術出現的時候,都是先從國外開始的,這其中包括電腦,通信網絡,二進制,各個編程語言,操作系統,開發工具等等這一整套,廣泛採用英文並不奇怪。其中的編程語言就採用了更加國際化的字母符號組合,彼時中國在相應領域並沒有多少話語權,再者使用中文相對來說侷限性很大,相比於已經成熟的其他語言,很難與之抗衡。

中文漢字編程理論上可行但是目前的開發環境已經不再允許,很難被人接受,也沒有使用空間。一開始那些主流編程語言的創立就是用英文字母進行的,一直延續下來,被越來越多的開發者接受和使用,生態已經十分完善。


stormzhang


寫那麼多字幹嘛,這個問題很簡單就可以回答...

理由如下:

1.編程語言初創時本身就基於英文字符指令,在字節上佔有優勢(中文佔兩個字節)

2.中文不是國際通用語言,所以也少有團隊專門去開發漢語版的編程軟件。

3.中文也可以實現編程,只是沒有必要,一是因為要把中文語義轉化成英文指令這樣的事情非常麻煩,也許只有哪個程序員當做愛好自己研究,二是中文語言並不通行,所以多此一舉。

所以結論是,中文可以用來編程,前提條件是必須有一款專門適配中文語義的編程軟件或者編譯器,你寫這個編譯器還是得用英文來寫,寫出來適用於哪一款底層語言呢?不管是C++、Java、還是Python,這些語言都在不斷升級,那你中文也要跟著不斷升級,這對於開發者來說簡直就是噩夢,誰會為了這個事兒去花心血研究?

明白了麼?


貓眼智客-楊明慧


中文是可以用來編程的,只是現在用的人比較少,不普及,畢竟最開始計算機是外國人發明的。

現在,中文編程比較有名的就是兩種語言了,一個是習語言,另一個是易語言。

習語言我不是很清楚是什麼時候出現的,它可以類比為中文版的c語言,所有的編程過程都可以用中文來進行(上面那張圖就是,不過看著有點彆扭)


易語言的話,發展史也有十幾年了,很多學易語言的都用來寫外掛。

其實,限制中文編程很大原因是資料太少了,想學也沒有系統的學習方法,而且畢竟起步晚。

所以,以後如果諸位成為大神了,也希望各自都能發展發展咋們的漢語編程。


Python雁橫


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

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

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

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

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

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

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

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

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


_笨_鳥_慢_飛_


這個問題非常好,雖然問的是計算機的事情,但核心指向了東西文字的起源問題和未來發展趨勢。

漢字是圖形化文字,起源於象形字。漢字的優勢在於併發處理和海量存儲,是二維的表現方式,二維碼比條形碼信息量大,這個能理解吧。

英文是單純的字母組合,是發散的,屬於一維的表現形式,類似於條形碼。

因此,漢字屬於高等級文字,英文屬於初級文字。

目前計算機語言雖然屬於軟件類,但其根本目的是指揮硬件進行運算。計算機的硬件底層技術是基於線性思維方式開發的,即二進制0和1,與或非,這種技術只能處理條形碼,靠加快速度來提高效率,這是一維技術的根本性問題。

目前的計算機硬件技術發展到了硬件瓶頸,就在於底層的二進制難以勝任未來海量計算。單個CPU的運算速度不能根本性提高了,只能發展多核CPU。當多核也解決不了的時候,這種硬件模式也就到了落幕時刻。

用漢字能不能編程驅動硬件,當然能。但效果並不好,這是因為用二維碼存儲條形碼,用併發技術處理單個問題,明顯是大材小用。漢字更適合未來計算機硬件。什麼時候圖形化硬件技術出現了,漢字也就登上科技世界的舞臺。


分享到:


相關文章: