为什么你需要Jac:从12种记号到1种语言,告别胶水代码的完整对比

发布时间:2026/10/24 16:55:46
为什么你需要Jac:从12种记号到1种语言,告别胶水代码的完整对比

【免费下载链接】jac

The Jac Programming Language -- The language for any human or AI looking to use one language for everything

项目地址:https://gitcode.com/gh_mirrors/ja/jac
点击查看免费下载

Jac(Jac Programming Language)是一款为人类与 AI 共同编程设计的编程语言:一种 Python 风格的语法,一个自包含的二进制工具链,即可覆盖前端、后端、数据模型与云部署的全栈开发。本文通过"传统全栈 vs Jac"的完整对比,带你弄清它如何把 12 种记号压缩成 1 种语言,彻底告别胶水代码。

Jac 是什么:1 种语言编译到整个技术栈

Jac 的官方口号是"One language, one compiler, the whole stack. No glue."(一种语言、一个编译器、整个技术栈、没有胶水)。它的核心能力可以概括为三点:

  • 多目标编译:同一份源码编译到 Python 字节码、JavaScript 和原生机器码,PyPI、npm 与 C 生态的库都能直接import,无需互操作层;
  • AI 是语言特性:by llm()让你像调用函数一样调用大语言模型,编译器从函数签名自动生成 prompt,并用返回类型强制约束输出结构;
  • 持久化内建:数据以图(节点 + 边)组织,walker携带计算在图上移动,从root可达的数据自动持久化——没有数据库、没有 ORM、没有迁移脚本。

编译器、REST 服务、类型检查器、格式化器、测试框架、MCP 服务器、Kubernetes 部署器……全部封装在同一个jac可执行文件里,相当于一次下载就替代了 Python 解释器、Node 运行时、C 编译器和包管理器。🧩

12 种记号的问题:胶水代码的成本从何而来

打开任何一个结构良好的产品仓库,数一下维护者需要阅读的东西:

类别记号(Notation)
逻辑TypeScript、Python、SQL、Shell
展示JSX、CSS
配置JSON、TOML、YAML、Dockerfile、HCL、dotenv

12 种记号、5 个包生态、2 个 lockfile——没有人刻意选择这种局面,它是"每一道架构边界都伴随一次语言切换"的自然沉淀。

更深的代价不是阅读成本,而是没有任何编译器能看穿这些边界。改一个字段名,TypeScript 会检查前端、Python 会检查后端,但线格式、ORM 映射、OpenAPI 文档和 prompt 模板之间的对应关系没有任何工具检查——现代技术栈的"全程序类型检查器"其实就是grep。

官方文档用一个"四份拷贝"的例子说明了一个字段在传统栈里的真实成本:

CREATE TABLE users (id UUID PRIMARY KEY, email TEXT NOT NULL UNIQUE, display_name TEXT NOT NULL); -- 1. SQL 迁移
class UserOut(BaseModel): -- 2. ORM 模型 + 3. Pydantic 序列化 id: UUID; email: str; display_name: str
export interface User { -- 4. 前端类型 id: string; email: string; displayName: string; }

一个字段要维护 4 份拷贝、跨越 3 套类型系统,其中任何一处改名漂移都不会被编译器发现,直到在生产环境爆炸。而在 Jac 中,这个记录只有一份node声明,它在存储、网络和浏览器中的表示全部由编译器负责。这就是官方文档 why-jac.md 所阐述的核心:把同一概念的多份声明收进一种语言,让编译器看见每一条跨层调用。

完整对比表:传统全栈 vs Jac

维度传统全栈(5 套技术)Jac(1 种语言)
数据模型SQL 迁移 + ORM + Schema + 前端类型(4 份拷贝)1 份node声明,编译器生成其余表示
REST APIFastAPI/Express 路由表 + 序列化 + 鉴权中间件walker:pub即端点,请求体自动映射字段,report即响应
前端独立工程 + React + 手写 RPC 客户端同一文件内cl代码空间编译为 React,RPC 由编译器生成
持久化数据库 + 连接池 + 会话管理图可达即持久,零配置
AI 集成prompt 模板 + 解析 + 重试(框架胶水)by llm()类型化函数调用,返回类型即输出 schema
部署Dockerfile + YAML + Helmjac scale deploy一条命令,笔记本到 Kubernetes 不改一行代码
工具链Python + Node + gcc + pip + npm……1 个自包含二进制,替代整套工具链
代码量基准官方实测约为传统方案的1/5——省掉的全是编译器现在替你生成的胶水

Jac 的设计理论叫synechic(连续型):一种连续、可检查的介质横跨前端、后端与原生层,重命名一个字段时,任何过期引用(无论在服务端、客户端还是原生层)都是编译错误而不是生产事故。配合topokinetic(拓扑运动型)的图计算模型,数据库"溶解"进语言本身。🚀

真实项目对比:不到 1000 行 Jac 驱动 6 个客户端

光说不练假把式。仓库内置的 Tiny JacYac 是一个小型社交应用:Web、React Native 移动端、原生桌面、CLI、Feed 服务和计分服务,6 个应用共享一份产品,全部源码 + 测试 + 配置加起来只有957 行。

下面是同一个 Feed 在不同端的样子——Web 端:

桌面端(编译为原生二进制,无 Electron):

CLI 端,读取的是完全相同的图数据:

更大的例子也在仓库里:jaclang.org 官网本身就是一个"技术演示"——其中的 Socialize 社交板块,整个后端(3 种节点、4 种边、19 个 walker 同时充当业务逻辑、REST 端点、持久化和鉴权)只有1 个文件 466 行,前端在内共 14 个文件、零胶水产物:没有路由表、没有 ORM 模型、没有迁移、没有序列化器。

30 秒上手:Jac 安装与运行第一个全栈应用

安装极其简单,官方提供 macOS 和 Linux 预编译二进制(Windows 可用 WSL),无需 Python、pip、Node 或 C 工具链:

curl -fsSL <官方安装脚本地址> | bash

仓库内附带的安装脚本见 scripts/install.sh。然后一条命令生成一个完整网站项目并运行:

jac create mysite --awesome # 生成完整全栈项目 cd mysite jac run # 构建前端 + 后端,服务在 http://localhost:8000

日常最高频的命令:

命令作用
jac run main.jac运行程序(类似python3)
jac run作为服务启动:REST API + 鉴权 + Swagger 文档 + 前端
jac build全项目类型检查并产出密封应用包
jac build --as native编译为零依赖独立可执行文件
jac check/jac fmt/jac test类型检查 / 格式化 / 测试
jac mcp为 AI 编码助手提供 MCP 服务

感受一下"AI 是语言特性"的写法——没有 prompt 字符串、没有解析代码:

enum Priority { LOW, MEDIUM, HIGH, URGENT } def assess(ticket: str) -> Priority by llm();

想同时看到 AI 分类、图持久化和 React UI 的最完整示例,看 jac/examples/mini_todo/main.jac 一个文件就够了。💡

下一步学习:Jac 官方文档与示例路径

仓库内置了完整文档集(jac guide可直接打印):

  • 核心概念与"为什么不同":jac/jaclang/cli/docs/quick-guide/what-makes-jac-different.md
  • 设计动机详解:jac/jaclang/cli/docs/quick-guide/why-jac.md
  • 官方示例(官网源码、社交应用、待办应用、raylib 游戏):jac/examples/
  • 贡献指南:CONTRIBUTING.md

一句话总结:胶水代码不是计算所必需的,而是"每道边界换一种语言"的副产品。Jac 用一种连续、可检查的语言介质替代了 12 种记号——你写逻辑,编译器负责剩下的全部。如果你正在受够了前端、后端、数据库之间的来回搬运,这正是值得花 30 秒试一下的 Jac 编程语言。

【免费下载链接】jac

The Jac Programming Language -- The language for any human or AI looking to use one language for everything

项目地址:https://gitcode.com/gh_mirrors/ja/jac
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考