layout: post comments: true title: 专栏全年主题合辑-代码中文命名相关实践 description: 在中文编程知乎专栏创立一周年之际, 对使用中文命名代码中的标识符的相关实践作回顾小结. Summary of practice of using Chinese naming for identifiers in source code one year after starting "Programming in Chinese" column. date: 2018-11-10 23:00:00 -0700
注: 本文仅对个人亲自参与的尝试作一小结, 专栏中其他作者的尝试还望各自总结. 文中所有例子都尽量使用了中文命名
一些对中文命名的早期实践:
在2017年发现多数流行编程语言已经支持Unicode/中文命名, 并开始小结中文命名的风格和特点. 2017年7月编写了中文代码示例教程之Java编程一天入门, 体验了选取例程题材的趣味与难度. 同月也在Maven Central发布中文API的Java库(后话, 在一年后喜获V2EX的用户反馈"第一次见以汉字命名的 Java 类"). 8月尝试对现有图形库p5js的接口进行中文化, 是在JDK接口中文化之后, 从通用库转向专用库的一步. 必须提到的是, 在2017年初发现13年前就有同仁提出中文命名的可读性优势与IDE支持问题, 而在半年后成立的"中文编程"GitHub讨论组中, 有幸碰到通过IDE插件实现拼音输入法和自动补全功能集成的同好.
在"中文编程"知乎专栏于2017年11月9月开通之前, 对现有框架的入门教程的示例代码尝试中文化, 并与VueJS开发组进行了中文命名相关问题的交流:
专栏开通之际编写的对在代码中使用中文命名的质疑与回应是对之前看到的各种反对声音的总结, 至今尚未看到有力的反证, 并且在一路上的探索中发现了越来越多的佐证, 比如11月末发现的Python3选择支持非ASCII码标识符的缘由.
专栏开通的初期, 进行了一系列的相关思考, 对今后的实践方向有不小影响:
对在线编程对中文命名的支持初步调研:
之后重心转向自研编程语言, 也进行了一些相关项目的中文命名尝试:
在2个月后的2018年4月, 开始对Python官方入门文档的示例代码进行中文命名:
原本是打算至少完成入门部分, 但过程中逐渐发现原教程示例的局限性, 如代码考古-Python3官方教程字典例程, 认为花精力在自己编写教程上也许更值得. 就有了"西游记"主题Python入门示例尝试-数据结构 5.1-5.1.2. 也尝试对国人原创教程中的示例进行中文化: 解谜计算机科学第一章示例汉化尝试
接下来是一段比较嘈杂的时期, 为Chrome和火狐浏览器编写扩展应该是为在插件中实现计算/编程工具做的技术复习. 此时发现了一系列针对中文编程/命名的软文:
不禁针对性地写了在代码中进行中文命名(类/变量/方法等)的优势. 至此, 深切感觉到进一步积极推广中文命名的必要性.
继续进行一些以中文命名作示例的小教程的编写:
至此, GitHub讨论组已创建一年, 深感核心项目的必要性. 下面围绕编程术语命名进行了一些技术摸索:
8月末, 源于组内讨论, 开始了批量代码汉化工具的尝试, 并开发了必需的英汉词典相关工具, 从浏览器插件, 在线服务原型, 到今天的vscode插件:
主要出于此项目对中文命名的推广意义, 打算将这个系列作为个人在代码中进行中文命名实践的短期目标
8月之后在V2EX上交流甚多, 也催生了用Python3+tkinter开发简单图形界面程序这样的合作项目, 很希望看到类似项目的开展.
另有一个中期的目标来自于首次发现在例程中使用日语命名的编程书籍, 之后做了日语命名的调研: 它山之石-日本推广编程中使用日语命名的渊源. 发现将编程与传统学科结合的现实紧迫性, 并初步尝试将传统学科的内容程序/数据化. 这不仅与中文命名紧密相关, 也是潜在的中文语法编程语言的土壤(见前文末段). 个人非常期待.