國內碼農為什麼那麼討厭中文編程?


你以為會寫中文就會編程嗎?這就像你以為會寫漢字就會寫出好文章一樣。編程是和機器溝通,因此要用機器的語言而不是人類的語言。最早的程序就是0和1的數字,不是中文也不是英文。以前的程序員,每天寫程序就是在一條長長的紙帶上打孔表示0和1。後來發現0和1的二進位太麻煩了,就把0和1壓縮一下,用16進位表示,比如數字10,用二進位表示是1010,用16進位表示就是0A,這樣表達起來就更簡潔,但是輸入電腦後,仍然要轉換為二進位電腦才能明白。後來,科學家們用簡單的英文單詞表示某些功能,比如加法,就用add表示,減法就用dec表示。程序員輸入add或dec後,系統會轉換為對應的演算法。就這樣不斷的給不同的代碼段起名字。編程語言就是從數字編碼不斷壓縮提高層次,最後形成了當今的各種風格的編程語言。為什麼碼農會討厭中文編程?我用最流行的易語言說明。所謂全中文的易語言,其實就是把Visual Basic語言中每個英文單詞換成了對應的中文詞,其他都不變。比如Visual Basic的代碼是這樣:

if True then
Print "OK"
endif

換成了易語言,就是這樣了:

如果 真 那麼
列印 "OK"
結束如果

任何人都能看出來,英文寫的程序更簡單清晰。

其實從語言學的角度來說,英文是線性的一維語言,而中文是平面的二維語言。而程序恰恰是線性的一維的。也就是說,線性的英文正好能契合線性的程序。所以,中文並不適合現有的編程方式。

然而,未來的發展可能超出你的想像。未來可能會有多維度的量子計算,也許二維的中文反而會比一維的英文更適合。

程序員對比過中文編程和英文編程就會明白,中文編程反而會提高門檻。因為編程的核心根本就不是什麼語言,而是程序化思維方式。最簡單的並不是英文編程,而是數學符號編程,極度抽象,普通人很難理解,但代碼量特別少。

補充一句,其實現代的語言比如Java,都支持Unicode,也就是說可以用中文甚至世界其他語言做變數名和函數名,你可以試試看,這樣看起來就基本上就相當於是中文編程了,對比一下英文編程,你就會知道哪個更好了。

電腦能識別的只是0和1的二進位而已,那麼,如果按中文的角度來考慮,那麼應該從核心開始就把二進位轉換為8進位,然後用八卦來表示,這樣從底層構造純中文的計算機。八卦兩兩組合,演化為64卦,就能表達宇宙萬物。這比老外的英文編程語言不知道高級多少倍。而且,滿眼全是中文,老外就算認識中文字也看不懂意思,呵呵。


很多人就沒理解,編程序核心是什麼。程序和語言沒有半毛錢關係,你以為英國人或美國人就都是程序員?或者他們的小孩子都會編程?

編程需要的能力不是語言,而且把具體事物抽象化,用程序的思維來解決問題的能力。比如最基礎的排序問題,一堆隨意大小的數字排序,想用中文編程的可能就是以為一句話:按順序排列,就能自動排列了?我簡單說一下排序的方法吧,遞歸或冒泡法排序,至少要兩層嵌套循環,外循環和數字一樣多,內循環不斷比較相鄰的兩個數。或者先隨機取其中一個數,再取一個數,如果比這個數大的放前面,反之放後面,多次循環。還有很多排序方法,會中文的你,再給我說一種可以嗎?再說一個更簡單的,一般語言都有畫點和畫線的語句,多數也有畫曲線的語句。如果需要畫連續曲線,用什麼方法?還有面向對象的語言,感覺簡單了,其實更需要抽象思維。你沒有這種抽象具體事物為程序的能力,會什麼語言也沒用。所以說不是討厭中文編程,而是語言和程序根本沒關係。


看看題目,很有意思,國內碼農為什麼那麼討厭中文編程?

首先,國內碼農討厭中文編程嗎?好像周圍的碼農一個也沒說過這話。百度搜索一下「討厭中文編程」,出現的結果中,沒有出現一個有「討厭中文編程」的內容,最多的是「最討厭的編程語言是什麼」。

然後看問題描述,母語是中文的碼農沒有出過一個世界大師。

從這句話來看,可以發現這題主在發泄怨氣。就是說中國人沒有一個世界級碼農大師。問題來了,什麼水平是世界碼農大師呢?這題主估計也不知道,估計連編程入門都沒有,怎麼可能知道啥是大師呢?

從問題來看,估計是個中二少年,高中還沒畢業,有強烈的愛國情懷,但是又不知道怎麼愛國,然後覺得這世界級碼農大師就跟小說中武林頂級高手一樣,對其充滿了幻想。



我這兩天剛寫的胡牌演算法,中文寫代碼沒啥問題啊,感覺很爽,注釋都不用寫了。


是心裡問題,他們的地位不允許挑戰,你先想想啊,之前一個程序員要經歷多少坎坷,首先是英語,按照之前的考核標準需要4級,之後才有資格學程序,中文編程怎麼一來就打破了這個規律,小學生,業餘愛好者花一個星期左右都可以達到一個程序員初級的水平 ,這不是在降低他們的地位嗎?如果要是別企業看中,連加工資的機會都沒有了。

至於你說用中文編程的大師有沒有,就不知道你心中的大師是什麼水平,什麼標準。如果說中文編程取得什麼成就,自己可以查閱相關的信息。


對於這個問題,我想說說我個人的看法。中文編程也好英文編程也罷。

1.無論什麼語言編寫都最終用0和1才能被執行;

2.中文編程程序會變大,運行速度會變慢。在這個時代,如果不是特殊要求,誰會在意那麼一點內存;

3.中文編程怎麼也得看項目所需,一個小項目你用C#之類的要一個星期才能做出來,別人用易語言1到2天就做出來了。當然我只是個比喻;

4.除非特別的要求,客戶並不會在意你用什麼語言來編寫。

總的來說,我個人並不排斥中文編程。甚至那個什麼易語言對於初學者來說,我覺得很能鍛煉編程邏輯。


首先不是討厭中文編程,只是人都有先入為主的的觀念,程序員一開始學的大多都是C語言之類的英文編程語言,所以英文編程語言的語法糖函數會讓他們覺得舒服自在,況且代碼當中中文也不是完全沒有,它存在於注釋當中也會有獨特的美感。當然如果一開始就接觸的易語言之類的中文編程語言,那自然也不會排斥了。還有就是現在很多編程語言都是支持類名方法名變數名中文的,資料庫表名欄位名也是支持中文的,但是基本沒人這麼干,因為大家約定俗成了取這些名字的規則,而且其實取來取去就那麼幾個,你用中文反倒成了異類


中文編程本來就是忽悠不會編程的小白的噱頭而已,懂編程的人都知道,編程和用那種需要根本沒什麼區別,編程代碼也和現實中的英文沒什麼關係,絕大多數更本就沒有現實中的意思,就像鍵盤上的標註回車,和標註英文一樣,對不會電腦的人有什麼區別,現實中回車是什麼鬼!!!


這是多麼大的一個腦洞。中國人似乎沒有發明任何編程語言,編譯器。中文編程或許不是編程。計算機總得先識別中文,才能做事。和中餐一樣,中文表意很難標準化。想法很好,但中文編程的下層還得是某種英文編程語言。類似於問為什麼上帝喜歡用細胞,基因製造生命。上帝說了,那用啥,直接用骨頭和肉?骨頭和肉怎麼來的?上帝也沒那麼大的腦洞啊。


這個題目太狹隘,上來就是國內碼農討厭中文,想往民族情緒上帶節奏嗎?一棒子打死碼農?並不存在工程師討厭中文編程語言,而是因為沒有一門中文編程語言在市場上佔有一席之地。計算機的發展歷程也決定了這是一個英語佔主導地位的行業,也有非英語國家的工程師發明了不錯的編程語言,但也都是實用英文單詞作為關鍵字,比如ruby。


推薦閱讀:

怎麼區別「分享」和「裝逼」?
如何在夢中複習清醒狀態下學習的內容?
為什麼看完電影《熔爐》,感受到的恐懼比憤怒多?
心理諮詢師會不會被患者影響,這是怎樣一種體驗?
你信任別人而對方不信任你是一種什麼感覺?

TAG:心理學 | 程序員 | 編程語言 | 科技 |