已经有好几年的时间,我经常会想起中文编程这个话题。这两天参加数博会,让我对此又有了一些新的感受和理解。
这几天有不少主流媒体(人民日报、央视财经等)来采访,虽然他们并不是技术领域的媒体,但对于低代码的关注度很高,对低代码是什么,能带来什么价值,存在的问题和困惑也很多。
我向媒体们反复强调,低代码的核心是对人才要求低,并不一定是代码数量低,更不是没有代码。低到什么程度呢,以我们超过1000名低代码程序员的培养经验为例,即便一个非计算机或相关专业的高职院校毕业生,只经过一两个月的学习和实训,也大概率能够掌握低代码编程。
做到这一点的价值极大,可以大幅降低软件的人力成本,更大的价值是可以满足对软件人才的需求。根据一些官方的统计数据,我国当前软件人才缺口多达200万。大家知道我们每年受高等教育的毕业生超过1000万,有这么多毕业生,为什么还存在如此巨大的软件人才缺口呢?这是因为我们当前的软件开发技术对人才要求太高,每年能够从事软件开发工作的毕业生可能不到50万。
为了让几乎所有受过高等教育的毕业生都能很好地掌握软件开发技术,低代码产品做了很多创新的设计和突破。
首先,低代码产品所提供的开发语言比较简单,概念和语法比较少,学习就比较简单。
其次,低代码产品采用了良好的可视化方式来显示代码逻辑。很多人无法掌握软件开发技术,是因为一看到密密麻麻的字符型的代码就心生恐慌。顺便说一下,可视化编程的设计形式也是非常有讲究的,需要仔细地设计、验证和打磨。有些主流的设计其实并不好,比如大家可能知道的面向小孩子编程教育软件Scratch采用积木块来显示代码。经过我们的研究和测试,这种方式理解的门槛还是比较高的。
第三,低代码产品采用事件驱动的开发方式。如果要写一个按钮被点击时的处理逻辑,可以在平台上选择这个按钮,然后选择点击事件,并在相应的地方填写对应的处理逻辑代码片段即可。这种方法非常直观,已经被Visual Basic、Delphi等经典软件开发产品验证。
这些都是我们现在在低代码层面所做的一些核心设计,都非常的重要,但我觉得可能还缺少一个也非常重要的设计,就是能够用中文来编程。
我觉得用中文来编程有几个优点。
第一个优点是能够进一步降低对软件开发人才的要求,提升代码质量。我们很多学生虽然受过高等教育,但英文词汇量和水平是比较有限的。在用英文编程的时候,需要把业务里面的实体、属性、业务术语、事件、流程等内容翻译成代码里面的各种符号名称,这对他们的英文能力有很大的挑战。所以我们可以看到他们经常会采用拼音或是拼音首字母缩写这样的形式来重命名。我们知道我们阅读拼音的效率是比较低的,拼音首字母更是很容易让人摸不着头脑,不知道是什么意思。这种业务语言和代码语言之间的翻译和脱节是有问题的。
第二个优点是我们阅读中文的效率远远高于英文,这是因为中文是母语,同时也因为中文也更加简洁。为什么阅读的效率这么重要,这是因为根据统计代码被阅读所花的时间远远超过编写这份代码的时间,所以我一直非常关注和强调代码的可读性,中文和英文就是影响可读性的一个非常重要的因素。
第三个优点是中文编程有利于AI自动编程。因为需求是中文描述的,编程语言最好也是中文,否则在实现自动编程时就存在翻译带来的障碍或损失。大模型对常用词的翻译可能还没有问题,但业务特色术语,因编程人员英文水平不高带来的不准确的英文命名、拼音或拼音首字母等都可能带来问题。
但如果中文编程有这么多的优点,为什么现在没有流行呢。我觉得可能有以下几个方面的原因。最大的原因是我们在编程语言方面的创新很弱,我们现在主流采用的所有的语言都不是我们设计的,我们都在用英语世界国家创造的编程语言。第二个原因可能是在字符型编程环境下中文的输入效率确实没有英文高效,比如输入if比输入如果更高效,输入next比输入下一个更高效。
但在低代码环境下,这两个问题可能都会得到解决。首先低代码平台提供的是我们自己设计和实现的编程语言,其次低代码主要通过拖放和点选交互方式编程,所以文字输入上的效率问题就几乎不存在了。
但要普及中文编程还是很有挑战。技术上存在一些复杂性,我们的低代码平台是将编程时用的NASL语言翻译成Java和JavaScript运行,NASL里的中文的符号翻译时就可能需要做转换。另外在程序里面用中文来定义数据库的表和字段,但在数据库里面用中文来定义又会遇到一些技术和客户接受度的障碍。但技术上的问题都不难解决,核心的困难是文化上的挑战。中文编程这个概念在程序员群体里面口碑似乎很差,很多专业的程序员对中文编程是鄙视、看不起的态度。数据库如果用中文还会面临DBA群体的抵制。其实他们并没有做过深入的思考,只是这么多年来一直都习惯英文环境的一种本能反应而已,但带来的市场接受度的挑战很大。
我觉得大的方向上,我们应该会走到使用中文编程的那一天。到那个时候,我们程序员所使用的编程语言和我们普通人所使用的自然语言会更接近,我们的代码能够更高效的阅读与理解,软件人才的培养也会更加简单,我们的软件生产力会更高。
今天我们很多非专业的媒体都开始关注低代码了,中文编程作为一种可以让低代码更“低”的技术,也希望得到更多人的关注和认可。