LINUX.ORG.RU

Platform-Independent Primitives (PIP)

 , , , ,


3

6

PIP — кроссплатформенная легковесная библиотека под C++ (99), упрощающая написание консольных программ. Представляет собой связный набор классов, макросов и функций, которые значительно упрощают написание кода во многих прикладных областях. Основной упор в библиотеке сделан на функциональность, конфигурируемость и минимизацию конечного кода.

Основной класс PIObject предоставляет механизм «событие — обработчик», реализованный на макросах.

Предоставляет классы:

  • контейнеров;
  • строк;
  • потока;
  • таймера;
  • устройств ввода-вывода (файлы, UDP, TCP, COM-порт, разделяемая память, конфигурационные файлы и пр.);
  • консоли или терминала (отрисовка интерфейсов и обработка пользовательского ввода);
  • шифрования;
  • сжатия;
  • математики;
  • и другое.

Также даёт возможность сгенерировать файлы с метаинформацией С++ сущностей при помощи утилиты, входящей в состав библиотеки.

Интеграция с системой сборки CMake (поиск, инклюды, макрос для генерации метафайлов).

Опциональная зависимость от внешних библиотек:

  • libicu — поддержка кодировок (для Windows очень желательна);
  • libusb — поддержка работы с USB-устройствами;
  • libsodium — поддержка шифрования;
  • libfftw3 - поддержка БПФ;
  • libz — поддержка сжатия.

При сборке проверяется наличие сторонних зависимостей и выполняется сборка соответствующих модулей.

Документация находится в папке doc/html, на данный момент ещё в разработке.

Проверялась на ОС:

  • Windows XP, 7, 8, 10;
  • Linux (Ubuntu, Debian, Gentoo, Raspbian)l
  • Android;
  • Mac OS X;
  • проверялось давно:
    • FreeBSD;
    • Blackberry OS;
    • QNX.

>>> Скачать



Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 2)
Ответ на: комментарий от Begpoug

Qt это отдельный язык, который к C++ никакого отношения не имеет. Жирный и некрасивый. Нет уж, не надо его. Лучше уж буст с другими нормальными либами.

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

Вот в деревнях-то ели всё

буст

нормальная либа

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

Буст красивее Qt?

Хрен редьки не слаще, и тому и другому на свалку пора, оба монстры из прошлого века. Вместо буста: --std=c++17 и standalone либы, вместо культей - на «нормальном» (насколько он может быть нормальным) JS можно UI делать, без QML мусора.

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

Ога, вместо того, чтобы для веб-бибизянов (фулстакеров с зп 1.5x - 2x от моей) завернуть нативную либу, к которой они качественный UI сделают за пару часов используя обкатанный подход (Electron, или Node прослойка для прокидывания в веб), я буду их в Qt-мирок с его калечными JS-средствами зазывать.

Qt нужен там, где одни крестовики сидят, которые в полноценном вебе не бум-бум и у которых начальству на UX насрать - заказчик и так сожрет (фгупниихз и т.д.). Ну или на горах легаси (с этим случаем все понятно). А там где нужен достойный результат - извольте использовать современные технологии по назначению: вычисления - на крестах, UI - на JS/TS.

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

Qt это отдельный язык, который к C++ никакого отношения не имеет

Упоролся чтоли? Это просто набор библиотек который компилируется gcc

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

Вместо буста: --std=c++17 и standalone либы

Да щас. Многому аналогов нет, и даже те либы что включили в стандарт, включили в урезанном виде.

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

Буст красивее Qt?

Да, но это ж надо было учить C++ а не java.

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

Верно, в бусте много полезностей. Но во первых не все они нужны, а во вторых есть N способов их использовать без установки «полного монолитного буста».

Можно boost.system настроить в header-only и подтянуть только нужные хедеры остальных засивимостей. Можно аккуратно собрать нужные не-хедер-онли кусочки так, что сборка будет переносимой.

А «пустили b2 в корне буста, и погнали кодить» - почти всегда неоптимальное решение для любого С++ проекта.

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

«современные технологии» это торможение и жор памяти изза говнокода, написанного распонтованными «программистами»

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

поддержу. буст стократ стройнее культи. культя - безобразное и несистематично спроектированное поделие типичных гуеписателей. когда они это лепили, они думали только над конкретной конечной задачей, а не над реализацией в целом. в итоге закономерно получили УГ со своим исключительно корявым велосипедом для обработки событий внутри и приколоченным к нему гвоздями всему остальному. потом много раз пытались всё это дополнить/исправить. в результате наросло много жира, но лучше не стало. а буст - просто набор полезных кроссплаформенных библиотек, которые (хотя иногда и зря) постепенно мигрируют в стандарт. и главное, что для буста не нужно никаких левых тулзов, его можно использовать без «компиляции» какого-то псевдокода. он просто доступен сразу и легко интегрируется в любое приложение.

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

качественный UI

обкатанный подход

Electron, или Node

достойный результат

современные технологии

по назначению

UI - на JS/TS

Сцццуууко, так это из-за тебя такой цирк творится на десктопе? Ты даже не представляешь как же сильно, как воды в пустыне, мне хочется взять новенький молоток, и со вкусом отбить тебе все пальцы и руки до кровавого кожно-костного фарша, чтобы ты, ленивая идиотина хипстерская, никогда больше написания софта не касался, ходил с катетером и сдох зимой в -25°C на московской помойке.

Но это не всё. Чтобы искупить всю боль которую ты нёс пользователям, в аду тебя посадят голышом в железный куб с гвоздями и булавками на полу, там будет ПК с 4 Гб RAM и всегда открытым браузером с сотней вкладок на котором ты будешь писать софт на Node и Electron, и стоит только потреблению памяти превысить 70% или активироваться свопу, как в твою собачью клетку польется кипящее масло, ты будешь не теряя сознания, покрываясь волдырями и ожогами вариться в нем до состояния слепого мясного куска, плавая пока масло не остынет, а то что от тебя останется кинут чертям дабы они сгрызли это кусая ровно по одному кусочку в день. А затем всё повторится заново.

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

Qt нужен там, где одни крестовики сидят, которые в полноценном вебе не бум-бум и у которых начальству на UX насрать

А ты можешь рационально, объяснить, что у Qt не так с UX?

Да, и не забывай, что Qt - это не только QML (если ты его имел в виду под «JS-средствами»).

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

Сам подход к написанию гуя в Qt - «не так». Никто не сомневается, что на Qt возможно написать красивый и удобный UI с высокой отзывчивостью и низким потреблением памяти. Только так «сделать хорошо» возможно и на голых X11 или на голых Win32 написать.

А на практике, «сделать хорошо», особенно в части фронтендных формочек, - никому не нужно, а нужно «дешево и сердито». В Qt это выливается в кривосбокуприлепленные недовебтехнологии вроде QML, которые вроде как «лучше» чем нормальные веб-технологии белого человека только тем, что с существующими Qt формами интегрируются.

А вебе пейсбук и гугл, двигают прогресс, развивая UI инструменты (реакт с ангуляром в смысле), которые позволяют «сделать достаточно хорошо и быстро», даже тогда, когда это не требуется специально. В электроне все еще куча проблем, но перспективы более чем радужные - VSCode тому подтверждение. Можно как угодно относиться к оффтоп-софту в общем, и к Гамме и Хейлсбергу в частности, но VSCode явно показывает, что они знают с какой стороны браться за клавиатуру.

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

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

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

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

Это был вопрос. Последняя КТ с которой я имел дело - 4.5 и там все было именно так как ты написала. Судя по твоим словам ты в курсе о пятой. Просто я надеялся на хорошее, на чудо :-)

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

«современные технологии» это торможение и жор памяти

Видимо, технологии несовременные - это ускорение и высвобождение памяти?

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

культя - безобразное и несистематично спроектированное поделие типичных гуеписателей

А буст - систематическая свалка не связанных кросс-платформенных библиотек, систематически тянущих друг друга по зависимостям. Да и половина этой кучи - бред графоманов с раздутым ЧСВ

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

Но это же правда! У него даже 💩компилятор💩 свой есть! Ну и что, что он компиляет в плюсы? valac же в С компиляет, но это не лишает Vala статуса языка.

А когда эти слоупоки соизволят выкинуть этот 💩 костыль в угоду последним стандартам, тогда никто не будет говорить, что культи это отдельный язык. А если Qt такой идеальный, то почему в стандарт тянут фичи из буста, а не из куте?

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

Это ты слоупок. moc можно заменить на макросы и шаблоны, но код получается страшненьким: https://woboq.com/blog/verdigris-qt-without-moc.html Новые стандарты не особо помогают, пока метаклассы Саттера не заапрувят: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0707r0.pdf Так то.

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

библиотеки в бусте достаточно независимы. и это большой плюс буста. многие библиотеки вообще header-only. и главное, что тебя никто не заставляет юзать все библиотеки. можешь юзать только какую-то одну, или две. культя же - завязанное в единый узел жуткое нагромождение откровенно гуёвого кода. плюс ещё и IDE и свой наколенный недокомпилятор, намертво припаянный к этому говнокоду, без которого культя вообще нежизнеспособна. мало того, гуепейсатели ещё и сделали вид, что они что-то могут в системном программировании, и притянули туда «поддержку» работы с железом, которая реализована вообще отвратно, учитывая завязку на тормозные внутренние механизмы культи. гуй - он и ест гуй, это без пяти минут веб. и не надо пытаться из него сделать что-то стОящее. буст же не имеет отношения к гую и написан довольно неплохо, хотя есть там места, которые можно ещё оптимизировать. но основная часть кода там и так неплохо работает. и он не требует никаких дополнительных тузлов, кроме компилятора.

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

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

Будто что-то плохое.

Да и половина этой кучи - бред графоманов с раздутым ЧСВ

Например? Это вам не hackage, буст ориентирован на продакшн.

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

культя же - завязанное в единый узел жуткое нагромождение откровенно гуёвого кода

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

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

Но это же правда! У него даже 💩компилятор💩 свой есть!

Не компилятор, а генератор вспомогательного кода, такие есть во многих больших проектах на «Ъ-С++»

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

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

Да, но они заразы тянут друг друга, и в результате не успеешь оглянуться, а уже половина буста у тебя....

культя же - завязанное в единый узел жуткое нагромождение откровенно гуёвого кода.

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

во-вторых, да, это гуйня, и самая суть Qt в этой гуйне, и пожалуй лучшая кросс-платформенная производительная и гибкая реализация этой гуйни, все остальное это просто довески, позволяющие а) релизовать эту гуйню и б) работать с ней и вокруг нее, не ботая ворох сторонних библиотек

Если разрабатывать негуевые приложения, то тут уже Qt может быть не лучшим выбором, а то и весьма паршивым (смотря какая область)

плюс ещё и IDE

никто не заставляет. А многие прутся и пользуют с не-Qt проектами

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

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

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

Написал народ serial port - ну что же его выкидывать теперь? отдельный модуль, не хочешь - забудь что он есть

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

Зато код читаемый

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

гуй - он и ест гуй, это без пяти минут веб. и не надо пытаться из него сделать что-то стОящее.

При таком отношении к гую, понятен такой негатив Qt. Но что делать если в конкретной программе все же нужен гуй? Реализовать гуй при помощи всемогущего буста?

Qt Creator - это не просто IDE для Qt, а фактически база с качественной документацией и большим количеством примеров.

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

Qt Creator - это не просто IDE для Qt, а фактически база с качественной документацией и большим количеством примеров.

Это не просто IDE для Qt, это IDE для С++ (и некоторых других языков) с опциональной поддержкой Qt-специфичных вещей, а документацию можно импортировать, хоть маны для системных вызовов

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

К слову мы сделали примерно так) Получился аналог Qt'шных слотов сигналов на шаблонах и макросах В этом есть и плюсы, например, проверка на этапе компиляции.

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

С сишными не работал, а в asio имхо всё на своем месте, ничего лишнего (скорее наоборот), и даже пользоваться удобно. Если мы про интерфейс говорим, конечно.

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

moc можно заменить на макросы и шаблоны

вообще-то нет. и это именно из-за макросов: красивая запись в диалекте «Qt С++» в обычном С++ нереализуема никак. только по уродски и то есть ряд нереализуемых фич, в частности тэги слотов и сигналов.

ckotinko ☆☆☆
()
Ответ на: комментарий от fluorite

замены на макросах

вот так с помощью нехитрых приспособлений буханку черного хлеба можно превратить в троллейбус. но зачем?

ckotinko ☆☆☆
()
Ответ на: комментарий от fluorite

Что? Конечно, тебе виднее, чем разработчикам Qt, которые его написали. Пишу, что SSH - Secure Shell, он мне пишет про аргументацию уровня IP - Interesting Package. Сильно.

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

Qt это отдельный язык, который к C++ никакого отношения не имеет

Святая толстота

Это реальность. Qt-программисты не знают C++.

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

Давайте все-таки не обобщать.

Я и не обобщаю. Qt-программисты - «программисты», которые за пределы Qt выйти не могут и не хотят.

Иногда в Qt приходят из C++

Бывают, конечно, C++-программисты, волей случая вынужденные использовать Qt.

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

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

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

начинал с Qt
было легче войти в мир C++

И не знать стандартной библиотеки, ммм...

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

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

Бегло глянул в исходники - да, код грязный даже для C++98 (в логику не вникал). Ладно кодстайл - субъективно (но он плох). Директивы препроцессора ни с того ни с сего уезжают далеко вправо (что уже нарушение). Нет списков инициализации, нет константности там где она напрашивается. daemon.cpp - половина методов начинается с «if (!x) return;» что намекает на логические протечки. В классах владеющие сырые указатели, так и не нашел где освобождается память. Они же отдаются наружу. Всюду магические числа. Указатели void* с кастами к нужным типам.

Если предположить что всё отлажено и ошибок сейчас нет - они будут, ибо код расползается на части. Серьезно, «наркоманский» boost читается проще, да и Qt (внутре там нормальный код, кстати).

Вышесказанное претендует на поверхностную, но конструктивную критику /*)

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

Сейчас бы писать на фреймворке для C++ и не знать C++... Толсто.

Суровая правда жизни. Посмотрите хотя бы на такого персонажа, как RazrFalcon. Он не умеет в C++ за пределами Qt. Так что даже на LOR-е легко найти подтверждения словам tailgunner-а.

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

Если я не пишу четырёхэтажные шаблоны - я не знаю C++? Ну ок.

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

Честно не знаю как вы смотрели исходники, но у меня ничего никуда не уезжает (может у вас что-то с редактором). daemon.cpp - это не составляющая библиотеки и не претендует на красивость понятность, хотя надо бы... но пока не срослось, и да sysytem_daemon одна из самых хреново написаных утилит, хотя работает. Посмотрите хотя бы код самой библиотеки

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

Сейчас бы писать на фреймворке для C++ и не знать C++... Толсто.

В «Qt и C++» слишком низкий порог вхождения, знать C++ там можно лишь поверхностно.

Qt стал этаким Delphi современного мира. Кстати, если покопаться на мертвых форумах делфистов, они все бегут либо на Qt, либо на .NET, со всеми вытекающими. Как они в своё время не знали Pascal и программировали мышкой, так и современные Qt-шники (в массе, за всех не говорю конечно) не знают C++ и программируют мышкой.

И ещё их отличает уровень нездорового фанатизма и «синдрома утёнка». Они пытаются пропихнуть Qt в любую щель. Вот, даже в этой теме уже нашёлся фанатик, который отписался в стиле «Родина дала нам Qt». Как известно, фанатизм до добра не доводит и авторитет Qt-разработчиков из-за таких вот утят постепенно снижается. Их уже не считают программистами на C++, пройдёт время и они будут котироваться примерно так же, как разработчики приложений на Electron или web-сайтов на PHP.

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

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

Понимают, где можно и нужно воспользоваться Qt, а где он противопоказан.

А где он противопоказан?

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

В «Qt и C++» слишком низкий порог вхождения

Разве не у всех фреймворков низкий порог вхождения? Qt достаточно мощный и гибкий инструмент, там полно мест, за которые «прогаммист мышкой» никогда не возьмется. Что плохого в том, что он подходит и профессионалам, и новичкам? - пусть учатся. Проблема в говнокодерах, которые не хотят понимать, как работает то, что они пишут. Ведь Qt можно спокойно использовать в связке make + qt_libs + vim + moc + gcc + other_libs.

И ещё их отличает уровень нездорового фанатизма и «синдрома утёнка». Они пытаются пропихнуть Qt в любую щель.

Это так же плохо, как нездоровый хейт. Глупо отрицать, что эта библиотека внесла большой вклад в свободное ПО. Мне тоже не нравится пропихивание Qt в любую щель, это противоречит идеологии C++, но этим занимаются сами разработчики этой библиотеки.

не заткнуть

Если имеем популярный инструмент и его не менее популярную альтернативу, всегда будут разводить холивары. Это не только к библиотекам относится. Для мира gnu\linux это свойственно.

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

Qt стал этаким Delphi современного мира

mv, перелогинься

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

Да ерунда это. Qt ни в каком месте не прибит к гую, кроме (внезапно) QtGui и пары надстроек над ним. А QtCore, QtXml, QtSql, QtNetwork, наконец - всё это прекрасно собирается и без гуя.

У меня всё же ощущение, что у тебя представление о Qt на уровне «мне Рабинович по телефону напел». То, что люди на форуме по кроссплатформенному программированию жалуются на проблемы - так это на любом форуме так. 99% людей приходят на форумы со своими нерешёнными проблемами, и очень мало кто приходит с историями успеха. Это такая специфическая особенность психики гомосапиенсов, которую здоровому инопланетянину понять крайне тяжело. :)

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

Буханка, троллейбус... Вот, в сишечке вместо модульности сделали «замену на макросах» (точнее, на командах препроцессора), и ничего, прокатило, и уже 40 лет пипла хавает, и в кресты она тоже по наследству перешла. :P

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.