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