為什麼程序都要用英文寫,中文不行嗎?

比如:

顏色:紅色;

背景顏色:黃色;

________________________________

感覺像是蓋樓,用英語蓋起了整棟大樓的基本結構,裡面的房間賣給你,裝修你可以用各種語言裝修,但是怎麼說,還不是自己的房子

如果,是中國先發明了計算機,規定了計算機的一系列規則,規定了計算機語言。

那會計算機世界現在是什麼樣子那?(期待)


你就不能百度百度。。。

Basic ==&>&> 易語言

C == &>&> 習語言

C++ ==&>&> 丙正正

Python ==&>&> 中莽/周莽

Java ==&>&> 習佳娃(你沒看錯,這是一個家族,有習語言(C)、習佳佳(C++)、習佳娃(Java)、習麗妞(Linux)、習姐、中匯(彙編,估計是義子)。。。)

這是vs上中文編寫的c++代碼


做code review的時候你們的上司就會說

Dis gold is bery bery diffigold to understood. I tink you need to 驢lite e驢thing


我不談技術上的問題,就將心比心一下:

如果Linux是芬蘭語寫的。

如果Nginx是俄語寫的。

如果Ubuntu是非洲土語寫的。

如果阿三把Windows用印度語重寫。

......

好吧,我看你們還有什麼可玩的。


不用人類說的語言都可以,比如我前幾天無聊寫的這個。。。

他真的可以運行的哦。雖然程序本身沒什麼意義,就是為了看起來好可愛。

然後還為了我最愛的貓狗CP。。。

=======我是更新線==========

哼,如果我要是先放我下面這個代碼,你們肯定猜不出是什麼語言寫的。

更作死版本,依然可以運行,不過我也已經忘記每個表情對應的是什麼了。

這是結果

如果想在項目里這麼寫,建議寫個Python腳來預處理,比較方便。而且你的老闆和同事也會因為故意殺人進監獄的,爽吧?

========================

PS:看題主的代碼。。。感覺你可能是寫CSS的吧。。。


這種東西無所謂,拿你的中文CSS為例,其實你要是開心你用emoji表情寫都可以

效果預覽:Emoji CSS class names


恐怕題主沒上過編譯原理吧。

可能很多答住也沒吧。

老規矩先問是不是再問為什麼。

先上結論:

我們的編程語言既不是英語也不是中文。

因為編程語言不是自然語言。

大部分編程語言都是2型或3型文法。即所謂的上下文無關文法、正規文法。

自然語言肯定不是2型或3型文法。因為自然語言一定是上下文有關的。

生活里你是不會按照上下文無關文法那麼說話的。

下面簡單說一下什麼是文法:

好了,簡單說下文法,文法是有一組產生式來構成的,裡面包括了終結符號與非終結符號。

這裡我用大寫字母表示非終結符哈,小寫字母表示終結符號。

舉個最簡單的例子:

比如一個文法S:

S-&>sbA
A-&>aA
A-&>a

這表達了一個什麼樣的語言呢?

所謂終結符號就是到這裡就不能把它替換了。

非終結符號就是到這裡你可以用其他產生式把它換掉

顯然對於文法S你可以有:

sba,sbaa, sbaaaaa...

然後對於編程語言,就是這麼寫個產生式的集合。

所以我們只是把終結符號換成了英文字母而已,我樂意我換成任意語言的任意字母都行。

還是拿文法s舉例子,比如:

S-&>傻xA
A-&>啊A
A-&>啊

我把所有的終結符號都換成了中文字元,所以合法的語句就成了

傻x啊,傻x啊啊啊,傻x啊啊啊啊啊。。。

那麼我問你,S 經過了終結符號的替換,本質有變化嗎?

沒有,無論你怎麼換終結符號,它還是那個語言S,既不是英文也不是中文。

沒有隻能說sbaaa的英文,也沒有隻能說傻x啊的中文。

至於為啥終結符號一定要是英文的,這是誰欽定的。這就是個歷史問題了。


因為實際上你看到的那堆東西根本不是英語,只是用英文字母書寫的助記符而已。

漢語拼音是英語嗎?顯然不是。


轉自CSDN:跳槽誤入一家用漢字編寫C#代碼的公司,望各位大師指點~-CSDN論壇-CSDN.NET-中國最大的IT技術社區

遍歷器&<登錄信息&>.計數遍歷(_詳細信息集合).從(0).到(_詳細信息集合.長度()).每隔(1).執行((當前行索引, 登陸信息) =&>
{
判斷.如果是(XXX).則(() =&>
{
判斷.如果是(YYY).則(() =&>
{
表格.行(當前行索引).背景色設為(Color.Gray);
});
}).否則(() =&>
{
判斷.如果是(ZZZ).則(() =&>
{
判斷.如果是(KKK).則(() =&>
{
表格.行(當前行索引).背景色設為(Color.Gray);
});
});
});
});


有中文的語言:易語言,但是你用過就會發現它跟直接把英文語言里的關鍵詞翻譯成中文沒啥區別,寫出來的形式依然是關鍵詞+空格+變數名的形式。正如你在題目描述中所說,把「color:red」變成「顏色:紅色」,這就是簡單的單詞翻譯而已,並沒有什麼本質區別,而且還多敲了幾次鍵盤。

當然,如果你希望有一種語言能夠這樣寫:

「如果A大於B,就讓A加1」

這就體現了英文作為編程語言的優勢:利於編譯器分詞。英文寫的時候是每個單詞之間都有一個空格,所以編譯器在分詞(找出關鍵詞、變數名等存在符號表裡)的時候直接按空格分就可以了。中文的分詞一直都很困難,搜索引擎處理中文搜索的時候也要做很多工作,因為它更多的是依據語義來分。舉個牽強點的例子,假如有這樣一個句子:「猶如果實一般」,對機器而言,是要分成「猶」、「如果」、「實」呢,還是分成「猶如」、「果實」?所以英文還是比較方便的。

另外,計算機存儲英文也比存儲中文要簡單的多,英文一共26個字母,連上大小寫也只有52個,單詞只是字母的排列組合而已;而中文有幾萬個字,光存這些字就已經很佔地方了。

上面是我們編譯原理課上老師講的,但主要的原因還是:編程起源於外國,而大多數大牛也是以英語為母語,所以這些制定規則的人就制定了這樣的標準,而其他人就遵循大牛腳步嘛。

最後,就我個人而言,我在編程的時候總會感覺到一些情況下用英文能更準確的表達意思。中文的一個詞語,在英文里往往對應了多個單詞,而這些單詞有著獨特的語境。比如英文的push,shift,insert,它們都代表往一個數組裡加入元素,但是分別代表在最後壓入、在最後加入一個、在任意某個位置插入一個。這裡只是舉個例子,我經常能感覺到,如果這些專業的單詞用得準確的話,往往一眼就能知道這段程序在幹什麼,不需要再去看細節。所以我覺得最後一個原因是,雖然英文的編程語言各有不同,但是大家已經形成了一種約定,什麼樣的詞該表達什麼樣的意思。這種閱讀與寫程序時的易讀、易用與準確性也是吸引程序員的一個原因吧。

補充:不管什麼語言,英文也好中文也好,最後都要轉化成計算機指令,這些指令就像阿拉伯數字一樣,不管用中文還是用英文,它的形式都一樣。所以就像其他答主所說的,只要你能為中文編程語言寫一個編譯器,那照樣用。


當然有啦,比如著名的grass mud horse語言

soimort/GrassMudHorse

寫出的程序是這個畫風:

草草草泥馬
草草草草馬
泥泥草草草草泥草馬
草草草泥草草泥草草草馬
泥泥草草草草泥泥馬
草草草泥泥草草泥草泥馬
泥泥草草草草泥草草馬
草草草泥泥草泥泥草草馬
泥泥草草草草泥草泥馬
草草草泥泥草泥泥草草馬
泥泥草草草草泥泥草馬
草草草泥泥草泥泥泥泥馬
泥泥草草草草泥泥泥馬
草草草泥草泥泥草草馬
泥泥草草草草泥草草草馬
草草草泥草草草草草馬
泥泥草草草草泥草草泥馬
草草草泥泥泥草泥泥泥馬
泥泥草草草草泥草泥草馬
草草草泥泥草泥泥泥泥馬
泥泥草草草草泥草泥泥馬
草草草泥泥泥草草泥草馬
泥泥草草草草泥泥草草馬
草草草泥泥草泥泥草草馬
泥泥草草草草泥泥草泥馬
草草草泥泥草草泥草草馬
泥泥草草草草泥泥泥草馬
草草草泥草草草草草馬
泥泥草草草草泥泥泥泥馬
草草草泥泥草泥泥泥泥馬
泥泥草草草草泥草草草草馬
草草草泥泥草草泥泥草馬
泥泥草草草草泥草草草泥馬
草草草泥草草草草草馬
泥泥草草草草泥草草泥草馬
草草草泥草草草泥泥泥馬
泥泥草草草草泥草草泥泥馬
草草草泥泥泥草草泥草馬
泥泥草草草草泥草泥草草馬
草草草泥泥草草草草泥馬
泥泥草草草草泥草泥草泥馬
草草草泥泥泥草草泥泥馬
泥泥草草草草泥草泥泥草馬
草草草泥泥泥草草泥泥馬
泥泥草草草草泥草泥泥泥馬
草草草泥草泥泥草泥馬
泥泥草草草草泥泥草草草馬
草草草泥草草泥泥草泥馬
泥泥草草草草泥泥草草泥馬
草草草泥泥泥草泥草泥馬
泥泥草草草草泥泥草泥草馬
草草草泥泥草草泥草草馬
泥泥草草草草泥泥草泥泥馬
草草草泥草泥泥草泥馬
泥泥草草草草泥泥泥草草馬
草草草泥草草泥草草草馬
泥泥草草草草泥泥泥草泥馬
草草草泥泥草泥泥泥泥馬
泥泥草草草草泥泥泥泥草馬
草草草泥泥泥草草泥草馬
泥泥草草草草泥泥泥泥泥馬
草草草泥泥泥草草泥泥馬
泥泥草草草草泥草草草草草馬
草草草泥泥草草泥草泥馬
泥泥草草草草泥草草草草泥馬
草草草泥草草草草泥馬
泥泥草草草草泥草草草泥草馬
草草草泥草泥草馬
泥泥草草草草泥草草草泥泥馬
草草草草馬
泥泥草草草草泥草草泥草草馬
草草草草馬
泥泥草草草草草馬
草草草泥草草泥草草馬
泥泥草馬
草泥草草馬
草馬





草草草草馬
草草草泥草馬

草泥草泥泥馬

泥馬

草草草泥馬
泥草草泥馬
泥泥草泥草馬
草草草草馬

泥馬

草草草泥草馬
草草草泥馬

泥馬

草草草泥泥馬
草馬
草泥泥泥草馬
草馬
泥草草泥草草馬
草馬
草草馬
草泥馬
草草草泥草草泥草馬
草草草泥馬
泥草草草馬
草泥草泥泥馬
草泥草草泥泥馬
草泥馬
草泥草馬

草馬
草泥草泥馬

草草草泥草草馬
草泥草草泥馬

草草草泥草泥馬
草泥馬
草泥草馬

泥馬

草草草泥泥草馬
草泥草草泥馬
草馬
草泥馬
泥草泥泥泥草草草泥草泥草馬
草泥草草泥馬
草泥草草泥馬
泥草草泥馬
泥草草泥泥泥馬
草草草泥馬

草馬
草泥草草草馬

草草草泥泥泥馬
草草草草馬

草草草泥草草草馬
草泥馬
草泥草馬
草泥草草泥馬
泥草草馬

泥草草泥草草泥馬
草泥草草泥馬
草草草泥馬
泥草草草草泥草草泥馬
草草草泥馬
泥草草泥馬
草泥草泥泥草馬
草草草泥馬
泥草草草馬
草馬
草泥草泥草馬

草草草泥草草泥馬
草泥草草泥馬
草草草草馬
草泥草草泥馬
草泥草草泥馬
泥泥草草泥馬
草泥馬

草草草泥草泥草馬
草泥馬
草泥草馬

泥馬

草草草泥草泥泥馬
草馬
草草馬
草泥馬
泥草泥泥泥草草草泥草泥草馬
草泥草草泥馬
草泥草草泥馬
泥草草泥馬
泥草草泥泥草草馬
草草草草馬

草馬
草泥泥草泥馬

草草草泥泥草草馬
草草草泥馬

草草草泥泥草泥馬
草泥馬
草泥草馬

泥草草泥泥泥草馬
草馬
草草草草草馬
草泥草草泥馬
草泥草草泥馬
泥泥草草泥馬
草泥馬

草馬
草泥泥泥泥馬

草草草泥泥泥草馬
草馬
草草草草泥馬
泥草草草馬
草泥草泥草泥泥馬
草草草泥馬
泥草草草馬
草草草泥泥泥泥馬
草泥馬
草泥馬

泥馬


首先,需要一個中文鍵盤。


□ : ?

△ : ♂

▽ : ♀

○ = □ ( △, ▽ )

? ( ○ )

g?? helloworld.g?? -o helloworld.?
...
helloworld.?
?


當然有了,我上初中那會為了打遊戲升級,但是又沒鈔票,於是就有了寫個WG來維持升級的想法

但是,那時候自己並不懂英語,雖然現在也差不多

所以就榮幸的自學了傳說中的中文編程

噹噹噹噹,易語言

這就是易語言的初始界面了,右邊的是一些能在窗口上添加的東西,比如按鈕,標籤,選擇框之類的,左邊的是屬性,組件中的文字,顏色,可視都在這裡設置

再然後就是程序集了,是對應窗口的代碼集合,窗口裡東西再多也需要代碼來完成不是,一個按鈕按下去有什麼作用都是依靠程序集的,並且一個窗口對應一個程序集

大致就是這個樣子了,這是一個內存搜索工具的源碼,不知道大家看到那個提升許可權的命令沒

邪惡一笑,嘿嘿嘿

然後說幾句,易語言自己也學的有點小水平,後來發現,其實這個中文編程大概就是把其他編程的命令替換成中文了

像這些比較典型的命令,就是英文編程中if之類的吧,所以說如果想學編程的話,英語水平影響並不大,只要背會一些常用命令就好了

最後講一個笑話,我把「買一個西瓜,如果有西紅柿,買兩個」這個問題寫出來了

僅供大家一笑

首答紀念


我最喜歡跟老外說得一句話叫。

Talk is cheap,show me the code.

為什麼?擦。code我能看懂 talk我聽不懂啊。。。。。。。。。。。


很簡單,輸入方便。因為畢竟中文需要輸入法。

漢藏語系語法比印歐語系語法更複雜。而且英語更具有全球通用性。

編程並不是用英語,而是在用英語字母【羅馬字母】,阿拉伯數字,和德國數學符號等一系列【約定俗成】的表示方法來達到可讀性最大化的目的。

至於C++和C#,除了.net API裡面的方法和關鍵子是英語,其他你愛用什麼都可以啊~


這問題快要從月經變成日經了……


行啊,早年我就用中文寫C#了,現代語言都支持各種語言編寫,當然關鍵字都是英語的不能改的,但關鍵字總共也沒多少種,記憶不難,輸入也方便。

中文寫代碼有不少劣勢,當然也有些優勢,我早年也寫博文評述過,總體感覺比較適合小項目,有些團隊也用來寫測試函數簽名,因為這類函數簽名寫成英文會很長很難看明白,不如直接用中文大家都懂。


先問是不是,再問為什麼。

誰告訴你程序都是用英文寫的?

只不過鍵盤輸入字母更方便,英文做為國際語言交流障礙少而已。


程序語言根本就不是英文。只是很多語言的關鍵詞、子程序名來自英文而已。

原則上這些東西來自什麼語言都可以。你能寫好分析器、記號化器就行。記號化處理後的代碼幾乎完全不保留人類語言的特徵。

至於關鍵詞用英文的原因,你可以低頭看下鍵盤。現在就算是歐洲其他國家的文字,或多或少都用有修飾字母。英文和鍵盤最為配合。


1. 編程不是用英語寫的,是用編程語言寫的。你不能看到字母就說是英語,而不管詞法語法完全不一樣。

2. 很多代碼的變數命名是用的英語,更多是為了交流的目的。就跟論文發期刊都用英語一樣。當然,也有人不用,他們用拼音,代價是自我限制了影響力。

3. 很多現代編程語言都支持中文變數命名了,比如 Swift。但是拋開第2點的交流因素不說,輸入效率很低。輸入各種符號要切換輸入法,你試試用中文打一串數學公式就能體會了。


推薦閱讀:

零基礎如何成為編程高手?
小霸王學習機有哪些學習(編程)的功能?
如何評價港科大 CSE PhD 首次入選 POPL 的這篇論文?
為什麼這麼多人黑譚浩強的c語言教材?
有沒有必要學C++?

TAG:前端開發 | 程序員 | 編程語言 | 編程 | 程序 |