在最长的时间里,我想设计一种结合了可扩展性和效率(安全性,易用性等)的编程语言,我最近重新发现了D,我想知道D 2.0是否几乎是我想让自己做的语言.我最喜欢的是元编程的潜力; 理论上,D的特征系统能否在编译时启用以下功能?
运行时反射:编译时反射功能是否足以构建Java/.NET的运行时反射系统?
代码转换:使用元程序,创建C#/ C++ /等.每次编译时都会显示D程序的版本(如果可以传播文档注释,则可以获得奖励积分).
性状.我并不是指D中内置的元编程特征,我指的是类组合的面向对象特征.AD程序将指示要组成的一组特征,并且元程序将组成它们.
单位推理引擎:给出一些可选指示单位的表示法,例如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)运行时反射:编译时反射功能是否足以构建Java/.NET的运行时反射系统?
是.您可以使用__traits在编译时获得所需的所有信息,并生成运行时反射所需的运行时数据结构.
代码转换:使用元程序,创建C#/ C++ /等.每次编译时都会显示D程序的版本(如果可以传播文档注释,则可以获得奖励积分).
不,无论D有多强大,都是不可能的.有些功能根本无法转移.例如,D有一个内联汇编程序,100%无法转换为C#.没有语言可以无损地转换为所有其他语言.
性状.我并不是指D中内置的元编程特征,我指的是类组合的面向对象特征.AD程序将指示要组成的一组特征,并且元程序将组成它们.
您可以使用模板mixins,尽管它们不提供方法排除.
单位推理引擎:给定一些可选指示单位的表示法,例如单位(值),D元程序可以检查以下代码,推断出正确的单位,并在最后一行发出错误信息吗?(我为boo编写了这样的东西,所以我可以向你保证,这在整个程序范围内是可行的):
是的,这在D中是直截了当的.至少有一个实现.