编程术语成系统中文化的意义
本人在某问答网站的四千八百赞回答“为什么有很多人执着于中文编程”下有位分享:
关于中文变量名,在国内金融行业有一定的市场,因为直接用英文很多专业词汇没学这个专业即使专八也不一定知道,即使是美国人也很少直接用这些专业词汇,几年前我们对接过一个石油银行结汇的系统,软件是IBM的“承包商”提供,里面的专业词汇变量都类似LR_0001这样代表隔夜拆借利率这样,然后交付有个数据字典,中英俄三种语言正反向查询共800页,后面国人二次开发的模块里面就有汉语变量了
由此想到,行业术语系统的中文化是一个行业国产化的非常重要以至于不可或缺的“软”因素。
中文的特性决定了,即使再专业的术语词汇,所有行业加在一起用到的汉字也就数千,而不像英文那样单一行业就有动辄上万甚至十万词汇。比如医学词典《Dorland's Illustrated Medical Dictionary》(下面应该指的是词条数目,但估计单词数量应该也在万级)
Provides approximately 125,000 well-defined entries
这意味着接受过九年义务教育就可以开始行业技术培训(专科院校),而英文术语词汇的庞杂决定了国外的专业培训的入门门槛相对较高(毕竟在学习术语“概念”的同时,还要额外学习那么多的新单词)。
这也会影响到行业之后的知识交流效率等等。比如:
pneumoconiosis:尘肺病
dehydrogenation:脱氢
英文专业词汇的庞杂也催生了大量缩写,一些动辄会有数十甚至上百个不同含义,因为会被用在不同的行业中,甚至同一行业也会有不同含义(比如“ABC“,有 238 个意义)。虽然这从某种程度上弥补了英文术语冗长的问题,但同时也导致“行话”完全不能被行外人了解,也变相更加提高了入行门槛。而相应的中文术语往往行业壁垒更加低。比如下面两个都是“ADT”缩写:
Android Development Tools:安卓开发工具
Androgen Deprivation Therapy:去雄激素治疗
综上,中文术语是国内行业往往更有竞争力的一个重要原因:不仅专业人才更易培养,专业知识也更易交流。
说回到本行软件业,从各种软件行业新闻中夹杂的大量英文可以看出,该行业的中文术语系统还未成熟,毕竟软件业相对来说属于新兴行业。另一重要因素是,很多从业人员尚不知道标识符命名可以用中文,从而导致一直以来在代码编写时都照搬英文术语,而在编程教程中也延续了这个“传统”。实际上大多数编程语言都早已支持了中文命名标识符(变量、方法、类名等等)。常用框架比如 Spring 也可以从前端到后端使用中文变量,见《中文代码示例之Spring Boot 1.3.3演示》
开头提到的石油行业的同行的反馈,已经说明了制造业信息化过程中,在代码中直接使用中文术语的益处。
同样,软件行业本身的术语的中文化,也将是软件行业加强竞争力的一个重要途径。这也是在构建中文软件生态(API)过程中的必经之路。
对软件的汉化,简单的来理解,就是将代码用的变量、函数名、库名,都用中文进行一一对应,不论底层代码如何,起码在用户看见的范围内,大部分的确是中文了。
00甚至0几年,常用的Adobe全系,还都是英文版的,10年,ae,maya还是英文版的,现在要么有中文版,要么有汉化插件。我学adobe全家桶用的是中文版,学3d用英文版,学编程的时候部分软件中文部分英文,全中文的操作界面的确友好,学3d的时候记单词也的确难记,但是全用中文就没有问题了么,问题依然不少,典型的就是英文版同样操作不报错,中文版报错,所以那时候推荐装ae、maya都是装英文版,就为了少出点莫名其妙的bug。
现在说编程用全中文,然而中文的编码方式比英文多,所以就会造成一个情况,在一种编码方式上显示正确的,在另一个编码上显示不了。还有古早的程序与后编程序的兼容(我也不知道这用专业术语要怎么说,意思就是nx年前写的程序,现在还在用,但是这nx年中有了新的代码加入,怎么让新代码实现效果的同时老
代码不报bug),国外的软件为了解决多语言版本(中文、日文什么的)少报bug的问题,花了不少的功夫,而这还只是对表层的汉化。
国外软件出中文版,目的是为了提升在中国的营收,对公司有利,而在国内,编码用中文,对现有的程序员有利么,对现有的科技公司有利么?相反,是降低效率的,用中文,可能与古早版本的代码不兼容,可能出更多的bug,也没法直接套用国外的代码了,这都会降低工作效率,你让他们推动中文编码,就得补贴相应的损失。
编码中文化(单指对关键字、函数、变量等的汉化,非从底层逻辑汉化)这事,要真的想成,就得和操作系统一样,从国家层面开始,但这转换过程中的代价,太大了,国产操作系统现在也还只能用于部分行业,而编码中文化的影响,比这个要大得多。
而且,真的换成中文后,就没问题了么,为什么很多人念【阈值】fa zhi【阀值】?为什么程序员喜欢说【bug、warning】而不是【报错、警告】?单就你现在说的【编程术语成系统中文化】话题,说的是【对关键字、函数、变量等的汉化,不涉及底层】,还是【从底层逻辑开始,成系统的用中文编写代码】?
都说中文精确,实际上中文是为了便于初步理解而牺牲了精确程度的,我当年也认为中文精确,毕竟联合国文件中文最薄么,直到我写文案的时候发现要描述精准要加一堆的修饰及说明后,英文对这个的处理就简单粗暴的多了,直接造新词(相当于造新字),某个词汇在某个学科就是指代某个现象或者某个含义。中文选择了造新词的方式,然而现在高科技新闻,下面评论依然是一堆的【字我都认识】,也没比造新字好多少。你把编码换成全中文后,面临的问题也会是这样的:前沿部分,读起来拗口,理解起来费劲,还和日常语产生交叉,普通人会用日常语的含义去理解专业术语,导致歧义和不必要的争论。
编程要做到中文化这件事,可以推,毕竟对未来的程序员友好,也方便大众理解,但是你希望靠现在的程序员、it公司推动,还是别想了,it行业英文先发几十年,累积优势太强,中文入场太晚,有个词汇叫积重难返,就是现在的行业现状。
现在很多程序员,从业者想的都是,在量子计算机的时代,从底层逻辑开始,用中文设立一套自己的标准,那是一个全新的跑道,英文没有几十年学科积累带来的优势,中文才能真正和英文拼一场。