我反对中文编程!

什么是中文编程?

我打开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接口,教程,帮助等都是英文的,中文的翻译不足、不准,这对于英文不好的同学是个挑战。

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

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

你能忍受代码中把变量名、方法名、类名改成中文吗

学习Andriod的小伙伴,需要学习资料的话,可以点击下方链接,里面有我自己整理了一套最新的Andriod系统学习教程,包含Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分布式、高并发、性能调优、微服务等多个知识点高级进阶干货,送给正在学习Andriod的小伙伴!
链接:https://shimo.im/docs/R13j85m...

你可能感兴趣的:(我反对中文编程!)