Достаточно ли мощен D для этих функций?

Долгое время я хотел разработать язык программирования, сочетающий расширяемость с эффективностью (и безопасностью, простотой использования и т. д.). Недавно я заново открыл для себя D и задаюсь вопросом, является ли D 2.0 в значительной степени тем языком, который я хотел сделать сам. . Что мне больше всего нравится, так это потенциал метапрограммирования; Теоретически, может ли система D traitsвключить следующие возможности во время компиляции?

  1. Отражение во время выполнения. Достаточно ли возможностей отражения во время компиляции для создания системы отражения во время выполнения в стиле Java/.NET?

  2. Преобразование кода: с помощью метапрограммы создайте C#/C++/и т. д. версии вашей программы на D каждый раз, когда вы ее компилируете (бонус, если комментарии к документам могут распространяться).

  3. Черты. Я не имею в виду черты метапрограммирования, встроенные в D, я имею в виду объектно-ориентированные черты для композиции классов. Программа D указывала бы набор признаков для составления, а метапрограмма составляла бы их.

  4. Механизм вывода единиц измерения: даны некоторые обозначения для необязательного указания единиц измерения, например unit(value), может ли метапрограмма D проверить следующий код, определить правильные единицы измерения и выдать сообщение об ошибке в последней строке? (Я написал такую ​​вещь для boo, так что могу вас уверить, что это вообще возможно, для всей программы):

    auto mass = kg(2.0);
    авто ускорение = 1.0; // единицы измерения строго необязательны
    автосила = масса*ускорение;
    ускорение += метры в секунду в квадрате (9,81); // теперь известны единицы 'силы' и 'ускорения'
    сила += фунты (3,0); // обнаружено несоответствие единиц измерения
    

5
задан Qwertie 19 June 2012 в 16:04
поделиться