
从语言进化看仓颉:看懂自然语言与编程语言
这是苍穹猎鹰第454篇演化日记
从语言进化看仓颉:看懂自然语言与编程语言
本文仅为个人观点分享,文中列举的数据与逻辑仅作分析参考,不构成任何决策建议。
语言,开启了人类文明的先河。
那么,怎么理解语言呢?小编的答案——语言是主观思维对客观世界的直接反应。
这句话里藏着三个词:主观、客观、反应。
人先有了对现实的感受和判断(主观),再把这种判断投射到外部世界(客观),中间那根管道就是语言。
没有语言,思维只能在脑子里打转;有了语言,思维才第一次有了形状,才能被传递、被检验、被累积。
维特根斯坦说过一句被引用最多的话:“语言的边界,就是思维的边界。”
小编一直把编程语言和我们日常使用的自然语言放在一起比较,发现它们之间有很多相似之处。
自然语言实现的是人与人之间的交流;编程语言,则是人与机器对话的桥梁,是驱动AI、机器人的底层指令。
我们可以使用自然语言与人交流、写文章,也可以运用编程语言与机器对话、开发软件和应用。
1/5
演化与设计
这是两类语言最根本的分野。
自然语言:十几万年的无意识演化。
人类语言有多古老?这个问题至今没有定论,但近几年的基因研究给出了一个相对硬的锚点。
2025年3月,一项发表在《心理学前沿》的研究,通过分析过去18年发表的15项基因研究得出结论:人类的语言能力至少在13.5万年前就已经存在,而语言作为系统化的社会交流工具被广泛使用,大约在10万年前。
十几万年的时间跨度,关键仍在于演化。
《语言经济学导论》里指出:语言是人类行为演化的结果,而演化在语言起源上最基本的特征,就是新奇的创生、新习惯用语的发现,以及多方的模仿与反复试错。
没有人设计它,没有人给它定规范,它是十几万年间无数张嘴反复试错、自然选择的结果。
编程语言:七十年的有意识设计。
编程语言的历史短到可以用年份精确丈量。
最底层是机器语言,全是0和1的二进制指令,CPU只认识它,也只能直接执行它。但用机器码写程序极其痛苦——必须记住所有机器指令对应的二进制代码,每条指令只能完成一个非常小的任务。
于是1950年代,高级语言被“设计”出来:Fortran(1957),取自“Formula Translator”(公式翻译器),由IBM的约翰·巴克斯团队开发,是世界上第一个被正式采用、并延续至今的高级编程语言。
看清这个对比:自然语言是长出来的,编程语言是造出来的。
前者像一棵树的年轮,后者像一栋楼的图纸。年轮里没有设计师,图纸上有明确的设计者和设计目标。
2/5
提问与求解
两类语言的分工,可以用一句话概括:自然语言负责提出问题,编程语言负责解决问题。
举个具体的例子——我们常用的办公软件。
自然语言提出的问题:“我这份300页的合同里,所有甲方的名字都要改成新公司名,还要把每份文件都另存成PDF。”
这句话人听得懂,但WPS听不懂。要让它执行,得把这句话翻译成一条条可执行的指令——WPS里对应的就是JSA宏(基于JavaScript的脚本语言,WPS用它替代VBA做自动化)。
具体的技术细节小编也不是很懂,但可以梳理出大致脉络:把“一句话需求”拆解成“一步步操作”——打开文档、查找替换、逐份处理、另存为PDF,每一步都必须精确到机器能直接执行的程度。
换句话说,自然语言负责定义“要什么”,编程语言负责定义“怎么做”。
3/5
理解的方向:一个面向人,一个面向机器
两类语言面向的对象不同,理解机制也就完全不同。
自然语言面向的是人。它天生带着歧义、隐喻、情绪和语境。
刘玄在解读《我们赖以生存的隐喻》时提到,机器学习如果只是学下棋、开车、聊天,永远成不了人的智能——因为人的理解依赖身体、依赖生活经验。
编程语言面向的是机器。它要求每一个符号都精确、无歧义、可执行。
这里有一个很有意思的反转:过去是人适应机器,用户需要学习机器的语言和逻辑;而现在随着人工智能、机器学习、自然语言处理的发展,交互设计开始以人为中心,机器开始学习并适应人类的交流方式。
换句话说,编程语言是我们理解机器的方式,而自然语言正在成为机器理解我们的方式。
两条通道,方向相反,但都是“理解”。
4/5
表达的镜像:一边冗余模糊,一边精确无歧义
表达逻辑上,两者几乎是镜像的。
自然语言的表达逻辑是冗余的、模糊的。同一件事可以说十种说法,听的人靠语境补齐信息,说错了可以现场改口。
它的表达效率不高,但容错率极高。
编程语言的表达逻辑是精确的、无歧义的。
以仓颉的条件表达式if/else为例:if后面必须跟一对圆括号,里面放条件;接着是一对花括号,里面放第一个分支;再后面是else,同样跟一对花括号,里面放第二个分支。一个符号写错,整段逻辑就崩了。
自然语言的冗余是它的优点——它让沟通在信息不完整的情况下也能进行。
编程语言的精确也是它的优点——它让机器在没有任何语境的情况下也能执行。
5/5
判断的载体:从“行不行”到 True 或 False
语言不只是描述世界的工具,它更是判断的支撑。
人类的判断——“这个方案行不行”“这个人靠不靠谱”——必须先被语言组织起来,才成为可讨论、可修正的判断。
而在编程语言里,判断被压缩成了最纯粹的形态:布尔值,True或False,1或0。
条件判断,是程序从“机械执行”走向“有逻辑”的分水岭。两类语言在这里交汇:语言既是人和机器判断的支撑,又是判断到执行的载体。
讲到这里,仓颉的位置就清楚了。
仓颉编程语言是华为推出的编程语言,专为鸿蒙操作系统开发而设计,支持函数式、命令式和面向对象多种编程范式。
它的名字来自“仓颉造字”。《荀子·解蔽》称“好书者众矣,而仓颉独传者壹也”——传说中仓颉是黄帝的史官,汉字的创造者。
用仓颉的名字来命名编程语言,是一种隐喻——我们希望在机器世界里,也有一套属于我们自己的表达方式。
此前主流的通用编程语言,设计者均在国外。仓颉的意义正在于:它同样是被“设计”出来的语言,只不过这一次,设计者是我们自己。
最后,引用史蒂夫·乔布斯的一段名言共勉:我觉得每个人都应该学习一门编程语言,因为学习编程可以教你如何思考,就像学习法律一样。学习法律并不一定是为了成为律师,而是教你一种思考方式。学习编程也是一样,我把计算机科学看作基础教育,每个人都应该花至少一年的时间学习编程。
对于国人来说,如果想学习编程语言,仓颉是最优的选择。
本文仅为个人观点分享,文中列举的数据与逻辑仅作分析参考,不构成任何决策建议。
参考资料:
《人类在13.5万年前就拥有语言》
《编程语言简史:溯源!》
《华为发布通用编程语言"仓颉",我系冯新宇教授作为首席架构师领导研发》
《语言本能:人类语言进化的奥秘》
《仓颉编程基础及应用》
· END·
格隆汇声明:文中观点均来自原作者,不代表格隆汇观点及立场。特别提醒,投资决策需建立在独立思考之上,本文内容仅供参考,不作为实际操作建议,交易风险自担。


