"中文编程"知乎专栏全年主题合辑-代码中文命名相关实践

2018-11-11 18:24:24 +08:00
 xuanwu

https://zhuanlan.zhihu.com/p/49295556 为尽量避免无视链接, 贴出原文如下:

注: 本文仅对个人亲自参与的尝试作一小结, 专栏中其他作者的尝试还望各自总结. 文中所有例子都尽量使用了中文命名

一些对中文命名的早期实践:

在 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 开发简单图形界面程序这样的合作项目, 很希望看到类似项目的开展.

另有一个中期的目标来自于首次发现在例程中使用日语命名的编程书籍, 之后做了日语命名的调研: 它山之石-日本推广编程中使用日语命名的渊源. 发现将编程与传统学科结合的现实紧迫性, 并初步尝试将传统学科的内容程序 /数据化. 这不仅与中文命名紧密相关, 也是潜在的中文语法编程语言的土壤(见前文末段). 个人非常期待.

3666 次点击
所在节点    分享创造
38 条回复
mxtob
2018-11-11 18:57:19 +08:00
想必楼主的受众应该是一群英文不咋滴的人。要是有一天找的下家公司如果项目是中文写的的话,我觉得这是一种迫害。但是如果是个人兴趣的话,我没啥意见,不支持也不反对。
CruelMoon
2018-11-11 19:23:18 +08:00
很有意义的工作。相信中文编程可以让不少人的工作更加流畅。
init6reboot
2018-11-11 19:47:16 +08:00
看了日语那个,用来培养入门思维很不错
mdluo
2018-11-11 19:55:45 +08:00
中文编程就像是大学教师用方言上课,好让外面的大妈大爷都能听得懂
xuanwu
2018-11-11 23:48:08 +08:00
@mxtob 中文命名对可读性的提升应该在业务逻辑丰富的项目部分中都有体现, https://www.v2ex.com/t/477109

@init6reboot 请问你指的是末段的哪篇? 那本 JS 入门书的一个重点是译者对日语命名普及的预计"これからは、日本国内をターゲットにした開発では徐々に日本語識別子が使われることになるのでしょう"--(机翻)"对面向日本国内的软件开发, 将会逐渐普及使用日语命名. 阅读使用日语命名的编程书籍会比英文原版更容易理解."
init6reboot
2018-11-12 00:29:09 +08:00
@xuanwu 它山之石
xuanwu
2018-11-12 01:51:27 +08:00
@init6reboot 同意.
少儿编程和传统学科的结合感觉是非常必要的, 这也依赖于中文编程(至少是中文命名), 因为毕竟传统学科的九年教育肯定还是用中文.
em70
2018-11-12 02:01:09 +08:00
不用汉字一二三代替阿拉伯数字的中文编程都是瞎扯淡,外来的数字就接受,外来的字母单词就受不了,这双标玩得好
xuanwu
2018-11-12 02:58:32 +08:00
xuanwu
2018-11-12 02:59:09 +08:00
@em70
"对中文语法的编程语言的质疑与回应"的"中文比数学表达式繁琐"一节有针对回应:
https://zhuanlan.zhihu.com/p/31389042
KasuganoSoras
2018-11-12 03:42:33 +08:00
又一个易语言?
em70
2018-11-12 08:48:53 +08:00
@xuanwu 既然知道中文在编程中比数字繁琐,写代码难道中文就不繁琐了?就因为你懂点数学,不懂英语? 30 几个单词都记不住还编个毛线程
murmur
2018-11-12 09:01:04 +08:00
中文在解决行业变量、数据库、函数命名有英文不可比拟的优势
中文关键字就不必了
因为只有中国在全世界做到了书同文 但是中文也没做到话同语 拼音、拼音缩写都会遇到发音不准、方言等问题
见过中文的数据库设计 第一眼看着不可思议 第二眼看着真清楚
顺便
多少人认为软件开发只有通用软件开发 你六级考满分你到行业软件命名时一样趴窝
编程绝大部分在思考 你又不是在复制粘贴画页面 切一下输入法能解决几十秒命名时间和后人几分钟猜你命名的时间
imdong
2018-11-12 09:08:11 +08:00
虽然我英文不好,甚至说我几乎不会英语,
但是,我也绝对不会用中文编程的。
虽然,刚开始我还入过易语言的坑..
xuanwu
2018-11-12 09:12:23 +08:00
@em70 请见#13
在可读性上母语终归有优势 行业软件尤其
sunzhenyucn
2018-11-12 09:15:12 +08:00
我建议少花点时间呼吁,多花点时间做些有意义有说服力的事情。
proofreading
2018-11-12 09:18:00 +08:00
中文代码示例之 Vuejs 入门教程(一)

这篇文章例子好!
xuanwu
2018-11-12 09:20:43 +08:00
@proofreading 多谢。 不知对 typescript python 的那几篇感觉如何?
suyuyu
2018-11-12 09:45:58 +08:00
@卜卜口
xuanwu
2018-11-12 10:00:52 +08:00
@suyuyu 之前已与 itorr 有过接触: https://github.com/itorr/templet/issues/1

@sunzhenyucn 烦请指点哪些事情更有意义和说服力?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/506755

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX