D对于这些功能是否足够强大?

Qwe*_*tie 5 d metaprogramming

在最长的时间里,我想设计一种结合了可扩展性和效率(安全性,易用性等)的编程语言,我最近重新发现了D,我想知道D 2.0是否几乎是我想让自己做的语言.我最喜欢的是元编程的潜力; 理论上,D的特征系统能否在编译时启用以下功能?

  1. 运行时反射:编译时反射功能是否足以构建Java/.NET的运行时反射系统?

  2. 代码转换:使用元程序,创建C#/ C++ /等.每次编译时都会显示D程序的版本(如果可以传播文档注释,则可以获得奖励积分).

  3. 性状.我并不是指D中内置的元编程特征,我指的是类组合的面向对象特征.AD程序将指示要组成的一组特征,并且元程序将组成它们.

  4. 单位推理引擎:给出一些可选指示单位的表示法,例如unit(value),D元程序可以检查以下代码,推断出正确的单位,并在最后一行发出错误信息吗?(我为boo编写了这样的东西,所以我可以向你保证,这在整个程序范围内是可行的):

    auto mass = kg(2.0);
    auto accel = 1.0;                      // units are strictly optional
    auto force = mass*accel;
    accel += metresPerSecondSquared(9.81); // units of 'force' and 'accel' are now known
    force += pounds(3.0);                  // unit mismatch detected
    
    Run Code Online (Sandbox Code Playgroud)

Pet*_*der 7

运行时反射:编译时反射功能是否足以构建Java/.NET的运行时反射系统?

是.您可以使用__traits在编译时获得所需的所有信息,并生成运行时反射所需的运行时数据结构.

代码转换:使用元程序,创建C#/ C++ /等.每次编译时都会显示D程序的版本(如果可以传播文档注释,则可以获得奖励积分).

不,无论D有多强大,都是不可能的.有些功能根本无法转移.例如,D有一个内联汇编程序,100%无法转换为C#.没有语言可以无损地转换为所有其他语言.

性状.我并不是指D中内置的元编程特征,我指的是类组合的面向对象特征.AD程序将指示要组成的一组特征,并且元程序将组成它们.

您可以使用模板mixins,尽管它们不提供方法排除.

单位推理引擎:给定一些可选指示单位的表示法,例如单位(值),D元程序可以检查以下代码,推断出正确的单位,并在最后一行发出错误信息吗?(我为boo编写了这样的东西,所以我可以向你保证,这在整个程序范围内是可行的):

是的,这在D中是直截了当的.至少有一个实现.