看了首页几个帖子有感,我也写点东西
先说观点:我支持“中文编程”
事实上,中文编程是一个模糊的概念,什么是中文编程?
如果我说 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 等很流行的语言,只要想就可以做,而不是像有的人想的一刀切的方案,比如易语言
在实践中,我们可以慢慢引入中文,比如一些枚举、常量或者很难取英文名的变量
中文编程只是手段,我们身边有很多编程工具和理论。他们很大程度上都是为了高效地写出健壮、可维护性好、满足用户需求的程序
中文编程也可以理解为一种方法理论,就像《代码整洁之道》里面的各种方法,中文编程在有的场景可以让代码更加清晰整洁,更好维护。
如果是这样,在工程上,何乐而不为呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.