今天終於下定決心建立了一個開源項目 [PwML:開源母語編程] [addr] [addr]: https://github.com/FreeBlues/PwMLphp
前一陣子看代碼看得雙眼乾澀、頭腦發燙,尤爲是英文自定義函數名,過短了不清楚意思,想清楚表達意思就要忍受長長的名字,並且相似的函數還不僅一個,全部的自定義函數爲了清楚表達含義,都很長、很長,看得人只想吐,因而萌發了用中文作函數名的念頭,再進一步,用中文、標點符號、數字來寫代碼。html
首先介紹一下背景知識,英文是一種拼音語言,中文是一種拼義語言,拼義語言這個概念是由香港中文大學心理學教授 [張學新] 1 根據其對漢字的研究結果提煉出的一個概念,大概的理解就是英語是基於不一樣語音的組合,而中文則是基於不一樣含義的組合,詳細的理論能夠參考他的2012年發表在[《科學通報》] 2 的論 文 [《漢字拼義理論》] 3 和 [《頂中區N200: 一箇中文視覺詞彙識別特有的腦電反應》] 4git
前面提到英文程序中的函數名稱過長的問題,事實上用中文作函數名有先天優點,兩個英文字母對應一箇中文字符,兩個中文字符組成的詞語能夠很清晰地表達一個概念。可是對應存儲大小的四個英文字母卻基本不可能表達清楚一樣概念。程序員
因此甚至若是你精通古代文言文,你還能夠把函數名稱簡化爲一個漢字字符--只要你本身能讀懂,再舉個例子,好比 「define」 這個關鍵字,直譯爲現代中文是 「定義」 ,原來要6個字節,如今變成了4個字節,那麼把它翻譯爲只佔一個字節的古文言文單字該怎麼翻?就是 「名」 ,《道德經》的第一句你們確定都很熟悉:「道可道,很是道,名可名,很是名」,這句話裏出現的第二個「名」就是命名、定義的意思,看看下面列出的這三種形式的代碼的比較:github
英文代碼: > define function1() 現代中文代碼: > 定義 函數1() 文言文代碼: > 名 函數1()
除了函數名稱,關鍵字以及語法也能夠以文言文的簡約方式來定義,這樣你寫的程序就是文言文程序了,這樣一想是否是以爲頗有趣?編程
就像上面提到的「函數」這個概念,中文兩個字符表達得很清楚,只佔4個比特的存儲空間,可是英文的「 function」就須要用到兩倍個數的英文字符,要佔8個比特的存儲空間。函數
英語這種基於語音的特色,使得英文天生只能是一種一維線性文字,也就是說英文適合於聽覺處理,而不適合視覺處理,而中文則偏偏相反,中文是一種基於視覺的二維文字,中文不須要那麼多單獨的讀音去區分,由於它是各類基本概念的組合,中文的同音字特別多,就是由於中文主要依賴於視覺的識別。就像如今比較流行的二維條形碼,由於設計者受拼音文字影響,因此設計成只適合機器識別的方式,人卻沒法直接看懂,其實後續的二維條形碼能夠設計爲中文的樣式,這樣機器和人均可以閱讀,這實際上是中文的一種巨大優點。插件
由於程序員不可能依靠耳朵去聽代碼,只能是依靠視覺去看代碼,因此在這種使用場景下,用中文做爲程序語言要優於英文。翻譯
根據上面的分析,咱們發現使用中文編程能夠有效縮小源代碼的規模,並且項目越大,這種效果越明顯,若是使用現代中文的方式進行寫做,源碼體積可縮小 1/3 到 1/2,若是使用文言文的方式進行編程,源碼體積可在現代中文的基礎上再次縮小 1/3 到 1/2(固然這個只是粗略的估計,具體的數據等我完成源代碼翻譯器再進行精確的統計)。設計
有人可能會擔憂輸入的工做量會增長,如今的開發環境通常都會有很是完善的自動完成功能,通過個人試驗,使用 Emacs 編輯環境中的自動完成插件,輸入的工做量跟使用英文基本持平,因此沒必要擔憂這一點。
目前中國國內有兩種中文程序語言,一種是易語言,一種就是中文化的PYTHON,前者屬於商業化軟件,不適合進行探索性試驗,後者則受限於 Python 語言自己的能力,也不太適合,在瞭解了 Common Lisp 的一些特性後,突然發現 LISP 是最適合作開源母語開發的基礎平臺,首先是 Lisp 語言強大到逆天的宏能力,具有自定義一種新語言的能力,其次是所有開源的開發平臺環境,再加上 Lisp 自己的迭代開發模式,很是適合咱們用它來進行母語編程的探索。
初步計劃是這樣:先嚐試搞一箇中文編程的環境出來,而後再選擇幾種其餘非英文類型的語言進行試驗,這樣每一個國家的程序員均可以使用本身的母語編程了,程序員寫的程序也能夠被其餘非編程專業的讀者較爲輕鬆地閱讀理解。