提倡中文編程為什麼總遭到程序員嘲諷?

陽光空靈


這個“五加二等於七”的例子,完全沒有說服力。如你所言,英文編程同樣使用阿拉伯數字和通用數學運算符號,而不是用英文自然語言的“five plus two equals seven”。

噴中文編程的聲音雖然很嘈雜,但仔細總結下來不過幾種套路。之前寫過一篇專門進行針對性回應的文章,有興趣的話可以整理後再發表出來。

關注本號“用中文編程”,敬請期待。

這裡要科普一下,多半開發者還不知道絕大多數常用英文編程語言早已支持中文命名標識符,比如 Python3 的開發團隊在2008年開始就從用戶社區反饋中意識到,非英語母語的開發者希望用母語命名,因為這樣可以提高代碼清晰度,更易於理解和編寫。

所以那些否定母語命名意義的,請先去這些語言的開發者社區嚷一聲“Unicode命名沒有用啊,刪去這個特性吧”,就等著其他非英語母語的開發者們出來打臉吧。

或者,試試把下面這些用中文命名標識符的代碼改成英文命名。代碼可讀性不比不知道,用過中文命名的就知好處。

Java

SQL

TypeScript


用中文編程


中文編程並不是不行,但實在是費力不討好呀!

咱們來說說為什麼中文編程不受歡迎。


從易語言來看,中文編程遜色在哪裡

除了C/C++,java,python這些語言外,確實存在一種中文的編程語言,就是易語言,易語言的年代有些悠久了,最早可以追溯到2000年,雖然發展到今天有了一定的規模和用戶基礎,也有一批忠實的“易粉”,但始終沒有流行起來。在2018年“最受歡迎的編程語言”中,壓根就看不到它的影子。。。

也並不是只有2018易語言名落孫山,易語言的劣勢也是中文編程的劣勢,究其根本主要集中在兩點:

  1. 中文編程極佔資源;

  2. 市場需求小。

我們先來看第一點,主流的編程語言都是英語,再複雜的英語它也只有26個英語字母。但漢語不一樣啊,常用的漢字足足有7000多個,還有字形結構。學過計算機的朋友都知道,漢字的內碼很佔內存,一個漢字2bit,一箇中文標點3bit,做一個完成的項目要比純英文的代碼量大很多。這和軟件開發代碼精簡的需求背道而馳,加大了CPU的工作量。

再說市場需求,在所有的招聘平臺上,嵌入式方向的找C/C++的,AI領域的找會python和機器算法的,前端找會HTML5/CSS的,應用軟件開發找會Java的。。。反正我是沒有見到哪家公司明確表示會中文編程的。


沒有市場,也沒有需求,中文編程就是這麼一個局面。並不是說中文編程不夠好,我身邊有學易語言的朋友,但初衷不怎麼光明——他用來寫外掛。

客觀來講,易語言確實很方便,也大大降低了學習編程對英語方面的要求。但真的不符合當下開發行業的環境,中文編程,小圈子裡自娛自樂一下還行,放在大型項目開發商,實在是強人所難。


愛思考的奧特曼


作為程序從業者,說點個人見解。

1,用英文是歷史原因;

2,編程環境生產使用的都是英文的,包括運行系統。

3,程序生態是英文的。

4,程序上語言只是符號,因此,不論你用什麼自然語言來表達,只要編譯器能轉換,都是可以的。

5,為什麼中文編譯只有小部分應用(如已知易語言基本用在做外掛,不算行業內): 編程要的是無二義性,這方面這些年全世界花了很大代價才形成目前狀態。如果是中文,同樣一個‘花’,在不同語調,語境下有豐富的含義,這時就需要其它東西來輔助表述,從而帶來更多複雜度。一般程序需要用的是不到100個關鍵字,越少就越易形成生產力,當然前提是無二義性。這符合中國傳統哲學,陰陽可涵蓋一切,電信號本身0和1是陰陽理論在電相關領域的實際應用,這個是發明人本身承認的,道理是相通的,原理是自然的。

6,從實用角度來看,不管白貓黑貓,能抓到老鼠就是好貓。從現階段程序領域看,目前英文佔據優勢。因此,用何種自然語言,這是自然選擇的結果。在合適的地方用合適的材料,並不是因為材料非得用最貴的,最貴的不見得合適。或許將來有一天,程序會用中文來寫,但一定不是因為符號本身,而可能是因為社會發展,思維的需要了。英文背後是線性思維,中文背後是立體思維。其實,現在很多項目已經在用中文思維來解決更加複雜的問題了,只是表面用字母符號來表達而已,這也是當前甚至以後各領域中國影響力越來越大的原因。按照三體孫介紹的,是降維打擊,我們不用妄自菲薄。

7,看盡千帆過,跳出此山中。不用太糾結於表面形式,尋找更深本質,或許會更好。

與各位討論。


原語奮鬥


提倡中文編程,和想要一門中文編程語言的人,9成都是菜,以為把英文換成中文就容易編程了。認為喜歡英文環境編程的人是怕用了中午之後大家都會編程了。 有這種思想的人,連為什麼自己水平差都不知道,這根本就不是一個語言問題能解決的。。

計算機的經典教材,名著都是國外的,前沿的資料都是英文的,最火熱的開源社區也全是英文環境的。

如果一個人從菜鳥變成一個計算機行業的大神,必然是看了無數英文資料慢慢成長來的,這種人早就悟透了想要變強,英語就是一個必經之路,而編程語言裡面那幾個單詞都能成為絆腳石的話,這種人最多也就是個培訓班水平。 看再多的國內教材國內資料也只能算是吃別人剩下的東西,質量不僅差而且舊。

編程講究生態,就算有中文編程語言,一堆菜鳥在用,能產生什麼生態,本來中國的優秀開源軟件就沒多少,更別說用了中文把整個外國開發者全都拒之門外的閉關鎖國式開發了。別做夢了,就算中國的大神寫的開源項目,參與的開源項目,也是在github上全英文的。

有了中文編程語言,有第三方庫可用嗎?

openssl boost dpdk 等等這些庫是不可能再造一遍輪子的,因為菜鳥寫不出來,大神不屑於再發明一遍這種輪子。

所以鼓吹中文編程語言的人,多提升一下自己吧,真正有實力做一款優秀編程語言的人,如果知道自己的潛在用戶只是一些英文變量名都是障礙的人,那他一定不會費力做這麼一個東西出來的。


冰封灬飛飛


我來解釋下吧,其實很多人的程序,並不是英文的,而是拼音和簡稱的,不流行不代表不行,而是做基礎工作的人很少,要用什麼沒什麼,而且英文編程又不是很難,就那麼幾十個單詞,還有補全,最重要的是中英文的標點符號不兼容,很多程序誤輸入中文標點是不行的!

但是,本人最近在做電控編程序,用的是程序塊,面向對象的思維,就全部是中文的。

最終,你的變量會編譯成存儲空間,佔用資源也只是源代碼,運行沒啥區別。

之所以不流行,是因為搞中文編程的人還沒有領會中文的精髓,博大精深,例如勾股定理,溝三股四玄五,用表達式,用白話文,用數學要多大信息量才能表示?

其實,中英文在asc碼裡面,僅僅位置不同而已,要深入掌握中文精髓,中文比英文更有優勢,尤其面向對象,更復雜運用,中文更能發揮潛能。


鞠躬車馬前


1、 語言機制擺在那,漢語我們的母語使用起來自然方便,但是作為編程語言,可能沒那麼方便,這裡的編程指的是寫代碼,不不是拖控件那種GUI開發,比如"if()...else..."語句,用英文單詞不會產生歧義,漢語博大精深,“意思”的意思不用說了吧,就比如說代替前面的"if()...else..."語句,可以用“如果……那麼”,亦或是“假如……就”,反正怎麼都能翻譯,但是高級語言寫的代碼是給計算機理解的,不允許產生歧義。而且用英文寫代碼更簡潔不是麼;

2、寫過代碼的人亦或是瞭解計算機基礎的人,大概瞭解操作系統,編譯原理等知識,操作系統內核沒有中文寫的吧,當然可以封裝接口調用庫函數,你不損失性能麼?

3、用中文編程不是不可以,而是沒必要,你去利用利用計算機是解決問題,怎麼方便怎麼來,什麼順手什麼來,包括編程語言的選擇這些,工作中不可能一門語言你就能走向人生巔峰,做C++的項目中會遇到Java代碼,做Java的做到高級工程師你不還得了解內存管理和指針傳參麼,Python也是一樣,只不過有各自的適用場景和生態體系,沒有好壞之分,做到後期,還是回到了操作系統,計算機網絡等基礎知識以及相應領域的技術體系。再說了,現在小孩幼兒園就已經開始學習英文了,有必要糾結單詞麼,畢竟英語還是國際語言,就算有理想封裝一套漢語編程語言,怎麼推廣了?現在全球化,甚至就算用漢語寫操作系統寫出來了,大廠會用麼。什麼東西都有他自己各自的適用場景,主體是人,我們眼光不能太侷限!


柚子樹plus


用什麼編程有區別嗎……每天吵著這個語言好,那個誰用的多。搞的程序員就跟過去的秀才一樣酸,生怕別人說自己會的那門語言要不行了。計算機是一個系統學科,編程語言只是個工具,工具背後還有計算機的內在原理和設計靈魂,為了最淺顯的爭來爭去也真是顯示了我國的計算機軟件水平……


計算理論


用中文編程的想法挺好的,如果有這樣的編程語言我一定會使用。

如果有人嘲笑這個想法,我認為他們並不是嘲笑用中文編程這個想法,更多的是出於自嘲或者是不願意在已經十分成熟的編程體系下去做看似費力不討好的改變。

編程語言,尤其是高級編程語言只是程序設計中最基本的一環,也是最直觀的表現形式。它離程序的本質有些天翻地覆的差別。

簡單說程序的最終面目是機器指令。而從高級語言到最終的機器指令中間要通過語言預處理、鏈接、預編譯、編譯等多個階段。而機器指令的執行又跟計算機體系架構,機器指令碼設計密切相關。

因此看似簡單的高級語言編程,其實其內部有一套十分複雜但是又嚴謹的邏輯體系和工具鏈,還涉及到芯片設計和指令碼設計。因此,想開發一種新的編程語言並不容易,需要有一整套的開發環境和編譯工具來支撐。

很可惜,我們在這層的技術積累還遠遠不去歐美等發達國家。

如果有一整套的開發環境和工具鏈的支持,用中文編程也會水到渠成。至於傳說中的中文編程二義性,複雜性等都不是問題。

要知道編程的最高境界就是代碼要有自解釋性。如果有中文的編程語言,這可是有極大優勢的。起碼我們再也不用為起一個具有自解釋性的變量名而發愁了。多少次為了起一個規範的變量名而默默著查閱著英文詞典;多少次想用漢語拼音代替卻不允許……

對於中文編程的阻力除了上面說的開發環境和工具鏈外,還有一個很大的問題是編程習慣。

現在的軟件開發用的全是國外的編程環境、工具鏈和規範,學校裡學的也是這套東西。要是想讓一個已經熟練掌握了自己熟悉的編程語言的人轉到其他語言上去,多多少少還是會有一些牴觸的。

所以說,中文編程的說法本身並不可笑,只是裡面包含了很多的無奈罷了。

(如果其他網友有不同的見解,歡迎大家進行友好的交流😄)


鄴城二哥


反對中文編程的,我想請問一個無意義假設問題。如果計算機是中國人發明的,如果編程語言當年中國人就用中文寫,推廣到全世界。現在有人提出用英語寫編程。你覺得他們會不會同意?

用中文編程不是不行。關鍵在於和英文相比軟件容量肯定會大一倍。一箇中文字佔2個字節。


冰爝魚


從命名法來講,還是舉例,比如兩個變量命名,英文大概是

MybatisCodeProHelper,

szOfficeMobilePhoneService

對應中文可能是:

麥巴蒂斯代碼專業版助手,

零字串辦公室移動電話服務

比較平,沒有突出分類

好一點的可能是:

麥巴蒂斯_代碼_專業版_助手

零字符串_辦公室_移動電話_服務

嗯,加下劃線一樣要敲Shift,而且多一個字符。

同時也需要專門的輸入法(這個問題到不大),來解決英文標點頻繁切換問題,反常用習慣。自動補全的效率也不如英文的高,首先你得先把麥字打出來,而英文打個M,或者再加個c,自動補全就已經很準了。對比中文可能是先打個麥,再打個代,才能達到相同的效果。效率問題,積少成多,對"搬磚"的工作很不友好。程序員除非天才,心力超群,否則就是自己找虐。另外無論中文還是英文,都要寫註釋,註釋不是簡單的翻譯。如果是,英文母語的人為啥要寫註釋。

中文編程當興趣可以,當生產力工具? 嗯。。。。。。。。


分享到:


相關文章: