首页 > 互联资讯 > 建站教程  > 

为什么大家都很否定中文编程?

或者是用中文关键字编程。关注者1,511被浏览2,168,219关注问题​写回答​邀请回答​好问题 40​100 条评论​分享​html{-webkit-scroll-padding-top:calc(52px + 2em);-moz-scroll-padding-top:calc(52px + 2em);-ms-scroll-padding-top:calc(52px + 2em);scroll-padding-top:calc(52px + 2em);-webkit-scroll-padding-bottom:56px;-moz-scroll-padding-bottom:56px;-ms-scroll-padding-bottom:56px;scroll-padding-bottom:56px;}.css-9hu0cu{width:1000px;}.css-124jo1g{box-sizing:border-box;margin:0;min-width:0;background-color:#F6F6F6;margin-top:10px;margin-left:auto;margin-right:auto;width:1000px;}登录后你可以不限量看优质回答私信答主深度交流精彩内容一键收藏登录查看全部 1,131 个回答.css-icip60{border-radius:2px;}.css-1oqflzh{box-sizing:border-box;margin:0;min-width:0;max-width:100%;height:auto;background-color:#FFFFFF;width:38px;height:38px;border-radius:2px;}麦田里的程序员麦田里的程序员.css-1cd9gw4{margin-left:.3em;}.css-n99yhz{box-sizing:border-box;margin:0;min-width:0;color:#175199;display:inline-block;margin-left:.3em;}.css-18biwo{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}​.css-1ifz0go{overflow:visible!important;}.css-14ur8a8.AuthorInfo-badgeText{display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;width:490px;white-space:unset;}极狐 GitLab DevOps 架构师.css-upmq18{min-width:74px;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}​ 关注.css-124ezq8{position:absolute;bottom:0;right:0;width:1px;height:1px;}.css-1k5dpte{box-sizing:border-box;margin:0;min-width:0;color:#8590A6;font-size:14px;margin-top:16px;}1,647 人赞同了该回答

因为很多人低估了英文的难度,觉得会写 if else(逻辑思维好)就能编程。

实际 sex 和 gender 分不清,设计数据库字段时查半天词典,降低了开发效率。

而且查的单词往往是错的,同事看不懂,只好配上中文注释或用拼音……

Phil Karlton (菲儿·卡尔顿)曾说过:在计算机科学中只有两件困难的事情——缓存失效和命名规范。

调查报告也显示:49% 的程序员认为「起名」是最难的工作。

Data Source: Quora/Ubuntu Forums

「中文关键字」已经有很多人回答了,if else 这几个单词难度不高,不翻译也问题不大,而且可以直接使用现有编程语言,所以本文只探讨「中文标识符」——数据库字段、类名、函数名、变量名、URL 等。

认为英文编程没问题的同学,请听题:

1、产品经理要开发「红包」功能,需要程序员设计数据库字段,请问用哪个英文词组?

A. 支付宝:Lucky Money B. 微信:Red Packet

哪个是对的?

这道题超纲了,微信最后找了个英语母语的产品经理,才解决了:

2、用户的「性别」用哪个英文单词?

A. sex B. gender

为什么英美身份证件用 sex,社交网站用 gender?

《谍影重重》杰森·伯恩 的证件

3、用户的「积分」用哪个英文单词?

很多人查词典或者用 CODELF,查到了 integral ……我在老项目里见过,错了十万八千里!

正确的做法是:整句翻译,然后图片搜索英文句子,看看国外是否有这种宣传海报。

4、用户消费时「获得」积分,此函数名用什么英文合适?

A. calculate B. get C. earn D. reward E. redeem

5、英语不好,全靠搜索国外资料很多时候也没用,比如微信「拍一拍」怎么翻译?

A. Take a pat B. Take a shot C. flap D. nudge E. tickle

6、如果发现之前的英文术语用错了(比如 Lucky Money 和 Red Packet 必然有一个是错的),按照「破窗户效应」,应该清理老代码,而不是放任形成「屎山」,那么你觉得哪些地方能改的动?

A. Android/iOS 包名 B. 函数名 C. 变量名 D. 数据库字段 E. User Agent F. 开放 API E. 私有 API《Broken Windows(破窗户效应)》- 1982

在极狐「江狐会」技术交流《Code Review》时,大家进行了投票,可以看出:数据库字段一旦错了,很难改,从而导致代码中必须迁就错误,逐渐形成屎山。

实际微信的做法:User Agent 不改,保持「MicroMessenger」,而不是很多人以为的 WeChat。

总结

如果有人答对了上面的所有单词,那是英语母语水平了,考虑一下:中国有多少程序员能达到?

很显然,包括 BAT 在内的绝大多数程序员都达不到,过了四六级也没用。

那如何提高整个中国的代码质量,减少查词典的时间,让程序员工作更轻松?

全部考托福雅思,然后才允许编程?很显然不现实。

相比之下,「中文编程」更可行,只是缺少一个完善的解决方案。

很多人以为的中文编程:

如果……否则……

人民群众需要的中文编程:

create table ( id 积分 性别 ) if (性别 == xx)…… func 获得积分()

好像能实现,但 URL 沿用汉字就导致复制时被转义,难以传播:

https://example.com/积分商城?分类=手机&系统无广告=是

总之,「中文标识符编程」能解决查单词的大问题,但需要一个完善的解决方案。

参考资料

Programmers' hardest tasks : ProgrammerHumor - reddit.com

为什么微信把“拍一拍”的翻译改成 tickle?有点污啊~

微信的歪果仁产品经理说:“红包”这个词太难翻译了

程序命名的原则与重构

支付宝 Android App 包名为什么是 com.eg.android.AlipayGphone?

为什么大家都很否定中文编程?由讯客互联建站教程栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“为什么大家都很否定中文编程?