华为仓颉的beta版已经公开可下载

华为的编程语言仓颉的beta版已经公开,可以随时下载,有没有佬有兴趣做个cangjie-mode

下载链接如下

下载中心-仓颉编程语言官网

1 个赞

这语言有啥优势?

没有优势,华为甚至不打算开源

看起来像是对标Swift的鸿蒙软件开发专用语言?

这年头连 .net 都开源了还有语言不准备开源它的编译器或者 vm?

是的,跟swift的定位一样

华为自称有很牛逼的gc以及针对他们自研芯片的相互优化,所以不打算开源,这个听个乐就得了

开源很容易暴露一些问题,不开源就只能靠猜,不能形成证据链。

大概看了下语法文档,看起来像是Java的变体,跟别的OOP语言相比没看出来有什么特点?依然是基于开源软件套皮魔改的路子,无非是魔改的程度不同。

1 个赞

站在巨人的肩膀上,并努力超越巨人 :grin:

這白皮書感覺寫的人自己沒讀,markdown 語法錯的地方都沒有改。

1 个赞

见怪不怪了,都是草台班子,有可能人家压根没读过比较权威的 Markdown 资料,记法都是模仿学来的。我估计像全半角字符间夹空格这种事情更加不会注意;刚看了下大小写也有问题,官网上把 VS Code 打成 VScode

1 个赞

集成了好多目前流行的、很酷的 features 。不知道是否如白皮书所说的那么高效、安全。有时间了写个小东西玩玩看。

尾随 lambda 语法糖,我还是第一次见,感觉比较好玩,也让人迷惑。

好奇这个语法的优势是什么

也是回复 @ddaren

尾随 lambda 语法糖的功能,就是把闭包当作新语法使用。比如以下 python 代码

with open("/foo/bar") as f:
  f.read_all()

用尾随 lambda 可以这么写 (伪代码)

using namespace file;
with("/foo/bar") { f =>
  f.read_all();
}

# 等价于
file::with("foo/bar", { f => f.read_all() })

还可以这么用

[1, 2, 3].for_each { x =>
  print(x);
}
1 个赞

第一眼感觉这个就是 Kotlin

这个特性是从kotlin抄的,swift也有这个特性,优势是可以更方便地以声明式语法编写UI,方便后续写鸿蒙平台的App,当然arkts也抄了这个特性

2 个赞

smalltalk 就有這個。

 1 to: 20 do: [:x | x printNl ]

对,我看了 Kotlin 和 Swift 对 trailing lambda 的介绍,知道这个语法糖的展开是什么。除了若有似无的可读性,还有啥?

重复利用了 lambda 的语法,没有引入新的语法结构,就是它的特性。