别再傻傻用全英文编程了,用中英文混编更科学

文章导读:

由于编程语言均有欧美主导开发,所以采用英文编程就成了共识和传统。但对于英语之外的国家,使用英文编程真的是最佳选择吗?你在编程过程中有没有怀疑过程序编写是否可以不用纯英文也可以?或者换句话说,如果不用纯英文编程,会不会比纯英文编程更好?

用中英文混排,让编程更加易易维护

通常来说,在程序员中有两类不同的编程风格,一种是英文编程使用英文写程序的注释。就像下面这样:

//declare username variable
private static string UserName="张三";

 另一种就是使用纯英文编程,但注释写中文。就像下面这样:

//声明颜色枚举
public enum Colors
{
   Black,  //黑色
   Red,    //红色
   White,  //白色
   Green,  //绿色
   Gray,   //灰色
   Yellow  //黄色
}

 但你有没有想过使用下面这样的方式编程:

/// <summary>
/// 获取用户名的方法
/// </summary>
public static class 用户函数
{
    string 用户标识="张三";
    public static string 获取用户名()
    {
       return "李四";
    }
}

看上面这段代码,是不是感觉泾渭分明,程序语言的关键字统一使用语言自身定义的英文关键字,而涉及到变量名、方法名,类名等关键字以外的、可以由程序员自己定义的名称全部使用中文。这样的程序代码,基本上不用怎么写注释,即便是外行人看了也知道程序的功能是干啥的。例如上面我们定义的一个颜色枚举,就可以像下面这样:

//声明颜色枚举
public enum 颜色
{
   黑色,
   红色,
   白色,
   绿色,
   灰色,
   黄色,
}

中文编程的理论支撑

看到这里,肯定就有人跳出来大喊大叫,说博主不专业,编程必须用英文字母,变量必须遵守字母、数字、下划线的基本规则。你这使用汉字做变量和类名,这是妥妥的野路子。我告诉你,这真不是野路子,这才是编程语言想要我们做的事。

学计算机专业的人都知道,当初计算机发明初期,为了让计算机能够表达127个西文字母和符号,欧美的科学家将计算机的处理器搞出了8位CPU。有人会问,为啥是8位处理器,而不是3位或者5位?这是个好问题,因为上个世纪40年代,西文字母和数字总数还没超过128个。而2的7次方等于128,所以用7位就够了。但科学家毕竟是科学家,做事情不能只顾眼前。所以搞了8位,这样能够表达的最大字符和数字、特殊符号的总数就达到了2的8次方,也就是256个。所以,8位CPU就是这么来的。

对于计算机来说,一根导线只有两种状态,要么高电平,要么低电平,也就是我们中国人理解的一阴一阳。所以,根据我们数学学的排列组合的方法,一根导线两种状态,8根导线就能够表达2的8次方256种状态。

所以,计算机的设计者就用一个字节来表达一个英文字母或者符号或者数字。一个字节就是8个位,比如数字0的ASCII表达就是0000 0000,也就是8个0。

当计算机进入中国后,我们面临的问题就是如何用计算机显示汉字。这就不得不说一下计算机向全球普及的过程,由于不同语言的表达需要,以及新的特殊符号的不断出现,最初的8位处理器已经不足以表达新出现的特殊符号和其他民族语言了。这个时候,Unicode编码就应运而生了。Unicode码又称“统一码”、“万国码”,它跨语种,几乎涵盖世界绝大多数国家的字符和符号。比如我们熟悉的GB2312编码,它就是基于Unicode编码派生出来。

一个英文字符占一个字节,或者说拉丁文字符、数字和特殊符号采用ASCII单字节编码,而中文由于汉字数量庞大,所以采用双字节编码。也就是一个汉字占两个字节。看到这里,就有一些不专业的人说了:“看看,英文字符才占一个字节,中文字符占用的存储空间是英文的二倍”。这个说法对吗?当你单独比较一个汉字和一个拉丁字母的时候,这个结论无可辩驳。但在编程和书写的过程种,你看看一个英文单词由多少个字母组成,你就知道只理解单字母对比是多么的形而上了。

举个例子,我们在编程过程中,声明一个字符类型的变量,比如像这样:

//定义被侦听的设备的名称
string ListenningDevice="U盘";

 字符变量ListenningDevice占用了16个字节的存储空间,也就是说程序在运行的时候要占用16字节的内存空间。假如我使用中文字符做变量,就像下面这样:

//定义被侦听的设备的名称
string 侦听设备="U盘";

由于一个汉字占两个字节,那么4个汉字占用8个字节,这样一来,使用英文变量名的ListenningDevice就比使用“侦听设备"这四个汉字的变量名多出了一倍的空间占用。所以,使用中文非关键字编程,比使用英文编程能够让程序运行更加流畅,内存和存储空间占用更少。

中文编程的优势

严格来说,当我们把计算机的底层原理讲清楚了,喜欢追求真理的朋友已经在心底认同中文编程的优势和好处了。但绝对有很大一部分人顽固守旧,他们拿出编程语言的教条:变量命名必须是字母、数字、下划线,要知道这些编程语言的教材是建立在英文作为母语世界的标准。用英文书写的编程教材,自然不会第一时间考虑使用日文、中文等其他语种的人的。

从计算机底层来看,内存和CPU根本不认你是英文还是中文,作为硬件它们认的是二进制,是机器码。如果你能明白这一点,就知道你的变量名、类名、程序集名称是用英文还是中文或者是爪洼语言,计算机根本不在乎。因为程序最终都要被编译成二进制在计算机中运行,哪怕我们平常使用的Lua、JavaScript的解释型脚本语言,你认为它不需要编译,实际上是通过宿主语言实时编译的JIT。再强调一下,计算机硬件只认二进制。

中文与英文关键字混编,最大的好处就是关键字和变量泾渭分明,一目了然。最重要的是,使用中文编程,你省去了写注释的麻烦和时间,让程序变得更加易读、易懂、易维护。从计算机底层机制来说,占用的内存更少。

当然有人非要抬杠,说他们有国外的同事共同开发程序,所以使用中文变量会让外国人看不懂,影响团队协作。所以说,不要食古不化,有国外同事当然彼此要有一个协作问题,要么你迁就外国人,要么外国人适应我们,就像我们去到美国必须用纯英文编程一样。这种问题就不是用中文编程还是用英文编程的问题了,而是团队协作的管理问题了。

还有互联网大厂的程序员,或者外包程序员,程序里满屏的汉语拼音变量名就赶紧省省吧,既然都汉语拼音了,也没担心过外国程序员看不懂,干脆换中文汉字做变量、类名吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值