第四届七牛实训营开幕式上,七牛云创始人兼CEO许式伟(https://github.com/xushiwei)分享了 XGo(原Go+)的全景图。这次分享与以往有所不同,他不仅介绍了 XGo 的技术特性,更重要的是阐述了 XGo 背后的设计哲学和未来愿景。

AI 时代:从精细化分工到超级个体

许式伟在开营之初提到了人才能力象限的概念。在他看来,AI 时代带来的最大变化,就是我们的分工不再基于精细化的工业逻辑,而是超级个体的逻辑。这与王佳梁老师提到的“AI 时代需要创新型人才”形成了呼应。

未来的工作机会变少,是因为越来越多的工作变成了独立创作的机会。许式伟提到了一本叫《一人公司》的书,讲述一个人可以开一家公司,这在以前是不可想象的。他在 2017 年造就平台的演讲中就提到过,公司会越来越小型化,今天这个趋势正在不可阻挡地发生。

个人的能力要求正在变得更加综合。以前大家会觉得:“我做商业化的,不用管技术怎么实现;我做技术的,不用管商业逻辑”,这种精细化的协同模式是大家很习惯的,但未来可能会被打破。

AI 对工程带来的三大变化

许式伟认为,AI 时代对工程带来了三个重要变化:

第一,AI 降低了工程的门槛,使得软件工程变得无处不在。我们以前认为不那么“软件工程”的话题,比如拍一部电影、造一个房子,未来也许会变成软件工程。软件工程会变得无处不在,而 AI 正在加速这个趋势。

第二,AI 提高了专业工程师的门槛,也改变了专业工程师的工作方式。今天很多人担心程序员会失业,但 AI 并没有从本质上消灭工程师,而是让每个人都有了成为了工程师的可能。从大的方向上,工程可以分为两个层面:工程师这个专业,以及工程思维。而工程思维正变成个体能力的底座,助力个体向超级个体转变。

第三,AI 时代让每个人的能力要求更综合。工业化的精细分工模式正在被颠覆了,今天的社会分工正越来越往超级个体发展。

超级个体需要的编程语言

编程语言发展已经很多年了,但他们满足超级个体的需求么?

许式伟分析了今天最流行的编程语言:

  • C/C++:擅长底层

  • Go:擅长后端

  • JavaScript:擅长前端

  • Python:擅长算法

这些语言仍然是基于精细化分工的逻辑设计的,但超级个体需要一门简单但无所不能的语言。

这里有几个看似矛盾的问题:

1. 真的有无所不能的语言吗?

2. 简单和无所不能是不是矛盾的?

3. AI 既然能写代码,为什么还要关心编程语言?

许式伟认为,最关键的点是:AI 写代码不代表我们不需要掌握这些代码。AI 是一个工具,但如果一个项目需要长期维护,可维护性就很关键。比如,一个项目需要三门语言(后端、前端、算法),这样的工程维护起来可能就会相对困难。而如果有一门语言能够打通整个信息科技的任督二脉,覆盖所有领域,能力强大但又简单易学,这必然是非常友好的。

XGo 就是想做类似的事。

XGo 的设计哲学:少就是指数级的多

XGo 想做的事情很多,但它考虑的最多的却是“做减法”。

许式伟经常说,他非常佩服 Go 团队,他们提出了“少就是指数级的多”的产品座右铭。

XGo 也秉承这个理念。为什么?

因为,可能每加一个功能,产品的适应范围就会缩小,而不是变大。这是所有产品经理都必须认真思考的问题。

许式伟提到,当他听到产品经理说: “我这个产品既能做 A 也能做 B,所以我应该比 A 和 B 都牛X”,他就会问一个问题:“既需要 A 又需要 B 的人大概比例有多少?” 如果对方答不出来,那对方大概率就犯了经验主义错误,因为事实上有可能既需要 A 又需要 B 的人反而会更少。

功能不是越多越好,简单的堆砌也意义不大。产品经理更应该考虑的是如何把一件事做到极致,而这也是 XGo 基础哲学里很重要的逻辑。

XGo 在设计理念,是在 Go 的基础上进行再一步精简。XGo 对使用者的要求是:最复杂的只需要理解什么是函数,然后就没然后了

在软件工程实践里,有很多复杂的东西:面向对象、虚函数等等,这些都是用来构建复杂工程的设施。但在 XGo 的设计中,大部分构建复杂工程的设施都是过度设计,只有函数是做组合的最好范式。有了函数就什么都已经完备了。

XGo 的融合生态:非自立门户的语言

XGo 还有一个很特别的地方:它是少有的几乎没有标准库的语言。为什么这么说?因为我们认为,全民编程语言一定是非自立门户的语言,它要打通的是整个信息科技或软件工程的任督二脉。

XGo 的标准库基本上都不是自己造的:

  • Go 的标准库就是 XGo 的标准库

  • C 和 C++的标准库就是 XGo 的标准库

  • Python 的标准库也是 XGo 的标准库

综合来看,Go、C、C++、Python、JavaScript 产生的生态资产总值约等于软件工程 55 年历史的所有资产总值。XGo 融合软件工程四大领域就是想复用这些已有的生态资产,而不是重新造轮子。

XGo = C × Go × Python × JavaScript + Scratch

XGo 在主页(https://xgo.dev)上写了这样一个公式:

XGo = C × Go × Python × JavaScript + Scratch

为什么有乘有加?

乘的意思是,我们认为 C、Go、Python、JavaScript 的资产几乎是正交的,它们之间重复的东西相对小,所以融在一个生态时,能做的事情在变大。这里的扩张不是线性扩张,而是一维变二维,变三维,变四维的关系。

Scratch 为什么是加而不是乘?因为 Scratch 不是工程的设施,它沉淀的资产是学习性的资产,是创造的结果性资产,尤其是针对 STEM 教育领域。我们已在 XBuilder 创客平台上兼容了 Scratch 的所有资产,让这些学习性的资产能够自动转成 XGo 代码写出来的工程。

XGo 希望实现 C、Go、Python、JavaScript 所有软件工程范畴的可复用资产的一体化,形成一个统一体系,通过最简单的语言表达出来,并且能相互协同。在此基础上,希望让语言覆盖的年龄段更小,小到 8 岁,所以需要足够的简单,足够的易学易用。

XGo 的发展历程:从 Go+ 到 XGo

XGo 在 2020 年 5 月 23 日诞生第一行代码,当时还叫 Go+。2021 年 9 月 27 日发布 1.0 版本,完成了兼容几乎所有 Go 语法的任务(不包括泛型)。

2022 年发布 1.1 版本,兼容了 Go 的完整工程能力。2024 年发布 1.2 版本,正式发布了 Classfile 功能。Classfile 是 XGo 认为哪怕是 8 岁小孩也能做复杂工程的重要设施,它经历了两年多的探索才正式发布。

2025 年发布 1.3.1 版本,做了几个重要的事情:

1. 引入了 Mini Spec 概念

2. 支持 import C/C++ 和 Python 包

3. 完善 classfile (引入 class framework),引入领域文本

今年 6 月 8 日,我们过渡到 XGo 1.4 版本,很快又发布了 1.5 版本。现在 1.5 版本是 XGo 的正式版,也正式改名为 XGo。

XGo 的 核心技术特性

XGo 甚至支持 C 字符串的内建支持,在双引号前面加一个 C 就代表这是一个 C 字符串 c"Hello"。这是 XGo 特有的,Go 没有的东西。它底层基于 LLGo 的指令,不会产生像 cgo 那样的开销。

Python 生态支持

XGo 对 Python 的支持也已经实现。Python 在 XGo 中和 Go 一样是一等公民,生态里的所有资产都会让它看起来跟 Go 的资产一样。

XGo 有内建的 Python 字符串:

py"hello" 

就是一个 Python 字符串字面量。我们还在探索如何让 Python 的字面量和内建字符串有更好的协同性。

XGo Classfile

Classfile 是 XGo 在工程领域的最大创新。它有两个关键价值:

一是简化了面向对象编程。XGo 通过变量+函数这两个非常基础的概念实现了用户自定义类型,很简洁也很酷。

二是解决了领域友好的问题。Classfile 是一个抽象领域知识的工具,它让 XGo 几乎在所有领域都看起来好像天生就是为该领域而生。

Classfile 经历了 4 年的 beta 测试,直到 2024 年 2 月才定稿。它的重要性不亚于 XGo 支持 import C 和 Python 库。

XGo v1.5.x 将会做哪些事情?

  • 嵌入式的支持:对接 tinygo 和 LLGo 生态

  • 大模型的支持:AIPU := LLM + MCP 

  • Python 的内建支持:让 Python 进一步成为XGo的一等公民

XGo 的三大组成部分

XGo 包含三个主要部分:

1. LLGo 编译器

LLGo 是一个 Go 编译器,它的使命是实现软件工程历史所有资产的融合。

LLGo 是二进制兼容 C 生态的资产,源代码兼容 Go 生态的资产。这样做的逻辑是:C 生态足够庞大,Go 生态相对较小。源代码兼容意味着有 bug,但给予足够多的时间总能修复完。

2. XGo 语言

XGo 语言本身。

3. XBuilder 创客平台

XBuilder 是一个 IDE,特别像 Scratch,但跟 Scratch 又很不一样。XBuilder 是直接文本编程的,不是积木式编程。

许式伟提到,他曾经亲身带教过一些小朋友,在 CodeMonkey 里让几个完全没有编程基础、甚至没有接触过 Scratch 的小朋友直接做文本编程的尝试。让他很诧异的是,这些小朋友完全没有遇到任何障碍,文本编程的门槛其实并不比积木式编程高多少,两者几乎是等价的。这个发现让他意识到,让学生越早过渡到文本编程的方式越好,这也是为什么 XBuilder 最终决定放弃积木视图模式,直接采用文本编程的原因。

XBuilder 目前主要支持游戏和动漫,未来还会支持机器人。它支持的所有东西都建立在 Classfile 的基础上。

完整的工程生态

XGo 的生态已经非常丰富,包括:

  • 文档站

  • IDE 插件

  • 语言服务器

  • Debugger

  • 语法高亮插件

  • 与 GitHub 的集成

整个生态其实已经非常工程化了,组建得很全面。

结语:AI时代的全民编程愿景

Go 的全景图展示了许式伟对 AI 时代编程语言的思考。在 AI 降低工程门槛的同时,我们也需要一门真正适合全民编程的语言。XGo 通过“少就是指数级的多”的哲学,通过融合软件工程 55 年的资产,通过覆盖 8 岁到 80 岁的全年龄段,正在构建一个全新的编程生态。

这不仅是技术问题,更是关于未来的愿景:让每个人都能成为超级个体,让编程真正成为全民技能,让创造的力量不再被技术门槛所束缚。

XGo 正在让这个愿景一步步成为现实。

附 XGo 相关链接:

Packages

  • Go (compatible): https://pkg.go.dev/

  • XGo: https://pkg.xgo.dev/

IDE/Widget

  • Language Server: https://github.com/goplus/xgols

  • Language Server (WebAssembly): https://github.com/goplus/xgolsw

  • Debugger: https://github.com/goplus/xgodlv

  • VSCode Plugin: https://github.com/goplus/vscode-xgo

  • Web Widget: https://github.com/goplus/www/tree/master/goplus.org/widgets

Install/CICD

  • Install: https://github.com/goplus/xgo#how-to-install (TODO: installer)

  • GitHub Action: https://github.com/goplus/setup-xgo