V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuanwu
V2EX  ›  程序员

在代码中推广中文命名对中国开源软件的意义

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

    对在代码中使用中文命名的质疑与回应中有问意义何在的, 正好看到为何国内没有好的开源社区和氛围一贴, 正好应景.

    先举个亲身实例. 之前在 v2 碰到一个小程序开发请求帖(结贴), 之后催生了五笔编码编辑器这个微型开源项目. 项目开始时, @v2register 并无编程经验, 在原型搭建时, 我提到会使用中文命名, 之后的维护希望由他多出力, 感觉那时他的动力并不大. 但最后实现基本功能后, 他提交了之后的一系列改进 PR 及相关测试, 基本上我除了合并和审核之外没有投入其他精力.

    可见中文命名对于鼓励非专业程序员参与开源项目的作用. 并不是说英文命名肯定会阻止参与, 但肯定会让很大一部分非专业程序员望而却步. 而且开源项目很大一部分工作量就在于后期维护, 界面改进, 类似功能的堆积, 以及相关的测试. 这部分本可以由原作者之外的参与者(用户)来实现, 而原作者就可以专心投入到整体的优化改进上.

    至于中文命名对用户使用 API 的优势就更不用说了.

    对于还处于观望状态的能人们, 只有一句话: 现在开发的任何领域的框架 /工具 /语言, 如果使用了中文命名并开源, 会有更大的多的机会成为该领域的领头开源项目.

    期待看到此类项目井喷的一天.

    193 条回复    2018-12-22 07:58:22 +08:00
    1  2  
    sagaxu
        1
    sagaxu  
       2018-12-18 01:37:09 +08:00 via Android   ❤️ 19
    九年义务教育已经普及很多年了,作为一个合格的初中毕业生,英文变量名应该不会成为障碍。不是只有程序员看得懂英语。
    bbsfoo
        2
    bbsfoo  
       2018-12-18 01:44:30 +08:00   ❤️ 1
    @sagaxu 作为一个写“管理信息系统”的低级码农,只能使用拼音变量名。
    jimchen9999
        3
    jimchen9999  
       2018-12-18 01:46:48 +08:00   ❤️ 35
    支持 必须用华为电脑写中文编程 中必赢
    sagaxu
        4
    sagaxu  
       2018-12-18 01:55:06 +08:00 via Android   ❤️ 1
    @bbsfoo 拼音并不低级,专业名词都用拼音或者缩写,然后注释里写上对应的完整术语,也是比较好的代码风格。
    xuanwu
        5
    xuanwu  
    OP
       2018-12-18 02:02:14 +08:00
    @sagaxu 拼音+注释在可读性上, 应该不会比直接用中文命名好, 而且维护量大的多. 拼音本身的歧义多, 注释方面, 详见文首链接的"附上中文注释就够了"一节.

    > 作为一个合格的初中毕业生,英文变量名应该不会成为障碍。不是只有程序员看得懂英语。

    无论英语程度如何, 中文作为母语的优势在代码可读性上总有体现. 见文首链接的"没有好处"一节, 更不用说中文命名在专业术语方面的优势.
    sagaxu
        6
    sagaxu  
       2018-12-18 02:17:41 +08:00 via Android
    @xuanwu 母语有优势不假,但也有劣势,否则不至于几乎没人用。假如真的能提高代码的可读性,降低开发成本,利益会驱使公司们尝试,推了二十几年都没动,可见无利可图,甚至弊大于利。
    xuanwu
        7
    xuanwu  
    OP
       2018-12-18 02:25:32 +08:00   ❤️ 1
    @sagaxu 请分享一下哪些组织 /个人推动了?
    我倒是看到各种水文(十)数年如一日地对中文编程语言以及中文命名的抹黑, 最近的一篇影响较广的被我起底在"最近一波对中文编程(包括中文命名)的攻势"一文, 可以带引号搜索此文. 还有更没有技术含量的一篇, 我也发文反驳过:"又见套路:如果计算机是用中文编程,你能成为计算机编程专家吗?"
    msg7086
        8
    msg7086  
       2018-12-18 02:34:29 +08:00   ❤️ 70
    先吐个槽。作为推广中文的人,为什么帖子里用的都是西文标点符号呢,为什么不用规范的中文标点符号呢。

    英文命名让很大一部分非专业程序员望而却步。
    中文命名可以让全球所有不懂中文的人,不仅望而却步,而且连望都望不了。
    也就是说,为了让全球 20%懂中文人口中那么一小撮不专业又不太懂英语的程序员看懂程序,而把全球 80%的不懂中文的人拒之门外,这是什么精神。

    先不说为什么我的项目要特地去吸引那些非专业程序员。就不能吸引点专业的来嘛……

    就说“如果使用了中文命名并开源, 会有更大的多的机会成为该领域的领头开源项目”,可为啥现在领头开源项目都是英语而不是母语的? Linux 不是用芬兰语和瑞典语写的,Nginx 也不是用俄语写的,Python 也不是用荷兰语写的。好奇怪哦……这句话只是你的中国梦吗……
    sagaxu
        9
    sagaxu  
       2018-12-18 02:40:34 +08:00 via Android
    @xuanwu 易语言不是推了十几年了吗?你不也布道过一段时间了?正如你所见,黑的人多支持的少,你有没有想过一个问题,这么有好处的事情,为何大多数人身体和嘴巴都反对呢?

    我觉得你可以动手试试,去几家小公司负责技术,然后要求用中文。同时 fork 汉化几个开源项目,看看是否对项目发展利大于弊。

    在实践中检验,比纸上谈兵更有说服力。
    xuanwu
        10
    xuanwu  
    OP
       2018-12-18 02:44:16 +08:00   ❤️ 1
    @msg7086
    > 也就是说,为了让全球 20%懂中文人口中那么一小撮不专业又不太懂英语的程序员看懂程序,而把全球 80%的不懂中文的人拒之门外,这是什么精神。

    英语的母语使用者: 360 – 400 million 第二语言使用者: 400 million; 作为外语使用者: 600 – 700 million, 总计算 15 亿
    中文的仅仅算母语使用者: 12 亿, 而且还集中在一个国家(额外优势之一), 第二语言和外语使用者还在加速增加.

    > Linux 不是用芬兰语和瑞典语写的,Nginx 也不是用俄语写的,Python 也不是用荷兰语写的

    见文首链接"芬兰人 Linus,使用英语而非自己的母语来编写 Linux 代码"一节. 类似的人口基数问题.
    Yvette
        11
    Yvette  
       2018-12-18 02:56:41 +08:00
    英文作为一门通识教育,以一个优秀的编程人员的智力来推断,这门功课肯定是过关的。得证,如果一个人连英语都成问题,那肯定不是优秀的编程人员。一个不优秀的编程人员开发的开源项目有很大几率是没有可维护性的。

    那些编程能力过硬,但是英语成问题的编程人员,并不是事实意义上的常态,让接受通识教育的大多数人来迁就他们是不合常理的。

    另外,至少承认一点,现在互联网世界的在中国的发展确实是如日中天,但是创新的中心,以及各种基础设施的发明和维护 /改进,这些中心还是在英文世界,所以反其道而行之将会是无用功。
    xuanwu
        12
    xuanwu  
    OP
       2018-12-18 03:03:07 +08:00
    @sagaxu
    > 易语言不是推了十几年了吗?你不也布道过一段时间了?

    呵呵, 把我和易语言相提并论真是高抬我了. 易语言作为中文编程的一个标杆, 很可惜在最佳推广期被各种负面材料所困, 也导致它被边缘化. 现在各个领域已经基本被英文编程语言工具垄断的情况下, 好在早已经有其他各国的开发者推动了对 Unicode 命名的支持. 但大多数新手却仍然对中文命名视作禁区, 我能做的首先就是让更多人知道中文命名的可行性和优势. 以我一个草根在一年半之前才开始推广的效果来看, 我已经很满意了.

    > 为何大多数人身体和嘴巴都反对呢

    从我专栏的关注来看, 看到的是越来越多业界和大学学生对这个问题的兴趣. 从我帖子的支持程度来看, 也是有越来越多人默默支持.

    > 我觉得你可以动手试试,去几家小公司负责技术,然后要求用中文

    不用我动手, 已经有公司在实践了. 早的有那个 2012 年的 C#帖, 最近也在站里看到类似帖子. 这样的实践肯定会越来越多.

    > 同时 fork 汉化几个开源项目,看看是否对项目发展利大于弊。

    之前尝试了 vuejs 的源码汉化开头, 就反馈来看, 也有不少支持.

    > 在实践中检验,比纸上谈兵更有说服力。

    我们讨论组一直在实践, 包括在开源项目中使用中文命名, 开发相关 IDE 插件, 实验性的中文语法编程语言等等.
    e9e499d78f
        13
    e9e499d78f  
       2018-12-18 03:09:43 +08:00 via iPhone
    弄 IDE 插件就叫搞中文编程啊?
    xuanwu
        14
    xuanwu  
    OP
       2018-12-18 03:20:11 +08:00
    @Yvette
    首先, 开发者英文过关当然对获取参考资料和与国外社区交流有益, 但并不意味着开源项目中的代码必须用英文命名.

    在代码中使用中文命名和在日常交流中使用中文没有本质区别. 同是母语为中文的开发者发帖交流也是用中文, 为何不用英文呢? 所谓母语的优势, 就在于, 即使第二语言"过了关", 在理解运用上, 也始终是母语的交流成本更低. 同理, 母语命名可以提升代码可读性, 也减少维护成本.

    使用中文命名可以让更多的精力投入到对代码本身的改进, 省去命名不当带来的维护代价和合作障碍. 如顶楼实例, 使用中文命名也可以让更多原本的纯用户参与到开发中来.

    创新的中心在英文世界? 即便现在是, 中文命名也可以加速开源软件在中国的壮大, 从而加速扭转这一现状.
    crisfun
        15
    crisfun  
       2018-12-18 03:22:59 +08:00 via iPhone   ❤️ 1
    如果命名有难度,那么母语肯定强过外语。
    msg7086
        16
    msg7086  
       2018-12-18 03:24:29 +08:00   ❤️ 4
    @xuanwu 中国的中小学英语是强制学习的,也就是说只需再过几年十几年,中国有能力读写英语的人数将越来越接近中文母语使用者。如果再具体一点分析,中国不懂英语的人口大多是文化程度不高,没有上过高等教育甚至是中学的群体,这个群体对编程这样一个专业的工作有多少贡献呢。反过来说,学习过编程,有能力理解程序代码的人,却连英语都不会,这个群体到底又有多大呢。编程也好,其他专业也好,第一手资料都是英语的。不懂英语的人,他的水平能提升到什么程度,能像你说的,把一个开源项目发展到某个领域的领头项目吗?

    软件开发可不是靠人口战术的。一个项目里五百个农民伯伯,另一个项目里十个硕博士,你说前者会赢反正我是不信的。

    而且中文作为母语,学好的人又有多少。我们姑且算是半个语言工作者吧,招募翻译,要求能从日语翻译成中文。他们要接受的第一份考核是中文纠错,把病句错字挑出来改正。实际结果只能算是差强人意,不少人中文水平都满足不了要求,能挑出所有错并能改正的凤毛麟角。你要说英语水平一般的人在英语项目中会写错字病句,我看很多中文水平一般的人在中文项目中也不会好到哪里去。

    另外你为什么会觉得集中在一个国家是一项优势?
    Yvette
        17
    Yvette  
       2018-12-18 03:33:18 +08:00   ❤️ 4
    @xuanwu 当然,如果提前定义一个项目是只有中国人参与的协作,那用中文或者英文甚至方言就无所谓了。

    如果扭转「这一现状」的结果是得到一个更加封闭的互联网,客观上阻止了全球化的协作,让互联网的圈子局限于中文社区,这样做的除了狭隘的民族主义者,恐怕没有其他人会得到好处吧。除非能够弯道超车,在一个新的跑道引领世界的发展,例如 5G,量子计算?这些都太远,没有太大的现实讨论价值。毕竟现在世界语言是英语,就算中国在这方面领先世界,最后还是需要用英文。原因很简单,外国人的基础教育里面没有中文。

    另外,我还是要重复一下,作为通识教育存在与中文社会的英文这门学科,如同数学和语文一样,是为了社会协作的效率而存在的。现在互联网世界的基础建设并不是中国人主要参与建设的,大家维护也都是默认用的英文,这也是为了更好地协作,所有讨论都是建立在在这个事实基础上的。如果要求只用中国人认识的拼音来进行开发,难道不是违背开源的精神吗?
    AntiGameZ
        18
    AntiGameZ  
       2018-12-18 03:38:06 +08:00   ❤️ 3
    自己在行业项目上用中文变量已经很多年了,什么稀奇古怪的专业术语,与其费劲翻译,还不如直接用母语来的直截了当。

    这和英语学的好不好没有什么必然的联系。软件项目开发某些程度上也是一门沟通的艺术,用双方都认可,尽可能减少歧义的方式交流,我不明白有什么坏处。

    有了这么一点基础认知上,中文编程就未必那么可笑了。既然注释可以用中文写,变量为什么不能呢?不过把 keywords 也改成中文是有点过头了,不过仔细想想,其实也没有什么本质性的问题。
    precisi0nux
        19
    precisi0nux  
       2018-12-18 03:52:13 +08:00 via iPhone   ❤️ 5
    我就问你们写个代码反复切换输入法不烦吗?
    xuanwu
        20
    xuanwu  
    OP
       2018-12-18 03:59:13 +08:00   ❤️ 1
    @e9e499d78f 为在代码中使用中文提供辅助的 IDE 插件当然是一个重要部分. 可以参考日本 2017 年的论文"ローマ字入力時の日本語識別子入力補完プラグインの 開発"就专门开发了辅助插件以改进 IDE 对输入日语命名的支持. 它的摘要很有参考意义, 机翻如下:

    "在这项研究中,我们开发了一个插件,可以在输入日语标识符时减轻程序员的负担。近年来软件开发项目的复杂性增加了维护软件的时间成本,并且提高源代码的可读性以降低成本是很重要的。有几个报告说,在日语源代码中编写变量和函数的标识符名称是有用的,这是提高源代码可读性的一种方法。然而,当以日语输入标识符时,存在字符转换麻烦且输入补充无效的问题,并且发生对编程器的输入负担。在这项研究中,我们开发了一个插件,通过使用日语标识符的增量搜索甚至使用罗马字符输入实现输入完成,使用 Migemo 的两种方法使用日语增量搜索工具和使用形态分析的方法尝试解决问题。"

    @msg7086
    楼上已述, 会英语不意味着必须在代码中用英文命名, "会英语因此我要始终在代码中用英文命名"是一个非常大的误区.

    > 中国有能力读写英语的人数将越来越接近中文母语使用者

    中文的母语地位决定了任何第二语言都很难达到中文水平. 中文命名对代码的可读性提高是可以立竿见影的, 为何不在现在开始呢?

    > 有能力理解程序代码的人,却连英语都不会,这个群体到底又有多大呢

    无论有多大, 中文命名可以极大降低这个群体参与开源项目的门槛.

    > 不懂英语的人,他的水平能提升到什么程度

    随着中文命名的推广, 会有越来越多纯中文接口的框架和工具, 以及使用中文命名的编程教程, 英文在编程学习中的作用会随之下降.

    > 软件开发可不是靠人口战术的。一个项目里五百个农民伯伯,另一个项目里十个硕博士,你说前者会赢反正我是不信的。

    与商业项目类似, 开源项目需要各个方面人才. 比如文档 /测试 /追加相似功能等等对开发经验要求相对低于一开始的架构搭建. 中文命名可以极大挖掘国内人力资源优势, 与顶楼实例类似, 鼓励更多原本的纯用户加入项目维护的队伍中.

    > 另外你为什么会觉得集中在一个国家是一项优势?

    面对面的交流效率永远高于其他形式.
    defel
        21
    defel  
       2018-12-18 04:07:18 +08:00 via iPhone
    好,支持楼主尝试。反正也没什么坏处,想做就做呗,何必得到大家的认可。话说如果我有花不完的钱,我也搞点副业玩玩,现实是我还是用英语编程,毕竟还是要有饭吃才行。
    ericgui
        22
    ericgui  
       2018-12-18 04:19:46 +08:00
    好好学英语,别扯这些没用的
    binux
        23
    binux  
       2018-12-18 04:34:17 +08:00 via Android
    LZ 不会是哪个 NGO 雇来搞我们的吧。
    arYUWang
        24
    arYUWang  
       2018-12-18 04:35:48 +08:00
    如果是公司内部的话,CTO 同意,同事不反对就随便你搞。

    开源软件的话还用中文?只把潜在开发者范围框到会中文的人,这还叫开源吗?没点国际精神了么?

    至于要说为什么国际上就是用英文,那要怪成吉思汗或者秦始皇没有统一全世界了。
    msg7086
        25
    msg7086  
       2018-12-18 04:46:02 +08:00   ❤️ 5
    @xuanwu
    > 无论有多大, 中文命名可以极大降低这个群体参与开源项目的门槛.

    还是那句话,你这项改变在成本上并不是免费的。你是牺牲了说英语的人口(包括那些有学力财力以至于能把英语学好,很可能是进入过高等教育机构学习的人),而换取了这个“无论有多大”的人口(包括那些没有学力财力,连高中或者大学课程都没有办法学习完的人)。为什么我感觉你是觉得这个“无论有多大”的群体加入是完全没有代价的?

    > 随着中文命名的推广, 会有越来越多纯中文接口的框架和工具, 以及使用中文命名的编程教程, 英文在编程学习中的作用会随之下降.

    第一手资料、文档、文献都来自于英语,中文的资料是如何凭空出现的?是不是还需要精通英语和中文的资深开发者来翻译和维护?

    > 比如文档 /测试 /追加相似功能等等对开发经验要求相对低于一开始的架构搭建

    连高中和大学课程都无法完成的人是如何做到编写文档、做测试、追加相似功能的?

    > 中文命名可以极大挖掘国内人力资源优势

    编程的门槛我觉得从来不是语言水平,而是编程水平。我一直觉得要在中国人中普及编程能力才是中文编程应该做的事情。

    > 面对面的交流效率永远高于其他形式

    我从上海飞到韩国或日本比飞到广州还近。这么大一个国家,来自不同各地的人怎么面对面交流?何况现在都是互联网时代了,跨国的面对面会议我司已经用了好多年了,为什么还要局限于物理上的面对面交流。真要面对面有优势,那应该用广东话或者四川话编程,人员地域集中,更容易面对面交流。

    ==========

    我们以前推广易语言,主要目的就是我上面说的,在中国人中普及编程能力。之后等他们有条件进入高校深造的时候,这份编程技术可以帮助他们快速发展。易语言之前的目标人群,就是中小学生。他们没有很好的英文基础,所以在学习(注意是学习,不是开发)过程中,会有语言障碍。易语言通过把学英语和学编程解构开,让中小学生可以更容易地学习编程。中文编程从来就不是一种排除非中文人口参与的手段。
    AX5N
        26
    AX5N  
       2018-12-18 05:57:16 +08:00
    何故反对用中文 programme,因为这就跟喋るの時夹杂着 English 一样恶心。
    TonyLiu2ca
        27
    TonyLiu2ca  
       2018-12-18 07:10:09 +08:00
    中文的可以有
    sutra
        28
    sutra  
       2018-12-18 07:17:44 +08:00
    然后就只有看得懂中文的人才能参与维护了。
    xuanwu
        29
    xuanwu  
    OP
       2018-12-18 07:41:28 +08:00
    @defel 可以看看站里有多少抱怨命名难的帖子, 想象一下使用中文命名可以省去的麻烦(即便是个人项目). 也许会给你更多动力

    @binux 我的背景在 "中文编程知乎专栏一岁了-我为什么投身于普及用中文编程"一帖. 一些出来发表反对意见的背景我也很有兴趣了解

    @eugenewangfw
    @sutra 参考"不利于非中文编程者贡献"一节. 有详述. 摘要如下:

    "当然希望看到更多的国外开发者参与国人初创的项目. 不过,除去预测得到是否会有国外开发者参与的情况, 剩下的自己发起的项目, 首要考虑的是对自己的开发和维护最有利的编程方式. 因为在可以预见的将来, 我自己会是最主要的贡献者. 如果我自己的开发和维护成本随着项目变大而变得不可持续, 那么在项目成型和能够吸引其他开发者参与之前可能就夭折了. 个人的感觉是用中文命名是我更熟悉和容易的方式.

    osc 上一些即使很热火的开源框架, 比如 JFinal, 大多只有极少的其他开发者贡献. 个人认为一个很重要的原因, 就是代码阅读的难度, 而英文命名是一个额外的障碍. 也许对于开发者本人来说, 随着项目的开展, 一些开始时有些别扭的英文命名自己也习惯了, 但是对于刚拿到整个代码的新开发者, 任何不妥当的英文命名都会导致迷惑和时间的浪费. 为了吸引理论上的国外开发者参与, 而不优先选择对身边的中文开发者(包括自己)阅读代码有利的编程方式, 个人认为这种思路是很值得商榷和分情况探讨的."

    @msg7086
    > 你是牺牲了说英语的人口(包括那些有学力财力以至于能把英语学好,很可能是进入过高等教育机构学习的人)

    前面说过了, 无论英语有多好, 只要母语是中文, 用于代码命名就有可读性优势

    > 是不是还需要精通英语和中文的资深开发者来翻译和维护?

    起初当然要. 就像古代国外将中国文献翻译成外文一样. 随着中文命名的推广, 国内开源软件也会加速发展. 之后中文化程度会越来越高, 包括框架 API 等等. 逐渐国外的工具 /框架会被类似功能的中文工具替代, 在这过程中需要翻译学习的内容也会越来越少.

    > 连高中和大学课程都无法完成的人是如何做到编写文档、做测试、追加相似功能的?

    小学生会玩游戏, 就会测试.

    > 编程的门槛我觉得从来不是语言水平,而是编程水平

    请参考"没有好处"一节. 摘要:
    "如果认为 API 以及内部方法 /变量的命名无关紧要. 有不少可读性相关的文章对这个误区进行了阐述, 比如 Writing for Readability
    母语命名对代码清晰度和可维护性的提高在'Python3 选择支持非 ASCII 码标识符的缘由'中也有印证."

    > 为什么还要局限于物理上的面对面交流

    可以!=最优. 就像, I guess we can discuss this in English, but why do we do Chinese instead?

    > 中文编程从来就不是一种排除非中文人口参与的手段

    绝大多数国人的母语都是中文. 什么叫"非中文人口"?
    tamlok
        30
    tamlok  
       2018-12-18 07:45:19 +08:00 via Android
    楼主有中文编程时候的录屏吗?很好奇怎么高效地输入中英文。给个录屏大家,估计大家都会判断中文编程是否高效。
    xuanwu
        31
    xuanwu  
    OP
       2018-12-18 07:50:34 +08:00
    @tamlok 关于编程效率问题. 参考"中文输入太慢, 降低开发效率"一节:

    答: 首先, 如果考虑推敲命名的时间, 对母语是中文的程序员, 中文命名应该比能够更恰当更快, 综合各种因素哪种方式写代码更快还待实践证实. IDE 工具的辅助也可能使输入效率提升甚至超过英文输入: "用实例来看中文编程代码输入效率问题". 另外, 由于命名可读性的提升, 可以省去更多注释.

    更不可忽视的是, 鉴于开发过程在整个软件生存周期中只占一小部分, 其他的部分(设计,调试,测试,维护)从良好的可读性获取的利远大于开发效率可能降低的弊. 设计时可以直接由业务描述(中文的)直接映射到构架 /接口的命名(省去了英文翻译的一步), 调试 /测试 /维护可以因为代码可读性的提高而减低理解和学习代码的成本.

    为避免频繁切换中英文: 为了在输入中文的同时不用切换就可以输入特殊符号(){};等等, 搜狗输入法支持”中文时使用英文标点”
    leavic
        32
    leavic  
       2018-12-18 07:53:47 +08:00 via Android
    我来总结一下:扯淡。
    kltt22
        33
    kltt22  
       2018-12-18 07:56:17 +08:00 via Android   ❤️ 1
    编程要从娃娃抓起,楼主请去幼教板块宣讲。这里都是老油子了,油盐不进,白耽误功夫。
    xuanwu
        34
    xuanwu  
    OP
       2018-12-18 08:10:40 +08:00
    @kltt22 中文命名当然在少儿编程教育以及辅助传统学科教育上有优势, 但将中文命名在现有商用和开源项目中使用也极有现实意义. 就像 #18 @AntiGameZ 的实例.
    之前站里也看到各种实践, 只不过还多数是孤岛状态. 这些中文命名的实践者汇聚起来, 逐渐就可以有力量实现一些实用的开源项目.
    falcon05
        35
    falcon05  
       2018-12-18 08:11:53 +08:00 via iPhone
    又不是非要精通英语才能编程,更不是要英语说得跟中文一样好才能编程,只要看看编程语言语法,才十几个关键字。死记硬背都能记下来了,没看到中文编程有什么必要性
    gzf6
        36
    gzf6  
       2018-12-18 08:15:39 +08:00 via iPhone
    可能符合语境的英文加上适当精准的中文注释比较好
    dremy
        37
    dremy  
       2018-12-18 08:18:40 +08:00 via iPhone   ❤️ 1
    iOS12 的捷径,可以说就是一种中文编程,与之相比改版前的英文版 workflow 的上手难度的确是要高不少,因此我觉得没必要鄙视中文编程。

    也许在英语过了四六级乃至雅思托福 GRE 的各位 985 硕博士生看来,不懂英文就该被喷,但整个中国不懂英文的人现阶段还是占绝大部分。如果让语言成为了普及全民编程的壁垒,想必还是得不偿失的。
    xuanwu
        38
    xuanwu  
    OP
       2018-12-18 08:19:35 +08:00
    @falcon05 学编程只要记下关键字和语法就够了吗? 上次还看到帖子说学一门语言就要为它核心库的 API 写几个笔记, 学到现在积累了几十本.

    参考"没有好处"一节. 摘要:
    "如果认为 API 以及内部方法 /变量的命名无关紧要. 有不少可读性相关的文章对这个误区进行了阐述, 比如 Writing for Readability
    母语命名对代码清晰度和可维护性的提高在'Python3 选择支持非 ASCII 码标识符的缘由'中也有印证."
    junmoxiao
        39
    junmoxiao  
       2018-12-18 08:22:36 +08:00 via Android   ❤️ 3
    实在看不下去了,你这是本末倒置,编程的难点从来不在英语上,你改成用中文毫无意义
    Rheinmetal
        40
    Rheinmetal  
       2018-12-18 08:27:04 +08:00
    纵观历史 一个工具或者框架能够流行 有几个重点
    1 目标用户急需
    2 极大提升效率
    3 易用

    现在问题是中文编程这一套 目标用户有多少的数量和质量 能否支撑一个项目 一套框架 甚至一个生态
    用户画像大概是这样
    由于各种原因 没有得到很好的英语教育 但是需要用中文编程

    易用和效率的问题 其实也和 1 有关 用户体验反馈和改进需要投入很多
    Kaiv2
        41
    Kaiv2  
       2018-12-18 08:27:18 +08:00 via Android
    为什我编码的时候,关心的是代码做了什么事,而不是变量使用了什么符号,只要方便阅读就行
    xuanwu
        42
    xuanwu  
    OP
       2018-12-18 08:29:05 +08:00
    @dremy 捷径的确是一种专用的中文编程环境了. 相对于一个通用型的系统编程语言, 像这样的分领域的中文编程环境 /框架感觉是更好的突破口.
    在通用的中文编程语言成熟之前, 在现有的编程语言环境中使用中文命名是实用且对改进代码质量 /降低维护量见效快的方法. 而且, 在实现这种通用的中文编程语言 /环境时在代码中使用中文命名也是非常合理的, 因为毕竟用户 /开发者都会中文. 在知乎专栏的"中文编程兴起的可能途径"一文中也提及了.

    @gzf6 参考"附上中文注释就够了"一节:

    答:关于注释和命名, 在个人之前的工作环境里, 是第一次接触正式的可读性审核. 有个印象是, 审核员会尽量倾向于减少注释量, 而强调代码本身的可读性(其中最重要的因素之一就是命名). 审核里会不时出现”这个方法名已经 self-explaining 了,注释就不用了”之类的评语. 虽然没有当面确认过, 但写注释和维护注释的额外工作量应该也是这种倾向的动因之一.
    falcon05
        43
    falcon05  
       2018-12-18 08:36:27 +08:00 via iPhone
    @xuanwu 那你说为了变量命名?主流语言都已经支持了母语命名变量了,那你这个中文编程不更加没有意义了?
    Mutoo
        44
    Mutoo  
       2018-12-18 08:37:36 +08:00
    “现在开发的任何领域的框架 /工具 /语言, 如果使用了中文命名并开源, 会有更大的多的机会成为该领域的领头开源项目.”

    别说中文了,也没见过哪个非英文的开源项目是某个领域的领头开源项目。
    xuanwu
        45
    xuanwu  
    OP
       2018-12-18 08:38:49 +08:00
    @junmoxiao
    @Kaiv2 见#38

    @Rheinmetal 这帖的中心是中文命名, 也就是当下就可以在市面流行的大多数编程语言环境中使用的(因为它们都支持 Unicode 命名).
    关于用户人数问题, #10 已有具体数据.
    再重复一下, 会英语不意味着必须在代码中用英文命名. 母语命名对代码清晰度和可维护性的提高在'Python3 选择支持非 ASCII 码标识符的缘由'中也有印证.

    @falcon05
    > 那你说为了变量命名?主流语言都已经支持了母语命名变量了,那你这个中文编程不更加没有意义了?

    我的题目就叫"在代码中推广中文命名". 你是不是进错门了?
    zn
        46
    zn  
       2018-12-18 08:39:34 +08:00 via iPhone
    @jimchen9999 中国人就用中文写代码,不用中文写代码不是中国人!
    luoyou1014
        47
    luoyou1014  
       2018-12-18 08:39:49 +08:00   ❤️ 1
    支持楼主。

    最近在看编译方面的书,希望能在一年内实现一门简单的中文编程语言,锻炼下自己。
    yianbin
        48
    yianbin  
       2018-12-18 08:49:13 +08:00
    推荐 lz 去学易语言,中文社区很完善
    huclengyue
        49
    huclengyue  
       2018-12-18 08:49:20 +08:00 via Android   ❤️ 1
    有的时候用中文变量没办法的事,比如游戏开发,人物技能真没办法翻译,比如 新空轻雨
    Ediacaran
        50
    Ediacaran  
       2018-12-18 08:55:04 +08:00
    新的一天从 block 开始,很好。
    xuanwu
        51
    xuanwu  
    OP
       2018-12-18 08:56:05 +08:00
    @luoyou1014 多谢支持. 有兴趣的话可以参加我们讨论组(见个人简介), 组里有几个实验语言的雏形. 当然, 代码都是使用了中文命名(JS, Java, Erlang 等等).

    @huclengyue 没错. 这也适用于急需信息化的其他领域, 比如制造业.

    @zn "个人也不赞成 100%的中文化. 需要和国外交流的项目肯定有. 大胆假设:以中文为母语的所有程序员,从事的项目中,90%是单人项目(*),剩下的 10%中,90%只有同样是中文为母语的程序员参与.这样,只有 1%的项目有用英文写代码的硬性需要.为了这 1%的需要,而在剩下的 99%中使用英文,得不偿失."

    @Mutoo 人口基数问题, 参考 #10

    @yianbin 需要的话会学的, 尤其如果它开源的话. 但这不妨碍在现在无论开源社区还是商业项目都处于垄断地位的英文编程语言中尽量使用中文命名.
    947211232
        52
    947211232  
       2018-12-18 08:58:18 +08:00
    始皇兼六国,合四海八荒,终使度量、字文等大一统,臣死谏楼主,大一统世界达二百国对中华开源软件的意义更大,开创世界之伟业也。
    Mutoo
        53
    Mutoo  
       2018-12-18 09:00:27 +08:00
    人口基数大就是个伪命题,要不然 14 亿人口怎么连世界杯都踢不进。
    tamlok
        54
    tamlok  
       2018-12-18 09:00:36 +08:00 via Android
    @xuanwu 上个视频看看就知道是牛是马啦
    shijingshijing
        55
    shijingshijing  
       2018-12-18 09:01:04 +08:00 via iPhone
    @msg7086 不支持楼主的观点的,有一顶大帽子在等着你们-“乳滑”

    你问我资不资兹楼主,我当然是资兹的,不转不是中国人系列又续写了新的篇章。
    CruelMoon
        56
    CruelMoon  
       2018-12-18 09:06:58 +08:00   ❤️ 2
    我觉得楼主把中文命名和中文编程区分开是个很好的做法,这样可以避免一些无谓的争吵。
    不同的领域有不同的语言,类似楼上说的武侠游戏中的技能名人名,就是有必要用中文命名的地方...
    Flobit
        57
    Flobit  
       2018-12-18 09:08:29 +08:00 via Android
    可以写注释啊,多写注释,利人利己
    annielong
        58
    annielong  
       2018-12-18 09:09:15 +08:00
    想推广就推广呗,看到底会有多少人就用行了,如果可行早就实行了,如果意义重大,早就行政命令实行了,至少教育考试等方法会加上
    SeaRecluse
        59
    SeaRecluse  
       2018-12-18 09:09:27 +08:00
    @msg7086 你说的不完全对,为什么要强制学英语的原因是历史进程。未来发展的方向不会是第二语言媲美第一语言,大概率是第一语言+实时翻译。有个成语叫亦步亦趋,如果可见的未来永远是第二,当然没什么问题,But,在崛起不是科科。只是时间可能会更久之后,未雨绸缪也是好的 XD
    wu67
        60
    wu67  
       2018-12-18 09:10:56 +08:00   ❤️ 1
    你们为什么要关注中文编程, 而不是关注社区套路使用中文.

    讲道理, 编程用那些词并不算难, 更何况还有翻译引擎. 但是社区套路非要限定英文, 什么不用英文就是垃圾、 不与世界接轨、连英语交流都不会吗?诸如此类.

    一堆人明明中文语法都用得一般般, 还强行把别扭的中文表达成更语法别扭的英文, 这群人已经没什么文化自信了吧, 连用自己的母语在社区交流都不敢了吗
    fantaosong
        61
    fantaosong  
       2018-12-18 09:11:15 +08:00
    @xuanwu 什么?朕的大清亡了?
    zjddp
        62
    zjddp  
       2018-12-18 09:14:58 +08:00
    敲黑板,中文命名是否有意义,先看你嘴中的所谓被非中文命名阻碍以至于影响编程的姑且称之为程序员的人能为开源项目贡献多少力量。

    问:楼主这种行为是否属于圣母白左?
    SeaRecluse
        63
    SeaRecluse  
       2018-12-18 09:15:04 +08:00
    人是逐利的,更可况是打工仔的程序员。他们大多数也不会考虑更久远的未来,LZ 被喷也是难怪了。只不过时候未到,现在大洋对面三拳两脚一下唉,中国就疲软了,这时候去游说,初心虽好,但是时候未到啊。
    yujiff
        64
    yujiff  
       2018-12-18 09:16:13 +08:00
    在代码中推广中文命名?绝对没有意义!
    waruqi
        65
    waruqi  
       2018-12-18 09:17:14 +08:00 via Android   ❤️ 4
    天天在 v2 扯这些,既浪费时间也没啥意义,有这点时间,先安心做出个成熟的解决方案,大家试用下来确实觉得靠谱,自然就能推动,用户量自然会逐步积累起来。

    啥也没有,或者就做了个半成品,整天把时间浪费在这跟人扯皮,好无聊。
    SleipniR
        66
    SleipniR  
       2018-12-18 09:18:26 +08:00
    同意 #39 的观点,英语从来都不是编程的主要障碍,而恰恰是能够连接中国和世界开源的桥梁,科学和技术在世界范围内的共享,很大程度上是因为有这样的通用语言。
    楼主本身高喊“开源”,又妄图用中文来屏蔽外国友人,本身就是给开源制造障碍,国人从开源世界不断吸收营养,其实现在也应该为开源世界做一些贡献了。
    不得不承认,目前世界通用的语言仍是英语,当然右翼的朋友可以用联合国五大语言等噱头自慰,等到中国足够强大到中文全世界普及使用时,中文命名的开源项目会是一件自发的事情。
    roychan
        67
    roychan  
       2018-12-18 09:19:13 +08:00
    选择中文编程是你的自由,你也可以自由地推广。不过我觉得最好的广告,是志同道合的人用中文编程做出一个很好的开源项目,而不是只靠说。
    guorui112
        68
    guorui112  
       2018-12-18 09:20:21 +08:00
    那个,为什么不用拼音呢,/doge/
    realkenshinji
        69
    realkenshinji  
       2018-12-18 09:20:22 +08:00 via iPhone
    为什么日本程序员不用平假名 /片假名命名变量名?
    SeaRecluse
        70
    SeaRecluse  
       2018-12-18 09:20:41 +08:00   ❤️ 1
    @sagaxu 如果你接触过那种古早几万行的开源库的源码,你就明白英文命名简直是稀烂,你说文档?不存在的好吗,有头文件说明已经谢天谢地了哈哈
    gclove
        71
    gclove  
       2018-12-18 09:20:50 +08:00   ❤️ 2
    为什么不能用中文变量 ? 拼音有时候并不直观. 如果不想用英文的话
    shiji
        72
    shiji  
       2018-12-18 09:23:57 +08:00   ❤️ 4
    如何使用中文关键字? -> 查找并替换关键字
    如何解决由于频繁切换输入法坏掉的手指? 如图所示:


    SeaRecluse
        73
    SeaRecluse  
       2018-12-18 09:25:30 +08:00   ❤️ 1
    @SleipniR 文档是,绝大多数项目也算是,但是英语在命名方面真的不咋地,尤其是一些非常大的工程上,不论是缩写驼峰下划线,在尽力避免混淆的时候还是不可避免地出现一些问题。同意你的最后一段,时候未到罢了。但是许多冷嘲热讽的个人不是很能理解,他们的工作就只是劈里啪啦敲键盘吗 XD
    sagaxu
        74
    sagaxu  
       2018-12-18 09:27:47 +08:00 via Android
    让专业的人做专业的事,这是参与社会分工的必然结果。

    公司招聘设置的各种门槛,就是为了把不专业的人排除在外。成功的开源软件,背后都是公司或者机构,vuejs 的成功,得益于国际背景,早期获得了外国公司的百万赞助,创始人才能投入更多精力。

    国外成功的开源,其背后都是公司,像 linux 绝大多数代码是几个公司贡献的。国内的开源也一样,osc 上投票前 20 的,背后都是一个个公司在买单。

    jfinal 得不到广泛的支持,缺乏英文资料也是原因之一,它本身也像 thinkphp 一样被很多专业人和公司看不上。
    dinghmcn
        75
    dinghmcn  
       2018-12-18 09:30:39 +08:00
    直接写信教育部取消英语普及中文编程不就好了吗,这么多废话🐶
    littleylv
        76
    littleylv  
       2018-12-18 09:35:24 +08:00
    楼主开心就好
    littleylv
        77
    littleylv  
       2018-12-18 09:37:07 +08:00
    @msg7086 #8
    8 楼说的“先吐个槽。作为推广中文的人,为什么帖子里用的都是西文标点符号呢,为什么不用规范的中文标点符号呢。” 如果 v 站可以重复点赞的话,我可以给 8 楼点到我铜币破产
    dishonest
        78
    dishonest  
       2018-12-18 09:49:57 +08:00   ❤️ 2
    我要是看到 github 一个项目代码是俄语的,绝对没有兴趣去贡献或者学俄语再去参与项目。主流开源项目代码文档用英语是必须的,除非只用于内部。

    用汉语来搞程序,IT 时代的闭关锁国?
    lookforsex
        79
    lookforsex  
       2018-12-18 09:50:29 +08:00
    楼主也就死磕可读性的问题而已,而可读性也就对中国人有些友好。说数量毫无意义,谁都知道中国人最多。
    除非你是用中文编程语言(易语言),完全是中文,不然关键字还是英文,就像某些人谈吐中夹杂英文般装逼。一下中文一下英文,可读性就强了?

    再说,某些回复也是,推广支持中文编程可以,但这不是你不学英语,英语烂的理由。
    123s
        80
    123s  
       2018-12-18 09:50:31 +08:00
    看了好多好评论
    dishonest
        81
    dishonest  
       2018-12-18 09:52:50 +08:00   ❤️ 3
    想象一下,每个国家都用自己的语言来写程序,减少了大部分的互相交流,对开源世界,对 IT 圈是好事吗?我简直无法想象会倒退多少年。
    linxy
        82
    linxy  
       2018-12-18 10:00:01 +08:00
    i is fish
    miniwade514
        83
    miniwade514  
       2018-12-18 10:01:03 +08:00
    @msg7086 专门打开了桌面网页来给你点赞(感谢)
    lovelybear
        84
    lovelybear  
       2018-12-18 10:02:08 +08:00
    @dishonest MyGUI,了解一下,注释全是俄语。。。特别坑
    Vegetable
        85
    Vegetable  
       2018-12-18 10:02:15 +08:00   ❤️ 3
    恕我直言,帖子里冷嘲热讽的人就是我国开源界最大的阻碍.
    不是因为他们不用中文编程,而是因为他们根本没有一个包容的心态,更何况全面理性的看待和探讨问题?

    中文真的没有值得称道的地方?我看未必吧
    变量名外国人看不懂?最后都是编译成二进制,既然 typescript 能编译成 js,中文变量名就不能编译英文了?维护这么一个配置可比什么 webpack.config.js 简单多了吧,代码做一下 i18n 就完事儿了不是吗?现在没人做这事儿就做不到了吗?

    中文的确天然就和开源不兼容,已经这样了没办法,不像乒乓球,但是这并不是语言本身的错.作为一个工程师,面对困难和问题最起码不应该露出这种"不行这做不了"的态度.
    lovelybear
        86
    lovelybear  
       2018-12-18 10:03:17 +08:00   ❤️ 1
    @sagaxu 不尽然,比如 OpenRA,就是纯社区的作品
    wangxiaoaer
        87
    wangxiaoaer  
       2018-12-18 10:05:15 +08:00 via Android
    非专业程序员不是程序员。

    这是一个社会化分工越来越精细的时代,专业的事情交给专业的人去干。
    msg7086
        88
    msg7086  
       2018-12-18 10:11:57 +08:00   ❤️ 1
    @xuanwu
    > 逐渐国外的工具 /框架会被类似功能的中文工具替代, 在这过程中需要翻译学习的内容也会越来越少.

    等先花几千亿搞出全国产的计算机底层架构再说。现在操作系统芯片设计、汇编、C 语言,这些工具要被类似功能的中文工具替代,需要多少钱你算过吗?
    我们就保守点估计好了,5 千亿,这笔钱,谁来拿出来。换句话说,这个社会从哪里牺牲掉等量的花销,凑出这笔钱来重新开发出这些工具。

    > 小学生会玩游戏, 就会测试.

    兄弟,咱们不要搞笑好吗?亚马逊 SDET 测试岗位起薪 10 万美元年薪,你们家小学生都有这本事了,为什么不让他们学点英语然后跑亚马逊拿高薪为国挣美元?真当拿着鼠标键盘点几下就叫做测试啊?
    最基本的要求,做测试抓 bug 需要 reproducible 吧,reproduce 了以后你得写 bug 报告吧。
    那小学生会写 bug 报告吗?
    说出来不怕你笑话,Technical Writing 这门课我是研一学的。也就是说,和我差不多水平的本科大学(普通 211 水平)以下的学校,很多计算机系毕业生恐怕连怎么给项目好好写字都没学过,因为学校根本就没开过这门课(甚至计算机系的很多老师的轮不到能做测试岗的水平)。
    还小学生就会测试,你这怕是一脚踩在混 v 站的所有用户的脸上了。

    你要是这么看不起我们计算机软件开发这个行当,那你就直说,我们也不需要说这么多废话了。小学生可以做测试,农民伯伯可以写文档,牛批啊。
    Felldeadbird
        89
    Felldeadbird  
       2018-12-18 10:12:01 +08:00
    @shiji 这键盘?什么专业用到啊。
    msg7086
        90
    msg7086  
       2018-12-18 10:15:06 +08:00
    @dishonest 之前做过一个纯日语注释的项目,还是 Shift-JIS 的,改代码还要先转 UTF-8,然后把注释翻译成英语,然后再读懂代码,再改……
    ShareDuck
        91
    ShareDuck  
       2018-12-18 10:18:54 +08:00   ❤️ 1
    @sagaxu #1 以前我也是像你这么想的,直至我要写一个财务类的应用……有大量的近似的词,没有对应的英文(因为会计制度本身存在差异)。硬要翻译成英文也不是不行,但后来参加的人必须要查词汇对应的中文,用英文变量名本身就变得毫无意义了。
    lisan
        92
    lisan  
       2018-12-18 10:22:55 +08:00
    中国梦
    ilaipi
        93
    ilaipi  
       2018-12-18 10:28:46 +08:00 via iPhone
    除非连语言关键字全部是中文 不然还有效率吗?写两个字切换一下输入法,那感觉简直了……
    momocraft
        94
    momocraft  
       2018-12-18 10:31:04 +08:00
    @Vegetable 目的有意义的时候才叫知难而上,没有意义那叫 ()
    jingyulong
        95
    jingyulong  
       2018-12-18 10:33:24 +08:00 via iPhone
    计算机硬件决定的,英文跟拼音还有汉字的存储,差别大着呢。
    helionzzz
        96
    helionzzz  
       2018-12-18 10:35:53 +08:00
    @Vegetable 这是没有意义的所以不做 跟 这太麻烦了做不了 是两种不同的情况。就精神来说我很佩服楼主舌战群儒不撞南墙不回头的精神,但是就事来说,他做的事除了让英语不好的人升起一丝幻想之外对大环境毫无意义可言。推广中文命名本身就是伪命题,现在主流语言难道有不支持中文命名的嘛。程序员作为一个以解决问题为宗旨的群体为什么会放弃看上去更便捷的方法,因为绝大部分人都比楼主蠢?
    likuku
        97
    likuku  
       2018-12-18 10:37:43 +08:00 via iPhone
    这篇文太 NB 了,佩服得五体投地…


    宛如黑魔法箱子的“大数据方法”得出的那种“神奇的果因关系”,生拉硬凑,给结果硬找原因。

    服气,真的服,世间一切事情总是可以为之找到万千理由的。

    这真是一例活生生的例子啊~
    likuku
        98
    likuku  
       2018-12-18 10:44:25 +08:00 via iPhone
    @xuanwu 『可以看看站里有多少抱怨命名难的帖子, 想象一下使用中文命名可以省去的麻烦(即便是个人项目). 也许会给你更多动力』

    这…真得用什么自然语言没关系啊,君不见多少中国父母给孩子命名时有多头疼的了?

    给孩子命名 与 在代码里 命名 还真就是一回事(雅达信,生动形象有意义,读起来朗朗上口,好念好记)。
    visonme
        99
    visonme  
       2018-12-18 10:45:21 +08:00
    有想法是好的,综合考虑目前来说还是不现实的,去做这件事情也会困难重重,最终的结果可能还是不乐观的。

    对于大多数从事程序开发的工作者来说,参与开源 ,阅读不是问题,流畅的沟通才是。

    就目前情况来看,中文化也不能很好的解决这个问题
    maplelin
        100
    maplelin  
       2018-12-18 10:49:25 +08:00
    看了这帖子,感觉可以坐等一个中文代码编写的操作系统诞生,按楼主的观点,反正不给外国人用的都用中文就行了
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2674 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 96ms · UTC 15:15 · PVG 23:15 · LAX 07:15 · JFK 10:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.