我答"編程為什么不用中文?":中文API的意義和探索
原問題的題目比較寬泛,先引用原問題的描述:
不要說什么中文難打,難記,難讀之類的荒謬話語。
也不要說關鍵字只有幾十個。我一點不覺得那些for,if,+,=有什么價值。閱讀代碼的時候我希望盡量不要看到哪怕一個運算符和關鍵字,盡量全封裝起來才好。(愿世界再沒有長段代碼塊)
編程百分之九十九的工作是面向API編程。
而java的標準庫接近上千吧,安卓的api有幾千?ssm框架呢。dom和相關vue,react框架呢。CSS的幾十個屬性,上百屬性值也不那么容易理解吧。底層開發人員還要大量用系統調用和內核api呢,這也是大坑。其他三方庫,開源項目的api不用說了。
這些類名,方法名,屬性名,常量名的記憶要多久呢?不記憶查詢的話消耗的中間成本是多少呢?那些錯誤提示,那些看原版資料的時間,那些上谷歌,stackoverflow的成本怎么算呢。
在公司工作的時候,api的設計和閱讀是否是痛點之一呢? 為了幾十萬行的程序要分多少層,多少模塊,要設計多少個類,多少屬性,多少變量常量,多少對象名,多少css類名。為此寫多少文檔,多少注釋,死多少腦細胞?
在工程化,標準化,框架化的現代,在越來越重視軟件工程規范,分層,封裝,模塊化的現代。在代碼幾十萬上百萬行的現代。在越來越講究代碼可讀性,講究代碼自解釋的現代。
中文化真的沒意義嗎?
我的回答如下:
- 很高興看到針對API和可讀性的問題,也是中文編程相關話題中相對較少討論的部分。
毫無疑問,在中文是唯一官方語言的地區,在編程中更多地使用中文是必然趨勢。
標識符母語化可以提高代碼可維護性,詳見:《對在代碼中使用中文命名的質疑與回應》。如題主所言,業界對代碼可讀性意義的認識提高是中文編程的一個助力。詳見《中文編程興起的必然性》。
API是標識符中的重要部分,但也是一個短板,亟需補上。個人認為,隨著自定義標識符使用中文的逐漸推廣,API中文化也會逐漸推進,從專業領域到通用領域是比較可能的方向。
中文編程專欄之前有過一些探索。比如將英文API漢化后的對比:《用中文命名API的意義和途徑》
英文版:
使用了中文API的版本:
(第一個?)在常用包管理平臺發布的中文API:《在Maven Central發布中文API的Java庫》。
因為庫本身就是針對中文處理的,因此中文API自然而然。當然絕不是只能在中文相關項目中使用中文API。即使保留英文API,中文API也可以在所有已有的開源項目中積累,詳見《在國內原創開源項目中使用中文命名的意義與方式》。再之前也有嘗試:《FriceEngine試用與API中文化》
API中文化雖然看起來技術門檻不高,但很大的一部分工作量在于補完測試和術語一致。發現的對現有編程語言和常用庫進行漢化的開源項目,還沒有看到完備的測試集,而這是庫的質量的最直觀體現。常用API中英文詞匯的對應中文術語,也尚未形成完備的對應表。這和標準/常用庫往往有成百上千個API有關,也和IT術語尚未標準化有關。
因此,(傳統)專業領域也許更容易進行中文API的實踐,因為領域本身就已經有完備的中文術語系統。游戲領域自不用說,工業領域更是如此。舉個例子:
自研API需要實踐積累,因為API設計一方面是個軟件問題,更需要對業務需求相當熟悉。另外,中文API也和少兒編程息息相關,尤其是如果要將編程應用于傳統學科(如數理,語文等等)的教學,就必須開發一套母語的領域API,比如日本的《小學編程教育指導》中,就有這樣的母語API的例子:
最近也看到不少中文Scrach的類似環境,但似乎尚未看到和傳統學科結合的例子。
總之,路在腳下。希望多多交流,一同努力。