• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuld
V2EX  ›  程序员

我发现了自研编程语言的一条出路

  •  
  •   xuld · 2 days ago · 2617 views

    一个月前,我将编译器的 23 万行源码全部移植到了自研编程语言。

    功能不变,但代码量直接缩减到了 19 万行。

    然后这个月用自研的语言继续自举开发,感觉越用越爽,也终于感受到了自研的价值。


    之前一直被质疑做小众语言毫无意义,但现在觉得:

    生产力才是硬道理。

    产品初期,不需要寻求他人认可。

    只要自己有用,那就 OK 了。

    等自己用了一段时间,产品也稳定后,必然能找到同样觉得它好用的用户。


    在我的语言里面,最重要的功能是“模式匹配、自动导入、自动构造函数、编译期装饰器、部分类”,之前的 4 万行代码就是靠这些功能省下来的。

    再也不用等主流语言支持,已经先用上了,确实很爽。

    不过,目前还有很多功能没实现。如果都实现了,开发效率还能再提升几个台阶。


    我觉得未来编程语言的价值不是为了让代码写起来更短,而是为了让代码读起来更清晰、测试起来更轻松,因为 AI 编程是趋势。

    我将其他语言的代码移植到自己的语言时,是写了一个小工具自动翻译的,而不是人工移植。这样正确性和效率都高很多。

    面向 AI 的编程语言,需要支持更多的静态分析和自我修复能力,同时也需要暴露更多的 LSP API 。

    未来编程语言的主战场,不是比谁的代码写起来更快,而是 AI 生成什么语言能更正确、token 更少。

    23 replies    2026-07-25 19:02:52 +08:00
    llsquaer
        1
    llsquaer  
       2 days ago
    你倒是发出来观摩下啊
    cc9910
        2
    cc9910  
       2 days ago
    娱乐就好,其实有很多小语种编程,但是没生态有什么用,难道一人维护全行业?
    xuld
        3
    xuld  
    OP
       2 days ago
    @cc9910 初期,生态不需要自己建,可以直接导入 go 的包,然后也做了工具直接将 go 的代码翻译过来。其他配套工具比如 ide 插件,都已经完善了
    xuld
        4
    xuld  
    OP
       2 days ago
    @llsquaer 语法风格和主流语言差不多,我认为多数程序员看了都不会反感。比如这是一段实际的代码:

    ```
    private getArrayElementTypeNode(node: TypeNode) {
    match (node) {
    case ParenthesizedTypeNode:
    return getArrayElementTypeNode(node.type)
    case ArrayLiteralTypeNode:
    if (node.elements.length == 1) {
    node = node.elements[0]
    if (node is ArrayLiteralTypeNode.RestElement) {
    return getArrayElementTypeNode(node.type)
    }
    }
    case ArrayTypeNode:
    return node.elementType
    }
    }
    ```

    优势在语言的自动分析、性能优化的能力。
    june4
        5
    june4  
       2 days ago
    这个语言可以用 ai vibe 吗
    xuld
        6
    xuld  
    OP
       2 days ago
    @june4 AI 没学过新语言。

    但 AI 可以正确理解这个语言写的代码(因为语法和主流语言差不多,AI 能猜对语法啥意思)。

    只是让他写这个语言的代码,容易按其他语言的习惯写了,容易写错。

    所以,我做了一个工具,AI 只生成 go 的代码,然后通过工具自动翻译成新语言。

    我自己就是这样用的。
    kissthekidlu
        7
    kissthekidlu  
       2 days ago
    人家说 ai 都是用现有的代码训练了,新的语言没有什么优势.
    redbule
        8
    redbule  
       1 day ago via Android
    怎么感觉你说的就是 moonbit 在做的…
    xinyu391
        9
    xinyu391  
       1 day ago
    内存管理是 手动还是 GC ?

    能创造编程语言,牛
    能写编译器,更牛
    skuuhui
        10
    skuuhui  
       1 day ago
    我觉得未来不再需要编程语言或者不再需要人类能看得懂和习惯的编程语言。
    xuld
        11
    xuld  
    OP
       1 day ago
    @xinyu391 我的语言是比较创新的设计:可选 GC ,意思是手动和 GC 都支持,而且是自动的:
    只要你的代码里出现了 new XX(),那就是自动 GC
    如果代码没有 new XX(),那就没有 GC ,这时内存有多种方式。
    1. 通过 Allocator.allocate<XX>() 申请,那就和 C 一样,需要开发者自己调用 Allocator.free() 释放。
    2. 通过 Allocator.createReferenceCounter<XX>() 申请,那就引用计数。
    3. 通过 Allocator.createSmartPointer<XX>() 申请,那就和 Rust 一样,编译器在作用域释放。
    1018ji
        12
    1018ji  
       1 day ago
    放出来让我们小白学习一下
    cloverzrg2
        13
    cloverzrg2  
       1 day ago
    "能自动翻译为 go 语言", go 的 typescript 吗
    SmiteChow
        14
    SmiteChow  
       1 day ago
    相信我写法只选一种是正道,人类需要束缚。ai 更甚。
    xuld
        15
    xuld  
    OP
       1 day ago
    @1018ji 语言我是从 2015 立项的,到现在 11 年,开发的其实比较完善了。

    之前的实践证明,放出来的意义不大,因为不会有路人真的去用这门语言,更不会有人贡献有质量的代码。

    我目前的策略是:

    不需要向外人证明这个语言很好用。

    只要我自己,以及少数愿意使用它的程序员,在使用了这门语言之后,开发效率确实提高了,那就继续开发下去。

    我不靠这个项目盈利,因为靠不了。

    但如果我自己靠这门语言,干活的效率比其他程序员高很多,那就很容易从其他程序员嘴里抢饭吃。

    所以现在践行方向是:语言不公开,一切以提升自己开发效率为目的。

    如果你认为这个项目可能对你也有帮助,可以发邮件私聊。
    panlatent
        16
    panlatent  
       1 day ago
    自己写编程语言,操作系统可能很好玩,但 99.99% 都是死路一条。
    xuld
        17
    xuld  
    OP
       1 day ago
    @SmiteChow 对的。一个功能只需要一种写法即可,大家只追求早点干完活下班,而不关心代码是否“优雅”
    levelworm
        18
    levelworm  
       1 day ago via iPhone
    需要写工具和文档吗?你这个自举了已经比较成熟了。
    xuld
        19
    xuld  
    OP
       1 day ago   ❤️ 1
    @levelworm 凡是自己做业务项目时用的到的工具都开发完了,比如 ide 插件、调试器、mcp 插件。
    文档没写,因为就自己以及几个熟人用,要啥文档。
    后面准备补一些文档,不过不是给人看的,是给 ai 看的
    fankcoder
        20
    fankcoder  
       1 day ago
    用闭源的语言开发公司的项目,让 ai 也看不懂,让公司无法淘汰你,是个好思路
    yafoo
        21
    yafoo  
       23h 42m ago via Android
    我写了个 mvc 框架,也是模块自动加载,懒加载,class 自动实例化,自动单例化
    xuld
        22
    xuld  
    OP
       22h 41m ago
    @yafoo 主流 MVC 框架都是这样设计的,“模块自动加载,懒加载,class 自动实例化,自动单例化”算是标准 MVC 框架的基础功能了。

    但是我的设计不一样,我的 MVC 框架非常轻量,因为大量的功能都是由语言底层提供的。

    比如“懒加载”,任何项目其实都或多或少需要懒加载,不是说只有 Web 才需要,所以这个能力由编译器的性能优化模块提供,只要用了这个语言就能享受。和 MVC 框架无关。

    我语言里面,写一个 hello world 的 HTTP restful 接口,代码是这样的:

    @get("/api/hello") function hello(input: string) {
    return { input }
    }

    然后浏览器打开 localhost/hello?input=abc ,就会返回 {"code": 0, "data": { "input": abc } }

    普通静态页是这样写的:

    @get("/index.html") function index(input = "hello world") {
    return html`<div>${input}</div>`
    }
    levelworm
        23
    levelworm  
       3h 47m ago via iPhone
    @xuld 的确是大佬了,请问在哪里高就
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2910 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 14:50 · PVG 22:50 · LAX 07:50 · JFK 10:50
    ♥ Do have faith in what you're doing.