中文编程
首发于中文编程

中文编程的迷思

中文编程面对的最大的反对的声音是编程并不是用英语,所以不存在什么自然语言编程。西方那套主流的理论对语言的理解是有问题的。不能把语言和文字分开看待,必然导致这些毫无意义的争议。

区分了语言和文字之后,我们可以很容易的看到中文的优越之处。九章算术里只用相加就可以表达清楚的概念,西方在几百年后仍然还要使用\sum_{i=0}^{n} A_{i} 这样拙劣的记号。Knuth曾在Two notes on notation中对APL使用的notation有极高的评价。而现代的APL比如J,比原始的APL语义更干净,也更接近中文。中文作为一门编程语言的基础在两千年前就已经存在了。

In spite of these potential problems in extreme cases, Iverson's convention works beautifully in the vast majority of applications. It is, in fact, far less dangerous than most of the other notations of mathematics, whose dark corners we have learned to avoid long ago. The safe use of Iverson's simple and convenient idea is quite easy to learn.

另外一方面,单纯只是对现有的语言汉化,有一定意义,但一定是要圈内大佬才推的动的,没有足够的资源投入,只靠几个圈外loser就想跟上整个产业的发展速度根本是不可能的,没有足够好的办法,再努力也不过是昙花一现,因为大环境就是从业人员普遍不认同这件事。

所以我认为与其去翻译现有的库及其文档,只是看上去眼前能做的事多,实际上远不如去实现真正的中文编程可行。在语言层面上能和现有的编程的语言拉开足够大的差别是不需要去计较是不是有足够的库的。

我也在各减平均各自乘相加除以项数开方中指出了,通常以为的实现真正的中文编程的技术问题,实际上并不存在。完全是目前国内教学实在太落后了,导致只要计算机专业毕业,认真听课,把老师讲的东西当回事的,都不会往这个方面去想。

接下来最重要的就是要找到一个能实际运行比较完整的程序的例子。这会是一个漫长的过程。绝大部分尝试都会以失败告终。只要完成了一个例子,后面自然是越来越快的。不过我也不知道,会不会有谁会参与进来,以怎么样的方式讨论比较好。

文章被以下专栏收录

    在所有编程语言和领域中尝试编写中文代码,开发相关工具,总结经验,一致代码风格。包括中文命名,汉化现有语言,创造中文语法的编程语言等等。作为最熟悉的母语,用来编写代码会让代码更容易被自己和母语相同的其他开发者理解。基于英文的编程语言和框架中,使用中文命名有时有技术问题。希望这里为后人趟雷,填坑。多数现有API是英文的,这里也会对其中一些常用的进行汉化。当然,这里也会对基于中文的编程语言进行探讨。包括汉化基于英文的编程语言,以及创造新的编程语言。