CatBase 语言入门:像 Python 一样写,像 C 一样跑

珠海有家机器人公司,内部项目嫌 Python 太慢,嫌 C 太难写,干脆自己造了一门编程语言。

这门语言叫 CatBase。语法照抄 Python 的简洁,性能对标 C,编译出来就是本地二进制文件。源码托管在 GitHub(仓库 DoRobotAi/catbase-lang),官网 catbase-lang.com 可以直接下载。

下面快速过一遍:它解决什么问题,语法长什么样,10 分钟怎么跑起来。

为什么会有 CatBase

CatBase 的设计者叫钟声,珠海豆子机器人科技的创始人,2009 年出过一本《Java程序员,上班那点事儿》。

他做 AI 应用研发时撞上一堵墙:用 Python 写起来爽,跑起来慢,还得装解释器;用 C 跑得快,指针和内存管理能把人折磨到脱发。

于是 CatBase 把两者的优点缝在一起,专为 AI 应用研发而生,目标是在极小运行环境下替代 C。

一张表看懂它的定位:

特性 C Python CatBase
执行效率 高 低 高
开发效率 低 高 高
语法简洁 否 是 是
类型安全 是 否 是
静态类型 是 否 是
本地执行 是 否 是
显式类型声明 是 否 是

和 Python 的两个关键改动

学过 Python 的人,记住两个改动就能上手 CatBase。

第一,代码块用大括号 {},不再靠缩进。Python 里少打一个空格就报语法错误,CatBase 里大括号划定的范围明明白白。

Python 这样写:

def main():
    if True:
        print("Hello")
    else:
        print("World")

CatBase 这样写:

def main(args: list[str]) {
    if True {
        print("Hello")
    } else {
        print("World")
    }
}

第二,变量必须声明类型。Python 里 name = "Tom" 到底是字符串还是别的,得通读代码去猜;CatBase 里类型写在明处。

name: str = "Tom"
age: int = 25
items: list[int] = [1, 2, 3]

类型一目了然,读别人代码时心里有底。

名字的由来也有趣:Cat 代表猫一样的简洁优雅,Base 代表根基,合起来还双关了 "C at Base",正好对上它站在 C 肩膀上的目标。

10 分钟跑起来

环境要求:Linux(Ubuntu 20.04+ 或 Debian 11+),另外需要 Zig 编译器 0.14.1+ 和 gcc/clang,音频功能需要 alsa-lib。Windows 用户可以通过 WSL 或原生 Windows 版本使用。

安装就 4 步:

# 1. 解压源码包
tar -zxvf catbase_v0.x.x_linux_x86_64.tar.gz
cd catbase_v0.x.x_linux_x86_64

# 2. 安装依赖(自动装 Zig)
./setup-deps.sh

# 3. 编译你的第一个程序
./bin/catbasecc hello.cat

# 4. 运行生成的二进制文件
./hello

hello.cat 的内容只有 3 行:

def main(args: list[str]) {
    print("Hello world!")
}

跑出来就是一行 Hello world!。编译产物是原生二进制,拷到同架构的机器上直接运行,不用装任何运行时。

语法速览

变量声明走强类型路线,类型写在冒号后面:

name: str = "CatBase"
version: float = 0.6
count: int = 100
items: list[int] = [1, 2, 3, 4, 5]

函数定义用 def,参数和返回值都要声明类型:

def add(a: int, b: int) -> int {
    return a + b
}

条件和循环长得跟 Python 很像,只是换上了大括号:

if count > 50 {
    print("many")
} else {
    print("few")
}

for i in range(0, 5) {
    print(str(i))
}

文件读写是内置能力,几行搞定:

f: any = file("data.txt", "w")
write(f, "Hello, CatBase!")
close(f)

f2: any = file("data.txt", "r")
content: str = read(f2)
print(content)

发一个 HTTP 请求同样简单:

resp: str = http_get("http://api.example.com/data", 5000)
print(resp)

多线程用 thread 关键字,worker 函数直接丢进去跑:

def worker(id: int) {
    print("Worker " + str(id) + " started")
    sleep(1)
    print("Worker " + str(id) + " done")
}

def main(args: list[str]) {
    thread worker(1)
    thread worker(2)
    thread worker(3)
}

JSON 解析和序列化也是内置的:

data: dict[str, any] = {
    "name": "CatBase",
    "version": 0.6,
    "tags": ["compiler", "language", "ai"]
}
json_str: str = json_dumps(data)

和 Python、C 硬碰硬

同一个 Hello World,三语言摆在一起看。

C 版骨架齐全,include、main、printf、return 一个不能少:

#include <stdio.h>
int main() {
    printf("Hello, World!\n");
    return 0;
}

Python 版一行收工:

print("Hello, World!")

CatBase 版 3 行,性能和 C 站在同一起跑线:

def main(args: list[str]) {
    print("Hello, World!")
}

读个文件更能看出差距。C 版要 FILE 指针、fopen 判空、fgets 循环、fclose,十几行起步;Python 版 with open 三行搞定;CatBase 版 6 行,编译出来直接是原生二进制。

上手之前,几句实话也得说在前面:

生态还在早期,标准库和第三方包的丰富度暂时没法跟 Python 比。许可协议是自定义 EULA,可以下载安装、编译和分发自己写的程序和库,逆向工程和修改编译器本身不被允许。跨平台、包管理、更完整的标准库,都还写在路线图上。

适合谁用

3 类开发者可以重点关注。

做 AI 应用、受够了 Python 性能瓶颈的人。跑在极小 Linux 环境里的项目,CatBase 编译出的二进制零运行时依赖。想系统编程又被 C 的指针劝退的人,可以用 Python 的语法写 C 才能写的程序。

写在最后

CatBase 现在还在早期阶段,版本号 0.6,bug 和坑肯定有。一门新语言最珍贵的东西,是第一批愿意尝鲜的用户。

感兴趣的话,GitHub 搜 DoRobotAi/catbase-lang,官网 catbase-lang.com 有完整手册,底层基于 Zig 工具链,源码值得一读。

你目前的主力语言是哪一门?如果有一门「Python 的语法、C 的性能」的语言摆在你面前,你愿意花 10 分钟试试吗?评论区聊聊。


*参考来源:CatBase 官网 catbase-lang.com、GitHub 仓库 DoRobotAi/catbase-lang README

posted @ 2026-10-16 10:28  努力,努力再努力  阅读(241)  评论(0)    收藏  举报