关于中文编程

其实中文尽管使用人数最多,但在计算机这个领域是不大受欢迎的。不用说一块汉卡就能开一家公司的时代,就算现在,汉语也还是在诸多方面受到歧视。最气的是,在很多网站上,往往有日语版而无中文版。象sun公司的网站就是一个例子,不知道现在sun公司与中国政府全面合作这方面会不会好一点。

不扯远了,关于中文编程的问题,实际上有两层含义,一层中能够处理(输入,输出等等)中文,另一层是能够在源代码这一级上支持中文。第一层的意义的讨论比较多,再加上我是一个程序员,因此我想源代码上支持中文的讨论是比较有意义的。

其实,如果说代码可读性是最值得重视的话。那么,支持中文在源代码中的应用应该是一个自然的推论。我经常见到为取变量名和类名查字典的情况,这还算是好的。有时候遇到不好查字典或者理解不准确甚至是心情不好,乱起一个名字,就会搞得后来读程序头痛。“道可道,非常道;名可名,非常名”。《道德经》把名放在开篇中,可见一个好的名字的重要性。我觉得名字就代表对事物本质的认识,再加上软件这样一个东西,其中的大部分事物几乎都是创造出来的,如果没有一个好的名字,就会让人很难以理解。我觉得名字差有三方面的原因:

1、名字代表程序员对事物本质的认识,一个坏的名字可能意味着概念的模糊。

有可能是程序员对事物的划分不准确,这些东西在一起只是偶然的,从而取不出好的名字,因为这个事物的边界是模糊的;也有可能开始的时候是准确的,但后来随着事物的发展,这个东西的性质已经改变,原来的名字已经反映不出它的本质了。这个时候就需要改一个更准确的名字,但由于没有方法论和工具的保证,这种变动往往不太容易,因此很多人不会愿意做这种变化。不是有人说,只要还能工作,就不要去动它吗?另外跟这个相关的,还有一个问题,那就是认为程序是由自己控制的,是“我”让它这样的,它是“我”的。一定程度上可以这么说,但我更倾向于认为程序是一个“活物”,它是可以自己控制自己的,是可以“生长”的。或者从另一个角度来看,难道不是因为用户的需求,我们才有这样的程序吗?我的意思只是想说,程序是有生命的,要习惯于让代码带领我们走向它该去的方向,不要强加到代码上很多东西。或者可以这样说,“无为而治”地让代码“生长”。

2、认为名字不重要,这个上面我已经谈到。

3、认识也是准确的,也想取一个好名字,但是因为语言的限制,取不了好名字。

这个正是我想说的问题。因此我们就要在源代码中使用中文。那有的人说,现在的语言大多支持中文的注释,用中文注释不就OK了吗?关于这个观点,请参见Refactoring中的论述,总之,结论是,做为向高级语言进化的第一步,汇编语言中出现的关于变量名,方法名等等,正是自然的表达人的思想的地方,从这个角度上来看,注释倒反是副产品,也就是说,在用变量名,方法名,类名等等不能表达的时候,在用Refactoring不能解决问题的时候,才用注释来解决。

但是中文编程不是没有问题的,最现实的一个问题是:环境的支持。最基本的是运行环境和编译环境,我大部分时间都生活在Java环境中,很少数情况会有不支持的情况,我记得遇到过的不支持的情况好象是WebLogic不支持有中文方法名的EJB。总之,这方面的不支持是比较少的。IDE的支持一般也是可以的,但是对输入的支持一般都不好。比如有一个中文方法名,如果要想在弹出的选单中选中文方法名,都是很痛苦的。我能想到的比较好的方法应该是象E语言一样:象输入"中文",只需要输入"zhongwen"或"zw",或"zhw"即可。但现在几乎所有的开发工具都不支持,我想有一天这种输入方法应该是会被支持的。

阅读更多
个人分类: 中文编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭