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