Мой личный бложек. Пишу о жизни в Чехии, программировании и просто свои мысли обо всём. Пишу не часто.

 
Стоит ли программировать на D? И почему я на нём программирую?
Заметки не программиста
Если кратко:
D + стандартные библиотеки - гавно,
пропатченный D + наш фреймворк + наш билдер - хороший годный язык программирования

Почему я программирую на D?
Последние лет 15 я разрабатываю свой фреймфорк, сначала он был написан на C как библиотека для Perl, потом в какой-то момент Perl стал устаревать, да и в нём нерешённая проблема с утечками памяти.
Поэтому я начал искать удобный язык программирования сочетающий в себя мощь C и гибкость скриптовых языков и возможность кросскомпиляции под разные платформы. А также возможность заменить стандартную библиотеку своим фреймворком. Так я и нашёл D. Выкинул phobos, слегка пропатчил компилятор и добавил свой фреймворк в качестве стандартной библиотеки. Добавил тип var реализующий переменные как в скриптовых языках, например var x = 1; x = "Hello World"; x = true; x = [1, 2, 3];

Получилось идеально. Мощь C и скриптовых языков, кросскомпилятор.


Почему не стоит программировать на D?
Да тут 100500 причин.

Отсутствие документации. Есть лишь комментарии к функциям, из которых строится документация. При этом есть множество нестандартного поведения, которое нигде не задокументировано. Также почти нет книг по D. Хотя не всё так печально, кое что всё же есть.

Баги в релизах. Таки да. Главная фишка языка удобные unittest'ы, но при этом нет unittest'ов самого языка, чтобы они проверяли что в новой версии языка ничего не херится. Из-за этого пришлось в нашем фреймворке создать целую папку с такими тестами языка.

DMD долго компилирует (потому что нет инкрементальной сборки) и при этом жрёт много памяти и тем больше, чем сложнее проект, 2Гб легко, может и 3 и 4Гб. LDC ещё хуже в 1.5 раза, дольше собирает и больше памяти расходует за счёт связки с LLVM, который сам по себе ресурсоёмкий.

dub - это просто ёбаный стыд. Для мелких проектов вполне подходит, но чем крупнее становится проект тем больше понимаешь что нехватает функционала. При подключении внешних модулей половина из них вообще не собирается.

Нет стандартного GUI, вообще. Даже более того не ни одного вменяемого кроссплатформенного GUI.

Нет своей IDE. Самый нормальный вариант делать связку VSCode + плагин для D, но единственное что плагин делает хорошо - это подсветка кода, всё остальное в нём не работает. Выпадающие подсказки просто подвешивают VSCode намертво, да и к тому же они часто вообще не в тему. Есть неплохой вариант MonoDevelop + плагин для D, всё работает, но на больших проектах (>500 файлов) начинает сильно зависать.

Нет встроенной системы локализации, если пишешь мультиязычное приложение. Есть какие-то модули из dub для этого, но все они гавно полное.

Нет нормальной родной библиотеки для работы с изображениями. 

Ну и самый пиздец - форум на официальном сайте. Просто ебическая система отправки постов, надо чото посылать на какой-то e-mail текст поста потом он публикуется. Я понимаю что это привязка к e-mail конференциям из usenet, но блять их эпоха давно прошла. Сейчас немного улучшили, посты можно создавать прямо на форуме, но всё равно форум выглядит как какая-то хуета начала 2000ых. Это полбеды, спрашивать на форуме можно только что-нибудь примитивное, что ты и так нашёл бы в документации, любой вопрос посложнее остаётся либо без ответа, либо ну да да это надо бы сделать, но мы пока не можем. Ну то есть форум там нахуй не нужен.

[next]
0