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

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 条回复
murmur
2018-11-12 10:05:09 +08:00
@xuanwu 大概是让大公司先上?
hoythan
2018-11-12 10:15:17 +08:00
建议以后提供 印度文、韩文、日文、德文等各种语言,让全世界都学习自己国家语言的编程。
xuanwu
2018-11-12 10:16:11 +08:00
@murmur 关于哪些用户也许更有动力 /需求, 拙文"中文编程兴起的可能途径"有些个人观点: https://zhuanlan.zhihu.com/p/31466218
nekoneko
2018-11-12 10:18:14 +08:00
@em70 不用 one two three four 代替 1234 的都是扯淡
xuanwu
2018-11-12 10:27:02 +08:00
@hoythan 法语日语都有发展了十数年的商业母语语言. 德语没有深究过: https://zhuanlan.zhihu.com/p/30975550

@nekoneko 见 #10

但是, 这篇合辑的主题并不是中文语法的编程语言, 而是在现有英文编程语言中使用中文命名. 如有意讨论前者, 请移步前帖: https://www.v2ex.com/t/506501
sagaxu
2018-11-12 10:30:58 +08:00
能不能把传统中医理论跟编程结合起来,搞个中医编程,人体是个复杂的大系统,软件也是个系统,像中医辩证施治那样做架构。
tiaod
2018-11-12 11:16:08 +08:00
实际上可能要担心几个问题:1. 中文变量是否会有一些诡异的 BUG,例如不支持中文的系统能不能打开中文变量的网页。2. 中文变量的语法高亮
xuanwu
2018-11-12 11:35:35 +08:00
@tiaod
1) 只要是支持 Unicode 变量的语言 /框架, 至今还没有碰到过此类 bug. 像"中文代码示例之 Angular 入门教程尝试"碰到的那几个问题应该算框架对 Unicode 命名支持问题.
2) 上面所有项目都尽量使用了中文命名, 至今没有发现 IDE 语法高亮对中文命名有区别对待
baicheng10
2018-11-12 11:58:17 +08:00
个人觉得,从编程本身来讲,中文编程并没有太大意义,但从推广来讲,确实可以让小部分人了解和开始编程,让阳光照到一些平时没有照到的角落。槽点无非就是中文编程做到后面来很可能就是一个赚钱的噱头而已。
xuanwu
2018-11-12 12:06:33 +08:00
@sagaxu 个人对中医不了解.

@baicheng10 中文命名不仅对普及编程技术有利, 也可以直接应用在商业项目中. 长远来说, 也会催生中文语法编程语言(毕竟看英文语法+中文命名太久之后, 总有人会开发更接近中文语法的语言 /环境. 现在技术上并无问题, 只是土壤不够).
这帖收集了一些 v2 上的相关实践: t/477109 相信更多的项目只是没有声张
chanin
2018-11-12 12:14:42 +08:00
下一步在来一个
上海方言,东北方言,河南方言,编程。
然后让你们村的那些没文化的人都会编程,
再发展个广场舞中文编程语言

中国人就不能干点正事吗?天天 copy 别人的东西换成自己的壳。
ohoh
2018-11-12 12:16:15 +08:00
其他人别尝试说服或者反对他了,他能靠这个养家糊口也不错了,如果只是兴趣爱好或者作为事业甚至使命,就随他而去吧!都这样了不是我等三言两语能阻止的,何况他做到如此程度了,毅力恒心精力也算是相当了得了,世界因不同而多彩!
-- 吐蕃国师鸠摩智
wangxiaoaer
2018-11-12 12:21:32 +08:00
看你翻译的那些代码,我特么想死。

几个英文关键字都记不住的伪程序员没有理由相信他会有好的编码能力、架构能力、业务理解能力、自学能力,然后在借助所谓的中文编程,更是不思进取,所以最终还是垃圾。

换句话说楼主你在做的事情是给垃圾提供垃圾桶而已。
Hsinyao
2018-11-12 12:37:35 +08:00
你咋还在首页,我真 block 了
xuanwu
2018-11-12 13:00:05 +08:00
@chanin 见 #25 此贴主题并非中文语法编程语言

@wangxiaoaer 与 @em70 的 #12 类似, 请见#13 的回复. 另外, 实际上, 普及中文命名的目标之一就是在短期内实现: 让编程所需的英文只是关键字而已 (理想中所有 API 都是中文). 举个例子, JDK 接口中, 有 1579 类;5093 方法;2022 参数, 粗统计 2752 个单词(包括词形变化), 仅 util 包就有 902 个词. 这才是英文门槛所在吧.
详见专栏 "使用 JDT 核心库解析 JDK 源码后初步分析 API 命名": https://zhuanlan.zhihu.com/p/43111638
msg7086
2018-11-12 18:46:35 +08:00
说中文编程垃圾的大神可能小学 5 年级就能雅思托福拿高分,六级随便过 500 了吧。
反正我小学和初中学编程的时候,有中文的环境舒服很多,英文水平太菜没药救了。
xuanwu
2018-11-13 01:47:32 +08:00
@msg7086 在中文环境中, 英语水平非常难接近母语水平. 十几年前也许因为编程语言对 Unicode 支持不佳的原因难以开展中文命名实践, 现在的少儿编程教育如果还让英文成为编程的门槛之一就确实很遗憾了.
如最后一段所说, 正打算尝试将编程和传统学科结合起来, 如日本小学编程教育指南("它山之石-日本推广编程中使用日语命名的渊源")一例

但想把知识库("初步尝试将传统学科的内容程序 /数据化")做成尽量独立和易于移植的库, 以便各种衍生使用.
cpdyj0
2018-11-13 22:18:58 +08:00
感觉一些业务相关的,如果不考虑国际化,用中文>汉语拼音>瞎写英文,起码都能看懂是啥,瞎写英文就扯淡了。

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

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

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

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

© 2021 V2EX