# Fig 语言 - 现代脚本语言 [Fig-Gitea](https://git.fig-lang.cn/PuqiAR/Fig) [English](README.md "英文版本") **Fig** 是一种动态强类型的编程语言,专为清晰性、安全性和现代开发实践而设计。Fig 融合了 Go、Rust 和 JavaScript 的灵感,旨在提供高效的开发体验,同时保持强大的类型安全。 [语言入门教程(zh_CN)](docs/zh_CN/01-简介.md "第一章") ## 特性 ### 🚀 核心语言特性 - **动态类型与类型推断** - 强类型系统,最少类型注解 - **现代控制流** - 完整的 `for` 循环支持,正确的作用域管理 - **一等公民函数** - Lambda 表达式和闭包 - **丰富的数据结构** - 结构体、列表、映射和元组 - **内存安全** - 无空指针异常,自动内存管理 ### 🔧 技术亮点 - **三级循环作用域** - 迭代中正确的变量隔离 - **智能分号处理** - 使用 RAII 守卫的灵活语句终止 - **全面的错误处理** - 带有源码位置的详细错误信息 - **干净的 C++ 实现** - 现代 C++23,使用 RAII 和智能指针 ### 使用教程 1. 克隆存储库: ```bash git clone https://git.fig-lang.cn/PuqiAR/Fig.git # 推荐 ``` 或 ```bash git clone https://github.com/PuqiAR/Fig.git ``` 2. 切换到项目目录: ```bash cd Fig ``` 3. 构建项目: ```bash xmake build Fig ``` 4. 运行程序: ```bash xmake run Fig [file] ``` 将`[file]`替换为输入文件的路径。 ## 语言设计哲学 Fig 围绕几个核心原则设计: 1. **清晰优于巧妙** - 代码首先应该可读 2. **默认为安全** - 在编译时防止常见错误 3. **现代人机工程学** - 开发者体验很重要 4. **渐进式学习** - 入门简单,需要时功能强大 ## 性能概览 **版本:** 0.4.3-alpha (树遍历解释器) **测试硬件:** i5-13490F, Windows 11 **计算 Fibonacci(30) 的执行时间:** * 朴素递归: **5.47秒** (~比0.4.2-alpha快2.14倍) * 记忆化: **0.55毫秒** (~比0.4.2-alpha快1.69倍) * 迭代: **0.10毫秒** (~比0.4.2-alpha快3.73倍) * 尾递归: **0.16毫秒** (~比0.4.2-alpha快2.55倍) **可视化对比:** ``` 朴素递归 : █████████████████████████ 5.47秒 记忆化递归 : ▉ 0.55毫秒 迭代算法 : ▍ 0.10毫秒 尾递归 : ▎ 0.16毫秒 ``` **核心发现:** 算法选择仍然主导性能,同时 0.4.3-alpha 在函数调用和循环效率上有明显提升。 **详细报告:** [English](./docs/benchmark_result/0.4.3-alpha/benchmark_result_en_0.4.3-alpha.pdf) | [中文](./docs/benchmark_result/0.4.3-alpha/benchmark_result_zh_0.4.3-alpha.pdf) --- ## 旧版本报告... **版本:** 0.4.2-alpha (树遍历解释器) **测试硬件:** i5-13490F, Windows 11 **计算 Fibonacci(30) 的执行时间:** - 朴素递归: **11.72秒** - 记忆化: **0.93毫秒** (快12,600倍) - 迭代: **0.37毫秒** (快31,300倍) - 尾递归: **0.40毫秒** (快29,200倍) **可视化对比:** ``` 朴素递归 : ████████████████████████████████████████ 11.72秒 记忆化递归 : ▉ 0.93毫秒 迭代算法 : ▍ 0.37毫秒 尾递归 : ▎ 0.40毫秒 ``` **核心发现:** 在此树遍历实现中,算法选择主导性能表现。 **详细报告:** [English](./docs/benchmark_result/0.4.2-alpha/benchmark_result_en_0.4.2-alpha.pdf) | [中文](./docs/benchmark_result/0.4.2-alpha/benchmark_result_zh_0.4.2-alpha.pdf) ## 语言文档 在 docs/zh_CN/... 查看更多 我们正在寻找译者来帮助翻译项目文件以便于不同语言社区的使用