首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
snake8090
V2EX  ›  问与答

为什么一提到编程语言中文化,就有那么多人反对呢?

  •  
  •   snake8090 · 246 天前 · 6196 次点击
    这是一个创建于 246 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚接触 python 的小白,有点疑惑
    为什么一提到中文编程,就有那么多人反对?
    比如:用中文来定义变量,类,不是更容易理解吗?
    毕竟我们的母语是中文,看到的第一事件就能明白是什么意思,如果是一个英文单词,还要想一下,我当初定义这个是干嘛用的?

    例如下面这样,不是更好理解吗?


    import pygame
    from 飞机精灵 import *

    pygame.init()

    主窗口 = pygame.display.set_mode((512, 768))

    背景 = pygame.image.load("./图片包 /草地背景.png")
    英雄 = pygame.image.load("./图片包 /玩家飞机 1.png")

    主窗口.blit(背景, (0, 0))
    主窗口.blit(英雄, (205, 600))

    pygame.display.update()

    帧率 = pygame.time.Clock()

    玩家位置 = pygame.Rect(205, 600, 102, 126)


    敌机 1 = 飞机精灵("./图片包 /敌机.png")
    敌机 2 = 飞机精灵("./图片包 /敌机.png", 3)

    敌机组 = pygame.sprite.Group(敌机 1, 敌机 2)

    while True:
    # 设置游戏刷新率
    帧率.tick(60)

    for event in pygame.event.get():

    if event.type == pygame.QUIT:
    print("退出游戏......")

    pygame.quit()
    # exit()直接终止当前正在执行的程序
    exit()


    玩家位置.y -= 3


    if 玩家位置.y < -126:
    玩家位置.y = 768


    主窗口.blit(背景, (0, 0))
    主窗口.blit(英雄, 玩家位置)



    敌机组.update()

    敌机组.draw(主窗口)


    pygame.display.update()


    pygame.quit()



    晚上闲着睡不着,随便问问,如果有什么认识不到位的地方,请多多指教!
    133 回复  |  直到 2019-07-06 04:00:00 +08:00
    1  2  
    bwangel
        101
    bwangel   245 天前
    母语是英文的人,学习编程的优势不仅仅在于语法。而在于大部分优秀编程资料的创造语言(后续被翻译成其他语言)
    都是英文。

    目前( 2019 年 05 月 26 日) TIOBE 上排名前五的语言是 Java,C,C++,Python,Visual Basic .Net 。Python,Java,.Net 的官方网站都是英文,C/C++的一些著名书籍(《 C Programming Language 》,《 C++ Primer 》等)也都是用英文书写的。Stack Overflow 是英文社区,Hacker News 也是英文社区。

    形成这样的现状,我认为有以下的原因

    1. 以美国为代表的英语系国家,在计算机科学领域的研发实力和人才储备情况,领先于其他非英语系的国家。
    2. 由于历史原因(殖民地)和现实原因(西方国家强大的国家实力和文化输出能力),英语目前和未来很长一段时间内都会是世界语言。

    所以,我认为目前推广中文编程,前景实在是有限。而且对于一个程序员来说,我也非常建议他熟悉英语,不会阅读英语,就无法接触到很多优秀的编程资料,不会写英语,就无法参与到一些著名软件的开发。

    作为一名中国人,我也很希望可以用中文开发出世界知名的软件,也希望全世界最优秀的一批计算机科学家,编程人员他们都是使用中文交流,不过这个路还很长,还需要我们这些中国的开发者不断努力。
    bwangel
        102
    bwangel   245 天前
    刚刚有一个回复发不上来?
    tvallday
        103
    tvallday   245 天前
    这类问题就跟有个人大街上问大家为什么自己不能当国家主席一样滑稽。
    jc89898
        104
    jc89898   245 天前
    编程重要的是语法吗?就算你只用数字编程又有什么用呢?
    fintan
        105
    fintan   245 天前 via iPhone
    我不反对这个,只是觉得输符号时还需要切输入法比较麻烦
    mumbler
        106
    mumbler   245 天前
    中文变量大多数语言都支持,你喜欢用就用吧,但那 30 多个关键字如果全部改用中文,没有任何好处

    PS:连 30 多个英文关键词都觉得有压力的人,数学,逻辑能力也很值得怀疑,我不相信能写出什么好代码
    qunqun
        107
    qunqun   245 天前 via Android
    @wu67 不用上升到文化自信吧,本质这是个自然选择的问题,中英文间很多东西都是没办法一一翻译,导致阅读译作会有些理解偏差。不仅编程文档,很多文学作品也会有推荐原作的现象,只是为了更深刻的理解作品,如果中文真的翻译的很好的话自然可以直接阅读中文文档。
    sobigfish
        108
    sobigfish   245 天前
    自己的项目想用什么用什么 没人管的着, 多人合作的就要考虑大家的体验了
    Wobuguan
        109
    Wobuguan   245 天前 via Android
    可以有,但是和很多“国产“一样,不规范自己用。从技术上讲,效率太慢了。
    lincanbin
        110
    lincanbin   245 天前 via Android
    在全球整个编程环境都是英语的情况下搞这个,等于是建了堵墙把自己围起来了。
    szzhiyang
        111
    szzhiyang   245 天前
    对于中文编程,我有以下几点看法:

    ……
    dingyaguang117
        112
    dingyaguang117   245 天前
    小明在公司加班到 12 点,终于解决了一个 bug:

    "," 写成了 ","
    watch
        113
    watch   245 天前 via iPhone
    然鹅中文的学习难度是英文的 n 倍
    snake8090
        114
    snake8090   245 天前
    @watch 一份中文的帮助文档和英文的帮助文档,哪个更好理解?
    secondwtq
        115
    secondwtq   245 天前   ♥ 1
    @SuperMild 首先我上一个回复说了,所谓国际化什么都是“小问题”

    况且在目前传统(非中文编程)的开发实践中,早做国际化(包括从底层就使用 Unicode 编码)确实是比较好的做法。就不说一个全部用中文命名的项目国际化起来肯定要比只是展示层有几个中文的要加倍的工作量了

    不过再强调一遍,国际化依然是“小问题”

    为什么大家接受小说、技术书籍和博客用中文写,却普遍不接受所谓中文编程?这个有多方面的原因。楼主问的基本也是这个问题

    首先,小说,书籍和博客都是自然语言,计算机程序是机器语言,我对自然语言的语言学了解不多,但是依然感觉这两个是不能直接类比的。所以中文注释问题不大(因为注释依然是自然语言的范畴),“中文编程”很不成熟。把自然语言直接应用到机器语言的例子不是没有(如 AppleScript 等),但是就没见过成功的(不限于哪种自然语言),所以现在机器语言都是只用很少的自然语言,你把一段程序按照自然语言的方式解释基本上只会有一个狗屁不通的结果。

    这其实已经说明拿自然语言生搬硬套机器语言理论上是行不通的,或者就算能行( Wolfram Alpha 或许算半个),也不是简单“生搬硬套”能解决的。而这其实就是对中文编程感兴趣的群体中很大一部分人的想法。不幸的是,这背后隐含的思维往往是:“哎呀编程好难啊,都是英文的锅,如果都是中文的会不会简单一些”,我并不指望这种人能学出什么东西来。所以提中文编程的人在社区中的固有印象基本就是“逃避困难,目光短浅,头脑简单的民族主义者”,可以理解,社区一般是不欢迎这种人的

    类似的问题其实不只出现在中文编程这个话题上,举例如 UNIX 用户攻击 MSFT 用户被微软洗脑(隐含背景:很多用 VS 的人并不是不会喜欢 UNIX,而是 VS 和 MSFT 名气大,从小就接触,用惯了),软粉反过来攻击 UNIX 用户无脑黑(背景:MSFT 的一些商业策略导致开源社区对其产品存在本能的反感),社区集体黑 PHP (背景:很多 PHP 用户听说 PHP 做东西又简单又快就一直用一把梭的方式使用 PHP,从未接触过其他技术,也从未听说过软件工程之类实践,无脑吹 PHP ),社区集体喷果粉(背景:很多果粉确实是逢苹果就吹,被彻底洗脑的 fanboy ),我就不把话题往最近被美帝针对的某著名通讯公司上引了 ...

    我后面说什么“创新”的意思在于,如果一个中文编程圈的人恰好做出了一些像样的成果,将会对改变这种“反感”很有帮助。你看,很多 UNIX 用户写了很好的博客、项目和论文,MSFT 也有很优秀的开源项目,PHP 在不断改进,也写了很多牛逼的项目,很多果粉不无脑,还写了很多好用的 App。而中文编程圈呢,除了这些头脑简单的人,有人做出像样的成果么?

    一个都没有!
    一个都没有!!

    然后还在这里抱怨说被社区针对。就未曾想过自己在 UNIX、MSFT、PHP、Apple 的粉丝这些引战群体中恰好是最弱鸡的,也恰好是被针对得最惨的,这难道仅仅是巧合么

    我为什么对这些“创新”感兴趣呢?这么说吧,如果只是关键字和标识符用中文,我觉得只配叫“中文命名”,因为只是换了个皮。可是就算是换皮,有人发过什么“我在项目中用了 3 个月的中文命名,分享下使用心得”之类的帖子么?有人提出过“中文命名四项基本原则”“邯郸命名法”(类比 Hungarian notation )“汉武帝命名格式”(类比 Camel case )之类的理论么?

    这还只是“中文命名”,我理想中的“中文编程”不止于此。可以类比音乐语言,语言不通碍不着听英语的摇滚,日语的 ACG,拉丁语的歌剧,甚至歌手光哼哼哈嘿听众也能消费。因为除去表面的歌词,听众还可以感受背后的音乐(换到编程语言这里是背后的逻辑和数学语言)。所以我说一个编程语言用什么形式的语法包起来重要性其实不大(这也是我上个回复引用的 Marisa 的文章的观点之一)。什么时候这个重要了呢?比如说我把一本英语写的技术书翻成中文(或者日语歌改编成中文),你把东西放在 Google 翻译里面过一下拿出来就卖,是会被骂的。我上面说的“中文命名”,其实就只做了 Google 翻译非常表面的工作。

    我觉得社区会更希望看到中文这种形式如何更深地影响编程,而不是只翻译一下。也就是更有价值的“创新”。比如西方古典音乐分各种大调小调,阿拉伯地区、中国、日本的音乐又有不同的调性,听起来感觉是完全不一样的。而标榜中文的编程方法,只是做了个 Google 翻译,内核还是原来那一套,我认为做的是远远不够的,这个比如可以类比一下法语的计数方式对法国人的数学思维有什么影响,汉语数字只有一个音节,对中国人的算数又产生什么影响,现在我们要用中文编程,那么除了“对不懂英文的人更友好”之外,有哪些地方可以利用中文自身的特色加以优化的。我希望中文编程圈能够更多地 show us the code,以后有人问中文编程相关的问题,大家第一反应不是反感,而是“中文编程啊,可以去看看 LittleHarsh 大神发的论文 /写的书”

    可以打个比方,假设 SQL (很流行,恰好也很像自然语言)从一开始设计出来就是 C/Java 的语法(而不是现在这样类自然语言的),其实并不会妨碍它现在的广泛使用。人们用 SQL 是因为它背后的关系代数模型(画重点:关键创新)能方便地解决问题,同时恰好是行业标准。这两条都和它类自然语言的语法挨不着边(就不说很多逻辑已经超出这种语法方便表达的范畴了),你去问个有脑子的程序员,人家可能不会在意这个,甚至会觉得设计成类 Java 语法会更好,我不认为一个经验丰富的程序员会跟你说“是的,我觉得应该更像英文,比如 'How many people have stared the project called TensorFlow in GitHub?',天啊,MySQL 不懂人话真的是太悲哀了”

    中国这些年也是类似的道理,叫唤得再欢你还是一个吃别人援助 /用别人 IP 的穷国,只有拿出实打实的经济数据和发展成果,人家才会开始把你当回事。
    snake8090
        116
    snake8090   245 天前   ♥ 1
    只是好奇为什么那么多人反对?

    如果不喜欢中文编程这个话题直接无视就可以了!
    但是很多人一看到这个话题像是被电一样马上就是开喷,实在无法理解!
    对不同意见就是那么无法容忍吗?
    winterbells
        117
    winterbells   245 天前 via Android
    @snake8090 所以只能赞美?
    beimenjun
        118
    beimenjun   245 天前   ♥ 1
    @snake8090

    提倡理性讨论没问题,但如果万一你对那些对你的想法持有负面意见的评论就是“开喷”,可能要从自己身上找原因了,因为你和别人只是同类型的“无法容忍不同意见”而已。

    另外,某种程度上,如果觉得一个主题“很蠢”就绕开,往往会让一些真的很蠢的主题创建者陷入“我这个问题不蠢”的假象中。
    Cu635
        119
    Cu635   245 天前
    因为英文的最小单元是字母,而英文只有 26 个字母,大小写加数字也只有 62 个,再加上一些其它能够使用的符号也不到 100,然后单词之间还天然有空格作为分隔符。这样,编译器前端再进行词法分析的时候很好办。
      但是中文呢?常用字加上次常用字就是 3500 个了,然后由于历史原因又有 什么 gb2312、urf8、gbk 这些混乱的编码问题,另外更重要的就是,中文单词之间没有天然的分隔符,你让词法分析怎么搞?
      这么一来,中文作为编程语言实在是很差劲的东西。
    nguoidiqua
        120
    nguoidiqua   245 天前
    程序语言本身是一种计算符号,你用汉字这种更复杂具有更多意思的表意符号去替代简单的字母符号,结果只会更复杂不会更简单。

    变量名方面,不管你用母语也好外语也好,只要变量一多,命名都是难事,这个时候你如果在密密麻麻的一堆汉字中找你想要的变量就会发现一个事实,分辨汉字的视觉压力要大很多。而且,汉字在命名变量方面也是不如字母方便的,一个小写,二个缩写。你只要代码稍微写得多点,你就会发现头疼得很。这就是为什么汉字编程几十年,写来写去百十行的原因……

    对于说什么母语更习惯,拼音是你母语自带的?阿拉伯数字是你母语自带的?你习惯不习惯?比如现在产品型号大多是数字或者数字加字母什么的,改成天地人甲乙丙丁一二三四五你就更习惯了?我估计你思维里会下意识的把它们转换成阿拉伯数字。

    举个例子,看看这是什么意思——并盈不足为法,不足子乘盈母,盈子乘不足母,并以为实。你第一时间就明白什么意思了吗?

    对比下这个公式——(15x16+16x15)/(16+15)= 15 (15/31),这个我想只要不是弱智,多少看得懂吧。

    是不是用中文计算减少了你的思考负担?对不起,用中文的话,实际上是增加了一个汉字到字符的转换过程,人的脑子总会不由自主的把看到的东西先转化成更简单的东西,然后才去思考。

    当然,如果你连基本的英语都不会,那学编程自然会多些障碍,这不是编程语言导致的,是编程工具所导致的,你需要的应该是本地化支持良好的工具,而不是什么中文编程。

    其实这也不是什么问题,你的主要问题是不肯下功夫好好学东西,读书的时候不好好学英语,现在学编程了也不好好学,遇到问题就开始想——都是英文的错,如果是中文我就好学了。这样的心态,基本上学不好编程。

    然而那些错误提示,英语母语的初学者也是看不懂的。他们也得遇到多了,查得多了,才自己学会看。如果是母语就能轻松看懂,那就不会有什么 stackoverflow 之类问答网站了,国外编程社区一样很多英语母语者贴出错误提示问别人什么意思。

    话说回来,以你现在的阶段,跑出来谈这种问题,真的毫无意义,你都没什么编程实践,告诉你原因你又看得懂吗?这可是中文回复哦。

    说到这,你可能又以为我反对中文编程了,对不起,我从来没反对过,这个你喜欢这么写就这么写好了。不过要是想当然就说什么用中文更容易理解,那是没什么道理的。用中文不会更容易理解,因为代码是否容易理解取决于逻辑的复杂程度,跟用什么语言命名变量基本没有关系。事实上反而会增加一些额外的麻烦,不过喜欢的话,随便你自己,为了自己的喜好,多麻烦一点不算什么。

    我其实挺支持大家搞中文编程的,有些东西不碰下钉子不会了解。
    mooncakejs
        121
    mooncakejs   245 天前 via iPhone
    目前 只有 enum 我支持中文化
    DOLLOR
        122
    DOLLOR   245 天前
    中文编程都喊了几十年了,但是至今并没有什么影响力重大的东西出来,都停留在吸引眼球的噱头阶段。
    我也不想见到又一出编程语言版的“汉芯事件”。
    nguoidiqua
        123
    nguoidiqua   245 天前   ♥ 1
    @snake8090 至于叫别人无视,别人一直都是无视的,是你自己跳出来问别人。又没人说不准你中文编程,你自己跳出来问别人为什么反对中文编程,别人当然说下原因了。

    难道你发这个帖子只是想听见大家对你表示赞同吗?

    那你说什么不足之处多多指教是不是太虚伪了?
    chaplinj
        124
    chaplinj   245 天前
    中文过于复杂吧,而且中文的编程资料太少,基本都是外国大环境的那一套,所以中文 编程我也觉得无法理解,太难了,给自己增加负担,如果再设计一门中文的编程语言,光是编译器怎么来写,我都觉得头痛,总结来说就是中文过于复杂了,国际环境不允许
    pricesong
        125
    pricesong   245 天前
    @DOLLOR 听说写辅助的很多用易语言
    berumotto
        126
    berumotto   245 天前
    @nvkou 看了你这个楼主默默放弃了中文编程 (逃
    Raisu
        127
    Raisu   244 天前
    受不了这中英结合的代码,楼主要中文化麻烦给个全中文的实例看看
    zsc8917zsc
        128
    zsc8917zsc   244 天前
    楼主可以去使用易语言~~~
    mohoumk2
        129
    mohoumk2   244 天前 via Android
    这是汉化,不是中文编程。
    zjyl1994
        130
    zjyl1994   244 天前
    我觉得完全可以啊,你可以尝试用中文编程开发一款功能完整的开源软件,把中文代码贡献出来让我们感受下中文编程的魅力所在。
    不要光写个简单的示例代码就来说服我们。
    w2cny
        131
    w2cny   244 天前 via Android
    我感觉还是来回切换太麻烦了吧
    xuanwu
        132
    xuanwu   205 天前
    迟到了。还是声援一把。
    野火烧不尽。

    正如楼上一位所言,所有常用英文编程语言都早就支持非英文命名标识符这一事实,已经证明了母语命名这一需求的切实存在(说这只是为了能 emoji 命名的要么是把抖机灵当真要么是揣着明白装糊涂)。

    实用第一,适合自己的就是好的。
    尤其是没有公司约束的业余项目里,想怎么写代码难道还要看键盘侠的脸色?
    xuanwu
        133
    xuanwu   205 天前
    对了,欢迎加群(见个人信息)
    群里有同样用中文命名的 Python 开发者。
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1581 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 01:29 · PVG 09:29 · LAX 17:29 · JFK 20:29
    ♥ Do have faith in what you're doing.