LINUX.ORG.RU

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

 ,


2

8

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

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

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

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

ПЕРВЫЙ НАХ

По теме: две основные претензии - нестандартизованные никоим образом велосипеды и отсутствие документации - справедливы для большинства продукции не только в разработке, c++ здесь только как срачеобразующий фактор(т. е. о многом другом слышно меньше)

Deleted ()

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

Это автор этой библиотеки вам лично рассказал, что в С++ все хорошо? Может он уверял вас, что его реализация svg лучшая?

В мире много велосипедов, почему вы не создали тему о них?

andreyu ★★★★★ ()

Не осилил собрать библиотеку и побежал плакать сюда?

ncuxer ()

собственная система сборки.

Нет, там Make.

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

Может быть куда проще чем тащить какую-то лишнюю хрень.

Отсутствие инструкции по сборке

make

Почти полное отсутствие документации.
Почти полное отсутствие тестов.

Бывает, не трагедия.

What I want is a step-by-step build guide. Like a bash script, which will download and build all your dependencies.

Пфффф. Так это у тебя проблемы.

xaizek ★★★★★ ()

юзал бы autotools, как все нормальные люди

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

Нет, там Make.

Нет.

Может быть куда проще чем тащить какую-то лишнюю хрень.

На то он и симптом.

Пфффф. Так это у тебя проблемы.

Моя либа, под линем, собирается одной командой. ЧЯДНТ?

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

Там уже разработчик залил инструкцию для мартышек: apt install ... && make

Очень сложно!

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

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

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

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

А я не только о вас говорю.

«не только о вас» означает, что и обо мне тоже. Так вот, поздравляю вас соврамши.

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

Я вам больше скажу. Это в любом языке так. В ТОП выходит только небольшой процент всего, что когда бы то ни было начинали делать.

Просто вы фанат пока еще маргинального языка, а в маргинальных языках ситуация несколько иная из-за того, что там все на виду из-за скудности выбора.

eao197 ★★★★★ ()

«Я шлялся по гитхабу и нашел какаху. Какое же дерьмо этот ваш C++». Сила вброса: 0/10, хотя может ньюфаги какие поведутся на rustоманский бред.

kawaii_neko ★★★ ()

Там чел вообще молодец. У него своя система сборки, которая... требует себя для сборки себя. Пять баллов просто.

i-rinat ★★★★★ ()
Ответ на: комментарий от kawaii_neko

Какаха - это сюда: https://github.com/svgpp/svgpp

Шаблоны головного мозга, требующие больше 8GB ОЗУ для сборки.

Вот что это такое: https://github.com/svgpp/svgpp/blob/master/src/samples/sample_gradient.cpp#L2... ?

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

Мне казалось это вы выступали защитником C++ на лоре. Или я опять не так вас понял?

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

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

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

Вы случаем на HN под ником pjmlp не сидите? Ну очень он на вас похож. В каждой теме про C++, Rust и рядом рассказывает, что начиная с C++11 утечек больше нет, и вообще проблем с безопасностью нет. Да и вообще все фичи раста можно сделать в C++, ведь std::variant ничем не хуже tagged union с паттерн матчингом.

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

На reddit-е, HN и Хабре я под собственным ником.

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

Видимо, ты увидел make и подумал, что всё заработает, да? Но make там запускает prorab. Prorab это система сборки от того же автора, исходники лежат в соседнем репозитории. Скачиваешь их, там тоже make. Но он тоже требует для сборки prorab. Отлично просто. Чтобы собрать prorab, нужно иметь собранный prorab.

i-rinat ★★★★★ ()
  1. QBS/meson вполне приличные сборки, все свои проекты и половина корпоративных перевел на qbs (остальные на cmake).
  2. Не все компиляторы поддерживают с++17, не все любят пихать boost, как итог: проблемы автора а не языка, варианты готовые есть.
  3. conan this
  4. conan this
  5. Проблемы автора, а не языка. По проекту, нашел сборку под линукса за три клика
  6. Для хобби проекта в early development это норма, опять же, чем тебе С++ мешает вставить doxygen в код?
  7. GOTO 6. Видимо про: Qt test, gtest, gmock, и.т.д. узнаешь впервые.

Что ты этим хотел сказать и чем тебе кресты не угодили? Пост похож на какое-то нытье не по делу.

P.S: первая страница коммитов: 80% времени херь не связанная с кодом, в остальных коммитах, код менялся на 5-10 строк за один коммит, что неудивительно почему херь ничего не умеет.

maxis11 ()

Ты нашел никому не нужный велосипед с треугольными колесами, который клепал наркоман с синдромом NIH в терминальной стадии и винишь в этом С++.

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

Опять же, если тебе нужна сборвка в стиле cargo с зависимостями и конфигурациями, то conan тебе в помощь.

maxis11 ()

Собственная либа для логирования

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

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

Видимо, ты увидел make и подумал, что всё заработает, да?

Нет, я увидел длину инструкции.

Но make там запускает prorab. Prorab это система сборки от того же автора, исходники лежат в соседнем репозитории. Скачиваешь их, там тоже make. Но он тоже требует для сборки prorab. Отлично просто. Чтобы собрать prorab, нужно иметь собранный prorab.

Вспомнилась шутка 90х: unzip.zip.

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

Нет, там Make.

Нет.

А это заглушка. Но эта «билд система» всего лишь тот же make. Инструкции сборки могли бы и пригодиться.

Моя либа, под линем, собирается одной командой. ЧЯДНТ?

Называешь несоответствие чужих проектов твоим фантазиям проблемами.

xaizek ★★★★★ ()

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

Проблемы «NIH-синдром» и «раздолбайство», к сожалению, не решаются техническими методами, поэтому этот вопль не имеет практической значимости

annulen ★★★★★ ()
Ответ на: комментарий от maxis11
  1. qbs хорошо всем, кроме того, что его никто не использует.
  2. Это проблема экосистемы.
  3. сишка
  4. это к автору
  5. ubuntu != linux
  6. Мне - ничего. Автору видимо мешает, как и 99% проектам на C++. Сравните с Rust.
  7. Опять же - это к автору, а не ко мне. У меня всё с тестами.

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

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

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

А кого? Вы на сишку посмотрите. Там внешние зависимости вообще не приняты. Нужно самому всё велосипедить.

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

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

Ну не скажите. Я активно работал только с rust и python, и там таких проблем нет, ибо ПМ и прочие ништяки в комплекте.

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

conan

Его даже в генту нету.

PS: у него центральный репозиторий есть? Где можно посмотреть список доступных пакетов?

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

2. Это проблема экосистемы.

То, что автор вместо кучи готовых либ со средствами работы с fs навелосипедил что-то свое — это проблема экосистемы? Ну, OK.

6. Мне - ничего. Автору видимо мешает, как и 99% проектам на C++.

Мне вот тоже ничего не мешает. Причем здесь C++?

7. Опять же - это к автору, а не ко мне. У меня всё с тестами.

И у нас все отлично с тестами. Причем здесь C++?

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

Вы, к сожалению, не единственный разработчик на C++.

Вот покажите мне хорошую либу для того же csv, xml?

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

Вы, к сожалению, не единственный разработчик на C++.

Но вы же судите о C++ по отдельным персонажам.

Вот покажите мне хорошую либу для того же csv, xml?

С csv дела не имел. Для XML раньше использовал Xerces-C++ и libxml2. Вроде бы expat был неплох. Еще в POCO были средства для работы с XML (только не помню, собственные или же в виде обертки над тем же libexpat).

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

Но вы же судите о C++ по отдельным персонажам.

Опять вы перекручиваете. Я очень часто ищу C++ либы и ситуация трагична.

libxml2

Сишка.

Xerces-C++

Фреймворк.

tinyxml2 неплох, но он написан на C с классами и использует const char* для строк.

Вот и получаем, что или фреймворк или уг.

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

Я очень часто ищу C++ либы и ситуация трагична.

Я бы отделил реальную ситуацию от вашего ее восприятия. Скорее всего это разные вещи.

libxml2

Сишка.

И что? Раз в C++ отличный интероп с C (и куча проблем из-за этого), то почему бы не использовать в C++ обычные C-шные либы.

Xerces-C++

Фреймворк.

Так вам шашечки или ехать?

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

Вот покажите мне хорошую либу для того же csv, xml?

tinyxml.

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

tinyxml2 неплох, но он написан на C с классами

А еще там стиль кода, к которому вы не привыкли. Да?

и использует const char* для строк.

1. И что из этого следует?
2. Если вы присмотритесь внимательнее, то заметите TIXML_USE_STL, который включает stl-ные строки.

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

Мде. Расскажи мне про такую либу на C или на rust?

Ну или хотя бы на java...

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

Я активно работал только с rust и python, и там таких проблем нет, ибо ПМ и прочие ништяки в комплекте.

Тут больше зависит от природы языка. У браузерного JS, например, нету в комплекте никакого пакетного менеджера, но нет, народ притащил NodeJS и начал писать на нем такие менеджеры. У php его тоже отродясь не бывало, но народ его запилил. Почему с С++ не так? На мой взгляд, потому что а) эти языки платформенно-независимы и их модули не используют системные библиотеки, так что их очень просто развертывать, к тому же нет никаких траблов с ABI-совместимостью разных версий модулей и библиотек; б) есть культура переиспользования модулей, отчасти обусловленная (а), а отчасти тем, что разработчики так же пользуются языками с встроенным ПМ

Ну и во все это как слон в посудную лавку вламывается компилятор MS, несовместимый ни с чем ни по флагам компилятора, ни по ABI, ни по прочему поведению. Другие ни с чем не совместимые С++ компиляторы к счастью уже вымерли или приспособились

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

Сказали же хорошую, а не говно тормозное

pugixml

annulen ★★★★★ ()

Отсутствие инструкции по сборке

можно вылечить рассказом про, например, obs

Почти полное отсутствие документации

это норма даже для коммерческих проектов

Почти полное отсутствие тестов

это норма для 99% хобби-проектов

upcFrost ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)