首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuanwu
V2EX  ›  程序员

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

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

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

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

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

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

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

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

    193 回复  |  直到 2018-12-22 07:58:22 +08:00
    1  2  
    dacapoday
        101
    dacapoday   2018-12-18 10:51:24 +08:00 via iPhone
    观望,不反对也不支持。在编程中推广中文是好事,但是在业已成熟的传统高级语言里不太合适。即使是英文的程序语言,其也是在特定领域有效才存活并推广。楼主能不能给中文编程寻找一个相比英文有效解决问题的场景,从简单的脚本起步。而不是在直接在工业界和专业完备的英文硬碰硬。
    lscho
        102
    lscho   2018-12-18 10:52:20 +08:00 via iPhone   ♥ 6
    都 8012 年了还在讨论这个问题。。。这就和美元一样,甚至比美元还难处理。因为中国国力一旦超过美国,美元就很容易被人民币取代。

    但是英语不行,这是日不落帝国留下的资本,全世界都在用的英语,汉语怎么能取代?

    除非某一天在编程的领域里,中国人远远走在世界的前面。否则推动汉语编程就是伪命题。

    另外再吐槽一下,现在大部分中国人母语水平不见得比英语水平好到哪里。
    fkdog
        103
    fkdog   2018-12-18 10:52:22 +08:00   ♥ 8
    我觉得这一切都是袁隆平的错,让 lz 吃太饱了。
    一天到晚没事情干摸鱼整一些没有任何意义的东西。

    非专业命名自己玩玩就是了。
    clino
        104
    clino   2018-12-18 10:53:34 +08:00   ♥ 1
    我觉得如果中文编程能降低门槛,扩大能编程的人的数量,这不是好事吗?
    反正反对的人本来就不会去用,讲究国际化的自然会用英文,不用担心这些多出来的会编程的人“污染”代码吧?

    再远一点的将来码农很多都要被 AI 替代了,不用为将来是否国际化操那么多心吧。。。
    realpg
        105
    realpg   2018-12-18 10:54:34 +08:00   ♥ 2
    以现在开发的收入,要求开发精通英语并不是一个很高的要求
    xAx
        106
    xAx   2018-12-18 10:55:00 +08:00   ♥ 1
    最大的问题是输入法切换
    innoink
        107
    innoink   2018-12-18 10:58:21 +08:00 via Android   ♥ 1
    还在搞这种巴别塔,嫌计算机世界还不够分裂?
    tyrealgray
        108
    tyrealgray   2018-12-18 10:58:41 +08:00 via Android
    我能理解英语之后,Github 有无数项目可以让我学习,为什么不全力普及英语呢?这样意义大得多吧。
    rizon
        109
    rizon   2018-12-18 11:04:50 +08:00
    讨论还挺激烈的。。没有一个个的看所有人的评论。

    不过我觉得在已经支持中文变量的今天仍然不就是用中文有三点:

    1. 中英混合很难看,,除了变量可以使用中文,其他的因为都是国外的库,都是英文的,所以基本上一个程序大多数的还是英文,这时候突然冒出几个中文,,看着难受啊。如果是全中文编程环境就好接受了,参考易语言。。。

    2. 中文打字慢,五笔还好点,不过五笔的使用率还是比较低的,一个汉字敲几个字母倒是还好单词也是几个字母,可问题是敲完之后还要选候选词,这个就很痛苦了。。。想象一下那个场景。。。

    3. 兼容性还是会差一些,容易乱码,,,总会存在这种可能就是编码问题导致中文乱码。。。
    SingleX
        110
    SingleX   2018-12-18 11:25:51 +08:00
    让我看到用中文命名的代码,我只想大细腻。。。。。。
    xuanwu
        111
    xuanwu   2018-12-18 11:26:56 +08:00
    @Flobit 参考"附上中文注释就够了"一节:

    答:关于注释和命名, 在个人之前的工作环境里, 是第一次接触正式的可读性审核. 有个印象是, 审核员会尽量倾向于减少注释量, 而强调代码本身的可读性(其中最重要的因素之一就是命名). 审核里会不时出现”这个方法名已经 self-explaining 了,注释就不用了”之类的评语. 虽然没有当面确认过, 但写注释和维护注释的额外工作量应该也是这种倾向的动因之一.

    @zjddp 中文命名对代码可读性的提高对所有母语是中文的开发者都适用.

    @waruqi 成熟的方案现在就有. 绝大多数编程语言都支持中文命名. 但很大一部分人没意识到.

    @roychan 可以看看"中文编程"知乎专栏. 里面所有相关项目都开源.

    @guorui112 拼音的劣势, 见#5

    @realkenshinji 见 #20 日本早已有母语命名的研究. 更不用说今年日本官方发布的"小学编程教育指南"中的例程都是日语命名的. 见"它山之石-日本推广编程中使用日语命名的渊源"一文

    @sagaxu
    @wangxiaoaer 专业的人都是从不专业的学成的. 越多在示例代码中使用中文命名的编程教程, 也会让这一学习过程更加平坦. 参考"首次发现在例程中使用日语命名的编程书籍"一文.

    @dishonest 见#51. 任何事都不可能一刀切. 问题是, 现在很大一部分开发者仍然视中文命名为禁区. 为了极少数的有英文命名硬性需要的项目而要求其他大多数没有这一硬性需要的项目使用中文命名并不合理, 尤其是个人项目.

    @lookforsex 参考"Python3 选择支持非 ASCII 码标识符的缘由". 支持 Unicode 命名本就是社区出于母语命名的需求推动的. 像其他很多人说的, 关键词就那么几十个. 代码中语义最富集的部分就是命名.

    @msg7086
    > 等先花几千亿搞出全国产的计算机底层架构再说
    何出此言? 现在就可以在几乎所有主流编程语言中使用中文命名, 不用其他额外依赖(软硬件).

    @helionzzz
    > 推广中文命名本身就是伪命题,现在主流语言难道有不支持中文命名的嘛。
    支持是一回事. 有多少国人知道是另一回事. 有多少人敢于尝试又是一回事.

    @likuku 孩子命名和代码标识符命名有可比性??

    @dacapoday 母语命名的可读性优势与使用何种编程语言没有关系

    @tyrealgray 说过了. 会英语不意味着必须在代码中用英文命名, "会英语因此我要始终在代码中用英文命名"是一个非常大的误区.
    wallriding
        112
    wallriding   2018-12-18 11:30:43 +08:00   ♥ 1
    跟民科争论 你觉得能赢吗?真有劲
    姚期智都说了,我看不出你的证明有什么问题。
    同样的道理,我也看不出楼主的做法有什么问题。楼主,加油!
    12101111
        113
    12101111   2018-12-18 11:35:08 +08:00 via Android
    楼主用的 vue 作为试点,我觉得不是很好,能用的上 vue 是这种前段框架一般都有业务需求,一个要学编程的人,八成是没有这种需求的,而且估计也没有后端帮助完成 vue 项目。我推荐 Julia 和 lisp 作为中文编程的起点。Julia 是一个科学计算语言,本身支持 Unicode,而且社区经常使用希腊字母作为变量名,有成熟的输入非英文的方法,Julia 也支持宏编程,对其进行中文化难度不高,而且 Julia 在数学教学上很有帮助,有一定的市场前景,甚至能在部分电子化教学的中学推广。lisp 作为面向语法树编程的语言,语法简单,很容易搭配 sicp 作为编程的启蒙课程,而且几乎没有英文关键字,很容易中文化。
    xuanwu
        114
    xuanwu   2018-12-18 11:48:28 +08:00
    @shijingshijing
    @wallriding 是谁在扣帽子很清楚. 我的背景已经在"中文编程知乎专栏一岁了-我为什么投身于普及用中文编程"说的很清楚. 个人很期待深入了解持反面意见的开发者.

    @12101111 这帖的中心是"中文命名", 而非创立中文编程语言或者汉化现有编程语言. 翻译 vue 源码也是为了方便学习和后续可能的维护. 请阅"手工翻译 Vue.js 源码:尝试重命名标识符与文本"一文.
    tyrealgray
        115
    tyrealgray   2018-12-18 11:52:54 +08:00
    @xuanwu 以推广编程或者帮助编程开发者的目的都太站不住。学英语对于普通人意义更大,同样去努力,推广英语的收益要大太多,而且也比专门找人来搞汉化的投入少。更不用说会英语后能够获取的信息面能够广一个台阶了。
    leonme
        116
    leonme   2018-12-18 12:17:48 +08:00 via Android
    我觉得在小学 初高中甚至本科阶段以培养兴趣为目的还是有可能推广的,但是硕士博士几乎不可能,你要发个顶刊,公布源代码,还得把中文改成英文,哈哈,你说这可能吗?首先要改变学术界,才能改变工业界~然而话语权在别人那里,看看国内外会议和期刊的认可度你就会恍然大悟~落后不可怕,可怕的固步自封,向别人看齐不好吗?
    dyrone
        117
    dyrone   2018-12-18 12:31:08 +08:00
    你是否晓得 ascii 里有 26 个英文字母?
    ps1aniuge
        118
    ps1aniuge   2018-12-18 12:42:11 +08:00   ♥ 2
    powershell 脚本中使用 [中文脚本名] 的意义:
    脚本太多。不用中文找不到脚本。用中文都不好找。 [nd 你的文件已经被黑客篡改.ps1] 用前两个字母 +tab 键即可补全执行。

    powershell 脚本中使用 [中文变量名,参数名,函数名] 的意义:
    适合于初学者,适合于他人理解修改。
    "brother"是哥哥还是弟弟?"3 顾茅庐"又如何翻译成英文?

    以阿里-----云为例,若其 api 命令行的参数都是中文,则会极大提升用户效率。
    如:
    xj 新建虚拟机.sh -cpu 个数 2 -cpu 核心 max

    #对于 powershell 完全何以实现。
    xj 新建虚拟机.ps1 -cpu 个数 2 -cpu 核心 max

    --------------------
    xj 新建虚拟机.ps1

    param
    (
    $cpu 个数
    $cpu 核心

    )
    --------------------
    此处围观,真实 powershell 脚本,win 下用的 powershell 脚本,验证文件的数字签名是否被更改
    https://www.v2ex.com/t/481876

    powershell 脚本文本文件,支持 bom 头,只要作者写好带有 bom 头的脚本,传播过程绝不会乱码。
    连 linux 的 vi 都支持。这点比 python 强。

    结论,powershell 中文变量编程,完全可行!稳定!容易理解!
    脚本修改者,使用者,就是楼主说的,“非专业程序员”他们用中文确实更好!
    Hieast
        119
    Hieast   2018-12-18 12:52:13 +08:00 via Android
    近代科学的发源地在西方,使用英文。
    信息革命的发源地和领跑者在美国,使用英文。

    除非中国发生领导一次认知革命,或者三次生产力革命,改变全世界,不然中高端的工程师肯定还是用英文。没错,我之前所在的材料行业高端一点也是用英文的。

    至于非专业玩具用什么,不是很随意么。
    Ultraman
        120
    Ultraman   2018-12-18 13:17:54 +08:00
    我给你另外个思路 在这里数不清的人认为微信是一坨屎 可是他们还是不得不用微信 为什么?因为他们公司里的领导家里的老人都在用他们不得不用 尤其是家里的老人 他们中相当一部分从上网开始就用且只会用微信 参考这个思路 你可以尝试让一些刚开始学编程的人就开始用且坚持用中文编程 这样虽然周期会很长 但是等这批人走上工作岗位甚至成为可以决定使用何种技术的人之后 你所期待的中文编程的大环境也就真的到了 而不是在这里要求已经用了 N 多年英文编程的人更改习惯切换到中文编程 “农村包围城市”
    最后 我支持英文编程 但是也不反对你个人推广中文编程的努力
    LucasLee92
        121
    LucasLee92   2018-12-18 13:29:10 +08:00
    为啥选择中国开源而不是世界开源
    zifuir
        122
    zifuir   2018-12-18 13:30:04 +08:00 via iPhone
    这种思路最适合搞易语言。全世界都在用英语,日语命名韩语命名也要来一下是吧,吃饱了撑
    Variazioni
        123
    Variazioni   2018-12-18 13:45:04 +08:00
    不支持也不反对。。。
    话说。来回切输入法不累么。。
    az402
        124
    az402   2018-12-18 13:45:07 +08:00
    @xuanwu
    先说一下,我对中文命名持中立态度。用什么命名无所谓,使用者爽就行了。不允许使用非英文命名本身就是不符合开源精神的对吗。
    我就帮楼主想想推广中文命名应该怎么做。
    首先大部分程序员工作就是 Ctrl C+V,看看业内最火的两个网站 GitHub 和 StackOverFlow 都是可以直接拷贝代码的。
    其中 GitHub 推广的难度比较大,需要大量有价值的开源项目一起采用中文命名的方式才能逐渐形成趋势。想楼主提到的五笔编码编辑器我可能一辈子都不会用到,自然没什么曝光率。
    那剩下的选择只有 StackOverFlow 了。楼主可以在主流语言的主流问题里面都采用中文命名方式的回答。这样可以提高曝光率,让广大程序员群体工作中逐渐的耳濡目染,不知不觉的就 Ctrl V 到生产代码中了。而且极有可能收获老外们支持,这简直和在身上纹汉字一样酷!
    如果楼主觉得这样推广没有灵魂,那咱们来分析一下国内软件行业的技术趋势。
    其实国内技术发展多数还是依靠大厂的风向标作用。大厂所采用的技术会直接影响到国内的技术发展。
    楼主可以先设定一个小目标,进到 BAT 中的一家。在公司内部布道、推广。先推广他一个公司。然后再把推广的成功经验扩展到国内软件行业。
    而且貌似 BAT 都在做 StackOverFlow 的“翻译”工作。正好楼主可以把第一个方法一起实践了:)

    希望楼主成功。
    kuangwinnie
        125
    kuangwinnie   2018-12-18 13:47:36 +08:00
    @lscho 而且推动中国 IT 水平成为世界超一流的那群中国人还是只用中文的人- -
    loopfor
        126
    loopfor   2018-12-18 13:57:54 +08:00
    只有自己使用的变量是中文,语言关键字、各种 api 都还是英文,这样有什么意义呢?
    alfchin
        127
    alfchin   2018-12-18 14:16:58 +08:00 via Android
    @ShareDuck 正常不至于啊,企业会计准则基本上就是国际会计准则的翻版,要论名词肯定是国际准则下的多,人家可以自定义报表栏目。
    YuxiangLuo
        128
    YuxiangLuo   2018-12-18 14:33:11 +08:00
    前几天我读 vue 源码,有几处困惑,想起楼主之前的帖子,去找了他的“中文”版 repo,一看已经好多天没更新了。
    随便点了几个文件,看了几秒,然后默默地关掉了标签。
    xuanwu
        129
    xuanwu   2018-12-18 14:35:53 +08:00
    @tyrealgray
    > 学英语对于普通人意义更大
    再重复一遍: 会英语不意味着必须在代码中用英文命名, "会英语因此我要始终在代码中用英文命名"是一个非常大的误区. 如 #18 所言, 软件开发应该视潜在用户和合作者决定使用何种命名方式, 目的在于更顺畅的交流.

    @leonme
    > 首先要改变学术界,才能改变工业界
    个人觉得国内学术界在软件工程应用方面并未对工业界有明显引领作用. 最近看到关注的学生和专业程序员越来越多, 是个好趋势.

    @LucasLee92 原因见个人简介

    @zifuir 日语命名不需我们操心. 见 #20 日本早已有母语命名的研究. 更不用说今年日本官方发布的"小学编程教育指南"中的例程都是日语命名的. 见"它山之石-日本推广编程中使用日语命名的渊源"一文

    @vcinex 欢迎推荐相关社区. 之前组里有过讨论, 但尚未有结论: https://github.com/program-in-chinese/overview/issues/70

    @az402 多谢. 确实打算在 SO 进行一定推广, 比如针对中文开发者的问题用中文命名的示例回应. 但限于个人精力, 尚未找到切入点. 个人因为在美西, 即使进入这里的 BAT 分支, 估计也很难有机会进行中文命名的实践(很可能有国外同事).

    @loopfor 标识符是业务语义最集中的部分. 因此才说将标识符(类 /方法 /变量等等)进行母语命名会对代码可读性有提高.
    lovelybear
        130
    lovelybear   2018-12-18 14:48:58 +08:00
    @Vegetable 我反对冷嘲热讽,支持理性。

    中文化并不能解决国内开源的问题,荷兰人搞开源用的是英语,瑞典人搞开源的是英语,为什么?因为英语是计算机的语言,因为计算机是英语语系的人发明的,况且英语或许不是使用人数最多的,但是英语在全世界拥有最高的影响力,因为至今主导国际政治经济科技的国家是英语国家
    使用中文化编程无异将世界上科技最发达的地区排斥在外,这显然不是一个最优的方案,不免让人们想起了闭关锁国的时代,而这个时代与我们现在的时代并不遥远,闭关锁国的结局是什么我想大家都明白。
    与其在这里总是说什么中文编程,不如好好去研究一下编程技术,提高编程水平,才是正确的路径。

    中文编程当然是一个很好的想法,只是在现在并不适用。
    Raymon111111
        131
    Raymon111111   2018-12-18 14:49:56 +08:00
    特别简单理由, 本末倒置.
    lovelybear
        132
    lovelybear   2018-12-18 14:50:35 +08:00
    如果 lz 有心去尝试中文化编程,我还是支持的,毕竟这也是一个新技术,应该支持,只是最后别搞成易语言那样就行。
    reus
        133
    reus   2018-12-18 14:50:52 +08:00
    中国人现在都是满嘴英文词了,瞎操心
    UIXX
        134
    UIXX   2018-12-18 14:59:36 +08:00   ♥ 7
    作为一个曾经的科研人员,我不介意有这么一项研究,但是作为立论的人,你得把你的立足点以数据的形式给大家阐述清楚。

    20L 提出的:

    1、中文的母语地位决定了任何第二语言都很难达到中文水平. 中文命名对代码的可读性提高是可以立竿见影的, 为何不在现在开始呢?
    “任何第二语言都难达到中文的水平”这个具体指的是什么,怎么评定一个人的母语与第二语言水平?
    “中文命名对代码的可读性提高是可以立竿见影”中的“可以”的前提条件是什么,可行性怎么样。代码的可读性到底怎么衡量?

    2、无论有多大, 中文命名可以极大降低这个群体参与开源项目的门槛。
    不要以身边的特例来说明,必须有一个足够大的样本支撑这一点,到底“是不是中文”跟“群体参与开源项目的活跃度”的关系是怎样的?

    3、随着中文命名的推广, 会有越来越多纯中文接口的框架和工具, 以及使用中文命名的编程教程, 英文在编程学习中的作用会随之下降。
    这点仅仅是个人推测。

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

    5、面对面的交流效率永远高于其他形式
    “你为什么会觉得集中在一个国家是一项优势”跟“面对面的交流效率永远高于其他形式”这两个说法的因果关系并不明显,请详细描述。

    29L 提出的:

    1、参考"不利于非中文编程者贡献"一节。
    太多的“个人认为”,并无数据支撑。

    2、小学生会玩游戏, 就会测试
    请举例说明。请说明例子的泛用性。

    3、绝大多数国人的母语都是中文. 什么叫"非中文人口"?
    文字游戏,答非所问。

    31L 提出的:
    中文命名应该比能够更恰当更快, 综合各种因素哪种方式写代码更快还待实践证实。
    “应当”、“待证实”之类的说明没有必要在此出现。通篇讲可读性的提升,参见 20L 提出的问题。

    111L 提出的:
    1、中文命名对代码可读性的提高对所有母语是中文的开发者都适用。
    请摒除“想当然”,用数据支持你这个观点。

    2、成熟的方案现在就有。绝大多数编程语言都支持中文命名. 但很大一部分人没意识到。
    “没有意识到”恰恰是方案不成熟的佐证。

    3、母语命名的可读性优势与使用何种编程语言没有关系
    请说明原因,范围为:“使用何种编程语言”

    129L 提出的
    个人觉得国内学术界在软件工程应用方面并未对工业界有明显引领作用. 最近看到关注的学生和专业程序员越来越多, 是个好趋势。
    我的天,你能去了解一下吗?


    在讨论中文命名对于中国开源届的意义的时候,抛开人在使用语言中的一些量化结果是一件很没有营养的事。
    leonme
        135
    leonme   2018-12-18 15:01:36 +08:00
    虽然不知道 lz 最后能不能坚持下去,但是看完帖子,发现一点:lz 针对跟帖的回复有些断章取义,只是单纯的根据某几句而不是中心观点去反驳~
    另外我觉得推广的出发点都有些问题,如
    ->xxx,可见中文命名对于鼓励非专业程序员参与开源项目的作用. 并不是说英文命名肯定会阻止参与, 但肯定会让很大一部分非专业程序员望而却步

    首先不说由个例就得出你的结论这种以偏概全的问题(没有说服力)。值得吐槽的是,谁说非专业程序员英语就不好呢?换句话说,英语的好坏跟你是不是程序员没有太大的关系吧?
    xuanwu
        136
    xuanwu   2018-12-18 15:09:40 +08:00
    @rizon
    > 如果是全中文编程环境就好接受了
    限于现在英文编程语言的垄断地位, 在其中使用中文命名是个权宜之策.
    > 中文打字慢,五笔还好点
    的确组里有位五笔用户就说我的输入太慢了. 有组员尝试将 IDE 自动补全和输入法进行了集成, 思路大概和#20 的日本论文有点类似. 这样就可以弥补一些输入速度的问题.
    > 兼容性还是会差一些,容易乱码
    这个问题不是中文命名的锅, 而是不同系统编码的兼容问题. 中文命名只会是将这个问题放大, 个人认为会促进解决. 而且团队合作时一般也要一致开发环境, 基本可以规避.

    @realpg
    > 以现在开发的收入,要求开发精通英语并不是一个很高的要求
    顶楼的实例表明, 各种非商业应用的开发需求非常大, 开发员的人力永远都不会嫌多. 这些需求本身就可以催生很多相关开源项目, 同类应用多了自然就会形成框架 /引擎.

    @alfchin
    > 正常不至于啊,企业会计准则基本上就是国际会计准则的翻版,要论名词肯定是国际准则下的多,人家可以自定义报表栏目。
    如果是非会计专业出身的开发者, 与其学习相关英文术语, 不如直接用中文术语.

    @YuxiangLuo
    有开发者提醒 vue 正在出 TS 实现的 3.0 版. 因此暂缓该项目.

    @lovelybear
    > 荷兰人搞开源用的是英语,瑞典人搞开源的是英语,为什么?
    答:Linus 的母语是瑞典语(Interview: Linus without Linux),根据 wiki 使用者是八百七千万。中文(普通话)的母语使用者是九亿五千万。这是一百倍的差距。另外,英语母语使用者是 3 亿六百万。更重要的是,中文母语使用者基本集中在中国,而英语分布在不同国家。西班牙语也类似。从人口基础来看,用中文编程是非常有潜力的。
    > 使用中文化编程无异将世界上科技最发达的地区排斥在外
    因地制宜, 不搞一刀切:
    "个人也不赞成 100%的中文化. 需要和国外交流的项目肯定有. 大胆假设:以中文为母语的所有程序员,从事的项目中,90%是单人项目(*),剩下的 10%中,90%只有同样是中文为母语的程序员参与.这样,只有 1%的项目有用英文写代码的硬性需要.为了这 1%的需要,而在剩下的 99%中使用英文,得不偿失."
    murmur
        137
    murmur   2018-12-18 15:11:54 +08:00   ♥ 1
    我感觉楼主有点过于执着
    在专业领域 中文函数名 变量名 数据库字段命名有着英文无法比拟的优势
    但是通用领域 开源不适应这个做法
    xuanwu
        138
    xuanwu   2018-12-18 15:11:54 +08:00
    @AntiGameZ
    @huclengyue
    @SeaRecluse
    @Vegetable
    @ShareDuck
    @ps1aniuge 很高兴看到对中文命名的支持和实践. 非常欢迎到中文编程讨论组一聚(github 或 qq, 见个人简介).
    krixaar
        139
    krixaar   2018-12-18 15:20:52 +08:00   ♥ 1
    不是很喜欢看这种大部分论据都靠臆测的讨论,“我之前用中文变量名用了一次,效果很好,所以这就是中国开源界的出路”这种感觉……

    编程最大的门槛不是语言,而是思想。你有一个好的思路,不说写成伪代码,直接描述出来,都可以让别人灵光一闪写出合适的代码。

    这世界不缺会英语写代码的人,教会非程序员编程思想,让他们能用母语写出伪代码,就够了,代码能不能看懂那是次要的,用不用汉语也是次要的。

    向非程序员推广 Scratch 吧,自带简中。当他们已经有了编程思想,教他们写伪代码、汉译英,让他们用 python。
    loopfor
        140
    loopfor   2018-12-18 15:23:26 +08:00
    @xuanwu > 标识符是业务语义最集中的部分. 因此才说将标识符(类 /方法 /变量等等)进行母语命名会对代码可读性有提高.
    如果要把编程中用到的语言本身以及其他类库 API 都改用中文命名,这将是一个异常庞大的工程。持续维护这么个工程耗费的人力太高了。
    另外,中文 api 和英文 api 也没法共享同一个生态环境。比如假如网上有人说 java string 怎么做等值比较,你如果只接触过中文 api 版本的 java,那就会完全不知道 equals 这个 method,只能等其他人把这个资料翻译成中文 api 版本,你才能阅读这个资料。
    tyrealgray
        141
    tyrealgray   2018-12-18 15:24:08 +08:00
    lz 你全程都在强调会英语不一定就要用英语编程。根本不敢正面回答我的问题。

    世界上能对 [普及英语做贡献的普通人] 要比能 [普及编程且还有精力推广维护一个中文系统化的编程生态的程序员] 要多太多了。

    [对于鼓励非专业程序员参与开源项目的作用] ,用普及英语的方案 [收益大且成本低] 。而普及中文编程的方案,你推动这个方案需要的就不是英语老师,英语家教什么的人能够完成的。

    [一个已经会英语的人] ,他如果想 [为开源贡献] ,他只需要打开全世界任何一个编程网站实例或者 github 就够了, [YouTube 上一大堆超级贴心的教程] ,是个人就能学会。

    [一个不会英语的人] ,他如果想 [用中文编程] ,他需要用 [baidu] 找如何用中文编程, [90%的可能是找到了易语言] ,然后深入了解后方向变了, [最后还是要学习其他编程语言] ,最后发现还是得啃英语, [因为他可能想在 github 上查资料] ,而 [一手最新版的资料永远都是英文版的] !

    中文编程生态 [到头来] 还容易因为技术变革落下太多债, [易语言] 发展就够好了,可以说是中文版的 C#,也没见对开源有多大帮助呢?
    JamesR
        142
    JamesR   2018-12-18 15:25:17 +08:00
    支持楼主,可以搞一搞试试,数据库的“字段”如果采用中文命名,那效果是立竿见影,哈哈哈。
    lovelybear
        143
    lovelybear   2018-12-18 15:31:45 +08:00
    @krixaar 说的不错,编程思想比编程语言重要的多,用英语编程也好,用中文编程也罢,本质都是一样的,与其去刻意强调用中文编程或者强调用英文编程是没有意义的,Linus 是芬兰人,但并不妨碍他使用英语开发出像 Linux 这样的操作系统
    j717273419
        144
    j717273419   2018-12-18 15:48:47 +08:00
    估计只有考古系和历史系才会这样认为吧。。。。。。有这时间,不如多学习英文和数学 。
    xuanwu
        145
    xuanwu   2018-12-18 15:54:20 +08:00
    @loopfor 没说翻译核心库. 自定义的标识符使用中文命名不需要任何额外的库支持, 而这些是最和业务相关的内容, 对可读性的提升也最明显.
    @tyrealgray 再强调一下. 在现有的英文编程语言环境中使用中文命名, 不是使用中文编程语言.
    @JamesR 之前试过数据库表 /字段使用中文命名. 知乎专栏"中文代码示例之 Spring Boot 1.3.3 演示"一文
    zeroten
        146
    zeroten   2018-12-18 16:02:12 +08:00
    真要中文命名了,我想我会诗兴大发
    lucahan
        147
    lucahan   2018-12-18 16:07:09 +08:00
    易语言:仿佛有人说我帅
    rizon
        148
    rizon   2018-12-18 16:07:22 +08:00   ♥ 1
    @xuanwu #136
    看楼主这么认真的一个个回复,看来是真的挺看重这个问题哈。
    支持楼主哈,这种事情不是能不能成的问题,而是该不该做的问题,只要该做的理由足够充分和合理,就值得去做。
    中文编程对于提高国内的普及率是非常有价值的,而且推崇中文编程也算是响应从“中国制作到中国创造”的发展道路吧,中文编程之所以很困难,说到底还是因为这玩意是外国人发明的,而且至今也是他们的技术走在前沿,发展具有中国特色的编程是很有意义的哈。

    -----
    题外话,

    其实这让我想到入坑编程的经历,初中的时候喜欢 hack,先是从学着用工具到后面想要开发自己的工具,但是初中的我根本不知道什么是编程,入门的成本相当高,看着那些乱七八糟的东西一头雾水不知道从何下手,但是我很幸运那时候接触到了 “易语言”,中文对一个完全新人来说降低了很大的门槛和心理障碍(对于不是非常熟悉阅读英文的人来说,一堆英文真的会提高心理抵触的等级的)。易语言的一些非常好的入门教程让我很快喜欢和熟悉了编程。

    作为一款“玩具”(由于它的局限性暂且这么不严谨的定义吧),易语言让我走上了编程的道路,一走便是近十年,至今还在热爱的编程路上工作着。
    reactna1ve
        149
    reactna1ve   2018-12-18 16:13:21 +08:00
    就题目来看,毫无意义

    推广开源靠的是先进的设计和理念思想,而不是语言,语言只是一种表现形式
    工作多年的大牛都不一定做到的事情,指望普及非专业人士来做?
    msg7086
        150
    msg7086   2018-12-18 16:21:36 +08:00   ♥ 2
    你之前说了易语言是这方面的标杆吧。
    我大概是 2002 年前后的时候吧,开始玩易语言的。那个时候我是易语言论坛模块分区的版主,一方面开发一些模块给其他人用,一方面参与了国内最初几本易语言教程的编写工作。那时候易语言有哪些人在用,优势在哪里,劣势在哪里,说真的我们都已经看烂了也说烂了。
    易语言最开始就是打算给非业内人士用的。什么叫非业内人士呢?首先排除掉计算机专业的学生和毕业生。然后呢像是初中高中已经在做开发的人,基本也不是他们的目标群体。剩下的,比如说还什么都不会的中小学生,或者是其他专业的大学生,社会人士,才是给他们用的。

    易语言最大的优势有两处。
    第一是填补了市场上这个定位的空缺。那个时候微软的.NET 还在计划中,或是刚推出不久,市面上流行的还是 VB6 和 VC6,当然还有 Delphi。VC6 写窗口难度太高,VBasic 语言略坑,Pascal 又有点小众,所以易语言有了可乘之机,在这三者的夹缝中站住了脚跟。一直到后来 VS 越做越好,C#和 CLR 也越来越完善以后,易语言的位置才渐渐被抢走,成为现在灰色地带的聚居地。
    第二是他的 IDE。上面说到的输入法打中文的问题,易语言早在十五年多前就已经在 IDE 中实现了输入法自动变换功能。比如「标签 1.标题」只需要敲「 bq1.bt 」即可自动转换,不说十几年前,就算现在也是值得一提的亮点。

    这些优势,主要就是用来吸引那些不会写程序的人入门。从 0 开始,直接打开 Python 甚至 C 的教程,边啃英语边啃编程是非常费力的,所以才会有这种先学会编程,再慢慢接触专业的英语词汇,再过渡到全球通用的编程语言这样一个攀科技树的过程。当然了,既然是非业内、非专业的人士,这就意味着代码质量绝对达不到「好」的程度。大学四年研究生两三年学的东西,是一个中文编程工具玩几个月就能代替的吗?就算是测试岗位,大学里也是有专门的课程的,真以为小学生就能胜任了?未免太小看这个行业了。

    更何况,如果你本科或者研究生课程中好好学过软件工程相关的课的话,应该知道,软件工程可是一个非常容易参与的人越多情况越糟糕的玩意儿。两个工程师能开发好的软件,你再给他们安排 20 个懵懵懂懂的新人过去,可能整个项目就毁了。这 20 个人不仅不会贡献价值,还会消耗掉工程师的时间,拖慢开发速度。(比如我司就是一个很好的例子,之前十来个工程师写了五六年还天天崩溃的程序,我和一个小哥花了半年的时间重写了一遍什么都干净了,运行速度还快了几倍。人多有个鸟用?)

    所以一定要说的话,有时候我们用英语写项目 —— 就是为了过滤掉大部分对项目无益的人。

    对了,我以前工作过的公司,开发岗面试可是要同时考核英语和日语能力的,猜猜这是为什么?
    msg7086
        151
    msg7086   2018-12-18 16:31:04 +08:00
    说到这里,回去易语言论坛看了下,发现当年的账号还在,然后看到高中时候自己的沙雕发言,真是感慨万千啊……
    xuanwu
        152
    xuanwu   2018-12-18 16:39:43 +08:00
    @msg7086 多谢分享. 之前言语多有偏颇请见谅.
    易语言和 IDE 我们之前在 https://github.com/program-in-chinese/overview/issues/11 学习过一点皮毛.
    很认同关于软件工程精炼人员的好处.
    如同顶楼实例, 我并无将非专业开发者赶鸭子上架进行从无到有的软件开发的意思. 而是说, 开源项目的基本架构搭建之后, 如果项目本身使用的是中文命名, 用户(往往是非专业开发者)应该会更有动力去学习代码. 可以看看那个项目中合作者提交的 PR, 没有什么技术难度但恰恰切合了他自己的需求. 而他一开始给我的感觉是毫无参与开发的动力的.
    msg7086
        153
    msg7086   2018-12-18 16:51:53 +08:00   ♥ 2
    @xuanwu 开源软件的问题主要在于开源软件的规模通常已经比较大了,专业性也很强(我指的是编程方面的专业性,不是业务逻辑),就算有中文命名,对于没有基础的人来说也无济于事。就拿满地跑的 WordPress 来说好了,这种项目别说是不懂的新手,就是做了三五年 PHP 的老司机,如果没有仔细玩过 WP 的话,上手也要心态爆炸的。所以说这东西还是个定位问题。如果你想好了给新手用,那就索性像当时易语言那样,把侧重点放在中小学生的教育和兴趣爱好上,从小程序入手来推广,这是个很好的思路,而不是放在专业性极强的项目开发上。特别是你们已经有 VSCode 插件了,可以搞搞中小学生去。

    时间不早了,该睡了。
    cyspy
        154
    cyspy   2018-12-18 17:04:11 +08:00
    不仅是历史问题,汉语本身语义的耦合性就比较强。试试翻译这段?

    final class LazyList[+A] private(private[this] var lazyState: () => LazyList.State[A]) extends AbstractSeq[A] with LinearSeq[A] with LinearSeqOps[A, LazyList, LazyList[A]]
    krixaar
        155
    krixaar   2018-12-18 17:05:04 +08:00
    @rizon 我当年是电视上看到有个节目叫“中学生电脑课堂”然后学了 VB6 ……现在想想我什么都会一点貌似还真的是因为看这个节目看的……
    waytoshine
        156
    waytoshine   2018-12-18 17:28:46 +08:00
    楼主应该开个论坛聚集这方面的爱好者去多多讨论,在 V 站,看到了这些人的这样那样的回应,我感觉你也应该感受到了这里不适合再深入说这些,讨论到了有一定里程碑的结果之后可以再来这里发布成果。
    lovelybear
        157
    lovelybear   2018-12-18 17:31:10 +08:00
    @waytoshine 我觉得最后的结果就是 E 语言。。。
    lovelybear
        158
    lovelybear   2018-12-18 17:32:51 +08:00
    @waytoshine 不是看不起 E 语言,而是 E 语言的发展实在是太糟了,别的不说,拒绝开源这一点就毁了它
    lovelybear
        159
    lovelybear   2018-12-18 17:38:27 +08:00
    我对 lz 还是那句话:支持,支持,除了支持,还是支持!

    虽然我不认同 lz 的中文化编程的观点也不太看好这方面的东西,但是对于 lz 敢于尝试新技术还是赞赏的,支持的,期待 lz 的中文化项目,让我们见证一下中文化项目的魅力吧
    EscYezi
        160
    EscYezi   2018-12-18 17:48:20 +08:00 via iPhone
    @tyrealgray 易语言是中文版的 VB 还差不多,C#太抬举易语言了
    aniua
        161
    aniua   2018-12-18 17:54:45 +08:00
    无意义
    EscYezi
        162
    EscYezi   2018-12-18 18:00:31 +08:00 via iPhone
    我认为楼主的目的并不是单纯的中文命名能达到的,大多数命名都没用到什么高难的英语词汇,而且中文命名还有一些缺点,比如可读性,当命名较长时,英文驼峰式命名带来的可读性消失了,用什么来取代呢?下划线?那可能看起来更难受吧。
    根本的解决办法是丰富各种编程技术的中文文档,提高相应中文论坛的活跃度,同时为了普及编程应制作一些对零编程基础用户更加友好的教程。
    iloxmn
        163
    iloxmn   2018-12-18 18:07:38 +08:00 via Android
    一个项目的价值不是取决于它是用中文还是英文写的。
    所以,毫无意义。
    哦另外,语言不是编程的门槛
    Sapp
        164
    Sapp   2018-12-18 18:17:02 +08:00
    我觉得实际开发没需求,但是给小孩还不错,实际开发实际上并不需要你会英语,比如 function,你压根不需要知道他是什么意思,只要知道这是干嘛的然后背下来词就行了,你把它翻译成函数,他就能知道这是干嘛的?依旧不能啊,还是得记住函数式干嘛的,然后背下来函数这个词
    bookit
        165
    bookit   2018-12-18 18:27:37 +08:00
    十几年前我看德国人写的代码,满满的德文注释,好痛苦

    我又不会德文。。。
    junbaor
        166
    junbaor   2018-12-18 18:29:01 +08:00
    中文代码就不必了,中文注释、文档还凑合。
    Sapp
        167
    Sapp   2018-12-18 18:34:14 +08:00   ♥ 1
    @EscYezi 你都用中文了,还用什么驼峰,比如 taskCount 这种需要驼峰,但是 任务数量统计,这要什么驼峰?除非是英语母语的人,否则越是长的中文越是有优势啊
    billwang
        168
    billwang   2018-12-18 19:44:28 +08:00
    可以用拼音简拼来弄,有些专业大型程序的变量定义真心不知道英文如何写,就是写出来也会很长,用英文简拼还不如用拼音简拼。
    aloyuu
        169
    aloyuu   2018-12-18 19:46:05 +08:00
    还是 E 文看得舒服 中文 词语太多
    codermagefox
        170
    codermagefox   2018-12-18 20:08:44 +08:00
    插个楼:
    https://codermagefox.github.io/alfredMagic/
    ![]( https://codermagefox.github.io/alfredMagic/PICS/VariableName.gif)
    楼主的问题可能仅仅是没有用 MAC 和没给我的项目点 star....
    zander1024
        171
    zander1024   2018-12-18 21:04:08 +08:00
    你用中文, 等于抛弃了那部分用英文的人口,他们的中文可不是必修课。 我国相反,9 年义务教育基本让英文有一个基本的水准。 你说是对英文望而却步的这部分人创造的价值多,还是那些英文区创造的价值多? 中文命名我认为可以以公司为单位。 因为更多需要中文解释的是业务,比如数据库的表字段,而一个产品的 api 那部分其实你应该完善的是使用文档,而不是一个命名就好解决的。
    zander1024
        172
    zander1024   2018-12-18 21:08:50 +08:00
    你用英文去命名一个 api,你觉得外国人打出来这段中文字有多难... 和我们打出几个字母的难度相比如何? 所以你需要解决的是开源项目中文文档问题, 而不是纠结一些 api 的命名。 全中文易语言已经做的很好了。。 你看到现在它创造了什么开源项目么。。
    greatbody
        173
    greatbody   2018-12-18 21:13:23 +08:00   ♥ 1
    中文命名可以解决命名纠结症的问题,比如一些科学变量的命名。
    s609926202
        174
    s609926202   2018-12-18 21:16:20 +08:00 via iPhone
    我觉得没意义~
    BarZu
        175
    BarZu   2018-12-18 21:17:56 +08:00
    我英文只有二级 A,四级过不了,但这并不影响我编程,编程对于我来说,就是 26 个字母加符号的组合,跟是不是英文没太大关系。如果你能把眼界放开到编程并不是中英文对抗,而是把有限的字符组合成无限的可能,这样你就不会纠结用什么语言命名了。反正我就是觉得一键一个字母很舒服,用英文还是拼音,不重要。
    stevenhawking
        176
    stevenhawking   2018-12-18 22:18:30 +08:00
    你好歹考虑下是谁用.
    如果是老外用你就是做大死
    uptime
        177
    uptime   2018-12-19 01:08:37 +08:00
    为什么总有人想这些?

    中文有什么优势? 中文是目前地球最多人使用的语言,注意是目前。拼的也就是人数优势,可是多年的被计划,二胎不给力,不好意思,现在印度人口已经准备超越中国人口了,所幸,印度语言不统一,除了印度语还有多种语言共存,比我们藏语壮语等还要分散。但,无论如何,光靠人口这优势撑不了几年了。以后,印度语超越中文成为使用人口最多的语言将会是事实。

    这么看,印度语成为编程语言或许更有潜力
    storypanda
        178
    storypanda   2018-12-19 01:42:19 +08:00 via Android
    @xuanwu
    > 再重复一遍:会英语不意味着必须在代码中用英文命名

    所以会中文是不是也不意味着必须用中文命名呢。
    而且为什么一直在用西文标点符号回复而不是中文标点符号?

    > 如#18 所言,软件开发应该视潜在用户和合作者决定使用何种命名方式,目的在于更顺畅的交流.

    既然说开源软件是给世界的潜在用户使用,那这么说 Google 和 Facebook 是不是没一个框架都要用一百多种语言建不同的 repo 适应全球开发者了?
    zkeeper
        179
    zkeeper   2018-12-19 01:46:19 +08:00
    楼主闲的蛋疼, 你写过什么开源项目? 没有的话别 BB, 有的话先从你自己做起.
    BBge
        180
    BBge   2018-12-19 03:32:36 +08:00 via Android
    中文命名想想就可怕
    xuanwu
        181
    xuanwu   2018-12-19 05:37:12 +08:00
    @msg7086
    > 开源软件的问题主要在于开源软件的规模通常已经比较大了
    我们首先做的是在编程短教程中使用中文命名的示例代码. 这对于新手来说会更易懂. 这样也可以尽早让他们接触中文命名.

    @Sapp
    > 实际开发实际上并不需要你会英语,比如 function
    这里讨论的是中文命名, 不是汉化关键词. 就像你之后说的例子"任务数量统计".

    @codermagefox
    之前做了个命名翻译的 vscode 插件, 和你的"变量命名"有些类似, 不过是用了本地词典, 而不是在线翻译 API, 因此没有次数限制

    @zander1024
    就国内项目来说, 牵涉到国外开发者合作的是少数.

    @zkeeper
    "中文编程"知乎专栏中文章涉及项目大多是中文命名的开源项目.
    presoul
        182
    presoul   2018-12-19 07:29:19 +08:00 via Android
    您这是个什么 jb 问题 看了只想喷粪。
    lardud
        183
    lardud   2018-12-19 07:40:59 +08:00 via Android
    sb
    haiyang1992
        184
    haiyang1992   2018-12-19 08:15:36 +08:00 via Android
    楼主想搞就搞呗,只不过肯定会被市场和社会发展的自然规律淘汰就是了。。
    zander1024
        185
    zander1024   2018-12-19 11:06:21 +08:00
    @xuanwu
    没有数据根据开口就来? vue 如果开始用中文命名 api,还能走到今天? 你很自然的忽略了汉英语入门难度。 中国 9 年义务教育普及这么久了,还有多少一点英文都不懂的人群? 还是说你打算让 40 岁的普通工人也来参与写代码? 都是一些主观私货就不用说服别人了。
    reus
        186
    reus   2018-12-19 11:34:06 +08:00
    民族主义的恶臭
    envylee
        187
    envylee   2018-12-19 16:22:24 +08:00
    宁要社¥主义的草,不要资$主义的苗;社¥主义就是好来就是好,就是好来就是好!(/狗头
    xuanwu
        188
    xuanwu   2018-12-19 19:31:00 +08:00
    @murmur 在国际开源社区, 我看到的情况是, 多数国人主创的开源项目, 参与贡献的还是国人. 在大多数开源项目都已有类似功能的英文开源项目的现状下, 大多数国外开发者肯定首先选择的是那些代码可读性更好也更成熟的项目. 说到底, 在代码质量没有等级区别的情况下, 还是代码可读性决定了开发者更偏好哪个项目, 而国人的代码在国外开发者看来, 可读性很难超过母语是英文的开发者编写的代码.
    xuanwu
        189
    xuanwu   2018-12-19 19:46:12 +08:00
    @zander1024 vue 即使现在开始添加中文 API, 应该会在国内有更多用户. 即使在开源代码中使用中文命名, 也不妨碍提供英文 API 供国外用户使用.

    > 还有多少一点英文都不懂的人群
    你知道还有 6 亿国人没上网吗? 回头我倒是可以用英文发篇类似帖子, 看看 v2 反对中文命名的各位的英文水平如何.
    dalieba
        190
    dalieba   2018-12-19 21:59:22 +08:00 via Android
    使用中文拼音命名算不算?
    24bit
        191
    24bit   2018-12-19 22:07:51 +08:00
    public class HelloWorld {
    public static void main(String[] args) {
    for (int 索引 = 0; 索引 < 10; +=索引) {
    }
    }
    }
    xuanwu
        192
    xuanwu   2018-12-20 12:06:19 +08:00
    @dalieba 如果你发帖子都用拼音而不用中文, 那就算

    @24bit https://www.v2ex.com/t/518915#reply82 整理了经测试支持中文命名的编程语言
    xuanwu
        193
    xuanwu   2018-12-22 07:58:22 +08:00
    @UIXX 对母语对代码可读性的分析有兴趣的话, 可以看看日本的论文( 20 楼):
    日本 2017 年的论文"ローマ字入力時の日本語識別子入力補完プラグインの 開発"就专门开发了辅助插件以改进 IDE 对输入日语命名的支持. 它的摘要很有参考意义, 机翻如下:

    "在这项研究中,我们开发了一个插件,可以在输入日语标识符时减轻程序员的负担。近年来软件开发项目的复杂性增加了维护软件的时间成本,并且提高源代码的可读性以降低成本是很重要的。有几个报告说,在日语源代码中编写变量和函数的标识符名称是有用的,这是提高源代码可读性的一种方法。然而,当以日语输入标识符时,存在字符转换麻烦且输入补充无效的问题,并且发生对编程器的输入负担。在这项研究中,我们开发了一个插件,通过使用日语标识符的增量搜索甚至使用罗马字符输入实现输入完成,使用 Migemo 的两种方法使用日语增量搜索工具和使用形态分析的方法尝试解决问题。"
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2048 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 40ms · UTC 02:50 · PVG 10:50 · LAX 18:50 · JFK 21:50
    ♥ Do have faith in what you're doing.