полюбоваться срезом
Mar. 4th, 2016 02:30 pmКоробочный продукт, над которым сейчас работаю, подошел к стадии частной беты. Пишется он на D с гуем на DlangUI. Это довольно обширная кроссплатформенная библиотека (под 50к строк), и, линкуясь с ней, у меня не было уверенности, что в мой бинарник не попадет какой-нибудь ненужный слон. Сейчас главный ехе-шник у меня имеет размер 2.2 МБ. Вспомнил про онлайн утилиту Владимира Пантелеева TreeMap Viewer, сунул туда свой .map файл и получил красивую интерактивную карту. Довольно познавательно. Слонов не обнаружил, есть некоторое количество зайцев, но они небольшие, не жалко. Оказалось, что из тех 2.2 МБ две самых больших части, почти одинакового размера по 800+ КБ, это dlangui и Phobos, стандартная библиотека. Весь рантайм занял около 380 КБ, из которых GC всего 24, а остальное про исключения, рефлексию, массивы, форматирование строк, ну и C runtime, конечно. Очень много кода посвящено поддержке юникода. В целом, я доволен. Не то, чтобы размер имел большое значение, но все же приятно, когда общий размер распространяемых бинарников получается на порядок меньше чем с каким-нибудь Qt при схожей функциональности. И к вопросу о "языках с рантаймом".
no subject
Date: 2016-03-04 07:53 am (UTC)А что там в DlangUI с красивостями интерфейса, типа градиентов на окнах (не картинками) и как оно по скорости?
no subject
Date: 2016-03-04 08:30 am (UTC)no subject
Date: 2016-03-04 08:37 am (UTC)Так как аналога QTшного Phonon по видимому нет (или не нашел в документации), то видимо для воспроизведения видео/аудио придется юзать или DirectShow или Flash…
no subject
Date: 2016-03-04 10:02 am (UTC)no subject
Date: 2016-03-04 10:44 am (UTC)Осталось выучить D и переписать все на нем :)
no subject
Date: 2016-03-04 03:42 pm (UTC)еше -- сложные виджеты типа таблиц ;)
no subject
Date: 2016-03-04 03:52 pm (UTC)no subject
Date: 2016-06-08 12:52 pm (UTC)no subject
Date: 2016-06-08 02:42 pm (UTC)При сборке библиотеки Dub'ом надо убедиться, что в dub.json он передается. Я в раздел "configurations" в ту, что содержит
"name": "minimal", записалИ потом собирал командой
dub build --build=release --config=minimal
Дальше ссылался на сгенеренный lib файл из своего проекта, который у меня без даба собирается. Если же проект собирается дабом, то при упоминании dlangui там надо указать нужную конфигурацию:
"subConfigurations": { "dlangui": "minimal" }no subject
Date: 2016-06-14 08:29 am (UTC)Будем смотреть, куда там это флаг
no subject
Date: 2016-03-04 10:56 am (UTC)no subject
Date: 2016-03-06 09:49 am (UTC)Таких много (было) разных, из кросс-платформенных мне в своё время нравился fox-toolkit из-за легвовесности и нативных контролов, wxWidgets — тяжелее, но качественнее, хотя в последнее время развитие у них снизило темпы (субъективно) по сравнению с тем же Qt.
А сейчас "подсел" на Sciter — легковесный html/css UI с интересными плюшками. Использовал его ещё как HTMLayout, это был ну очень легкий рантайм и гибкая интеграция, а сейчас он стал ещё удобнее со скриптами и интеграцией с нативной графикой/видео/directx, да и мультиплатформенным стал. Ещё бы OpenGL-бэкенд ему, вообще шикарно стало бы.
no subject
Date: 2016-03-06 09:51 am (UTC)no subject
Date: 2016-03-06 10:12 am (UTC)no subject
Date: 2016-03-06 12:12 pm (UTC)no subject
Date: 2016-03-06 12:21 pm (UTC)no subject
Date: 2016-03-06 03:23 pm (UTC)no subject
Date: 2016-03-06 03:38 pm (UTC)no subject
Date: 2016-03-04 11:16 am (UTC)не знаю есть ли для D биндинги.
no subject
Date: 2016-03-04 02:02 pm (UTC)http://code.dlang.org/packages/derelict-imgui
no subject
Date: 2016-03-04 04:53 pm (UTC)no subject
Date: 2016-03-04 04:53 pm (UTC)no subject
Date: 2016-03-04 05:31 pm (UTC)no subject
Date: 2016-03-04 05:48 pm (UTC)Вы ещё рефлексию упомянули, много её? в смысле в D
no subject
Date: 2016-03-04 07:52 pm (UTC)Рантайм-рефлексия в D не очень популярна, используется в основном при кастах между родственными классами, при создании объектов по имени класса, да еще в нескольких местах. Зато развитая компайл-тайм рефлексия это фирменная фишка языка, ее используют активно. Их сочетание позволило dlangui легко заиметь DML - аналог QML. Потом еще отдельно напишу о ее применении, например, как делал смарт поинтеры, автоматически проверяющие коды возврата.
no subject
Date: 2016-03-04 08:41 pm (UTC)Ну рантайм-рефлексия - это не то что может кому-то понравится. Способность D решать проблемы без неё огромный плюс. А то в F# я даже json не могу нормально перегонять без рефлексии, и это ужасно.
И пропертибиндинг есть, или в DML только константы можно вставлять в разметку?
no subject
Date: 2016-03-05 05:42 am (UTC)no subject
Date: 2016-03-04 08:36 pm (UTC)А про ui там в новых вин win32/gdi поломали так что на 4к разрешении будет тормозить. Поиграетесь и сделаете себе правильный бэкенд =)
no subject
Date: 2016-03-18 02:39 pm (UTC)no subject
Date: 2016-03-18 05:27 pm (UTC)http://ddili.org/ders/d.en/index.html (я, правда, подряд читать ее не пытался)
Мне в свое время очень-очень понравилась книжка Александреску The D Programming Language. Она в паре мест может быть устарела или отклоняется от современной версии, но на 95% остается актуальной, при этом очень здорово написана, приятно почитать. Могу поделиться электронной копией, если надо.
Следующим шагом весьма полезен этот материал:
https://github.com/PhilippeSigaud/D-templates-tutorial
Официальная документация по языку довольно разрознена, раскидана по куче страниц и статей на сайте, лучше с нее не начинать, но после некоторого первоначального знакомства с языком она уже становится понятной и даже полезной, в качестве справки.
Еще по https://wiki.dlang.org/ полезно полазить, открывая что покажется интересным.
Тем, кто как я проводит большую часть времени под виндой, рекомендую поставить VisualD - плагин для Visual Studio. Это не решарпер и не Visual Assist, конечно, но все ж довольно приятный, и всяко лучше того, что студия из коробки делает в С++.
no subject
Date: 2016-03-18 05:59 pm (UTC)А какой компилятор лучше? Например для совместимости с вышеупомянутой GUI библиотекой.
no subject
Date: 2016-03-18 06:12 pm (UTC)