使用仓颉编程语言是一种怎样的体验?

发布于:2025-07-04 ⋅ 阅读:(16) ⋅ 点赞:(0)

2024年6月21日下午,华为终端BG软件部总裁龚体先生在华为开发者大会主题演讲《鸿蒙原生应用,全新出发!》中向全球开发者介绍了华为自研仓颉编程语言,并发布了HarmonyOS NEXT仓颉语言开发者预览版。这是华为首次公开仓颉编程语言

2019年,仓颉编程语言项目在华为诞生,历经5年研发沉淀,大量研发投入,今日终于和全球开发者见面。仓颉编程语言通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的IDE工具链支持,为开发者打造友好开发体验和卓越程序性能。

花了一个下午快速浏览了一下仓颉Cangjie)的文档。总体感觉,仓颉把现代编程语言的各种特征都融合在一起,称它为“缝合怪”一点都不夸张。没有历史包袱的确让它看起来很爽。由于目前还无法实际试用它,所以编译和运行性能还不好说。这里只是从语言层面做个简单对比,我选了最熟悉的C#。仓颉和C#的定位很相似,都是带有垃圾回收(GC)的静态语言。在这个领域,我认为C#是最优秀的(之一)。以下只是基本概念的对比,由于对仓颉了解不深,只是快速学习了一下,难免有误,仅供参考。另外,标题有些标题党了,没有引战的意思,只是语言对比,方便学习。另外,标题有些标题党了,没有引战的意思,只是语言对比,方便学习。

一、直接开干

二、后记

  • 再次申明一下,以上对比仅是我对仓颉几个小时了解后的初步判断,难免有错,欢迎大家指证。
  • 加减分的评判仅代表个人观点,也许你就是认为仓颉的Lambda很优美,这都无所谓。从总体结果来看,仓颉的正面评判比例更大,对这门新语言,我跃跃欲试呀,往后十年能不能多恰点饭,就看它了。
  • 仓颉目前还无法试用,具体的编译和运行性能怎么样,还不得知。我觉得,相对于语言表达的新颖、现代、简洁,性能更加重要。这也是发展了几十年的语言的巨大优势,因为它们都是从实战中不断调优走出来的。
  • 仓颉是不是开源的?真不清楚,现在gitee和github上都没看到,也无法试用,官方的包管理平台也没有。和鸿蒙一样,它的生态也及其重要,各种应用框架、中间件,还得靠社区来建。
  • 从仓颉的API来看,目前仓颉是支持框架Linux、Windows、MacOS、OHOS,未来是否能跨安卓和IOS?
  • 仓颉有值类型,加上华为在C和C++上的积累,native的能力应该差不了

三、补充

最后,分享几张PPT,来自仓颉的创作者,点出了仓颉的核心优势。几个亮点说一下,初步理解,可能会有误解:

  • AgentDSL:运行态AI,感觉大概的意思就是C#的SemanticKernel,不过它在语言层面实现了。
  • 全场景领域扩展:利用元编程和eDSL,扩展语法,比如用于HarmonyOS开发的声明式语法。类似C#在EFCore、Blazor、Xaml、声明式UI等领域的扩展。
  • 全并发GC/协程:解决全域停顿,以及用户态轻量级协程。C#从.NET6开始,性能优化方面的投入产出一直很给力,具体性能如何要看测试数据了。仓颉给出的Benchmarks Games数据,比Swift和Java提升26%。如果是比Benchmarks Games数据,C#自然是优于仓颉的。注:C#的绿色协程一直在提案中。
  • 跨语言互操作:仓颉和C的互操作(C++?)。这是C#的优势之一。
  • 函数式编程:函数是一等公民,近几年新出现的语言,都是这样。好在C#有委托,我觉得Action和Func比函数类型更优美,在TS中,我经常会用泛型type,自己包括Action和Func来用。

1.png

2.png

3.png

4.png

5.png

6.png

7.png

8.png

 

作者:functionMC
链接:https://www.zhihu.com/question/659511308/answer/3540488886

下班回家正好刷到这个问题,答一波。

成份声明:菊厂弱鸡Java小开发,编程爱好者

第一次接触仓颉,应该是2022年的年中,项目组正好有个项目需要以仓颉语言实现试试水,我主动请缨揽了下来,想了解下这个新奇的玩意。当时我负责的组件非常简单,就是一个Json序列化的小组件,不求做到JackSon、Gson这类的工具库全部能力,至少也要把JavaBen相关的映射进行一个转换。

开发过程中我的内心心路历程基本是这样的:

《什么?不支持注解?@Getter @Setter我奶奶都会用你没有?》

《天塌了?没有反射功能,这玩意还能实现吗?》

《深入研究Jackson,反射不是必需品,只需要运行期类型结构信息》

《仓颉元编程是什么玩意?仓颉宏又是啥原理?》

《woo! 还可以这样,定好宏规则自己帮我写代码,好像有大学学编译原理的影子了》

《不能再搞研究了,项目要延期了,交付要紧》

《反正项目是交了,好不好还不是领导一句话的事》

就这样,跟仓颉的短暂相处中,我基本了解到了仓颉的几个典型特征:

  • 元编程 —— 给高手战场,只要不怕麻烦,重复的东西基本可以做到轻松用宏定义消除
  • 语法机制 —— 反正我比较喜欢,比Java更简洁,但是Java转过来基本轻松上手
  • 静态编译 —— 在运行态时,冷启动时长以及资源占用有非常好的表现,在云原生时代和Serverless全局资源弹性伸缩的架构体系下有天然的优势,比JVM不知道高到哪里去了。
  • 能文能武 —— 函数编程非常方便,比Java简单很多,同时也对OOP支持度很高,这两点就决定了仓颉可大可小,既可以像在Python、Go那种小脚本中有较好的体验,又可以像Java一样做大型的系统设计。
  • 毛坯房 —— 这就不说了,22年的版本在SDK、工具链上基本上要啥啥没有,全靠自己编。

以上基本就是我对仓颉的第一印象,没有网上说的什么中文编程那么邪乎。

然后直到今年年初,我再次被抽调过来搞仓颉项目,结果发现本地的环境已经太落后了,仓颉已经在短短的两年不到的时间里迭代了20个版本,基本上每个月都有新的功能上线,之前吐槽的语言功能诸如反射、注解、test套件、对get/set的更高效支持以及各种高效类库,工具上也是百花齐放, Cangjie Studio,测试等等各类工具也在补齐,这一次我的开发无论是效率还是体验都大幅度提高了。

最后再啰嗦两句:

我个人的使用其实是有心态上的转变了,也可能是上班上久了也可能是心态变了——我从最开始仓颉的"仓颉啥都没有,我用它干啥",到现在确觉得"仓颉如果啥都有了,那还要我干啥",能够陪着一款语言产品一起成长是一件非常有意思的事情,倘若这玩意真成了,若干年后跟人吹牛说谁谁谁是仓颉之父,那我可以自豪的说我是仓颉之父的初创团队的首批马仔。

我就不绑架情怀之类的了,仅作为开发者自己来说,一门新语言首先它肯定是有利有弊,利在后发制人,取百家之所长,弊在百废待兴,需万千开发者共建。从0到1对开发者来说是一件非常有意义的事情,以前我自己开发基本上不关注基本原理,api拿来即用,现在每天关注的都是各类三方件优缺点到底是啥?仓颉实现能不能更优一些?只能说又回到了我喜欢的开发之路上。

作者:Saint
链接:https://www.zhihu.com/question/659511308/answer/3538007818


网站公告

今日签到

点亮在社区的每一天
去签到