看了首页几个帖子有感,我也写点东西
先说观点:我支持“中文编程”
事实上,中文编程是一个模糊的概念,什么是中文编程?
如果我说 2 甚至 1 也是中文编程也不过分吧?因为中文是我们生活的一部分,编程也是是人民群众生产生活的一部分,我们的语言、我们的解释、我们的交流的载体就是中文,无论如何都是绕不开的。全部使用英文是脱裤子放屁
我定义的中文编程是 3,或者说,实际是:“一定程度上合理采用中文的编程方式”。我认为在工程上,采用这种方式或许能够提高我们的工作效率、降低我们的沟通成本
Phil Karlton: There are only two hard things in Computer Science: cache invalidation and naming things.
众所周知,取名字是很难的。我在 V 站看到无数次:老婆生了,是男(女)娃,求名字。
程序设计也是如此,我们写完程序会花很多时间读自己的代码,好的名字可以降低我们读代码的思考成本,使我们更专注于设计。因为我们生活在中国,写的程序大多也是给中国人用的,所以很多“实体”用中文描述可能是更合理的,我们的程序员中文才是母语,同样取名字,用中文很大几率能够取出比英语更合适、更贴切、更易懂的名字,甚至他的同事一看就知道他想表达什么。
类似如下的代码,传统的写法
// 下订单
var params = {
customer: '张三',
product: '00010001'
}
var order = placeOrder(params)
使用中文编程
var params = {
客户: '张三',
商品: '00010001'
}
var 订单 = 下订单(params)
如果使用中文编程,在有的时候,我们就可以把一些啰嗦注释省略掉了
如果我们做一个封神题材游戏,里面有很多神话人物,我们需要为每个神仙取个名字吗?或者是一个三国题材的游戏,武将的名字怎么取?
我认为最好的方法是:该叫啥叫啥
var 雷震子 = {
名字: '雷震子',
武器: ['雷公凿'],
阵营: '天庭'
}
var 哪吒 = {
名字: '哪吒',
技能: ['混天绫', '火尖枪'],
阵营: '天庭'
}
我实在不知道怎么翻译哪吒或者混天绫,只能使用拼音——拼音还不如汉字呢
答案很简单,因为编程需要英文。
我们的程序的基础是英语构建的。
做程序员离不开英语,当我们遇到问题(我们肯定会遇到问题),最后还是要解决这些棘手的“英文”问题。
试图依靠一层薄薄的封装彻底解决英文的问题(比如易语言)是天方夜谭,也是一种幼稚——除非他能把计算机科学的大厦的基石换掉,否则英文会渗透出来
在人民群众几十年的程序设计事件中,我们总结出很多有用的方法和设计,有些名字已经约定俗称,采用原名子是最合理也是最经济的
while
,for
,switch
,if
Proxy
Delegate
Factory
使用中文不是一刀切,因为使用中文不是目的,是手段,程序员的目的是高效地写出程序,满足用户需求。只是在使用中文更加合适的场景使用中文,在使用传统的英文更合适的场景,应当使用英文
绝大多数语言无痛满足符合定义 3 的中文编程,包括 Java、C++、JavaScript 等很流行的语言,只要想就可以做,而不是像有的人想的一刀切的方案,比如易语言
在实践中,我们可以慢慢引入中文,比如一些枚举、常量或者很难取英文名的变量
中文编程只是手段,我们身边有很多编程工具和理论。他们很大程度上都是为了高效地写出健壮、可维护性好、满足用户需求的程序
中文编程也可以理解为一种方法理论,就像《代码整洁之道》里面的各种方法,中文编程在有的场景可以让代码更加清晰整洁,更好维护。
如果是这样,在工程上,何乐而不为呢?
1
boris1993 2018-11-02 20:54:03 +08:00 via Android
下订单的例子个人不认同,这不是注释的锅,这是写代码的人英语不行的锅
var order = { customer: '张三', product: '00010001' } var isSuccessful = placeOrder(order) 稍微有点英语常识的人都可以看出,order 是订单不是命令不是顺序,placeOrder 就是下订单没啥好说的,isSuccessful 是 placeOrder 成功与否的状态,换成中文没有任何意义 同时我是坚定不支持用中文关键字和 /或中文命名的这种中文编程的。原因就是我认为没必要。 关键字就那么几个,还是英语高频词,从小学到大学上了这么多年英语课,愣是能不认识这几个字? 命名的话,通用词汇直接上翻译 /词典 /问别人,专业词汇就上专业词典,大不了写一行注释,能费多大事 至于英语,您也说了,编程的世界是由英语构成的,英文社区就是比中文社区内容丰富。英语这东西,迟早要学好用熟,跑不掉的。既然如此,继续拿英文写程序不就得了,何必再搞一套纯中文的?为了文化自信? |
2
chanin 2018-11-02 20:56:50 +08:00
中国这个神奇的民族,什么东西都能弄变味道,论基础教育的缺失性!
|
4
xzc19970719 2018-11-02 21:02:16 +08:00 via Android 1
我也是个自学的初学者。。老被人笑用中文变量名🤣总有人说辣眼睛 可是我自己写的学习用 自己看着舒服不就行了嘛 还可以少写注释。。如果以后工作了 团队规定怎么写 我就怎么写 🤣只不过英语不太好 还是得多靠谷歌翻译了
|
5
helionzzz 2018-11-02 21:03:06 +08:00
这种所谓的汉化编程除了方便不会英语的初级开发者之外没有任何作用
|
6
boris1993 2018-11-02 21:24:14 +08:00 via Android
@xzc19970719 #4 建议尽快养成英文的习惯。我司有个内部应用,变量和表名列名全是拼音首字母简写,如果不给你写注释,你知道 gjjjs 是啥东西吗?然而,他们确实好多地方,就是没有注释,就是口口相传和大胆猜。
|
8
woodensail 2018-11-02 21:29:57 +08:00 via Android
中文编程可以,但是你只能用不超过 100 个字符,要不键盘放不下。
|
9
trait 2018-11-02 21:31:21 +08:00 via iPhone
1. 字符替换不是中文编程,non-ascii identifier 现代语言基本都支持
2. 讨论这种问题之前先去读几本 PL 书,中文编程在于汉语背后这套语言,跟汉字无关 |
10
carlclone 2018-11-02 22:30:39 +08:00
你以为注释只是用来理解这一小段代码吗....注释可以用来分隔过长的一段逻辑(历史遗留常见现象),还可以打锚点用
|
11
innoink 2018-11-02 22:33:25 +08:00 via Android
实现伟大复兴之后,整个世界都是中文的
|
12
xuanwu 2019-05-07 11:09:55 +08:00
”使用中文不是一刀切,因为使用中文不是目的,是手段,程序员的目的是高效地写出程序,满足用户需求。只是在使用中文更加合适的场景使用中文,在使用传统的英文更合适的场景,应当使用英文“
-- 很赞同!欢迎到专栏或者 github 组(或其他渠道)一同探讨中文命名的实践。 |
13
testeststs 2019-05-26 07:43:42 +08:00
|