坦白讲,这会是一个非常有争议的话题。在世界大同的今天,中国要不要开发出自己的编程语言?这是否必要?
在构思这个问题的时候,原本以为中国是没有自己的编程语言的。但在仔细查询确认后,发现有一款名为"易语言"的编程语言。这款语言最早可以追溯到2000年,是一款采用中文编写程序的语言。即语法部分采用中文表达,这也是其饱受争议的主要原因。在绝大多数开发工程师看来,这种以中文作为语法基础的编程方式完全没有必要。除了大家都已经习惯了英文语法外,从编译原理看,其词法分析就是构建在对每个字符的分析处理基础上,一个英文字符只占一个字节,而一个中文则至少占了2个字节,损耗不少。但我们也有看到一部分人会认同"易语言"。这些人英文水平较弱,他们会很享受中文编程给其带来的便利感觉。比如一个小学生,其英文不太好,逻辑思维也没有完全建立起来。但看到可以用中文来编写程序,学习起来障碍很低,于是就开始喜欢上编程。凭借这个兴趣,孩子最终通过学习其他编程语言进入职场,是一件善莫大焉的事情。笔者过去从未注意到过这类用户的需求,但看到易语言直到今天仍有用户,足矣证明其存在的合理性。在这里,我们就不进行深入讨论了。
在这里,我想探讨的是一个由中国或中国人发明的,能够在世界范围内得到较广泛应用的编程语言。先说说我的答案,我认为中国未来应该有一款这样的编程语言。下面说说我的认知理由。
中国的计算机软件产业比西方国家起步晚,很多软件早期的问题,伴随着产业的发展已经被西方国家发现并解决了。比如:计算机需要操作系统、数据存储需要数据库等,这些软件概念以及基础理论都是由西方国家构建起来的。但伴随着中国软件技术几十年的蓬勃发展与积累,中国现在储备了大量的软件技术人才,在各个领域也逐步构建起了高水准的软件产品,如:红旗Linux、鸿蒙操作系统、TiDB等。中国正在努力减小与西方国家软件水平上的差距,在每个软件产品品类中都试图构建一种或多种可替代产品。
因此,我认为中国也应该有一款编程语言出现了。这个论调与软件技术主张的开源、共享等理念显的有些冲突。就开发者而言,更不应该唯某种开发语言论,应该是能用的开发语言就是好的开发语言,不要重复造轮子。但我们也看,这个世界除了强调协作、共享外,还有竞争。如今美国对中国的技术封锁仍在,目前虽未波及到编程语言领域,但拥有一个替代品,在战略上总还是有意义的。除去竞争方面的考虑外,其实更大的原因是中国软件产业发展了几十年了,也应该有一款相对通用的开发语言了,这更多是一种国家软件技术发展水平的体现。
当然我们也不主张为了拥有一种编程语言而强行发明一种编程语言。这样的编程语言缺乏用户基础,无法得到用户的认可,没有使用者,这样的编程语言发明的再多也没有用。关于发明何种编程语言,笔者曾经跟一个业界资深朋友一起探讨过。我们可以看到,绝大多数新流行的编程语言一定是对之前的编程语言有了很深刻理解,为其设置了很多程序员喜欢的、区别于其它开发语言的语法糖。这些语法糖带有明显的编程语言特色,吸引着早期用户使用。至于编程语言是否能够获得大范围普及则需要一点点运气成分了。看看过去几年编程语言兴起的例子,以Spark、Flink为代表的分布式大数据计算框架的兴起带火了Scala语言;深度学习的兴起带火了Python语言;Docker、K8S的兴起带火了GO语言等。那么在哪个机会里能够再次带火一种编程语言呢?朋友的看法是在云原生开发领域存在机会。云端的开发生态有别于传统开发生态,因此有机会伴随云的特点构建起一种新的开发语言。
除去通用的编程语言外,其实发明一些特定领域专用的编程语言也未尝不可。比如SQL就是一种典型领域编程语言,其特定用于数据查询的应用场景中,通用性、流行性非常广泛,为全世界的开发工程师们所熟知。特定领域的编程语言由于是面向特定环境的,因此,其可以适当减弱通用语法能力,而加强其专业相关的语法设计。这样更容易形成语法糖,为使用者所接受。比如:某特定领域的可视化编程可以成为一个方向。
中国的软件产业发展和积累到今天,各项条件都已基本成熟。呼吁有梦想、有能力的工程师们,不管是替代品也罢,软件技术发展水平体现也罢,不妨开始勇敢尝试。