花了一个下午快速浏览了一下仓颉(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来用。