標籤:

為什麼代碼都是用英文來寫的,將來會有用中文寫代碼的那天嗎?


嚴格來說,代碼不「都」是用英文來寫的。不算上打孔卡片的話——

  • Dolittle, ドリトル,讓你可以用日語編程
  • ARLOGO,讓你可以用阿拉伯語編程
  • var"aq,讓你可以用克林貢語編程
  • Brainfuck,讓你可以用 - + [ &< . &> ] 等符號編程
  • Whitespace,讓你可以用空格編程
  • ChinesePython,讓你可以用中文寫 Python
  • PerlYuYan,讓你可以用中文寫 Perl

更詳盡的名單請參見[1]。請記得沒有人阻止你用任何自然語言的符號集合來製作一門編程語言,「編程本來就是用英文的,所以它當然也應該一直用英文」這樣想法,與世界上所有其他的沙文主義一樣,都值得警惕。當然,不用英文的編程語言能否興盛是另外一個話題了。我個人覺得非英文編程這件事情還是挺有趣的,舉 PerlYuYan 為例:

---
# The Sieve of Eratosthenes - 埃拉托斯芬篩法
use Lingua::Sinica::PerlYuYan;
用籌兮用嚴 井涸兮無礙。
印曰最高矣 又道數然哉。
截起吾純風 賦小入大合。
習予吾陣地 並二至純風。
當起段賦取 加陣地合始。
陣地賦篩始 繫繫此雜段。
終陣地兮印 正道次標哉。
輸空接段點 列終註泰來。
---

你當然可以說這東西只是無用的花巧,不過人生所有議題若都以有用沒用來取捨,活著與機器何異。

本版同文馮東稱「表意符號,或者二維表音語言(比如韓語正民訓音)幾無可能用來表示任何邏輯符號系統。」,以我理解,說的不是自然規律,而只是文化現狀。是的,編程主要以英文進行,主要是歷史和文化原因,也就是說,因為計算機興起於英語世界。至於「別費勁什麼漢語編程了」,我覺得只要高興,費點勁沒什麼。

[1] http://en.wikipedia.org/wiki/Non-English-based_programming_languages


幾年就有了中文編寫代碼的語言:易語言
不過沒多少人會用的,效率不高。


代碼不是用英文寫的……

代碼是用ansi寫的……

如果一定要看到中文字的話,visual studio好像可以用gb2312寫c#……

實際上早就有很多玩具可以用gb2312寫代碼了……

中國的碼農在這方面做過很多好玩的工作。

啊,你不知道什麼是gb2312?

那你還寫什麼代碼……

不如回家賣紅薯。


http://bbs.csdn.net/topics/380159364
C# 好歹也是主流語言了…
另外習慣上源碼的字元組成極度受鍵盤制約。別說漢字,就連帶附加符號的拉丁字母(如部分英文文獻用的 ? )也很少用。


1、英文編程出現的早,首先佔了主流,
2、隨後程序員們學用英文編程
3、學習和使用相的配套越來越豐富,英文編程語言越來越強越來越成熟
4、思維固化認為這是理所應當或者認為這是英文的優秀導致。

用其他語言或者乾脆是圖形編程當然也可以,但目前拉出來乾乾不過已經得勢的英文編程。如此而已。


雖然支持中文的語言不多,但是幾乎所有主流語言都支持漢語拼音,而且事實上很多人就是這麼乾的:

String xingming = "zhangsan"
float jiage = 3.2


你當然可以選擇用自己的母語來編程。不過記住幾點:

1。優秀的代碼會持續的時間與領域都遠遠超過你的預期,當你的代碼被傳播到更多的平台以及更多的國家時,使用英語是對世界程序員的尊重。

2。全世界最受歡迎的程序員,芬蘭人Linus,使用英語而非自己的母語來編寫Linux代碼中的注釋,這並不是偶然。

所以,如果堅持一輩子只寫用過就扔或者說雞肋級別的代碼,那麼用什麼語言完全沒有關係。


現代的數學邏輯符號系統,一般均用表音字母語言的單詞或者字母表示。表意符號,或者二維表音語言(比如韓語正民訓音)幾無可能用來表示任何邏輯符號系統。

斯拉夫字母,希臘字母,這類字母系統都已經被排除,就別費勁什麼漢語編程了。


中文編程當然是有的。我用過的有java, python,js,它們都是支持中文變數名的,我曾經試過把計數變數 i 命名為「歷史的進程」。


大部分回答者可能都是程序員,很容易從本身的角度回答問題,除了對外交流學習的必要性,學了那麼多年的吃飯傢伙,肯定希望門檻高一點才好。

而對於非專業人員來說,覺得中文編程或者寫代碼對於易讀性的提升還是有很大幫助的,尤其一些廣泛普及的開源代碼,比如php編寫的discuz,如果其中的變數名都使用中文,對於二次開發應該有很大的便利。

如果一些針對非專業編程人員的場景,比如實際的業務邏輯處理部分,即使只是採用中文變數名,對於提高業務代碼的可讀性也不是一般的提高。

對於學習編程的人員來說,採用中文變數和代碼,也可以讓大家認識到,這些代碼對於計算機來說,實際都是一樣的,提高易讀易學性的同時,可以更深入的理解計算機運行的本質。


你沒聽說過易語言?


你可以把問題改成:「為什麼沒有使用一二三四或者壹貳叄肆做為輸入的計算器」,道理是一樣的。


怎麼能說代碼是用英文寫的呢?代碼是關鍵字+符號+常量+變數+注釋,按指定語法結構組合在一起而成的。

其中關鍵字和符號屬於語言本身。關鍵字大多取自常見英文單詞,但跟英文的本意沒啥關係。比如for,原來哪有循環的意思?更沒有「第一段初始化第二段條件判斷第三段修改值」的意思,完全是語言創造者自己定義的。

而之所以用英文字母,是因為ASCII碼只有95個可列印字元,只包括了大小寫英文字母、數字、常見標點符號和空格。為了取得最大兼容性,在任意終端、任意編輯器中都能無障礙查看,就會把代碼的關鍵字設計為不超過這些字元的範圍。

不光中文不行,法文俄文德文日文阿爾及利亞文也不行,都在ASCII可列印字元範圍外。一旦設計出這種非英文的語言,那意味著可能有些電腦缺少字型檔不能顯示,有些能顯示但別人看不懂,還有些看得懂卻沒有輸入法打不出來。

設計語言的目標什麼?當然是為了讓更多的人用。你第一步就把所有非本語種的程序員拒之門外,這不是作繭自縛嗎?

易語言就是這樣。VB6級別的語法+中文關鍵字,基本鎖定了它的用戶群體上限。無論怎樣證明「它什麼都能開發」已經沒有意義了。

而常量和變數都是開發者自己定義的,想寫哪國語言都可以,只要編輯器支持就能認。

現代編輯器倒是基本都支持UTF8了,但使用中文變數名本來就是麻煩事:不易和其他語種的程序員溝通、錄入費勁、智能提示的支持差、在Shell界面不容易維護等。帶來這麼多麻煩和風險只為了在代碼里使用中文?只能用真愛來形容了。

字元串常量包含中文倒不能說是錯,只不過對於資源的易維護性來說,寫死在代碼里 &<配置文件&<資料庫。不光中文,就算英文也最好別在代碼里塞得到處都是。

最後說說注釋吧。對於一個大部分國人的團隊來說,沒太大必要連注釋都全部國際化,注釋可以算文檔的一部分,那內部文檔要不要也全英文?常見方式是這樣:越接近實際業務的,注釋盡量用中文;但對於核心庫、自造的通用輪子、與業務邏輯脫鉤的那些公用組件,不妨就整體使用英文注釋,將來無論是開源還是作為獨立產品發布,都是極有好處的。況且能寫核心代碼的程序員對全英文化也沒什麼障礙可言,沒有難度。


用中文編程沒有什麼不同的啊,只是換了一種字元,寫出來的還不是英文程序的思維方式。


對至今碰到的一些對中文命名的質疑,整理了一文:對在代碼中使用中文命名的質疑與回應

為澄清誤解,關鍵詞和標準庫是英文不代表編程語言不支持用中文編寫代碼.

經簡單測試, 以下編程語言都支持中文命名 (詳見為什麼大家都很否定中文編程? - 吳烜的回答 - 知乎),以字母排序

C,
C++,
C#,
CoffeeScript,
Common Lisp,
FASM,
Go,
Haskell,
Java,
JavaScript,
Kotlin,
MySQL,
Objective-C,
Perl,
PHP,
Python 3,
R,
Ruby,
Scala,
Sqlite3,
Swfit

另外, 之前嘗試過中文開發基於Spring boot的服務: zhishi/jinxiaocun - Git@OSC - OSChina.Net, 驗證可以在Java中以中文命名類/方法/變數, 以及MySQL中命名表格/列


要從底層改成漢語,比如晶體管的開關表示成了阿拉伯數字0和1,如果改成漢語應該用±"正負"+-,或者"開""關","通""斷"之類的表示法.
目前的計算機結構是分諾依曼式結構,其基礎是建立在英語,英語文化,英語思考邏輯等基礎上的,如果要創造漢語編程,就得先創造出漢語計算機技術,這不只是軟體一個層面,硬體也得是,其實就是借西方文化"計算機"的概念創造一整套漢語計算思想.這相當於是重新發明整個計算機體系了,漢語計算機結構等等.否則漢語編程只能是紙上談兵,

魔方,積木,拼圖,七巧板的核心本質是什麼?我將其抽象為 [組件拼裝]. 我們現在談論的漢語編程不過是翻譯英語罷了,如果要有實質性的改變還得從計算機結構改起,但是,改變馮諾依曼計算機結構實在太難了,工程浩大相當於重新發明計算機.現在我在想一種能繞過這個艱難的方法去實現漢語編程,那就是用跨平台的圖形化語言如瓦肯,把程序語言語法代碼組件化為一個一個的模塊元素(如C語言可以把某一關鍵字(或若干關鍵字)組件化為一個元素,也可以把某一表達式(或若干表達式)如流程式控制制組件化為一個元素),這些模塊元素用漢語標示方便可讀,這樣用滑鼠和快捷鍵就能實現快速"編程",也就是堆代碼,甚至平板等觸控設備也能做到,快速出程序,這就是我的想法--[代碼組件拼裝]--.圖形化編程,圖形化程序設計.讓初學者和程序大牛都能像玩遊戲或使用Adobe PhotoShop與Autodesk AutoCAD 一樣編程.此舉主要是想將程序員從關注代碼過程的注意上解放到關注程序邏輯本身上去,進一步增強對數據結構的重視與演算法的掌握.
語法元素和過程獨立化,以最大自由度實現圖形化編程,由此創造一個open and free的軟體世界,open不是開放是開源 free不是自由是免費.
如果不是圖形化的程序設計語言,那就意味著還得一個字元一個字元地敲,還得關注流程式控制制,如果組件化模塊化的話,分分鐘就能組裝完,分分鐘就是幾十幾百行源代碼,我這樣做的目的就是想讓人脫離簡單機械化重複性操作,以最大限度實現人類智能,因為人類的智能其實是可以無限增長的,所以,此舉其實是變相地提高了人類生產力水平,甚至一些基礎科學,
總得有人去踏出第一步的,沒有奉獻和犧牲精神,人類很難往前走出一步.那些反對和質疑的人們,看來你們還沒看到其前景和價值,不要緊,每個新事物誕生之前,人們一般都會唱衰,因為人們害怕人們不知道的東西,就像飛機,汽車,輪船,還有工業等新生事物誕生時那樣的社會反應.你們可能忘了我們人類祖先是怎麼從猿進化為人的.


不是有易語言么...
用不論用什麼你認為的語言來寫...
實際上只是翻譯的過程...所以,區別只是這個翻譯的過程...
背後同樣都是符號建立,符號鏈接....
和動態靜態二進位庫的鏈接引用...
所以,用什麼人類的語言沒有意義...


用中文的話程序員的加班時間估計又可以多一些了


我就想說,這種問題難道不屬於「降低社區討論質量」的問題?

當然,回答一下問題。

你要是想要中文編程你可以去用啊,怎麼沒有中文代碼啦?!易語言、習語言都行啊(易語言其實挺成熟的,尤其對Windows平台有很多庫,Windows API支持也可以。至於什麼習語言,就呵呵。),但是你天天寫代碼用這個試試!

怎麼說程序代碼(好吧,私以為題設的「代碼」是指編程代碼)也是用鍵盤敲的,那我也反問一句:為什麼現在的鍵盤都是英文(拉丁字母)的?未來會有用中文鍵盤輸入的那一天嗎?

希望社區里能禁止這種低質量的問題的出現。


童鞋你有沒有聽說過易語言?

童鞋你有沒有聽說過中蟒PHP?


推薦閱讀:

系統軟體到底裝在哪個盤比較好?
windows中文件或者文件名是按照什麼原則排序的?命名時有什麼技巧?
為什麼把軟體下載安裝到d盤但c盤的空間越來越少,57G的c盤夠用嗎?
你為什麼從海康威視離職?
DELL XPS的超高分屏怎麼在windows上解決字小的問題?

TAG:編程 | 計算機 |