Skip to main content
QUICK REVIEW

[论文解读] C++ Templates as Partial Evaluation

Todd L. Veldhuizen|ArXiv.org|Oct 9, 1998
Logic, programming, and type systems参考文献 13被引用 61
一句话总结

本文提出,C++ 模板虽然最初是为泛型编程而设计,但无意间通过偏置求值(partial evaluation)实现了强大的编译时计算和代码生成。通过将模板重新解释为一种两级语言,其中类型是一等值,作者提出 Catat——一种基于偏置求值的语言,该语言统一了泛型编程、编译时计算与代码生成,并采用更简单、更直观的语法。

ABSTRACT

This paper explores the relationship between C++ templates and partial evaluation. Templates were designed to support generic programming, but unintentionally provided the ability to perform compile-time computations and code generation. These features are completely accidental, and as a result their syntax is awkward. By recasting these features in terms of partial evaluation, a much simpler syntax can be achieved. C++ may be regarded as a two-level language in which types are first-class values. Template instantiation resembles an offline partial evaluator. This paper describes preliminary work toward a single mechanism based on Partial Evaluation which unifies generic programming, compile-time computation and code generation. The language Catat is introduced to illustrate these ideas.

研究动机与目标

  • 探索 C++ 模板在编译时计算与代码生成方面所展现出的非预期但强大的能力。
  • 证明这些能力源于模板实例化过程类似于离线偏置求值。
  • 提出一个基于偏置求值的统一框架,以简化泛型编程、编译时计算与代码生成的语法。
  • 介绍 Catat,一个原型语言,展示如何利用偏置求值统一这些特性,并实现更简洁的语义。

提出的方法

  • 将 C++ 模板重新解释为一种两级语言,其中类型为一等值,并具有静态绑定。
  • 将模板实例化建模为一种离线偏置求值过程,其中静态参数在编译时被专门化。
  • 提出 Catat,一种围绕偏置求值原理设计的语言,用于统一泛型编程、编译时计算与代码生成。
  • 应用扁平化变换,将两级函数转换为单级生成器,以实现高效编译。
  • 使用绑定时间分析与静态参数传播,实现代码生成器的残差化(residualization)。
  • 利用递归模板特化与静态常量,实现在编译时的控制流与算术运算。

实验结果

研究问题

  • RQ1如何形式化地理解 C++ 模板作为偏置求值的一种形式?
  • RQ2能否基于偏置求值提出一个统一的语言模型,以简化泛型编程与编译时代码生成的语法与语义?
  • RQ3将模板元编程重新表述为偏置求值,在表达能力与可维护性方面具有哪些实际优势?
  • RQ4如何利用偏置求值原理,从高层模板抽象高效生成专门化的代码?

主要发现

  • C++ 模板无意中支持强大的编译时计算与代码生成,例如在编译时计算幂、阶乘与素性判断。
  • 通过递归模板特化与静态常量的使用,可在编译时实现循环与条件等控制结构。
  • 模板元编程可为科学计算生成优化的、展开的代码,例如专门化的点积算法。
  • Catat 语言原型表明,基于偏置求值的单一机制可统一泛型编程、编译时计算与代码生成,并实现更简洁的语法。
  • 该方法通过解释静态结构实现了脚本功能,并支持 Futamura 风格投影,用于领域特定语言的编译。
  • 在该系统中,反射与元级处理成为自然延伸,支持对类型与函数的运行时检查与操作。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。