从元语言角度评价华为仓颉

根据官方资料定位:华为的仓颉编程语言是一款由华为自主研发的面向全场景智能的下一代应用编程语言

  • 仓颉编程语言与华为的鸿蒙系统结合,提供了良好的编程体验。
  • 它适合于有高性能高并发需求的业务场景,目标是打造在任务并行、数据并行、高频数据交互、高内存开销等典型场景下的性能竞争力

仓颉定位于高性能的目标。

在评价这个语言目标之时,我们需要搞清楚当前编程语言的上下文背景情况。

 当前,世界上编程语言有三个个发展方向:

  • 以运行时为强项:如Go语言、Java语言、C语言
  • 以编译时为强项:如Rust语言
  • 以易用性为强项:如Javacript、PHP和Python

1、以运行时为强项
运行时为强项的特点时高性能、高并发,内存管理由语言动态管理,这样做的好处时用户只管启动并发开关,剩余的垃圾收尾工作由语言完成,这就对内存垃圾回收算法提出更高要求,因此,Go语言和Java C语言等顶峰对决也是这块,不能让内存回收暂停当前工作,做后勤的不能影响业务销售员工作。

2、以编译时为强项
编译器会做更多形式验证,如同考试机器,对你做的证明过程进行更多形式上的验证,属于形式逻辑的形式验证,形式之形式=元逻辑。
这样做的好处是:一旦通过编译器编译,如同通过考试,就是正确的,Bug出现可能性很少。这对程序员提出了较高的学习门槛。

函数式编程语言也属于这个范畴,强调不变性,强调程序员能编写出如同微积分公式一样的lambda流式代码。

3、以易用性为强项
针对不同业务领域,例如Web开发,以易用上手为主,语法简单,没有那么多语法和用户手册,除了if else以外几乎没有太多let var等区分,没有不变性和可变性,没有有状态和无状态区分,也没有单体和微服务区分。

上述三种方向是语言发展中不同权衡取舍的结果,也是人们通过社区不断参与讨论,由主要公司或基金会不断推动对话的过程。

这三种方向能不能兼顾?
由于编程语言是介于程序员(掌握人类自然语言)和机器语言之间的媒介,因此,在这两者之间偏重是一种选择,只有经过左右侧重才可能找到中庸之道,不可能一个外行人走进某个专业上下文就能居中,上下文的上下边界都没有探索到,何以居中?如果有此心理,还是宗教新念等意识形态驱动。

运行性能高的语言必然要更倾向于机器,目前函数式编程也是一种倾向于机器的编程方式,对程序员编程要求高,而Rust之类语言则通过编译器加强了对程序员编程的审核工作,减轻了同行评审的人工负担,让程序员之间互相评审代码是一种落后方式,带来双方严重的认知负担和摩擦,这些都是那些重构、敏捷之类外行想出来折磨程序员的无赖之举。

偏向于机器的语言带来的认知负担,也就是易用性丧失。

人类语言 vs. 编程语言
编程语言是为了让人类操作机器,那么如今AI时代,机器人ChatGPT可以直接和自己对话如何?这当然效率更高,LLM大模型会发明适合自己的高效语言。

亚里士多德说:人类语言三个用处:道德、情感和逻辑。
前两种可以看成是人类交流,逻辑是思想的体现。

人类语言是交流工具还是思想体现呢?
自维特根斯坦的语言转向以来,人们更倾向于语言是逻辑表现,但是最近一篇自然论文:语言主要是一种交流工具,而不是思维工具 
其实这不矛盾,人类可以有自己的思想,不用语言表达,但是如果能语言表达,将有逻辑、情感和道德三个方面的约束,那么存在这样约束的语言才是思想,否则可能是胡思乱想,与做梦类似,因此,好的语言需要交流对话才能催生思想。

说了这么多,主要是提醒一下:中国普通话语言是适合逻辑?还是更适合表达情感?道德说服力?还是三者兼具?

英语是更适合逻辑的,因此编程语言使用英语之类字母则更严谨,对英语本身也有促进发展,希望我们通过用汉语作为编程语言,能够促进汉语的更逻辑化、更严谨化。

当然,现在我们通过与ChatGPT不断对话,会纠正细化我们语言的逻辑部分,通过不同各种人类语言让LLM大模型为你生成各种代码,你需要做的就是去验证。