Rust 語言選擇支持非 ASCII 碼標識符在 GitHub 引發的激辯(二)

難難難,道德玄,不對知音不可談。對了知音談幾句,不對知音枉費舌尖!

書接上文,至 2018 年 6 月 5 日,RFC#2457剛創建三天,已看到了不少反對聲。在非英語母語的參與者中,華人開發者群體尤為突出。形成對比的是其他非英語社區的積極反饋。包括韓語命名的經驗之談,葡萄牙語、德語命名的實例代碼(Java,PHP,C++等)。

之前說到 eggrobin 受 Rust 開發組的 @Manishearth 邀請,來談他使用非英文標識符的經驗。開篇自稱未寫過 Rust,是 Principia 的合作者。【之後至少十餘日他一直參與討論,覺得值得多瞭解一點,下面的方括號內容都為本人旁白】

地道法國人,2002 年開始學 VB6, 2003 年開始學 VB .NET,2004 開始 Ada95。看著頭像很年輕,果然!他 2004 年進入collège,時年 11 歲,開始學英語,到 2006 年可交流。

期間讀法語編程書籍(Amazon.fr - Programmer en Ada 95 - 2e édition - John Barnes, Hughes Fauconnier - Livres,不知是否也用了法語命名),同時用他能寫能讀的語言命名標識符——法語(字母有音調)。2006 年開始,他轉為用英文標識符,因為英文關鍵字+標準庫 API 和法語標識符混搭看著亂。接下來十年間,編程,大學讀純數學,成為軟件工程師。

下面他開始回應樓上。提到雖然 Ada95 IDE 存在非 ASCII 碼的 bug(把非 ASCII 字符後的 ASCII 字符自動大寫,形成像TrèS_ÉLéGant),但他那時捏著鼻子忍了【真能忍】。 在同一標識符中混合英文+非英文也有,因為計算機術語在非英文社區往往仍是用英文進行交流,而業務領域相關的概念就像之前 @kimhyunkang 提到的,適合用母語命名。【關於技術 NFKC 和 NFC 的一段略去】

接下來提到一個很喜歡用 unicode 命名的編程領域:數學。【因為是本行,應該挺有發言權】因為如果用英文縮寫,經常會有不一致的情況:

several decades of academic code show that what happens in the absence of Unicode is that they write wonderful tersest possible yet inconsistent abbreviations for the letters, such as om or w for ω, not argument_of_periapsis, gamma for γ followed by gsq for γ², etc. (dig up your favourite pile of astronomical FORTRAN or FORTRAN-like C for entertaining examples).

更指出在語音學者中也有類似需求:UTF-8 support for identifier names in GCC【GCC,你也是個拖後腿的,不過GCC 10 搞定了】

接下來引用了huangjj27提到的中文輸入法切換導致寫碼效率問題,但是,看他的回應似乎並未領會切換這個問題,而是理解成了非 ASCII 碼標識符的閱讀難度問題,回應與之前一位類似(用英化的日文命名仍然只有日本人看得懂)。【這倒是個不同文化間英文交流有誤解的實例】

【臺下各位,已經寫了一個鐘頭了,今天且看看能不能看到華人聲影吧】

哦哦,說什麼來著。還是來自北京的 3442853561 ,指出導出 crates 會有問題。以及,(自稱無偏見的信息)在中文和日語為母語的地區,這個(非 ASCII 標識符)功能極少使用。【還替日本社區發聲了居然,大期待後面有日本開發者現身】

whitequark 提到,OCaml 也在考慮從 ISO-8859-1 轉到 UTF-8。

mark-i-m 又來了,表示不樂意看到代碼中出現const π,用起來痛苦、也並不特別容易讀、也不能讓代碼的受眾更廣【有點耳熟的怨念呢】

有趣的是,他在三號打的第一槍,下面有 50 9踩;而今天的這樓,三贊三踩五困惑。看來噴的實在是捧不起來。

果然立馬被數學小子eggrobin懟了,順帶更多NFKC相關內容【也許之後要多瞭解一下】

clarfon 同意數學公式用非 ASCII 的數學字符能更可讀。但建議除非目標用戶是非英語社區,否則庫的 API 用英文。【聽起來有點多餘,本身是否使用非 ASCII 碼標識符就應該是作者自願。刻意強調 API 部分的確反映了API 的特殊性】

由於 PR 的 review 和評論排列順序,跳播一個 7 日的來自JelteF的PR review。荷蘭人,指出小時候英語不流利時用母語命名標識符更加容易,不用同時學編程和英語。他自己就是實例。緊接著 PR 的創建者

pyfisch 也應聲附和表示有類似經歷。

下面 10 號來自座標日本東京的 CAFxX (意大利人)對這兩種老生常談的謬論簡直一針見血:

The underlying argument is that one needs to write in English so other people can read it.
”要寫英文其他人才能懂“
他的回應: Then the underlying argument is proved false by the existence and size of huge Chinese communities where English is definitely not the primary way of expressing yourself, nor it is required to look up information.
“在龐大的中文社區,英文絕不是首選的表達和問訊途徑”
And even if you write code just for yourself you should write in English to learn it.
”即使只是寫代碼給自己,也該用英文,正好學習英語“
他的回應:I think this corollary is preposterous because it boils down to: "since somebody arbitrarily decided for convenience that everybody else should write code in English, you have to learn English even if you are the only person you will ever read the code you write". To see how tone deaf this argument is, replace "code" with any of "letter", "notes", "book" or "song" and then tell me if it makes sense...
“這個論調簡直荒謬。就像是說‘既然有某人裁斷,為方便起見,所有人都必須用英文寫代碼,所以你必須學英文,哪怕你是自始至終唯一一個讀代碼的人’。還沒get到這有多扯淡的話,可以試試把上句中的‘代碼’換成‘信’,‘筆記’,‘書’或者‘歌’,再告訴我是不是扯。

回到 5 日時間線,mark-i-m 附和clarfon的建議 API 用英文。【別告訴我這被最後從技術上限制了!】

又見來自韓國的kimhyunkang, 回應之前有關鍵盤輸入的質疑,聽起來就是說韓國和朝鮮的鍵盤都是標準鍵盤,可以用韓文輸入法。【情況和國內類似】

終於,座標中國的 liigo 對之前提出 GBK 的那位回應,既然 rustc 只支持 UTF-8 編碼,GBK 什麼的應該不是問題。【難得的來自華人的中性聲音】

5 日接下來的討論都圍繞 NFKC 和 NFC,略過。

【又是一小時,休息片刻繼續,好不容易看完了一天的】

6 月 6 日,ssokolow 不知道如何輸入π。Rust 組的eddyb 回應他裝了希臘輸入法,可以輸入λ,π等等【我中文輸入法威武,通吃】

lambda 表示基本支持,結尾仍希望不建議 API 使用非 ASCII 字符,並開發相關 lint【編譯器的代碼檢查?】補充說沒怎麼看到過包含非 ASCII 字符的 API,除了一些數學領域和 APL。

今天就以韓國的 kimhyunkang

的19高贊樓結束吧。

Rust 語言選擇支持非 ASCII 碼標識符在 GitHub 引發的激辯(二)

”我的韓國同事不用韓語命名的一個主要原因是工具,為首的是Windows對 Unicode 的爛支持。Windows 視 Unicode 低一等已有數十年。... 一些編譯器、IDE 和構建工具也類似,並不顧及源碼和資源文件中可能出現的非 ASCII 字符。”
“我能接受英文作為國際交流用語。但有些人將之泛化號稱非英語母語社區必須毫無例外地在代碼中使用英文,簡直荒唐。那恰恰是軟件普遍對 Unicode 支持不佳的原因,儘管 Unicode 已有 30 年曆史。”
”如果你在英語母語國家,參與一個英語開源社區,似乎很可以假定所有程序員都說英語。但絕非如此。我所有的韓國同事和朋友在工作中都用至少一兩個開源工具,但只有不到一成參與項目,就是因為他們不自信英文水平能夠參與英語社區的討論。你們沒看到很多英語不好的人不是因為大家英語都很好,而只是因為社區本身是純英文的,軟件行業俯視非英文語言由來久矣。

點讚的號中,看到了三位法國人以及來自俄羅斯、德國、意大利、中國、日本、羅馬尼亞、阿根廷的開發者。【法國,果然五常】

預知後事如何,敬請關注本號!


【個人還比較期待的是來自日本開發者的現身說法,以及最後對於 API 的處理。如有其他特別想了解的方面請留言,否則接下來就走哪算哪了】


分享到:


相關文章: