Анон слушай, такая ситуация, вообще есть ковыряюсь я через в VS ы одном фреймворке JUCE, вообщем, есть например файл class_name.cpp и есть файл для него class_name.h ну он в самом cpp файле не подключен через include, а подключен где-то там хуй знает где, в общем не важно, компилится всё норм, ну при чтении VS не включает подсветку синтаксиса нормально и intellisense соответсвтено нихуя не видит деклорацию класса то есть типы полей, всю хуйню, ругается по всякому на такие моменты как например типа :: это для описания методов класса, а то что у тебя написано это хуй пойми что неизвестно. Вообщем можно как то неявно задать среде чтобы она нормально распознавала исходник без прописования инклудов? А то неудобно, нужно поспомтреть к какому типу относится переменная, мышкой наводишь на неё, а всплывающее окно показывает undefined
Возможно, скоро придётся менять работу, только вот я всё время хуярил на Qt (сеть, работу с бд, серверы, клиенты) и чё-т непонятно, как на крестах похожую асинхронную модель типа сигналов-слотов делать. Должны же быть библиотечные инструменты? Чё-т как-то неуверенно себя чувствую. На Qt могу чё-то делать, а на крестах инструментария не знаю толком.
>>2749763 Так у кути же сигнал слоты - это колбеки повешенные на ивент систему. Насколько я понимаю. Есть отдельно asio, есть отдельно sigslot, boost::signals2. А вот насколько легко они в кучу сваливаются - хуй знает.
>>2749886 >Дак рисовать кнопки все равно или в qt или в ублюдских виндовс формах. Дык в том-то и дело, что рисование формочек в моём случае дело второстепенное, а самое интересное (и трудозатратное для меня) на стороне сервера -- взаимодействие и дизайн компонентов, чтобы можно было в более-менее вменяемые сроки модифицировать и добавлять фичи, разруливание потоков, вот это всё.
Начал я изучать плюсы. Ну освоил базу, ооп. Порешал 30+ задачек на литкоде. А что дальше учить я и хз. Хотел бы возможно игрушку по типу diablo, но тут я думаю профитнее будет шарп с его юнити(об этой мысли задумался только на момент написания треда). Я совсем не знаю, что я хочу дальше изучать в плюсах, и что вообще можно. Подскажите, пожалуйста, анончики, и что думаете об игре?
>>2749363 Даже с правильно настроенным проектом интеллиСенс может сильно тупить, особенно когда библиотека большая и очень много заголовков. Решение - поставь ReSharper, он сильно лучше работает в плане разбора исходников, да и много других полезных фич имеет.
>>2749763 Qt тем и хорош, что доступный механизм по работе с сетью, ещё и гуи есть. Как сказали анонсы выше, для сети без Qt адекватнее всего использовать Boost::ASIO и основанные на нем Boost::BEAST для HTTP/WebSocket и какой-нибудь Yandex OZO для работы с сетевыми БД.
ASIO позволяет сделать пиздец производительный сетевой код, но порог вхождения в api высокий
>>2749947 Не надо идти в геймдев ради изучения языка, в геймдеве много времени занимает работа с моделями и т.п. Сделать движок и к нему технодемку норм идея, но я бы предложил сделать какой-нибудь пиздатый сетевой сервис. Например, api для телеграм-бота, который обрабатывает картинки в чате, хуй знает, нейронкой их меняет и выдает.
>>2749947 Сейчас серьезно отвечу. Ответ зависит от того, какая у тебя цель. Если ты хочешь именно игрушку сделать - то шарп+юнити+купленные ассеты твой выбор.
НО. Если у тебя цель - разобраться, а как вообще все там работает. Как устроено изнутри. Поймать проблемы, которые все кучу раз ловили и самому героически их решить. Столкнуться с тем, что твой С++ работает медленнее питоновского кода и полезть разбираться - с фига. А игрушка в процессе - может превратиться в музыкальный секвенсер. Плюсы - отличный вариант.
Чтобы мысль более ясно звучала. Чтобы сделать игрушку по бырой - юнити-шарпы. Чтобы понять, а что ж там скрывается под капотом этого всего дела - плюсы.
>>2749947 >Хотел бы возможно игрушку по типу diablo, но тут я думаю профитнее будет шарп с его юнити(об этой мысли задумался только на момент написания треда). Я совсем не знаю, что я хочу дальше изучать в плюсах, и что вообще можно. Подскажите, пожалуйста, анончики, и что думаете об игре Будут очень жесткие проблемы с графикой, бесплатных 3д ассетов мало. Если ты для себя то попробуй начать написание своего движка, советую оплатить подписку на гпт4 чтобы он был своего рода ментором, и можешь еще задавать вопросы в тг чатах типо @supapro. Какой-то майнкрафт на минималках можно написать за месяца 3-4. Если ты для работы в будущем, то нужно потратить где-то пол годика на изучение С++ и после можешь вкатываться в UE5, там С++ очень своеобразный и многие знания не понадобятся. Для 2д игорь можно наверное взять cocos2d, но я ни разу еще не видел его в вакансиях, там наверное и правда лучше юнити По С++ можешь что угодно изучать, я бы наверное курс Константина Владимирова на ютубе взял как базу и решал бы задачки из https://gitlab.com/slon/shad-cpp0 и https://gitlab.com/slon/shad-cpp
>>2749876 Я-то почему спрашиваю. У нас внезапно на заводе - хотят заставить с шарпов на си плюс-плюс пересаживаться, чтобы писать и ПО для устройств и технологическое ПО на одном стеке. Типа, чтобы не писать на разных языках реализацию одних и тех же библиотек и прочего. Ну, собственно. Так исторически сложилось, что все сетевое на устройствах - с библиотеками либо от вендора устройств, либо - это линукс и там линуксовыми штуками можно обойтись. С другой стороны- на винде той же - был шарп/жава, и там спокойно жили. А теперь -надо чтобы и в устройствах и прикладном-технологическом софте одни библиотеки были. Донести позицию, что хуету придумали - не получилось, менеджмент взял это дело в оборот. Собсно я потому и спрашиваю. А как какать сделать хотя бы такую вот простую штуку на плюсах-то? Я же с лапками шарпами привык уже что все что мне надо - есть рядом.
>>2750113 А оно влезет в Bare metal и вообще рассчитано на них? Я ж уже сказал - нуб, кодил всю сознательную жизнь прикладной софт на шарпах. Просто опять же. Менеджеры ебанаты - придумали зачем-то, что все надо на одном языке, а т.к. завод и железки приоритетнее - выбрали плюсы.
>>2750110 >такую вот простую штуку на плюсах-то Смотри, в С++ совсем другая идеология, С++ он дизайнился с 20тилетним легаси в уме, из коробки в нем ничего нет потому что все слишком неуниверсально. Работы с сетью и даже сокетов из коробки в С++ тоже нет, люди делают библиотеки где оборачивают системное апи под разными платформами в одинаковый С++ код. Ответ на твой вопрос - никак, без библиотек просто н-и-к-а-к. Если ты не хочешь потратить пол года на создание своей библиотеки для работы с сетью то твой алгоритм действий такой: 1. Заходишь на conan.io и следуешь инструкциям по установке 2. Гуглишь http server library c++ 3. Ни в коем случае не берешь ничего что содержит в названии слово boost 4. Гуглишь conan cmake и копипастишь оттуда шаблон CMakeLists.txt 5. Устанавливаешь библиотеку и радуешься жизни
Другие варианты либо привязаны к какой-то из платформ, либо ты потратишь на них не 20 минут а 60 часов
>>2750131 Это не прикладная библиотека, это библиотека чтобы сделать свою библиотеку для работы с сетью, набор кирпичиков. Если он правда переходит из шарпов то начитавшись сайтов типо SO/Quora где везде рекомендуют всякие асио и бисты наверняка попробует и подумает >блять в с++ для гет запроса ПРАВДА нужно вручную создавать http хедеры? А взяв какой-то cpp-httplib гляди и осилит
>>2750143 В таком стиле написан сервак по обслуживанию зоопарка устройств, и 100ГБ/с оно держит на зеончике 2006 года и 4 гигах оперативки. Заменял он как раз сервак написанный на плюсах, где каждый коннект - отдельный тред, ну и нагрузка которую держал тот сервак на плюсах на том же железе - 100МБ/с, дальше просто задыхался и просил пощады. Конечно, прирост не обязательно связан с асинк-эвейтами, там еще много чего отличается.
>>2750140 В Boost::BEAST не надо шттп хедер создавать. >>2750110 Интересно, а что за ОС? Если Астра Линукс, то там есть Qt 5.11, так и пили технологичку на нем, он хорош.
>>2750236 0 пиздежа. Я пришел в 2015м. В 2014м ушел чел, который тот сервак на С++ писал. Некому было поддерживать его. Первым проектом как раз было переписывание на шарпы того что было на плюсах. Доступа к исходникам - не было(тайна комерческая дохуя), было описание протокола обмена с устройствами и описание пользовательских функций.
>>2750521 У других - своих проектов до жопы. Типа блин. Это же завод. Я вроде сказал. На заводе - такая практика - у каждого программиста - свой проект, а зачастую - несколько своих проектов, которые они ведут. Уходит программист - знания уносит с собой. Как поддерживать это дело - никто не знают и молятся, чтобы все не ебнулось, пока замену не найдут. От того что все не разваливается - специфичность заводских программистов только спасает, потому что с одной стороны - все шаристые(и таки если пиздец важно - могут включиться и чутка поддержать), с другой - сидят на жопе ровно, ругают работадателя и продолжают кодить за миску гречки.
>>2750528 Работаю на мелком производстве в мск. У нас тоже самое. Каждый отдел имеет своих программистов. И вот я наговнокодил какой то софт, он как то работает, но когда я уйду никто его дорабатывать не будет. ну лан, у нас ещё один прогер есть, так что не все так плохо
>>2749383 Правда ли вулкан так сложен как говорят? Я вот опенгл ковыряю, который легче вулкана, как говорят. Вроде принципы понимаю, но обилие всех настроек и параметров в голову пока не укладывается, то есть я не могу написать код, никуда не подглядывая и ничего не копипастя.
>>2748862 (OP) Что за приколы vector<int> huipizda{ 0, 1, 2, 3, 4 }; int govno = huipizda[99999999]; думаете код выдаст какую нибудь ArrayIndexOutOfBoundsException? а вот хуй вам)))0
>>2752713 Лол, ты реально думал что в этом динозавре будут проверки на выход за рамки массива? Кстати вроде даже в паскале есть проверка на это, думайте
Есть программа с залупированным инпутом, после каждого инпута она печатает в консоль и ждет следующего инпута. Как это по нормальному протестировать через gtest? Я хочу задавать в коде команды для инпута и потом ассертить то, что программа выводит. Пытался перенаправлять потоки ввода и вывода, смог вывод превращать в вектор со строками, а с вводом не сработало.
Единственное, что приходит в голову - не заниматься хуйней и сделать отдельную функцию со всей логикой, которая принимает массив с командами и читает его вместо инпута, но может есть какое-то другое правильное решение?
>>2752830 > Единственное, что приходит в голову - не заниматься хуйней и сделать отдельную функцию со всей логикой, которая принимает массив с командами и читает его вместо инпута, но может есть какое-то другое правильное решение? Этот и есть правильное решение Выносишь логику в отдельную функцию/класс, чтобы она не зависела от типа ввода
>>2752713 во-первых пошел нахуй во-вторых читай документацию хочеш эксепшон - пишеш .at(99999) не хочеш - пишеш [99999] в заключение лишь добавлю что ты пидор а я ебал твою мать
>>2752830 Логика может работать со ссылками на std::istream и std::ostream. Для тестов можно подсовывать std:stringstream, для приложения std::cin и std::cout.
Возник следующий вопрос. Есть файл с функциями и файл с тестами,которые объединяются мейком. Хочу,чтоб в зависимости от таргета в мейке в одном случае выводились результаты теста то одной группы функций,то другой. Но как мне это сделать? По идее через ifdefы ,но могут ли на них влиять таргеты мейка? И вообще, возможно ли такое
>>2753037 В симейке это просто. Создаешь разные таргеты, какие тебе нужны, с одними и теми же, как я понял, сурсами, но с разными таргкт компил дефайнами.
>>2754479 Я же написал что не работают такие методы. Хотя и на линуксе с гцц и на винде с мингв все ок. когда таргет лусше прайватом писать, иначе в таргете нету смысла и можно глобально для всех таргетов задавать
Чото IOS треды все утонули видать, попробую тут спросить. Есть проект в Xcode преимущественно на плюсах. в дебагере строки(которые std::string) отображаются как Summary Unavailable. Я вообще не особо шарю во всем этом ios и xcode соответсвенно и какие-то норм настройки дебаггера не нашел, помогите как пофиксить? Стековерфлоу облази, но чото ничего релевантного не нашел особо.
>>2753691 А в чём не прав-то? Запомнить все приколы с++ уже невозможно. Баги в САМОМ СТАНДАРТЕ это подтверждают. Иногда хочешь сделать элементарную вещь и начинаешь путаться, что есть тривал обжэект, копипэл обжэект, под обжект, можно ли их копировать или нельзя. И прочая хрень. Надо писать код Си с классами. Незамудрённые исходники tensorflow или opencv - подтверждают мою теорию
>>2755934 строки, вектор и вообще весь стл это pimpl так что если иде/дебаггер не поддерживает его раздрачивание то придется писать мокрописечные расширения на питуне или че у вас там я в свое время с код блокс пердолился на эту тему, но в нормальных иде (яблодрочеров не касается азаза) обычно есть поддержка как минимум стл
Есть структура. Она содержит два указателя о объект типа T. Мы кастомным(или стандартным) аллокатором аллоцировали память под неё. Конструктор мы не вызывали, то есть она в каком-то смысле неинициализирована. Мы можем взять указатели на все её поля, записать в них что надо и затем пользоваться структурой как будто бы она инициализирована? Я делаю просто свой лист и мне охота allocate делать структуры, а construct объекта типа T внутри неё. Потому что иначе мне надо у ноды делать разные конструкторы и в них как-то прокидывать набор аргументов для конструктора объекта T (в логике emplace_back) Читаю сорсы стд и там так и делают. Нода аллоцируется генНоде методом. У ноды нет конструкторов но есть метод гетВалПтр который достает указатель на значение. И констракт делается уже по указателю на значение А что за гварды я не понимаю, и возможно тут и проблема. https://github.com/gcc-mirror/gcc/blob/acaa441a98bebc5216334557cf8d09d63087ce37/libstdc%2B%2B-v3/include/bits/stl_list.h#L706
>>2756107 >>2755934 В нормальных компиляторах СТЛ не пимпл. Просто шаблоны std::string явно инстанциированы в шаред либе, libc++ на гейоси, если llvm, которая скомпилирована без дебажных символов.
>>2756061 >Надо писать код Си с классами. Незамудрённые исходники tensorflow или opencv - подтверждают мою теорию Вот orthodox c++ это точно шиза, ну или, как минимум, луддизм.
>>2756288 я не против наследования, векторов и std::move. Я против шаблонизированной хуйни, создавания 20 классов чтобы пукнут в сеть и прочего ромбовидного наследования
>>2756312 Ну значит opencv и tensorflow писали макаки. Ясно, понятно. Импортозамещатель с госпараши по САМОМУ МОДНОМУ ПОСЛЕДНЕМУ СТАНДАРТУ С++, ты? Как, каместили microsoft word?
>>2756329 То что это по сути код сишный с тыканием в биты и максимально возможной производительностью с одной стороны, и высокоуровневый код с кучей точек расширения с другой стороны: свой аллокатор для своего менеджмента памяти например.
>>2756312 Шаблоны это кал для скриптомакак, которые никак от своих динамических типов в башке не могут избавиться и хотят писать на сях как на динамической скриптопараше.
>>2756401 он сохраняет какое-то состояние. если в ::construct выпадет кишка эксепшон он в деструкторе вернет как было в случае успеха - обнуление чтобы как раз не откатывал
bool isPalindrome(int x){ int num = x; int res = 0; while(num != 0){ res = res10 + num%10; num /= 10; } std::cout<<res<<std::endl; return x == res ; }
int main(int argc, char const argv[]) { int test = -121; bool res = isPalindrome(test); std::cout<<res<<std::endl; return 0; } Блять почему код возвращает 1? Res положительный, x отрицательный, что за хуйня
>>2756608 Можно делать интернел хедеры в сурсе, а во внешнем только конкретные функции, хоть экстерном. Так еще деды на сях писали, но это забытые технологии.
Педерасты, сорян за нерилейтед, но объясните, почему сысоев выбрал размещение sentinel где-то в левом месте, а не в самой структуре ngx_rbtree_t. Т.е. у него sentinel лежит всегда в каких других местах и является внешним по отношению к структуре дерева. Какой в этом смысл?
>>2757042 Хедер онли это новомодная хуета так то. Раньше хедер онли только для дефайнов всяких пользовали, а не для реализации функций, так что противоречий нет.
>>2756393 Не очень понимаю как правильно сделать. В стд там юзают не внешние штуки, а какие-то их внутренние aligned membuff У меня вот так выглядит нода, пока что я для неё аллоцирую память и её конструирую аллокатором передавай паки аргументов.
>>2758446 На си надо уметь писать как ни странно. В отличии от плюсов в нем нихуя нет. 100% во время разработки захочешь ты хешмап, например, и вопрос можешь ты осилить стороннюю либу для этого, без всякой синтаксической магии как в с++.
>>2758446 Что значит C++ избыточен? С++ даёт возможность не обосраться в тех местах, в которых ты обосрешься в С, даёт возможность не писать многострочные макросы, даёт исключения (ебланов не слушай), даёт нормальное ООП. С стоит выбирать только если ты шиз.
>>2758458 Итератор шаблонными параметрами имеет тип и булевый параметр isConst Неконстантный итератор должен приводиться к константному, а наоборот нет >>2758420 Так любое из инстанцирований будет в любое другое приводится, а надо как-то логику когда можно, когда нет
>>2758461 на гитхабе полно всяких сишных библиотек. Тем более, можно легко выдернуть из того же православного nginx'а что угодно. И там очень элегантные решения.
>>2758446 В плюсах куча всяких удобных плюшек, структуры данных из коробки и с синтаксическим сахаром, смарт пойнтеры (считай что сборщик мусора, как в этой вашей Жабе, но без выявления циклов), можно обмазаться самыми новыми стандартами и писать хоть как на Питоне, в ус не дуя. А потом если производительность все еще не устраивает, уже это все дело можно оптимизировать. Это все равно проще, чем сначала прототип писать на одном языке, а потом переписывать на более быстром. А писать на Си это как челлендж разве что, либо для портфолио, но хуй знает, где сейчас на чистом Си пишут, МК наверное, но там то на игры на SDL всем поебать, лучше тогда сразу МК обмазаться.
>>2759276 Никто не пишет игры на сдл. Ладно шьако 2д еще можно, но что то нормальное - нет. Сдл или глфв - только абстракция системных окон и событий с ними. А сдл рендерер это так - детей пугать. Так что игры можно писать с сдл как менеджером окна, но рендерят дх/гл/вк.
>>2759461 >Она же только хацкерам и реверсерам нужна, это небезопасно. Программистам типо не надо? Никогда не нопал инструкции в процессе чтобы не пересобирать билд?
>>2759660 >Никогда не нопал инструкции в процессе чтобы не пересобирать билд? Ёбаный рот, а так можно было? ОСь не защищает процесс в памяти что ли? Там же вроде флаги у страниц есть.
>>2759704 Ну бля собираешь игру а там какой-то ассерт всратый срабатывает от другого бага, ты берешь нопаешь его и дальше работаешь. А если этот ассерт в хедере движка ты вообще хуй че пересоберешь, так что приходится выкарабкиваться
>>2759694 >Какие есть хорошие компиляторы для windows XP 1) MSVC v141_xp build tools с компилятором VS2017 поддерживает C++17, включая std::filesystem.
>>2759302 >Сдл или глфв - только абстракция системных окон и событий с ними. А сдл рендерер это так - детей пугать. >Так что игры можно писать с сдл как менеджером окна, но рендерят дх/гл/вк. Ало чел, его SDL для этого и используют. Чтобы обрабатывать клики, джойстики и прочее. Короче если тебе игровой движок слишком много, хочешь легковесную игру, SDL идеальный вариант. Рендер SDL никто не использует. Он там просто так, депрекейтед.
Я знаю очень много проектов на SDL, вся графика там Vulkan либо OpenGL если проект старый.
>>2761213 >SDL_Renderer? Да. >Почему не используют? Потому что есть OpenGL и vulkan, сейчас их любой утюг поддерживает. SDL_Renderer был актуален давным давно. Да и функционала у этих стандартов больше, больше кода. Сейчас рендерер это просто бесполезная обертка над некоторыми вызовами GL/VK
>>2761253 >OpenGL SDL проще. Как большая коробка с инструментами, даже если конкретно молоток не особо удобный. Особенно когда тебе нужно не лютую игру сделать, а просто хотя бы научится делать подобное. Парируй.
>>2763396 >SDL проще Для совсем простых вещей. Чуть выйдешь за рамки, и уже нужно будет что-то низкоуровневое, а в SDL рамки - тупо текстурированные квадратики. Банально для любого эффекта уже шейдеры понадобятся.
>>2764194 > А большее в одиночку и пилить нет смысла Куда уж там всяким Stardew Valley, римворлдам, андертайлам, майнкрафтам и прочим Touhou, сейчас аноним с харкача вам расскажет, что есть смысл пилить в одиночку, а что нет.
>>2764194 >А большее в одиночку и пилить нет смысла В одиночку вполне себе можно какой-то пиксель арт рогалик сделать, на крайняк нанять художника-студента чтоб нарисовал там 20 спрайтов за 500 баксов. Noita например 3 человека делало, из которых программист всего один, а один просто музыку делал. При этом там упор на физику и разрушаемость, вполне себе можно в соло осилить если идейный. В одиночку нет смысла делать что угодно связанное с неткодом, или с нормальным артом или 3д ассетами, там без фултайм моделлера/аниматора/художника ты далеко не уедешь
>>2764593 Дегенерат, ты сам себе противоречишь. По твоей логике, если кто-то написал майнкрафт, значит и ты можешь, и каждый может, но тогда должно быть как минимум тысячи майнкрафтов, однако их нет, он всего один. Это и есть показатель, что никто не может. Существование майнкрафта написанного в одиночку является доказательством невозможности такое написать в одиночку. Исключение доказывает, что это не правило, а ИСКЛЮЧЕНИЕ из правил.
>>2765215 > По твоей логике, если кто-то написал майнкрафт, значит и ты можешь, и каждый может, но тогда должно быть как минимум тысячи майнкрафтов, однако их нет, он всего один Ты вообще знаешь, что такое логика? У тебя тут произошел неправильный вывод из двух утверждений.
> если кто-то написал майнкрафт > значит и ты можешь, и каждый может Написать игру в одиночку. Это не обязательно должен быть майнкрафт. И игр, разработанных одним человеком, много. То есть, ты только что обосрался.
> однако их нет, он всего один Ты совсем дегенерат? Зачем разрабатывать майнкрафт, если он уже есть? Чтобы что?
Это просто жирный троллинг, да? Я не верю, что можно на полном серьёзе быть таким тупым.
>>2765229 >Ты совсем дегенерат? Зачем разрабатывать майнкрафт, если он уже есть? Чтобы что? >Это просто жирный троллинг, да? Воистину, да. Смотри сюда >>2765226
>>2765090 Тот тип людей, кто способен высрать Страдью Веллей и Майнкрафт в одиночку не задают вопросы в стиле "чо лучше SDL/SFML/OPENGL?"
Исключение лишь подтверждает правило. Поэтому разумный подход это взять sdl/sfml и наделать на нем Марио или любую не особо сложную игрушку, или взять UE и делать на нем. А потом смело вкатываться в гейдев(исходная цель у задающего наверняка такая)
>>2765359 Тот тип людей, кто собирается делать игры, не лезет с тред С++, сюда лезут ебланы не желающие делать никаких игр, а только ковырять язык палочкой впустую имитируя деятельность. Бесполезные ничтожества без желаний и целей, только косят от работы потому что ничего делать не могут и не хотят, но честно плевать в потолок чсв не позволяет признать себя уебком. Боты имитирующие человека, фальшивка как китайская подделка.
>>2766281 Но сишку знать надо всем. Это база. Плюсы могут пригодится если вдруг вебмакака дорастет до того, что полезет свои инструменты править. Я так вижу.
>>2766287 >кишки ноды изучить без базы Их изучать нужно просто умея читать С++, это гораздо проще чем на нем писать. Я знаком с одним веб-разрабом с 8 годами опыта, он где-то за пол годика подучился на С++ программера и пишет свою инмемори бд и язык программирования на плюсах. Код я конечно не видел, так что степерь пиздеца оценить не могу, но освоить для чтения думаю можно за пару недель
>>2765916 >А какая работа есть на плюсах для выпускника универа? Любая на которую возьмут, подавайся везде, на любую галеру, даже за 200$/мес. Если я с 3 вакансиями на город и это в разгар пандемии смог вкатиться то в ДС/ДС2 это гораздо проще
>>2766333 А если хочется на конкретное направления, на 3д графику например или написание компиляторов. Если устроиться куда возьмут и 5 лет диодиками мигать, то кто потом с этим опытом возьмет 3д графонием заниматься?
>>2766575 Если у тебя есть выбор из компаний то иди куда душа велит, но как написал анон выше окно для вката не очень большое. Аренда дорогая, еда дорогая, а вакансий на жаваскрипт или сисярп поболее чем на кресты
Пасаны. Поясните, в какой момент С++ из нормального языка - превратился в то, чем он является сейчас?
Просто я не понимаю, где происходит переход, от "Ну, вот как Си, но только классы добавились, ну еще есть темплейты, а ну и лямбды есть", во всю эту магию с непонятными умба-юмба заумными штуками, название которых я даже не могу вспомнить и использованием постоянно андерскоров везде где только можно, чтобы читать код было принципиально невозможно.
>>2766786 Но ведь раньше такого страшного кода как сейчас - в плюсах не было. Ну или непопулярен он был. Писали нормально и потому - было удобно учиться на плюсах, а потом уже переходить на джаву или еще чет, потому что ну, там почти так же, но со сборкой мусора и кучей библиотек полезных. Самое страшное что было, это использование препроцессора для обеспечения переносимости между платформами. А сейчас. Я открываю некоторые проекты на гитхабе и гуглю, что эта конструкция вообще делает, а эта - что. Короче. Сделали из нормального языка черт знает что.
>>2766801 До 2011 я работал на плюсах. И плюсы там где я работал, были именно что Си с классами, ну чутка темплейтов. А весь код в SVN. Было клево. Было понятно. Кодили под винду и горя не знали.
>>2766875 Для тебя же стараются, неблагодарный. Но нет, будет все время изучать что-то новое (aka старое но в новой обертке), вместо того, чтобы вечером Дуньку на сеновале мацать за сиськи.
>>2766875 >нет ничего нового С++ про серьезное программирование, а не детские забавы. Страсть к новому это синдром ребенка познающего мир, но взрослый уже познал, он начинает продуктивно работать, а для этого нужно не прыгать на новое, а сидеть на своём месте делая своё дело своими инструментами. С++ это не новостной сайт: "Что там новенького подвезли?", на нём программы пишут, а не возятся с языком ради самодроча возни с языком. С++ не игрушка.
>>2766887 >он начинает продуктивно работать >нет стандартных пакетных менеджеров >нет стандартной системы сборки >в одном проекте могут быть библиотеки собирающиеся мейкфайлами, базелем, смейком, мсбилдом и гредлом >стандартные контейнеры ущербные by design >нет высокоуровневых примитивов синхронизации >разработчики компиляторов забивают хуй на стандарт потому что неудобно или не осиливают >аби уровня б, но никто не хочет его ломать >в языке нет сокетов, экзекуторов, рефлексии (да, даже динамической), нормальных статических анализаторов, кроссплатформенных IDE поддерживающих больше одной системы сборки >он начинает продуктивно работать Нет той степени уебищности, которую бы не защищали крестофанатики.
>>2766959 Ну да отсутствие экосистемы и нормальных языковых возможностей нереализуемых без поддержки компилятора это совсем не про язык, не надо сюда смотреть, вон лучше поглядите в сисярпе негров линчуют рефлексия ДИНОМИЧЕСКАЯ! Медленно! И вообще не удобно, я лучше сам ручками REFLECT_STRUCT(Foo::Shit) буду писать для каждого класса, пусть говном и пованиет зато своё!
>>2766892 Это называется свобода и открытость. А когда ты раб с магазином от барина, и он внезапно что-то удалил, не понравился ему пол, цвет кожи или национальность, и ты соснул, или вообще прикрыл лавочку или обанкротился и выключил свой сервер. Что ты будешь делать? Сосать палец. А на сях похуй, есть интернет, там всё найдется, барин ничего не контролирует, нет бояр, есть только свободные программисты. Язык для людей, а не червей мечтающих о барском сапоге в жопе. Твои говноскрипты тыквятся по кд потому что барин так захотел, иди обновляйся и всё переписывай, твоя говноверсия через пол года уже устарела и нинужна. Охуеть красота, в таком темпе можно только говна навалить на похуях вместо качественно софта на настоящем языке С++, который десятилетиями спокойно работает.
>>2767211 >отсутствие функционала это свобода ЧТД >Нет той степени уебищности, которую бы не защищали крестофанатики. В языке мало библиотек? Ну это хуйня бесполезная. В языке много библиотек? Ну ты тогда от них полностью зависим становишься. В языке есть фичи? Они бесполезные. В языке нет фичей? Язык бесполезный и неудобный. Вокруг языка есть сообщество и экосистема? Это всё раздутый хайп от бигтеха. Вокруг языка нет сообщества и экосистемы? Значит язык мертв. Язык используют в ОС? Это все пропаганда, настоящие ОС пишут на си и с++. Язык не используют в ОС? Так это потому что он игрушечный. Всё это разумеется не касается богоподобного С++, отсутствие библиотек это свобода, отсутствие фич это пространство для самореализации, а отсутствие экосистемы это гибкость. Смотрите не перепутайте.
>>2767506 > а когда можешь сам выбрать, что ты обязан делать Свободные программисты, подскажите а как мне на атомике сделать неатомарный инкремент? Я вот мутекс взял, не хочу лишнего кода в программе
Не общайтесь с дебилом и он съебет отсюда очень быстро. Дебил здесь сидит только потому, что вы его кормите. И помните, что в споре умного с дебилом спорят два дебила.
>>2767977 Тред всё равно сдох. Хотя я даже не уверен был ли он когда-то жив. Весь контингент тут либо школьники не осилившие загуглить свой же вопрос, либо жирничи которые сюда пишут от нехуй делать
>>2767506 >Свобода -- это не когда ты можешь делать всё, что вздумается Но ты не можешь даже этого. Есть загон для скота - магазин пакетов от барина, и ты пользуешься только им, иначе никак, раб без выбора. А вот барин - всему господин, решает какое пакеты можно разместить, какие нельзя, барин решает за тебя раба чем тебе пользоваться или нет. Все эти манясторы служат только одному - согнать скот мнимым удобством, а потом закручивать гайки, всё равно никуда не денутся. Стадо баранов за забором, никто из них забор не перепрыгнет и не побежит на свободу, даже если физически может, уже не захочет, выдрессировали рабов привыкших подчиняться.
С какой стати winapi для GUI приложений умер? Я просто понять не могу. Программы на нем получаются легковесными и с красивым(классическим, без свистоперделок) интерфейсом. Почему он решил умереть?
>>2768347 >С какой стати winapi для GUI приложений умер? Микрософт его закапывает ради SilverlightWPFUWP очередной свистелки-перделки, которую забросят через пару лет.
Чем вы собираете собственные пет проекты? Хочется и удобно зависимости добавлять и компиляторы налету менять и чтобы кастомные таргеты простенькие писать
У кого то был опыт устройства C++ разрабом с другого языка? Допустим, 5 лет писали на другом языке, доросли до сеньки, дома прочитали пару книг по плюсам и устроились на плюсовый стек.
>>2768696 Симейк ничего не делает, только обсирается. Делает только Visual Studio куда завезли поддержку майкрософт, вот работа майкрософт и работает, а не симейк-параша, которая никогда не работала и не будет.
>>2768696 >Сmake все это делает без проблем Литералли худшая билд система, хуже наверное только Ant. Но для справедливости хуже Ant-а наверное еще не изобрели, так что смейк особо то и не старался.
>>2768829 А что использовать вместо CMake? Почему на него все ругаются? Я вот собирал программу помню CMake'ом, всё собралось с 1 раза. Где почитать подробнее про его проблемы можно?
>>2768847 > вот собирал программу помню CMake'ом, всё собралось с 1 раза Если бы он не собрался с первого раза я бы крайне удивился. Проблемы смейка из моего опыта: 1) Всратый, неинтуитивный, не похожий на С/С++ синтаксис 2) Медленный 3) Неадекватные ошибки уровня "unable to find file Х" когда на самом деле ты забыл } 4) Документация невероятно ужасная, одна из худших что я видел. Как понять поддерживает ли add_library относительные пути, или только абсолютные? А никак братан иди нахуй) 5) Меняется каждые пару лет, куча устаревших возможностей, об устаревшести которых можно узнать только на код ревью. Я например не знал что стандарт теперь нужно указывать через set_target_properties, а не CMAKE_CURRENT_CXX_STANDARD, и как об этом узнать я понятия не имею, никаких варнов мой смейк 3.27 версии не выдает. По этой же причине на любой вопрос на СО будут ответы 2007, 2011, 2014, 2018 и 2022 года с абсолютно разными инструкциями, из которых 2-4 будут нерабочими. 6) Нет экосистемы. Отладчик появился буквально пару месяцев назад, подсветка синтаксиса уровня ключевых слов, автокомплит учитывающий контекст отсутствует, IDE не умеют автоматически добавлять файлы в систему сборки. А как узнать название таргета для линковки от библиотеки я до сих пор не знаю, и никто из моих коллег не знает, обычно все просто перебором пробуют. 7) Работа с проектами со сложной иерархической структурой полный пиздец. Единственная либа в которой я видел хоть сколько то адекватную структуру проекта на смейк это cocos2d - заключается она в том что тебе нужно ручками описывать каждый блять файл в каждой папочке, а после пробрасывать смейклисты наверх вплоть до add_ где они используются. Разработчики смейк заботливо добавили GLOB() который сразу же рекомендовали не использовать, ведь смейк не может понять что на диске появились новые файлы))))))))) Теперь если мне не нужна кроссплатформенность я беру мсбилд и делаю все на винде. В нем ни одной из этих проблем нет, а в добавок получаю vcpkg без бойлерплейтных конфигов и копипасты устанавливающий библиотеки в одну команду в консоли
>>2768887 А, ну и как я мог забыть вишенку на торте - исходники. Код смейк еще хуже чем сам смейк, ощущение будто его писали под смесью героина и винта, паралельно приправляя мочей и собачим калом. Не думаю что это волнует большую часть программистов конечно, но если вы внезапно захотите выяснить почему вам выдало такую уебищную ошибку и вы решите грепнуть исходники советую морально приготовиться к laba1.cpp доросшему до продуктового стандарта
>>2768887 >А как узнать название таргета для линковки от библиотеки я до сих пор не знаю Конфиги либ лежат в /usr/lib/cmake, дальше так: https://stackoverflow.com/questions/42741501/how-to-know-library-variable-names-for-cmakelists >7) Работа с проектами со сложной иерархической структурой полный пиздец. А в чем у тебя сложность? Обычно получается такая же структура, как у солюшена в msbuild - в папках проекты, в корне CMakeLists в котором тупо add_subdirectory для всех вложенных.
>>2769279 >>2768887 Тебе не обязательно знать как там симейк либа нейм назвал, хотя это крвйне нубски ты можешь линковать любую шаред либу простт прописав путь к ней. С инклудом директорий так же.
>>2768847 Опубликуй свою программу публично и поинтересуйся у других как у них получилось завести твою писанину, вот тогда и поймешь, что проблемы у всех, кроме тебя, т.е. CMake это одни проблемы, он не работает.
>>2768847 Да нет альтернатив, прям как с крестами для кроссплатформы. В том то и прикол. Есть какие-то полумёртвые никому не нужные хуитки, которыми пользуются полтора человека. В начале 10-ых, например, все грозились на scons перейти, и даже были проекты с ним. Где теперь этот scons? Ну для прыщей есть ещё дедовский autotools, если тебе нужна хитровыебанная сборка. Дохуя народу, в том числе я, пользовались чистым makeом, и никто не жаловался. Теперь сообщество плюсов состоит из изнеженных смузихлёбов, трансов и прочих пидорасов, которым подавай кнопку СБИЛДИТЬ ВСЁ. А функцию оповещения путём включения вибратора не добавить?! К сожалению, никто не запрещает всё это говно навелосипедить в одном CMake проекте. Некоторые, например, прямо качают какую-нибудь зависимость во время сборки.
>>2769341 >ты можешь линковать любую шаред либу простт прописав путь к ней. С инклудом директорий так же. Так переносимость билда теряется, только для laba1 подойдет.
>>2769375 >чтобы поддерживать убогую систему дженериков Дженерики в джаве как раз не убогие, убогие там примитивные типы. Благодаря тому, что дженерики просто синтаксический сахар, не пришлось менять jvm, и под jvm есть куча языков кроме жабы. Под дотнетовский CLR ты другой язык так просто портировать не можешь, потому что у них дженерики влияют на ABI, и в результате надо или переделывать систему типов в языке или лепить адские велосипеды, чтобы работать с дотнетовской библиотекой.
>>2769473 > под jvm есть куча языков кроме жабы И правда. Например, Scala, Kotlin и... Всё? Котлин так вообще в каждое приложение свой рантайм тянуть должен.
> Под дотнетовский CLR ты другой язык так просто портировать не можешь, потому что у них дженерики влияют на ABI, и в результате надо или переделывать систему типов в языке или лепить адские велосипеды, чтобы работать с дотнетовской библиотекой. Почему меня как прикладного разработчика это должно волновать? Пусть это волнует тех, кто пишет языки под .NET
Да и если я пишу только на C#? Там женерики тупо лучше чем в жабе и дают больше возможностей.
>>2769490 >Например, Scala, Kotlin и... Всё? Из известных еще groovy как минимум. Из малоизвестных - почти все остальное от паскаля и кобола до хаскеля, из неизвестных - куча внутренних тулзов у компаний. Текущая jvm к тому же обеспечивает портируемость самой джавы под все что угодно от телефонов до микроконтроллеров на пластиковых картах. >Почему меня как прикладного разработчика это должно волновать? Был бы ты разработчиком под VisualBasic или Delphi.NET в середине нулевых, тебя бы это волновало, потому что пришлось бы переносить всю кодобазу на шарп. >Там женерики тупо лучше чем в жабе и дают больше возможностей. А еще linq, powershell, пять несовместимых и наполовину заборошеных либ для UI и другие плюшки, которые MS выкатывает каждый код, рекламирует как небывалое откровение, и через год топит или забывает.
>>2769372 ты пьянь, где я хоть слово писал про свою программу и свою "писанину"? Собирал я duckstation, всё отлично собралось, я ни слова не писал что у cmake нет проблем, я спрашивал где они и где почитать. Сначала протрезвей потом отвечай. Или это ты порвался так сильно, что не способен понимать написанное?
>>2769372 Шиз весь гихаб, включая проекты всяк х интелов и тд на симейке. У все вме собирает, только шиз с двачей не згает как либу в симейке обозвать лол.
>>2769472 >>2769446 >>2769448 >>2769460 >>2769466 Я в прошлом году создавал тред в /d/ с этой просьбой, в котором отписалось 40 анонов с различных технических досок с поддержкой моей идеи. Думаю, не нужно говорить о результатах.
>>2771442 Код позволяет вставлять пробелы, этим быдло будет злоупотреблять рисуя хуи из буков. Мало говнокартинок, еще и текст постов превратят в говнокартинки. Так что забудь, сначала надо выгнать быдло, но это невозможно, хозяева сайта наоборот его привлекают.
>>2771754 >Мало говнокартинок, еще и текст постов превратят в говнокартинки. Так что забудь, сначала надо выгнать быдло, но это невозможно, хозяева сайта наоборот его привлекают. Блядь, это единственное, что тебя волнует? Да и на форчке это никому не мешает, а здесь дохуя эстеты с тонкими душами собрались.
>>2772156 АИБ не было бы без возможности постить картинки. Без форматирования текста аноны бы пережили, тем более что любители подчёркивать текст/закрывать его спойлерами - шизики поголовно.
МОЛЮ, СДЕЛАЙТЕ ЧТО ТО С ИНИЦИАЛИЗАЦИЕЙ. Обратная совместимость это полный пиздец. Из за нее мы имеем ебанутейшие правила инициализации. Такого ни в одном языке нет, блядь. И это хуй починят теперь. Если только не придумают третий вид скобок.
>>2773139 Погодь погодь, щас второй способ обьявления функций доделаем, а потом еще другой способ задавать методы класса, а потом еще концепты потрогаем, а потом...
>>2773139 >Такого ни в одном языке нет Не аргумент. Другие языки высокоуровневые, а кресты - нет, кресты это низкоуровневая сишка. Разные инициализации это разный код, разные способы, они должны быть. Залетная скриптомакака не имеет права голоса тявкать на кресты которых не знает.
>>2774359 Вроде бы с круглыми можно неявные преобразования делать(в первом) Во втором explicit запрещает неявные преобразования, и по идее должно быть одинаково.
А, бля. Вставил в студию, оно ж и не компилируется вообще.
В первом нет конструктора для круглоскобочной инициализации Во втором explicit из за блокировки неявных преобразовний запретит копирование списка инициализации в объект r3
>>2774283 >Другие языки высокоуровневые, а кресты - нет В низкоуровневых языках как раз никакой магии при инициализации нет. Там все очень явно и конкретно, и пользователю всегда очевидно, что происходит в каждой строчке.
>>2772300 → >cout вместе с printf блядь когда вы нахуй уже передохните все? запомни раз и навсегда, ебло, язык си это неотъемлемая часть языка с++. и если я могу использовать форматирование из си, а не как еблан писать в cout миллиард стрелочек, значит я это могу и должен делать. особенно когда аналога для форматированного вывода в языке нет блядь. насмотрятся блядь видосиков, статей начитаются и все как один друг за другом повторяют хуйню, даже не задумываясь какая это хуйня тупорылая. дегенераты блядь залетные.
хуй знает, чет сишечка и плюсы как родные мне. правда я их уже почти забыл, особенно приколы с указателями, давно не писал на них, лет 5. сразу какие-то вузовские годы вспоминаются... лаба 1, лаба 2... int main()... вот это все. жаль я себя в этих языках не смог найти, так бы с удовольствием писал бы на этом хацкеле для здоровых людей
>>2775119 Какая же правда. Несколько раз с си переходил на плюсы, потом обратно, но так и тянет остаться на плюсиках...даже не знаю что, это же мерзость!
>>2775029 >Ребята, что такое рекурсия? Это пакет с пакетом, внутри которого пакет, внутри которого пакет, внутри которого пакет, внутри которого пакет....
Банальные пример: n-ое Фибоначчи можно вычислить с помощью рекурсии int fibonacci(int N) { if (N == 1 || N == 2) return 1; return fibonacci(N - 1) + fibonacci(N - 2); }
а можно итеративно int a = 1, b = 1, c; if (N <= 2) printf("1"); else { for (int i = 3; i <= N; i++) { c = a + b; a = b; b = c; } printf("%d ", b); }
>>2775649 Бро, я знаю, что отражение зеркала, в зеркале, в зеркале... - это рекурсия. И знаю, что если внутри функции она сама вызывает себя, то это рекурсия.
Но когда я вижу код, я не могу понять, что происходит.
>>2775648 Анон, а давай сначала вообще про функции немного подумаем. Что это такое вообще?
Вот есть у тебя задача: найти минимум в массиве. Причём не в каком-то абстрактном, а в чисто конкретном, выданном лично тебе. То есть вот прям один экземпляр массива выдали тебе: 1, 3, 10, 4, 5, 1, 0, 2, 57, 179 и попросили найти в нём минимум. Ну ты взял и ткнул пальцем в 0.
Как бы выглядела ф-ция, которая такое решает? Да очень просто. Она бы ничего не принимала на вход и выглядела бы так: int find_min_in_my_array() { return 0; }
Очень тупая ф-ция, да? А теперь тебе усложнили задачу и сказали, что надо научиться решать не одну задачу (поиск минимума в одном отдельно взятом массиве), а сразу бесконечное семейство задач - поиск минимума в произвольно заданном массиве. Как будет выглядеть сигнатура такой ф-ции? Ну понятно, что на вход будет приходить тот самый массив, в котором надо найти минимум: int find_min(vector<int> arr) {}
Я что хочу сказать? Что про ф-цию можно думать, как про СЕМЕЙСТВО процедур, решающих инстанс задачи, параметризованное некоторым набором входных параметров. То есть в данном случае, имеется семейство процедур, параметризованных входным массивом. И при каждом фиксированном входном массиве получается процедура, которая в этом конкретном входном массиве ищет минимум.
К чему вся эта философия? А к тому, что при таком взгляде на вещи удобно осознать следующую мысль: реализация одной конкретной такой процедуры может использовать результат работы другой процедуры из этого семейства. Представь, что ты на вход find_min опять подал тот самый массив, который я указывал в самом начале. Таким образом, find_min превратилась в процедуру, которая ищет минимум в том самом массиве. Но не сложно понять, что чтобы найти минимум в этом массиве, можно найти минимум в нём же но с отброшенным последним элементом, а затем выбрать минимум из этого результата и последнего элемента. Реализация этой идеи выглядит как-то так: iint find_min(vector<int> arr) { int min_of_prefix = find_min(arr[:-1]); // Вот это рекурсивный вызов! return min(find_min, arr.back()); } Я здесь для краткости использовал питоновский синтаксис arr[:-1], для обозначения массива, состоящего из всех элементов arr за исключением последнего.
Таким образом, при реализации ф-ции find_min мы сослались на резёльтат ЕЁ же работы, но на другом (в данном случае меньшем) входе. Или, говоря в прежним терминах семейства процедур, мы описали реализацию одной из процедур семейства, сославшись на другую процедуру того же семейства.
Короче, рекурсия часто возникает в тех местах, где решение какой-то задачи удобно описывается в терминах решения этой же задачи для некоторого "меньшего" инстанса.
>>2775648 >А попроще? Рекурсия это говно для безмозглых скриптомакак которым в сях делать нечего. Вызовы функций занимают стек, а рекурсия это зацикливание вызова функции на самой себе, происходит по сути неограниченное количество вызовов, что приводит к переполнению стека и падению. Это самая тупая макако-ошибка в программировании, даже знаменитый на весь мир сайт так называется. Но ни одна тупая макака по 100 раз в день этот сайт посещающая не понимает значение.
>>2775703 В нормальных языках, например луа, если рекурсивный вызов последним идет, то стек не будет расти. Потому что это значит возврат к фрейму, из которого будет сделан вызов, не нужен и фрейм можно убрать со стека.
>>2775703 Без рекурсии будет очень хуево крутить деревья. С рекурсией так же как с SQL инъекциями. Просто не нужно, чтобы глубина рекурсии зависела от пользовательского ввода. Вот и все.
В чем проблема разломать нахуй обратную совместимость в C++ 29 и сделать наконец то нормальный язык без костылей ебучих? А старые либы оставить в виде скомпилированных сишных функций и так дергать их. Нельзя?
>>2776261 Ну не знаю где ты про ~20 вычитал, я видел информацию только про 1 и 8, хотя это настраивается, по крайней мере в линуксе. Во-вторых я ничего не писал про покупку стека, ты это уже себе сам придумал.
>>2776409 >В чем проблема разломать нахуй обратную совместимость в C++ 29 и сделать наконец то нормальный язык без костылей ебучих? Какой смысл? Снова получить плюсы и ебаться с двумя версиями? Вон раст делали с нуля и он уже оброс кучей говен и костылями. Скоро плюсы догонит.
>>2776772 >Субъективно Когда читаешь, первое что интересует - имя переменной, только затем интересует что за тип у этой переменной, а иногда это вообще не важно. >не видел ни одного ЯП с json-based синтаксисом Потому что json это описание объекта.
>>2777044 Кто кресты губит? Думаешь ИТТ кто-то из коммитета есть? Не смеши меня. Не собирается никто в плюсах тип справа делать, не трясись. Да и вообще сейчас все новые языки выходят, где либо тип указывать вообще не надо, либо его указывают справа, так что обтекай, маня. Тип слева это палеозой со времен си, всю жизнь тип справа был: Ada, Pascal, Oberon, из новых: go, kotlin, rust, ts. Мне кажется там люди поболее твоего понимают как им делать надо.
Есть QTableWidget, у которого в некоторых ячейках используются cellWidget. Как мне сделать swap строк таблицы? Мне нужно двигать строки вверх вниз. В Qt нет готового swap ни для QVector, ни для QTableWidget. Когда сам попробовал вручную менять местами содержимое строк, начало вылетать с segmentation fault хер пойми откуда, даже в стеке вызовов не показывает, откуда. И связано именно с cellWidget, когда я добавляю строчку, где cellWidget записывается в ячейку таблицы, то вылетает. Делаю что то типа того: if (index != 0) { QWidget widget = table->cellWidget(index, 0); QWidget upperWidget = table->cellWidget(index-1, 0); table.setCellWidget(index-1, 0, widget); table.setCellWidget(index, 0, upperWidget); } После этого происходит segmentation fault и все крашится.
>>2775703 Не будет никакого переполнения, если ты условие останова пропишешь правильно. Я например недавно сделал чтение содержимого пакета через рекурсию, т.к. там многоуровневые вложения в структуре. Все работает збс.
>>2777056 пока вложенность меньше ~1000 работает збс кто ж спорит но буквально итт был один додик который рекурсивным dfs пиксели красил и удивлялся че это картинки 800х600 не вывозит
>>2777052 >После этого происходит segmentation fault и все крашится. Когда ты делаешь setCellWidget на второй ячейке, она удаляет свой виджет, которым владеет, и когда ты пытаешься вставить этот удаленный виджет в первую ячейку, происходит ожидаемый сегфолт. Надо как-то забирать ownership виджета у ячейки перед установкой нового, возможно через setParent у виджета.
>>2777068 >А нельзя как то виджет сохранить по ссылке, чтоб он не удалялся? Возможно removeWidget не будет его удалять, или как я говорил, вызвать setParent(this) у виджета и setCellWidget(nullptr), чтобы он репарентился к окну.
>>2777086 Нет это логика, от большего е меньшему, от общего к частному.это много где используется, те же типы в бмологии, например По этому сначала тип потом имя переменной, а если наоборот - это убого и не практично.
>>2777061 >значит есть решения, в которых рекурсия работает Это не решение, а блондинка за рулем. Ездит как попало, никого не пропускает, и если пока еще не разбила машину и никого не сбила, это не значит, что такая езда "работает" и это правильно - экономить на учебе правил движения и дисциплине следования им.
Говоря проще, тупая пизда, макака за компьютером, вот кто ты со своим "я написал говно и оно еще не упало, значит я всё правильно делаю , это работает". Нет, не правильно и не работает. Само такое отношение уже показатель говноскриптинга, а не программирования. Это скрипты так пишутся - не думая что делаешь, как курица лапой, в расчете, если что упадет, подправить и готово. А программы так не пишутся, программы это когда ты думаешь прежде чем делаешь. ты понимаешь что пишешь. Без понимания нет программирования, и кресты как и сишка требуют именно понимания, подхода программиста, но не макаки тыкающей вслепую наудачу.
>>2776817 >>имя переменной более важно чем тип >схуяли? Потому что в javascript нет типов, вот они и не нужны и не важны. Эта скриптошваль оттуда и лезет, макаки сраные.
>>2776817 >>2777092 Программировать пытались хоть раз? Какую информацию несёт тип и какую несёт переменная? И какая из них вам нужна в первую очередь чтобы понять что это такое?
>>2777120 >Программировать пытались хоть раз? Именно. Скриптомакаки даже не пытались, но лезут со своими скриптопомоями в треды программирования и кукарекают, ведь у них в переменную лезет что угодно, и говно и моча и дебилизм, скрипт всё сожрет.
>>2777142 > let status: MailDeliveryCustomerNotificationStatus = cusomerNotificationService.getCustomerNotificationStatus(customer) Эх, сюда бы еще венгерскую нотацию!
>>2777323 Естественно так не пишут. Тип переменной status MailDeliveryCustomerNotificationStatus не нужно явно указывать. Он выводится из возвращаемого типа getCustomerNotificationStatus. Можно мышкой навести на переменную status и IDE подскажет тип. Если не используешь мышку и иде, то сам виноват. Ебись в виме сам с плугинами.
>>2777323 И еще причем тут венгерская нотация? Это нотация является частью идентификатора переменной, а здесь переменная наоборот имеет короткое имя, а смысловая нагрузка на типе.
>>2779082 Неприятная правда. https://devblogs.microsoft.com/oldnewthing/20190830-00/?p=102823 Краткое содержание: - Майкрософт сделали ОС1, ОС2, ОС3, ОС4 с юникодом. - Красноглазые чесали жопы и ничего не делали. - Майкрософт разработала стандарт функций для юникода чтобы всё везде универсально работало и с char (анси) и с wchar_t (юникод). - Комитеты по юникоду и сям чесали жопу и ничего не делали. - Сообщество вокруг винды как всегда процветает, всё для людей, все довольны. - Через 10 лет после майков красноглазые комитетщики начали чесать жопы, ведь дальше пинать хуи уже стало трудно, юникод везде и давно нужен. - И что они сделали? Правильно, придумали свой говностандарт, всё созданной майками ломающий, потому что "Мы не любим майкрософт, они плохие, не примем ничего от них". ИТОГИ, БЛЯТЬ Как всегда пердоговно - говно, ничего не делает, только гадит тем кто делает.
>>2779108 >Windows adopted Unicode before most other operating systems. И хуле тогда они им не пользовались?! Почему на винде всегда такая ебля с кодировками?
>>2779134 >И хуле тогда они им не пользовались?! Всегда и пользовались. И когда красноглазый манякомитет принял свой ломающий стандарт, майки оставили свой, чтобы не ломать людям их программы. Майкрософт всегда работал для людей, защищал людей, заботился о совместимости, не ломать людям программы. Именно поэтому винда лучшая и вообще единственная ОС для людей и всегда будет такой, потому что аналогов нет. С другой стороны только Эппл, которые каждый год тыквят софт обновлениями своей говнооси: >"Убежали все переписывать свои поделия на новый стандарт. Кто не хочет? Не держим, дорога нахуй - вон туда" И красноглазые пердоли подсасывают этому говну подпевая в лад. Только ломают, только гадят, когда майки работают ради людей. Еще хрюкни что-нибудь про "свободу и открытость", говна кусок.
>Почему на винде всегда такая ебля с кодировками? Потому что когда софта нет, и проблем нет. Смотри выше почему. На твоих прыщах софт - однодневки, как мухи дохнут за месяц по осени. Надо постоянно переписывать правя под обновления или всё, тыква. А на винде программы и код работают десятилетиями. Потому что майки заботятся о совместимости, поддерживают софт и код, а не ломают его как Эппл и их подсосы пердоли.
>>2779175 В винде полностью кодировка юникод начиная (человеческие оси) с Windows 2000. То есть, среди настольных осей, начиная с Windows 2000 все неюникодные программы в Windows работают через прослойку совместимости со старым софтом, через костыли сделанные майками специально для совместимости со старым. Ты понимаешь это, дебил? Тебе даже нет столько лет, ты родился и уже винда давно была полностью юникодная. Но при этом там остался и весь остальной устаревший неюникодный софт, потому что майки поддерживают софт, не дают ему сломаться. До самого сегодняшнего дня. До сих пор этот древнющий софт работает и даже есть настолько дебилы, что продолжают писать неюникодное говно как под Windows 98, даже сегодня. Оцени тупость ебланов. Майкрософт настолько расстарались с совместимостью, что даже сегодня дебилоиды не замечают, что их сегодняшние высеры устарели еще 25 лет назад, потому что ПРОСТО РАБОТАЕТ, на винде софт РАБОТАЕТ, а не как в эппло и прыщемирке - ломаем всё нахуй, мы прогрессивные модные чоткие поцоны, ретрограды со старым калом не нужны, вырезать! депрекейтед! нахуй! Вот и нет софта, нет жизни, только мертвое каловое говно.
Кто не только на двачах пиздеть — приглашаю на локальный московский митап C++ Moscow
Можно в качестве спикера — попиздеть перед тремя людьми (запостимся в крупных плюсовых чатиках и канальчиках — может, будет больше), а можно и просто так
Сап, плюсач. Дело в том, что есть одна тян и мы с ней иногда гуляем по городу. Мне 30 лет (я наврал, что мне 25), а ей 16. Максимум что у нас было это мы с ней пару раз целовались. Что мне грозит, если попросить у нее интимки? За 16-летних тян есть бутылка от товарища майора?
Как в реализации кастомного списка с std::pmr::polymorphic_allocator аллоцировать node - ноду списка? До 17 стандарта и появления std::allocator_traits и pmr это делалость при помощи метаметода rebind, а сейчас как?
>>2780421 Кто «все»? Глобальные переменные допускаются только если они: 1. Статические; 2. Константные; 3. Не могут бросить исключение насчёт этого не уверен, но я нигде не смог найти информацию о том, как поймать исключение, если оно бросилось в конструкторе глобальной переменной, только всякие костыли с наследованием или созданием указателя и конструированием объекта в другом месте
>>2779839 Рекурсию надо объяснять не на примере языка высокого уровня, а на примере архитектуры процессора, ассемблера и стека. Ты вызываешь подпрограмму мнемоникой ассемблера CALL label, процессор берет текущий адрес из программного счетчика, инкрементирует его и записывает в стек, а в программный счетчик записывает адрес метки подпрограммы и выполняет ее, пока не встретит там команду RET. Потом происходит обратная процедура, процессор достает из стека адрес подпрограммы и возвращается к программе, которую он делал ранее. А если в подпрограмме вызвать подпрограмму без условий выхода из нее, это приведет к бесконечному заполнению стека, в конце концов стек переполнится и выйдет за пределы отведенной ему памяти. Поэтому в рекурсии должен быть обязательно предусмотрен выход из нее по условию, а количество рекурсий не должно переполнить стек.
>>2780855 Ассемблер это кастомная муть везде разная, для учебы не годится. Рекурсию надо объяснять следующим образом: В компьютере не существует никаких функций и тем более их вложенных вызовов - рекурсий, это всё абстракции для математико-даунов. Математика не имеет отношения к компьютерам, в них есть только примитивная арифметика, и логика. Так что с функциями - сразу нахуй следуй, дебил. Это первое.
И второе, что же тогда есть? А есть переходы - GOTO, код это одни GOTO, которые и надо учить. И на этом месте у тупого скота наступает истерика и он идет нахуй. Очень удобно не тратить впустую время на необучаемых дебилов.
Объясните кратко и наглядно, что такое докер, jenkins и прочая залупа которую я слышу от web-кабанов и касается ли это любителя С++, микроконтроллеров и видеоигр?
>>2781713 >Объясните кратко и наглядно, что такое докер, jenkins и прочая залупа Ну дженкинс и докер это всё шестерёнки одной большой системы под названием "девопс". Весь смысл девопса в том, чтобы как можно быстрее выпускать продукт на рынок и быть конкурентным. Чтобы пользователь софта получал аплейты каждую неделю. Если ты будешь по полгода выкатывать апдейты, придёт твой конкурент васян и у него будет быстрее продукт развиваться и улучшаться. Он будет выкатывать кучу маленьких изменений, будет гибче тебя и случае обсёра так же быстро откатит изменения.
Это всё в совокупности - инструменты, культура компании, автоматизация, организация компании, процессы и так далее. Чтобы это работало, нужно внедрять agile в компанию, угорать по экстремальному программированию, писать автоматизацию, разделять на микросервисы и давать независимым командам по микросервису.
В случае С++, работает сама идея, но у тебя не будет докера и контейнеров, не будет части "ops" в слове devops (грубо говоря сисадминов, обслуживающих серваки), не будет микросервисов, но всё остальное будет также работать.
>>2781876 >Почему? На плюсах не пишут микросервисы? Пишут, но я не имел ввиду вебню. Я подразумевал десктопные приложения. Там немного по-другому, идут по пути модуляризации/вынесения в демоны. А вместо REST API/MQTT идёт D-Bus, сокеты и всё остальное.
Как называется такой стиль кодирования, когда классы называются именами типа CVector, форматирования код происходит таким образом? В одно игровой компании был принят такой кодстайл, поэтому решил его использовать.
>>2782184 Ключевое слово static дает символу внутреннее связывание и он не торчит наружу из объектница. Слово inline просит компилятор попытаться встроить функцию.
>>2782184 Статические поля классов в C++ могут быть определены в заголовочных файлах, и если такое поле не помечено как `inline`, то каждый файл, который включает этот заголовочный файл, будет иметь свою копию статического поля. Это может привести к неожиданным результатам, если разные единицы трансляции имеют разные значения для статического поля.
Если статическое поле помечено как `inline`, то компилятор будет обеспечивать то, что в каждой единице трансляции будет использоваться одно и то же статическое поле. Это позволяет избежать проблем с неоднозначными значениями статического поля и обеспечивает более предсказуемое поведение программы.
Таким образом, пометка статического поля как `inline` является хорошей практикой для предотвращения проблем с неоднозначными значениями статических полей в C++.
>>2782228 >каждый файл, который включает этот заголовочный файл, будет иметь свою копию статического поля пример покажешь? а то звучит как хуйня полная что-то новое
>>2782360 Да, конечно, вот пример, который демонстрирует проблему множественного определения статической переменной:
``` // file.h
static int myStaticVar = 0; ```
``` // file1.cpp
#include "file.h"
void function1() { myStaticVar++; } ```
``` // file2.cpp
#include "file.h"
void function2() { myStaticVar--; } ```
Здесь мы определяем статическую переменную `myStaticVar` в заголовочном файле `file.h` без ключевого слова `inline`. Затем мы подключаем этот заголовочный файл в двух исходных файлах `file1.cpp` и `file2.cpp` и используем переменную в функциях `function1()` и `function2()` соответственно.
Когда мы компилируем эти файлы, то получим ошибку множественного определения:
``` error: multiple definition of 'myStaticVar' ```
Это происходит потому, что при компиляции каждого исходного файла `file1.cpp` и `file2.cpp` переменная `myStaticVar` определяется заново в каждом из них, что приводит к конфликту определений.
Чтобы избежать этой проблемы, мы можем определить статическую переменную с помощью ключевого слова `inline`, как я показал в предыдущем примере.
>>2782228 Я могу быть не прав и проверять мне лень, но насколько я помню, статическое поле объявляется в хедере а инстанс делоется в cpp файле, иначе (если инстанс создается в хедере) канпилятор просто на хуй посылает. Точнее послылает линкер, что типа одно и тоже в разных файлах с объектным кодом создано. Немного проще с шаблонами классов, там можно прям в хедере объявлять, подробностей правда говоря так сразу и не вспомню. Лично я вместо статических полей практикую статические функции возвращающие ссылку на статический объект, объявленный внутри этой функции.
>>2782456 Если речь идет о статическом поле класса, то принципиально ничего не меняется: при подключении заголовочного файла, содержащего определение статического поля класса, в нескольких исходных файлах может произойти множественное определение поля, что приведет к ошибке компиляции.
Для избежания этого необходимо определить статическое поле класса в единственном экземпляре. В C++ для этого можно использовать ключевое слово `static` в определении поля класса вместе с ключевым словом `inline` в заголовочном файле, как я показал в предыдущем примере.
Вот пример определения статического поля класса с использованием ключевых слов `static` и `inline`:
``` // MyClass.h
class MyClass { public: static inline int myStaticField; };
inline static int MyClass::myStaticField = 0; // определение поля ```
Здесь мы определяем статическое поле класса `MyClass`, используя ключевое слово `static` в определении поля и ключевое слово `inline` в заголовочном файле. Обратите внимание, что определение поля вынесено за пределы класса и выполняется с использованием квалификатора имени класса.
Теперь, при подключении заголовочного файла `MyClass.h` в нескольких исходных файлах, статическое поле `myStaticField` будет определено только в одном экземпляре, что избежит ошибки множественного определения.
>>2780994 >Ассемблер это кастомная муть везде разная, для учебы не годится Вызовы происходят абсолютно одинаково. Всегда сохраняется адрес возрата на следующую инструкцию на стеке, так что это уже фрейм стековый. И таки да, объяснение рекурсии на примере асм реально лучше, я только после этого начал понимать, например, ту же двойную рекурсию.
>>2782047 >Как называется такой стиль кодирования, когда классы называются именами типа CVector, форматирования код происходит таким образом? Hungarian notation, отдельный вид рака из мира си с классами, которым пользуются всякие вальвы и гуглы.
Я советую стиль Java: ClassName, _variableName methodName()
>>2783417 читай что я пишу. Си с классами. Любимый стиль раковников из девяностых и любителей покритиковать современный С++ из параши растовиков и петухонистов. Сейчас так лучше не делать и писать современный код, используя умные указатели, RAII, а так же такие инструменты как отладчики и профайлеры. У меня проблем с утечками памяти не было, разве что когда касался сишного легасиговна.
>>2783428 >из параши растовиков и петухонистов >Сейчас лучше писать современный код Ну и зачем с треде С++ вскукарек из параши растовиков и питонистов?
>>2783437 Не знаю, но они постоянно протекают сюда и визжат что С++ это UB на UB. Просто надо уметь кодить, пользоваться инструментами для отладки и выявления утечек памяти и проблем не будет.
>>2783428 А я вот умными указателями не пользуюсь принципиально. Это очень плохо? У меня лет за 20 ни разу ничего никуда не утекло, и как-то хуй знает зочем это все.
>>2783438 Просто разным задачам разные инструменты. Когда мне надо написать говноскрипт с примитивной задачей, например что-то там качающий из интернета и производящий с этим несложные манипуляции, такое можно написать и на батниках, но мне в падлу и пишу на шарпе, удобно просто писать не думая о мелочах, мусоросборник сам подотрет. Но это задачи для говноскриптов, когда же надо написать реальную программу, полезную, которой пользуются, это значит она должна работать хорошо, а не тормозить как сука хуже браузерных страничек, вот тут уже только си, иначе никак. Когда пишешь качественный софт, требование внимательности и аккуратности уже не кажется "в падлу", так кажется только когда говно пишешь, сам понимая что оно ничего особо не стоит, вот и не хочется вкладывать время и силы в говно.
>>2783599 > человек может ошибиться и написать уб > так просто не ошибайся Тебе, тупоголовому реально надо объяснять почему это не работает, не работало и не будет работать? Ты хоть раз работал в команде 5+ человек, ты хоть раз видел на работе джунов? Это все притом что с каждым стандартом кол-во кода для написания одной и той же вещи растет и растет
более того на всерьез думать что используя умные указатели ты можешь хотя бы от половины уб избавиться
Аноны, значится у меня появилась задача перевода расчётов из экселя в стороннюю программу (никакого взаимодействия с экселем нет, просто переписывание с нуля в отдельную софтину). Но вот проблема в том, что там в формулах расчёта есть именованные константы, типа, РасхКраски_шт, ЦенаКраски_шт и тд. Причём пользователя может что-то менять в формулах. Как бы эти формулы перевести в C++? Точнее чтобы у пользователя осталось такое же взаимодействие с функционалом как раньше.
>>2783869 К приложухе подключается готовая dllка (предположим, что её исходников у меня нет). Мне нужно, чтобы все выделения памяти внутри этой dll осуществлялись через мои new, delete, malloc и т.п., которые переопределены мной. Всё это нужно под виндой Я такой хуйнёй занимаюсь первый раз, поэтому хз, что ещё добавить
>>2784718 У тебя есть только один код - бинарный код дллки, берешь его и реверсишь в ассемблер выясняя каким образом происходит выделение памяти и хукаешь эти функции. >через мои new, delete, malloc Нет таких функций, это лишь абстракции в исходниках на С++, которых у тебя нет, реализованы на практике могут быть как угодно (неизвестно).
Я долго не знал, зачем в реализации std::forward параметр пишется как std::remove_reference_t<T>& x. Довольно бессмысленная запись. Оказывается это для того, чтобы CE вызывалась, если пограмист забудет явно указать параметр шаблона в при вызове std::forward.
>>2784718 крч хуй знает куда ты пропал и актуальна ли еще проблема, вот тебе к размышлению информация такая. У меня нет винды под рукой, под убунтой бинарник с скомпиленный из такого вот кода имеет такую вот таблицу импорта. Это говорит нам о том, что функция malloc это функция из библиотеки С. Думаю в винде так-же. Вызов этой функции можно перехватить 2 способами: 1. подменить адресс функции в таблице импорта (есть 2 подспособа) 2. сплайсинг (в памяти прям в начале этой функции записываются машынные коды инструкций прыжка на фейковую функцию, которая делает свои действия по перехвату (логирование, подмена чегонибудь)), выполняет инструкции которые мы затерли прыжком, и делает прыжок обратно
// Функция, которая меняет местами элементы двух контейнеров void exchange(int i, int j) { // Захватываем обе блокировки атомарно std::lock(m1, m2);
// Создаем объекты std::lock_guard для управления блокировками std::lock_guard<std::mutex> lock1(m1, std::adopt_lock); std::lock_guard<std::mutex> lock2(m2, std::adopt_lock);
// Меняем местами элементы std::swap(v1, v2[j]); }
// Создаем два потока, которые вызывают функцию exchange std::thread t1(exchange, 0, 0); std::thread t2(exchange, 1, 1);
// Ждем завершения потоков t1.join(); t2.join();
// Выводим содержимое контейнеров for (int x : v1) { std::cout << x << " "; } std::cout << std::endl; for (int x : v2) { std::cout << x << " "; } std::cout << std::endl;
>>2786014 >>2785989 Я сделал экзешник. Сделал либу в которой переопределил маллок нью и прочее. Линкую либу к экзешнику, проверяю все работает. Делаю другую либу в которой тоже полюзуются малоки и тд. Линкую вторкю либу к первому экзешнику, проверяю и внезапно редирект малоков в перваю либу работает. Чдт.
>>2785861 Сори, вчера, не до этой хуйни было Благодарю за наводку. При помощи detours получилось подменить исходные функции и вроде работает как мне и надо за исключением того, что перехватываются все malloc и free, а не у конкретной либы. Но на это вроде похуй. Так что ура, получилось, ещё раз спасибо
> 1. подменить адресс функции в таблице импорта (есть 2 подспособа) Можешь вкратце рассказать или скинуть что-нибудь почитать?
>>2785640 Бля, я все правильно написал изначально, это ты дебич сбил меня CE - Compile-time Error RE - Runtime Error UB - Undefined Behaviour (вдруг ты не знаешь)
>>2786956 Компиле тайм эррор делается специально через статик ассерты чтоб потенциально не проебаться в последствии. А рантайм ну иногда бывает, но редко да. Вот на днях че то такое видел мутексы себя ломали.
>>2787886 >зачем с него переписывают на си? 1. Шизики-бездельники 2. Стабильное аби и возможность создания биндингов к разным платформам В твоем случае первое
>>2787886 Переписывание уже написанного это тунеядство, имитация деятельности. То же самое как переустановка ОС, когда еблан не умеет и не хочет пользоваться ОС, занимается переустановкой. Так и тут, когда не умеет и не хочет писать программы, фиксить баги, вносить улучшения, переписывает уже написанное делая только хуже.
>>2788039 > Так и тут, когда не умеет и не хочет писать программы, фиксить баги, вносить улучшения, переписывает уже написанное делая только хуже. У тебя пресуппозиция, что в процессе переписывания программа не улучшается. А ведь при этом можно и найти баги.
>>2788044 >А ведь при этом можно и найти баги Он не на раст переписывает, а на си. С таким подходом багов однозначно станет только больше, ведь языка программирования с меньшим количеством проверок еще не изобрели.
Вот допустим я в процессе программирования выделил некоторые сущности и в соответствии с ними создал некоторые классы. Но потом вдруг выяснилось, что некоторые классы совсем не содержат в себе данных, только методы. Тогда руки чешутся сделать эти методы статическими, но я ловил какие-то ошибки во время компиляции, с которыми мне разбираться лень было а ещё не понял путаницы со статическими шаблонными методами. В общем, либо делать эти методы методами объекта, но тогда придётся при их вызове создавать временный объект (который скорее всего при оптимизации превратится в no-op, но всё некрасиво), либо вместо класса просто отдельный неймспейс выделить, но это как-то не объектно-ориентированнолибо сделать десяток функций с названием а-ля ИмяКлассаИмяМетода, но это уже программирование уровня /b/
>>2788589 У тебя метод головного мозга. Пстые классы без данных с мотодами, лол. понимаю еще сли бы все это виртуалы были... Просто сделай функции, не позорься. Ну можешь в неймспей впихнуть если так чешется.
Короче в расте все нетривиальные типы муваются. Представьте, если бы у абсолютно всех объектов вместо копирующего и перемещающего конструктора был бы единый move-конструктор Classname(const Classname& value) и это предопределено в языке и никак не изменить. Я предпочту С++, потому что больше гибкости. Еще я заметил, что кидается СE, когда переполнение или даже потенциальное переполнение типа, то есть они хотят сказать, что в расте избавились от UB. Но я открою секрет, constexpr-функции тоже кидают CE, если в коде функции есть UB.
Аноны, а зачем люди используют динамические библиотеки, когда свое говно собирают? Я ни одного плюса не вижу, когда человек предпочитает свое говно сделать динамическим, а тебе потом приходится его говнофайлики подкидывать.
Статическая сборка компактная, требует меньше зависимостей, и ощущение, что программа лучше оптимизируется
>>2788650 Ну это враки же, Википедия говорит про "длл-ад" в шиндовс. А в линукс реалиях? Библиотека my_govno.so сама решает обновиться, а прога с этой версией не протестирована, и все, пизда?
Немного правдоподобно использовать длл если хочешь исходники скрыть. Но опять же, щас популярен подход хедер-онли, и как-то все открыто остаётся. Короче не понимаю многого
>>2788658 >Библиотека my_govno.so сама решает обновиться, а прога с этой версией не протестирована, и все, пизда? Разруливанием этих вещей занимаются мейнтейнеры и пакетный менеджер.
>>2788648 Ты вопрос внятно сформулировать можешь? Какое еще своё говно? Собственный проект динамически или свой велосипед тянут в проекты как динамическую либу?
Ты что компьютерный дух? Какие еще ощущения? Дальше что? На картах нам погадаешь? Разберись для начала как компьютерная программа вообще стартует и что она при этом делает. Статическая сборка у него компактная. Кстати говоря рекомендую еще с лицензиями ознакомится
Аноны, кто пользуется qt creator как средой разработки? Как починить баг когда при сохранении курсор меняет положение в файле, а затем вообще ломается сколл документа?
>>2789193 Я и говорю, соя совмем отупела. ясное дело что можно манипулировать с областью видимости, это никак не отменяет факта что все это гивнецо раньше реализовывали просто вызовом функций.
>>2783515 >А я вот умными указателями не пользуюсь принципиально. Это очень плохо? Просто у тебя не было задач, где они нужны. А это, например, практически любой редактор с undo. Там так или иначе придется использовать счетчик ссылок на ресурс, и удобно это делать умным указателем.
>>2789773 >Почему модули не взлетели? Потому что оказалось, что они своей задачи не решают. Поскольку формат модуля у каждого компилятора свой (и даже разный для каждой версии компилятора), то заменить хидеры модулями можно только при полном доступе к исходникам, т.е. или в опенсорсе или, наоборот, полностью внутренней разработке. Если же надо распространять свою либу или API к проге, то модули ничем не помогут, придется все так же распространять скомпиленую либу + хидеры.
>>2789820 Пробовал я их гитовские версии - как правило шляпа багованая Лусше стейбл жди. Алсо у меня креатором таких проблем не было, обновлчюсь стабильно.
>>2789809 а я думал все цели успешно достигаются их основной смысл заменить и улучшить прекомпилед хедеры чтоб конпелятор не жевал 200мб шаблонов в каждом юните
алсо >формат модуля у каждого компилятора свой чет лол, половину предложений в стандарт шлют нахуй по причине "не ломать abi" а кто-нибудь вообще видел этот не сломанный abi крестов? он вообще существует нах? при смене -О1 на -О2 жепа не отваливается?
>>2789913 Так а кого ебет как ты свои лабы собираешь? Задроты то мучают комитет чтоб вообще у всех либы перестали линковаться к проектам, сейчас то такой проблемы нет
Изучаю новую тему, а именно перегрузка операторов в ООП.
И собственно сразу вопрос, а нахуя эта перегрузка нужна, вот серьезно я не могу понять, в теории даже обьяснить не смогли, какой-то пуньк, среньк, кхм, удобно поэтому используйте, но а где использовать, как влияет на память и прочее не указано.
>>2790148 Никак это на память не влияет, это тупо механизм добавления сахара, тут не может быть глубокого смысла. Фича практически бесполезная, нужна только в laba1.cpp, чтобы реализовать сложение матриц с перегрузкой операций, сдать преподу и забыть
>>2790148 > И собственно сразу вопрос, а нахуя эта перегрузка нужна Ты пишешь класс который будет представлять из себя вектор из 3 флоатов class vec3f {float x; float y; float z;};
Понятное дело, что ты хотел бы делать что то подобное vec3f p1; vec3f p2; vec3f p3 = p1 + p2; vec3f p4 = p1 * p2; и тд
Если ты был в какой то жабе, пришлось бы писать что то подобное
vec3f p3 = vec3f::product(vec3f::sum(p1, p2), p4); и тому подобное
И собственно сразу вопрос, а нахуя эти шаблоны нужны, вот серьезно я не могу понять, в теории даже обьяснить не смогли, какой-то пуньк, среньк, кхм, удобно поэтому используйте, но а где использовать, как влияет на память и прочее не указано.
>>2790297 На память влияет положительно. Я вот пока не начал использовать шаблоны, часто забывал куда положил таблетки или очки. Как начел использовать шаблоны, память сразу улучшилась.
>>2790297 Напиши простейшую программу. На вход функция принимает значение. Если это значение тривильное (int, double, char и т.д.), в консоль выведи "trivial". Если это класс (например std::string, std::vector), в консоль выведи "class". У тебя есть 30 минут на размышления о никчемности своей жизни.
>>2790175 Частенько нужна перегрузка круглых скобок, потому что лямбды и шаблоны. Остальное нахуй не нужно действительно, если ты не задрот. Но плюсы то как раз для задротов и это они себе фич накидали, а такие вот додики вроде тебя сидят гадают а нахуй это нужно. Ну в общем всё на своих местах
>>2790465 Ну ты пряник, это то ясное дело, я же спрашивая как это сделать через систему сборки, не вмешиваясь в системные директории. Сагать не буду, но нпхуй ты послан.
А как реализовать дерево? У него же хранится указатель на голову. Но как понять голова заполнена значением или нет? Не проверять же при каждой вставке голову на nullptr. Тогда я подумал, что можно завести отдельный метод start(), которым нужно вставить самый первый элемент в дерево, проинициализировав голову, а последующие вставлять в дерево методоv insert(). Но в std::set все элементы, и первый и последующие, вставляется методом insert. Как так?
>>2790720 >>2790754 Прчему асм, где с? С чего ты взял что насм, а не гасм? насм ставить отдельно надо, он в гцц не входит, а гасм входит, но вкючается просто асм. Какое это ядро спп 17 требует?
>>2790848 Ты устанавливаешь не C++, а компилятор. Поставь сначала компиляиор поновее, а если что, убуниу обнови. При компиляции в зависимосьи от компилятора надо прописать -std=c++20
>>2790601 Так программу или функцию? Если программу, то в каком виде она принимает зночение, в виде строки чтоли? Если функция, то обчные прегрузки и никакие шаблоны на хуй не нужны.
>>2791162 Если что, шаблон функции это не функция. Для каждого набора параметров шаблона канпилятором канпилируется отдельное тело функции. Ты же просишь просто функцию, которая принимает что угодно. Куча перегруженных функций в этом плане, ни чем не отличаются от шаблона
>>2791173 Я про функцию в смысле интерфейса. У тебя есть f и ты можешь использовать () для ее вызова. Как там внутри реализовано никого ебать не должно. Ты же когда пользуешься функцией из сторонней библиотека не подозреваешь, шаблон она или нет.
>>2791179 Я когда прльзуюсь функцией из стороней библиотеки всегда знаю, шаблон она или нет. Точнее, она всегда не шаблон. Потому что функция и шаблон функции это разные понятия. >Я про функцию в смысле интерфейса Мне по хуй глубоко про что ты, научись четко формулировать мысли
С моей точки зрения как новичка без коммерческого опыта:
1. Нет абстрактных прослоек, можно проследить путь от машинного кода до высокоуровневых сущностей. То есть, например, у меня есть string, и круто видеть как он реализован с помощью более мелких сишных деталей, типо массива char и указателей. В отличие от string в джаваскрипте, где он просто тебе дан и все. 2. Свобода в реализации, можно писать в безопасном стиле как Java, обращаясь к контейнерам методом at(), можно в быстром стиле с помощью оператора []. В расте все объекты всегда муваются и это вшито в стандарт языка, в плюсах мы пишем конструкторы как нам угодно, может хоть в копирующем мувать, а в перемещающем копировать, и никто нас не остановит от этого безумия. 3. Быстродействие, скорость, отсутствие такой приблуды для идиотов как сборщик мусора, смартпоинтеры одно удовольствие использовать. 4. Большая кодовая база, огромное комьюнити, постоянная поддержка и улучшение языка (концепты, рэнджи, корутины). 5. Очень много годноты написано на крестах (операционные системы, игровые движки и сами игры, графические и видеоредакторы, ffmpeg, системы машинного зрения, браузеры), которую интересно изучить. С WinApi также удобнее работать через кресты или си. Конечно на синтаксис и семантику языка это никак не влияет, но создает положительное впечатление и дополнительную мотивацию при изучении языка.
>>2791211 Это всё хаки. Имелось в виду, что без специального вмешательства просто так ты константный объект не поменяешь. Конечно, можно изъебнуться, но если не изъебываться, это таки сокращает количество непреднамеренных ошибок.
>>2791206 Нууууу, как тебе сказать... по теории нельзя, на практике можно Там еще и недавно рейнджы что то поломали
Вот чем чем, а const никогда не был сильной стороной плюсов да и чтобы он хоть как то нормально заработал, нужно как в расте, всё изначально конст делать, а если хочешь что то поменять, то явно указываешь что он mutable
>>2791248 Потому что после std::move тип ссылки будет не T&&, а const T&&. Для изменения таких объектов нужно к методу дописывать соответственно const &&
>>2791248 Да я хуйню написал, счс проверил. Я думол, что временные объекты константны, а по ходу, константен не сам объект, а только ссылка, которую подсовывает вместо такого объекта. Проясню, что я имел в виду:
Даже если написать std::cout << SomeFunc(std::move(someInstace), 44).someMember << std::endl; все равно не сработает, потому что мы константный объект принимает по неконстантной ссылке, тут явный const_cast нужен.
> что временные объекты константны Тогда как мы бы их мували?
>>2790148 >а нахуя эта перегрузка нужна Например, чтобы печатать свой тип в cout, перезагрузив <<. Или посмотри на скрине, как SlateUI сделан в анриле - там DSL для декларативного описания гуя сделан через операторы. Еще немаловажная особенность операторов - их можно вызывать без указания неймспейса, это бывает нужно для всякой темплейтной магии.
Подскажите, есть ли какой-то механизм стандартный в плюсах (не нативный), чтобы можно было извне послать потоку что-то, чтобы там исключение сгенерилось, чтобы примерно то что на картинке можно было штатно завершить?
>>2791668 Вообще ты идешь не тем путем, хотеть сделать все средствами стд - удел скриптомакак что тут в треде срут. Подумай чутка и напиши свою реализацию, вопрос то не сложный. std:jthread
>>2791439 Нет таких механизмов, да и вообще это говнокод. Это где у вас так принято исключения кидать на штатную ситуацию? И ты вопрос конкретнее задавай, потому что если сокеты, то есть асио и там что ты хочешь сделать - можно по-нормальному реализовать через контекст
>>2791830 >Вы хотя бы понимаете, почему в плюсах переполнение интов не кидает исключение? Потому что много чести кидать кита на берег, когда одна планктонина чихнула. Жирно.
>>2791830 Ага, именно поэтому. Тебя кто до этого надоумил? Сам бы ты вряд ли догадался. Кстати объясни ка еще почему переполнение это исключительная ситуация?
>>2791830 >Потому что полвека назад в pdp-11 не оказалось таких инструкций. Каких именно инструкций? Overflow флаг там есть, лови переполнение на здоровье, если надо.
Что-то я совсем не понимаю. Есть виртуальный чистый метод в классе SimpleScreenObject(пик1), он приватный и у него нет реализации. Есть другой класс, ScreenObject(пик2), который наследует от него и от этого ScreenObject'а уже наследуют многие другие классы. Вот например класс Panel(пик3), наследует от ScreenObject и при этом перезаписывает наследуемый метод. Вопрос. Как он его так смог засунуть в public, когда он был private? И какого хуя вообще происходит, он почти нигде не переопределяется, но при этом он вызывается в SimpleScreenObject, НЕ ИМЕЯ РЕАЛИЗАЦИИ, то есть он просто крашнет, например здесь, в методе класса ScreenObject(пик5)
>>2791830 > Вы хотя бы понимаете, почему в плюсах переполнение интов не кидает исключение? То есть на каждый инкремент надо проверять, не переполнился ли инт? Съеби-ка нахуй обратно в сишарп-тред.
>>2791954 > А если я передам его в конструктор и сохраню Куда сохранишь? В файл? В базу данных? Фотографию сделаешь на память? > это нормально? Нет, не нормально, что ты базу не учишь, а уже вопросы какие-то задаешь. Про ссылки, про правила их инициализации, про продление жизни временных объектов.
>>2791954 >А если я передам его в конструктор и сохраню, на что оно указывать будет Будет указывать на объект, который ты передал. Rvalue просто показывает, что ты можешь работать с объектом определенным образом. Т.е. если есть конструктор копирования и перемещающий, то если ты передаешь rvalue, будет использован move конструктор. Тут нет никакой магии, физически это тот же указатель, если не вдаваться в детали.
>>2776766 Мне удобней, когда тип слева. Еще бы запись массивов изменить, чтобы объявлялись вот так - int[10] arr. Тип слева это логично, потому шта сначала идет более общая сущность как множество значений, а потом конкретная в виде одного определенного значения. А еще левее можно поставить концепт, как еще более общую сущность.
>>2792475 Конечно не ответят, а ты что думал? Тут только могут на стандарты дрочить и категории выражений, тут ни у кого ни строчки кода в каком-либо проекте, кроме laba1.cpp
>>2791941 > И какого хуя вообще происходит, он почти нигде не переопределяется, но при этом он вызывается в SimpleScreenObject, НЕ ИМЕЯ РЕАЛИЗАЦИИ Это абсолютно легально. Объекта SimpleScreenObject у тебя никогда не будет, потому что класс абстрактный, то есть его наследник должен обязательно все методы переопределить (ну или он тоже будет абстрактным и уже его наследник должен будет все оставшиеся методы переопределить и т.д.) Чистые виртуальные функции нельзя вызывать только в конструкторе, потому что тогда PVC будет. В остальных случаях (если я всё правильно помню) — можно. Насколько я вижу, класс ScreenObject тоже абстрактный, поэтому в том, что в нём вызывается чисто виртуальная функция, нет ничего плохого.
>>2792538 >Насколько я вижу, класс ScreenObject тоже абстрактный Он абстрактный, потому что унаследовал полностью абстрактный метод и не реализовал его? Если так, то спасибо, все понятно!
23 лвл, работаю на хуевой работе, но есть лишнее время для изучения какого-то направления.
Подскажите, аноны, сколько времени уйдет на изучения плюсов, могу учиться по 4 часа в день, но интересно узнать сколько конкретно в часах уйдет на изучения плюсов.
База кое-какая есть, могу начать изучать ооп, а все остальное подтянется со времен.
>>2792775 Вся жизнь уйдет, но кроме плюсов надо знать кьют, линух, базы данных, и зачастую алгоритмы. Если не западно дрочить литкод, можешь попытаться вкатится.
>>2792978 > сколько вы времени потратили на плюсы Больше 5 лет. > что знаете Сложно оценить, что знаешь. Наверное, основные фичи до 20 стандарта включительно, кроме корутин (они мне кажутся какими-то всратыми). > есть ли работа Не на плюсах.
я слышал что порог вхождения на плюсы высокий, но не настолько же, как же так, анон, за 5 лет писанины на плюсах тебя так и не взяли на работку? или ты даже и не искал работу, просто как хобби?
>>2793066 > сколько времени уделяешь на плюсы в неделю? Не отслеживаю. Могу всё свободное время этому уделить, а могу за весь день и не притронуться ни разу. Если взять среднее арифметическое, то наверное час-два в день.
> так и не взяли на работку Не хочу писать какую-то парашу на Qt.
> просто как хобби? Да, просто люблю этот язык. Наверное, только в нём может возникнуть такая ситуация, когда человек не может спокойно написать конструктор для класса, хранящего две строки https://youtu.be/PNRju6_yn3o Наверное, только в нём можно сделать пикрил. Это оператор присваивания, который работает в обратную сторону
>>2792969 Ты уже слишком старый для этого, и явно обчитался инфоцыганщины и не понимаешь, что тебе нужно. Плюсы уже не для тебя брат, я без негатива говорю, ты просто время проебешь
>>2793098 Клёвый доклад. Накинь пж ещё что нить такое. алсо конечное решение было мне будто известно с лекций, а так тоже согласен что второй вариант самый адекватный
>>2793175 За какой нахуй год блять? Это что шутка? Ты понимаешь что минимальное требование на плюсового джуна это топовый тех вуз? Это минимальное. сука. требование. Дальше начинаются вопросы про то что ты из этого вуза смог вытащить, ну в зависимости от твоей прикладухи, это может быть, например, сетевой стек, знания линукса (нет, это не про юникс порн и генту в десктоп тредах), какие-то познания в компиляторах, мб немного математики - и это самое наипростейшее что может встретиться. Заметь мы про язык и его основные технологии даже и не начали говорить, хоть сейчас время останови и дай тебе сто лет, при приеме на работу джуна не будут воспринимать, что он знает плюсы, это просто смешно, сначала посмотрят на твой бекграунд и кто ты вообще
>>2793189 >при приеме на работу джуна не будут воспринимать, что он знает плюсы, это просто смешно, сначала посмотрят на твой бекграунд и кто ты вообще Это не приём на работу, а буквально шлюха с аватарки так выбирает себе ёбыря: "смотрят на твой бекграунд и кто ты вообще"
>>2790752 Все вы блядь умные, когда ответ знаете заранее. >>2790704 Я начал думать над тем, а не начать ли алгоритм с проверки наличия самих данных в ноде. Но все время сбивало с толку, что если нода nullptr, то обращение к ней по ее полю будет UB. И тут меня как озарило, а почему бы не проверять саму ноду на nullptr. Если nullptr, то аллоцировать новую ноду с данными, если нет - сравнить данные и получить в зависимости от сравнения указатель либо на правую либо на левую ноду, после чего с этим указателем повторить алгоритм. И начать такую проверку можно прямо с голову. И вроде получается такое простое и чистое решение, и не понимаешь, почему раньше до него не дошел. На пике - говнокод метода insert() прошлой попытки (метод работает только если голова не пустая).
>>2793939 Еще более старый код дерева к сожалению я удалил, ты бы видел как я там локальные объекты возвращал по ссылке из функции. >>2794182 По указателю. А как по ссылке хранить, она же должна быть сразу проинициализирована и ее менять нельзя.
>>2793383 У тебя может с этого гореть жопа и ты можешь всячески изъебываться называя это как тебе хочется, но реальность такова. Без института и хорошего образования, без каких-то выделяющих тебя среди остальных людей достижений на профессиональном поприще нехуй тебе лезть туда где люди пишут на плюсах. Особенно если ты 23 летний рнн дебил который вчера проснулся и понял что пора бы и за ум взяться. Это просто курам на смех все эти потуги
Поясните за текстовый режим открытия файлов. Вот бинарный я понимаю, байты и байты, это логично. Зачем отдельный режим для текста? Давайте сделаем отдельный режим для видеофайлов с осьминогами и лолями.
>>2794835 В чем она ебанутая додик если процессора в основном с текстом и работает? Ты прежде чем предъявлять что-то подобное хотя бы какие то минимальные представления заимей. Тебя например не удивляет, что в языке даже отдельного примитива для работы с бинарными данными нет, а есть char который оо нихуя себе ascii символ? Ну то есть единица текста. И вопрос ээ ыы слыште а че файлы на текст и бинарные разделили? -- это не на редкость ебанутая формулировка у зумира?
>>2794909 >процессора в основном с текстом и работает? Чоооооооооооооооооооооо? >минимальные представления заимей Ну конечно, один ты умный, а все вокруг дураки ебаные. >примитива для работы с бинарными данными нет, а есть char который оо нихуя себе ascii символ? Че несешь, ты че, ебанутый чтоли? >И вопрос ээ ыы слыште а че файлы на текст и бинарные разделили? -- это не на редкость ебанутая формулировка у зумира? Очко чебе раздели пёс. Я говорил что формулировака "популярный формат файла" ебанутая.
>>2794949 Ооо нихуя себе??? А когда я тебе скажу что весь интернет на http стоит ты вообще со стула упадешь? Не уверен что ты слышал про http, а то ты какой то вакуумный слегка, но это если что протокол для передачи гипертекста, ака "популярный"
Ну конкретно ты дурачок, не понятно зачем здесь сидишь и позоришься с каждым своим высером, просто съебись уже
Напиши функцию которая копирует какой-нибудь бинарный файл в буфер, например жипег, сохраняет его под другим именем и посмотри на свой же код, имбецил
Какая разница что ты там говоришь если всё какой то идиотский бред
>>2794986 Я не успеваю за полётом твоей фантазии. У тебя не последовательно мысли сформулированы. >а если я тебе скажу >сделай то сделай это Иди на хуй просто, додик)
>>2795474 Дадад, думал шланг компилятор. Мне нужен компилятор под винду, чтобы компилировать в студии, а потом компилятором, и сравнивать результаты и сообщения об ошибках.
Не рекомендую ИТТ анонам знакомиться с программами для реверса и дизассемблинга программ, есть шанс впасть в депрессию от того, насколько вы дерьмо пишете.
>>2765215 Переписал. Больше так хуёво не пиши, чел. Попробуй в /бэ/ потренироваться, что ли? Так за каждую ошибку изложения тебе полный рот ">пук"ов насуют. Будешь даже с горящим пердаком писать идеально чисто, ровно, и понятно, лишь бы оппонента позлить отсутствием изъянов.
>>2764593 > Куда уж там всяким Stardew Valley, римворлдам, андертайлам, майнкрафтам и прочим Touhou, сейчас аноним с харкача вам расскажет, что есть смысл пилить в одиночку, а что нет. Ты сам себе противоречишь, действительно. Ты описывал, что SDL не стоит брать, потому что нихуя полезного на этом не сделаешь. На контраргумент про сложность, ты ещё раз сказал, что НИХУЯ ПОЛЕЗНОГО. Упомянул Марио.
В одного стоит пилить игры только по типу Марио, да. Да, я, аноним с харкача, сейчас расскажу, что есть смысл пилить в одиночку, а что нет.
Задумки у всех великие, но идеи ничего не стоят. Приведу цитату, что тот чел использовал, но полностью: "Исключения из некоторого правила подтверждают то, что это правило вообще говоря существует". Никто не пишет игры типа Майнкрафта в одиночку. Почему? Потому что это очень сложно. Не невозможно, да, но требует непомерных усилий.
Почему я, анон с мылача, могу указывать писать ли всем на SDL или взять что-либо пожирнее? Потому что если ты вообще спрашиваешь "А на чём мне писать?", то мотивации сделать следующий Майнкрафт в одиночку у тебя точно нет.
инб4, да я видел ниже ветку, не слепой. Ну вот, было так сложно что ли? Я не так много высрал, но вроде бы чище.
Попытался реализовать CRTP, не подглядывая в гугл. На первом пике та реализация, где я сначала подумал, а нахуя какое-то наследование, у нас же есть специализации классов. И получилось вполне себе красиво и главное все работает, но нарушен принцип DRY из-за введения структур-тегов. На втором пике я все-таки попытался использовать наследование, все работает, но пришлось использовать уродливую заглушку <int>. Все, адекватных идей больше не осталось.
>>2796786 Че эта мразь до кота доебалась? Вот сидишь себе чилишь, абсолютно никого не трогаешь и подскакивает какая то чертила сношать тебе мозг как будто так и нужно
>>2796786 Я хуй знает что такое CRTP, но выгледит пиздец как не логично. Почему sound не определять в классах Cat_tag и Raven_tag, а в Animal сделоть void sound() { T::sound(); } () либо T().sound() если она не статик, там по ситуации). Т.е. стротегия
>>2797424 Для собеса. Я серьезно, компилятор оптимизирует виртуальные функции, инлайнит те из них, где тип можно в компайл-тайме определить, скорость получается больше, чем с CRTP.
>>2797641 >>2797693 Как макнуть отрицателей goto мордой в их обосранные портки: - break это goto - но break выходит только из одного цикла, а если надо из двух и более? - правильно, пользоваться нормальным goto без ограничений для даунов )))
>>2797841 Братишка, ну если ты эмбеддед и драйвера, то и спроса за goto с тебя нет. А в продукты не надо такое тащить. Лучше подумать и избавиться от вложенности.
>>2798312 Для меня писать отдельную функцию на каждый двойной цикл (и вообще на все, что не вызывается более одного раза) - это перебор. Чем миллион микро функций лучше лапши?
>>2798399 Ну во первых, что такое z? Во вторых, зачем ты пересоздаешь массив при удалении элемента? Просто берешь последний элемент стека, вызываешь у него деструктор, указатель стека уменьшаешь на 1
В третьих > выдает ошибку В таких случаях прося помощь лучше писать какую конкретно ошибку выдает
>>2798388 >Это противозаконно? всмысле быть дураком >Да, у нас на проекте запрещены эксепшены Лично мне ваш обосанный проект не интересен. И то что у вас там что-то запрещено, не значит, что это плохо.
>>2798399 А почему при добавлении, ты стек не ресайзишь, а просто записываешь в уже выделеный кусок памяти элемент, а при удалении элемента ты еще и размер стека уменьшаешь? Какова логика вообще? Я думаю, на третьем пике все что внутни if(z > 0){ ... } удолить к хуям и сделать просто z--;
>>2798280 int это 32 битное число. Нахуя юзать 128 бит SSE регистры? Тем более, там вроде на переключение между обычными и векторными инструкциями нужно какое-то время.
Гайз, а подскажите. Вот стл контейнера берут шаблонным параметром аллокатор<Т>. Но как они используют его для выделения памяти под узлы, если это узловой контейнер? я пробовал посмотреть как устроен std::set. Не понял.
> Даже если не знаю Просто твои первые два предложения > int это 32 битное число. Нахуя юзать 128 бит SSE регистры? На фоне того, что из себя представляют SSE регистры, звучит очень смешно. Наверное, всё же не надо говорить о том, чего не знаешь.
>>2800186 Уже писал как то об этом, повторюсь. Сравнивал работу математических либ с ручной векиоризпцией ссе 2 4 и авх 2 и простой скалярной. Так вот с 03 на новых гцц разницы в производительности нет. Значит гцц сам все векторизирует как надо.
>>2800245 Ну на компилятор всё же стоит полагаться. Всё таки к SSE вроде бы стандартного обращения нет, придётся либо через интринсики (для каждого компилятора + стандартную версию на всякий случай), либо через язык ассемблера, что, в общем-то, ни разу не удобнее. Проще написать обычную версию и надеяться на то, что компилятор разрулит.
>>2800245 >Оптимизм и отвага Они реально векторизацию хорошо пилят последние годы. Раньше, например, для float3 надо было делать отдельный вариант класса для стековых переменных, с выравниванием по 16 байт, иначе компилятор тупил и делал выгрузку в память из регистра, а теперь он в 90% случаев все через регистры разруливает.
Аноны, есть кто из ДС2? Куда можно прахраммисту на Qt податься (стаж 5 лет, но задачи в целом решал несложные)? Может кто какой-нибудь фидбек дать по питерским конторам?
Работу хочу сменить осенью, потихоньку начинаю ковырять хедхантер.
>>2801385 Бля братуха, ты откуда такой смешной взялся? Все знают что в рашке вакансии на плюсах это либо высокий грейд в бигтехе, либо заводы и нии. Какой еще фидбек по конторам дать? Ты ку ку
>>2801394 Ну хуй знает. Я так HH смотрю, есть всякое на скромные 130-170к. Дохуя всякого микроконтроллерного при этом, что удивительно. То ли популярно, то ли просто народу нет, вот и висит.
Ну ка погодите. Правильно ли я понимаю, что основной смысл корутин превратить cpu io ориентированное приложение в cpu bound, типа меньше переключений контекста для одного потока и быстрее всё работает?
>>2805226 Охуенно же, что 100500 объектов в глобальных переменных создаётся без участия main() рантаймом плюсов. Можно в них вообще всю логику писать, а функцию main() оставить пустой.
>>2805226 А тебя ебет? С хуяли оно должно быть функцией? В ос юникс есть 3 стандартных потока: поток ввода, поток вывода и поток ошибок. Вот для них в плюсах есть 3 стандартных объекта потока: cin, cout и cerr.
>>2748862 (OP) Только что окончил школу, поступил в хороший вуз в топ 5 в рф точно есть. Решил в качестве изучаемого языка на первое время избрать плюсы, т.к. они на первом курсе будут. Начал читать книжку Липпмана из шапки, дошёл до указателей и главный вопрос на данный момент – как и для чего это применять? Наверное, мне стоит задачки какие-то решать по теме, так что вопрос к анонам: как и где лучше закреплять полученные знания о языке? Микро-задачи из книжки всё ещё не дают понимания, в каких ситуациях рассматриваемый предмет нужен.
>>2810102 Пиши свои велосипеды из стандартной библиотеки Разбирайся как там в кишочках все встроенно и почему именно так
Начни с какого нибудь вектора, затем все остальные структуры данных постепенно Там и про итераторы, и про аллокаторы, и про мув семантики узнаешь предостаточно
>>2810162 >не зная зачем и как Зная вообще-то. Погромистом хочу стать. Теперь вот хочу после питуна освоить низкоуровневый язык, потому что мне это больше импонирует. Цели пойти работать сейчас нету, так что буду ещё года 2 неспешно изучать то, что больше нравится. Так говоришь ещё, будто ты в 18 лет был охуенным вундеркиндом, а я, начав вкат чуть позже, всё просрал. >>2810173 Попробую, сенкс
>>2810162 > Я в твои годы знал половину си А вторую половину выучить не осилил? Опять набегаторы-фантазёры из жс-треда, штоль?
Тут все знают, что Си на 98.5% учится ну максимум за неделю, потому что он прост как палка, остальные полтора процента это продвинутые фичи, которые узнаёшь во время непосредственно написания своего и чтения чужого кода.
>>2810412 Вкатунишка, тут все кроме тебя знают что когда кто то говорит что знает язык нейм имеют ввиду как самый минимум его стандартную либу. В случае си тот чел наверное имел ввиду еще и posix с тех самых пор как юникс это ниша сишной параши. Потому что кукарекать я знаю такой то язык программирования и при этом без иронии иметь ввиду ключевые слова и синтаксический сахар могут разве что малолетние пердкисы с курсов
Шарящий анон, расскажи мне плез, вот я вкатываюсь в такую тему как DSP, так как музыкант и очень хочицца поваять собственные VST плагинчики, есть у меня пару особых аналоговнет идеек которых думаю за несколько лет реализую, хотя бы просто лично для себя в мпервую очередь, для своих делов музыкальных. Ну так как у нас на территории РФ сфера музыкального софтостроя практически нулевая, куда я потом смогу со своими знаниями и опытом в частоности в DSP вкатиться, в каких сферах нужны люди со сзнанием цифровой обработки сигналов по мимо музыкальной у нас в стране, как я смогу монетизировать в будущем свои знания и опыт? Буду ли я пригоден на рынке труда в этой сфере в наших палестинах?
>>2811538 Будешь востребован в нии и на заводах за соротыгу, сотыга потолок. Возможно сейчас самый простой вкат это что-то связанное с военкой (наверное и только кстати) и там возможно даже платят чуть получше. Но сам понимаешь почему так и куда твой труд пойдет дальше
Думаю будут точно так же пахнуть как и те деньги что у меня сейчас есть на счету, дисплеем телефона, когда приложения банка открываешь, смотришь на цифры и нюхаешь, точно так же кста пахнут как и телефон вообще без запущенных приложений
>>2813394 Ну если ты рассуждаешь с эгоистичных позиций мол тебе похуй, то рассуди что это начало и конец твоей недолгой карьеры, тебя даже в рашке будут отменять, не говоря о том что в зарубежную контору с этой строчкой резюме ты не устроишься примерно никогда
>>2815025 Классы и есть объекты, это ты путаешь. ООП называется потому что это Объектно=Классо Ориентированное Программирование. А твои созданные в риалтайме объекты это совсем другое, просто то же самое слово используется, вот ты и запутался.
>>2805396 Сишник-скуфидон, ты? Я понимаю, что для программирования микроконтроллеров твоя прога может быть нечитаемым шедевром хакинга. Но в серьезных проектах код должен быть понятным и поддерживаемым.
Как принято обрабатывать ошибки в конструкторе? Допустим, создается объект, например, обертка над шейдером. Я конструктору передаю адрес файла шейдера. Файл может быть не найден, в шейдере может быть ошибка, могут быть не найдены атрибуты, юниформы и пр. И нельзя исключениями пользоваться. Но я же из конструктора не могу код ошибки вернуть. Как тогда, хранить в объекте шейдера флаг, успешно ли он создался? Или создать отдельную функцию create_shader, которая все ресурсы загрузит, обработает, и если все ок, то передаст уже в конструктор корректные данные. А если я потом наследовать буду, получается надо писать еще параллельную иерархию функций create_... ?
>>2816352 - кидать эксепшен. - принимать в коструктор аргумент с ссылкой/указателем на то, куда записывать статус успеха или ошибки. - писать пустой конструктор и отдельно метод init(), который надо явно вызвать сразу после создания объекта.
>>2817127 Ну ты спрашиваешь что тебе изучать выбирая между графическим движком и IDE. В целом лучше начать с IDE, в блокноте код набирать будет неудобно.
Как выучить Boost ASIO? Вроде понятна работа сокетов и прочие фундаментальные вещи, но выстраивать архитектуру клиент-сервера вообще не могут. Вся эта асинхронщина, обработчики событий и сообщений - сложно для меня. Как во всем этом разобраться, что читать? Моя цель - создание ботнета на boost asio.
>>2817365 Поковыряйся как кутя работает, там в разы проще изначально подобное писать. А так и сам ковырял асио, но сам ничего сложного на ней не напишу.
>>2816352 Создай поле в классе, в котором будет храниться ожидаемый и текущий статусы шейдера и коды/текст ошибок. Шейдер загружен, шейдер скомпилирован и т.д. В конструкторе такие штуки лучше не делать, там вообще желательно только поля инициализировать и все.
>>2817054 >Что мне изучать, OpenGl или QT Creator ? Если у тебя так стоит вопрос, то Qt. Трехмерную графику ты скорее всего не потянешь по интеллектуальным показателям.
>>2816248 Неплохой пример, не ожидал от тебя. Вообще про контроллеры полгостью согласен, но ты все равно не прав. Читаемый код не имеет ничего общего с тем говном выше.
>>2817054 Бля нахуй тебе это надо брат? Ну ты че не пацан чтоли? Иди лучше с телочками в падики позависай, пивандоса пососи, в общем не занимайся ерундой всякой
>>2817365 Что там тебе понятно? Куда ты лезешь блять чукча с продленки? Тебе не в асио разбираться надо а учебник для дошкольников почитать, где расскажут как в твоем альбоме для рисования начертить диаграммы. Ботнет на асио у него цель ору нахуй, а страничку вконтакте ты уже взломал?
>>2817942 Бля нахуй тебе это надо, сестра? Ну ты че не телочка чтоли? Иди лучше с пацанами в падики позависай, пивандоса пососи, в общем не занимайся ерундой всякой
При попытке подключить библиотеку GLFW в vscode на ubuntu, выдает ошибку о том что lglfw3dll.a несовместим. Этот файл я беру из glfw32WIN. Когда же беру файл из glfw64WIN происходит ошибка компиляции. Что бы это значило ?
>>2821939 >Предлагают скомпилировать репозиторий из github :/ делов на пару минут, если ты конечно норм билд систему юзаешь (например симейк) git modules оч удобно можно юзать
>>2821925 > ubuntu В apt разве не должен валяться пакет glfw/glfw3?
Надо написать программу которая по строке в utf 8 проверит, что пароль подходит под требования: от 6 до 20 символов, есть спецсимволы. Еще бы потом уметь этот пароль захешировать. Будут ли проблемы из за кодировки? Вроде в юникоде один символ может не 1 байт занимать, поэтому даже обычный size уже не будет работать
Пацаны, кто-нибудь в Касперского собеседовался? Пригласили на техническое интервью (одно из), будут вызнавать глубины знаний C++. А я как бэ на Qt 5 лет и формы шлёпаю, и бекенд делаю.
Вот теперь думаю, начать освежать всякую поебень по крестам (понятия не имею, что могут спросить, сказал хрюше, что из описания вакансий вообще нихуя не понять, получил ответ, мол, это потому, что у нас проектов много и команд, на любой скилл так сказать), которая мне нахуй в текущей работе не упала или же забить хер.
>>2823866 >В qt разве "глубины" С++ не применяются ? Хуй пойми. Непонятно, что вообще может быть "глубоким знанием С++". Если занюхивание всех пуков, выдаваемых комитетом по стандартизации, то я такой ебалой не страдаю, мне работу надо работать. Когда вижу что-то, что можно применить в своих проектах, применяю.
Конкретно у меня на стороне сервера работа с сеткой (общение со всякими устройствами), БДшкой и предоставление данных подключающимся клиентам. Никаких глубин C++ в этом нет. Была ещё многопоточность, но больше из-за умозрительных выводов. В какой-то момент подумал и выкинул нахуй, только БДшку пришлось подкрутить, чтобы шевелилась побыстрее.
Сап плюсаны, шарперам сочувствую. Поясните, если не впадлу, в чём я не прав: можно кидать std::exception, а можно возвращать через std::variant и получать через get_if<exception>, по бенчмарку с квикбенча показывает, что чем больше шанс прокинутого эксепшена, тем variant профитнее по производительности. Какие подводные его использовать в таких целях inb4 переизобрёл std::expected?
Как в cmakelist.txt указать что некий подкаталог содержит заголовки для включения через #include <>? target_include_directories делает доступным включение через обычные кавычки.
PS Скачал вспомогательную либу с гитхаба (которая тоже на CMake) и хочу её поместить в подкаталог своего CMake проекта. А эта либа обращается к своим частям через инклуды с угловыми скобками.
>>2824743 Мелкософт может для std такое допускает в качестве помощи, но в целом не одно и тоже. Я точно помню когда в студии на с++ писал, всякие левые либы инклудили через угловые скобки в опциях (или в настройках решения) указывали свлку этих либ. А через кавычки он ищет по дефолту из текущего каталога или по абсолютному пути.
Хочу использовать эту хуйню https://github.com/monero-ecosystem/monero-cpp#using-this-library-in-your-project Я так понимаю, что просто прописать инклуды не прокатит, потому что там какие то зависимости есть. тогда я пошел по, как показалось, более простому пути. По инструкции сборки либы. Сделал все как надо, но у меня падает сборка на этапе линковки monero-project. Ругается на boost filesystem unresolved ... Че делать? У меня если че установлен libboost-all-dev
Почему opengl такой сложный? Что бы нарисовать одну простую фигуру нужно очень много кода, и вершини и шейдеры и VBO/VAO, связать все вместе и так далее...
>>2825391 > Почему opengl такой сложный Опенгл очень простой и всю самую сложную часть работы делает за тебя. Поэтому считается за JS в мире графики и сосёт у вулкана и прочих дайректиксов. > Что бы нарисовать одну простую фигуру нужно очень много кода Посмотри сколько кода нужно для того, чтобы вывести треугольник на вулкане, приятно удивишься. И сколько там всего надо знать тоже на досуге почитай.
>>2826061 IP- адресов в общем случае может быть несколько, по одному на каждый сетевой адаптер. Хочешь слушать запросы только через один конкретный адаптер - указываешь его IP. Хочешь слушать только локалхост - указываешь localhost или 127.0.0.1. Хочешь слушать сразу все адаптеры - указываешь 0.0.0.0, обычно делают как раз так.
>>2813524 > то рассуди что это начало и конец твоей недолгой карьеры, тебя даже в рашке будут отменять, не говоря о том что в зарубежную контору с этой строчкой резюме ты не устроишься примерно никогда Ебало ученых из Третьего Рейха и Японии представили, когда им на западе красную дорожку постелили после окончания второй дедовой? Я просто охуеваю в каком вы идеалистическом манямирке живете. Если тот анон станет топ 1 в своей сфере и его труды убьют миллионы человек, то он станет одним из самых ценных кадров в мире.
>>2826449 Тупорылые старые свиньи зачем вы мне пишете этот бред? Ты лысый скуф живёшь всю свою жизнь в НИИ в пидорахе какая там тебе разница что там на мировом рынке? Бтв, да, байтослесарь == учёный, ебало представляете, откуда у тебя столько гонору обезьяна клавиатурная? А мир живет уже давно не так как ты себе в своем селе нафантазировал, ну что перед свиньёй бисер метать, знающие люди все понимают, а те кто нет - тем и не нужно
>>2826592 Потому что плюсовики не умеют в апи Ну вот кому нахуй в голову смогло придти, что пик 2 лучше пик 1?
Прибавь к этому плюсовую магию, которую чтобы понять нужно самостоятельно идти смотреть кишочки Ну и самое главное что нет документации, офф доки не используют биндинги, соответственно часто возникают проблему как сделать простую вещь
>>2823988 Специально для тупых в танке: исключения должны кидаться только в исключительных случаях. Нет смысла делать бенчмарки с выбросами исключений, потому что не важно, как долго будет обрабатываться это исключение. Важно, как быстро будет работать наиболее частый случай, когда все операции проходят без ошибок и исключений.
>>2828283 >Важно, как быстро будет работать наиболее частый случай, когда все операции проходят без ошибок и исключений. Как раз таки исключения тут и срут Добро пожаловать во взрослый мир, ЗЕРО КОСТ это миф
Допустим всё что я хочу сделать, это взять из swapchain картинку, получить на cpu к ней доступ и самолично изменить пиксели на этом изображении, затем эту картинку отправить сразу на отрисовку в экран
И я вот не совсем понимаю, нужен ли мне в таком случае вобще pipeline? Могу ли я как то без него сказать вулкану: вот данные для image валяются, на экран их покажи
зачем? хочу написать софтварный рейтрейсер простой. Знаю что есть всякие sdl и так далее которые позволяют это же сделать, но я хочу попробовать с помощью вулкана такое провернуть
>>2829930 Хотя знаешь, я поспешил с отаетом, потому что идея кажется мне бредом. Я рейтрейсер писал на вулкане, и рпботает нормально, а на цпу в 2023... ну это шляпа. Возможно есть какой тот маневр, посмотри сэмплы нвидии что то про совмещение вк/куда/опежл, мб поможет.
>>2830024 >идея кажется мне бредом так оно и есть, чисто в учебных целях всё пишу просто не хотелось всё в файлик писать, думал может что то похожее на реал тайм даже получится raytracer in one weekend
Друзья помогайте, всю голову уже збил, решения оптимально найти не могу. В линуксе собираю с -wl, -rpath, ./ и либы ищутся начиная с текущей директории. Как ьакое же в мсвц провернуть?
>>2831574 Если внешний интерфейс либы написан на C, можешь собирать другой проект чем угодно. Но если он на плюсах, тогда не то что компилятор должен быть тот же - версия компилятора должна быть такая же.
Вот я не понимаю, а как пишут большие приложения? Я когда в вузике учился, у нас каждая лаба на 4 компиляторах запускалась, да еще с разными флагами. Суммарно там штук 15-20 разных сборок получатлось и каждая из них должна была 0 предупреждений выдать. В большом продукте это же нереально сделать. Это придется каждую либу по несколько раз компилить. И если у меня на линуксе gcc по дефолту все собирает, то я на clang кроме лабы ничего не напишу, потому что либы нельзя иначе использовать.... Пииздец
>>2831588 И мне интересно как на новые стандарты переезжают. Ладно, если код хороший, то надо просто пару суток все пересобирать. А если че то вырезали в новой версии? Все? Навсегда на старом компиляторе надо сидеть?
>>2831588 Пишут огромные портянки препроцессорных условий с костылями для самых распространённых компиляторов и такие же портянки в скриптах сборки. Пиздец, да, а куда деваться? >>2831599 Просто переписывают код так, чтобы не использовать вырезанные фичи + фиксят там, где сломалось. Если слишком сложно, копипастят прямо в проект исходники прошлых версий стандартной библиотеки.
>>2831614 Если я правильно помню, то abi это про то как искать линкеру функции из разных неймспейсов, хедеров и прочего. Это же не должно влиять на какие то фишки компилятора, не должно никому мешать. Так почему давно так не сделали?
>>2831614 Только посмотри на этих пидорасов. Я скорее поверю в то, что они думают о том, как бы ещё затраллить программистов на C++, чем о решении насущных проблем с ABI.
JUNIOR CRUD PHP DEVELOPER @ ТРЕБОВАНИЯ: ОСНОВЫ ПХП, ОСНОВЫ ХТМЛ+ЦСС @ ВИЛКА: 50-85к
JUNIOR C++ CV SOFTWARE DEVELOPER @ ТРЕБОВАНИЯ: C++, boost, cmake, вышка, алгосы, openCV, алгоритмы обработки изображений и видеопотока, опыт работы в сфере @ ВИЛКА: 40-50к
>>2831793 >вебкамщица ещё больше обоих вместе взятых получает Ну траллировать меня не надо, а вот по поводу ЗП придется подумать. Наверное, легче пойти на пхп круды и сразу лутать бабки, параллельно развивая свои байтоебские проекты, чем сразу идти в байтоебание и доедать хрен с солью. На западе, смотрю, ситуация с этим немногим лучше.
>>2831904 >Какой-нибудь системщиной или сетевухой. >Просто всегда нравились плюсики. Сейм, но когда я смотрю на вакансии, то просто безнадега накатывает.
Подскажите пожалуйста, какие есть графические библиотеки у которых есть возможность переключения между окнами не создавая при этом новое окно ? Как в libgdx например есть интерфейс Screen.
Как стоит передавать в функции структуры? Допустим у меня есть struct vec3f {float x, y, z;}; Нужно ли его везде принимать по ссылку или можно со спокойным сердцем копировать или это как по производительности может ударить и лучше такого не делать?
Вобщем в такой операторе: vec3f operator+(vec3f, vec3f); Надо по ссылке передавать аргументы или лучше и по значению?
вроде как 12 байт это же достаточно маленькая структура, в том же го советуют не боятся большие структуры по значению передавать, а в плюсах мне сложно получить однозначного ответа
>>2838278 Зависит от функции и от структуры. Определись с тем что у тебя функция делает с этой структурой и как живет сама структура. Если там какой-то большой объект, то разумеется его лучше передавать по ссылке, но в то же время помни, что ссылка может протухнуть, когда ты создал объект в скоупе, вызвал свою функцию, а у объекта вызвался после этого деструктор. Еще не стоит забывать про мув семантики, оптимизации компилятора и прочее прочее. В общем не еби себе пока голову этим, просто пиши код
>>2838419 >Зависит от функции и от структуры. Ну вот структура это вектора, а функция - оператор сложения
> Определись с тем что у тебя функция делает с этой структурой и как живет сама структура. Объект всегда переживает функцию, так что на время жизни пофиг
> Если там какой-то большой объект, то разумеется его лучше передавать по ссылке Ну вот мне бы понять когда обьект уже достаточно большой чтобы его по ссылке везде передавать. Вектор 12 байт еще ладно, а матрицу 3на3 на 36 байтов уже большая структура или нет?
> > Если там какой-то большой объект, то разумеется его лучше передавать по ссылке > Ну вот мне бы понять когда обьект уже достаточно большой чтобы его по ссылке везде передавать. Вектор 12 байт еще ладно, а матрицу 3на3 на 36 байтов уже большая структура или нет? Когда профайлинг показывает что в этом месте у тебя проеб по производительности. Передавай по конст ссылке.
>>2838419 > что ссылка может протухнуть, когда ты создал объект в скоупе, вызвал свою функцию, а у объекта вызвался после этого деструктор Спешите видеть, фантазер итт
>>2748862 (OP) Анон, сейчас смотрю лекции по плюсам Константина Владимирова, и мне чот люто доставляет на плюсах не пишу btw, другой стек, прост когда лень читать что-то более полезное перед сном смотрю лекции/доклады по разным темам. Есть ли подобные лекции на английском? Ну т.е. и чтоб и объяснял годно, и чтоб смехуёчки присутствовали.
>>2839406 Как у тебя ссылка протухнет, когда ты ее передал в функцию? Она никак не может протухнуть, ВЕДЬ ТЫ ССЫЛКУ ПЕРЕДАЛ В ФУНКЦИЮ, у тебя функция в скопе объекта, это аксиома и всем очевидна, а ты просто выдумал ерунду.
>>2840124 Ебло что ты несешь, в этом и поинт этого примера, чтобы вам вкатунцам даунцам пояснить что и такое бывает, но ты видимо запутался как всегда и пытаешься тут нелепо задним проходом догнать
>>2839430 >Есть ли подобные лекции на английском? К сожалению видимо нет, по крайней мере я не смог найти ничего похожего Аналогов его магистерского курса вобще видимо не существует ну или их не записывают для ютабов
Максимум только есть пару докладчиков прикольных, которые на всяких cppcon'ах выступают но их сам Константин Владимиров на лекциях и называет
>>2843105 выдели нетипизированную память new без operator выведи на экран содержимое нетипизированной памяти без каста об успехах отпишись в тред еще и к auto приебался зачем-то
>>2843425 ну любой оператор можно так вызвать типа operator == (a, b) конкретно operator new вызывается при вычислении new expression но можно это сделать и вручную
>>2845978 Вскод это текстовый редактор, он не имеет ничего общего ни с одной из стандартных либ плюсов. > как Зайди на сайт разраба или мейнтейнера той библиотеки которая тебе интересует, скачай сурсы и ознакамливайся.