Я провел несколько дней, играя с D, чтобы увидеть, как он сравнивается с C++ и java. Он позиционируется как еще один способ достижения тех же вещей, что и C++, но без всего неопределенного поведения и с добавлением сборщика мусора, цикла foreach и некоторых других современных тонкостей. Он компилируется в собственный код, поэтому вы получаете доступ ко всем обычным оптимизациям, которые могут возникнуть в этом сценарии.
Весь язык C инкапсулирован как подмножество D в качестве блоков нижнего уровня, из которых построена большая часть языка. Это может помочь с переносимостью, но также предотвращает превращение D в единую согласованную методологию.
Возможность запускать любую функцию C изначально в D открывает сферу возможности включения систем программирования - операционные системы, драйверы и т.д.
Есть два широко используемых структур классов в D. По умолчанию Phobos , который является довольно спартанским и простым в дизайне, позволяя вам создавать необходимые вам структуры, но предоставляя несколько больших или сложных строительных блоков. Другой - Tango, который напоминает библиотеку классов java и содержит гораздо более полную структуру. Существует также проект, позволяющий обеспечить совместимость двух библиотек.
По моему опыту, D - неплохой язык для кодирования, имеющий много общего с C# и java и позволяющий получать доступ к необработанному механизму через C и даже сборку. Основное ограничение, которое я вижу, - отсутствие хорошей поддержки инструментов разработки. Есть некоторые IDE и плагины там, но ничего очень сложного, поэтому вам может быть лучше с текстовым редактором и инструментом построения командной строки тем временем.
Существует две версии языка D1 и D2. D1 лучше поддерживается фреймворками и компиляторами, и D2 добавил несколько удобных функций, облегчающих работу и использование языка.
Update (июнь 2009): Я недавно смотрел в D раз и думал, что я должен обратить внимание на DSource, которая в настоящее время имеет целый ряд различных проектов компилятора, и является домом библиотеки танго, различные привязки, несколько наборов инструментов GUI и несколько IDE. Некоторые из проектов были оставлены в зачаточном состоянии, но я считаю, что сегодня немало сильных сил и добились хороших результатов. На этом этапе это очень похоже на успех D будет определяться движением с открытым исходным кодом гораздо больше, чем его предшественниками.
Update (февраль 2012) В то время как я не смотрел много на D с момента моего последнего редактирования, отмечу, что D2 находится сейчас, при поддержке большой книги, The D Programming Language. Типичный для Alexandrescu, он предоставляет множество деталей системы шаблонов, включая ограничения шаблонов, которые делают D гораздо более выразительным и безопасным для текста инструментом, чем текущее состояние C++.
Помимо чтения книги, я не имел контакта с языком D, ее инструментами и сообществом с 2009 года, поэтому я не могу комментировать их созревание или рост на сегодняшний день.Я знаю небольшой кадровый состав профессиональных программистов, которые хотят, чтобы им разрешили использовать язык на работе, но большинство из нас, как правило, придерживается C++ и других популярных языков в областях, где D должен быть в лучшем состоянии.
Это стоит учиться, потому что она имеет некоторые интересные функции но не стоит инвестировать, чтобы писать приложения в реальном мире, потому что инструменты и библиотека - дерьмо. Это просто не организовано хорошо и слишком много тонких проблем с вещами, которые теряют гораздо больше времени, чем это можно себе представить. Ни один бизнес этого не хочет. Я думаю, что многие могут подсознательно понять, что это может быть червяк. Это похоже на покупку онлайн-магазина для 10k, который выглядит потрясающе и отлично работает ... но когда вы едете на нем в течение месяца, вы начинаете замечать, что все не работает правильно ... тогда, в конце концов, все начинает разваливаться. – Stretto
Я думаю, что лучше всего использовать D для выполнения определенных алгоритмов высокого уровня и инструментов, которые не являются большими или взаимосвязанными, а затем использовать их с других языков. Таким образом, он меньше тратит на D, но может использовать его более мощные функции. К сожалению, это сложно из-за взаимодействия между ним и другими языками (вы закончите писать на C, а не на C++, потому что шаблоны не переводят между ними ... хотя, возможно, можно было бы преодолеть это с некоторыми обертки, которые хорошо работают). – Stretto