- PVSM.RU - https://www.pvsm.ru -

Не пора ли нам в D?

На прошлой неделе Андрей Александреску отрапортовал твиттером [1] о первом коммите на языке D в кодовую базу Фейсбука. «5112 lines of sweet code!» В подробностях, опубликованных на форуме dlang.org [2], Андрей говорит про серьезные улучшения в производительности, скорости сборки и объеме кода по сравнению со старым на С++. Новость совершенно замечательная для D сообщества, так как она служит подтверждением годности языка в контексте профессиональной разработки.

Естественно, такие новости привлекают внимание разработчиков и за пределами D сообщества. Все же хотят больше производительности и меньше кода. Главный вопрос, если Александреску переписывает код с C++ на D, то не пора ли и нам?

Язык D появился в 2001 году и развивался во многом как альтернатива С++, очищенная от тяжелого наследия последнего. Он собрал массу вещей, считавшихся хиповыми в околоплюсовом сообществе: трейты типов, статические условия, модули. Кое что, как трейты, вошло потом в стандарт С++11, кое что, как модули, до сих пор в мире С++ является предметом обсуждения.

В 2006 году Александреску присоединился к разработке языка, и не напрасно. Для тех, кто читал «Modern C++ Design», D не покажется чужим. Он имеет массу возможностей для статического метапрограммирования. Фактически он настолько метаориентирован, что модульные тесты срабатывают дважды: при компиляции и при выполнении.

D — язык хороший и современный. Модульные тесты, кстати, поддерживаются в нем на уровне языка. Равно как и контрактное программирование или проверка чистоты функций. Понятно, чем он хорош. Но чем он тогда плох, раз только через двенадцать лет активной разработки он подал первую робкую заявку на мейнстримность, и то от лица одного из авторов?

Во-первых, он все-таки сложный. Так не принято, наверное, говорить, но он действительно требует от программиста сосредоточения и понимания внутренней кухни, а многие, и я в том числе, не любят думать головой при программировании. Довольно неприятно, разбираясь со сложным алгоритмом, получить от компилятора сообщение: "(int) Is not an Expression". Приходится задумываться над тем, откуда вообще тут взялся int, какой тест его принес и почему. А хочется ведь задумываться над алгоритмом. Метапрограммирование действительно приносит в программирование еще одно измерение. Но не все умеют и любят им наслаждаться.

Во-вторых, и это следствие первого, сообщество его немногочисленно. Хотя одновременно не так уж и мало: вопросы на StackOverflow, например, пусть не мгновенно, но все-таки находят ответчиков, а большинство вопросов без подвоха вообще гуглится и находится прямо на dlang.org (кстати, маленький совет, гуглить вообще стоит по «dlang», а не «d»). Однако маленькое сообщество — это все же маленькое сообщество. Локальных ивентов по D в ближайшее время не предвидится.

В-третьих, и это следствие второго, библиотек под D откровенно мало. Кое-что имеется, да, но если пройтись по гитхабу, то большинство разработок будут заброшены их авторами на ранней стадии и никем не подхвачены. Одновременно с этим, стандартная библиотека, например, страдает раздвоением личности. Кроме стандартного Phobos сообщество активно пропагандирует Tango, которая в общем делает то же самое, что и Фобос, но более по-рабоче-крестьянски. Несмотря на то, что Фобос постепенно вбирает в себя успешные вещи из Танго, и открытого конфликта библиотек вроде как нет, в некоторых сорцах можно видеть разные сборки под разные библиотеки, а это имеет дурной запах.

В-третьих с половиной: инструменты, IDE, книги, туториалы и т. п. Все есть, но всего мало.

То есть в принципе язык находится на правильном пути. Он давно уже вышел из точки А, и только-только, в лице его авангарда числом 1 (один), дотянулся до точки Б. Это уже повод почитать про него статей и вообще всячески насторожиться. Но стоит ли браться переписывать код с C++ на D в погоне за счастьем и ускорением сборки? Как мне кажется, еще не пора, если только вы не Александреску.

Автор: akalenuk

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/45618

Ссылки в тексте:

[1] отрапортовал твиттером: https://twitter.com/incomputable/status/388440621452500993

[2] на форуме dlang.org: http://forum.dlang.org/thread/l37h5s$2gd8$1@digitalmars.com

[3] Источник: http://habrahabr.ru/post/197480/