V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
feelm
V2EX  ›  程序员

cangjie 开发语言 7 月 30 号开源

  •  
  •   feelm · 13 天前 · 7068 次点击

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

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









    这语法真是集百家之长啊,给我看出来了几种语言的影子
    fengxsong
        33
    fengxsong  
       13 天前
    看了下语法,怎么搞了个几不像出来了。。
    simo
        34
    simo  
       13 天前
    @aino 看语法,几种语言都写过,我用这语言写的话,大脑一定会很乱。
    xFrye
        35
    xFrye  
       13 天前   ❤️ 1
    arkts 还没捂热 cangjie 又来了,看来大厂选择跨平台方案是很正确的,不然要被玩死
    janus77
        36
    janus77  
       12 天前
    很久之前看过一个同样的帖子,当时我的回复放到现在应该也没问题:先对标一下 v 语言吧
    2024
        37
    2024  
       12 天前   ❤️ 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  
       12 天前
    算了吧,我宁愿用 V 站老哥开发的 Nature: https://ex.noerr.eu.org/t/939430
    2024
        39
    2024  
       12 天前
    包管理器还是很原始
    murmur
        40
    murmur  
       12 天前
    @2024 一个鸿蒙官方就有或者曾经有 java js arkts 未来加个仓颉四个版本的 sdk ,强如苹果都不敢这么搞
    iloveayu
        41
    iloveayu  
       12 天前
    @liuidetmks 哈哈哈哈,shadowsocks-cangjie 真是这辈子有了!
    2024
        42
    2024  
       12 天前
    @murmur 仓颉好像已经静默开发 5 年还是 6 年了,从决心上看,肯定是继续投入和能成的
    CodeCodeStudy
        43
    CodeCodeStudy  
       12 天前
    模式匹配和结构体搞得有点复杂了,没有必要
    caiqichang
        44
    caiqichang  
       12 天前
    不是,开源还要挑日子的吗
    Citrullus
        45
    Citrullus  
       12 天前
    我可能更愿意使用 MoonBit
    Torpedo
        46
    Torpedo  
       12 天前
    @skiy #12 那有不需要实名的开发工具吗
    ChaimeLonic
        47
    ChaimeLonic  
       12 天前
    没看到设计理念,rust 有内存安全,go 专为云原生而生,swift 是为了取代 OC 。仓颉还没自己的特色,如果是为 hm 那实在是太单薄了
    dingyaguang117
        48
    dingyaguang117  
       12 天前
    真·究极缝合怪,有点厉害
    alleluya
        49
    alleluya  
       12 天前
    @2024 #37 那以后鸿蒙的 app 是全部要切换到 cangjie? arkts 呢?
    qxmqh
        50
    qxmqh  
       12 天前
    我建议直接华为把 E 语言买了吧。纯中文编程。
    aloxaf
        51
    aloxaf  
       12 天前
    我不反对搞新语言,但是这种没啥设计目的,单纯就是为了「国产化」而发明的语言,再叠加上华为式开源的 debuff ,我很怀疑它的可持续性。
    2024
        52
    2024  
       12 天前
    @alleluya #49 如果你是 arkts 组领导,你会同意吗? 还会设计到社区再重建,动作太大,应该是做仓颉做 os 性能共享库
    totoro52
        53
    totoro52  
       12 天前
    @skiy #12 问题是 你还不是要用它的 ide 去开发,那到头来还是要实名
    alleluya
        54
    alleluya  
       12 天前
    @2024 #52 可以简单理解成前端 arkts 但是后端是 cangjie? 类似 tauri 这样?
    skiy
        55
    skiy  
       12 天前 via iPhone
    @Torpedo 它就一 vscode 插件,用 vscode 就行啊。开发鸿蒙 OS 应用的需要登录账号,签名包。
    Geon97
        56
    Geon97  
       12 天前
    看了些代码感觉语法有点像 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  
       12 天前 via iPhone
    @totoro52 不需要啊。你倒是点开那个网址看看再说话。它有 vscode 插件。这语言是通用语言。就像 kotlin ,你也可以拿来开发 web api 。不一定非得 dev eco 。但像上面说的,超级缝合怪。有 class ,有 struct ,有 interface…
    Geon97
        58
    Geon97  
       12 天前
    @Geon97 #55
    skiy
        59
    skiy  
       12 天前 via iPhone
    @alleluya 听说是如果注重性能,用 cangjie…所以应该并行很长时间
    loolac
        60
    loolac  
       12 天前
    快点用 cangjie 写个 vscode ,现在 vscode 很讨厌的了,一点也不干净了。
    lyxxxh2
        61
    lyxxxh2  
       12 天前
    国产之光--仓颉编程语言的实战案例分析:
    https://open.alipay.com/portal/forum/post/196401016

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

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

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

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

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

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

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

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

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

    一是没开源,标准库有 bug ,比如 std.ast 里的很多东西一放到多线程环境里就直接 crash 且没有报错;二是抄 Rust 的思路但是缺少很多东西,标准库里实际还是以 Java 的思维往上套,缺少很多应该暴露出的接口,导致泛型什么的都很难用;三是 feature 太多,没有做到很好的取舍,导致各种地方需要记忆的很多(比如 mut 关键字只有在值类型的 struct 中需要,因为 class 里是默认可变的),知乎上还说类型系统有洞,会在后续解决;四是编译实在是太慢了,除了分包外完全没有缓存,看看 CangjieMagic 初次编译和增量编译用时就知道了。
    CodeCodeStudy
        79
    CodeCodeStudy  
       11 天前
    我在 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  
       11 天前
    @CodeCodeStudy #79 我是用 docker 里的 ubuntu 安装的,需要在 docker run 的时候加上--privileged=true
    CodeCodeStudy
        81
    CodeCodeStudy  
       11 天前
    @CodeCodeStudy #79 可能是我的 docker 版本有点老了,我的 docker 版本是 18.09.0 ,ubuntu 是 24.04
    runningman
        82
    runningman  
       10 天前
    垃圾开源会有人看吗
    flydogs
        83
    flydogs  
       10 天前
    垃圾开源了还是垃圾
    glcolof
        84
    glcolof  
       10 天前
    @lyxxxh2
    语言是没办法封杀的,比如美国人可以封杀中国让中国人说不了英语吗?显然不行。编程语言也是一样的,比如 C++,C++语言只是一个标准,谁都可以根据这个标准实现自己的编译器,所以微软可以做 MSVC++编译器,苹果可以赞助 Clang 编译器,开源社区也可以自己做 GCC 。美国人只能说,禁止微软把 MSVC 编译器卖给中国,不能禁止中国人用 C++语言。
    开源软件也是一样的,代码我已经下载到自己的电脑上了,美国人怎么禁止我使用呢?禁止不了,对不对。而且已经给与的授权是无法撤销的,即使开源软件作者说,从今天开始,不允许中国人用,那也只对从今天开始发布的新版本有效,对之前的版本都无效,之前版本的开源软件,仍然可以合法使用。
    所以你说的“开源软件:中国人不给用”不存在。
    lyxxxh2
        85
    lyxxxh2  
       10 天前
    @glcolof
    怪我不该说"不给用",应该说"不给更新",不然就没这么多事了。
    我想表达的: cangjie 没人用,但也为国内留了条后手。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2496 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:28 · PVG 10:28 · LAX 19:28 · JFK 22:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.