我反对中文编程!

Posted 码农翻身

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我反对中文编程!相关的知识,希望对你有一定的参考价值。

什么是中文编程?

我打开IDE,随手写了一段代码:

public class 账户服务
  public void 转账(账户 发起账户, 账户 接收账户, int 转账金额)
    事务管理器 事务总管 = new 事务管理器();
    try
      事务总管.开始事务();
      发起账户.扣除(转账金额);
      接收账户.增加(转账金额);
      事务总管.提交事务();
    catch (事务异常 异常)
      事务总管.回滚事务();
    
  

大家先别嘲笑我,这可是正儿八经的Java代码,是可以编译通过,可以执行的!

如果你耐下心来,仔细看看这段代码,是不是还有点儿小可爱?

同理,你还可以用Python,javascript等其他语言写出类似的代码,代码中除了几个关键字(public ,class,new)之外,全部变成中文了!

如果对语言稍加改动,这些关键字也可以变成中文,完全中文编程。

上面的例子太简单,不过瘾,再看一个从Apache HttpClient“汉化”过来的代码:

可关闭的Http客户端 http客户端 = Http客户端.缺省创建();


HttpGet httpGet = new HttpGet("http://www.baidu.com/");


可关闭的Http响应 响应 = http客户端.执行(httpGet);


if(响应.获取状态行().获取状态码()==200)
    Http实体 entity = 响应.获取实体();
    字符串 响应内容 = 实体工具.转化为字符串(实体, "utf-8");
    System.out.println(响应内容);

响应.关闭();
http客户端.关闭();

但这是中文编程吗?

不是,我是在用Java编程。

因为它的语法、编程习惯、最佳实践都是Java。

可能有些小伙伴已经注意到了上面代码中的一些类(class)的名称。

可关闭的Http客户端 (CloseableHttpClient)

Http实体(HttpEntity)

可关闭的Http响应(CloseableHttpResponse)

HttpGet (这个我实在不知道用中文改怎么翻译了,就保留了)

这些类是怎么来的?它背后代表的含义和中文、英文、法文、德文、俄文.....有关系吗?

答案很明显:是对HTTP这个领域的概念抽象而来的,和中英法德文没有任何关系,这才是真正的编程思想。

即使你用了所谓的中文编程语言,如果没有掌握数据结构和算法,不会做设计,不会做抽象,那只能写点儿简单的程序,稍微复杂一点儿就难以应对,写出来的代码必定一锅粥。

中文也就是降低了一点点阅读代码的难度而已,编程的本质没有变化。

可能有人说,你这就不是中文编程,真正的中文编程应该是这样的:

从账户A向账户B转100元,账户A余额足的话,显示错误消息xxxx

对不起,这不叫中文编程了,这叫自然语言编程。

对于大部分程序员来说,学会一门编程语言中的关键字、语法根本不在话下,比较难的地方除了上面说的设计和抽象之外,还有就是英文的生态环境。

毕竟信息技术起源于美国,大部分软件的API接口,教程,帮助等都是英文的,中文的翻译不足、不准,这对于英文不好的同学是个挑战。

如果我们现在开始使用中文变量名、函数名、接口定义,根本无法和国外接轨,你开源一个到处是中文词汇的框架/类库,做得再好外国人也无法使用,相当于把自己封闭在一个小圈子里,和闭关锁国差不多了。

如果你用某些“中文编程语言”写点儿小脚本,完成点儿小任务,我不反对,如果真是想正规地从事软件开发这个行业,还是老老实实地学一门编程语言吧!

最后,做个小调查吧,你能忍受代码中把变量名、方法名、类名改成中文吗

(完)

最后,隆重介绍一下我的小号,“想躺平的程序员”,这个小号可比我的大号厉害多了,一定要关注啊。

以上是关于我反对中文编程!的主要内容,如果未能解决你的问题,请参考以下文章

反对函数式编程的政治正确

中文编程的奋斗历程

Linux日志文件总管——logrotate

Linux日志文件总管——logrotate

Linux日志文件总管——logrotate

8月语言排行:Objective-C走向衰败?我反对