>>2847448 В смысле, пригождалось? Нет таких задач, которые нельзя было бы решить без метапрограммирования, не считая требований сделать это во время компиляции. Ты думаешь, стоит ли тратить время на его изучение? Если тебе не интересно, то смысла ебать мозги нет. Нужно ли оно в коммерческих проектах? В лучшем случае похуй. Если есть какие-то требования к читаемости кода, то на ревью могут завернуть.
Метапрограммирование на шаблонах отличный способ сократить количество бойлерплейта без потери производительности и заодно решить некоторые проблем заранее, на этапе компиляции. Но кому оно нахуй надо.
Есть пару вопросов к тем, кто в плюсах хорошо шарит. 1. Почему мув-конструктор не должен бросать исключение, чтобы объект мог муватся при реаллокации вектора? Что мешает в случает исключения мувнуть все обратно? Копирование более сложная операция, но на случай исключения в копирующем конструкторе, в векторе все возвращается в первоначальное состояние, давая строгую гарантию. Вот и говорят например, что auto_ptr не мог работать с контейнерами, потому что умел только перемещаться, а почему он, а не я? 2. Говорят еще, что auto_ptr не различается обычное удаление и удаление с []. И тут я завис, а что мешало просто сделать частичную специализацию auto_ptr<T[]>?
>>2847970 Если у тебя при муве объекта вылетело исключение - ну это уже совсем пиздец. Мув задуман как абсолютно лёгкий и прозрачный механизм передачи владения, если ты хочешь/можешь бросить оттуда исключение - ты делаешь что то не так.
>>2847970 >Говорят еще, что auto_ptr не различается обычное удаление и удаление с []. И тут я завис, а что мешало просто сделать частичную специализацию auto_ptr<T[]>?
Почти дочитал книжку Праты, решая все примеры и отвечая на все вопросы в конце главы. Сейчас остановился на итераторах и уже задумываюсь, что стоит изучить дальше? Как я понял, мне нужно знать паттерны или хотя бы как это работает, пытался почитать про это вскользь, но не разобрался даже с синглтоном и не понял зачем он нужен. Посоветуйте пожалуйста, какую литературу стоит изучать после Праты?
>>2849668 >что стоит изучить дальше? Бля ну какая у тебя конечная цель? Что ты хочешь сделать? Электроникой заниматься - тогда изучай электронику. Ты понимаешь что добрые 95% вакансий на С++ это тупо программирование микроконтроллеров, написание драйверов к железякам. Оставшиеся 5% - это QT и высокочастотная торговля. Окей возможно ещё чуть-чуть игры. Если ты не знаешь шину MCU, GPIO, SPI, I2C, то можешь свои паттерны себе в жопу засунуть. Ты программист С++ и не шаришь в электронике, тогда ты нахуй не нужен.
>>2849691 Собсна, пока уже год как вкатился в микроконтроллеры, но на чистый Си. Хз, откуда у тебя 95% это контроллеры, но база по контроллерам уже есть. Но хотелось бы уйти для начала в Qt, либо что-то для железок писать на более высоком уровне, вот примерно такая конечная цель. В какую сторону лучше двигаться?
>>2849700 Не слушай этого далбаеба зеленого. Мк на всяких верилогах с си прогают. Человек занимающийся этим имеет звание инженер, скорее всего схемотехник, скорее всего он вертел на хую все паттерны и делает как деды в универе учили. Скорее всего он выдаст тебе таску, что то типа принять данные по такому то интерфейсу, как-нибудь с ними поманипулировать и вернуть, может регулятор какой-то прикрутить. Только какой-нибудь зелёный конч из этого треда может попросить тебя реализовать устройство от начала до конца, от схемы - до десктопного приложения. Тут как минимум три человека нужны, схемотехник, тополог, программист.
Бля чет ООП мне как-то не хватает для написания удобного кода. Или может я какие-то абстракции не использую?
Вот допустим есть какой-то объект времени жизни программы, его шарят несколько других таких же объектов и как-то его используют (ну допустим это сокет), и для того чтобы расшарить этот объект обязательно нужно использовать агрегацию по ссылке, по шаред поинтеру, в конструктор передавать, в хереды классов нужно инклюдить его апишку, прописывать зависимости. И такая иерархия классов может быть огромной, все от друг друга зависят, ссылаются, получается какая-то нереальная лапша.
Из популярных решений наверное в голову приходят сигналы, которые позволяют реализовывать общения между объектами без агрегации. Но это тоже такое, там заводится общая шина, все классы приходится наследовать от какого то кала, макросы, ну просто говно. Еще где-то будет лежать файл который собственно и реализует эту связь между объектами, а это такая же лапша от которой хочется блевануть.
Неужели люди так годноту и не придумали и жрут говно под названием ООП? Потому что у меня дико в заднице чешется объявить все эти объекты просто статиками\синглтонами и пользоваться ими в .cpp, есть сеймы? Какие решения есть, я не верю что мне одному это не нравится
>>2847323 (OP) >Пик 2 Почему в плюсах в названии экспешенов не принято добавлять что это экспепшен или что-то подобное? Непонятно же с первого взгляда. мимо из другого языка
Анончик, помогите советом, плиз значитса, чтобы научиться премудростям погромистским ,я хочу собрать просмотрщик картинок. Как референс того что должно получиться это pureref но со встроенным файловым менеджером. как в общих чертах это делаются на с++? пока что я пришел к тому, что мне нужны библиотеки. компилятором выбрал g++ sdl для отрисовки самих картинок.(просто первое че попалось то и поставил) sdl_image для загрузки разных форматов картинок. нужна какая то библиотека для сканирования диска и построения дерева файлов(кукую взять?) но она должна как отдавать данные для последующей отрисовки.
ну и еще я подумал что мне нужна какаято библиотека с ui wxwidgets, подойдет?
вобщем я сначала хотел рисовать картинки прям средствами sdl
но сейчас думаю что для этого лучше использовать библеотеку типа wxwidgets или нуклеара, тоесть создавать окна с картинками, растягивать их перемещать. и сдл походу просто как прослойка для отрисовки будет.
>>2853545 так я и начал. ну так а че для гуи сишники то используют? я вообще начинаю понимать что тут вообще не все как в остальном мире. вот например почитал что wxwidgets нафиг не нужен. поидее используют qt
другие пишут нахуй кьют пиши сам. третьи пишут писать самому маразм. потос я смотрю видос там чел нахваливает dear imgui. но потом через год пишет свою библиотеку.
ебать нахуй. есть хоть какаято стандартизация тут?
>>2853753 В чем проблема? Стандартный Qt гуй хуевый. Ну то есть он нормальный для стандартных окон со стандартными крутилками вертелками уровня виндовс хрю и гноме2, но для кастомных интерфейсов типа телеги ор не подходит. Qt квик довольно сложный, а еще кривой нахуй какой то. Тем кто умеет в веб (html+js+css) на мой взгляд не стоит мучится если не стоит задача сделать маленькое приложение. Лучше взять электрон нахуевертить там гуй, а все функциональное припиздячить библиотеками и вывести функциями. Так же собственно как в кутеквике, заисключением того что там экмаскрипт (как джаваскрипт только совсем голый без всего) и лютое метопрограммирование. На н пиздец как сложно реализовать то что на хтмл с цсс проблем не вызывает.
>>2853825 Ну там как я сказал экмаскрипт но исполняется он не как js в электроне то есть считай как в браузере через джиткомпилятор+компилятор с весом овер 100мб, а прекомпилируется в какую то хуйню вместе с qml в бинарные moc файлы вроде. Но это не машинный код, я так понимаю а коды для интерпритирования, это связано с тем что метаговно и джаваскрипт это впринципе языки где типы данных подставляются во время исполнения и подставить их заранее нельзя. Но я не вижу проблема так как весит это все 1,5мб, а гуй это не то что должно максимальное колличество нажатий быстро обрабатывать, оно должно просто с приемлемой скоростью отзываться и оно на квике одзывается шустро. Что еще надо
ага понятно. ну я наверное пока на сдле посижу. чето я в нее залип. простая приятная как блиц3д из детства ебать. >>2853916 ну так а как не дрочить то? яж не хуя не знаю.
кароче нашел почти весь нужный мне функционал. попробую все на SDLе сделать. насчет интерфейса пока затык, но мне там немного надо. списки да кнопки я сам поди рилли напишу. интересно да и похуй.
по файловой системе для менеджера походу будет достаточно стандартной библиотеки, я прав?
щас кароче такая ситуевина. мне надо чтобы было много картинок на экране открыто одновременно но как бы в рамке одного прижения но фон самого окна должен быть прозрачный. плюс надо чтобы прозрачная часть приложения не перехватывала фокус.
кароче я решил пока это обойти и тупо спамить новыми окнами.
>>2853432 да нормальная эта хуйня, специально придумана рептилоидами чтобы умных детишек уничтожать типа дрочишь физику-математику в школке, ездишь на олимпиадки до которых дотянешся, потом ебашишь задачки для поступления в бауманку, потом тебя дрочат в вузике типа делают ученого на хуях не верченого, а в 30 лет вешаешься режешь себе вены выходишь в окно то же касается и химии и математики, и соответствующих факультетов мгу ну а сегодня и дрочь на cs добавился
>>2851045 не, челик, ты вкорне не прав и поэтому мучаешься раз это как ты выразился "объект времени жизни программы" то ты делаешь синглетон и тупо его юзаешь везде где надо
забавно что я будучи безработно й хуйней over 10 лет сразу же понял что к чему, хехе зайдя в этот итт тред после годового перерыва
>>2854214 Синглтоны можно, но так себе. Лучше просто на глобалах завести экстернами что нужно. Синглтоны могут в херовой последовательности уничитожаться, а глобалы сам пропишешь.
>>2853432 Три месяца назад проходил какие-то дно задачи для fast-track. Не ебут. Я даже задачи на их собеседовании с подсказками все смог сделать. Решил, постфактум, что мозг свой прямо сейчас на 100% заюзал и лучше уже не будет.
>>2851045 Ты просто юзаешь ООП там где оно не нужно.
У меня например в одной программе vector<class ImageType>
Это базовый картиночный класс абстрактный с методами указывающими на ноль, но от него уже наследуются PngType JpgType и даже помоему архивный тип пришлось добавить в эту систему, у каждого своя реализация методов и все они заталкиваются спокойно в один вектор перечисляются с вызыванием методов.
На си конечно можно реализовать структурой с указателем на функцию:
typedef struct _IMG_T_ image_t;
typedef void (× method) (image_t ×self, int arg0 ...) fn_method_1;
Но это выглядит во первых как говно, во вторых не гарантируется что в метод попадет self указатель этой же структуры и вообще раз уж пишем на си то уж проще свитчом выбирать нужный метод по значению а не таскать в структуре адрес на хуй знает что. Когда на си приходилось писать такой код всегда хотелось просто объявить класс с виртуальными методами, а деструктор записать free(data).
Несмотря на то что это все компилируется в лютое говно с вызовами перевызовами, не всегда программе это по сравнению с джавами пистонами минимальный оверхэд.
>>2854280 Ты не понял о чем я говорю. Я не про оверхед, а про неудобство использования объектной системы в программе, когда классы вынуждены знать друг о друге. Было бы лучше если б ООП в плюсах было полным с реализацией сообщений между объектами, то есть на уровне языка чтобы скрывать под капот всю парашную реализацию. А сейчас абсолютно любой проект на плюсах это лапша так или иначе
>>2851045 >Вот допустим есть... У меня же есть подозрения, что ты просто сложность хуёво контролируешь.
Без конкретных примеров не сказать.
Объект времени жизни программы обычно почти всегда синглтон. Если нет, то либо у тебя что-то странное и/или интересное, или ты накосячил с проектированием и это должен быть именно одиночка.
>>2854478 В чем тут сложность? Есть класс сокета, который засылает данные куда-то. Как ты организуешь в плюсах как эти данные он передает дальше? Либо агрегация либо коллбек. Если программа большая то это неизбежно превращается в адские зависимости. Синглтон это антипаттерн в современном программировании
>>2854485 >Есть класс сокета, который засылает данные куда-то. Как ты организуешь в плюсах как эти данные он передает дальше? >В чем тут сложность? Почему у тебя так много подписчиков этого класса, что это становится проблемой? Почему ты не сделал иерархию, которая разделяет сложность? Single responsibility principle? Или тоже "антипаттерн"?
>>2854506 >Бля чел, о том и речь, "сделаешь синхронизацию", ты че, того чтоли? Если у тебя миллиарды запросов в наносекунду и тебе нужна полная lockless хуйня, то лапша - последнее, о чём ты должен волноваться.
>>2854521 Тащемта да, но у него проблема такого уровня, что до синглтона недалеко.
Представь, что глобальный доступ не нужен. Значит это какой-нить шаред_птр, какой-нить замкнутой иерархии классов.
Почему эта иерархия настолько большая? Почему нет классов прослоек? Если прослойки не нужны, то почему нет полноценного observer, чтобы не следить за передачей ресурса через подписки, вместо ссылок в конструкторе? Почему бы не сделать билдер, который будет собирать новый класс по кусочкам?
>>2854448 Да я понял о чем ты, но я и говорю что это класс задачь где реально не нужно ооп, но его используют просто потому что функциональное, которое бы лучше подошло в ряде задачь не завезли. > Было бы лучше если б ООП в плюсах было полным с реализацией сообщений между объектами, то есть на уровне языка чтобы скрывать под капот всю парашную реализацию. В плюсах нет рантайма, он компилируется в машинный код, как си. ООП плюсов позволяет компилятору точно знать какой метод, к какому типу прикрепленный в каком месте программы вызывать, тогда как поинтер в структуре это сюрприз для предсказателя переходов, а свитчи это лишнее награмождение в коде.
А лапшеговнокод можно встретить на любом языке, даже на си.
>>2855180 Для того чтобы ОС открыла именно твою прогу - в разных системах по разному. Гугли file extension to program. Далее она запустит твою прогу, передав первым аргументом путь к файлу.
не посоны, я кажется допер. тут надо просматривать аргументы main(int argc; char*argv[]). и если туда закинуть файл, то аргументом придет его путь. и вот этот путь использовать для загрузки пикчи.
а линковать взаимосвязь с файлом похоже вручную или через батник при установке.
>>2855199 Ты опиши саму ситуацию, епта. Ничего же не понятно. Выглядит так, будто ты хочешь, чтобы ОС использовала твою программу по-умолчанию для открытия некоторых типов файлов. Чтобы когда ты кликал по файлу, то вызывалась твоя прога и в неё передавался путь/хендлер файла. Правильно понимаю?
>>2855210 >может ты знаешь как заставить винду ассоциировать файлы прямо из с++? Можно более подробно? ЯННП. Ты можешь скомпилить бинарник и указать его в качестве проги по умолчанию самым обычным способом - через системные настройки, либо ПКМ - открыть с помощью. Далее тебе нужно узнать каким образом ОС передаёт информацию о файле проге по умолчанию. В виде пути, либо в виде более сложной структуры. И отталкиваясь от этого уже писать обработчик.
>>2855237 ммм хуй знат мне же не надо свой формат внедрять в систему? но спасибо на будущее , вдруг я ебать свой 3дмакс напишу охохо
ладно кароче. нашел два способа скрыть нахуй консоль.
первый подключил windows.h и там вызвал процедуру ShowWindow(GetConsoleWindow(),SW_HIDE) это я так понимаю винапи чистый пошел. а так как у меня sdl, то поди это нарушит портируемость.
заебенил кароче вместо этого компилятору благ -mwindows да и похуй вроде по красоте все стало работать
>>2855191 Тем что на с++ пишут ос, в том числе микроядерные, а на джаве гоночный робот томми решил собрать мусор от накопившихся объектов проебал поворот и убился об стену.
>>2855336 Тебе надо было брать qt и не ебать мозги, там все есть и встроенный просмотр файлов и выбор при тыке по кнопке. SDL это низкоуровневая библиотека-прослойка между программой и рендером, оно не предназначено для взаимодействи с виндовсапи и линуксовыми де. Оно само по себе, что бы 2d/3d графику в окошке рисовать грубо говоря.
>>2847323 (OP) Сап Анонсы! Как считается хэш сумма файлов? Есть два старых зип архива, которые надо открыть. Знаю что есть хэшкэт, но хочу разобраться в том как это всё работает, на практике. Поэтому подскажите, пожалуйста, как получить хэшсумму ZIP/RAR файла и как сделать генерацию хэш-таблиц для сравнения. Думаю просто сделать открывалку с генератором слов будет всё-же более затратно, в плане времени исполнения. Пробовал на питоне, но там люди жаловались на быстродействие а у меня нихуя не 4090+i9, да и сам питон немного не прижился.
>>2855076 >Алсо я вообще понял что у меня супер херово с динамическим программированием. А по-другому быть и не должно.
Вспомни мне, навскидку и без гугла, прям щас, как только прочитал пост, какие задачи из ежедневной рутины прогера требуют динамического программирования?
Обычно если и есть, то это ебейшая таска на весь спринт, которую нужно вылизать и тестами обмазать, чтобы работала как часы.
>>2855469 Да я не ебу. В целом почти нихуя из того что я задрочу на литкоде мне в прогерской практике не было нужно. Ну исключения - бинарный поиск, префиксные суммы. Мне блять производные чаще нужны. Но в яшку хочется.
>>2855454 >но хочу разобраться в том как это всё работает, на практике >хэшсумму ZIP/RAR файла >как сделать генерацию хэш-таблиц Так тебе шашечки, ехать или суп есть? инб4 суп ешь ложкой
Чтобы в хэш-алгоритмах разобраться, тебе нужно хэш-алгоритмы подучить. Ещё желательно свойства криптографически сильного/стойкого хэша.
Чтобы посчитать на практике хэш-сумму надо юзать либу. Вот так просто. Очень проста эвристика: "Что угодно связанной с криптой, шифрами и теорией чисел -> юзай либу"
Для хэш-таблицы твой хэш может быть очень тупым. Он обычно очень тупой и есть. Там суть не в отсутствии коллизий, возможности нахождения обратного и прочая. Поэтому про хэш-таблицы и говорится, что там доступ за O(1) амортизированное. Потому что тебе может очень крупно не повезти, и ты получишь доступ за O(n).
>>2855471 >нужно хэш-алгоритмы подучить >свойства криптографически сильного/стойкого хэша Не подскажешь уроки или книги? Примерно 1/2 из книг по csec, которые постят в телеге, имеет очень поверхностную информацию. Вот ребята есть WEP и WPA2. WPA2 лучше чем WEP, WEP хуже чем WPA2. Однако даже примеров восстановления ключа из handshake я вам не покажу, потому что потому. Пока что полезная инфа попадается лишь на хабре, вики и стеке. Форумы чуть сложнее найти, но думаю тоже есть.
>надо юзать либу Полагаю, так-же как и в питоне? импорт инклюд, а потом вызываешь класс или функцию и даёшь ей свои данные в работу. Но с точки зрения работы. По идее архиватор пытается открыть один файл, с заданным паролем, или один блок наименьшего размера. А потом уже возвращает True для дешифровки и False для ввода нового пароля, на основа несовпадения хэш суммы. Выходит, нужно лишь попытаться открыть один файл или блок из архива и сохранить целевое значение хэш суммы. А дальше уже можно пытаться в перебор AES 256. Для начала попробую какой-нибудь тестовый txt вытащить. А потом уже за архив можно браться. Верно ли это?
>Потому что тебе может очень крупно не повезти Мне пока известно лишь 2 метода и табличный должен быть чуть-чуть выгодней обычного перебора. Так что ничего удивительного, что что-то может не сработать как планировалось.
>>2855753 >Не подскажешь уроки или книги? Ниет. Меня учили дядечки в универе. Это было давно и неправда.
Остальное жир вообще. Ты смотрел как это работает? Я в душе не ебу, что ты пытаешься сделать и как это работает, но подозреваю, что пытаешься взломать шифрование файла. Скорее всего хешируется весь файл в плейнтексте.
Какой один блок? Какой AES перебором, прастихоспади?
Делаешь какие-то танцы с бубном, какие-то хэш-таблицы.
Ты либо очень тупишь и андерквалифаед для той задачи, что решил сделать, либо уникум ебучий и я просто невдупляю твою гениальность.
Хешировать ты сможешь только весь файл целиком. Если сможешь из готового хэша восстановить хэш для одного блока - мильоны далларов тока так можешь собирать.
Если у тебя AES-256, то перебором ты его будешь ломать 2256 итераций. Если кто-нить не выдумал крутых техник взлома, конечно.
2256 итераций, даже если ты будешь подбирать по квадрилиону ключей в секунду - это 3.67... x 1057 лет. Я подозреваю, что вселенная кончится раньше.
>>2855800 Всё так. Но пока чёт все пишут что AES256 эт прям неприступная крепость и вообще даже Тяньхэ-2 его не потянет. Тем не менее, в 2016 на дваче кто-то разыгрывал BTC кошельки, пароли к которым были как раз в RAR архивах. Тогда знакомый сильно бомбил, что пароль оказался больше 12 символов и перебор стал уже не выгоден, как по времени, так и по энергии. Думаю, будь AES так крепок, никто не стал бы упарываться GPG и делать ключи по 4кб.
>либо андерквалифаед >либо уникум Хочу восстановить 2 фото бывшей, которой уже скорее всего и в живых нет. Буду ли я при этом кем-то или нет - безразлично. Есть задача - пытаюсь найти её решение.
>Если сможешь из готового хэша восстановить хэш для одного блока - мильоны далларов тока так можешь собирать. Я понимаю твой сарказм, но хотя-бы попробую.
>>2855944 >никто не стал бы упарываться GPG и делать ключи по 4кб Погоди, так это же для ассиметричной крипты такие ключи делают. И то, для RSA я вроде так даже сам делал, но для эллиптических кривых там уже меньше ключи.
А, как сказал вот этот мудрец >>2856255, там всё очень не просто с этими новыми симметричными шифрами.
Надежда, рили, только на то, что пароль подберётся.
>Я понимаю твой сарказм, но хотя-бы попробую. И да, для проверки каждого пароля тебе придётся скорее всего фулл расшифровку делать. Или, если это какая-то предсказуемая структура, столько блоков, чтобы понять, попал ты или нет. Но, в любом случае: преобразование парольной фразы в ключ + расшифровка либо фулл, либо нескольких блоков.
Причём с "несколькими блоками" выйдет только если необходимые данные в начале лежат. Или хуй.
Друзья, мне нужно использовать в проекте хедер <curl/curl.h>. Сразу скажу, я на винде, curl у меня поставлен через chocolatey, поэтому в cmake я прописал брать curl'овые потрошки оттуда и получил cannot find -lcurl-x64. Я так и не понял, где и как мне на Винде получить libcurl4-openssl-dev. Мнение?
>>2856625 Мнение - винде надо было выкинуть наследие дос давно и идти по пути макоси. А так страдай, хуй его знает как это на говнокнах чинить. Надо патч до либ прописывать.
>>2856625 Как ты их прописал? Ниче нельзя сказать по твоему описанию. Не ебу что за говно, но наверное твой шоколадный поставил либу + файнд к ней наверняка. Поюзай симейковский дефолт по инклюду зависимостей типо файндпэкэдж
>>2856463 >Надежда, рили, только на то, что пароль подберётся. В архиве всего два файла, так что если как-то оптимизировать процесс его открытия, то можно и перебором решить проблему. Ведь можно за один раз пытаться достать один файл. По идее, проверка не займёт много времени, а С++ будет одним из самых оптимальных вариантов. Всё остальное уже будет зависить от того, на сколько потоков получится разбить перебор и не будет ли проц душить видеокарту.
>Или, если это какая-то предсказуемая структура, столько блоков, чтобы понять, попал ты или нет. Вот это самое интересное. Поскольку известен формат и размер файла внутри, можно примерно прикинуть размер и содержание его заголовка, который уже будет лежать в некоторых границах. Если бы можно было проводить расшифровку только заголовка, то сравнивая с заголовком другого jpeg'а можно было бы очень быстро подобрать ключ, а уже из него пароль. Другое дело, что мне не известно как происходит расшифровка zip, идёт ли она одним длинным потоком или имеет некую цикличность которую могли бы разделять те самые блоки. В меру моего слабого понимания, выглядит это пиздец как интересно и вполне решаемо. Тем более что пароль где-то между 6 и 15 символами. Так что можно убрать все короткие и сэкономить хоть немного времени и энергии.
>>2856463 В догонку к прошлому посту. Дешифровка AES имеет уязвимость в виде связи значений настоящего ключа со скоростью выполнения операции. У меня нет ни осциллографа, ни прочего нужного железа, но может быть можно симулировать выполнение распаковки в VM, которой можно задать маленький параметр clock, по которому уже можно будет прикинуть диапазон значений, получая график быстродействия из самой VM.
Но у меня в прошлый раз не вышло разобраться с VM, когда пробовал освоить дебиан. Хз, есть ли у них функция дебага медленной работы. На них же можно симулировать быстродействие какого-нибудь пентиума 2, возможно получится опуститься и ниже, до какого-нибудь 386го.
Но это мысли в слух. Хз насколько это позволит сузить круг поиска.
>>2856758 Не, ты всё-таки почитай по криптографию, твоя интуиция тебя подводит. По сути, ты предполагаешь, что: а) есть какой-то «неправильный» более быстрый способ расшифровать зашифрованное; б) никто о нём не подумал, а ты найдёшь. По сути, это означает, что шифрование будет взломано. Теперь оцени вероятность случайно взломать AES.
Во-первых, готовые программы для решения твоей задачи давно существуют. Во-вторых, работают они все одинаково: берётся минимальный блок для расшифровки, расшифровывается с первым сгенерированным по какому-то шаблону паролем, проверяется корректность, пароль не подходит. Расшифровывается со вторым сгенерированным паролем — и так до конца. Принципиальной разницы между ними быть не может (если шифрование надёжное), разница только в немного более оптимизированном коде, позволяющем быстрее перебрать простые (короткие, словарные, частично известные) пароли. Если вариантов слишком много, перебор становится бессмысленным, поскольку нет разницы, ждать тысячу лет или две тысячи лет.
Что-то мне подсказывает, что тебя развели мошенники, предлагающие «проверить своего партнёра на измену». Тогда это просто случайные файлы со случайным паролем в архиве, и никто не собирался после получения денег что-то тебе раскрывать.
>>2856922 Ну а почему нет. В пиндосы специально закладку заложили в алгоритм что бы зашифрованные данные читать. Она может быть хитрая изощренная. Intel Me же вскрыли и выяснилось что оно не просто так сидит пердит железо инициализирует а еще сука в сеть ходит даже когда комп выключен. Может дамп памяти снимать и запросто отсылать. А в интелах еще есть аппаратное шифрование aes Вроде как это просто векторные инструкции, но они генерируют конечные ключи, а еще в интеле есть аппаратный генератор случайных чисел. В общем тут вопрос то интересный на самом деле.
>>2856924 > Intel Me же вскрыли и выяснилось что оно не просто так сидит пердит железо инициализирует а еще сука в сеть ходит даже когда комп выключен. Действительно, почему же оно делает то, что в инструкции сказано? Агент, который должен быть активен даже при выключении основной системы, чтобы её можно было удалённо включить обратно, активен при выключенной системе, м-м-м. https://en.wikipedia.org/wiki/Out-of-band_management
ЗаКлАдКа ПиНдОсОв, к сожалению, никак не поможет тебе перебирать пароли, пока ты не знаешь, в чём она состоит.
Не ебу чё вы тут сретесь, но когда встала проблема квантовых компов и начали думать об квантовоустойчивых алгоритмах АНБ сильно продавливали свои алгоритмы, которые были при анализе слабее "общепринятых" и видимо имели в себе доп закладки.
>>2856934 Когда ты такую функцию не заказывал, а она все равно есть и производитель об этом никак не предупреждает и не дает отключить это зонд в жопе, товарищь либерахен. > никак не поможет тебе перебирать пароли Шифрование это не только запароленый архив с лолями.
>>2856939 Ну конечно, этот дурак решил, что я поддерживаю услуги, оказываемые Intel тем, кто попросил сделать именно так. Очень близоруко полагать, что проблема только в том, то тебя, Господина Покупателя, наебали с описанием товара. Надо пошире смотреть на то, в какой позиции пользователи находятся в пищевой цепочке и в чём корни проблемы.
И, всё-таки, надо понимать, о чём говоришь, а не о каких-то случайных числах в процессорах, которые тебе волшебным образом раскроют пароль для архива. Ламерство излечимо.
>>2857113 К тому что все познается в сравнении. По сравнению с си плюсы очень безопасны. Объекты между процедурами можно передать без явного указания поинтера, а елементы вектора или массива перечислить без риска выхода за пределы бай дизайн. Любой метод в плюсах это вызов конкретной функции по имении, а не вызов поинтера из массива, (как часто делают на си). В этом мне кажется и есть главный смысл ооп.
То что нет явного разделения на сейф/ансейф а есть только словестное напутствие страуструпа "быть осторожней", это да, уже не достаточный барьер безопасности по современным меркам.
Но если совсем откровенно то в дедовских книжках читал правило в духе unsafe программа/код может породить safe процесс, а наоборот safe->unsafe() нет, потому что тогда оба прастранства ансейф. Так что до безопасности раста тоже можно доебаться если захотеть.
>>2857251 > хаха полтора часа страуструп пытается доказать что плюсы это безопасный язык > К тому что все познается в сравнении. По сравнению с си плюсы очень безопасны. Ты тупой.
Могу сказать за него: возьми свой дохуя безопасный язык и напиши на нём небезопасную хуету, чтобы падала по сегфолту на каждый чих.
Смог? Смог.
Плюсы отличаются лишь умением, которое нужно иметь, чтобы не отстрелить себе ногу. И за это плюсы дают байтоёбский контроль и скорость. Я считаю, что всё честно.
>>2857387 > Сейчас ты к дискуссии с другим аноном мою реплику приплитаешь Вы два шизойда, научитесь на посты отвечать нормально Зачем вы кому то другому отвечаете в ответ на мой пост, я отгадывать должен что у вас там в голове происходит и кому вы пишите?
Этот хуй либо является веткастартером, либо влез в дискач на стороне веткастартера.
Вот этот пост: >>2857075 Противоположная сторона вот этот пост: >>2857110
Далее всё довольно прозаично. За исключением, наверное, стороны, что решила посрать на С++ в С++ треде не попытавшись не то что привести аргументы, а даже не попытавшись уточнить контекст беседы.
Из-за чего выступают такие охуенные финты, когда постер спрашивает >>2857380 >Ты когда про безопасность говорят что себе в голове представляешь?
Так хули ты влезаешь в дискуссию, даже не представляя что такое "безопасность языка"? Это комбинация ограничений языка и здравомыслия программиста. Именно поэтому можно писать на "безопасных" языках разъёбывая всё к хуям. Именно поэтому можно писать на С++ "безопасно".
Первоначальный клэйм был >>2857075 >Забавно смотреть как на протяжении полтора часа страуструп пытается доказать что плюсы это безопасный язык
>>2857935 Чел всем поебать, ты когда в чужую ветку влезаешь где идет какое то обсуждение с претензиями на аргументы и позицию, обязан отписывать мимо, если нет то ты тупой мудак
>>2857950 >обязан отписывать мимо Тыскозал? Книжка с правилами где? У тебя около поста написано "Аноним". У меня около поста написано "Аноним".
Хочешь уникального экспириенса, когда никто не может влезть в дискуссию? Используй трип-код. Или съеби куда-нибудь ещё, где есть DM'ы, имена, профили, конфочки... нутыпонел.
>>2857953 Тебе тут же в видосике он поясняет, что не станет убирать эту фичу, иначе все ваши охуенные мемори-сейф языки окажутся без языка на котором их рантайм написан.
Зато добавили фичи, юзая которые можно добиться функциональной memory safety.
>>2857955 > что не станет убирать эту фичу Какую фичу? > иначе все ваши охуенные мемори-сейф языки окажутся без языка на котором их рантайм написан. Нет, не окажутся
>>2857952 Да, это я сказал и так кстати люди здесь делают, так что не только я. А если ты мудень тупорылый который отвечает за другого человека то ты просто идешь нахуй и на этом все заканчивается и никакого содержательного диалога не будет ни с тем ни с другим
>>2857959 >А если ты мудень тупорылый ... то ты просто идешь нахуй и на этом все заканчивается и никакого содержательного диалога не будет Я, пожалуй, воспользуюсь советом в более общей форме.
>>2857958 Начинается жир ебаный. Отрастишь мозг - приходи.
>>2857966 Можешь перед "сливом" сразу список пунктов для признания языка "memory-safe" выкатить. А не просто список проблем с памятью, часть который можно решить так, а часть можно эдак. И уж тем более не просто твой уткоязык, который ты облизываешь, будь то раст, жава или ещё какая хуйня.
>>2857965 Да пользуйся чем хочешь, просто нахуя ты тут сидишь пишешь свои кринжовые простыни типо ты тут знаешь что-то и хочешь пояснить если тебе в итоге ебальник обоссывают и ты с мочей сидишь и бессодержательно срешься как в б помойке
>>2857973 >>2857974 Тем не менее тот хуй сверху так и не объяснил свои > конкретные пункты И не определил свою memory safety. Которая не определяется от конкретных пунктов в имплементации языка. Скорее от функциональных возможностей этого языка. Будь то GC или смарт-поинтеры. Поэтому он нихуя сказать и не может, а только огрызается.
>>2857935 Зачем ты зеленому гастроллеру берешься что то разжевывать? Школьник пришел тротлить на авось - Пук. Хрюк. Мнум. вы дебилы повзрослеет книжек почитает придет набросит по нормальному.
>>2856922 >тебя развели мошенники Если только я сам, когда решил закинуть пикчи в закрытый архив. Но тогда и время было другое, был резон. или ты про ту стори с битком?
>готовые программы давно существуют Да, hashcat например. Но у него закрытый код, поэтому даже посмотреть как он устроен не получится. А разобраться всё так-же интересно. По сути, мне нужно лишь повторить кусочек hashcat и может быть - сделать это лучше. Либо найти более оптимальное решение, что тоже может быть.
>>2856924 В алгоритм очень вряд-ли. Проще и выгоднее это делать в железо. Собственно, чем почти все и пользуются. А сделать математическую модель, со скрытыми свойствами - это очень круто. Сомневаюсь что до этого уже дошли.
>>2856940 Кстати. Не знаю, может уже исправили, но вроде года до 2016го в процессорах распределение случайных чисел было вовсе не случайно, из-за чего генераторы делали и продавали в виде отдельных PCI платок. Хз как сейчас, но доля истины в посте того парня была.
>>2858093 О это боль та ещё. Смотри в чужие проекты и смотри как у них сделано. Самая главная проблема СраногоМейка - это find_пукидж и последовательность для crate_lib/exec В остольном все просто.
>>2858311 Симейк не собирает проект же он генерирует мейкскрипт(ы) как ./configure. Только если ./configure это обычный башскрипт к которому надо либо приложить талант в программировании на баше либо еще один генератор autoconf/automake (к которым прилагается еще файл конфигурации, три уровня блять) То cmake он как бы сразу конфигуратор и генератор make скрипта.
А в make если ты когда нибудь пробовал на нем писать, код программы можно подробить на секции:
libxyz.so(): .. build lib
test(): libxyz.so(), ...build test
xyz(): libxyz.so(), ... build program
Чтоб смейк сгенерировал логически правильный мейкскрипт в котором ты можешь собрать все или каждую библиотеку отдельно, надо не наебаться с последовательностью в скрипте и особенно это касается субмодулей.
У мейка и смейка есть альтернатива - ninja и meson, если нет нужды добавлять в проект сторонние библиотеки использующие для сборки cmake, то лучше юзать мезон для проверки / сборки нужных компонентов в mpv используется можешь глянуть как оно там реализовано.
Аноны, как в VS чинить не желание подхватывать хидеры на лету, создаю хидер, прописываю там описание класса, потом создаю для этого хидера cpp файл, начинают в нем писать реализацию класса, указываю в нем инклуд на заголовок всё как надо, ну в подсказках нихера не всплывает ничего после всех :: и прочего, и даже инклуды на всякие std не видет те которые уже включены в заголовки
>>2858489 Или QtCreator в нем хорошо плюсы визуализированы. Например мне нравится что если функция принимает ссылку то переменная в аргументе курсивом выделяется.
Говнина не говнина, ну если вкатываться в плюсы, да еще в купе с какими-то фреймворками типа как JUCE в моем случае, то эту гавнину приходится кушать хочешь не хочешь, даже тупо тянуть чужой код с гитхабов, чтобы у себя его откомпилировать, по изучать, в большинстве случаев он будет в VS проектах
>>2858596 Ну тут ты не прав хотя студия коенчно то еще говно многие норм разрабы и под винду и мсвц симейком собирают. >>2858519 >>2858514 Эти правы, и вскодиум и креатор лучше студии галимой и все профилировщини лучше самому настраивать >>2858610 съеби >>2858621 бро
Я например все пишу под линуксом, потому что это банально удобнее, а потом уже билды под виндой проверяю. и нет я не тот ваш шиз
>>2858773 А что vs-code на винде не популярен? Интересно всегда было как там решен вопрос с отсутствием хидеров libstd из коробки, как там предлагается все вот это доустанавливать.
>>2858896 С чего ты так решил и тем более почему из моего поста? Я на винде собираю с буилд тулз сл.экзе и все необходимое, за вычетом выше упомянутой не нужной студии это в догонку к >>2858596 , на платформе лучше использовать нативный копилятор, как ни крути. Так вот, винда не предполагает что она используется для разработки, хочешь собирать - ставь булд тулз, ну или студию, или мингв/всл всякие, тут уж сам смотри.
>>2858923 А ну то-есть есть билд-ессентиалз от микрософта? Ок тогда. Мне просто было интересно как они выкрутились с VSCode -ом на винде, не уж то на родной операционной системе предлагают mingw скачать (может оно там в расширениях есть)
>>2847323 (OP) У Jetbrains есть годная IDE для С++? Подскажите какая, потому что VS выёбывается лицензией, а телефона чтоб сделать акк у меня сейчас тупо нет. Вообще нет. И взять его неоткуда.
>>2860313 Я из питона перекатываюсь, конкретно с PyCharm. VS выглядел очень приятно и знакомо, но решил послать меня нахуй после 30 дней.
IDE мне нужна для обучения и освоения библиотек. Я бы сказал что PyCharm был идеален, но кажется С++ в него никак не запихнуть и такой-же удобной работы с библиотеками и сборкой там не будет. Или это ошибочное мнение?
>>2860319 > такой-же удобной работы с библиотеками и сборкой там не будет У меня для тебя плохие новости, в плюсах работой с библиотекой иде почти не занимается, придется почти все делать ручками Пакетных менеджеров всего два, conan и vcpkg, оба имеют свои плюсы и минусы пользуются ими все ещё не большинство
>>2860340 > Ладно... А если NetBeans Уж лучше спирать
>>2860343 >спирать А это что? И что насчёт Eclipse? Судя по описанию, надо лишь на 1-2 вечера заебаться настройкой, а потом будет слегка прожорливая, но полнофункциональная IDE.
>>2860350 Блять... Я 4 часа ебался с установкой ебаных компиляторов и получил IDE без менеджера пакетов. Хотя в С++ немного другие способы ввода библиотек в проект, я хуею с того как вы этим пользуетесь. Сука... Посли питоши аж ныть хочется. Как же там всё было удобно. Теперь понятно, почему багфиксы по репортам делают так долго. Пока с какой-нибудь мелкой хуйнёй разберешься, уже и вечер пройти успеет. А как механику или неткод в играх исправлять, так вообще наверно вешалка.
Зато теперь с кудой не будет проблем. АУФ!
Но я всё ещё в ахуе... Даже с ассемблером не было так сложно.
>>2847323 (OP) Почему GCC создаёт такой массив информации в helloworld экзешнике? 3881 строка. При этом сам код на пике справа. IDE Eclipse, C++ , toolchain - GCC, вспомогательно стоит Mingw.
>>2860441 > #include <iostream> Это если что не линковка с библиотекой через хидер (как в си), а включение части stdlib в файл. Плюсы это ооп язык и что бы реализовать наследование как в языках с рантаймом нельзя базовые классы выделить куда то там в отдельный модуль как в glibc, они все добавляются в исходник и компилируются с программой. Для прикладного языка это не проблема, хэловорлд на электроне вообще в себя браузерный движок будет включать и ничего.
>>2860450 >>2860482 Спасибо что объяснили. Но это вроде статический метод включения библиотек, а есть ещё динамический. И вот вроде в нём можно положить либу рядом с exe и она будет вызывать по мере необходимости. Если не проебался гайд смотрел глубоко ночью, то плюсы и минусы есть в обоих методах.
>>2860735 Если смогу вкатиться в опен сорс, мб смогу оформить себе Clion. С другой стороны, если разберусь с Эклипс - в этом не будет необходимости. Тем более если с библиотеками всё равно работать в ручную, по большей части, то и смысла в clion нет.
>>2860899 До линукса ещё не дополз, но уже надо Centos изучать. Но это можно и на OracleVM замутить. Но раз зашла речь, то вопрос такой. Насколько сложно собрать предельно легковесный линукс, но с поддержкой CUDA, для выполнения кода? Просто чтоб заюзать больше ресурса, который раньше мог бы уходить на всякие кнопочки и виджеты бубунты/винды.
>>2861130 Хех. Это так в учебнике Лоспинозо проверяется наличие оператора += у типа в шаблоне. Проблема в том что концепты в С++20 успели видимо синтаксис изменить с тех пор как учебник написан. Теперь requires (T x, U y) { {expression} -> concept } А в книжке requires (T x, U y) { { x += y } -> T }
>>2861143 Да я хочу VPN поднять, а для него вроде проще всего юзать именно centos. Тем более сервак и так будет виртуальный, так что легкость и прожорливость оси имеют значение.
Устанавливаешь минт (или росу если не хочешь gtk оболочку а хочешь lxQt или kde) с оболочкой которая больше всего подходит под комплюктер.
Попсовый, хорошо известный и поддерживаемый дистр с перделками свистелками и красивыми обоями из коробки, чтоб не пердолится и не настраивать.
В минте или росе включаешь в специальной утилитке проприетарные дрова nvidia (чтоб опять не пердолится) находишь где надо этот твой cuda sdk под линупс компиляель с ним программу переключаеешь в tty1 (то есть выключаешь товарища графони и переходишь в сосноль ) запускаешь там свою программу профит.
Как перейти в tty и все остальное сам уже разберешься, главное почему роса или минт потому что они хорошо настроены из коробки при этом в первом случае это 100% пакетная база убунты а во втором нпято близкое к федореному горю, соответственно проблем с установкой куды под убунту или федору проблем не будет.
>>2861254 Ты немного не так понял. Виртуалка для сервака - Centos. Реальная ось на реальном ПК - для работы с CUDA. Конкретно для высвобождения ресурсов. Написать можно на винде, а запустить уже под линуксом. Глядишь чуть-чуть быстродействия смогу получить за счёт легковесной ОС.
>>2861259 Логинишься не в иксы а в tty без оболочки и все, потом обратно. Минималистичная ос тебе не нужна, ты на ней заебелься проприетарные дрова устанавливать и куду свою. Бери стандартные.
Вчера переписывал прогу с питона на плюсы. Что могу сказать? Разницы почти нет. Срезы чуть удобнее substr. Если не хочешь прописывать типы, ебашишь везде auto. Библиотека std::filesystem мне показалась удобнее и гибче аналогичной питоновской. На любом языке код будет выглядеть секретной шифровкой, если не обернуть его в абстракции. Прототипирование не нужно? Единственное преимущество питона, как мне видится, наличие бесконечного количества прикладных библиотек для самых разных высокоуровневых задач. Например, бота в телеграме с нейросетью я скорее всего напишу на питоне, потому что на с++ я толком прикладных библиотек не знаю, кроме ЛОХмана.
>>2847323 (OP) Как правильно искать overlay программы или примеры для c++? Пару лет назад видел у R6S киберкотлеты реалтайм оверлей с температурой и загрузкой CPU/GPU который выглядел как консольная строка вверху экрана, только без самого окна консоли. По сути это должно было быть консольное приложение, но в безрамочном режиме. Как такое написать или нагуглить?
>>2862061 Говорит же развлекался с питоном раньше в одиночестве, решил вот взяться за плюсы. Не набрасывайся а объясни чем плюсовики увлекаются. жирными бабищами с большими отвисшими ООПаями
Нужно ли применять ключевое слово extern для всего содержимого файла ? Нужно ли при определении класса всегда создавать конструктор копирования, деструктор, конструктор перемещения, оператор переобразования и тп. ?
>>2862308 Конструктор и деструктор обезательно, оператор и константы-"геттеры" нет. Экстерн нужен что бы сказать компилятору что у тебя функция/конструктор будет объявлен позже, но пусть все знают что она есть.
Всем привет. Есть вопрос, на который я не смог найти решения. На работе есть температурный котёл, в нём два датчика. Один измеряет температуру корпуса, второй температуру содержимого. Показатели передаются в arduino, с него через монитор порта в компик. Там в простой программе данные выводятся на экран каждую минуту с этих датчиков. Просто в одну строчку через пробел. Интернета на ноуте цеху и не будет, юсб работает только один, и в него уже воткнута ардуина. И есть старый телефон на андроиде. Нужно сделать так, чтобы данные отправлялись смской по мобиле. Я предложил такую структуру: не отключать на экране телефон никогда, оставить открытой прогу с смсками, а этот ноут подключить к мобилке как блютуз клавиатуру. Вопрос: как сделать так, чтобы печатать на клавиатуре ноутбука, а цифры набирались на телефоне? Я пробовал свою блютуз клавиатуру дома подкл, она нормально работает. А вот как ноут превратить в эту зуб-клавиатуру ну могу догнать
>>2862336 >Экстерн нужен что бы extern нужен чтобы сказать что переменная (ее начальное значение) определяется в другом модуле, а там где extern там только декларация переменной. Функции все по уморчанию extern. Чтобы их сделать локальными нужно сделать их static
>>2862361 Т.е от этого зависит какую информацию компилятор оставит для линковщика. Есдли переменная extern, то линковщик будет искать ее в другом объектном модуле, чтобы связать.
>>2862361 Ну как бы не совсем. "Модуль" возникает уже при компиляции объектных файлов, а сам по себе язык не содержит семантики архитектуры приложения, даже препроцессор это по сути не си и не плюсы уже, а extern именно что паттерн языка и говорит он что эта функция - есть:
extern "C" { void foo(); }
Но она будет объявлена после. Это придумано не для модулей, а для того что бы функции например взаимовызывали друг друга без экстерна как ты объявишь иначе?
>>2862447 Не понял тебя. В С++ и так если напишешь сто раз void foo(); void foo(); void foo();
То все нормально соберется. Деклараций функций может быть сколько угодно. Проблема в переменных. Там декларация = определение пока ты extern впереди не написал.
extern "C" в плюсах это вроде только для совместимости с сишным кодом
>>2847323 (OP) Сап крестоносцы, дело такое, сам пишу на java и работаю соответственно spring макакой. На этой неделе уволили с работы, пару дней сижу и вала ебу с выгоранием. Давно хотел что-то новое попробовать, решил взяться за кресты, у меня есть две-три недели исключительного кайфа без ебаной работы. Так вот, пришел к вам с вопросами, в основном они вам наверное тупыми покажутся, ну да похуй
1. В основном на джабе пишут веб говно, особенно ентерпрайзное, у вас так же? Или с++ используется везде и по чуть чуть?
2. Каким веб фреймворком вы пользуетесь на крестах? Нашел вот эти crowcpp.org oatpp.io
3. Что нужно знать джаба макаке перед тем как браться за кресты?
Щитаю уж лучше с вами пообщаться чем читать мусор копирайтеров которые друг у друга пиздят калтент как обезьяны пиздят бананы друг у друга на тайланде
>>2862657 Джава дэбилы со сборщиками мусора умудряются писать код который по памяти течет, какие вам нахуй плюсы брат. Ты вообще куда-то не туда забрел, веб на плюсах действительно странно, иди лучше го какой-нибудь поковыряй или питон. А тебе вообще для чего? Целей своих ты так и не написал
>>2862798 То есть нужно искать либы для Win11 на С++? А есть какие-либо стабильные и популярные либы для работы получения системных параметров? Типа... "Процесс жрущий максимум оперативы/CPU/аптайма диска в данный момент". У меня на 8.1 стояли гаджеты для этого, но на 11й они уже не работают. И там не было контроля над ресурсами относительно процесса. То есть нельзя было глянуть, какая именно программа резко-дерзко решила закрутить твой HDD, пока ты куришь у окна. Хочу решить эту проблему, ещё и с оверлеем.
>>2862480 Ну да, ты прав, это именно что объявление функции вовне, для линковки. И семантика для разруливания указателей на уровне архитектуры есть, например restrict.
>>2862848 Нужно всего лишь помнить что 1) Дефолтный конструктор копирования и оператор присваивания делает буквальное копирование всех свойств, следовательно если у тебя есть указатели внутри твоих данных то они будут также скопированы. У тебя может получится что копия будет содержать указатель на на одни и те же данные что и оригинал. Если общие данные разрушаются в деструкторе оригинала или копии, то копия или оригинал соответственно получают UB. 2) Буквальное копирование может быть затратным. Иногда хватает перемещения вложенных данных из оригинала в копию. Следовательно нужен не дефолтный оператор присваивания перемещения. 3) Если есть наследование. struct B: A {} то при A b = new B; и если деструктор ~A не виртуальный то у b будет вызван деструктор ~A, который может не учитывать свойства из B. Следовательно нужен не дефолтный деструктор. 4) При динамическом выделении ресурсов (в том числе памяти) следует использовать паттерн RAII чтобы не было утечек. Но RAII не избавляет от возможной двойной деаллокации. Соответственно могут быть нужны конструкторы и операторы копирования и перемещения 5) Следует обратить внимание на правило пяти, есть табличка в каких случаях какие дефолтные конструкторы и операторы генерирются. 6) Лучше руководствоваться принципом что явно не разрешено то запрещено. Следовательно в коде лучше явно удалить дефолтные конструкторы и деструкторы если ты их не собираешься использовать.
>>2862884 > graal vm О, это то самое о чем говорили софтовики из мцст, универсальный вм с фирменным джитом для всего. Они тоже делают https://m.youtube.com/watch?v=vw6pZd8wamw но бля почему на это деньги не вяделяют команду не собирают, почему вечно какие то студенты джавы портируют да дяди на энтузиазме за низкую зп.
>>2862778 >А тебе вообще для чего? Целей своих ты так и не написал Да никаких целей нет, говорю же, выгорел, заебала джаба, как вижу эти блятские аннотации с названиями классов на пол экрана аж блевать тянет. Просто хочу посидеть для себя покодить и открыть что-то новое
>>2862697 >>2862778 >На плюсах пишут всё, кроме веба. >веб на плюсах действительно странно Ну раз не пишут то окей, а что вы пишете тогда?
>>2862553 К сети не подключен. Нашёл, что можно использовать hidclient. За ночь научился устанавливать линукс. Сейчас нашёл архив с этой программой, ищу, как компилировать
По какой-то причине переодически сбоит, отрубается USB (высокая частота опроса? слип 3 мс), также после сбоя или иногда использования не выключается винда (толи неверно эмуляция vigem запускается)
Может кто знает в чем может быть причина? Может есть какие идеи? (Сам уже хз куда копать, где найти баг) Проект интересный, с кучей фишек, код не самый красивый, постепенно улучшается, на 1000 строк.
>>2863130 Ну раз появился откати до версии где его не было? Какое решение ты от нас ждешь? Вряд ли тут кто то страдает как и ты такой же хуйней. Можешь еще разработчику написать
>>2863194 > Ну раз появился откати до версии где его не было? В старых нет нужных фишек > Какое решение ты от нас ждешь? Может кому интересно будет поискать > Вряд ли тут кто то страдает как и ты такой же хуйней геймеров среди разработчиков немало, может кому-то будет интересно
>>2863194 > Ну раз появился откати до версии где его не было? В старых нет нужных фишек > Какое решение ты от нас ждешь? Может кому интересно будет поискать > Вряд ли тут кто то страдает как и ты такой же хуйней геймеров среди разработчиков немало, может кому-то будет интересно
>>2862657 3. У ресурса/памяти 1 владелец, владелец живёт, пока он нужен, когда он не -- самой за собой говно: деаллоцируй память/отпусти ресурс. Все остальное -- это причмокивания, а это база
>>2864135 Как я понимаю: Когда функция принимает &&, ей в целом похуй что ты ей дал. Рвал? Отлично. Лвал? Заебись, работаем. Когда функция принимает & или значение, ей приходится создать объект из твоей рвал ссылки и она воспользуется мув конструктором.
>>2864735 Двачую, что там вообще могли написать студенты, причем даже не "вчерашние" студенты как написал чел, а буквально студенты и скорее всего 3 курса
>>2862480 > extern "C" в плюсах это вроде только для совместимости с сишным кодом Это чтобы использовать сишный ABI. Тогда имена функций будут не заманглены, и их можно будет по имени звать из DLL. А через сишный ABI уже можно будет вызывать твои функции из других языков.
>>2865177 Код на С++ это набор объявлений. Некоторые из объявлений могут быть одновременно определениями. Внутри определений могут быть другие объявления, а также выражения. Выражения могут быть только внутри определений. Примеры выражений: x = a + b; ++x; x; Не следует путать int x; и просто x;. Первое - объявление и определение, второе - выражение. У выражения есть тип и есть категория. glvalue (не gvalue как ты написал неправильно) это одна из разновидностей категорий выражения, указывающая на то, что выражение обладает идентичностью и постоянным местом в памяти. rvalue это наоборот что-то временное, сущность у которой можно забрать право владением ресурсом. lvalue - подвид glvalue, у которого можно взять адрес в памяти и еще некоторые другие вещи можно с ними делать. prvalue - это подвид r-value, которые не могут быть полиморфными и обладают еще некоторыми ограничениями. xvalue - это подвид одновременно и gvalue и rvalue, своеобразный гибрид, который имеет идентичность, но в то же время, у которого можно украсть ресурс. Примеры: 10; prvalue x; lvalue x + 10; prvalue x = y; y неявно преобразуется в prvalue, все выражение целиком имеет категорию lvalue "mudak"; lvalue std::move(x); xvalue f(x); prvalue если возврат по значению g(x); lvalue если возврат по ссылке r(x); xvalue если возврат по правой ссылке && Правыми называют национал-социалистические ссылки
>>2865953 Это абстрактная демогогия. Зачем они и для чего их ввели вот в чем вопрос. Что они дают компилятору (если это очередной слой абстракции для реализации статического ооп ) или программисту (помимо запутывания).
>>2866038 Ввели все это, чтобы поддержать семантику перемещения, чтобы увеличить производительность программ и удобство написания кода. С++11, где все это появилось, далек от от классического С++ гораздо больше, чем классический С++ далек от С, можно сказать, что это новый диалект языка, возвышающий его над всякими жабами и шарпами.
>>2866062 > чтобы поддержать семантику перемещения, чтобы увеличить производительность программ и удобство написания кода Так нет никакой семантики же, std:move() можно юзать как угодно пихать куда угодно, при этом реально никуда никто не перемещается потому что на самом деле просто свайпается указатель/аллокатор данных внутри классов (типа как в си всем известный макрос). Либо ничего не свайпается потому что программист не понял сути и тыкает функцию после копирования или перед копированием. r, g, x, pr value вообще ничего не дают ни языку ни программиста ни компилятору, они есть только в голове тех пто их придумал.
>>2866108 Если просто написать std::move(x); действительно ничего не переместится никуда, x скастуется к правой ссылке на x. Если написать y = std::move(x);, то вызовется перемещающий конструктор, и владение ресурсом (если он есть) переместится от x к y.
>>2866108 Глвал пюррвал и Хвал не выдумали, они появились при попытке осознать что можно,а что нельзя мувать. В повседневном использовании тебе вообще поебать на них, это верно. Это инструмент дизайнеров языка.
>>2866038 >Зачем они и для чего их ввели вот в чем вопрос. Для строгости и компактности формулировки правил.
>>2866108 >они есть только в голове тех пто их придумал В некотором смысле да. В релизном конфиге ни у чего в твоем коде не будет такого атрибута, как value category.
Я у себя в шараге работы делаю по C++, и меня как-то Visual Studio заебал так как это чистой воды блоатваре. Решил поставить TDM-GCC но в нём не работает setlocale(LC_ALL, "Rus"). Как-то можно поправить?
>>2866649 > GCC но в нём не работает setlocale(LC_ALL, "Rus"). Как-то можно поправить? В GNU libc такой локали нет, вынь пробку майкрософт из попы и поищи стандарт (скорее всего что-то вроде en-US ru-RU.UTF-8 ja-JP.JIS)
>>2860876 Во-первых, используй std::boolalpha вместо пиздеца, который ты написал. Во-вторых, false выдает из-за несоответствия типов. Оператор += возвращает ссылку на double.
>>2867735 Ты что несешь понимаешь? То у него стиль СИ, то теперь СИ с классами, вращаешь своей жопой прямо в полете.
Где это начинается и заканчивается? Писать надо понятный и хороший код, хороший в категории плюсов производительный и безопасный. А если ты хочешь дрочить, заниматься хуйней, а не программировать то иди хаскель какой-нибудь тыкай, а не энтерпрайз язык
>>2867752 А че там непонятного. У тебя есть шаблоны. Шаблоны в плюсах слишком общие. В них сначала типы подставляются, а потом они компилятся, те работают как препроцессор фактически. Из-за этого: 1. ошибки в шаблонах наркомансие непонятные 2. типизация хромает по сравнению дженериками в том же шарпе, где ты на тип накладываешь ограничения. Ведь если ты внутри дженерика итерируешь, ты должен как-то в шаблоне заявить что тип ирерируемый.Концепты решают ту же проблему что where T: Inteface в шарпе
>>2867752 >Ты что несешь понимаешь? То у него стиль СИ, то теперь СИ с классами, вращаешь своей жопой прямо в полете. Не нужно прикидываться дурачком, ты понимаешь о чем я.
>>2867735 >При том, что нужно писать на новых плюсах, а не на си с классами. Стиль Qt мне кажется гораздо более читаемым и удобным, чем то, что комитетчики толкают в новых плюсах.
>>2867735 Писать надо код, а не инструкции для генератора кода. Если ты не программист, а макака обслуживающая генератор, пиши сразу на питоне, ведь это и есть твоя мечта.
ананасы помогите пожалуйста если кому не лень, есть одна программа удаляющая дубликаты https://github.com/pauldreik/rdfind она при удалении дубликата оставляет самый первый файл и удаляет остальные (из пары файлов 1.txt и 2.txt будет удалён второй, из пары файлов a.txt и z.txt будет удалён второй). как поменять её поведение на обратное? я обычный гречневый кузьмич и ни разу не писал на крестах, поэтому открыв код я вообще ничего не понял. это можно сделать поменяв какую-нибудь одну строчку в коде и перекомпилировав программу?
>>2869547 Нет, я ещё не всё ноги отстрелил. Но учитывая то, что когнитивная нагрузка во время использования плюсов растет экспоненциально, я скоро не смогу писать на современных стандартах.
Пацаны. В общем. Есть ли какой-то пакетный менеджер для C++? Чтобы типа прописал в файлике зависимости. Сделал cpppm install - и все само на нужной машине докачалось в какую-то папочку packets? Ну не может не быть. Не поверю, что в 2023 году - надо все еще возиться с MAKE'ом и руками качать все библиотеки нужные, разбираться че там с чем взаимодействует и прочие вещи делать.
>>2869843 Conan и vcpkg > Чтобы типа прописал в файлике зависимости. Сделал cpppm install К сожалению, ебаться ещё придется
Если пользуешься симейком то самый простой способ - качаешь себе локально пакет - в симейке прописываешь add_subdirectory(...) - добавляешь нужные таргеты куда тебе нужно Делов на минуту
> Ну не может не быть. Не поверю, что в 2023 году - надо все еще возиться с MAKE'ом и руками качать все библиотеки нужные, разбираться че там с чем взаимодействует и прочие вещи делать. Ну так по заветам дедов, пэкедж менеджеры это утерянные технологии
хотя мейком сейчас наверное совсем дедушки пользуются, есть симейк, сезон, премейк и так далее
>>2870118 Так ренжи достаточно простая концепция, как и отображения. Если не особо задумываться как оно там работает. Концепты мой мозг сильнее насилуют. Но я так понял, что везде есть пара сильных челов, что пишут шаблонный код, а остальные смотрят на них как на аутистов и используют эти поделки.
>>2870248 Для понимания простая, а использовать их ебля неимоверная. Именно свои создавать, а не уже существующие. Ну или я не осилил, хотя мне и не особо надо было.
Плюсаны, а это реально у вас так принято код писать, или это алиса с ума сошла? Просто бредовый же какой-то ситль. Вот я в старом C++ коде видел более приятный с f_fieldName. Ну или _fieldName. Или вообще идеальный: fieldName. А тут какое-то непонятное _ в конце.
>>2870338 >Вот я в старом C++ коде видел более приятный с f_fieldName. Ну или _fieldName > А тут какое-то непонятное _ в конце. Сорта говна, в последнее время чаще стали писать m_var
>>2870362 В последнее время? Так писали динозавры когда из иде был только вим.
>>2870338 Лично мне не нравится что такой стиль системщину напоминает. Вот там реально пиздец с их акронимами в три буквы, бесконечными подчеркиваниями и тп. А вообще спалить дауна по код стайлу изи, он не переносит скобку на новую строку
>>2870338 >это реально у вас так принято код писать, или это алиса с ума сошла? Определять методы в теле класса - порочная практика. Годится только для кратких иллюстраций. Вот в частности уже на твоем пикриле приходится домыслы строить из-за того, что суть засрали определениями.
>вообще идеальный: fieldName Ога, идеальный. Тебе придется: а) ебать мозг на выдумывание синонимичных имен для параметров конструктора; б) потом ебать себе мозг, сопоставляя имена параметров с синонимами; в) нельзя иметь метод с именем fieldName.
>какое-то непонятное _ в конце Чисто служебная информация, самое ей и место в конце. Начало слова для человека всегда бол инф нес, ем нец ова. Поэтому чтение кода с префиксами требует больше внимания. Один малюсенький символ в самом неприметном месте. Что можно лучше вообще придумать?
>>2870405 > ебать мозг на выдумывание синонимичных имен для параметров конструктора this->fieldName = fieldName Чи в плюсах так нельзя? Вроде помню что можно было. В вузе-то так и писал.
> потом ебать себе мозг, сопоставляя имена параметров с синонимами Допустим this-> действительно нельзя. Так а в чем проблема, я проинициализировал в конструкторе, дальше - просто использую, че там сопоставщять-то?
> нельзя иметь метод с именем fieldName Это уже вообще странный доеб. Во-первых, потому что раз это метод, он должен состоять из двух слов в любом случае. Глагол+Сущестительное. Это обычная практика. Что делаем и с чем. getAge, setAge. Исключение - ассесторы для булевых значений, там обычно is как префикс. isRunning, isConnected Во-вторых, если это реально валидный доеб. Ну, тогда к языку вопросы, ведь и метод f_field, field_, _field - тоже нельзя будет. Беда-то какая. Надо срочно новый язык, чтобы было как-то так: this->methods->field или как-то так, чтобы можно было мешать имена полей и методов.
> Чисто служебная информация, самое ей и место в конце А мне вот удобнее было бы, чтобы я написал f_ и все поля класса в выпадающем списке увидеть, потом найти то что надо мне.
>>2870498 >раз это метод, он должен состоять из двух слов в любом случае. T age_; // поле T age() const; // гет (подчеркивания в конце нету) void age(T newSize); // сет (подчеркивания в конце нету)
>Это обычная практика. Что делаем и с чем Из контекста итак очевидно, где гет, где сет. Как по мне, писать их явно - лишнее, как и добавлять сюда название класса vector.size(); // пизже, чем vector.getVectorSize(); // зачем тут эта бредовая обстоятельность?
>Во-вторых, если это реально валидный доеб. В части явного написания префиксов гет/сет - вкусовщина.
> ебать мозг на выдумывание синонимичных имен для параметров конструктора >this->fieldName = fieldName Многословно.
>А мне вот удобнее было бы, чтобы я написал f_ и все поля класса в выпадающем списке увидеть, потом найти то что надо мне. А мне вот удобно не потом, а сразу найти, чо надо, а не устраивать всякий раз инвентаризацию всех полей.
>>2870498 >чтобы я написал f_ и все поля класса в выпадающем списке увидеть По-хорошему, все поля запривачены. Не так уж и часто тебе вообще доведется добираться до полей через список.
>>2870498 >в плюсах так нельзя? можно но есть шанс что отвалится жепа - стандартный ответ на любой вопрос в крестах конкретно с this-> может сдохнуть мать если написать/не написать это в конструкторе при особом стечении трехэтажного виртуального наследования и еще какой-то залупы щас не помню
Как вы справляетесь с задачами который требуют мозг включить? Вот вас по сути наняли решить какую-то проблему и оставили один на один, но вы даже не знаете как к ней подступиться, не то что эффективно решить. Что делаете в таких ситуациях?
Бля наверное я тупой и мне не нужно было даже суваться в эти плюсы ебаные? У меня тряска пиздец каждый день что я лоу айкью дебил
>>2870829 Никак. Копипащу куски из ближайших частей проекта, колупаю методом тыка пока не заработает. За два года еще не спалился, но и прогресса тоже нет.
>>2870829 >Вот вас по сути наняли решить какую-то проблему и оставили один на один Все проблемы уже кто-то когда-то решал тем или иным способом. Сиди читай, выискивай, гугли, спрашивай совета в инете.
>>2851045 >и жрут говно под названием ООП А ты думал натянутая на глобус сова, где данные объединены с методами их обработки, и с паттернами с названиями вроде "мост", "фасад", "фабрика" - будет работающей? История развивается стихийно, сделали какую-то всратую хуйню чтобы хоть как-то разделять большой код на модули - продали менеджменту, оно и прижилось. В идеале ты должен владеть всем - и ООП, и ФП, и процедурным стилем, и применять каждый там, гле это требуется. Это я сейчас не про С++ конкретно, это я вообще.
>>2872130 Ну это твоё утверждение, ни на чём не основанное. А по сути ФП хотя бы основано на теории категорий, что есть маетиматика. А ООП на чём? На бытовой реальности, судя по терминологии? Но ведь даже с ней оно не перескается. Ведь стул не содержит в себе конструктор для новых стульев, ни даже сеттера для цвета и веса. А сидеть можно не только на стуле, но и на перилах, анпимер, хотя в них не описали интерфейс Sittable при проектировке. А, например, метод "гулять и веселиться всей компанией" не привязан явно ни к какому конкретному объекту, по крайней мере в мышлении психически здоровых людей, чей разум не осквернен ООП. Ну и так далее. В общем, пиши интуитивно понятный AbstractSIngletonFactoryProxyAdapterBean ИТТ, иначе обосрёшься.
Есть его методы, которым надо только паблик данные (и методы) для своей работы.
Что бы мне написать, такого,... чтобы не было возможности у таких методов лезть в прайват поля и методы этого класса?
То есть я хочу чтобы моя функция, которая принимает первым аргументом объект этого класса и что-то там считает не меняя объект, стала частью этого класса. Но при рефакторинге класса, мне бы не пришлось в неё смотреть, потому что я ТОЧНО ЗНАЮ что она только с паблик работает.
Хочу сделать её методом, для удобной подсветки в IDE, но чтобы не пришлось внезапно случайно её написать заново в третий раз, когда забыл что такая функция существует. Чтобы проще было вкатиться читающему код... и т.п.
>>2872575 > нюфаг начинает программирование с симулятора манагера погонщика рабов Сразу видно прирожденное быдло, все в говноманагеры метят с самого начала.
>>2872864 >А зачем потоки детачить? Там же потом главный поток срёт в пул данными для тестирования. >И мьютексы в плюсах так никто не локает lock_guard? Забыл про них, давно не писал на крестах.
>>2873265 Анон, я тебе скажу как, и вообще это общее решени для большинтся вопросов итт. Берешь качаешь сурсы чего-то крупного из прода, и смотришь как твоя фича-нейм реализована там. Берешь нгинкс и смотришь как у них там пул потоков реализован, ну или тбб какой нибудь.
>>2873413 Третий дебил (я) Мне тоже тяжело ориентироваться в исходниках крупных проектов, и зачастую я либо подключаю cheat engine для трассировки, или вообще запихиваю бинарь в иду, в обоих случаях получая в разы менее громоздкий код. Абстракции и динамические типы -- для пидоров.
>>2873427 Чел ты ..., блять вы даже пост в три строчки прочитать не в состоятии - куда вам на плюсах писать? Привел пример простых целевых либ - нгинкс и интел тбб посмотреть тредпулы - что там сложного? Нет дебичи про стандартные темплейт либы, которые внезапно не иллюстрирую реального решения вышеупомянутой задачи.
>>2873438 СиЕшка также отображает треды и позволяет между ними переключаться. Как правило, меня интересует результат выполнения конкретной ветки кода, и я смотрю её в иде. Если там насрали динамическими вызовами, то приходится трейсить. Зачем мне ещё одна программа для этого?
Сап, программисты! Где-то 4 года назад я заходил к вам в тред и добрый анончик помог мне, хочу попросить вас о помощи снова. Нужно сбилдить Aseprite из сорсов https://github.com/aseprite/aseprite/releases Если кому не впадлу, помогите, пожалуйста, с меня как всегда.
Задача. Дан CRTP-интерфейс, стандарт с++20. Как сделать так, чтобы при попытке передачи в функцию f структур наподобие Fake, где нет своего нужного метода (например sound()), выдавалась ошибка компиляции.
Пробовал создать концепт requires (T x){x.sound();} и даже requires (T x){x.T::sound();} - метод sound() считается принадлежащим типу T, даже если он просто унаследован.
>>2870338 Я с тобой согласен, что без _. Но лучше - field_name. Всё равно, если код не знаешь/не понимаешь и не хочешь этого (особенно если тема кода говно, и проект говно), то никакие подчёркивания не помогут. А если код топчик или просто интересен, и у тебя к нему нет негативного настроя типа ФУУУ ГАВНО, то хоть код на сях вроде ffmpeg'а разберёшь и nginx'а с переопредлёнными handler'ами на каждом шагу
Просто, сука, нормально научитесь именовать. Даже для простых как пробка set/get это будет set_field_name и get_field_name. Уже не говоря про тот случай, если вы функции верблюжьими горбами городите.
>>2870405 >ебать мозг на выдумывание синонимичных имен для параметров конструктора; Если использовать инициализацию, а не в теле конструктора срать, то не будет коллизии имён. А вот сраньё в тело конструктора уже достойно ебли с именами. Потому что ты нихуя не тривиальную вещь делаешь.
>>2876081 Нахуя тебе тело конструктора? Чтобы исключения и говно кидать?
Если там что-то есть - это какая-то логика. Преобразование данных. И это, как минимум, значит что входные параметры конструктора не равнозначны полям, которые инициализируют. Это значит - разные имена.
А я напомню, что ветка начинается с проблемы именования.
Здесь проблемы нет, есть хуёвые "бест практисес" от "гуру индустрии". Стандарт ещё зачем-то приплёл.
>>2876172 Тогда почему в любом коде который я открываю этих сдвигов половина сама кода? В чём смысл сего действия кроме понтов? Также почему прописывают адреса памяти константами? Разве она не должна от одного устройства к другому меняться?
>>2876177 Потому что ты открываешь какой-то эмбедерский код. Сдвиги юзают не только для арифметическмх операций. Например, ими удобно установить нужное значение одного или нескольких битов.
>>2876315 >которая никогда не подведет без всяких если И потом вот эти хуи ещё права на работе качают.
> я синьор-помидор > нет, моя ценнность исходит не из знаний говна видеокодеков, в которые никто кроме меня лезть не хочет, а из уникального НаДёЖнОгО подхода к С++
>>2876415 Потому что деление обязано усекать к 0. -1/2 должно вернуть 0, но знаковый сдвиг (sar) -1 вправо дает -1. Поэтому делить на степень двойки быстрее сдвигом, или объявлять аргумент unsigned.
>>2878252 Есть немного. Пишу на других языках и всё равно пытаюсь не проебать 0.000001% перформанса при написании циклов, а имена переменных, методов и классов придумываю максимально краткие, будто завтра у меня отберут IDE и заставят писать в виме.
>>2878252 >Деформировали ли вам плюсы мозги? Да, определенно.
>Я в том плане как на другие языки смотрите Я в первую очередь говорю про мировоззрение вообще, а не об отношении к другим языкам. Я хоббист с прицелом на геймдев, как таковой необходимости тратить личное время на модные технологии у меня нету.
>как на другие языки смотрите Вообще, смотрю с позиций минимализма, как по отношению к количеству языков в своем арсенале, так и к объему фич языка, которые мне нужны. До крестов я немношк знал Паскаль. В силу синдрома утенка (наверное) вспоминаю о нем с теплотой. Это мое личное мерило "ламповости" языка. Блюпринты из анрил инжайна воспринял с энтузиазмом. Примерно так чувствую, что рано или поздно придется взяться за Питон, т. к. в своих изысканиях часто натыкаюсь на его фичи. Если бы у меня было больше свободного времени, то я бы посмотрел че за https://ru.wikipedia.org/wiki/ДРАКОН
>переходили на другие технологии, Поставил C++ Builder (современный).
А есть у кого пошаговая инструкция как самый простой и понятный conan на винду установить? Я читаю доку, там настоятельно рекомендуют использовать pip. Окей, собираюсь использовать эту срань, но тут они опять настоятельно рекомендуют использовать pip в виртуальной среде, а инструкции как именно нет, хуй его знает, ебитесь сами.
>>2878458 >Окей, собираюсь использовать эту срань, но тут они опять настоятельно рекомендуют использовать pip в виртуальной среде спокойной забиваешь хуй на это
всё что симейк рекомендует делать, тоже будешь выполнять?
Еб твою мать, я целый час пытался собрать этим ебаным g++. Оказывается, чтобы работало -lname, надо что у моей библиотеки было имя libname.so. Охуеть, а нельзя было сразу сказать о таком незначительном факте. Нигде про это не написано, даже чатгпт об этом не вспомнил. И неизвестно сколько бы я с этим ебался, если бы не нашел ответ на рандомном форуме.
>>2879955 >Или люди сразу с пониманием как компилятор работает рождаются? Эм, ну да. Если ты при нажатии на зеленую кнопку в VS не знал изначально, что там в КИШОЧКАХ происходит, то вон из профессии. Тут востребованы только те, кто может байты информации из воздуха генерировать.
>>2879921 Уже есть. > по системам сборки "Смотрите в методичке к первой лабе, как создать и собрать проект в Visual Studio 2005". > системам контроля версий "На семинары носите лабы на флешках, потом скиньте мне их на почту в RAR-архивах".
>>2879921 Ваще да, но нет. Слишком простой курс будет, да и вообще это не академично, потому что это изучение слишком проходящей технологии. Даже языки толком не изучают, обычно стараются преподавать какое-нибудь ооп или алгоритмы на базе каких то языков
Пытаюсь перекатиться с d3d9 на d3d12, но мне потребовался целый день только на то чтобы из кода-туториала отрисовать вместо 1 треугольника 2 (и то, его стало растянуло, и он будто бы зеркально отразился, если судить по цвету углов, но по крайней мере это был прогресс понимания)
Мне потребовалось подключить imgui, чтобы более наглядно видеть, как что меняется от разных параметров, но теперь я потратил целый день И НЕ СМОГ ПОДКЛЮЧИТЬ ИМГУИ. Блять! На девятке это занимает меньше 20 минут!
Не понимаю, что и для чего тут создаётся, что единожды, а что ежекадрово, что для каждого ресурса отдельно, а что общее. И в туториалах об этом комментарии типа > // create the command list with the first allocator hr = device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, commandAllocator[frameIndex], NULL, IID_PPV_ARGS(&commandList));. Спасибо, папаша, но это не объяснило мне, нужно ли создавать эту штуку второй раз для другого содержимого отрисовки и какое значение тут играет индекс кадра, если мы только девайс подготавливаем, и зачем вообще он тут
Есть тут, там, где-нибудь вообще, хоть на китайском, подробный справочник по d3d12 для пятиклассников, чтоб я перестал час за часом проёбывать полурандомно редактируя туториал и наблюдая за изменениями?
да, можно просто дальше идти по урокам, но дальше будет лишь больше кода и я буду лишь больше путаться, нужно изучить механику и хоть немного уметь её менять
>>2879921 Считаю, что в университетах вообще нинужно это ваше айти. Университет - это про фундаментальное, а тренды в айти устаревают прежде, чем успевают появляться.
>>2880134 Еще забыл сказать про пакетные менеджеры. Еще можно добавить лекции по зависимостям и методам их разрешения и оптимизации. >>2880216 В учебном заведении, где готовят специалистов, хорошо бы чтобы учащиеся умели пользоваться современными инструментами, которые программисты реально используют на рабочих местах. >>2880134 Там множество нюансов, ты весь cmake знаешь? Знаешь отличия от qmake? Отличия autotools от GNU make? В чем преимущество cmake перед любым IDE?
>>2880479 >В учебном заведении, где готовят специалистов Это про всякие ремесленные училища. Университет готовит специалистов широкого профиля aka не пришей к пизде рукав и исследователей в фундаментальных областях знания.
>>2880481 >у нас вузы = шарага это вопрос другой В этой стране статус университета присваивается тупо по формальному признаку - количество дисциплин и опять-таки формальному наличию в программе некоторых дисциплин. Этот статус считается наивысшим, университет получает больше финансирования, чем институт или академия.
Отсюда всякие бывшие ж/д институты превратились в университеты и всякие оксюмороны навроде университета спецназа.
https://hh.ru/vacancy/88005428 В этой факансии тебя попросят пройти полиграф и написать анкету. А после этого две недели на приятия решения об оффере. Зато у них всего один крестовик, им нужен еще один. Может для вкатунца это шанс на непыльную работку, не забудьте только приписать в резюме год-полтора опыта. Удаленочка.
https://hh.ru/vacancy/87323548 Здесь надо выполнить тестовое, но для меня оно занимает слишком много времени, потому что с GStreamer я не знаком (но есть хороший туториал на аглийском). И составлено как-то небрежно, написано, что три задания для разных грейдов, но заданий всего два. Плюс надо решение выложить на гитхаб, написать cmake файл и readme как собирать проект, и еще записать танец в тик-токе. Зато hh показывает, что откликов <10, может их вообще нет, может это шанс для отчаявшихся.
>>2881228 >пройти полиграф Лженаучная хуятина. Кроме того, если я их попрошу пройти полиграф, то конец немного предсказуем. Такие отношения - это не про правду, а про монополию на ложь.
>>2881275 Чел, тут и речь быть не может. Очевидно, что компания неадекватная, иначе просто дали бы подписать соглашение о неразглашении вместо унизительного полиграфа.
>>2867738 Это которые от Константина Владимирова (МФТИ)? Там их два, базовый и магистерский, есть ли к ним задачи или лабы какие-то в открытом доступе? Да и вообще, норм ли материал для изучения это? Может проще того же Страуструпа почитать? Или C++ Primer?
>>2882031 > норм ли материал для изучения это? Говно материал. Нихуя не объясняет, сидит лыбится. И вообще его курс как будто для разработчиков компиляторов, узкоспециализированный.
>>2882674 >>2882031 Не знаю, у меня отвращение какое-то от всех этих лекций непонятное. Всегда читал книжки, мануалы, потом комп сидел пердолил, делал вещи интересные для себя. А вот лекции скучно смотреть, но всегда есть какой-то страх внутри, что вдруг упускаю что-то важное. Непонятно в общем. Но если кому-то лекции заходят, то добра вам.
Вообще самый топ, имхо, это вариации системы листочков, то есть получаешь список задач по теме, какую-то краткую теорию. И сидишь решаешь. Потом обсуждаешь один на один это с другим человеком знающим.
>>2882031 >Да и вообще, норм ли материал для изучения это? Магистерский 10\10, но стоит учитывать что он не для новичков То есть изучать плюсы с него плохая идея, для такого лучше посмотри лекции что выше кидал анон
но вот когда захочется узнать побольше о пмр аллокаторах, многопоток, корутины, вывод типов и тд, то магистерские лекции 10\10
>>2883380 Просто залетыши вроде тебя не достаточно разумны. А соевые в комитете тащат в стандарт все говно подряд. Концепцией корутин пользовались десятилетиями, переключение контекста на асме занимает одну станицу и кому надо имли свою реализацию задолго до. Как и с подавляющим большинством всего дерьма из стл.
>>2883634 >спокойно решать бизнес задачи Бизнес не даст тебе жить спокойно. Если он увидит, что ты спокойствуешь, это будет интерпретировано так, что ты зря ешь свой хлеб.
Платина. Я дохуя лет высокоуровневая макака (скрипты, веб, прочее), сколько-то понимаю компуктер саенс. Хочу в минимальный срок проштудировать С++, чтобы комфортнее читать чужой код (уже могу, но все равно затыки бывают). Чтобы без воды и талмудов на 500 страниц. Английский знаю свободно. Какой выбрать порядок для обучения?
>>2883710 Добавлю. Хоть я и хочу в первую очередь читать код, хотелось бы знать про ту самую стрельбу себе в ноги, про которую так часто говорят и как делать правильно. Может есть где-то сборник таких надо и не надо?
>>2883710 Мне такого было достаточно (читал первое издание) для интеграции пачки плюсовых либ разной степени несвежести в шарпопитоны, на которых обычно и пишу. Что-то удавалось почти напрямую впихнуть, для чего-то писал сишные ьиндинги, кое-что портировал.
Не совсем правда понимаю, для чего просто читать чужой плюсовый код, если сам на плюсах ничего не пишешь, но вдруг поможет.
>>2883737 Геймдев, пишу скрипты для 3д игры, но так же могу заглядывать в исходники движка игры, которые на с++, чтобы искать баги или просить новые скриптовые функции.
>>2864019 Потому что функция не обязана перемещать и вообще что-то делать с этим объектом. Но тем не менее аргумент std::string&& - это контракт между вызывающей и принимающей стороной. Для вызывающей он означает, что переданный объект std::string в общем случае после вызова будет в состоянии moved-from, т.е. ты можешь, например, что-то ей присвоить, но читать ее нельзя. Для принимающей он означает, что ты можешь ее переместить. Ключевое слово - "можешь", делать ты этого не обязан, можешь затроллить всех и себя, скопировав ее, или вообще не трогать. Но вызывающая сторона про реализацию не должна знать и обязана предполагать, что строка была перемещена.
>>2864650 Але, универсальные ссылки только в шаблонах или auto.
Ссука, какой пиздец. Мне всего-то лишь надо было собрать одну софтину. Уверен, что у автора всё собирается нормально. И это ещё свежий софт на свежем конпеляторе, как там оно через пару лет собираться будет - никакой пхд не разберётся.
Бросайте это говно и айда к нам в раст, где любое поделие даже 10-летней давности собирается нормально.
>>2885485 А знаешь, помогло. Или не помогло, просто погода на Марсе поменялась и оно и так бы собралось (из wchar_t.hpp удалил). Или вот я собирал wanproxy - сорцам на тот момент было что-то года 3, а уж говна поел при сборке, боже мой.
Я к плюсам подхожу только как юзер написанного на плюсах софта, сам на расте. Можно долго спорить за безопасность, шаблоны и макросы, но вот что тулинг у плюсов ущербный, это однозначно.
C++ programmers in 2004: "you should move on from C to C++, C++ is so much safer, reduces mistakes and is just as performant" C++ programmers in 2023: "what even is safety? let me split hairs for half an hour about safety definitons, moving to a safer and just as performant language is not the solution"
>>2885612 А зачем, если я просто беру чужой исходник и пытаюсь собрать по инструкции? Это хорошо ещё, что у меня буст оказался совместимой версии. На расте тебе кроме cargo build вообще ничего знать не нужно, а на плюсах "ты слишком тупой, чтобы использовать эту софтину, азазаз".
>>2886308 Заведи ишу у чела на Гите, чтоб такие же юзеры не улетали на орбиту. Ну или может чел снизойдёт и поменяет две строки местами) Но ток проверь, что решение действительно работает)
>>2886130 Чего у них так safety все чешется? Сейчас у плюсов вроде ниша, где текущего уровня хватает, если браузеров не считать. Драйвера и ядра пишут на безопасных диалектах сишки с валидациями и анализаторами на каждый чих, с кучей бюрократии в коде (чувак, который в MS DirectX кодил в нулевые, рассказывал, что у них операторы запрещены были, вся арифметика в обертках из функций). А на десктопе как-то пофиг, что прога изредка падает. В HPC все либы задрочены уже до каждой строчки, месяцами крутятся без ошибок нонстоп. Плюс никто уже старый код на новые безопасные фенечки не будет переписывать.
>>2887747 > Чего у них так safety все чешется? Ну трястись все начали когда АНБ прямо сказало что с\с++ юзать не стоит
NSA advises organizations to consider making a strategic shift from programming languages that provide little or no inherent memory protection, such as C/C++, to a memory safe language when possible. Some examples of memory safe languages are C#, Go, Java, Ruby, and Swift.
Ну и ответить на это заявление собственно и нечем, кроме как > just dont write bad code > just use use CoreGuidelines > actually your safe languages are also unsafe so everyone is unsafe
> Сейчас у плюсов вроде ниша, где текущего уровня хватает Ну кроме браузеров есть еще и ОС, есть и различный софт который заводами целыми управляет ну и соответственно уязвимость может тебе от телефона, до целого завода наебнуть
>>2888218 На твой завод и космический кал может прилететь. Это проблема никак не решается, уязвимости будут всегда, просто потому что мир не работает по бумажкам бюрократов и идеальным формулам физиков.
Блять хотел вздремнуть часик в свой выходной но сосед еблан, по-другому не назовешь, включил свой долбеж. Ладно там еще дебильный реп или даже руснявую попсу, но там просто неиронично долбеж дуц дуц дуц на протяжении 10 минут уже, да это реально, хотя я и сам не верю
>>2885453 >в раст, где любое поделие даже 10-летней давности собирается нормально. Как-то неприлично жирно, анон. Я не могу даже код годовалой давности новым компилятором собрать и приходится несколько версий в системе держать. Когда же совсем недавно на Сишке собрал код прямиком из 20-го века. Не без пердолинга, конечно, но собрал.
>>2889510 >Я не могу даже код годовалой давности новым компилятором собрать Самый очевидный вариант, если ты версии зависимостей указал как "*", и после обновления ожидаемо попал. Если у тебя прям вот с твоим кодом проблемы, покажи, интересно. Хотя, тоже, скорее всего, лечится понижением edition.
>собрал код прямиком из 20-го века. Просто сишка, да, старый код худо-бедно норм собирается, а вот с плюсами беда. >Не без пердолинга Ну а как же.
>>2890513 подсказать, как составить очередь, как она вообще тут может работать, знаю только метод enqueue, с помощью которого можно элемент в очередь добавить
>>2890982 Проверка на 7-9 строках никогда не сработаеттесты изолированы друг от друга. И хешмапа несколько раз ремаппится(лог(н)) И зачем хешмапа? Мне кажется что вектор справится, тебе все равно для каждого 0-N нужно значения хранить. Храни их в векторе длиной N.
>>2891116 Не уверен что рефлексия в таком виде вообще нужна. Будет ещё одна используемая парой десятков/сотен человек опция языка. Алсо чёт не увидел, возможна ли кодогенерация с помощью такой штуки.
Как сейчас вкатиться на работу плюсовиком? Какие сферы востребованы? Опыт работы 4 года вебмакакой имеется, на плюсах ещё со школы пишу, кучу разного пробовал, либ 10 точно знаю помимо линукс/винапи. Что доучить к этому и что в резюме писать чтобы сразу офферы в лицо кидали?
>>2891123 >Не уверен что рефлексия в таком виде вообще нужна. Нужна в любом виде. Хоть какая. Все что угодно лучше, чем самописные уродцы на макросах и темплейтной магии.
Кто-нибудь ИТТ клал хуй на математику в период взросления, а потом в ходе "программисткой" деятельности сталкивался с проблемами, вызванными неумением применять математический аппарат, вследствие чего вынуждены были изучать заново математику? Или ИТТ все успешные олимпиадники, у которых одни 5 были по ней? что в школе, что в вузе.
>>2891657 Всю математику с 7 класса. Сейчас вот решил заново начать изучать. А не понимаю конкретно "умных" книжек, где все написано на языке математики(конкретно всякие формулы, дельта, эпсилон, интегралы и тд., так или иначе все научные книги на этой базе строятся)
>>2891640 Я вообще самоучка. К тому же уже и на кладбище начинаю поглядывать. Единственное что в программировании не всегда математика нужна. Если говорить про с++, то в 3д движках, дронах и автопилотах, нужна. А например гонять пакеты по сети, делать базу данных, гуй - не нужна сложнее чем у пятиклассника.
>>2891619 > Во первых Впн. Не вариант, я нищий для платного впн > Во вторых можно собрать из исходников. Это нужно целый день разбираться, мне лень. Какие-то Windows debagging tools достать откуда-то, пиздос. > В третьих КДЕ Что КДЕ? У меня на виртуалке убунта и гном, мне лень еще одну ставить. >>2891755 > с гита билд виндовый скачать Чувак! Ты просто гений. Подскажи где именно билд лежит.
>>2891966 > > Во первых Впн. > Не вариант, я нищий для платного впн Планет ВПН работает как часы > > Во вторых можно собрать из исходников. > Это нужно целый день разбираться, мне лень. Какие-то Windows debagging tools достать откуда-то, пиздос. Ну окей, осилить пару шагов из мануала не твой путь > > В третьих КДЕ > Что КДЕ? У меня на виртуалке убунта и гном, мне лень еще одну ставить. У КДЕ есть собственный форк Qt, лежит на гите. Но его мб тоже собирать надо, не уверен.
>>2892603 >Бегите от этой ссанины на раст На расте все еще хуже будет, потому что растохлебушки либ не пишут, а те что пишут, забрасывают через полгода, а язык на месте не стоит и все очень быстро протухает. Плюс там детерминированная сборка с текущими тулзами в принципе невозможна.
>>2891246 >>2891433 Дописывайте: 1) Опыт работы на плюсах от пары лет (или олимпиадок в школе/шараге) 2) Проекты с чем-то выокопроизводительным или низкоуровневым
Без этого галеры будут ссать на лицо, если речь не о государственных НИИХУЯ. Да, рынок труда на плюсах куда более тухлый, чем на джаве.
Спрошу тут Заметил что в Debian 12 у меня отвалился clang. Не видит стандартных инклюдов типа <algorithm> В прошлый раз я такое фиксил обновив gcc, т.к. он использует их либы. Теперь чет непонятно что делать, так как clang-16 is already the newest version (1:16.0.6~++20230919124242+7cbf1a259152-1~exp1~20230919124333.105). libstdc++-12-dev is already the newest version (12.2.0-14). gcc-13 is already the newest version (13.2.0-4). >clang -v Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
>>2892758 "Это из серии невкусно - приготовь сам". Не, не, я просто поплеваться пришёл.
>>2892964 >Зависимостей много? Не то, что много, а то, как они хуёво организованы. В расте у тебя всё лежит в Cargo.toml, который част проекта. А тут привязка к гиту.
>>2892985 >язык на месте не стоит да >и все очень быстро протухает нет. Для этого есть edition, которых уже 3: 2015, 2018, 2021. И последний конпелятор собирает их все. Вот, я собрал игру из 2018 без особых проблем. https://github.com/DarinM223/mold2d Ещё могут протухать эксперементальные фичи, которые решили не включать в конпелятор, то да, но их случайно не используешь
>>2893501 >Для этого есть edition, которых уже 3: 2015, 2018, 2021. И последний конпелятор собирает их все. И либы из 2015 можно без геммороя использовать в 2021?
>>2893815 1. На расте у тебя есть Cargo.toml , в котором указаны зависимости с человечески приписанными версиями (хотя, гит тоже можно). Сам твой проект - хоть на svn, хоть на базаре. А тут привязка к гиту и его модулям. 2. В Cargo же можно прописать опции для зависимостей. В гите такое хуй сделаешь, надо костылить какую-то жуть в CMake. 3. На расте у тебя единый тулчейн, который собирает всё и обновляется простым rustup. А тут привязка к системным компиляторам и auto*-говну. Надо, чтобы твоя система была не слишком новая, но и не слишком старая. Ну, это на никсах, на винде вообще всё через "сбегай - скачай", по папочкам распихай и пути пропиши.
>>2893927 >Прикинь, можно. Сдается мне, ты пиздишь. Эдишены как раз и сделали, потому что у раста нет обратной совместимости между версиями. Фактически это как писать одну прогу на трех разных языках. Теоретически возможно, но на практике вряд ли будет приятно.
>>2893927 > А тут привязка к гиту и его модулям. Ну и? Мне как конечному юзеру все равно откуда он репы качает Мне как разрабу делов на 5 секунд прописать какую версию из гита дергать
> В Cargo же можно прописать опции для зависимостей. Ну так если у них нет опций зависимости, то в чем притенения? > В гите такое хуй сделаешь, надо костылить какую-то жуть в CMake. Несколько опций прописать? Звучит не сложно
создай либу с таким кодом. Если в карго стоит эдишн 2015, то соберётся, иначе - нет. Далее попробуй позвать функцию bar из крейта 2021-эдишн. Всё отработает.
С другой стороны, да, признаю, есть ломающие изменения, которые понижением эдишн не лечатся. О них предупреждают за полгода, но если либа заброшена, то никто, ессно, не пофиксит. Об этом есть целая простыня: https://rust-lang.github.io/rfcs/2834-cargo-report-future-incompat.html вкратце: что попало не выкидывают, только то, что просочилось в релизную ветку по ошибке. Вообще, для такого есть ночные сборки, где фичи тестируются, но иногда вылазит.
>>2894100 >Мне как разрабу делов Ну, смари: я только прописав крейт в импорте уже могу брать оттуда функции. Ide сама подсказывает, что куда прописать, чтобы импортировать. В некоторых случаях, если обращение идёт по имени крейта, она даже сама предлагает добавить зависимость. У вас также?
>>2894136 >Это дибилы одной секты Интересно, что этих шизов так к расту притягивает? Такая же фигня как с хаскелем, лиспом или к примеру арч линуксом и веганами. Почему-то вокруг языка формируется группа ебанашек, которые сами на языке в общем ничего значимого не пишут, но непременно лезут во все дыры и доебывают всех рассказами о том, как у них круто, а все вокруг лохи и не узрели света истины. Почему так происходит, что их притягивает?
>>2894136 >>2894484 Этож /pr, пагни, не когмите тголя Плюсотреды тролят растом, пушо тулинг и мемори сейфти Растотреды тролят сями/плюсами и почему-тошарпогосподо борроучекер сложна Шарпотреды тролят джавой, пушо зп и вакух больше Джаватреды тролят котлином/скалкой и шарпогосподо языковых фич больше Js/ts/php не посещаю, но думаю там тоже хватает тухлого тролинга
class A {}; class B: A {}; class C { vector<shared_ptr<A>> vec; void add(shared_ptr<A> a) { vec.push_back(a); } } C c{}; auto b = make_shared<B>(); c.add(b);
Кто знает есть ли быстрые способы, без ветвления if'ами, получить максимальное число из массива? Хотелось бы сделать свёртку массива в 4 раза с сохранением максимального значения из 4 элементов, как на картинке. Я грежу, может есть какая то битовая хитрость или что то подобное
>>2895585 >А плюсы почему-то не хотят даункастинг сами сделать Потому что так как минимум множественное наследование, и правила для даункаста могут быть самые причудливые. Ну и вообще, такой автокаст если и возможен, наверняка будет иметь такие подводные камни, что правильно кодить с ним, учитывая все тонкости, и Страуструп не сможет.
>>2895618 >правильно кодить с ним, учитывая все тонкости, и Страуструп не сможет А Страуструп вообще что-нибудь нашкодил за свою жизнь, кроме самого языка? Даже библиотеку писал не он.
>>2895786 Если честно то даже сложно сказать, что он язык "накодил". Изначально это вроде просто был транслятор плюсового синтаксиса в си, а потом уже совершенно другие люди над ним работали.
>>2896876 Например? https://en.cppreference.com/w/cpp/compiler_support/20 Вижу тут только единичные промахи. С модулями вот правда полный обосрамс, вместо удобства получилось что то невероятно пердольное, но в этом наверное и смысл был, чтобы с++ бояре не остались без работы и было еще больше кишочек разгребать.
> a = std::move(b) > b все равно вызывает деструктор
Интересное решение, то есть теперь у меня две опции - Запретить мув к хуям - Создать новое состояние у обьекта (дохлый, но почему то еще не умер) и в деструкторе каждый раз проверять не умерли ли мы преждевременно
Дизайн 10\10
Я могу быть уверен что после вызова мув конструктора\оператора деструктор ОБЯЗАТЕЛЬНО вызовется у нового значения? Или тоже есть нюанс?
>>2897469 А что оно такое совпадает с тем что оно должно делать? После мува объект должен быть валиден? У него должны оставаться ресурсы которые ему еще надо будет удалить в деструкторе?
>>2897540 >>2897546 Хотя ладно, это необязательное требование, я думал там есть ограничения на мув конструктора. Вот из стандарта: Unless otherwise specified, all standard library objects that have been moved from are placed in a "valid but unspecified state", meaning the object's class invariants hold (so functions without preconditions, such as the assignment operator, can be safely used on the object after it was moved from). И это правильный подход. В целом и почти единственный, ведь иначе будет почти всегда УБ, а программа с УБ не является программой на С++.
>>2897549 >>2897546 > обьект не невалидный > но если ты его используешь то УБ и вся твоя программа невалидная > но компилятор все равно его потрогает в деструкторе, хотя прекрасно видит что не надо
Тем более я вобще никогда не хочу чтобы в деструкторе после мува хоть какой то код выполнялся, кроме проверки на то не смували ли нас случайно
>>2897546 А нахуя мне валидный обьект после мува? Нахуя мне валидный обьект с нарушенным инвариантом?
Может после деструктора обьект тоже валидным будет оставлять?
ну вобщем спасибо за ответы и что даже в стандарт заглянул, не понимаю как такое умные дядьки могли в стандарт добавить
>>2897577 Хозяин барин, доделай флаг moved. Хотя мне все равно кажется, что ты что-то накосячил с мув конструктором, раз у тебя delete стреляет. Можешь показать кусок?
>>2895322 тут ковариантность в том смысле что простые указатели ковариантны: указателю на базовый класс можно присвоить указатель на производный класс, а смартпойнтеры сохраняют это поведение то есть это не есть ковариантность в полном смысле этого слова какая подразумевается в теории типов, но все же что-то хоть и обрезанное, но похожее
>>2897479 Гугли moved-from objects placed in a valid but unspecified state. Суть в том, что часть методов можно вызывать, потому что они не зависят от стейта. Например, is_empty(). Если бы объект был невалидный, то было бы нельзя и такой метод вызвать. Но само состояние не специфицировано. Другие методы могут полагаться уже на состояние, и быть определены только когда is_empty() вернул false. Это аналог неинициализированных переменных. В других языках всегда проверялось бы чтобы каждая была инициализирована, а каждый мув двинул все. Здесь же язык для скорости, и следить за стейтами на программисте.
>>2898444 > Здесь же язык для скорости, и следить за стейтами на программисте. А что если для скорости после мува не вызывать деструктор объекта? Ещё и проверки стейта пропадут лишние
>>2883380 В С++ такое гавно под видом корутин майкрософтовские уроды вроде Гора Нишанова протащили, что блевать хочется. Сравни, например, с корутинами в Луа (конфетка) или даже в Питоне - тривиальная вещь, ничего даже объяснять не надо. В С++-же никто не понимает, и никто не может объяснить.
>>2899357 Блин ты такой умный и потоки не вызывали у тебя даже с первых секунд никаких проблем! жаль только что потоки это причина 95% багов в системе, но а так да, всё легко и просто. А если что не понятно - вон из профессии, быдло!
Давно не был в треде, но тут залетаю на анальной тяге. Увидел я вот этот кал: https://github.com/GaijinEntertainment/DagorEngine И у меня возник вопрос - это серьёзно в рашке крестовики такое пишут или там просто аномалия? Я такой поеботы не видел даже и васянов на линуксе. Такой пиздец, что от одного статического анализатора каждые пять строк варнинги идут по коду, для Wall надо половину кода переписывать нахуй. Про стиль кода я вообще молчу, там даже в одном методе могут использовать NULL и nullptr, от имён глаза вытекают нахуй. Как вообще такое калище можно было в паблик выкладывать? И они ещё позиционируют это как удобный движок. Они серьёзно думают этот высер кто-то будет трогать? Требую пояснений за это у работающих крестовиков. А то уже макаки-питонисты перестают казаться смешными после увиденного. Или это следствие того что крестовикам платят меньше всех?
>>2899486 Но когда память выделяется то через new, то через malloc, а потом в деструкторе memfree, то я даже начинаю теряться на каком ЯП они пишут. Это вообще ни под какие стандарты не подходит. Куча закомменченного кода и todo в комментах к строчкам - а эта хуета точно будет работать нормально? Там вообще с каждого файла можно отдельно орать.
>>2899479 Да допустим и говнокод, на нем вартандер написана, вон даже играет кто-то, а значит деньги зарабатывают - цель выполнена. Ты думаешь в геймдеве клинкод? Во всех играх/движках говнокод, абсолютно везде.
>>2899479 >И у меня возник вопрос - это серьёзно в рашке крестовики такое пишут или там просто аномалия? Это плохой менеджмент, и он не зависит от страны и языка. Когда проект развивается в режиме постоянного аврала, технический долг в миллионы человекочасов, а текучка такая, что средний срок работы специалиста полгода-год, такой результат неизбежен. Они хотя бы сами все пишут, бывает, что проект делает цепочка отсорсеров (например, поляки берут проект и нанимают индусов в два раза дешевле, а те нанимают вообще дешевых филлипинцев) - вот там пиздец гораздо больший.
>>2899957 std::default_random-engine - это псевдоним, за которым чаще всего скрывается mersenne twister engine. А он требует относительно большого буфера.
Алсо, хз как на твоей картинке подсчитан размер, но в debug конфигурации всегда к коду добавляется туева хуча отладочной информации.
>>2899980 >но 5к байт все равно слишком дохуя Википедия пишет, что 2,5к нужно в сферической реализации в вакууме. Порядок величин вобщем-то совпадает.
>без разницы дебаг или релиз А вот хз, у тебя же из библиотеки подтягивается. Дебажный конфиг это фактически отдельная библиотека, другие файлы и они всегда больше весят. Может там оно на гвоздях прибито.
с начала нулевых сидел по большей части ридонли на всех тематических форумах где были разделы с крестами, плюс где то с середины нулевых стал популярен живой журнал, почитывал и там посты, ну а потом имаджборды появились с тематикой, плюс еще в самом начале нулевых даже почитывал архивы фидошных гейтов в nntp накопленные с 90х дак вот, общий вывод печален: полезной информации не было прочитано ни разу, все это было тупо проебыванием моего времени, прямо сказочка о потеряном времени, все это чтение нахуй не нужно как я догадываюсь, сейчас вся эта болтология перекатилась по большей частью в телегу, где продолжается все та же болтовня и информационный мусор
Пишу программу которая парсит выдачи трех разных программ. Так как в обработке выдач этих програм есть одинаковые действия, то написал класс BaseParser, от которого наследуются классы ProgramAParser, ProgramBParser и т.д. В наследующих классах переопределяются некоторые методы через override и добавляются новые поля. Как в этом коде элегантно сделать так, чтобы не пересоздавать log? Или лучше писать отдельные парсеры для кажой программы и не ебать мозга общим классом? int main() { std::string workdir = "../test/";
>>2900916 Вот это работать не будет: BaseParser log = new BaseParser(workdir, file); ProgramA log = dynamic_cast<ProgramA>(log); Ты не понимаешь как ООП в принципе устроено. Даункаст не преобразует объект в наследника из родителя, а просто приводит тип из Parent в Child, если по ссылке на самом деле Child, которого апкастнули в Parent.
>>2901738 Toward the end of the talk, Stroustrup went into more detail. “I’m suggesting that you have module-based controls.” The slide shows how it would work in code. Найс троллит
>>2901786 Не доживёшь. Кругом дроны, люди тонут в коллекторах, новый штамм короны надвигается, а по весне на головы полетят сосули. Но ты можешь попробовать нормальный ЯП уже сейчас: выбери Rust, выбери жизнь в новом ржавом цвете.
>>2902195 Твою мамулю трахал, обоссышь комнатный, ещё ножкой топни хуесосина
мимо проходил, не удержался
>>2902091 Проект кончено классный, но опять таки релилизнится через хзы сколько лет, а пригодным для использования ещё позже станет, а уж работу с ним найти... К тому времени может и карбон уже появится Или вообще все на Свифт перейдут
>>2902226 Val Circle Zig (точнее это замена Си) >>2902252 Безопасность раста сильно переоценена. Да там есть микрописька дополнительная, но там так же куча UB, там unsafe в стандартной либе и так далее. Когда обмазываешь кресты анализаторами и ubsan-ами то разница не так уж велика. Раст это полшажочка вперед, а его выставляют как будто прыжок на 10 метров.
>>2902298 С начал 2019 года пишу на расте, отладчик понадобился единственный раз - когда память потекла из-за бесконечно падающего форка. Собсно, это было в логе, но я не увидел, так как засрал его отладкой.
>Val Его переименовали в хуйло. Всюду политика, как видишь. Посмотри ещё в сторону vale, у него схожий подход к безопасности. >Circle не вчитывался >Zig (точнее это замена Си) та самая безопасность на полшишечки. Типа, у них такая семантика, что безопасный код писать приятнее, но никаких гарантий, что конкретно вот этот код безопасен, нет.
Вообще, много их, но без ледокола в виде крупного проекта от корпорации, ни у одного шансов нет. Скажем, если гугл скажет "Всё, переписываем хром на хуитанейм", то все ринутся её учить. Тот же карбон, например, хоть он и тоже на полшишечки.
>>2903849 Закрываешь в подвале, даёшь задачу на даймонд инхеритенц, через месяц даёшь учебник по хаскелю. Выпускать не стоит, да и они не захотят выходить.
>>2903873 Закрыть в подвале не получится. Нужно, чтобы человек сам понял, что структуры с методами решают абсолютно все задачи и перестал городить шаблонное говно с итераторами, виртуальными функциями и прочей шизой.
>>2903945 Сейчас бы писать 100500 вариантов одной функции для (int, int), (int, float), (int, long), (float, float), (float, short)... Ахахахпххпхпха Попустись шиз
Ебааать. Свидетелей полиморфизма полон тред. Вы в курсе, что самая популярная прошивка для роутеров Linoops написана на C и никто от этого не умер нахуй.
>>2904091 > Свидетелей полиморфизма полон тред. Полиморфизм преспокойно живет и без ООП
> Вы в курсе, что самая популярная прошивка для роутеров Linoops написана на C и никто от этого не умер нахуй. А раньше эти прошивки преспокойно писали на ассемблере, получается С\С++ это не программирование?
>>2904024 То есть ты послал нахуй типо безопасность и взял в руки дубину тайп эрейжур? Даже несмотря на то, что чел сверху хуйню написал, шаблоны могут существовать и без объектов.
>>2904107 >А раньше эти прошивки преспокойно писали на ассемблере, получается С\С++ это не программирование? Не получается. Асм - это тоже пердолинг, как и цпп.Только другого рода.
C++ Primer, Primer Plus или книга от Страуструпа? Хочу выучить плюсы для себя, сделать то что начал ещё в школе начал хуево, с видосиков в ютубе, и в итоге бросил. Сам девопс, все что хотел знать в этой сфере уже вроде выучил, поэтому решил добить таки этот ЯП.
В программировании не совсем новичок, знаю Python и Go потому что надо, плюсы тоже в какой-то степени но только базис ООП, не глубже. Делал лабы на win32 в вузике и курсач на Qt. Хотя по большому счету на этом всё, на Питухоне я только скрипты пишу, Go в реальности так и не понадобился, так что я не сказать что прям программист. Но плюсы я слабо понимаю, стоит зайти и посмотреть на комплексный код как тут же приходит охуевание, да и в этом треде уже вижу много того чего не понимаю совсем. Хочу разобраться с языком поподробнее, чтобы понимать его как можно лучше, а не тупо знать как сделать какие-то базовые вещи. После того как освоюсь с ним, наверное, буду ковырять SDL. Писать игрульки было моей мечтой и пусть профессиональный гейдевом я не стану слава богу то хоть для себя буду что-то тыкать палкой, мб какое-то говноинди когда-то да выйдет.
>>2904415 >C++ Primer, Primer Plus или книга от Страуструпа? если >хочу разобраться с языком поподробнее, чтобы понимать его как можно лучше то Липпман онли. Исчерпывающей книжки по плюсам вообще не существует, забудь про это. С++ - язык непознаваемый, чем раньше ты смиришься с этим фактом, тем лучше будешь в нем ориентироваться. Тем не менее, из переводов на русский, книга Липпмана наиболее полна как по охвату материала, так и по глубине. Из минусов - высосанные из пальца, недоопределенные задачки и примеры, а так же муторный стиль оформления кода. Время на нее ты потратишь больше, но это не будет зря потраченным временем. В дальнейшем ты будешь гораздо меньше тупить, читая другие книжки, статьи, гайды, справочники.
Прату ты прочитаешь быстрее, Прата объясняет хорошо, но рассказывает не про все. Эту простоту ты берешь в долг, тебе все равно придется как-то откуда-то доучивать то, о чем умолчал Прата. Можешь попробовать решать из нее задачки читая Липпмана, они там поприятней.
В книжке "с гусями" Страуструп хочет тебе показать побольше, не особо вдаваясь в объяснения почему так, а не иначе. Книжка с горами на обложке ее вроде как перевели совсем не для вкатунов.
>буду ковырять SDL. Писать игрульки SDL, SFML есть и для питона, и для сисярпа. Тебе нужен для этого C++.
>плюсы я слабо понимаю, стоит зайти и посмотреть на комплексный код как тут же приходит охуевание Вот только ради б-га не надо на это смотреть как на какой-то челлендж для твоего интеллекта. Нету в cpp чего-то действительно интеллектуального, чего нет в других языках. Сложность С++ обусловлена историческим нагромождением инженерных решений, плохо согласованных между собой. Сложность С++ выражается том, что к почти любому правилу прилагается список оговорок, исключений и особых случаев, в разы превосходящий по объему само правило.
>>2904622 >>2904630 Кстати да. Особенно удивило как про сложность рассказал. Давно такого не встречал и полностью согласен. а вообще ето правило работает не только к плюсам, но вообще к большинству всей херни в жизни ящитаю
>>2904091 >Вы в курсе, что самая популярная прошивка для роутеров Linoops написана на C и никто от этого не умер нахуй. Да, а еще я в курсе, что ты никогда не открывал код этого самого Линупса, иначе бы знал, что там код написан в ООП стиле.
есть разбирающиеся в QT? Создал в проекте класс MyGLWidget, наследующийся от OpenGLWidget, определил нужные функции, подключил хедеры и все такое. Потом через "Promote to..." промоутнул нужный объект до этого класса. При компиляции выдает ошибку "myglwidget.h file not found". Этот хедер инклудится в (автоматически сгенерированном) ui_mainwindow.h, который находится хуй пойми где, и видимо поэтому не может найти этот хедер. Как пофиксить?
>>2904091 Строго говоря Линукс написан не на Си, а на Си с GCC Extension, это другой язык с отличающимся от стандарта набором фич. https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html Была где-то паста, но я ее потерял. Бросаются в глаза - массивы нулевой длины, пустые структуры, неконстантные инициализаторы, case ranges (case 1 ... 5), арифметика с *void указателями, вложенные функции, вложенные объявления внутри выражений, typeof, сокращенный тернарный оператор x?:z и тд
>>2905481 Хз что за дичь, лет 5 как с работы ушел не ртсал на кути, но: никогда не используй автогенерацию форм - пиши все руками, так и научишься лучше и лейаут ыорм будет в точности таким как хочешь.
>>2905481 Хуй пойми что ты высрал и что тебе вообще надо, какой еще OpenGLWidget? Зачем тебе это? Вряд ли даже кто на кутах веслает пользуются этим говном. А по описанной тобой проблеме дело скорее в файле сборки, смотри что у тебя там qmake, cmake и пропиши системе сборки где какой хедер лежит
>>2905481 Теневая сборка включена? Если да, то попробую офнуть или наоборот, не помню. Название файла точно совпадает? Он точно существует там где его ищет кумакя? ui_zalupa файлы генерятся в папке билда.
>>2904622 > С++ - язык непознаваемый, чем раньше ты смиришься с этим фактом, тем лучше будешь в нем ориентироваться. Я это и так знаю. Поэтому не написал "понять полностью" а "как можно лучше". > Тем не менее, из переводов на русский Инглиш онли. CS и всё что рядом должно быть на инглише, чтобы не охуеть потом от документации. Ладно там как совсем первую книгу совсем нюфагам, но я псина стрелянная. > книга Липпмана наиболее полна как по охвату материала Я приложил пару скринов из книги Страуструпа. Это в разделе про указатели, тут он затрагивается довольно таки поздно что модет даже хорошо для нешарящих ну совсем. Полистав я понял что он свой хэдер написал и там много чего упростил чтобы не приходилось разжёвывать то чего неокрепший ум пока не поймёт. У Липпмана никаких рисунков нет, только пара примеров. Оценка на глаз, однако структурно Страуструп явно более мягкий подход использует, Липпман просто проходится по фичам без подробных объяснений с примерами. Что как бы звоночек. Ирония в том что ни один не показывает что, так как в конечном счёте память это 0 и 1 в большом количестве, то один и тот же кусок можно прочитать как совершенно разные вещи (int/float или long/double) и не почувствовать подвоха. Ну или я плохо искал. > Время на нее ты потратишь больше, но это не будет зря потраченным временем. Чисто по страницам +/- одинаково же. > SDL, SFML есть и для питона, и для сисярпа. > питон Сам думал что писал? > сисярп В новой его версии можно добавлять поля в интерфейсы. ПОЛЯ. В. ИНТЕРФЕЙСЫ. Лучше бы на Го уже советовал, хотя без ООП там будет сложновато делать что-то прям комплексное я правда не собирался. > Сложность С++ обусловлена историческим нагромождением инженерных решений Как по мне, скорее техническими нюансами работы компьютера. Динамических массивов нету не потому что хуёвое инженерное решение а потому что просить и возвращать память у аллокатора надо руками. Если оставить это дело на автоматику то оптимизаций под конкретно твой юзкейс не жди.
Короче, спасибо за совет, наверное буду пытаться обе чтобы сложить своё мнение по обоим. ХЗ, как у меня это выйдет, но попытка не пытка. Пока "книга с гусями" своими графическими презентациями привлекает больше просто потому что я ХЗ как без этого объяснять что такое память компьютера и почему именно от дауна за монитором зависит как она будет использоваться.
>>2906210 >Интересно на сколько весомы призывы NSA и на что они могут повлиять. Ахуеть как много на что, на то они и АНБ Но понятное дело это америкосов в 99% случаев касается
хотя все еще это происходит в рамках "эдвайся", а не запрета
> плюсобляди все еще разбираются как правильно итерировать коллекции Там они еще и рейнджами умудрились дохуя всего поломать, что еще стандарта 3 чинить придется
>>2906210 >Интересно на сколько весомы призывы NSA Довольно таки сильно. Не забывай что ты живёшь в мире даунов. Для многих плюсы это сложно. Поэтому софт от этих многих на нём будет дырявым калом с утечками и UB на каждом ходу. >промытая манька А что хорошего в том чтобы иметь переменные в интерфейсах? Может тогда ещё глобальные переменные сделать чем-то обычным? Да и вообще, задача передавать что-то куда-то такая частая что нахуя локальные переменные, теперь все переменные объявляются в глобальном скоупе независимо от места.
>>2906324 >А что хорошего в том чтобы иметь переменные в интерфейсах? А что плохого?
> Может тогда ещё глобальные переменные сделать чем-то обычным А для тебя глобальные переменные это что необычное? Да и при чем тут они вобще, какое отношение к интерфейсам и переменным в них имеют?
>>2906380 >А что плохого? Лол, в том что они порождают говнокод. Интерфейсы нужны ради композиции в основном в Шарпе. Знаю потому что у меня препод в шараге по нему был сеньйором. А так это считай то же самое что и абстрактный класс. Нахуя тогда он нужен вообще? Один можно убрать. Не говоря уже о том что при наследовании переменные по-своему работают в Шарпе. >А для тебя глобальные переменные это что необычное? Ну я их избегаю. Представь какой кал будет если все переменные станут глобальными. >Да и при чем тут они вобще Порождают такой же говнокод как и интерфейсы с переменными. Глобальные правда хоть чуть-чуть полезны, использовать можно где реально выгодно.
>>2906695 > Знаю потому что у меня препод в шараге по нему был сеньйором. Понятно, делать так нельзя, потому что злой преподаватель накричит и наругает
>>2906717 Да нет, знаю потому что никто в здравом уме этого использовать не будет. Он говорил что если кто-то начал бы переменные в интерфейсы совать то в его проектах там половина кода поедет по пизде и это заебуться чинить. Ты нормальные контраргументы приводи, не буквоедство уровня двоща.
>>2906695 Ты не думаешь что размышлять такими шаблонами в языке, который предоставляет тебе наибольшее количество контроля как программисту - порочная практика? На этом поле дозволено всё. Да, в шарпах можно прикручивать какую-то идеологию и следования принципам конкретных людей, потому что сам по себе язык коммерчески направленный и заточен под определенные задачи.
А вообще, если ты хочешь привести какие то аргументы, то лучше это делать на примерах конкретных, иначе разговор совсем беспредметен. Я вот не вижу ничего такого в интерфейсной переменной, она может быть сильно связана с классом и наследниками, в чем проблема?
В каком-нибудь си ооп вообще только и основано на переменных, это всё просто средства языка, и да, в плюсах нет понятия интерфейса как категории как в шарпах например
>>2906695 >Лол, в том что они порождают говнокод. Интерфейс с полями и дефолтной реализацией методов - это один из вариантов миксина. Они широко используются в других языках и сами по себе говнокодом не являются, говна с помощью чего угодно навертеть можно.
>>2907146 >Ну расскажи же в чем разница Могу только хуем тебе по губам провести. >Пиздец первокурсники в треде растекаются. Ты сам откуда вылез такой умственно неполноценный? Свободное времечко выдалось посреди школьных каникул?
>>2907181 В Java и C# ты получишь IllegalStateException / InvalidOperationException Правда там есть какие то коллекции, которые делают "снепшот" (наверное ленивую копию) и ты продолжаешь итерировать по старой коллекции В питоне будет RuntimeError или порча коллекции JS судя по всему не упадет, но может скипать элементы или зациклиться В Го, не очень понял, судя по всему надо копировать коллекцию, что будет если менять не знаю. В общем доеб до итераторов в с++ звучит мега странно.
Что делать с констатными полями класса, если я хочу сохранить для объекта мув оператор=? Референсы я научился обходить, с помощью std::reference_wrapper<T>
Если что то это вольная перепись вполне реального кода написанного каким-то дауном на стартапе, я просто попросил шарписта с работы передать суть с минимумом кода. Что тут делает sealed и нахуя вообще что-то подобное писать я не знаю, мне тоже интересно. Факт того что кто-то подобное высрал остаётся фактом.
Как же хорошо когда стартапчик новый и можно легко переходить даже на RC версии фреймворков. И слава богу я девопс и не мне потом разгребать такое.
>>2909034 >Удачи вам работать с этим интерфейсом. Ты в плюсотреде вообще, у нас тут множественное наследование, интерфейсов вообще нет. В итоге, кстати, шарп и джава к похожей модели пришли, потому что это практично.
>>2909201 В более старых шарпах это не было так легко. Ну хотя бы потому что переменные или sealed в интерфейсе кидали ошибку. Новые версии позволяют каком-то дауну просто положить нахуй всё на ровном месте. Да, так можно было сделать и раньше, просто сейчас способов стало больше. И это не понятно опытным шарпистам, так как в отличии от плюсов, шарп не системный язык и выдать возможность написания говнокода за оптимизирующую уловку не выйдет. >>2909221 >Ты в плюсотреде вообще Знаю, просто какой-то додик начал доказывать что шарп идёт в правильном направлении. Сеньор в геймдеве говорил что хуйня, мидлы на бэке говорят что хуйня, зато рандому с двача норм, забавно. >у нас тут множественное наследование, интерфейсов вообще нет Я в курсе. Интересно, в плюсах композицию вообще никак не сделать? Только наследование?
>>2909318 >Сеньор в геймдеве говорил что хуйня, мидлы на бэке говорят что хуйня Потому что у них кругозор - только шарп, они ничего другого не видели, и не понимают, как новую возможность можно использовать, поэтому она их и пугает. А так в скале есть множественное наследование, в окамле есть множественное наследование, в плюсах кроме самого множественного наследования, миксины с CRTP - довольно частая идиома, в скриптовых языках можно вообще любую хрень сделать, и все едят и нахваливают.
>>2909318 >Интересно, в плюсах композицию вообще никак не сделать? Только наследование? В смысле? В плюсах как везде: добавил поле в класс - вот тебе и композиция.
>>2909318 Какая разница что там в шарпах? Речь шла про плюсы. Язык не представляет собой коммерческую поделку для шлепанья, он задизайнен в ответственность программисту, и если ты высрал хуевый код, то это твоя вина.
Да, классно рассуждаешь, бро. Смотри я тоже так могу: авторы и разработчики языка развивают его в нужном им направлении, но вот аутсосным гребцам и гейдевелоперам из жопы мира где не высрали никакой внятной игры это не нравится, давайте ка пиздуйте всё по новой переделывать, не нравится, правда а че им не нравится то я высрать из себя не могу, да и сеньеры ебаные помидоры тоже не могут. Но вот чето не нравится, а стойте - код который они сами же и срут в редактор их не устраивает
>>2909318 >>2909342 Композиция это скорее если у тебя vector<baseobject>. Тогда их можно и на лету добавлять убирать, ну и обрабатывать их каким нибудь range for each.
>>2909318 стандартная библиотека шаблонов вообще то и является примером идеи композиционного программирования, в воспаленной голове создателя библиотеки вы все должны были бы объединять между собой стандартные и собственные операции (алгоритмы и объекты-функции) при помощи предикатов, связывателей, адаптеров, отрицателей, а далее уже применять их по отношению к контейнерам, широко использовались для этого к примеру возможность перегрузки операторов в языке, особенно возможность перегрузки оператора вызова () естественно подобный обскур си-макаки никак не могли уложить в свою головушку и продолжили дружно обходить контейнера в циклах высирая лесенки из ифов
Сап двач, есть функция, принимает двумерный вектор, возвращает новый вектор. Если вместо возврата вектора, просто редачить принятый вектор через указатель в памяти, меньше оперативы жрать будет?
>>2909837 >высирая лесенки из ифов Ну так лесенка из ифов эргономичнее, чем залупа с итераторами из STL, где перед глазами нечитаемая стена из begin(), end().
Доброго времени суток, уважаемым погромистам. Начал вкатываться в cpp и интересует, какую литературу стоит читать. Основываясь на вашем опыте, подскажите пж, чего взять.
>>2910212 твоя функция, прости господи, должна как минимум принимать диапазон выраженный в итераторной паре, а в идеале это должен быть обобщенный алгоритм работающий над любым контейнером, к которому подходит тип примененного итератора пишите на си++ утырки ебаные
>>2910927 вначале К&R потом Страуструп "Язык программирования С++ Специальное издание" (это третье издание, 98 стандарт) хуяришь упражнения в обеих, не хуяришь упражнения - идешь нахуй тех кто будет советовать то что не нужно знать си перед изучением с++ (те как минимум не прочитать с проработкой упражнении К&R) можешь обоссать тех кто будет утверждать что можно сразу начинать пердолить на космическом стандарте с++24 27 или какой там текущий, не читая старых книжек можешь так же обоссать НЕ читай последних книг страуструпа, старик обленился, сидит в своем морган стенли получая лям в год и нихуя не делает, только бухает и попердывает иногда на конференциях ПОТОМ уже читаешь охуительную книгу Майерса 2014 года "Эффективный и современный С++" по сути единственная книга которая может доходчиво сделать хотя бы введение в новые стандарты языка с11 и с14 и не охуевать при этом Заполировать можешь все Вандервудом "Шаблоны с++" второе издание 18 года, ибо без шаблончиков никуда эта поебота теперь везде Но это так, базовый минимум вообще то чтобы просто хотя бы на водичке держаться а не сразу камнем на дно все я кончил
>>2911059 Зис чтобы осознать масштабы проблем >>2904622 Затем прогать. Много прогать. И когда ты на практике повидаешь кучу хуев переходить к книгам выше. Будешь понимать что тебе конкретно нужно и что читать, таргетно.
>>2911054 Мейерс это не учебники по плюсам. Это сборники советов для тех, кто уже знает язык и пишет программы. У тебя должен быть под руками проект, над которым ты работаешь. Прямо по мере чтения Мейерса нужно примерять его советы к своему проекту, иначе у тебя в голове ничего конкретного не отложится кроме имени его собаки.
И вообще, дроч на Мейерса - это тема из нулевых годов, когда ни литературы толком не было, ни гайдов в интернетах. Пишет он доступно, читать приятно. Но когда ты до него созреешь, ты так или иначе уже примерно половину будешь знать из источников вроде хабры, stackooverlow и т. п.
Кроме книжек, пользуйся статическими анализаторами.
Господа помогите и подскажите пожалуйста захотел добавить в проект библиотеку gli через cmake ( https://github.com/g-truc/gli/blob/master/manual.md ) я раньше просто устанавливал библиотеки через консоль и добовлял в команду target_link_libraries() cmake файла названия библиотек и все работало. Как я понял для них есть Find{libName}.cmake, которые это делают. я скачал gli, вызвал cmake, далее build\make install и получил пик1. Зачем мне нужны последние 3 файла и как мне добавить библиотеку в проект не прописывая полный путь к каждому хэдеру библиотеки?
>>2914466 Ну я и хотел в cmake своего проекта добовлять, но я не понимал что прописать туда надо. но немного разобрался что надо было прописать : list(APPEND CMAKE_MODULE_PATH "/usr/local/lib/x86_64-linux-gnu/cmake/gli")
find_package(gli REQUIRED)
то-есть путь к target файлу или find файлу. А предыдущем ответе я как раз спрашивал зачем там на пик1 targets.cmake. Ну я к нему путь и прописал и cmake нашел все файлы
>>2911035 Си вредно читать до Си++, у тебя случится Си головного мозга и ты будешь прибавлять голвые указатели и ехать UB через UB. Си конечно потом можно изучить чтобы знать подводные, но вкатываться с него - испортить себе всю жизнь.
>>2914574 > Си вредно читать до Си++ Самое тупое что я слышал в этом треде Ты про си++ знать не будешь без си А все что сможешь написать это всякие велосипеды на стл, причем даже не будешь знать что там творится внутри, потому что неожиданно окажется что внутри там: > прибавляние голвых указателей и UB через UB
>>2914645 Понимаю, трудная мысль, но ее сам Страуструп преподает и это правильный подход. Стл это не велосипеды, лол, это штатный способ писать на с++, велосипеды это как раз сишники начинают писать нихера не зная. То что творится внутри для начала знать не обязательно, достаточно выполнять контракты стл, детали уже можно выяснить в процессе.
>>2914742 > То что творится внутри для начала знать не обязательно Это имхо очень важная мысль. Изначально ты можешь пользоваться технологией/возможностью как черным ящиком, и погружаться в нее только тогда, когда сам поймёшь что пришло время. Как студент ты должен попробовать максимальное количество кала за минимальное время, чтобы понять от какого тебя меньше всего воротит. Разбираясь в кишках СТЛ или в процессе написания собственного компилятора С ты прекрасно изучишь язык, но надо ли оно тебе пока твоя цель получить после диплома работу? Время - конечный ресурс. Нет никакого стыда в том, чтобы не знать как РЕАЛЬНО устроена хеш мапа, достаточно знать сложности по времени и памяти.
>>2914742 > Понимаю, трудная мысль, но ее сам Страуструп преподает и это правильный подход. А сам Страуструп как учил? Большинство тех кто такое пиздит как язык учили?
> Стл это не велосипеды, лол, это штатный способ писать на с++, То то на их дохуя кто не использует
> То что творится внутри для начала знать не обязательно Ахуенно звучит, зачем с основ учиться В университете обычно так и делают, например матан просто скипают, похуй, потом изучат
>>2914755 > Нет никакого стыда в том, чтобы не знать как РЕАЛЬНО устроена хеш мапа, достаточно знать сложности по времени и памяти. Это не стыд, это необходимость Ты обязан знать как там все устроено чтобы нормально работать с "абстракциями" из стл
Вот иллюстрация того какие манипуляции мне приходится проводить со значениями точек, что бы найти их позиции в пиксельном пространстве. У меня будет рисоваться график, в котором значения по оси X почти что никогда не будут меняться, а вот значения по оси Y, будут меняться много раз в секунду. Так же значения по оси X будут идти в массиве с определённым известным шагом. Как вы можете заметить, в один пиксель изображения попадают множество точек. Следовательно можно придумать такую таблицу, в которой будут храниться индексы элементов массива vectorY которые попадают в конкретный столбец изображения. Это нужно для того что бы патом по этим индексам найти максимум из всех значений Y что попали в столбец изображения.
Вообще в идеале придумать алгоритм, что бы и сразу же заполнял вектор в котором я буду искать максимум, не индексами значений vectorY, а сразу значениями vectorY, среди которых я патом бы нашёл максимум.
Так вот я сюда пришёл за тем что бы вы подсказали как такой алгоритм реализовать, и желательно что бы там не было в циклах if'ов
>>2916700 Раз пиксельное пространстао то это рендер? Отправь координаты из вертексного шейдера в фрагмеетный и сравни с фрагкоордом. Заберешьна цпу через врайтонли буфер. Получишь максисум/минимум в одном такте.
Аноны, пришел к вам за советом. Прогаю на плюсах на работке, но есть такое чувство, что не развиваюсь или развиваюсь медленно. Также, некоторые конструкции совершенно не использую и начинаю их забывать. Подскажите, что можно сделать, чтобы не регрессировать.
Сколько примерно нужно времени чтобы разобраться в исходниках большого проекта (Krita), если с плюсами последний раз работал в вузике? Понятно, что это во многом от меня самого зависит, но в целом, сколько обычно это занимает?
>>2917129 Смотря для чего. На большом проекте можно хоть несколько лет активно пилить какие-то определённые части проекта и так до конца не разобраться в других частях.
>>2915019 >сам Страуструп как учил? У самого молодого Страуструпа тупо не было выбора. У нонешнего умудренного Страуструпа есть опыт преподавания.
>с основ учиться >В университете обычно так и делают, например матан просто скипают, похуй, потом изучат Именно так и делают. На инженерных специальностях никаких основ матана не дают, а знакомят с методами решения типовых задач.
>>2917168 >На инженерных специальностях никаких основ матана не дают Я вас услышал, если кто то еще в треде считает что в универах матан не нужен на ИНЖЕНЕРНЫХ СПЕЦИАЛЬНОСТЯХ, то можете начинать с плюсов сразу, удачи
>Ты обязан знать как там все устроено чтобы нормально работать А если не СТЛ, если в проекте используется десяток сторонних библиотек?
Просто покажи мне такого синьера, который вместо того чтобы включить свеженанятого миддла/юниора в полезную работу, посадит его изучать кишки библиотек.
>>2917169 >матан не нужен на ИНЖЕНЕРНЫХ СПЕЦИАЛЬНОСТЯХ Он не не нужен, а попросту невозможен. Технарям за год впихивают то, что на математических специальностях обстоятельно изучают 5-6 лет.
>ладно, не пиши мне только больше Ладно, буду писать не тебе.
>на собеседованиях Разве что на собеседованиях тебя с твоим же внутренним юношей-максималистом.
>5-6 лет я как понимаю чистый матан изучают, а не какие отдельные его области? 5-6 лет изучают основы того, что технарям дают за один год. Основы технарям просто не влезут в рамках их учебного плана.
>>2917179 Меня на собесе спросили только за: Мьютексы, дедлоки Авто и почему в строке Х будет предупреждение компилятора Сколько раз будет вызвана функция хеширования в строке Х для анордеред мапы. Это уже после прохождения нескольких секций решения задачек с литкода.
>>2917280 Я надеюсь что ты студент нюфаг, а не распиздяй с завода. Отвечаю в надежде на первое.
Раз это рендере забей на цп, лучше сразу берись за графику, опенжл осваивается на изи. Тем более что проверки массивов там работают быстро.
Но в любов случае даже на цпу сразу заводи буфер размерностью как минимум >= макс Х макс У Раз значения есть вот и проверяй их по Х и пиши в соответсвующий У.
>>2918384 Задача самая простая вместить в виджет точки. В зависимости от масштаба по оси X, в виджет может попасть или несколько точек из вектора точек или все. Хотелось бы что бы точки за пределами спектра не участвовали в растеризации. Хотелось бы что бы если в один столбец изображения попадает несколько точек, то выбиралась та точка, у которой по оси Y максимальное значение. Патом эти максимумы соединяются линиями. То что я хочу сделать, я уже реализовал на видео, но это довольно таки кривой и очень не быстрый способ. Дело в том что я пишу под Raspberry Pi 4, а она не очень шустрая, и хочется каждый процент процессорного времени экономить.
>>2915079 В современной разработке это уже не необходимость. Добавлю от себя что это стыд скорее потому что это преподают в любой шараге. Что касается абстракций из стл ты должен представлять что они из себя представляют, конечно, опять же потому что это база любой шараги. А вот насчет незнания реализаций стл - как бы похуй в большинстве случаев что они там понаписали, в тех что не похуй - ты просто идешь и смотришь и делаешь что тебе нужно. А если ты дурачок который знает каждую реализацию стл, то вопрос что ты помимо этого еще знаешь? Потому что мне кажется что есть вещи в которых ты не добрал и потратил ресурсы своей головы впустую. Ты такой ходячий человек справочник вроде вассермана, ходишь чето говоришь, но цена твоим знаниям - на форуме что то высрать
>>2916986 попробуй заняться кодогенерацией используя метапрограммирование на шаблонах, причем двумя подходами - используя методы рекурсивного программирования на старом 98 стандарте, и методы структурного программирования, ставшие доступные в новых стандартах языка если по простому напиши какой нибудь парсер, сначала с использованием библиотек буста, а потом попробуй вручную это как минимум забавно
Как можно отловить событие клика мыши в winapi? Пока только нашел способ с бесконечным циклом и получением состояния левой кнопки, но это пиздец как не эффективно же. Как решают эту проблему в gui фреймворках?
>>2919236 Почему-то проорал с этого. WinApi это удивительная вещь, с помощью которой только так и пишутся вирусы/читы и другие непотребства, чего только с ним сделать нельзя.
Сап, нужна хелпа с CMake, до этого ток под винду билдил .sln Хорошая ли идея, чтобы CMake скачивал сам с помощью FetchContent или ExternalProject и билдить статик либу, чтобы потом юзать в моем проекте? Мне нужно чтобы либа скачалась с репо и скомпилилась, а потом подключилась к проекту, как мне это сделать? То что выдал гугл, хуйню какую то, и работает через раз хуй пойми как. Нужна либа libpqxx и openssl
>>2920361 Плохая, так как ты и сам сказал что работает через раз. Пропиши реквайрментс, и пусть пользователь сам будет ответственнен за разрешение зависимостей. или напиши деплой проекта на нормальном скриптовом языке
>>2920417 Блин, ну скачай все что нужно питоном и собери. Какая разница, пользователю что так придется скачивать СМАКЕ и прочий кал что так придется ставить питон.
>>2920361 Необучаемые блин. Клонируй все нужные репы сторонние себе в репу. И просто адд сабтиректори в своем симейке. Все. Никакие фетчконтенты и прочее питоно не ну ж но
>>2920465 ща памацаю, но как мне потом либу подключить? я не хочу чтобы весь сторонний проект был присоеденен в мою exe, понимаю что гуглится, но там каждый делает по разному.
>>2920644 Хоче статик либу Не хочу весь проект Пизьец у тебя в голове каша, анончик, ой пиздец. >>2920465 Адд сабдиректори!!!
Или не используй чужие стмейки а напиши свой, если это что простое уровня гли. Хотя в брльшинстве случаев оно нахер не надо. Достаточно готключить ненужное типа примеров/ тестов/инстал таргетов.
>>2921412 вообще по хорошему я хотел юзать cpack. просто полный пиздец когда на моей локалке дебиан 12, а на серваке дебиан 10, то хуй нормально прогу скинешь тупо без компилинга. Еще для компилинга надо качать dev версию postgresql, где билдишь, а из него ток одна либа нужна, когда весь пакет весит под 500мб. Не хотелось бы качать 500мб на сервак ради того, чтобы скомпилить прогу.
Сап аноны, нормально ли функции помещать в контейнеры, и далее их вызывать? Выглядит дико, но в реальностях boost::asio, когда пихаешь в сетевой сервис сообщения вместе с колбэком, использование контейнера функций выглядит единственно правильным решением.
Если так, какие следует соблюдать правила, типа стараться использовать move?
>>2923526 Ну у тебя вопросы какие то странные, и не понятно что тебя смутило. Задал ты вопрос чисто по конкретной ситуации, но при этом в самой ситуации и зачем так сделано не разобрался, вот какое у меня сложилось впечатление. Что касается того что ты спрашиваешь, то с этим проблем нет, функции такие же данные, ты можешь ими оперировать, нет с этим никаких проблем, тем более что в 11 версию языка как раз и завезли тебе лямды
>>2923526 Функцию в контейнер не уложишь. Либо указатель на функцию, либо т. н. вызываемый объект. Алсо, любой класс - это своего рода контейнер с указателями на функции.
>>2923566 Спасибо. Почему и зачем так сделано я понимаю, просто сколько я не видел чужого кода, хранение функций в контейнере в реальной либе вижу впервые.
>>2923650 std:: function ведь и есть вызываемый объект, разве нет? Или щас придирка к терминологии? Тем не менее, std::function прекрасно кладется в контейнер без ошибок и врапперов
Если я брошу исключение и поймаю его, то деструкторы вызываются. Если брошу исключение и его никто не поймает, то деструкторы не вызываются. Как же так, а если надо будет после истечения времени жизни объекта записать лог в файл или активировать самоуничтожение у беспилотника? >>2892332 Чел, здесь исходики, а не билд...
Аноны, как какать заюзать стороннюю dll либу, если нихера нет, ни хедера, никаких файлов к ней? Я знаю о loadlibrary, что надо писать свою простыню кода, и переопределять в своих типах функции, но может есть какой иной подход, менее геморройный?
>>2924581 никак как минимум нужен хедер-файл, содержащий сигнатуры экспортируемых функций, но по-хорошему нужна документация где описано как пользоваться это библиотекой есть еще путь реверс-инжиниринга, когда смотриться как используется данная библиотека в других приложениях, и на основе этого восстанавливается сигнатура экспортируемых функций, но раз ты задаешь такие вопросы, думаю что для тебя это более чем неактуально
>>2924589 да всё есть, документация тоже, в ида функции экспортируемые все вижу. Нужно именно подключение не через подгрузку вручную, а может есть что иное, чтобы оно само подгружало, а мне пару строчек написать? Не хочу писать кучу кода
>>2924621 > Можно собрать вручную, не хочу > Нашел собранную Давай давай, потом окажется что у тебя УБ в половине кода из за разных версий неба, Аллаха, ГЦЦ
>>2924625 из-за разных версий чего? я просто на .NET брал либу и юзал ее без проблем, а тут пол дня надо убить на сборку как пишут, ппц вот тебе и натив
>>2924678 Ну собиралось в VS. А какое это имеет значение? Там же двоичный код, который подгружает прога в процессе работы. Есть хедер, но он не полный, и тянет еще один хедер, который не доступен, будет доступен после сборки. Его надо править. Но как мне один хедер поможет решить проблему?
>>2924724 У нас тут немного не дотнет. У меня тут проект не компилился, который должен из примера копипастил. Я сменил настройки версии стандарта туда сюда и скомпилировался. Причем Кланг ошибку так и продолжил показывать но компилятор гцц. И вот что это было?
>>2924724 В .net для работы с нативными dll тебе тоже нужны сигнатуры функций, обмазанные аттрибутами pinvoke. Если кто-то уже сделал за тебя нативную дотнетную обвязку - можешь через рефлексию достать все эти сигнатуры и сгенерить header-файл ручками. Потом можешь сделать .def через dumpbin.exe и .lib через lib.exe Версию компилятора можно узнать тем же dumpbin /headers
>>2924825 тут в замешательстве. ИДА показывает - что у функции нет передаваемых параметров, а в документации есть, тип double. Грешу - что документация для новейшей версии, чем есть у меня. Будем посмотреть.
>>2925460 хорошо, что на гитхабе можно откатить "время назад". Посмотрел хедер файл к своей версии - есть передаваемый параметр double. Но ИДА показывает - что нет. Как так может быть? Ошибка декомпиляции?
Оно работает, и работает функция с параметром, хоть IDA Pro показывает - что у нее нет параметров. Вот так и доверяй дизассемблерам. На ней только малварь гонять.
Мужики, где посмотреть можно реализации разных структур данных? Прям по правильному чтоб, с деструкторами и прочим. В гугле шляпа одна.А на гитхабе больше решение задачек с литкода
>>2925845 > Тут человек базы не знает, а ты ему рекомендуешь в стл залезть? А какая там база нужна? Если чел хочет поглядеть эталонные реализации, то это первое место где поглядеть можно
>>2925847 С точки зрения алгоритмов и архитектуры действительно эталонные, но чтобы их понять нужна нехилая экспертиза в языке. Именно понять, почему сделано так а не иначе. А просто посмотреть как оно работает в теории проще в классических книгах.
>>2925909 хз, единственное что наверное может там удивить не очень опытного челика дак это активное использование placement new, но чутка потыкавшись понимаешь что это збс идея ну а остальное все привычное будет, если ты до этого чутка разбирался как пишут классы в крестах ну и само собой в шаблончках разбирался мимо безработный великовозрасный чмошка
Стоит задача узнать какой max Y соответствует X при растеризации линии с помощью алгоритма брезенхема, как на 1 картинке, то есть найти самый высокие пиксели в столбце изображения. Проблема состоит в том что формула линии брезенхема из википедии https://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма не совпадает с алгоритмом растеризации в той же статье, как на картинке 2. Также из других источников я взял алгоритмы растеризации и там тоже не совпадает с математической формулой, как на картинке 3. Есть ли способы точно найти Y для X, но при этом что бы он совпадал с алгоритмами
>>2927664 Мне спектр отрисовать. В видео прикреплённом в этом посте >>2918404, верхние точки линий брезенхема запоминаются при растеризации линии брезенхема. То есть когда я линию провожу, я и запоминаю максимальный Y. Да, это рабочий вариант, но я хотел бы за одно действие найти maxY в столбце изображения, а не пробегаться в цикле.
Сап, плюсаны. Порекомендуйте какой-нибудь способ распарсить плюсовый проект из какого-нибудь питона. Чтобы были все сущности вроде функций/классов/методов, плюс по инклюдам трэкалось, откуда что берётся.
>>2927789 см питоньи обвязки для libclang в зависимости от сложности плюсового проекта, собрать и протрекать сущности питоном займёт пара часов - неделя
>>2928283 Это высокоуровневый язык. А начать тебе с него стоит, потому что большинство современных языков -сиподобные и повторяют элементы ситаксиса си.
>>2928329 У тебя есть К воркеров, и каждый хранит ссылку/шейредптр на очередь задач. Тут у шейредптр преимущество, что его можно будет изменить, в отличие от ссылки. Абсолютно абстрактный пример.
>>2928921 Чем дальше в лес, тем больше дров. Я в ахуе если честно. Везде какие-то костыли. Скажите еще - что я должен синхронизировать доступ к консоли, как в gui приложухе? Умора плять
давеча был в /b тред о программировании на крестах, ушел в бамплимит дак вот там был челик который искал кодеров на РАБоту, и тестовым у него было написать telnet-сервер, по его утверждению там работы на 4 часа так чтож учтите что от вас требуется в 2к23
я знаю вы все тут эстеты за последние лет пять появились какие нибудь прямо писк шрифты заточенные под код, само собой, причем которые учитывают особенности крестов само собой (типа звездочек, ну вы поняли), но и причем чтобы были русские буквы в шрифте
>>2927744 >То есть когда я линию провожу, я и запоминаю максимальный Y. У тебя спектр только при рисовании линий существует что ли? Зачем там в принципе что-то сохранять при рисовании? Зачем Брезенхэм, если линии только вертикальные? Зачем в принципе Брезенхэм в 2023? Это алгоритм для всяких спектрумов, у которых аппаратного умножения не было.
>>2932328 Тогда все еще нельзя будет что то подобное написать, так как вектор сам инициализируется с помощью std::initializer_list Object obj { {non_copy{}, non_copy{}} };
>>2891674 Школьная математика хуйня. Качай конкретную математику Кнута и читай. Еще https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about есть, там сильно с Кнутом пересекается. Если нужен анализ и общее что-то по вузовской инженерной программе, то основы можно быстро на mathprofi.ru выучить. Дрочи на здоровье пока стоит короче.
>>2931416 с ним все заебись, люди работают, люди при деле: уже приходиться писать целые трактаты на сотни страниц чтобы описать (почти) все тонкости инициализации в языке так чтож нужные люди не остануться без работы
>>2934055 И не такое придумаешь, когда дохуя умных IDE ещё не придумали, есть только разновидности блокнота, а об ошибках типизации узнаёшь только при компиляции.
>>2934055 ну, к примеру, указатель на char в си мог означать множество вещей - указатель на символ, указатель на строковую константу, указатель на байт, указатель на массив памяти, указатель на си-строку (с нулем в конце) ну и для некоторых других типов та же история по аналогии поэтому приходилось использовать дефайны и использовать префиксы при именовании переменных или еще один пример, когда в сях эмулировались классы посредством запехивания указателей на функции в структурки, то приватные члены и члены-функции этих структурок клали в конец структурки, иногда после какого-нибудь паддинга чтобы подстраховаться, и чтобы самим не запутаться помечали их каким либо префиксом, само собой наружу либы торчали уже другие усеченые структуры которые получались накладыванием на внутренние структуры.. ну и все это опять сверху макросами обмазывалось так чтож все это были практичные решения без которых не обойтись НО потом культура программирования деградировала лол и появились всякие "рекомендательные" системы именования типа венгерской нотации, где уже было прописано че и как делать, без объяснения начинающим кодерам зачем вообще к этому пришли
>>2934073 зачем что то читать, можешь попробовать сам подумать к примеру, можно ли при помощи крестов написать либу с закрытой кодовой базой оформленную в виде динамически загружаемой библиотеки (нельзя), ну либо можно ли в крестах написать приложение с динамически расширяемой функциональностью при помощи плагинов (нельзя) и как эти ограничения все же можно обойти, да, пойдя на определенные компромисы но все же и тогда, возможно на тебя найдет озарение и понимание того в какой луже сидят все крестовики уже оче давно когда закрыли глазки на то у них до сих пор нету стандартизированного abi а все усилия комьюнити направлены на то чтобы ковыряться в шаблончиках и вводить новые закорючки в язык
>>2933458 Поидее, библиотека, которую я юзал, ещё и видео разных форматов воспринимает. Если подумать, то можно законвертить каждый кадр, а после объединить их в один видосик, думаю, вскоре займусь этим
>>2934696 ну вообще SAL annotations были офигенной задумкой у мелкомягких и оче активно у них использовались смысл в том что эти макросы сворачивались в ничего, и компилятор их не видел, но они нужны были для статических анализаторов, а вот которые могли сделать гораздо больше полезных проверок
Блять, разбираюсь с лок фри стеком и не могу понять. В CAS мы чекаем, равен ли текущий хед тому, что мы сохранили, и если равен( то есть никто не влез между нашим чтением и CAS), то мы заменяем на новый хед. Отлично, все хорошо. А ЕСЛИ КТО ТО ВЛЕЗ??? Какого хуя не берется новый поинтер на голову? Почему мы продолжаем долбиться со старым?
>>2938627 Я уже понял. Почему то сначала нигде не увидел, что compare_exchange меняет desired на текущее значение автоматом. Даже в cppref об этом не написано, или я в глаза ебусь.
Молю, ананасы, помогите, я уже начинаю гореть. Как заставить ебаный clangd видеть ебучие стандартные плюсовые и не очень библиотеки? Что прописать этому еблану в compiler_commands? iostream не видит, string не видит, сука sdl2 зато видит.
Mac OS, neovim, сраный coc.nvim и coc-clangd
За мат извени ,третьи сутки потею уже над этим, подскажите как сделать, это пиздец.