注: 本文仅对个人亲自参与的尝试作一小结, 专栏中其他作者的尝试还望各自总结. 文中所有例子都尽量使用了中文命名
一些对中文命名的早期实践:
- 2015年对JDK中接口的中文化尝试
- 2016年的Spring Boot 1.3.3演示尝试了前后端中文命名
- 2017年开始Java实现的汇编语言编译器
- 将之前的插件项目中的代码中文化: 火狐插件实现浏览历史按主题显示(树)
在2017年发现多数流行编程语言已经支持Unicode/中文命名, 并开始小结中文命名的风格和特点. 2017年7月编写了中文代码示例教程之Java编程一天入门, 体验了选取例程题材的趣味与难度. 同月也在Maven Central发布中文API的Java库(后话, 在一年后喜获V2EX的用户反馈"第一次见以汉字命名的 Java 类"). 8月尝试对现有图形库p5js的接口进行中文化, 是在JDK接口中文化之后, 从通用库转向专用库的一步. 必须提到的是, 在2017年初发现13年前就有同仁提出中文命名的可读性优势与IDE支持问题, 而在半年后成立的"中文编程"GitHub讨论组中, 有幸碰到通过IDE插件实现拼音输入法和自动补全功能集成的同好.
在"中文编程"知乎专栏于2017年11月9月开通之前, 对现有框架的入门教程的示例代码尝试中文化, 并与VueJS开发组进行了中文命名相关问题的交流:
- 中文代码示例之Vuejs入门教程(一)
- 中文代码示例之Angular入门教程尝试
- 中文代码示例之Vuejs入门教程(一)问题后续
专栏开通之际编写的对在代码中使用中文命名的质疑与回应是对之前看到的各种反对声音的总结, 至今尚未看到有力的反证, 并且在一路上的探索中发现了越来越多的佐证, 比如11月末发现的Python3选择支持非ASCII码标识符的缘由.
专栏开通的初期, 进行了一系列的相关思考, 对今后的实践方向有不小影响:
- 中文命名实践的阻力和应对
- 中文编程兴起的必然性
- 中文编程兴起的可能途径
对在线编程对中文命名的支持初步调研:
- 在LeetCode中的解答中使用中文命名
- 向LeetCode报告编译信息中Unicode显示问题
- 在线编程网站对中文代码的支持
之后重心转向自研编程语言, 也进行了一些相关项目的中文命名尝试:
- 编写Visual Studio Code插件初尝试
- 中文代码示例之5分钟入门TypeScript, 此文与GitHub讨论组内成员对TypeScript进行中文化有关, 半年后有了5分钟入门CTS-尝鲜中文版TypeScript
- FriceEngine试用与API中文化也是与组内成员项目的交流尝试
- 手机编程环境初尝试-用AIDE开发Android应用也与组内成员有关
- 浅尝The Little Prover一书, 重逢Chez Scheme
- 编程猫IDE体验:对Scratch的改进对少儿编程进行了初步了解
- 尝试了一些短示例演示中文命名, 如中文代码示例之冒泡算法, 后感, 中文代码示例[译]Scala中创建隐式函数, 并在项目/教程中使用母语命名的"问题"中进行了一些反思.
在2个月后的2018年4月, 开始对Python官方入门文档的示例代码进行中文命名:
- 搭建Python官方文档翻译环境-汉化示例代码
- 中文代码示例视频演示Python入门教程第三章 简介Python
- 中文代码示例视频演示Python入门教程第四章 控制流
- 中文代码示例视频演示Python入门第五章 数据结构
原本是打算至少完成入门部分, 但过程中逐渐发现原教程示例的局限性, 如代码考古-Python3官方教程字典例程, 认为花精力在自己编写教程上也许更值得. 就有了"西游记"主题Python入门示例尝试-数据结构 5.1-5.1.2. 也尝试对国人原创教程中的示例进行中文化: 解谜计算机科学第一章示例汉化尝试
接下来是一段比较嘈杂的时期, 为Chrome和火狐浏览器编写扩展应该是为在插件中实现计算/编程工具做的技术复习. 此时发现了一系列针对中文编程/命名的软文:
- 最近一波对中文编程(包括中文命名)的攻势
- 万马齐喑究可哀-中文编程的又一波"讨论"
- 后来的又见套路:如果计算机是用中文编程,你能成为计算机编程专家吗?.
不禁针对性地写了在代码中进行中文命名(类/变量/方法等)的优势. 至此, 深切感觉到进一步积极推广中文命名的必要性.
继续进行一些以中文命名作示例的小教程的编写:
- 对DLL库中的接口进行中文命名
- 中文代码示例之Python-如何遍历字典
- 在Office的VBA代码里中文命名
- 中文代码示例之Spring Boot 2.0.3问好
- Head First OO分析设计一书略读与例子中文化
至此, GitHub讨论组已创建一年, 深感核心项目的必要性. 下面围绕编程术语命名进行了一些技术摸索:
- 中文代码之Spring Boot实现简单REST服务
- 中文代码之Spring Boot添加基本日志
- 中文代码之Spring Boot集成H2内存数据库
- 中文代码之Spring Boot对H2数据库简单查询
- 使用JDT核心库解析JDK源码后初步分析API命名
8月末, 源于组内讨论, 开始了批量代码汉化工具的尝试, 并开发了必需的英汉词典相关工具, 从浏览器插件, 在线服务原型, 到今天的vscode插件:
- 浏览器插件实现GitHub代码翻译原型演示
- Java实现英汉词典API初版发布在Maven
- 调研: 使用现有在线翻译服务进行代码翻译的体验
- 代码翻译尝试-使用Roaster解析和生成Java源码
- Java源码英翻中库以及服务原型
- Java源码英翻中网页演示
- Java源码英翻中进展-内测上线
- 在浏览器插件中读取JSON资源文件
- 浏览器插件-离线英汉词典
- Chrome插件实现GitHub代码翻译v0.0.3
- Chrome插件实现GitHub代码离线翻译v0.0.4
- 浏览器插件-离线英汉词典 0.0.7
- 在线代码离线翻译Chrome插件"一马"v0.0.8
- 在线代码离线翻译Chrome插件"一马"v0.0.14
- Visual Studio Code插件-英汉词典初版发布
- VS Code英汉词典插件v0.0.4-驼峰下划线命名
主要出于此项目对中文命名的推广意义, 打算将这个系列作为个人在代码中进行中文命名实践的短期目标
8月之后在V2EX上交流甚多, 也催生了用Python3+tkinter开发简单图形界面程序这样的合作项目, 很希望看到类似项目的开展.
另有一个中期的目标来自于首次发现在例程中使用日语命名的编程书籍, 之后做了日语命名的调研:
它山之石-日本推广编程中使用日语命名的渊源. 发现将编程与传统学科结合的现实紧迫性, 并初步尝试将传统学科的内容程序/数据化. 这不仅与中文命名紧密相关, 也是潜在的中文语法编程语言的土壤(见前文末段). 个人非常期待.