珠海豆子机器人发布 CatBase 语言:Python 语法、C 性能,基于 Zig 工具链
CatBase 语言入门:像 Python 一样写,像 C 一样跑 - 努力,努力再努力
珠海豆子机器人科技创始人钟声推出编程语言 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
来源:博客园 · cnblogs.com