cangjie 开发语言 7 月 30 号开源 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
feelm

cangjie 开发语言 7 月 30 号开源

  •  
  •   feelm 2025 年 6 月 22 日 9272 次点击
    这是一个创建于 305 天前的主题,其中的信息可能已经有所发展或是发生改变。

    超级无敌大杂烩终于要开源了,目前进度比较慢。未来会成为红 meng 开发的核心语言,与 arkt 和 c/c++。

    85 条回复    2025-06-26 09:19:48+08:00
    wsseo
        1
    wsseo  
       2025 年 6 月 22 日
    也要搞所有权?
    cmos
        2
    cmos  
       2025 年 6 月 22 日   2
    乍一看:Rust+Kotlin+Swift 。仔细一看,这不 Carbon+Dart 吗?好好想想:不会是想开发期实时预览+运行期高性能吧?
    Leviathann
        3
    Leviathann  
       2025 年 6 月 22 日
    effect handler 都来了
    clino
        4
    clino  
       2025 年 6 月 22 日
    只要语言本身还不错,然后 LLM 模型能支持就行了,将来大量都是 vibe 编程
    w568w
        5
    w568w  
       2025 年 6 月 22 日
    @wsseo 我记得我 22 年参加保密测试的时候就有「所有权」了,不知道现在又拿出说是什么意思。不过这个 Effect Handler 看着不错
    orion1
        6
    orion1  
    PRO
       2025 年 6 月 22 日
    这语言不用汉字编写吗
    Aicnal
        7
    Aicnal  
       2025 年 6 月 22 日   5
    这么多语言不用,非得用 cangjie 吗?我咋记得刚开始试用的时候还要实名,直接劝退了
    BeiChuanAlex
        8
    BeiChuanAlex  
       2025 年 6 月 22 日
    @Aicnal #7 实名????哈????
    Aicnal
        9
    Aicnal  
       2025 年 6 月 22 日   1
    caola
        10
    caola  
       2025 年 6 月 22 日
    cangjie 的语法还是不错的,就看以后的生态了
    liuidetmks
        11
    liuidetmks  
       2025 年 6 月 22 日
    @Aicnal NB 大了,实名,
    程序自动签名,方便定位到个人
    skiy
        12
    skiy  
       2025 年 6 月 22 日   6
    @Aicnal 你说的这个是鸿蒙开发工具。https://cangjie-lang.cn/ 这个才是语言本身。不要听风就是雨。
    SayHelloHi
        13
    SayHelloHi  
       2025 年 6 月 22 日
    第三方库多么
    gogozs
        14
    gogozs  
       2025 年 6 月 22 日
    都叫仓颉了,为什么不能是中文编程
    FalconD
        15
    FalconD  
    2025 年 6 月 22 日 via Android
    Lifetime 和 effect handler 就纯吹,你司又从哪里挖来懂这些 open problems 的人
    pinerge
        16
    pinerge  
       2025 年 6 月 22 日
    shit
    skiy
        17
    skiy  
       2025 年 6 月 22 日
    @SayHelloHi https://gitcode.com/Cangjie-TPC 看了下,140 多仓库。
    james122333
        18
    james122333  
       2025 年 6 月 22 日 via Android
    大杂烩语言 名不符实不是中文
    也不简单易用
    Aicnal
        19
    Aicnal  
       2025 年 6 月 22 日
    @skiy 原来是这样,我一直以为是语言本身就要实名,当时就被吓一跳,周围很多朋友对这个语言评价都挺高的
    skiy
        20
    skiy  
       2025 年 6 月 22 日
    @Aicnal 感觉有点复杂,我怀疑是使用 rust 开发的,还没有自举。前段时间刚把一些网络库分拆出来成 stdx 库了,还非常不稳定。大概瞄了下,还没详细了解。反正目前大杂烩。估计 arkts 还得继续使用吧。
    Aicnal
        21
    Aicnal  
       2025 年 6 月 23 日
    @skiy 我也看了下,果断继续回去写我的 Go ,而且基本上都是后端的
    c398425861
        22
    c398425861  
       2025 年 6 月 23 日
    跟仓颉输入法撞名
    c0t
        23
    c0t  
       2025 年 6 月 23 日 via iPhone
    时髦概念全加上了,要是真能融合不违和还是有点兴趣的
    murmur
        24
    murmur  
       2025 年 6 月 23 日
    @BeiChuanAlex 鸿蒙的 IDE 都需要注册开发者账号啊,要不很多功能是没法用的
    kapaseker
        25
    kapaseker  
       2025 年 6 月 23 日
    仓颉,华为是打算以后所有的鸿蒙开发都用这个语言吗?那现在的 TS 这一套怎么办?
    dcdlove
        26
    dcdlove  
       2025 年 6 月 23 日
    挂羊头卖狗肉,zz 任务下的畸形产物罢了
    user1284
        27
    user1284  
       2025 年 6 月 23 日   4
    用这个写自己个人项目的要被笑一辈子, 公司项目那是没办法, 简单来说, 就是纯粹的狗屎.
    uxstone
        28
    uxstone  
       2025 年 6 月 23 日
    有好多种语言的影子
    LuJason
        29
    LuJason  
       2025 年 6 月 23 日
    @Aicnal #7 现在也需要手机号注册
    Fallenwood
        30
    Fallenwood  
       2025 年 6 月 23 日
    @Aicnal 一开始确实要实名, 还要发邮件签保证书
    akin520
        31
    akin520  
       2025 年 6 月 23 日
    内测人员,需要实名,开放后应该不需要了吧
    aino
        32
    aino  
       2025 年 6 月 23 日
    import std.collection.*
    import std.random.*
    import std.math.*

    const M = 200000
    const N = 16
    func task(): Int64 {
    var n: Int64 = 0
    let random = Random()
    for (_ in 0..M) {
    let x = random.nextFloat64()
    let y = random.nextFloat64()
    if ((x - 0.5) ** 2 + (y - 0.5) ** 2 < 0.25) {
    n++
    }
    }
    return n
    }

    main() {
    let futures = ArrayList<Future<Int64>>()
    for (_ in 0..N) {
    let future = spawn { task() }
    futures.append(future)
    }
    var n = 0
    for (future in futures) {
    n += future.get()
    }
    let pi = Float64(n) / Float64(M * N) * 4.0
    println("π ≈ ${pi}")
    println("deviation: ${abs(Float64.PI - pi)}")
    }









    这语法真是集百家之长啊,给我看出来了几种语言的影子
    dummyx
        33
    dummyx  
       2025 年 6 月 23 日
    看了下语法,怎么搞了个几不像出来了。。
    simo
        34
    simo  
       2025 年 6 月 23 日
    @aino 看语法,几种语言都写过,我用这语言写的话,大脑一定会很乱。
    xFrye
        35
    xFrye  
       2025 年 6 月 23 日   1
    arkts 还没捂热 cangjie 又来了,看来大厂选择跨平台方案是很正确的,不然要被玩死
    rb6221
        36
    rb6221  
       2025 年 6 月 23 日
    很久之前看过一个同样的帖子,当时我的回复放到现在应该也没问题:先对标一下 v 语言吧
    2024
        37
    2024  
       2025 年 6 月 23 日   1
    我用 cangjie 已经深入开发大半年了,已经开发过 web 框架,各种小工具,MySQL 驱动,DIY脚本语言,应该有发言权了。

    https://gitcode.com/service
    https://gitcode.com/cangjie-script


    仓颉整体能用,语言内部概念还是比较先进的,但是还是有不小问题。


    1. 如果作为开源项目,从这段时间观察,他内部还是作为一个内部项目做进行的,语言在已经公测情况下,标准库大改不会预告,不会通知,更不会 issues 进行讨论。
    2. 2025 年从标准库改动过程,能观察一些有趣的事情,比如单词经历了非常大规模的修改,函数、参数、库名都涉及,至少证明前期人员经验都不是很充足,当然也能看到一直在进步了。
    3.定位尴尬,从文档例子,和官方库例子的前后端比例大概能猜是为了客户端设计的(前期),而且 sdk 也分了鸿蒙版本和通用版本,而鸿蒙版本一直版本落后,IDE 更新不上,调试只能打印等;为了客户端设计的场景必不可少要和 ARKTS 竞争了。通用领域就要和 go java c 等竞争, 但是语言上没有你有我无的特征,更无错位竞争,性能上更是因为 Option 的设计大概落后其他 go c 等语言,比如 mysql 驱动永远比别的语言多几层 switch 和 if 做类型转换,传递到业务实现更多。
    gullitintanni
        38
    gullitintanni  
       2025 年 6 月 23 日
    算了吧,我宁愿用 V 站老哥开发的 Nature: t/939430
    2024
        39
    2024  
       2025 年 6 月 23 日
    包管理器还是很原始
    murmur
        40
    murmur  
       2025 年 6 月 23 日
    @2024 一个鸿蒙官方就有或者曾经有 java js arkts 未来加个仓颉四个版本的 sdk ,强如苹果都不敢这么搞
    iloveayu
        41
    iloveayu  
       2025 年 6 月 23 日
    @liuidetmks 哈哈哈哈,shadowsocks-cangjie 真是这辈子有了!
    2024
        42
    2024  
       2025 年 6 月 23 日
    @murmur 仓颉好像已经静默开发 5 年还是 6 年了,从决心上看,肯定是继续投入和能成的
    CodeCodeStudy
        43
    CodeCodeStudy  
       2025 年 6 月 23 日
    模式匹配和结构体搞得有点复杂了,没有必要
    dandel1on
        44
    dandel1on  
       2025 年 6 月 23 日
    不是,开源还要挑日子的吗
    Citrullus
        45
    Citrullus  
       2025 年 6 月 23 日
    我可能更愿意使用 MoonBit
    Torpedo
        46
    Torpedo  
       2025 年 6 月 23 日
    @skiy #12 那有不需要实名的开发工具吗
    ChaimeLonic
        47
    ChaimeLonic  
       2025 年 6 月 23 日
    没看到设计理念,rust 有内存安全,go 专为云原生而生,swift 是为了取代 OC 。仓颉还没自己的特色,如果是为 hm 那实在是太单薄了
    dingyaguang117
        48
    dingyaguang117  
       2025 年 6 月 23 日
    真究极缝合怪,有点厉害
    alleluya
        49
    alleluya  
       2025 年 6 月 23 日
    @2024 #37 那以后鸿蒙的 app 是全部要切换到 cangjie? arkts 呢?
    qxmqh
        50
    qxmqh  
       2025 年 6 月 23 日
    我建议直接华为把 E 语言买了吧。纯中文编程。
    aloxaf
        51
    aloxaf  
       2025 年 6 月 23 日
    我不反对搞新语言,但是这种没啥设计目的,单纯就是为了「国产化」而发明的语言,再叠加上华为式开源的 debuff ,我很怀疑它的可持续性。
    2024
        52
    2024  
       2025 年 6 月 23 日
    @alleluya #49 如果你是 arkts 组领导,你会同意吗? 还会设计到社区再重建,动作太大,应该是做仓颉做 os 性能共享库
    MIUIOS
        53
    MIUIOS  
       2025 年 6 月 23 日
    @skiy #12 问题是 你还不是要用它的 ide 去开发,那到头来还是要实名
    alleluya
        54
    alleluya  
       2025 年 6 月 23 日
    @2024 #52 可以简单理解成前端 arkts 但是后端是 cangjie? 类似 tauri 这样?
    skiy
        55
    skiy  
       2025 年 6 月 23 日 via iPhone
    @Torpedo 它就一 vscode 插件,用 vscode 就行啊。开发鸿蒙 OS 应用的需要登录账号,签名包。
    Geon97
        56
    Geon97  
       2025 年 6 月 23 日
    看了些代码感觉语法有点像 java 、更像 Scala
    还有 cangjie 官网不知道做的什么测试,先不讲为什么仓颉说自己最快(遥遥领先同行),我好奇图里为什么 go 比 java 慢,是做的什么测试呢? Benchmarks Game 官网数据 go 性能和内存要优于 java
    https://cangjie-lang.cn/docs?url=%2F0.53.18%2Fwhite_paper%2Fsource_zh_cn%2Fcj-wp-performance.html
    skiy
        57
    skiy  
       2025 年 6 月 23 日 via iPhone
    @totoro52 不需要啊。你倒是点开那个网址看看再说话。它有 vscode 插件。这语言是通用语言。就像 kotlin ,你也可以拿来开发 web api 。不一定非得 dev eco 。但像上面说的,超级缝合怪。有 class ,有 struct ,有 interface…
    Geon97
        58
    Geon97  
       2025 年 6 月 23 日
    @Geon97 #55
    skiy
        59
    skiy  
       2025 年 6 月 23 日 via iPhone
    @alleluya 听说是如果注重性能,用 cangjie…所以应该并行很长时间
    loolac
        60
    loolac  
       2025 年 6 月 23 日
    快点用 cangjie 写个 vscode ,现在 vscode 很讨厌的了,一点也不干净了。
    lyxxxh2
        61
    lyxxxh2  
       2025 年 6 月 23 日
    国产之光--仓颉编程语言的实战案例分析:
    https://open.alipay.com/portal/forum/post/196401016

    cangjie 都是站在巨人肩膀上开发,没有历史包裹。
    再差也不能差那里去吧。
    不过生态估计起不来,"国产" + "遥遥领先"标签,印象不咋地。
    lyxxxh2
        62
    lyxxxh2  
       2025 年 6 月 23 日
    @aloxaf
    给政府用吧。
    如果开战了,开源语言: 中国人不给用 (我想没人会信 开源无国界吧)
    普通人无所谓,政府的话,也要点脸的吧。
    loolac
        63
    loolac  
       2025 年 6 月 23 日
    @lyxxxh2 这个链接里面的中文代码,如果用 AI 生成这样的代码,是不是注释都省了 ~ 让我手写可能感觉不咋样,AI 生成的中文代码,没那么大的抗拒感呢
    lyxxxh2
        64
    lyxxxh2  
       2025 年 6 月 23 日
    @loolac
    注释省不了的,一个复杂的函数 光读代码能死人。
    如果要手写,正常的拼音输入,打字效率太低了。
    mizuki9
        65
    mizuki9  
       2025 年 6 月 23 日
    特性看起来很多,结果好像写出来的就是 Java ,翻几个三方库感觉就是另一个版本的 kotlin 。
    如果真的正式发布了 1.0 ,应该就是和 Java 、c# 一个生态位的,但别人生态很强,感觉似乎没什么必要(看起来完全打不过别人吧),不是很看好
    Torpedo
        66
    Torpedo  
       2025 年 6 月 23 日
    @skiy #55 那除了开发 OS 这个语言还有什么别的场景?
    loolac
        67
    loolac  
       2025 年 6 月 23 日
    @lyxxxh2 所以要用 AI ,不止生成注释,还要把注释写成诗,然后再生成代码像这样,哈哈哈。
    ```
    应用 登录系统 {
    /*
    * 登楼远望思无穷,系统门扉自此通。
    * 一重验证一重锁,守护数据似城墉。
    */

    页面 登录页面 {
    标题 = "用户登录"; /* 门楣高悬题金字,待客登临需验名 */

    输入框 用户名 {
    占位符 = "请输入用户名"; /* 请君留下芳名姓,莫做匿名访客行 */
    }

    输入框 密码 {
    占位符 = "请输入密码"; /* 密语暗藏锦囊里,千金不换此中情 */
    类型 = "密码"; /* 墨迹隐现星点迹,如同雾里看花明 */
    }

    按钮 "登录" {
    当点击 {
    /*
    * 验罢名帖对暗号
    * 三重关卡九重哨
    * 若得匹配金钥纹
    * 宝阁大门应声开
    */
    如果 (用户名.值 == "admin" && 密码.值 == "123456") {
    跳转(首页); /* 验证通过登堂去,锦绣华堂任君游 */
    } 否则 {
    弹窗("用户名或密码错误!"); /* 错把冯京当马凉,且看提示再思量 */
    }
    }
    }
    }

    页面 首页 {
    标题 = "欢迎进入系统"; /* 朱门洞开迎贵客,金匾高悬贺登临 */
    文本 = "这是主页面内容"; /* 琳琅满目皆珍宝,随君取用乐逍遥 */
    }
    }
    ```
    james122333
        68
    james122333  
       2025 年 6 月 23 日 via Android
    @aloxaf

    有问题的不是国产化 是没端出好东西的问题
    tianxiewuhua
        69
    tianxiewuhua  
       2025 年 6 月 23 日
    很难撼动各家 kmp 的基建了感觉
    WebKit
        70
    WebKit  
       2025 年 6 月 23 日
    开源就开源吧,一个各种抄袭的语言有啥意思,要不是强制推鸿蒙,能有谁用
    james122333
        71
    james122333  
       2025 年 6 月 23 日 via Android
    @lyxxxh2

    这是仓颉? 只是模板?
    Solael
        72
    Solael  
       2025 年 6 月 23 日
    实名制,禁侧载的生态,味儿可太正了
    skiy
        73
    skiy  
       2025 年 6 月 23 日 via iPhone
    @Torpedo 你看网站中语言的介绍啊。它就一通用语言,场景除了开发 app ,跟其它语言一个样。我居然看到有人拿来开发 GUI 桌面软件。我就大概了解了表面而已。
    glcolof
        74
    glcolof  
       2025 年 6 月 23 日
    @lyxxxh2
    首先,语言是语言,编译器是编译器,IDE 是 IDE ;
    其次,开源软件要怎么做才能实现“特定国家的人用不了”这个功能?
    levelworm
        75
    levelworm  
       2025 年 6 月 23 日
    鸿蒙的 c/c++系统开发目前的文档怎么样?
    lyxxxh2
        76
    lyxxxh2  
       2025 年 6 月 24 日
    @glcolof
    我不理解你说的首先,为什么会提到编译器和 ide 。

    其次:像 chatgpt 之前那样,禁止中国访问还是可以的,不过验证肯定更为严格。
    再者,政府要不要也无视规则绕过呢?
    lyxxxh2
        77
    lyxxxh2  
       2025 年 6 月 24 日
    @lyxxxh2
    我大概理解你意思了,你是说已经下载好的。
    我意思是指在线之类,比如官方 文档等。
    OverflowCat
        78
    OverflowCat  
       2025 年 6 月 24 日
    仓颉目前的进度还是太慢了,很多应该做好的东西都没做好,就已经用上生产了。这里说几个我的体验:

    一是没开源,标准库有 bug ,比如 std.ast 里的很多东西一放到多线程环境里就直接 crash 且没有报错;二是抄 Rust 的思路但是缺少很多东西,标准库里实际还是以 Java 的思维往上套,缺少很多应该暴露出的接口,导致泛型什么的都很难用;三是 feature 太多,没有做到很好的取舍,导致各种地方需要记忆的很多(比如 mut 关键字只有在值类型的 struct 中需要,因为 class 里是默认可变的),知乎上还说类型系统有洞,会在后续解决;四是编译实在是太慢了,除了分包外完全没有缓存,看看 CangjieMagic 初次编译和增量编译用时就知道了。
    CodeCodeStudy
        79
    CodeCodeStudy  
       2025 年 6 月 25 日
    我在 aarch64 的 ubuntu 上都安装失败了,cjc 是正常的,cjpm 报错了,错误是

    2025-06-24 09:59:44.187457 17 F pthread_create failed for GCPoolThread init reason Operation not permitted return 1
    17 E Thread "cjpm" catched unhandled SIGABRT (Aborted) from native frame. signal pc: 0xffff29007608
    17 E #0 0xffff29007608 in ? from /lib/aarch64-linux-gnu/libc.so.6
    Aborted (core dumped)
    CodeCodeStudy
        80
    CodeCodeStudy  
       2025 年 6 月 25 日
    @CodeCodeStudy #79 我是用 docker 里的 ubuntu 安装的,需要在 docker run 的时候加上--privileged=true
    CodeCodeStudy
        81
    CodeCodeStudy  
       2025 年 6 月 25 日
    @CodeCodeStudy #79 可能是我的 docker 版本有点老了,我的 docker 版本是 18.09.0 ,ubuntu 是 24.04
    runningman
        82
    runningman  
       2025 年 6 月 25 日
    垃圾开源会有人看吗
    flydogs
        83
    flydogs  
       2025 年 6 月 25 日
    垃圾开源了还是垃圾
    glcolof
        84
    glcolof  
       2025 年 6 月 25 日
    @lyxxxh2
    语言是没办法封杀的,比如美国人可以封杀中国让中国人说不了英语吗?显然不行。编程语言也是一样的,比如 C++,C++语言只是一个标准,谁都可以根据这个标准实现自己的编译器,所以微软可以做 MSVC++编译器,苹果可以赞助 Clang 编译器,开源社区也可以自己做 GCC 。美国人只能说,禁止微软把 MSVC 编译器卖给中国,不能禁止中国人用 C++语言。
    开源软件也是一样的,代码我已经下载到自己的电脑上了,美国人怎么禁止我使用呢?禁止不了,对不对。而且已经给与的授权是无法撤销的,即使开源软件作者说,从今天开始,不允许中国人用,那也只对从今天开始发布的新版本有效,对之前的版本都无效,之前版本的开源软件,仍然可以合法使用。
    所以你说的“开源软件:中国人不给用”不存在。
    lyxxxh2
        85
    lyxxxh2  
       2025 年 6 月 26 日
    @glcolof
    怪我不该说"不给用",应该说"不给更新",不然就没这么多事了。
    我想表达的: cangjie 没人用,但也为国内留了条后手。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5050 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 160ms UTC 03:56 PVG 11:56 LAX 20:56 JFK 23:56
    Do have faith in what you're doing./span>
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86