V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xuanwu
V2EX  ›  分享创造

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

  •  
  •   xuanwu · 2018-11-11 18:24:24 +08:00 · 3717 次点击
    这是一个创建于 2208 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    @nekoneko 见 #10

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

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

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

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

    换句话说楼主你在做的事情是给垃圾提供垃圾桶而已。
    Hsinyao
        34
    Hsinyao  
       2018-11-12 12:37:35 +08:00 via iPhone
    你咋还在首页,我真 block 了
    xuanwu
        35
    xuanwu  
    OP
       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
        36
    msg7086  
       2018-11-12 18:46:35 +08:00   ❤️ 1
    说中文编程垃圾的大神可能小学 5 年级就能雅思托福拿高分,六级随便过 500 了吧。
    反正我小学和初中学编程的时候,有中文的环境舒服很多,英文水平太菜没药救了。
    xuanwu
        37
    xuanwu  
    OP
       2018-11-13 01:47:32 +08:00
    @msg7086 在中文环境中, 英语水平非常难接近母语水平. 十几年前也许因为编程语言对 Unicode 支持不佳的原因难以开展中文命名实践, 现在的少儿编程教育如果还让英文成为编程的门槛之一就确实很遗憾了.
    如最后一段所说, 正打算尝试将编程和传统学科结合起来, 如日本小学编程教育指南("它山之石-日本推广编程中使用日语命名的渊源")一例

    但想把知识库("初步尝试将传统学科的内容程序 /数据化")做成尽量独立和易于移植的库, 以便各种衍生使用.
    cpdyj0
        38
    cpdyj0  
       2018-11-13 22:18:58 +08:00   ❤️ 1
    感觉一些业务相关的,如果不考虑国际化,用中文>汉语拼音>瞎写英文,起码都能看懂是啥,瞎写英文就扯淡了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5664 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:35 · PVG 09:35 · LAX 17:35 · JFK 20:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.