公告

FujoOS公布日延期,以仓库发布为准

文档 语言 波 C 测量

波 C 测量

“这套工具能把现有代码转成形式对象”——这句话如果不带数字,等于没说;如果带了数字但没说口径,比没说更糟。这一页记录的是口径。

语料

12 个仓库真实文件(每种语言 4 个)。每个文件的 sha256 前 16 位记入结果文件——测量与内容绑定,语料一变数字就作废。两臂是工具链的严格宽松档,都确定性、可复现,不使用随机数。

两个比率,必须一起读

指标 定义
识别率 识别器看见的实体 ÷ 独立估计的实体数(宽松模式另算,用来暴露识别器自己的盲区)
转换率 已转写实体 ÷ 识别到的实体 —— 注意分母,它是条件于识别的比率
这就是为什么必须一起读: 只看转换率会得到“C 语言 100%”这种读起来很漂亮的结论,但那个 100% 的分母只包含识别器看得见的签名。真正限制 C 的是 89.2% 的识别率。两个数字分开报,任何一个都会误导。

主表

语言 实体 识别率 转换率 95% CI
Python 严格 48100.0%27.1%[16.6, 41.0]
宽松 48100.0%93.8%[83.2, 97.9]
C 严格 3789.2%100.0%[89.6, 100.0]
宽松 3789.2%100.0%[89.6, 100.0]
Rust 严格 11698.3%91.2%[84.6, 95.2]
宽松 11698.3%98.2%[93.8, 99.5]

怎么读这张表

  • Python 的瓶颈是注解质量 —— 严格臂 27.1%,主因是 list[str] / dict 这类没有 Potato 对应物的容器类型被跳过。这不算“缺注解”,而是“注解表达不了”。
  • C 的瓶颈是识别器 —— 4 个多行 / 宏签名对正则不可见。这是工具的局限,不是语言的问题。
  • Rust 最好转 —— 静态类型加显式切片;剩余跳过是常量长度数组、never 类型与元组返回。
  • 对象合法率 100% —— 工具链宁可少转,也不乱转。

一处必须标注的边界

LLM 臂跑过了,但跑的是本地小模型。 2026-09-11 用本机 Ollama 上的 qwen3:4b 与 llama3.2:3b 跑了一轮:12 个文件 × 2 模型 = 24 行,工件 loment/build/wave-c-llm.json。所以「工具链 vs 宿主 LLM」这组对照数据了——但它是 1.5–4B 的本地小模型,不是前沿 LLM 对照;要拿它当 A/B,得换前沿模型按同一协议重跑。另外,当前主表的“两臂”是工具链的严格 / 宽松两档,不得在论文中当作 LLM 对照。

另有一条样本量提醒:当前 n = 48 / 37 / 116,Wilson 区间在 n < 30 时明显偏宽。要把半宽压到 ±5% 以内,主表语料需要扩到每语言 ≥200 实体(约 15–20 个文件)。