LINUX.ORG.RU
ФорумTalks

Проблема экосистемы C++

 ,


2

8

Во время гугления, случайным образом нашел либу для «отрисовки» SVG на C++. Беглый осмотр показал все симптомы «синдрома С++»:

  1. Синдром eao197 - собственная система сборки.
  2. Собственная либа для работы с fs.
  3. Собственная либа для работы с xml (я понимаю когда в молодом языке нет батареек, но в старце уровня C++ - позор).
  4. Собственная либа для логирования.
  5. Отсутствие инструкции по сборке. Только автор знает, как это чудо собирать. issue
  6. Почти полное отсутствие документации.
  7. Почти полное отсутствие тестов.

И эти люди рассказывают как в C++ всё хорошо?

PS: либа содержит внушительные 530 коммитов, при этом ничего не умеет.

★★★★★
Ответ на: комментарий от peregrine

О, можно на нетлинксокетах апи к драйверу сделать, будет вполне по-хипстерски

annulen ★★★★★
()
Ответ на: комментарий от annulen

Зачем через кастомные, когда можно поверх ещё и своими велосипедами обмазаться, раз уж городить огород, то во все поля.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Я её с ходу не вижу, а ТС ссылок не приложил. А учитывая как он поспешил набросить, там может оказаться два класса обёртки, а не библиотека.

xaizek ★★★★★
()
Ответ на: комментарий от andreyu

Полностью согласен.

Просто автор топика переживает, что нет в жизни совершенства и винит в этом плюсы :) Если для xml делать лесопед слегка извращение, имхо. То уже для json можно и запилить. А уж логи тут кто во что горазд ибо хрен сделаешь так что бы для всех можно было настроить.

Хотя, всё сильно зависит от нефункциональных требований и наличия бабла у желающих оплатить банкет, можно и на чистом металле своё всё сделать. В этом видимо и прелесть плюсов и подобных вещей.

pon4ik ★★★★★
()

Кстати - но оно же зато собирается подо всё и не тащит зависимостей.

Учитывая что оно умеет в андрюху и айойсь без плясок с мильёном библиотек, то имхо автор очень даже молодец.

А посмотреть как оно собирается под нужную платформу можно же на CI. Есть там ещё один файлик для CI, но там платформа ненужная.

pon4ik ★★★★★
()
Ответ на: комментарий от xaizek

Согласен. Но всё же велосипедирование мне не нравится. А возникает оно от того, что в C++ слишком много возможных подходов сделать одно и то же. Да и нет общепринятого + многие библиотеки вместо того, чтобы делать что-то одно, но хорошо лезут делать то что им не стоит делать.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

что в C++ слишком много возможных подходов сделать одно и то же

У этого чувака в репозиории так же есть либа для графики. В C++20 добавляют графику.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от pon4ik

Кстати - но оно же зато собирается подо всё и не тащит зависимостей.

Шта? Оно использует cairo и тонну своих велосипедов.

А посмотреть как оно собирается под нужную платформу можно же на CI.

Это первое, куда я залез, но как написано в первом пункте - у автора своя система сборки и он не может объяснить как ей пользоваться.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от maxis11

Conan это то что умеет только в жёсткий semver и никак иначе. Версии как в openssl поддерживаются но с удивительными эффектами.

lberserq
()
Ответ на: комментарий от RazrFalcon

Ну вот смотри, для тебя, как для клиента этой поделки, что лучше - собрать cairo + этот велосипед под >=6 платформ. Или собрать cairo + ещё 5-6 велосипедов?

Или тебя возмущает факт, что сиё растёт из-за отсутсвия формата пакетов для библиотек, что толкает авторов ради удобства пользователей делать такой вот бандл?

Ну, если взять нечто компилируемое в нативный код, то я бы хотел посмотреть на платформу которая решает такую задачу, ну ради примера хотя бы подо все платформы куда можно собрать эту либу. С экосистемой, что бы были значится:

  • библиотека для xml
  • библиотека для логгирования
  • работа с fs

Возможно, ещё лет через 5 таковыми станут rust или go. Но тогда может и плюсы подоспеют?:)

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Портировали как то либу внутреннюю под Linux так вот xerces на некоторых наборах файлов оказался в xslt медленнее Msxml4

lberserq
()
Ответ на: комментарий от lberserq

Ну xslt это скорее xalan. А как он там xalan использует xercesc это ещё вопрос. Ну и их по пальцам одной руки фрезеровщика пересчитать реализаций xslt для нативных языков.

pon4ik ★★★★★
()

Собственная либа для работы с fs.

ну не собственное же ядро для работы с ФС? так что пофиг

darkenshvein ★★★★★
()
Ответ на: комментарий от pon4ik

Возможно, ещё лет через 5 таковыми станут rust

В Rust уже это всё есть. XML либы на зачаточном уровне, в том числе и моя собственная, но уж точно не хуже плюсов. На крайний случай есть биндинги к тому же libxml.

Или тебя возмущает факт, что сиё растёт из-за отсутсвия формата пакетов для библиотек, что толкает авторов ради удобства пользователей делать такой вот бандл?

Да.

собрать cairo + этот велосипед под >=6 платформ. Или собрать cairo + ещё 5-6 велосипедов?

Всё плохо. Мне нужна одна команда, которая сама всё сделает.

RazrFalcon ★★★★★
() автор топика
Последнее исправление: RazrFalcon (всего исправлений: 2)
Ответ на: комментарий от annulen

В процессе парсинга обнаружить несоответствие намного быстрее и проще

Так то спотык парсера, а это спотык валидатора — вещи разные же.

если хочется вадидировать то надо струткуру xml проектировать так, чтобы она хорошо описывалась схемой

Ничего сложного нет, шема пишется с пол пинка. Там и порядок появления тегов и их обязательность и кол-во и хинтинг содержимого. Единственное но, «наследование» изображается оборачиванием в базовый элемент, в который помещается один из типов наследников. Но вот это все — валидация парсинга. Ибо хинтинг значений мы валиднули, но сами значения могут быть некорректны, например, образно, высота меньше глубины.

если хочется генерировать

Запахло xslt.

deep-purple ★★★★★
()
Ответ на: комментарий от RazrFalcon

Угу, ну тогда ты за 5 минут соберёшь бинарники под ios, android, оффтопик и например другой linux-arm на трэвисе.

Если это так, то я снимаю шляпу перед этими ребятами, они молодцы и это победа. Но что-то мне сдаётся что всё пока на уровне красивых интерфейсов с заглушками под многие платформы.

pon4ik ★★★★★
()
Последнее исправление: pon4ik (всего исправлений: 1)
Ответ на: комментарий от andreyu

Ой, наверное тебя тоже надо было кастануть, см мой предыдущий коммент.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Так то спотык парсера, а это спотык валидатора — вещи разные же.

Да, но обычно задачей явяется «распарсь вот это говно», и значение имеет только первое

annulen ★★★★★
()
Ответ на: комментарий от deep-purple

Нету смысла, это не упрощает написание парсера, не ускоряет его, и может отловить только часть некорректных документов за время, сравнимое с полным разбором корректного

annulen ★★★★★
()
Ответ на: комментарий от RazrFalcon

На гитхабе вообще много чего есть.

Вот картинка которую ты скинул это как раз и есть то, о чём я говорю. Галки в колонках ставит сообщество разрабатывающее язык, и ты в одно лицо будешь грызть лапу, пока появится нужная тебе галочка. В то время когда на плюсах или сишечке ты можешь сделать лисапед здесь и сейчас если есть нужный компиль.

Вот тебе сегодня предлагают 300тыр(именно эту сумму) и просят сделать поделку с жёсткими нефункциональными требованиями которая отвечает на soap запросы под эти 6 платформ и для примера одну где галки в расте нет для cargo. Как ты пойдёшь зарабатывать эти деньги? Желательно за месяц, но можно и за два.

Ну для пущего трагизма, решим что это твой основной источник дохода и тебе надо трёх детей кормить.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Вы так говорите, как будто все C/C++ либы запросто можно собрать под любую os/архитектуру и всё заработает. Или вы в это действительно верите?

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Не страшно, я описывал для «примерно раза в три меньше». Смущают произвольные, но только в том смысле что я не смогу их описать.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Там большая часть проблемы - это содержимое атрибутов. Насколько я знаю, схема это не проверяет.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Проверяет и можно свои кастомные тайпхинты и типы описывать. Декларативщина. Есть конечно ограничения.

deep-purple ★★★★★
()
Ответ на: комментарий от RazrFalcon

Конечно не все. Но про поддерживаемые платформы в первую очередь решает автор решения а не автор экосистемы. Возможно в далёком светлом будующем этот подход начнёт в общем случае проигрывать, но пока это время не настало, когда речь идёт о сроках, рисках и прочей мерзкой лабуде.

pon4ik ★★★★★
()
Ответ на: комментарий от RazrFalcon

Вы так говорите, как будто все C/C++ либы запросто можно собрать под любую os/архитектуру и всё заработает.

Если в коде нет неотключаемого ассемблера/интринсиков и жестких завязок на endian и unaligned access (т.е., большиснтво прикладного кода), то да, соберется и заработает. И совсем другое дело, когда тупо нет компилятора для платформы

annulen ★★★★★
()
Ответ на: комментарий от annulen

А хотели? Хотябы так же частично, чтобы хоть примерно прикинуть — свг нам подсунули или какой другой хмл документ.

deep-purple ★★★★★
()
Ответ на: комментарий от RazrFalcon

Я использую QtCore, но и C++ мне нужен постольку, поскольку, например когда на C# что-то сделать нельзя или слишком уж нехорошо - пример современный OpenGL, хотя есть всякие Tao Framework и OpenTK, но они полумертвые в плане разработки.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Так андроид это извращ^Wособенная система, с кучей костылей и искуственных ограничений. А Linux он и в африке linux, хоть на sh4, хоть на ppc с softfp

annulen ★★★★★
()
Ответ на: комментарий от RazrFalcon

посмотрел я этот ifdef, одно место - это андроид-специфичное логирование (фича), два других вообще прекрасно обошлись бы без ифдефов если бы автор не настаивал на заголовках в стиле #include <cthing> вместо thing.h

annulen ★★★★★
()
Ответ на: комментарий от RazrFalcon

Проблема в том, что экосистема о которой ты говоришь ещё не существует в принципе а не только в плюсах.

Есть красивые прототипы с poc интерфейсами. И реализациями под самые попсовые платформы. Но остсутвующие в колонке cargo галки, при наличии компилятора и стандартной либы, как бы намекают, что всё не так радужно, и требуются доработки интерфейсов этой самой экосистемы, иначе, реализация cargo была бы тривиальна и получалась бы автоматом при реализации компилятора и стандартной библиотеки.

Или я неправильно понимаю значение расстановки галок?

Типы из rust, go и т.п. - молодцы и делают нужное дело, и я с удовольствием воспользуюсь плодами их трудов, если они завершат свой труд на моём веку. А если кто-то адаптирует их решение для плюсов, это же будет ещё более прекрасно.

pon4ik ★★★★★
()
Ответ на: комментарий от annulen

Норм. Шема есть, значит осилили, так я её себе и примерно представлял.

Ну а то что там не хватает — чего-то недовыложили или чел зашел в тот момент когда еще не выложили и вообще вопрос 2010 года, может сейчас уже все ок, просто оно нах никому не надо ))

deep-purple ★★★★★
()
Ответ на: комментарий от RazrFalcon

C++ намного хуже, в том плане, что он идёт к этой светлой цели экосистемы через взад.

Ибо платформ миллион как и велосипедов, и любой портабельный велосипед можно вкорячить на новую платформу за относительно небольшой набор костылей, поэтому и нет у большинства особого желания вкладываться эту самую экосистему, проще заплатить в данном конкретном случае, что ещё до кучи перекликается с идеологией самого языка.

Путь которым идут новые языки в этом плане - хорош, что и понятно: на ошибках учатся. Но, пока кто-то строит светлое будущее, кому то надо делать быстрые и портабельные штуки здесь и сейчас из того, что есть :)

pon4ik ★★★★★
()
Ответ на: комментарий от andreyu

С металлургов, значит) С такими у нас разговор короткий.Ъ

yoghurt ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.