汉语编程:脱离现实的美丽梦想
评论
(作者简介:前微软中国软件工程师,在C/C++程序设计领域有15年专业经验)
最近,汉语编程在中国IT界刮起争议旋风。什么是真正的汉语编程?汉语编程有何用处?我们需不需要汉语编程?本期新闻评论周刊请来一位资深程序员,就此问题进行思考和述评。
所谓汉语编程,是指以关键字、运算符、操作符、函数和变量的表示与结构全部用汉语的字符来表达的算法语言进行的程序设计。那么,汉语编程对中国IT来说有什么意义?我们需不需要汉语编程?
先讨论一下程序设计过程的本质。程序员在做程序设计的时候,是不是真的在意他在书写的语句的文字涵义?其实并不是这样的。
一个合格的程序员,可能对于他一直用来编程序的算法语言所归属的自然语言(一般是英语)掌握得相当不到位,但这并不妨碍他写出符合要求的程序来。为什么呢?他可能不了解他在写的“if...else...”的英文涵义是什么,他之所以照写不误,是因为他了解到使用这样的结构可以表达他想要的判断和分支的逻辑。这才是程序员在做程序设计的时候真正在想的——数学和逻辑。为表达这样的数学和逻辑,他必须借用一些符号,而这符号凑巧又是英文单词。
因此,程序员眼里的程序中的英语单词实际上并不具有词汇学的意义,而仅仅是一个思想的表达符号。既然只是思想的表达符号,那么用什么语言来表达难道不是一回事吗?比如英语,比如汉语。
有人一定会问,既然用什么语言来表达都是一回事,那为什么不用汉语来表达?这个问题,触及到了问题的核心。
一个最简单的答案是:“汉字输入比英文输入麻烦得多。”无可否认的是,现在的输入还主要是靠拉丁字母键盘,在中国最普及的还是101键英文键盘,也就是我们通常说的QWERTY键盘。如果用汉语编程,抛开一切其它不论,首先就多了一个汉字输入技术的学习成本。大家都知道,汉字输入最简单的是拼音,但绝大多数人的输入都并不快。真正快速输入的人基本上都在使用五笔字型等输入法,但是那样的输入法学习周期就比较长。
回到刚才的问题:既然说到底都是为了表达思想,为什么不直截了当地省去输入环节的学习成本?我知道法文输入是有法语键盘的,德文输入也是有德语键盘的,甚至有丹麦语键盘这样的输入设备。在如此方便的输入条件下,我见识过的欧洲国家大师级的编译器实现者应该也不算少了,怎么就从来没有听说过他们推行什么法语编程、德语编程或是丹麦语编程呢?
C++的设计者Bjarne Stroustrup就是丹麦人,世界上最杰出的程序员Edsger.W.Dijkstra就是荷兰人,Linux的实现者LinusTorvalds就是芬兰人。他们没有自己的民族语言吗?可是他们都是用英文来编程的。他们带给世界的精品并不是通过自己的民族语言,而是通过自己的民族智慧。更何况,我们的语言是一种有输入法学习成本的语言,这就是应该拒绝汉语编程的一个有说服力的理由。
另一个更有深度的答案是一位计算机系的老教授告诉我的,他在嵌入式系统和实时系统方面有着多年的经验。他指出,汉字的支撑环境对多种开发环境来说都是不可接受的,甚至连现有的高级语言都必须简化成一个很小的子集,甚至是直接指令集才能工作。他表示无法理解在嵌入式的代码里,要汉字表示能有什么好处。
实际上,即使只把汉语编程限制在普通的高级语言或第四代语言的编程环境中,也很难发挥出汉语作为语言本身的优势。因为在那些算法语言中的英语,也决不是自然语言,而是形式语言。并且,英语是结构化的语言,而汉语明显是适用于表达非结构化的东西。这在文学写作里,汉语能够体现出优势。但在形式语言里,就是一种劣势。不用说程序设计语言,就是数学和逻辑的领域里,也没有自然语言,包括汉语的地位。
说到底,不管用什么语言,它就是表达一种形式符号。还有什么比积分号更能表达好“部分和极限”的概念呢?同样,形式语言里之所以现在在用拉丁字母来表示操作和结构,完全是为了打字方便,以及存储量的考虑。如果一个人在做严肃的研究,他应该会在专业的算法研究文献中看到成篇的符号,而很少会看到用自然语言这种不严谨的表示。一个工程师如果囿于自然语言表示,而不能理解背后的形式化的逻辑,那么他肯定不是一个合格的专业人员。