tag:blogger.com,1999:blog-654279083390275842.post6499368325201170688..comments2024-03-19T12:22:43.654+03:00Comments on Размышлизмы eao197: [prog.thoughts] Немного рефлексии на тему применимости SObjectizer-а и возможных путей его эволюцииeao197http://www.blogger.com/profile/17283739752119445290noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-654279083390275842.post-29967413336053654802019-06-08T20:38:54.393+03:002019-06-08T20:38:54.393+03:00@zamazan4ik:
Ну вот у нас и RESTinio, и SObjectiz...@zamazan4ik:<br /><br />Ну вот у нас и RESTinio, и SObjectizer опакечены и для conan, и для vcpkg. Но это вообще никак не влияет на то, что RESTinio является header-only библиотекой. И если в SObjectizer нужно будет добавить возможность работать и с std::mutex/std::thread, и с предоставленными пользователем аналогами, то придется переходить к header-only просто из-за повсеместного использования шаблонов.<br /><br />Остается надеяться, что модули со временем снизят актуальность данной проблемы.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-86856537284574609252019-06-08T20:25:51.475+03:002019-06-08T20:25:51.475+03:00Я как раз являюсь человеком, которому очень не нра...Я как раз являюсь человеком, которому очень не нравятся header-only библиотеки. Основная причина, по которым их используют в настоящее время и ранее, на мой взгляд - простота распространения и встраивания в проект. Сейчас это становится всё менее и менее актуальным с популяризацией пакетных менеджеров, которые делают очень много грязной работы за программиста. И я не хочу платить увеличенным временем компиляции только лишь потому, что разработчику библиотеки так захотелось и была возможность сделать нормальную библиотеку и опакетировать её.zamazan4ikhttps://www.blogger.com/profile/14593371984309622070noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-57229707017919018442019-06-07T12:37:03.122+03:002019-06-07T12:37:03.122+03:00Есть "рынок" статических приложений, там...Есть "рынок" статических приложений, там header-only вполне себе на месте.<br />Есть другой "рынок", где требуются динамические библиотеки (в случае C++ это, с моей точки зрения, то еще удовольствие). В этом случае использование header-only сопряжено с проблемами.<br />Критиковать header-only с позиций второго рынка - с моей точки зрения это причуда бальзаковского возраста.sskohttps://www.blogger.com/profile/14053609496876717861noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-88592842929839633132019-06-07T12:16:29.843+03:002019-06-07T12:16:29.843+03:00@ssko
> Ну, скорости компиляции часто придается...@ssko<br />> Ну, скорости компиляции часто придается неоправданно большое значение: часто важно, а часто никакой роли не играет.<br /><br />По меньшей мере есть в C++ мире отдельные личности (и в немалом количестве), которые header-only библиотеки сильно не любят и сильно разбухают по этому поводу. Очень часто аргументируя это замедлением скорости компиляции и потреблением ресурсов компилятором. Мол, на машине с 4GiB RAM уже ничего путного не скомпилируешь.<br /><br />И когда начинаешь продвигать header-only либо, то с такими вещами сталкиваешься регулярно.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-8272763758379583102019-06-07T12:13:12.468+03:002019-06-07T12:13:12.468+03:00Ну, скорости компиляции часто придается неоправдан...Ну, скорости компиляции часто придается неоправданно большое значение: часто важно, а часто никакой роли не играет.<br />Мы же говорили про динамически подключаемые библиотеки вроде ACE или Poco. sskohttps://www.blogger.com/profile/14053609496876717861noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-62173140059844195942019-06-07T12:09:55.664+03:002019-06-07T12:09:55.664+03:00@ssko
> Мне кажется, что с точки зрения C/C++ в...@ssko<br />> Мне кажется, что с точки зрения C/C++ в этом случае разработчик сам себе злобный Буратино.<br /><br />Как раз если использовать C++ные шаблоны (вроде того, что мы в RESTinio делаем через traits для http-сервера), то проблем особых и нет.<br /><br />За исключением того, что библиотека X будет header-only и в dll-ку ее не засунешь. А это значит, что скорость компиляции кода с ее использованием будет страдать.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-85133543690443594902019-06-07T12:05:48.109+03:002019-06-07T12:05:48.109+03:00Мне такой подход не очень нравится. Допустим, есть...<i>Мне такой подход не очень нравится. Допустим, есть большая программа, в которой модуль M1 использует библиотеку X с одними настройками, а модуль M125 -- библиотеку X с другими настройками.</i><br />Мне кажется, что с точки зрения C/C++ в этом случае разработчик сам себе злобный Буратино.<br /><br />А если по смыслу поста: SObjectazer вполне может оказаться на месте в случае одноплатников типа BeagleBone и выше. С точки зрения всякой IoT это интеграционные хабы, там обычный Linux, в худшем случае с mucl, а не с глибцами. Но стоит ли довольно большой объем работы выделки, тут вам решать. Сейчас всю эту интеграционную обвязку принято делать на nodejs. Ограничения по ресурсам понятны. Кроме того, из-за цены до сих пор актуальны одноплатники, поддерживающие только gnueabi (без полноценной плавающей точки, в частности), а в этом случае с nodejs могут быть проблемы.<br />По сути то, чем занимаются такие хабы, понятно: принять данные по куче конкретных протоколов и отправить дальше по MQTT, разослать настройки, отправить команды на эффекторы, предоставить web-интерфейс, думаю, сами понимаете. С моей точки зрения, использование таких Linux-одноплатников будет только расти и даже преобладать.<br />Но и работы тоже немало, прежде всего, тестирование и оптимизация под кучу разных платформ и вариантов Linux и стандартной библиотеки C. Одна радость - это все можно делать off-target в QEMU.<br />Такие у меня 5 копеек.sskohttps://www.blogger.com/profile/14053609496876717861noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-46770671497874309832019-06-07T08:20:01.112+03:002019-06-07T08:20:01.112+03:00@Eugeniy
Так не только для микроконтроллеров делае...@Eugeniy<br />Так не только для микроконтроллеров делается. Например, для большущей библиотеки ACE в свое время пользователь должен был сделать свой ace/config.h, в котором делались нужные настройки.<br /><br />Мне такой подход не очень нравится. Допустим, есть большая программа, в которой модуль M1 использует библиотеку X с одними настройками, а модуль M125 -- библиотеку X с другими настройками. При статической линковке хорошо, если мы получим ошибку линкера.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-72853552849085807972019-06-07T06:29:12.865+03:002019-06-07T06:29:12.865+03:00Насчет шаблонов и хидеронли - многие проекты для м...Насчет шаблонов и хидеронли - многие проекты для микроконтроллеров настраиваются через хидер с пачкой макросов. Хидер делается пользователем библиотеки под свои нуждыEugeniyhttps://www.blogger.com/profile/10354327694074617762noreply@blogger.com