В последнее время участилось появление новых версий D, надеюсь это признак приближающегося релиза.
В последней версии http://www.digitalmars.com/d/2.0/changelog.html#new2_035 появился интересный ключик у компилятора -X выдает что-то сильно похожее на AST в JSON формате, там пока все еще криво и формат не устаканился, но если довести до ума будет очень близко к рефлексии из управляемых языков.
Здравствуйте, FR, Вы писали:
FR>В последнее время участилось появление новых версий D, надеюсь это признак приближающегося релиза.
FR>В последней версии http://www.digitalmars.com/d/2.0/changelog.html#new2_035 появился интересный ключик у компилятора -X выдает что-то сильно похожее на AST в JSON формате, там пока все еще криво и формат не устаканился, но если довести до ума будет очень близко к рефлексии из управляемых языков.
интересно будут ли авторы D делать такие же лицензионные ограничения на использование этой инфо как это сделали авторы gcc. Разумеется это не толкнет использовать D в проектах — просто будет интересный вариант для экспериментов в генерации кода.
Здравствуйте, SleepyDrago, Вы писали:
SD>интересно будут ли авторы D делать такие же лицензионные ограничения на использование этой инфо как это сделали авторы gcc. Разумеется это не толкнет использовать D в проектах — просто будет интересный вариант для экспериментов в генерации кода.
А что с gcc?
Я не вижу причин для автора D в чем-то ограничивать, вот недавно он и стандартную библиотеку перевел на бустовскую лицензию.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, SleepyDrago, Вы писали:
SD>>интересно будут ли авторы D делать такие же лицензионные ограничения на использование этой инфо как это сделали авторы gcc. Разумеется это не толкнет использовать D в проектах — просто будет интересный вариант для экспериментов в генерации кода.
FR>А что с gcc? FR>Я не вижу причин для автора D в чем-то ограничивать, вот недавно он и стандартную библиотеку перевел на бустовскую лицензию.
ну вот более менее ясный линк http://lwn.net/Articles/324028/ на тему "что с gcc".
если нет времени смотреть — то они борются с построением коммерческих плагинов.
Самое интересное по моему http://www.digitalmars.com/d/2.0/operatoroverloading.html#Dispatch. Дает возможность диспетчеризации вызовов, если какой то метод не определен в структуре или классе, но при этом определен шаблонный метод opDispatch с соответствующей сигнатурой, то он и вызывается. Раньше была перегрузка оператора точки opDot (во многом аналог operator-> из C++) сейчас из документации это исчезло, opDispatch в общем полностью перекрывает его функциональность.
FR>>В общем с мая никаких глобальных или ломающих изменений не видно, пора уже хотя бы в бету перейти.
FR>Похоже я поторопился в новой версии http://www.digitalmars.com/d/2.0/changelog.html#new2_037 появились новые фичи.
FR>Самое интересное по моему http://www.digitalmars.com/d/2.0/operatoroverloading.html#Dispatch. Дает возможность диспетчеризации вызовов, если какой то метод не определен в структуре или классе, но при этом определен шаблонный метод opDispatch с соответствующей сигнатурой, то он и вызывается. Раньше была перегрузка оператора точки opDot (во многом аналог operator-> из C++) сейчас из документации это исчезло, opDispatch в общем полностью перекрывает его функциональность.
opDot перекрылся уже alias this (перенаправление вызовов неопределённых методов другому объекту. Иными словами, наследование методом делегирования, как в snit). opDispatch — новая фича.
opDispatch — шаблонный метод. Если он объявлен в классе или структуре, то, при вызове отсутствующего в классе метода, имя функции и все аргументы (в соответствии с сигнатурой. Либо tuple'ом, либо фиксированными аргументами) будут переданы в opDispatch. Незаменимая штука в некоторых случаях. Например, с помощью этой штуки можно реализовать класс, который будет все вызываемые у него методы... преобразовывать в удалённые Xml-Rpc вызовы.
Здравствуйте, naryl, Вы писали:
N>opDot перекрылся уже alias this (перенаправление вызовов неопределённых методов другому объекту. Иными словами, наследование методом делегирования, как в snit). opDispatch — новая фича.
Угу в D уже многовато способов сделать одно и тоже
N>opDispatch — шаблонный метод. Если он объявлен в классе или структуре, то, при вызове отсутствующего в классе метода, имя функции и все аргументы (в соответствии с сигнатурой. Либо tuple'ом, либо фиксированными аргументами) будут переданы в opDispatch. Незаменимая штука в некоторых случаях. Например, с помощью этой штуки можно реализовать класс, который будет все вызываемые у него методы... преобразовывать в удалённые Xml-Rpc вызовы.
Там много применений можно придумать, в динамических языках (питон, руби) давно такой механизм существует. Вот только пора бы уже и остановится с добавлением фич.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, naryl, Вы писали:
N>>opDot перекрылся уже alias this (перенаправление вызовов неопределённых методов другому объекту. Иными словами, наследование методом делегирования, как в snit). opDispatch — новая фича.
FR>Угу в D уже многовато способов сделать одно и тоже
opDot убрали. alias this и opDispatch — концептуально разные фичи и применяются в разных задачах.
N>>opDispatch — шаблонный метод. Если он объявлен в классе или структуре, то, при вызове отсутствующего в классе метода, имя функции и все аргументы (в соответствии с сигнатурой. Либо tuple'ом, либо фиксированными аргументами) будут переданы в opDispatch. Незаменимая штука в некоторых случаях. Например, с помощью этой штуки можно реализовать класс, который будет все вызываемые у него методы... преобразовывать в удалённые Xml-Rpc вызовы.
FR>Там много применений можно придумать, в динамических языках (питон, руби) давно такой механизм существует. Вот только пора бы уже и остановится с добавлением фич.
Если подумать, то пора, но, например, opDispatch как-раз для Xml-Rpc очень бы пригодился... Если бы начальство не сказало мне (единственному разработчику внутреннего проекта) "надо на C++".
Здравствуйте, naryl, Вы писали:
N>opDot убрали. alias this и opDispatch — концептуально разные фичи и применяются в разных задачах.
Обоими opDot можно заменить.
FR>>Там много применений можно придумать, в динамических языках (питон, руби) давно такой механизм существует. Вот только пора бы уже и остановится с добавлением фич.
N>Если подумать, то пора, но, например, opDispatch как-раз для Xml-Rpc очень бы пригодился... Если бы начальство не сказало мне (единственному разработчику внутреннего проекта) "надо на C++".