加载中...
ATS 是一门融合函数式编程与命令式编程的静态类型语言,以依赖类型和线性类型著称。它能在编译期证明程序性质,同时生成接近 C 的高效代码,可用于操作系统、嵌入式与高性能系统编程。

| 设计者 | 谢忠茂 |
| 类型系统 | 依赖类型、线性类型 |
| 编译目标 | C 代码 |
| 范型 | 函数式、命令式 |
| 特色 | 高性能与可证明性 |
ATS(Applied Type System,应用类型系统)是一门静态类型编程语言,由波士顿大学的谢忠茂(Hongwei Xi)设计,把先进的类型理论与系统级性能结合在一起。它既支持函数式风格,也支持带副作用的命令式编程,并能直接与 C 语言互操作。
ATS 最突出的地方在于类型系统。它引入了依赖类型(dependent types),允许类型中携带值的信息,例如把数组长度编码进类型,从而在编译期消除越界访问;它还提供线性类型(linear types),用于精确追踪资源的创建与释放,避免内存泄漏与重复释放。ATS 程序最终编译为 C 代码,再由 C 编译器生成高效可执行文件。
ATS 适合需要同时兼顾正确性与效率的底层软件,例如操作系统内核模块、设备驱动、嵌入式固件与高性能数据结构库。研究者也用它来演示如何在不牺牲性能的前提下,用类型系统排除整类运行期错误。由于学习曲线陡峭,它更多出现在学术与实验性项目中。
问:ATS 为什么被认为难学?答:它的依赖类型与线性类型比主流语言的类型系统复杂得多,想充分利用其保证需要理解一定的类型理论,编写通过类型检查的代码也更费心力。
问:ATS 需要垃圾回收吗?答:不强制。借助线性类型,程序员可以进行安全的手动内存管理;当然它也提供可选的垃圾回收支持以简化开发。

| 设计者 | 谢忠茂 |
| 类型系统 | 依赖类型、线性类型 |
| 编译目标 | C 代码 |
| 范型 | 函数式、命令式 |
| 特色 | 高性能与可证明性 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧