對中文語法的編程語言的質疑與回應_風聞
吴烜-2020-08-24 07:05
一直以來有各種對中文編程語言的迷思,最近在評論區中也看到了很多類似的人云亦云。這裏列出了一些最常見的質疑聲音,並一一進行針對回應。
英語和編程無關
1. “只要會幾十個英文關鍵詞,就可以學編程了” —— 所有的API都是英文的,看中文文檔已經比直接理解API名稱間接了一層,還不用説中文文檔的質量和覆蓋面問題。
2. “編程使用的是符號(標識符等等),與自然語言無關” -- 參考《對在代碼中使用中文命名的質疑與回應》一文中關於可讀性的部分
3. “編程的門檻是邏輯,而不是英文” —— 從“邏輯不好會導致編程學習困難”並不能推導出“編程入門困難的就邏輯不好”。隨着編程經驗的積累,反過來肯定會使邏輯更加清晰,而英文導致的額外入門難度本是可以避免的。
4. “英文不會提高編程門檻” —— 即使是國外開發者,也對非英語國家學習編程的自帶難度有認可。一個可能是他們都誤會了,另一個就是這個明確的中文編程語言的市場需求被出於各種原因視而不見了。
同樣功能的LOGO代碼,中英文對比
很多英文編程語言都是由非英文母語的開發者創造的
如: python-荷蘭;pascal-瑞士;Erlang-瑞典;php-以色列;ruby-日本。
**回應:**與《對在代碼中使用中文命名的質疑與回應》一文的“芬蘭人 Linus,使用英語而非自己的母語來編寫Linux代碼”一節同理。上述所有語言都沒有與中文和英文同等量級(都是十幾億)的使用人口數量。最接近的日語也有十幾倍的差距。
中文比數學表達式繁瑣
最常給出的例子是1+2-3*4 用中文寫就是“一加二減三乘以四”,以此説明中文不適宜作代碼。
**回應:**也沒有英文編程語言這樣設計“one add two minus three multiply by four”。中國本身的平均數學水平就在第一梯隊,對阿拉伯數字和這些基本數學符號基本做到了全民普及,為何一定要選擇在編程語言中用漢字表達數學呢?當然,不是説不能用‘加’、‘減’等等作為關鍵字,而是説很容易做到兩種模式都支持,根據具體情況使用。
從硬件接口到語言/接口都是英文的,不可能突破
中文編程語言的設計實現,瓶頸不在於編譯器技術。而是走出第一步,開發一套實用的語言和配套的中文接口的標準庫(後者的設計難度和實現工作量也許不亞於語言本身的設計和實現)。之後的迭代和演進將水到渠成。當然,突破壟斷總是難的,但技術上可行,也已經有人才儲備。
中文輸入效率低
見《對在代碼中使用中文命名的質疑與回應》“中文輸入太慢,降低開發效率”一節
難以國際化
首先,《對在代碼中使用中文命名的質疑與回應》“不利於非中文編程者貢獻”一節闡述了絕大多數國內項目的本土特性。其次,如果實力和需求已經達到招募國外程序員的地步,相信國外開發者也會去學中文的。綜合國力的提高必將催生文化輸出。中文編程語言相信會使國內的編程效率獲得進一步提升,進而提升IT行業整體的國際競爭力,進而扭轉勞力輸出的趨勢,中文編程也將成為文化輸出的一部分。
不如做好各種文檔以及編程工具的翻譯
這是迫於現狀不得不為,長遠看只能跟着別人後面亦步亦趨。
而中文編程語言是屬於自己的路,節奏和方向都在自己把握中,也是擺脱跟跑的更可能途徑(為何更難以創造新的英文編程語言請見《國人創造中文編程語言的優勢》)
需要推翻現有的一切從頭來
就像很多JVM語言如Kotline、Scala 都可以調用 Java 庫,中文編程語言一樣可以在設計時就加入類似特性,從而在創始時就可以使用所有或者部分現有語言的實用功能。這種情境下的中英混用與在現有英文編程語言中使用中文命名同理。在此基礎上,可以逐漸完善自身的中文接口的標準庫。