Тут кто-нибудь пишет софт для камер, там лайв стримов? Какими технологиями пользуетесь? Хочется в этом направлении пойти работать, но даже хз что изучать
>>2491210 → > Нихуя не понятно по коду, где объект, а где ссылка на него Дерефененсинг никак тебе в этом не помогает, ты можешь это узнать только из типа но и тебе и не нужно знать, когда ты обращаешься к объекту, находится он под ссылкой, или под указателем
> где копирование объекта, а где копирование указателя. Опять таки никак тебе он тут не поможет и плюсы это живой пример этого
> Нельзя одновременно отстаивать идею написания читабельного кода и автодереференсинг в языке. Тем временем Читаемые языки: все имеют автодереференсинг и явное копирование
плюсы сюда не входят, в си хоть явно понятно когда ты что копируешь
>>2492340 >нестжс Чем глубже кроличья нора, тем сложнее из неё выбраться. Ты бы хотя бы во фронт переобулся (я не про хохлов, хотя вон Путин 195к (~3200$) всем мобилизованным обещал).
>>2492351 Я тебе ответил - иди работай. Сам недавно собесился - в одной конторе сделали оффер в день собеса на около 4к, в другой прислали пхи, пхи сразу после просмотра резюме.
Учить ты можешь всё что угодно и не добиться ничего. Большинство вакансий сейчас это c++14 и qt. Чтобы апнуть 4к и более нужно вовсе не с++ знать.
>>2492351 Если этот твой ГнездоJS для бэка, тогда дрочи многопоток, асинхронность и корутины, чтобы ты сам мог написать похожий фреймворк на c++ (очевидно под Linux и чтоб в докере деплоился). Не прыгай из угла в угол - накапливай экспертизу в уже известной тебе сфере.
>>2492373 Если ты секретутка, точишь ноготки в ворде, тогда дрочи COM/OLE, чтобы ты сам смог написать подобный мсофис на С++ (очевидно под Linux и чтоб в докере деплоился). Не прыгай из угла в угол - накапливай экспертизу в уже известной тебе сфере.
>>2492486 Лучшие девочки двача выбирают #Дотнеткоре (VSCode и Docker).
>в прогерство с сишки начинал вкатываться А вот эти вот все попёрдывая кряхтят про OLE/COM/ATL/WTL , GUID, CLSID, IUknown, CoClass, marshalling и regsvr32 huita.dll. Хоспаде, какое же говнищще это было. Даже хуже, чем нода.
Вопрос к знающим,ибо у себя в учебнике не нашел. Создаю новый обьект класса путём = присваивания. В классе динамически выделяется память new, ну я как в школе учат в диструктор ебанул delete. Теперь после присваивания одного обьекта другому выскакивает ошибка рантайма double free(). Ну я так понял, что диструктор два раза вызывается. Как исправить?
Погуглил как писали/пишут код для ядерных ракет. Оказалось, что никаких йоба технологий там нет. На одной из ракет, чтобы не ебаться с кодом и решить проблему переполнения стека, просто посчитали время полета и напаяли столько физической памяти, чтобы к концу полета стек заполнял практически всю память. Ебало мое представили?
>>2493300 Я давно заметил, что всякой научной хуйнёй с программированием занимаются в основном те, кто больше математики, чем программисты. Они сначала пишут на бумажке математическое решение, а потом переводят его в лютый говнокод, выглядящий как лаба первокурсника с проёбанным форматированием, копипастой, однобуквенными переменными и без комментов, но в масштабе. У датасаентистов та же болезнь.
Вопрос только появился один. Я же правильно понимаю, что компилятор может пропустить мой конструктор присваивания(решит что хуйня он не оптимальная) и запустить конструктор копирования ?
И его специализации под разные типы (нужно так как в зависимости от типа там разное поведение)
А как-то можно узнать специализиованный тип чтобы его не писать внутри функции?
То есть сейчас я там внутри пишу Test1 t. Но это дублирование, ведь я же указал этот тип в Foo<Test1>. Короче, из-за этого ошибки, когда я после копипаста тела забывают поменять тип
Хотелось бы как-то так: T t1;
Пока что спасся через using using Test1 T; Чтобы внутри тела не писать сто раз этот тип, но есть какое-то другое решение?
>>2493497 Потому что после того как ты попал в f, T &&x - уже становится l_value Чтобы оно стало r_value ты должен его смувать снова, то есть template <class T> int f(T &&x) { return y(std::move(x)); } // выводит 22 Но так как у тебя T &&x - universal referense, чтобы мувалось только r_value тебе надо использовать std::forward() template <class T> int f(T &&x) { return y(std::forward<T>(x)); } // выводит 12
>>2491360 (OP) Привет, погромисты. Есть один опенсорс на c++ и qt. Хочу добавить в него свой функционал (типа эдит-бокса в котором пишут +тег и -тег, вместо тыканья в чек-боксы, как реализовано сейчас). Я не программист, но и не совсем нуб. Начал читать Липпмана введение С++. Каковы мои шансы? Куда копать, чтоб реализовать эту штуку?
Аноны, поясните за condition_variable Вот пример с двумя тредами.
В 14 строке поток1 оповещает поток2 и происходит разблокировка мьютекса.
Затем в 19 строчке мьютекс лочится в потоке2. И в wait происходит проверка на "случайное пробуждение". И если лямбда вернёт false, то мьютекс разлочится, поток снова уснёт. Если true, мьютекс залочится (точнее, по идее, состояние мьютекса меняться не будет, он ведь был залочен до wait) и идёт дальнейшее выполнение с выводов в консоль.
Если бы в данном примере было 3 потока, то при notify_one выполнился бы какой-то случайный из них (2 или 3)? А если notify_all, то как? Последовательно 2, а потом 3?
Вообще не очень понятно зачем тут cv, одного мьютекса бы просто хватило?
>>2494240 >то при notify_one выполнился бы какой-то случайный да, хотя ос может делать мультикасты и пробуждать сразу несколько (для этого и нужна проверка).
>при notify_all Выполнятся все. Порядок случайный и зависит от того, в какой последовательности они получат общий mutex m (хотя могут и на разных мьютексах сидеть, тогда вообще параллельно).
>зачем тут cv, одного мьютекса бы просто хватило? Если убрать cv, то нужен цикл, который постоянно крутится и захватывает mutex + проверяет codition - это кушает процессорное время. А так он спит и ничего не кушает.
>>2494396 >Если убрать cv, то нужен цикл, который постоянно крутится и захватывает mutex + проверяет codition - это кушает процессорное время. А так он спит и ничего не кушает.
А разве это не похоже на такую ситуацию: один поток записал данные в структуру данных, а второй хочет прочитать? И там и там для защиты используется мьютекс.
>>2494491 Ну так читающий поток может запросить данные ещё до того как пишущий вообще запустился. Данных нет и неизвестно когда будут. Что ему делать? Держать mutex он не может, иначе записать нельзя, продолжать работу без данных тоже не может. Только крутиться в цикле и ждать данные? периодически хватая mutex.
>>2494522 Ну теперь вроде стало понятнее, ключевое тут это некое условие в wait. А как это работает если внутри wait будет false, то дальше исполнение кода не пойдёт? Т.е в том примере выше на 20 строке поток прервётся и будет выполняться другой?
>>2494527 Когда поток получает сигнал от ОС о пробуждении он сначала захватывает mutex, потом под ним проверяет условие. Если true, то выполняется код после wait (потом нужно mutex разлочить руками m.unlock()). Если false, то код после не выполняется, mutex отпускается и поток засыпает до следующего сигнала от ОС. С новым сигналом всё повторяется заново.
Ну то есть это бесконечное ожидание в точке wait до тех пор, пока условие не true.
Вот в этом примере вывод был такой: Waiting... Notifying falsely... Notifying true change... ...finished waiting; i == 1
Я сначала подумал из-за того тред2 спит 200мс, то выполнился тред1, но после notify_one в 25 строчке он не вызвался снова. Т.е. не было "Waiting..." ещё раз. Какая тут могла быть логика исполнения?
>>2494549 Первый поток запускается, пишет "Waiting...", потом ждёт в cv.wait(), затем выполняет оставшийся код (пишет "finished waiting") и завершается. В 15 строчку он уже в принципе не может вернуться.
>>2494583 В 29 строчке стоит i = 1, а в 34 notify_one(). После выполнения 34 поток 1 получает сигнал к пробуждению. Он видит, что i == 1 и выполняет оставшиеся строки.
>>2494610 Запустился поток1 Чекнул wait, условие не выполнилось, заснул. Поток2 сделал notify_one Поток1 чекнул wait, условие не выполнилось, заснул. Дальше продолжился выполняться поток2 Там снова notify Поток1 чекнул wait, условие выполнилось, выполняет код дальше.
Запустился поток1 >Waiting... Поток2 сделал notify_one >Notifying falsely... Там снова notify >Notifying true change... Поток1 чекнул wait, условие выполнилось, выполняет код дальше. >...finished waiting; i == 1
>>2494656 Каждый раз, когда во 2 потоке происходит notify, поток 1 пытается продолжить выполнение с 16 строки и до конца. А "Waiting..." у тебя стоит ранее на 15 строка. Ты хоть 100 раз кинь notify, но в 15 строку не попадёшь. Только один раз при старте потока 1.
>>2494331 >>2494604 Тогда что прочитать после (или вместо) классического The C programming language, что бы выучить современную сишку, не затонув в дебрях спецификаций? > C23 draft Сложна, я же только вкатываюсь
Аноны, делаю 3д редактор для ландшафта. Встала задача: как хранить пользовательские настройки?
Например, пользователь может сделать коллекцию текстур для быстрого использования, создать свой набор кистей (размеры, прозрачность, давление и тд). Сейчас для каждой такой настройки делает класс который наследуется от базового, которые затем хранятся в менеджере. Когда я меняю/добавляю настройку, то через менеджер получаю ссылку на класс и работаю. И всё это потом сохраняется в каждый свой жсон файл.
Выглядит это как-то ублюдочно, не хочется городить по куче классов на каждую настройку. Не трудно заметить что всё это, по сути, ключ-значение. Где значение может быть список строк пути к текстурам, структура флоатов настройки кисти.
В общем, как сделать класс словаря с классным интерфейсом?
Получается при выходе из скоупа вызываются деструкторы всех объектов, созданных в скоупе. А сишка получается быстрее, потому что никаких деструкторов не вызывает, а сразу берет из регистра адрес начала стека верхнего скоупа и прыгает туда.
>>2495170 > Получается при выходе из скоупа вызываются деструкторы всех объектов, созданных в скоупе. Только объектов, созданных на стеке. > А сишка получается быстрее, потому что никаких деструкторов не вызывает, а сразу берет из регистра адрес начала стека верхнего скоупа и прыгает туда. А в сишке ты сначала вызываешь вручную десяток free(), close(), release(), finalize(), destroy() и получаешь ровно те же тормоза. Забыл что-то вызвать - получаешь утечку ресурсов.
>>2495453 Ну вот на стеке создается объект, и не важно есть в нем указатели на внешнюю память или нет, в любом случае будет вызван деструктор, или компилятор все это оптимизирует?
>>2495528 Оптимизация тут не при чём. Гарантируется, что если ты создал объект в стеке текущего скоупа, то при уничтожении скоупа будет вызван деструктор и память освободится. Если у тебя объектом является сам указатель, то он будет уничтожен, а данные, на которые он указывает, так и останутся, если у тебя не unique_ptr или другой умный указатель (а они уничтожают объекты логикой в своих деструкторах).
>>2491360 (OP) Аноны, как подключить сторонюю библиотеку к моему проекту? Вот я скачал архив, распаковал его, закинул в папку с моим helloworld.cpp. Написал #include <huipizda.h>, а оно всё равно не билдится почему то.
>>2495956 > Написал #include <huipizda.h> Это не достаточно, надо указать компилятору в include path пусть к папке с хедерами, в в library path - путь к папке с DLL-ками.
Есть стандартный алгоритм поиска одинаковых последовательностей байтов? Например 03 5E 7F 99 31 42 03 5E 7F. Чтобы находил произвольные последовательности, а не известные заранее.
>>2496052 Как-то очень расплывчато. Допустим можно отсортировать массив и получить в нём последовательности повторяющихся элементов (запомнив их старые позиции). Таким образом мы получили повторы из 1 элемента. Далее смотрим каждую такую группу в отдельности - сортируем её по элементу из позиции, следующей за исходным - получаем повторы по 2. И так далее редуцируем группы, добавляя по 1 элементу в хвост.
Аноны, есть один проект на гитхабе, хочется туда запулить изменения (помочь комунити так сказать) в виде замены функционала буста на то, что есть в языке. Это не полностью избавит проект от буста, но немного уменьшит его в коде. Это как-то может положительно сказаться, например, на сборке проекта?
>>2496849 А ты интересовался, по каким причинам в проекте используют буст? Там тоже не дураки сидят и вполне могли решить, что в бусте определённые алгоритмы реализованы эффективнее, чем в стандартной библиотеке. Да на сборке проекта скажется положительно, но легко может сказаться отрицательно на функциональности.
>>2496889 Там несколько классов из 17 стандарта используется. Разработка идёт под шиндой, видимо, когда их добавили студия не поддерживала полностью 17 стандарт либо разработчик работал на старой версии.
И так господа. Надо переползать с вижуал студии не что-то другое. Вопрос - на что? В студии нравилось две вещи - не надо особо ебаться с системой сборки и самое главное - удобный отладчик. Если с системой сборки ещё можно играться (новые заголовки добавляем не часто) То вот с удобный отладчик необходим.
>>2497275 >какие вещи можно поделать на плюсах на маке для ознакомления и тренировки? Такие же как и на других ЯП? Здесь ты ограничен только фантазией и своими ресурсами.
>>2497279 ну типа фронт пилить на плюсах - идиотизм (мб разве только пробовать свой движок браузера написать, но это наверное слишком сильный размах) мобилки тоже лесом стандартный бек с крудами тоже мимо
я хотел мб на анриале попробовать пописать, но на обычном м1 производительность компилируемых демок страдает + по отзывам анриал и юнити (хотя это уже шарп) не оч кайфово идут под силиконом
вот и встал вопрос - а что остается. Я подозреваю есть два пути - либо делать десктопное ПО вместо свифта использовать плюсы, либо как писал выше пробовать в свои реализации движков и типа такого
поэтому и спросил какие есть варианты, поправьте если где-то проебался
Как изучать вашу стандартную библиотеку? Я внезапно столкнулся с тем, что для unordered_set в библиотеке нет простейших операций типа пересечения и объединения, а для set они выглядят пиздец уродливо. Я сам питонист. Так вот, я чувствую, что не понимаю идеи, которая за всем этим стоит, с пониманием которой все эти контейнеры-итераторы станут сразу простыми и очевидными, и можно будет не лазить на cppreference.
>>2497309 >я хотел мб на анриале попробовать пописать Не советую, там очень больно с плюсами работать к тому же там свой мирок, где все делается не так как вне анрила.
>>2497669 Ну вот допустим есть класс, в котором есть обычный указатель. Я выделяю new в конструкторе и удаляю delete в деструкторе. В чем сука смысл? Компилятор сам определяет где вставить вызов деструктора, а иначе бы приходилось его вручную вызывать.
>>2497805 Потому что если ты делаешь не laba2 в вакууме, то ты этот указатель скорее всего куда-то передаешь, например в другую функцию или класс. А там этот указатель могут сохранить в переменную или поле. И вот ты у себя уже сделал delete, а тот код продолжает обращаться к удаленному месту (use after free) или вообще лезет теперь в память чужого объекта. Если ты пишешь web-браузер, теперь хакеры могут воровать так кредитки и пароли. Ты можешь сказать - ПРОСТО не обращайтесь к уже удаленному. Так вот механизм подсчета ссылок это и есть простейший способ контролировать, а не надеяться что кто-то правильно понял архитектуру.
>>2498225 Микрочел, я вовсе не хотел задеть твои хрупкие пендузятные чувства, чего ты так нагрелся? Ты наверное вообще сейчас охренеешь когда я тебе скажу что я и виндой дома пользуюсь, и юниксами для мака и на работе. Для каждой задачи - наиболее удобный инструмент. Человек прямоходящий просто сделал замечание, вам, ползающим на спине тараканам, что вообще то нормальные люди этим не занимаются. Как минимум нужно было задуматься: а вдруг он прав? Но да, промолчать ты не смог
Вопрос: В файле с расширением .h определяется класс, который уже был определён раньше, в других хедерах. Зачем это делается? Теперь , когда я пытаюсь получить ссылочный доступ(->) к функциям экземпляра класса, я получаю в еблет "member access into incomplete type 'blabla' ".
>>2498803 Ты точно ничего не путаешь? Картинки хоть покажи.
> файле с расширением .h определяется класс Это порочная практика, в .h пишут только объявления, но не определения (если речь не о шаблонном классе).
>который уже был определён раньше, в других хедерах Когда программа состоит из более, чем одного файла, нет таких понятий как "раньше/позже", есть область видимости (scope). Компилятор компилировает в ему одному известном порядке. Не стоит делать никаких предположений определен класс в некоторый момент компиляции или пока еще нет.
>member access into incomplete type 'blabla' incomplete type это когда имя класса (объявление) компилятор видит, а определения нет.
Что в голове у тех, кто экономит память? Ну вот сделали вектор бул хитровыебанным, чтобы сэкономить на спичках, и что в итоге? Никто им не пользуется и Стив Майерс говорит, чтоб это говно не трогали.
>>2499100 в 90е когда проектировали stl, у богатого игрового пека было 16 мбайт оперативы, но было много компов где оперативы было меньше, windows 95 спокойно работала в системах с 8 мбайт оперативы
>>2499147 А по моему это просто мода и ничего больше.
Несколько лет назад все только и говорили: не с чего ходить - ходи с бубей вектор; семь раз отмерь, один вектор; вектор рубль бережет; в Тулу со своим вектором не ездят; и тд и тп.
>>2499227 страуструпу пришлось ввести в язык механизм исключений потому что иначе никак было не вернуть ошибку из конструкторов и перегруженых операторов отказ от использования исключений в создаваемой библиотеке ведет к некрасивым архитектурным решениям, в частности приходиться использовать подходы двойной инициализации объекта класса, приходиться отказываться от перегрузки операторов заменяя их аналогичными по функционалу функциями-членами поэтому не стоит быть столь категоричным да, в некоторых проектах приходиться по некоторым причинам отказываться от исключений, но во многих проектах можно их прекрасно использовать, делая код гораздо лаконичней, компактней и красивей
>>2499089 > > >> файле с расширением .h определяется класс >Это порочная практика, в .h пишут только объявления, но не определения (если речь не о шаблонном классе). > >>который уже был определён раньше, в других хедерах >Когда программа состоит из более, чем одного файла, нет таких понятий как "раньше/позже", есть область видимости (scope). >Компилятор компилировает в ему одному известном порядке. Не стоит делать никаких предположений определен класс в некоторый момент компиляции или пока еще нет. https://apc.u-paris.fr/~franco/g4doxy/html/G4LivermorePhotoElectricModel_8hh-source.html
>>2499423 >>2499287 Вроде понял, если в данной среде выполнения int 4-байтовый, то литерал "1" будет 4-байтовый int, выражение size + 1 тоже 4-байтовый int, 65536 в него помещается
>>2499292 TL_DR: чтобы пофиксить твою ошибку, в том файле, где выстреливается ошибка, нужно прописать #include с определениями этих классов. Названия заголовков из справочника библиотеки узнаешь.
46-48 строки это предварительное объявление, но не определение. Объявление делает видимым только имя класса, под ним можно объявлять указатель и/или ссылку на такой класс, все остальное компилятору неизвестно, ни члены класса, ни его размер, только имя. incomplete type вобщем.
>>2498803 >Зачем это делается? forward declaration Объявление можно писать сколько угодно раз, а определение должно быть только одно. К примеру, когда два класса должны ссылаться друг на друга, ты не можешь начать сразу с определения одного из классов, потому что не будет видим второй. Чтобы разорвать этот порочный круг, делают предварительное объявление. Еще бывает, что делают forward declaration вместо включения заголовка с определением просто чтобы пошустрее собиралась программа.
я вахуе что тут пишут , учить буст, вы ебанутые? Буст устарел, мало того он тяжелый, и медленней чем кастом msvc функи , вы тут рофлите или про дело говорите ?
Сап аноны. Допустим, у меня в классе должен лежать контейнер с унаследованными объектами (много классов а-ля DerivedA, DerivedB, DerivedC наследуются от общего Base). И при этом должна быть возможность получить из класса "глубокую" копию этого контейнера методом а-ля get_container().
Как бы это покрасивее провернуть? Хранить голые указатели стрёмно -- надо вручную их удалять когда приходит команда внести изменения в контейнере (удалить элемент). Возвращать в геттере копию контейнера тоже неудобно, надо будет делать копирование каждого элемента контейнера (создание полноценной копии, а не копировать указатель), поскольку приложуха имеет несколько потоков и в них может понадобиться глянуть на содержимое контейнера.
Хранить в контейнере всякие unique_ptr и прикрутить к хранимым объектам специальную функцию копирования и при запросе get_container() тупо через неё всё копировать в возвращаемый контейнер?
>>2499872 > И при этом должна быть возможность получить из класса "глубокую" копию этого контейнера методом а-ля get_container() > Возвращать в геттере копию контейнера тоже неудобно, надо будет делать копирование каждого элемента контейнера Может я тебя неправильно понял, но это ведь как раз то, что тебе нужно, нет?
>>2499910 >Может я тебя неправильно понял, но это ведь как раз то, что тебе нужно, нет? Ну да, только тут мне нужно будет самому запариться и написать соответствующий код.
А может есть какой-нибудь класс, который для поинтеров обеспечивает поведение, аналогичное обычным значениям (т.е. удаление объекта при уничтожении поинтера и автоматическое копирование объекта, на который поинтер указывает при передаче поинтера по значению). Т.е. чтобы при возврате контейнера поинтеров, по факту оно само всё за меня сделало, скопировав не только поинтеры, но и объекты, на которые они указывают.
>>2499944 Не всё так просто, у меня же хранятся разные наследники в виде указателей на базовый класс. Соответственно, надо разруливать, чтобы делалась копия наследника, а не базового класса. Пока видел вариант сделать что-то типа виртуального метода copy() в базовом классе и его переопределять в наследниках. И при возврате контейнера пройтись по всем элементам и его вызвать.
А тип элемента да, какой-нибудь unique_ptr<Base> ебануть, чтобы он хотя бы сам удалял соответсвующий объект при удалении элемента.
>>2499926 >А может есть какой-нибудь класс, который для поинтеров обеспечивает поведение, аналогичное обычным значениям (т.е. удаление объекта при уничтожении поинтера Сборщик мусора такой класс называется.
>>2499872 Ну начнём с того как ты собственно хранишь эти унаследованные классы, если ты хочешь из хранить в одном контейнере - значит ты будешь хранить указатели на них, пускай будут умные даже - unique ptr. Собственно хранятся они в единственном экземпляре. Далее тебе надо сделать deep copy. Здесь тебе грубо говоря надо побитово скопировать всё, на что ссылается содержимое твоего контецнера. Сделать это иначе как созданием отдельного контецнера, и выделения памяти под каждый класс заного так то не возможно (опять же - мы хотим deep copy). Соответственно вся ебля будет в основном с копирующем конструктором и одновременно с выделением памяти в куче. Впрочем пока писал дал ответ. Крч, в deep_copy код должен делать что-то такое: - создать вектор с капасити как у текущего vec<uptr<base> result; result.reserve(m_elements.size()) - далее в циклe for const auto& elem: m_elements result.emplace_back (make_unique<dervA|B|C>(*elem) ) На сколько помню тут не надо мува отдельного, т.к. тут будет r val ref типа объект без имени.
return result
Пишу ночью поэтому кое что могу прокбать. Например не помню сработает ли здесь норми named copy elision или нет. Вроде должно.
Если кто-то знает более красивый способ поделитесь. Но этот самый простой.
>>2499996 Только сейчас допер что у тебя тип то базовый хранится и простой copy ctor не сработает. Тогда наверное да, придётся пилить виртуальный clone который возвращает uptr на копию класса.
result.emplace_back (elm->clone)
Забавно, внезапно паттерн этот пригодился в плюсах.
>>2493456 Ну а тогда в чем смысл специализации? Ты можешь сделать так: определённому набору типов соотв. какой-то код, это делается через sfinae или сейчас через concepts ( cpp20)
>>2499872 тебе нужно реализовать полиморфное копирование для иерархии классов, указатели на объекты которого будешь хранить в этом контейнере, если тебе требуется глубокое копирование контейнера для этого есть различные способы, начиная с примитивного через .clone и кончая различными вариантами фабрик классов альтернативный вариант - это использовать специализированный контейнер для хранения полиморфных объектов, в бусте есть такие например
>>2500002 >>2500027 Эх. Ладно, пока попробую через .clone, а там посмотрим, как оно себя покажет. >использовать специализированный контейнер для хранения полиморфных объектов, в бусте есть такие например У меня что сервис, что клиенты на Qt, поэтому стараюсь обходиться по минимуму с точки зрения подключения ещё более других либ.
Подскажите, есть ли в стандарте гарантии, что какие-то операции, типа присваивания переменной встроенного типа, не могут быть прерваны другим потоком? Если да, то к каким операциям это относится, а если нет, то как тогда защищаться? Эти гарантии есть только у методов класса мьютекс?
class Routine { public: void operator() () { while (!sem); sem = 0;
cout << this << ' '; for (int i = 1; i <= 5; ++i) cout << i; cout << '\n';
sem = 1; } private: static volatile int sem; };
volatile int Routine::sem = 1;
Но получил не то, что ожидал: >0x56526a446008 12345 >0x56526a4461580x56526a445eb8 123145 >0x56526a4462a8 12345 >2345
Я так понял, проблема возникает как минимум тогда, когда потоки переключаются между > while (!sem); и > sem = 0;
Возникает вопрос, а возможно ли в принципе написать свой собственный примитив синхронизации? Получается, std::mutex и std::thread не независимы друг от друга, и как-то согласуются между собой?
>>2500210 >Возникает вопрос, а возможно ли в принципе написать свой собственный примитив синхронизации? В принципе, можно. Но это надо не быть тобой, как минимум
>>2500517 >>2500526 Блять, я в курсе, что делает volatile. Заставляет компилятор избегать оптимизаций, и при каждом обращении реально считывать значение из памяти. В чём проблема с кодом я уже понял. Лучше бы пояснили, как внутри устроен атомик. В моём представлении, внутрь атомика тупо встроен мутекс, который блокирует поток перед тем, как что-то с объектом сделать. Но я не понимаю, как добиваются того, чтобы переключение на другой поток не произошло в момент, пока выполняется lock(). Всё же должно сводится к одной атомарной инструкции, перед и после которой безопасно прерываться другим потоком. И как тогда написать свой мьютекс или свой атомик? Ассемблерные вставки ебошить? Я просто хочу разобраться!
>>2500733 volatile не спасает от перестановок команд в рантайме, он вообще не про синхронизацию. >Я просто хочу разобраться! Читай книжки, смотри видосы. >внутрь атомика тупо встроен мутекс Nyet. std::atomic<T> могут быть с мутексом, а могут и без. Зависит от платформы. >как добиваются >как тогда написать Допустим спинлок на std::atomic_flag. Он атомарен всегда и везде, где есть C++ компилятор.
>>2500733 >поток не произошло в момент, пока выполняется lock() В ассемблере есть префикс lock, гарантирующий что следующая операция будет атомарной. Работает довольно ограниченно, но на вызов lock() хватит. Как и на операции с небольшими данными.
>>2500835 В одном потоке отрисовываешь окно, в другом выполняешь работу. Так работают загрузочные экраны в играх, установщики, архиваторы и т.п. Так или иначе, они либо запускают другой процесс, либо создают новый поток. А ещё, если у процессора несколько ядер, можно ускорить какие-то вычисления.
>>2500846 >если у процессора несколько ядер, можно ускорить какие-то вычисления Дурацкая фраза-клише. Какие еще вычисления, нет никаких вычислений.
Вот есть хорошая программа irfanview, там пакетная обработка изображений. Всё заебись. но медленно, пердолит одно ядро по одной картинке по порядку. А у меня 16 потоков, мог бы ускорить, но хуй тебе, а не ускорение. Вот какова реальность. Пиздеть теоретически все горазды, а на практике всем насрать, пишут как удобнее, а мультипоток это жопная боль, никто не хочет ним ебаться.
>>2500861 То есть тебе попалась одна конкретная программа, написанная долбоёбами, и ты теперь думаешь, что браузеры, IDE и игры тоже не используют многопоток?
>>2500861 >Дурацкая фраза-клише. Какие еще вычисления, нет никаких вычислений. > пишут как удобнее, а мультипоток это жопная боль, никто не хочет ним ебаться. И нахуя ты сам себе противоречишь?
Гои пишут на языке, который разрабатывался вообще под другую систему несколько десятилетий назад, а индустрия их подталкивает. Пишите, бгхатья гои, мы вам ебанем с++ 50, не останавливайтесь главное, нам же бабки капают. Главное не говорить гоям о медленной памяти, а то бабки то нам надо отработать на том, что заточено под ситуацию 70-х годов. Гои воистину ГОИ пиздец
>>2501139 А можно узнать, что принципиально нового появилось в вычислительной технике с 70-х годов, кроме увеличения "мощности"? Предлагаешь на ЖС писать?
>>2501139 Современные кресты к тому 40-летнему говну мамонта никакого отношения не имеют. Куколды, которые пилили то говно, пусть на нём и пишут под свою систему, если из этих пенсионеров хоть кто-то ещё жив.
>>2501168 Лучше на лиспе тогда. Да и под капотом все та же лапша работает на которую ты жалуешься, а аппаратно функциональщина не выполняется пока что.
>>2501164 >принципиально нового появилось в вычислительной технике с 70-х годов Дед, ты выпил там? Суббота, понимаю (нет) >Предлагаешь на ЖС писать Тебе ничего не предлагаю нового. Ты гой. а для израильских братьев лисп и понитель хай братья! Продолжаем наебывать гоев, они не догадываются
>>2501242 Алсо, твоя скриптовая хуйня в любом случае не способна выполняться настолько быстро, чтобы упереться в узкое горлышко io. Этим как раз страдают те языки, которые ты критикуешь.
>>2491360 (OP) сап. пытаюсь нагуглить решение задачи: надо сделать альтернативное решение для проверки на четность с помощью обычной функции, которая возвращает modulus %2 аргумента типа return input %2 == 0. Я подумал может как-то проверить только последний бит числа и тем самым избавиться от лишних вычислений, но не знаю как это сделать. Если я буду пользоваться методом сдвига битов чтобы сократить число до последнего бита, то проблема в том что я не знаю размер числа и дополнительные проверки займут время. Наткнулся в вики на проверки хеш-суммы, но это похоже не то что нужно.
>>2501417 Спасибо. На стаковерфлоу почему-то вариант который занял больше всего голосов утрверждает что в асемблерном коде нет различия между двумя вариантами. Но у стандартного еще и преимущество потому что работает с отрицательными числами.
>>2501487 Получается различия только в -Os и в результате только в количестве использованного места? Это повлияет на быстродействие благодаря уменьшению .exe?
>>2500846 >В одном потоке отрисовываешь окно, в другом выполняешь работу. Так работают загрузочные экраны в играх, установщики, архиваторы и т.п. самое распространенное заблуждение последних лет прекрасно можно и гуи отрисовывать и работу делать в одном потоке почему что 30 лет подряд разработчики делали прекрасные сложные приложения с гуи интерфейсом, и все это работало в одном потоке но по видимому теперь это становиться забытой магией древних
>>2501242 да ладно аж три уровня кешей на одной подложке с cpu, оператива ddr5 c пропускной способностью 32гб/c, современные ssd c безумно быстрым рандомизированным чтением по сравнению с hdd, через интерфейс nvme через шину pcie у последних вариантов контроллер на одной подложке с cpu..
Пытаюсь передать объект класса в другой класс, не получается. Пробовал через * и & по гайдам в тырнете, чёт везде хуйня и не работает. Можете кинуть пример?
Хочу просто в конструктор класса передать уже проинициализированный другой класс, который будет храниться в private переменной. После этого требуется дёргать методы переданного класса при необходимости.
Фактически простейшая задача для какой-нибудь java разработки, но на плюсах случился обсёр.
Разрабатываю в PlatformIO + C++11 с Arduino Framework, если это имеет значение.
>>2502092 Диплом он вроде как про что-то новое. Terrain engine уже как 10 лет назад написали. И Speed Tree написали и PhysX с Bullet'ом и ещё всяких движков разных.
>>2502107 Уже бы ничего нового в бакалавриате не осталось давно, еслиб каждый студент что-то новое находил. Диплом это научно исследовательская работа, у которой должно быть обоснование. И это не обязательно новизна, просто она самое очевидное что может быть.
>>2502092 немного мало. нужно ещё-что то. вишенка. Например, визуальное программирование. чтобы туда сюда эксель инфу переделывал. Можно было выделить выброс, и в эксельку экспортировать
>>2491360 (OP) Двач, я неудачник 30 лвл эникей. Я долго понял, что сделал не так. И сегодня всё понял. Я понял, что надо было вкатывать в кодинг, но меня пугали люди, пугало бесконечное количество фреймворков, этот спринт технологий и спринт умов, огромное количество 20-летних парней сверх-замотивированных и стремящихся к конкуренции. Да ещё ультра токсиков, мыслящих "ты либо успешный успех, либо отсталый дед" Я понял, во что надо вкатываться. Надо вкатываться в кресты. Много лет назад, в универе, был дружбан, для которого кресты были философией. С ним было легко общаться, он не стремился показаться умнее или глупее, чем он есть. Я понял, что это философия. Кресты они здесь и сейчас, они всегда. Это философия. Как вы оцените, правильно ли вкатываться в кресты, если я мечтаю просто кодить на них, делать нормальную работу, без тимлидства, без жуткого задроства, а поменять сам стиль жизни под кресты? Один раз, и навсегда?
>>2502200 Значит не норм прошло. >>2502215 Не лезь блядь, вкатывайся во что попроще. А если называешь себя неудачником, то будешь неудачником вдвойне, ведь вакансий по плюсам крайне мало.
>>2502215 нулевые - десятые путь был такой обычно: эникей - сисадмин - девопс альтернативный путь - 1с так же некоторые увлекались железом и уходили в ремонтники - ноуты, мобилки, etc
Анон, помоги с GTEST. Писал на симейке, гтест скопипастил в фердпарти, все норм. Щас переезжаю на дебиан, и решил ради гибкости вырезать гтест из своего репозитория в пользу деб пакета. И что-то насосал я хуев, не видит смаке нихуя!
1) Деб пакеты gtest и googletest ставятся в /usr/src 2) GTEST_ROOT не реагирует ни на одну из этих папок 3) на стековерфлоу пишут, что надо сделать cmake .. либы и make install, но это полная параша блядь, это вообще не правильно нихуя 4) я не понимаю, как быть, если я захочу автотест в докер образе запустить. Вроде бы ставить зависимости дпкг, в том числе хедер-онли, нормальная процедура для автотестов, но такая пидорасня с гтестом как-то всё почему-то усложняет блядь
Как правильно пользоваться этим говном? Почему стало резко сложно так?
Короче, норм результат съема картинки с сенсора (или другого высокоскоростного интерфейса, хоть шдми) и передачи по Ethernet (предположим, делаем ипкамеру) достигается только на специализированных DSP (гугли линейки AnalogDevice по категории Видео) или ПЛИСинах (Xilinx Virtex, ZYNQ). Комп сосет, с задачей справится, но лаг будет пиздец (можешь через влц перепаковать трафик из веб-камеры в ш264, лаг будет минута).
Щас в качестве базы часто используются SoCи, где пара мощных арм ядер для фронтенда (сетевой обмен, логика, может всякие либы типа опенцв) и бекенда (тензорные ядра, какие-то матричные ускорители и проч).
Помимо задачи сжатия для передачи по сети, очень интересной является обработка самого изображения с матрицы. Сюда входит и дебайеризация (или как там правильно), и цветокорр, и улучшалки, и все такое. Очень интересная и глубокая тема, очень-очень много чего ещё не открыто. Изучение всей этой темы - матан, с++ даже может и не понадобится при создании системы (если только не использовать Xilinx HLS). Матлаб и питон + матан, учебники и статьи твои друзья, языки программирования всего лишь инструмент.
Видеообработка годная специальность, полезная, глубокая, востребованная. Хочешь начать вкатываться - своруй матлаб и смотри примеры
Аноны, подскажите как по умному вытащить цифры из строки? Пусть есть строка и там цифры (разделенные пробелами и возможно другими символами). Извлечь хочу в вектор. Понятно что можно циклом пройтись, но может есть что то типо split, чтобы сделать всё одной строкой.
>>2502565 Ну очевидным перебором. У каждой цифры есть код, поэтому проверяешь каждый символ на принадлежность диапазону в таблице аски, писоешь. По любому есть такая библиотека уже.
>>2502643 Наличие вышки говорит о том, что кандидат усидчивый, обучаемый и, возможно, помнит курс математики, которая в плюсах нужна чаще, чем в языках для вебмакак. Ну и есть шизанутые госконторы, которые всегда требуют вышку, там часто зарплатные вилки жёстко зависит от уровня образования. >>2502644 Да, он хоть и не будет приравнен к опыту на плюсах, но всё равно зачтётся то, что навык разработки хоть каких-то проектов у тебя есть, т.к. приобретаются умения, не зависящие от языков. Может даже перевесить отсутствие вышки.
Антонио, норм ли идея слеплять цифры в строку, а потом обратно конвертировать в цифры? Например чтобы тут "ccc 921 abs" вытащить 921 одним числом, а не 9, 2, 1. Лучший вариант который я пока придумал, это слеплять цифры в строку пока не наткнусь на не цифру, и переводить обратно в число. Но это скорей всего говнокод. Как сделать хорошо? анон >>2502562
>>2502655 >кандидат усидчивый, обучаемый Ох ебать, а то что я вычитал несколько книг по плюсам, Кормена, Таненбаума, cppreference, написал 2 не самых примитивных попенсорса да ещё и на литкоде 3 сотни задач нарешал им не показатель?
>>2502441 >этим говном Да никак. От него пердолей больше, чем пользы. Когда тестов станет много и он начнёт тормозить придётся пердолиться снова. Забей и переводи проект на интеграционные тесты.
>>2502511 >и передачи по Ethernet Данные с сенсора даже в гигабитный ethrnet не пролезают. Ты либо его на камере обрабатываешь либо жмёшь в mjpeg/h264/h265 естественно с потерями, что очень не очень.
>сетевой обмен, логика, может всякие либы типа опенцв это тоже бэк, фронт это web, который на твоей камере крутится
>бекенда (тензорные ядра, какие-то матричные ускорители и проч). это не бэк, это GPGPU на cuda под opencv, дебаеризацию, цветокоррекцию и свёртки для нейросетей
>>2502664 Ну взять то тебя возьмут, но на предприятии может быть табель о рангах. Например ты не можешь занимать позицию руководителя отдела, если у тебя нет кандидатской (и тем более вышки). Позиции это деньги и по ним двигают вперёд прежде всего тех, у кого есть научный бэкграунд (цитируемость в журналах, выступления на конференциях и так далее). Это я про НИИ рассказываю. В итоге ты будешь сидеть на дно зарплате и превозмогать через ебучую бюрократию в должности лаборанта или инженера младшей категории.
>>2502664 просто ВО подтверждается документом, есть чёткий критерий - есть бумажка/нет бумажки. А объективные твои знания ещё проверять надо, экзаменовать тебя что ли. А в ВУЗе уже всё сделали, проэкзаменовали, документ написали и печать поставили Ваш капитан Очевидность
>>2502733 И тем не менее >>ноль смысловой нагрузки Знания без умения ими пользоваться это бесполезный мусор. Цитировать знания без смысла это попугай, принтер копипасты, гуглобот, или попромту слабоумный даун.
>>2502185 Зачем кидаешь исключение, если можно Статик ассертом ошибку в компайл тайме выдать Плюс, если ты сделал функцию с концептом, то зачем нужна вторая функция возвращающая ошибку Если у пользователя тип не подходит по концепту, то ему компилятор сам ошибку выдаст
>>2503113 не правда, плюсы были есть и будут. Всякие веб макаки неосиляторы, конечно, тебе расскажут что они уже все и плюсы не нужны, но ты их не слушай. Правда хуй тебя кто возьмет на проект с плюсами без образования.
>>2503388 Спасибо, но чем ебашиться с режексами лучше по старинке. Мне не нравилось, что приходится гонять типы данных из char в строку, из строки в int и дальше, а так в плане производительности обычный цикл вполне не плох.
Code complete тебя заставляют выдрачивать, чтобы проект мог жить десятки лет. Барен хочет иметь возможность в любой момент выставить тебя на мороз и заменить на более удобную макаку, чтобы она оперативненько могла вкатиться в проект.
Ученого же чаще всего интересует решение относительно небольшой задачки здесь и сейчас: получить численное решение, проверить гипотезу, нарисовать график и т. д.
>У датасаентистов та же болезнь. В геймдеве еще гораздо толерантнее относятся к культуре программирования.
>>2503408 >лучше по старинке Зачем тебе тогда вообще string и vector? В 2022 циклы в подобных задачах нужны разве что в качестве упражнения на циклы, и только. И упражнения с циклами не избавят тебя от необходимости знать стандартную библиотеку. Уж лучше с ней поупражняйся.
>с режексами Есть еще всякие copy_if(), transform(), лямбды...
>Мне не нравилось, что приходится гонять типы данных из char в строку, из строки в int и дальше Вот тут тебя интуиция не обманывает: в канонах строго типизированного языка это лютый говнокод - кастовать типы по первой прихоти.
>в плане производительности обычный цикл вполне не плох. Кусок памяти копируется сильно быстрее, чем тот же кусок копировать по отдельным байтам. Твоя "оптимизация" кроме того, что скорее всего избыточна, еще и наивна. Куда полезнее было бы обобщить решение до возможности работы с потоками, например, а не прибивать гвоздями типы string и vector<int>.
>>2503444 >Зачем тебе тогда вообще string и vector? >vector Хранить int-ы. >string Строка даётся на вход, помимо самих int-ов в ней ещё всякие полезные символы, которые нужно учитывать. > знать стандартную библиотеку Не знаю, поэтому и спросил тут как в C++ подобное делается. В том же питоне можно сплитами всё легко поделить, например. На всяких форумах люди советуют херачить циклами. Может я не там смотрю. Ещё в моём случае возникает проблема - пусть мы нашли какое то число в строке. Можно его сразу же сконвертировать в int. Но мы не знаем сколько в нём цифр, поэтому вполне может оказаться что следующий символ тоже числовой. Я в этом случае использую "буфер", т.е строку в которую добавляю цифры пока не окажется что следующий символ уже не число. Дальше этот буфер конвертируется в int и добавляется в вектор.
Сап двач. Такой вопрос. Планирую вкатиться в программирование в общем-то для личных целей - самому писать простенькие игры, текстовые новеллки, пилить картинки для них и т.д. Планирую выучить С++ как самый оптимальный для этих целей. Отсюда вопрос первый: его вообще потянет человек, никогда программированием не занимавшийся? Я вполне сообразительный, но боюсь даже не столько сложности языка, сколько сложности организации обучения сложному языку, ибо для меня это безбрежное чёрное море. С каким-нибудь питоном легче, я думаю, там и в учебных материалах особо не заплутаешь, и их меньше. хуйню говорю?
Ну и второй вопрос. Чисто теоретически: стажёра с++ могут хоть под шконку с ведром мочи, да взять на работу? Знаю, знаю, что сейчас тысяча человек на место, и даже скилловые ребята сидят без дела, времена прошли и т.д. Просто хотелось бы знать, что хоть гипотетически есть призрачные шансы обратить личное занятие в работку, иметь подушку безопасности, так сказать. Но, наверное, нихуя? Скорее всего, вкатиться без опыта могут только какие-нибудь джаверы.
>>2493383 >однобуквенными переменными Да как вы заебали. В подобных вещах переменная должна выглядеть так же, как она написана в научной статье/учебнике, на основе которого написан кусок кода
например, какая-нибудь ненастоящая простая формула типа a[j] = b × alpha × T + c[k] × g × dT
>>2503607 Я не про формулы, а про вообще весь код. Строки однобуквенные, массивы однобуквенные, названия всех функций, классов и методов однобуквенные, иногда даже инклуды однобуквенные. Дай им волю, и они будут переопределять кейворды через #define, чтобы сократить return до y. Переменные объявляются в алфавитном порядке, когда алфавит заканчивается, начинаются цифры: int a6 = q11. С формулами любому дауну понятно, их даже в громоздкой жабе пишут с общепринятыми научными обозначениями.
>>2503602 std::stringstream - библиотечный класс. Функционирует так же, как другие потоки cin, cout, файловые потоки. Только stringstream создает строковый буфер в памяти. Пишет/читает не в консоль, не в файл, а в строчку в памяти.
temp // это строка stringstream(temp) //это фактически вызов конструктора класса std::stringstream с аргументом temp В результате создается безымянный объект типа std::stringstream , инициализированный содержимым строки temp. Безымянные объекты долго не живут, если тебе это интересно. >> found // читает из безымянного потока и пишет в int-переменную found. if(...) // на самом деле не читает/пишет, как написано выше, а только пытается прочитать и трактовать прочитанное как данные типа int, исходя из того, что found имеет тип int. Если все прошло норм, то возвращается true, если нет, то нет.
Программа, кстати, не отрабатывает случаи вроде "letters12345...". Только цифры, стоящие в начале строки, она считает в found, иначе в if вернет false.
>>2503624 Это вопрос зрительного восприятия. Проще читать код, когда метод целиком влезает в экран и когда его строки имеют длину равную ширине книжного листа. То же самое касается именования - "книжный" формат my_method_name воспринимается легче, чем myMethodName (если ты не из дойчей).
>>2503647 Снейккейс вс кэмелкейс, извечный вопрос. Хотя я так для себя в последнем своем проекте ощутил (спустя долгого перерыва проганья на плюсах), что второй мне милее. Но, подозреваю, что это после поганого pl/sql, где поебат на регистр, что порядком меня доебало и хотелось разнообразия. Ълядь, в этом поделии корпорации зла можно даже объявить переменную с именем "отака хуйня malятa", что уж говорить о регистре.
>>2503643 Да не трясись ты. скуф. Я потестил и все оказалось как я предполагал. Полиморные типы полностью выводятся только в рантайме - учи матчасть, сука. Только вот почему-то исключение в случае неблагоприятного исхода отловить не могу. Кто сможет отловить - тому пять баллов.
>>2503719 Попробовал этот способ, но он вывел первые 3 int-а. И я хз как учитывать остальные символы, например в зависимости от того есть ли '@' или '' нужно будет думать что делать с int-ми после этих символов (например после собаки следующий int нужно удвоить, показывает что следующие 2 int-а не должны повторяться и если они повторяются то их вообще нужно пропустить).
>>2503627 Спасибо, вот это уже больше похоже на то как надо делать в C++. То есть stringstream(temp) >> found отправляет char в int, и если в char цифра, то if выдаёт правду, а пустой found по умолчанию ложь? А где они очищают found, чтобы в следующей итерации он опять не выдал правду?
>>2503933 > пустой found по умолчанию ложь? Пустого found быть не может.
stringstream(temp) >> found "преобразовывает" то, что хранит, в значение типа переменной found, затем возвращает ссылку на себя же. Если преобразовать не получилось, то в объекте сохраняется ошибка. Потом этот объект методом operator bool() преобразовывается, собственно в bool. Полученное значение будет false только если в результате того преобразования произошла ошибка.
> А где они очищают found found нельзя очистить, там всегда будет какое-то число. Даже когда ты пишешь int found; там всё равно есть какое-то значение, его мусором называют. Можно разве что явно обнулить его, но в данном случае это не нужно, потому что found используется только в той ветке.
>>2503933 >пустой found по умолчанию ложь? Вся запись целиком { stringstream(temp) >> found } это на самом деле вызов функции operator>>() "наиболее подходящей" среди всех перегрузок. У этой функции есть возвращаемое значение и это значение - ссылка на сам поток. Именно поэтому можно писать цепочки вроде cout >> found >> pound >> bound. У потоков определено неявное преобразование в тип bool. Таким образом if'ы и узнают о состоянии потока, а не по значению читаемой переменной.
>где они очищают foun не требуется.
> stringstream(temp) >> found отправляет char в int, и если в char цифра, то if выдаёт правду Исходя из того, что found имеет тип int, поток извлекает символы из строчки temp, до тех пор, пока не встретит первый не-цифровой символ или конец строки. Если он считал хотябы одну цифру, в конце он делает неявное преобразование прочитанного в тип int и только тогда пишет в found.
>temp И да, temp - это не вся твоя исходная строка целиком, а только текущее слово из этой строки.
>>2504355 >в конце он делает неявное преобразование Точнее, у него-то там под капотом скорее всего прописано явное преобразование. Просто по тексту программы оно выглядит "неявным".
>>2503986 >>2504355 >не требуется. Тогда как меняются цифры? Например почему выводится > 1 2 3 4 а не >1 12 123 1234 ? >Если он считал хотябы одну цифру, в конце он делает неявное преобразование прочитанного в тип int и только тогда пишет в found. Имею в виду, если в found какой то int записан, куда он девается?
>>2504436 > Имею в виду, если в found какой то int записан, куда он девается? Никуда, туда просто записывается новое число. Почитай что-нибудь на тему работы компьютера. Первый том Столярова, например. Или «Код» Чарльза Петцольда
Что может быть лучше пикрила? Назовите хоть одну среду которая не сильно хуже visual studio. Банально симпатичный и удобный дизайн, все понятно (вкусовщина, но все же) профилировщик охуенный, слепки памяти, отладка гпу
>>2504662 У студии конечно есть сильные стороны, но дизайн в них не входит Ну проблемы в основном как раз таки в интерфейсе, любителям все под себя настроить не подойдёт, но при этом и новички ахуевают Туда же прожорливость и постоянные затупы у меня только на последней версии это решилось, и когда на ссд его перенес
Госопди, ну и дрочь. Скачал emacs, создал проект, не работает подсветка. Надо идти во вкладу препроцессинг. А ее нет, потому что проект cmake. А я хочу писать cmake чтобы потом можно было перенести в случае чего
Похуй. Vs code оставлю. Это пиздец какой то. Еще время мне тратить на ерунду всяку. Хотел вкатиться в разработку на опенсурсе, без создания 100 акков для каждой ide. Не вышло. Чому все такое хуевое? Почему в visual studio, qt, clion ты просто заходишь в акк и прогаешь? Легко изменяешь компиляторы, флаги в cmake ставишь, а тут треш какой-то.
Короче я хуй знает че делать, помогайте. Хочу писать код в свободных редакторах, но чтобы это было удобно, почти как в нормальных ide. Чтобы дополнения работали, компиляторы легко менялись, cmake поддерживался, профилировщик был хороший
>>2504816 Не знаю работает это или нет сейчас, можно было халявную лицензию на JetBrains получить на Stepik (на все IDE на три месяца). Решаешь три задачи на написание кода на курсе с сертификатом (это важно), получаешь лицензию. Три месяца проходит, ещё три задачи решаешь (про запас нарешать нельзя)
Хочу попробовать состряпать говна на UE Стоит ли для этого вкатываться в кресты, или хватит блюпринтов? Опыт в промышленном погромированнии есть, но на более легких языках го, пистон, джава. Крестов боюсь, но неизвестность манит
>Крестов боюсь, но неизвестность манит Если хочешь заходить со стороны крестов, то про собственно UE можешь преспокойно полностью забыть на ближайшие год-два.
>>2499236 Так кути в вскодиум можно полноценно и абсолютно бесплатно использовать. Оба обеспечивпют твои хотелки. И они опенсурс, можешь сам собрать. Да и силион сейчас так же какраньше ломается скриптом,тчто на винду что на линукс. Брат жив. А студия говно индусское.
Анон, как грамотно закроссплктформить использование Asio из Boost версии 1.62 и более новых? Проблема в смене io_service на io_context и ещё нескольких вызовах. Пока ничего умнее скобок компиляции с проверкой версии буста ничего не могу придумать
>>2504842 >Есть еще проблема с IntelliSense Отъёбывающие подсветка/автокомплит/анализ кода это вообще во всех IDE (и не только в плюсовых) нихуя не редкость при работе хотя бы со среднего размера проектами.
Делаю стек поверх массива фиксированной длины. Компилятор швыряет варнинги по поводу того, что я массив не инициализирую.
А зачем мне инициализировать массив? Ну заполню я его нулями, так эти нули все равно будут ничем не лучше любого другого мусорного значения. В чем я не прав?
>>2506087 Я тут недавно забил на варнинг о том, что инициализация членов класса происходит не в порядке их объявления, и потратил часа два, чтобы понять, почему у меня блядь прога крашится где-то в середине
>>2506264 Юнион это топ тема. Говорит о том что разными способами можно обратиться к одним и тем же данным в памяти. На пример: структура изображает матрицу, в ней юнион по элементно, по векторам, обьявлены по разному, но указывают на одни данные. Особенно круто при использовании авх.
>>2506264 >В чём суть этих енамов? Автору нравится так определять константы, мб стайлгайд такой, хуй знает.
>Алсо расскажите простыми словами про юнионы, чёт я не врубаюсь. Попробуй сделать массив в который можно будет пихать элементы разных размеров (например, int16_t/int32_t/int64_t) или свою реализацию std::expected — без практики оно не поймёшь всё равно.
Я ковыряюсь с sqlite,и возникла следующая проблема. Когда я исполняю запрос SELECT * FROM DB,callback,стандартная функция ,печатающая данные таблицы, игнорирует переносы строки,из-за чего на консоли все данные сливаются в сплошную линию. Как пофиксить? Это не критично,но при отладке не удобно
>>2506427 Выяснилось,чьо проблема в другом. Для удобства я захотел завернуть интерфейс для работы с sqlite в класс. Для вывода нужна функция callback,которую нужно как-то разместить внутри класса,чтобы она работала,а то у меня она не работает. Но ЧСХ, если эту функцию разместить в main.cpp,то все зарабоает. Но мне нужно,чтобы она была в классе.Что я делаю не так?
>>2506737 Генерируешь секретный ключ, вычисляешь хеш-функцию от конкатенации ключа и полей структуры, результат передаёшь ещё одним полем в структуре. Если кто-то изменит поля структуры, хеш будет отличаться, а ты поймёшь, что подписано не твоим ключом, т.к. хеш будет отличаться от хеша, сгенерированного тобой для проверки. Т.к. ключ знаешь только ты, корректный хеш сгенерировать тоже можешь только ты. Это самопальный алгоритм подписания, есть нормальные либы, но там уже заморачиваются с сертификатами, чтобы проверить подлинность мог кто угодно, а не только тот, у кого секретный ключ.
>>2491360 (OP) ищу библиотеку для довольно простых операций такое на пипон и жыэс давно есть и работают в цпп же... такая параша караул, либо нет ни документации ни примеров либо всё очень трудно и непонятно и хз для кого писалось это просто издевательство какое то
>>2506865 Клонов мейка в крестах и так дохуя. Лучше нормальную систему сборки напиши, которая сама умеет качать зависимости, собирать проекты без вызова сторонних make/msbuild/говнонейм, работать на основных платформах и с основными компиляторами. В других языках давно есть.
>>2506950 Если ты совсем нулевой, то изучай только устоявшися языки, rust все еще перспекитвыный язык, для тех кому нужен баланс скорости и безопасности, но only rust вакансий все еще мало, да и ждут там как правило тех кто понимат зачем тут rust а не с++ наример, тоесть сталкивался с неопределнным поведением, затыками в многопоточности, утечками памяти и т.д. В общем сли перекатываешься в "системное" программирование из других сфер можешь брать rust, в остальных случаях c++
>>2506966 Легаси в низкоуровневом программировании вообще больше чем где либо, и это не только про плюсы, в том же расте ситуация через n лет будет та же — никто на таких языках не хуячит стартапы, не проводит а/б тесты выкидывая код после, не хуячит новые фреймворки каждую неделю итд и будет куча легаси.
>>2506903 Потому что мне впадлу делать темплейт или перегружать метод для lvalue и rvalue аргумента и делать emplace(std::forward), а так плюс-минус правильная семантика получается, не считая лишнего копирования string handle. >>2506906 Да, валидацию я не сделал. Надо при посещении таргета ставить в true некий флаг visited, чтоб при повторном попаднии сюда throw-ать exception про cyclic dependency. >>2506933 Я спать хотел уже. Сейчас сделаю.
>>2506563 Скопировал текст с картинки,переместил описание функции callback в private,но получаю следующие ошибки: И если этот способ не работает,то как сделать способ со статическим методом?
Нужны ли в крестах декораторы? Какие задачи они могли бы решить? Из наиболее очевидного для меня - скрывать вермишель из шаблонов, но мб ещё для чего-нибудь пригодится? Думаю какой бы полезный пет проект написать.
>>2507205 Сделал через статик,положив колбэк в private. Спасибо,все заработало. Если не лень,то можешь объяснить,почему без static не работало,а с ним заработало?
>>2507229 > Если не лень,то можешь объяснить,почему без static не работало,а с ним заработало? Потому что без static ты определяешь метод класса, а с ним - функцию. Указатели на метод класса это в плюсах вообще хуйня какая-то, которая может вести себя хуй пойми как.
>>2506921 Тебе очень внимательно стоит прочитать про хранение чисел с плавающей точкой на компе. Твой вопрос некорректен, или переформулируй его в "как в цпп округлять до iго знака"
>>2506921 Если тебе надо считать точные значения без ошибок округления флоата, юзай какую-нибудь либу для длинной арифметики, например, GMP или Boost.Multiprecision, в котором есть обёртки для GMP. Работает медленнее флоата, это цена за точность.
можешь написать пожалуйста как мне управлять углом типа, мне нужно три позиции 0, 90 и 180 градусов а значение задать что то по типу pos0→(0-255) = x>>2508003
>https://en.cppreference.com/w/cpp/numeric/random/rand >There are no guarantees as to the quality of the random sequence produced. In the past, some implementations of rand() have had serious shortcomings in the randomness, distribution and period of the sequence produced (in one well-known example, the low-order bit simply alternated between 1 and 0 between calls). > >rand() is not recommended for serious random-number generation needs.
Помогите с этим дрочевом из массивов, функций и указателей в C. Не могу понять что не так, в функции на строке с printf всё выводится, а на следующей (с strcpy) выдает exception - segmentation fault. Как фиксить?
>>2508462 А, точно, функция не при чем. Тогда как сделать то, что я пытаюсь сделать? Видимо как-то изъебнуться с указателями, но я не понимаю как именно
Раз про вулкан пошло. Знает кто как семплер прикрутить к индирект драв нв / шайдинг меш нв - шнйдерам? К базовым вертекс - индекс все работает а к этим хз как.
Есть некая иерархия классов, унаследованных от единого интерфейса (с виртуальными методами). При сериализации в массив байтов для передачи по сетке, соответственно, кладётся некий айдишник типа, чтобы на принимающей стороне этот айдишник прочитать и десериализовать корректно передаваемый объект.
Хочу это дело упростить, завести что-то типа мапы, где ключом будет некий идентификатор, получаемый из std::type_info (поле hash_code), а значением указатель на функцию, которая умеет парсить соответствующий тип. При старте программы накидать в мапу функций под сериализуемые классы и вызывать их из кода, который парсит сообщения.
Протокол обмена бинарный, если что. Норм идея или можно сделать другим способом? Если у меня две отдельные проги, использующие одни и те же хедеры (частично), то будут ли значения std::type_info одинаковы для одних и тех же классов при компиляции проектов по отдельности?
>>2509406 Если я правильно помню, в начале класса должен лежать указатель на таблицу виртуальных функций. И по нему можно сказать, с каким классом по факту имеем дело.
Моя проблема в том, что выходит так, что надо самому придумывать некие константы, которые не будут меняться между запусками программы и компиляциями, т.к. программ у меня две -- клиент и сервер. И "идентификаторы" типов на них должны совпадать, для корректного определения, что за данные пришли по сетке. Я типа над этим голову ломал, можно ли сделать так, чтобы оно само выводило идентификаторы программно, а не я их зафигачил в коде в какой-нибудь enum.
Обращаюсь к нормальным людям, а не к тем, кто прошел курс на степике по плюсам и кричит, что работы нет. Как обстоит вопрос со стажировками в Европе? Сильно лучше/хуже чем в РФ?
тред баз данных мертв, поэтому спрошу здесь Нужно на SQLite сделать запрос, что если нужный текстовый столбик, в нужной записи не равен '' - пустой строке, то значит мы удаляем из этой строки один символ. Если все таки равен пустой строке, то мы берем текстовый столбик из другой записи.
>>2509934 >>2509937 Стоп, то есть вы хотите мне сказать что сишная функция и функция с тем же названием но из std:: никакой разницы в реализациях не имеют и работают и имеют одинаковую производительность?
Есть базовый класс с виртуальными функциями. Наследуюсь от него. Хедер (.h) и исходники с имплементацией (.cpp) наследников.
Пихаю класс-наследника в один хедер и цпп, сборка обсирается с ошибками undefined reference to vtable for и прочая паебень. Переношу этот же класс-наследник в другой хедер и цпп, эта хуедрыгало собирается нормально, без ошибок. Код один и тот же, инклюды все подключены. Чё за поебень? Проект на Qt, система сборки qmake. Типа эта параша линкеру не может в нужном порядке подпихнуть объектники чи шо?
Пиздец нахуй. Вощем, забыл в другие подпроекты добавить хедеры и исходники новые. А эта Qt-параша тупо собирает все проекты из дерева и естественно не сообщает, на каком из них обосралась. Сука, весь вечер убил на это дрочево.
>>2491360 (OP) В прошлый раз вы послали меня нахуй, но я вернулся. Как блять вычислить матрицу 1024х1024????? вроде нашёл рабочий код, но не могу никак запустить проверить. Я за плюсы вообще не шарю, а тут ещё и указатели какие-то. Можно в двух словах сказать как запустить код?
>>2510602 > Можно в двух словах сказать как запустить код? Выделяешь память для трёх матриц, заполняешь первые две, потом все три передаешь в функцию. > float ⚹⚹ Задумчивое ебало питекантропа представили?
>>2510636 Ну типа. В твоём случае float ⚹⚹ptr = new float⚹ [N]; for(int i = 0; i < N; i++) ptr = new float[N];
Но ещё можно исправить ту функцию. Поменять «указатель на указатель на float» на обычный «указатель на float» (звёздочку одну убрать), и к элементам обращаться не как ptr[j], а как ptr[i⚹N+j]. Правда массив в функцию придется передавать в виде reinterpret_cast<float⚹>(A), но зато объявление можно не менять.
>>2509634 Сейчас почти везде хайринг фриз, если ты про крупные конторы говоришь. Если живешь в РФ, то гораздо проще в яндекс на стажировку попасть, я думаю.
>>2510648 Смотря что ты делаешь Если будешь удалять/создавать строки в матрице, то лучше первый вариант Если будешь часто ее просто считывать, то второй
Почему мой .cc файл не видит самописные хедеры? Я конфигурирую с помощью сmake, - он видит эти файлы. Я понял, что он видит файлы потому что когда я открываю CMakeList.txt с помощью qtcreator всё окружение подгружается. При компиляциии пишет, что нет этого файла или директории.
>>2511068 Обычно так и делают, тогда можно просто std::array<type, n*m> Но это для матрицы фиксированного размера, если будешь вставлять элементы то будет худо
Когда я добавил target_include_directories( ${PROJECT_NAME} PUBLIC include) выдало ошибку о том, что cannot specify include directories for target "Gam" which is not build by this project/
Анчуаны, поясните, пожалуйста, за кастомные аллокаторы. Моей программе нужно часто выделять много мелких фрагментов памяти одинакового размера и на просторах интранетов я слышал, что использование кастомного аллокатора под задачу может повысить производительность программы. Собственно, вопросы: Можно ли использовать разные аллокаторы в одной программе? Какие подводные камни нужно учесть при написании своего аллокатора? Дарю шнекоход.
>>2512032 Сначала лучше ищи работу, а потом изучай. Походишь по собесам - поймёшь какое подмножество языка востребовано и где надо поднажать.
Рынок труда сильно тряхнуло и часть компаний по всем позициям остановили найм, а часть - уехали. Сейчас есть некоторое оживление, но скоро праздники и мёртвый сезон до марта-апреля.
Стажировки ещё есть и джунов берут - 100% можно залететь на оборонку - там сейчас найм и денег подвезли (но всё равно пановать не будешь и специфика может вызвать отторжение). В брендовых конторах надо писать HRам и спрашивать чё как и когда появится. Либо чеерз преподов на кафедрах искать.
Если есть время - то лучше поднажми на Python. Комбо из c++/python/University B.S. in Math/Physics/Computer Science пробивает любой блок.
>>2512032 >имея университетский уровень языка Это какой? Когда в у меня был С++ в универе, мы только дошли до полиморфизма и виртуальных функицй. Исключения, шаблоны, всякие RAII уже не проходили, лямбды и многопоточность с моделью памяти тем более.
>дальше его изучать и искать работу Ну С++ все еще живой и на нем пишут, так что если есть желание, то наверное есть смысл. С другой стороны, неплохо еще что-то уметь помимо самого языка программирования. То есть знать какие-нибудь кишочки сетей/ос или всякие штуки про графику. Ну или хотя бы Qt.
>>2512378 Умеет. Студия только под винду, но собирать умеет под WSL или удалённый линукс, даже дебажить умеет. Линукс уже давно в винду встроен, странно было бы если msbuild не умел бы собирать кресты под него. Только тут уже следующий вопрос к тулчейну, GCC умеет в модули хоть?
Сделал связный список как по книжкам учат. Ну узел, который указывает на следующий узел, который и т. д...
Теперь хочу константный список и обламываюсь. Если объявить const List<T> list{}, то все внутренности класса списка становятся константами. Тупо даже нельзя обход списка сделать, т. к. это требует изменения указателей. А самый прикол при всем этом, что можно создать метод, который изменяет значение в узле. То есть константность данных вообще никак не обеспечивается. Класс владеет только указателями и их изменять нельзя, а сами данные изменяй сколько хочешь.
Что надо знать чтобы вкатиться на ждуна? Какие зп у ждуна? Можно ли найти работу ждуном по удалёнке на запад? Я не совсем нулевой, 2 года отпахал фуллстаком.
>>2512394 >Тупо даже нельзя обход списка сделать, т. к. это требует изменения указателей А? При обходе ты же указатели в нодах не меняешь, а просто по ним проходишься
Ты как то поконкретнее вопрос задай
>>2512397 Зависит от сферы, с такими вопросами тебе лучше сразу идти интересующие тебя вакансии смотреть что в них требуется Универсального списка нет >Какие зп у ждуна? рандом >Можно ли найти работу ждуном по удалёнке на запад? Сейчас это сложнее чем когда либо но все еще возможно
>>2512399 >Зависит от сферы, с такими вопросами тебе лучше сразу идти интересующие тебя вакансии смотреть что в них требуется Универсального списка нет Ну я в целом неплохо шарю за стандарты, STL, на литкоде чисто на плюсах 150 задач порешал, копал буст и qt. Что мне лучше сейчас освоить чтобы стать крутым и повысить шансы на вкат - параллельное программирование или программирование под линукс?
>>2512401 Вообще интересует меня машоб и нейронки. Но в них я только недавно начал вкатываться со стороны навёрстывания проёбаных лекций матана и с питона. А кушать уже хочется. Так что я пока тем что наиболее интересно буду заниматься на досуге, а пока руку в крестах набью.
>>2512399 >А? При обходе ты же указатели в нодах не меняешь, а просто по ним проходишься Ну если манипулировать голимыми нодами, как это в Си делается, то да. А если собрать это все в класс списка, то нужно хранить как минимум указатель на текущий узел. У меня это сurr_. И константный указатель никуда не сдвинется. А ноды как раз-таки менять можно как хочешь, потомучто в классе нет членов-нодов, только указатели.
>Ты как то поконкретнее вопрос задай Как обеспечить константность данных в списке, сохранив при этом работоспособность самого класса?
>>2512411 >А если собрать это все в класс списка, то нужно хранить как минимум указатель на текущий узел. У меня это сurr_. И константный указатель никуда не сдвинется. Если ты только так хочешь список обходить, то никак тебе константность не обойти
А вобще обычно хранят только начало и конец списка
>>2512412 >Если ты только так хочешь список обходить Дело не в том, что я уперся в такую хотелку, а в том, что я других реализаций в литературе не встречал.
>хранят только начало и конец Это не суть. Реализация с пикрил перегружена избыточным функционалом просто в порядке упражнений. >А вобще обычно хранят только начало и конец списка Ну а как хранят, в виде чего? Если это указатели на ноды, то тут те же самые проблемы.
>>2512400 >Что мне лучше сейчас освоить чтобы стать крутым и повысить шансы на вкат - параллельное программирование или программирование под линукс? Бамп годному вопросу
>>2512437 >сделай нормальные итераторы Тоже склоняюсь к мысли, что иначе проблему не забороть. Но я не могу просто взять и все перепилить на свой вкус, т. к. к такой реализации привязано все повествование книжки.
Чего я на самом здесь и сейчас хочу - это выяснить пределы возможностей такой вот, широко распространенной в книжках, архитектуры. И со спокойной совестью записать себе в блокнотик, что поцаны так не делают.
>>2512450 >ты там хуйни какой-то Ну во-первых, мопед не мой. Пикрил 1 - так выглядит обход снаружи класса, то есть через публичные методы. Фактически обход реализуется через метод(ы) next() списка и узла.
>>2512512 Потому что инклуды говно, которое тащит за собой всё что в файле находится, а не только то что тебе нужно С модулями ты можешь спокойно всю стандартную либу тянуть imort std, а собираться это будет быстрее чем #include <iostream>
>>2512541 Про скорость сборки что то слышал? Или в университете еще не проходили?
Котаны, есть где-нибудь статья, книга, или шпаргалка, как исправить легаси код?
Ну вот допустим я знаю что вместо ручной инициализации нового элемента и ставки в push_back можно записать emplace_back(аргументы конструктора). Где еще почитать подобные советы по другим классам и функциям STL?
пишу прогу многопоточного умножения матриц, мне нужно, что если какой элемент матрицы вычисляется одним потоком, то другой поток, при обращении к этому элементу, переходил к вычислению другого элемента. Все элементы матрицы обернуть в mutex и проверять try_lock, чтобы понять, что элемент заблочен?
>>2513185 С хуев ли не работает, если работает? Если определишь конструктор перемещения, будет перемещать. Даже если не определишь - компилятор сгенерирует неявный конструктор, если у полей класса есть конструкторы (если нет, ошибку компиляции выдаст). Хотя если ты определил явно какой-то из конструкторов копирования, но не определил конструктор перемещения, то он конструктор перемещения не сгенерирует, и будет эти твои фу копировать.
>>2513262 Я понял, в чём твой затуп, у тебя, видимо, представление о перемещении в C++ как о чём-то радикально отличном от копирования, но нет. Объекты из исходного списка никуда не денутся, просто сами эти объекты могут измениться, если ты задал в конструкторе перемещения, чтобы исходные объекты менялись.
Вот глянь здесь пример, как можно перемещение использовать https://onlinegdb.com/hBpna9qwpj У тебя у Foo есть какие-то тяжеловесные данные (массив чисел размера сотня миллионов, например). Копирование такого объекта потребовало бы выделить в новом объекте память под такой же массив чисел и скопировать память массива из исходного элемента в новый - это долго. С помощью перемещения можно определить поведение так, чтобы из исходного объекта просто копировался указатель на эти данные, а в самом исходном объекте этому указателю присвоить nullptr. Исходный объект остался на месте, просто владение памятью ушло другому объекту.
Если ты не определил конструктор перемещения, то сгенерируется неявный конструктор, который будет вызывать конструкторы перемещения у каждого своего поля, у которых есть явные или неявные конструкторы, а поля элементарных типов или POD-типов (например, обычные int или double не указатели), просто скопирует.
>>2513450 Потому что std::move() ничего никуда не двигает на самом деле. Все, что она делает, это возвращает rvalue ссылку на свой аргумент. Но если T - ссылочный тип, то T&& свернется в обычную ссылку, чего нам не надо.
>>2513519 Переменная (с non-static data member в принципе так же, но чуть сложнее) не-ссылочного типа T v = init; связывает переменную v с объектом, который создаётся определением этой переменной (An object is created by a definition …. [0])
Для переменной ссылочного типа T& v = init; объект, с которым свяжется переменная, определяется инициализатором init.
Собственно, это как надо рассказывать про ссылки. А не "пук-среньк, ну это как указатель, только автоматически разыменовывающийся, понятно же, да? кхе-кхе, мням"
>>2513764 я имею ввиду то что в крестах не поддерживается великая сишная возможность которая автоматически обравнивает память под структуру с растягиваемым массивом
Как правильно перегрузить метод класса, чтобы он принимал на вход как обычную ф-цию, так и метод какого-то другого класса Делаю так: class TTimer { ... void Tick(float threshold, void (⚹func)()); template <typename T> void Tick(float threshold, void (T::⚹func)()); ... } ... timer.Tick<Graph> (1e6/60, graph.Draw);
Пишет вот это: undefined reference to `void TTimer::Tick<Graph>(float, void (Graph::⚹)())'|
>>2514183 Хз ты херни нагородил. Нахер там темплейт? Я такое делал просто через стд функцию в аргументе, а при вызове шли лямбдуи в ней что угодно, хоть класс хоть что. Вме работает.
Я хочу создать вектор из трёх чисел, при этом не выделяя память на саму структуру вектора. Т.е. как бы указатель, но не на вектор , а на элементы вектора. Можно ли это сделать через стандартный <vector>?Или есть другие идеи
Констекспр функции это конечно классно, но как сделать компайл тайм онли функцию Я хочу функцию чтобы каждый параметр в ней был констекспр Что то кроме темплейтов и дефайнов придумать можно?
Анон, такой вопрос. Существует ли ирл в крупных программах такая штука: - меняются условия выполнения программы, происходит такое редко, раз в 5 мин - под новые циферки компилируется матем. библиотека, написанная на шаблонах - через длл новый матем. модуль, который через динамический линк подключается к основной программе - ???????? Профит, супер-пупер быстрая либа.
Называется ли это рефлексией? Понятно, что в таком проекте у тебя должен быть в папочке с экзешником и компилятор, и цмаке, и исходники
Делаю небольшую шляпу под винду для курсовой,и возникла проблема. Программа имеет два режима доступа: клиентсткий и админский. Для того чтобы войти в админку,нужен будет пароль. Как мне реализовать хранение и изменение этого пароля? Ну и чтоб его нельзя было спиздить,удалить через файловый менеджер или прочитать в plain text? Базу данных в одну строчку сделать? Просто этот вариант мне не кажется оптимальным для одного пароля
>>2516033 Хранить хеш пароля на сервере или в другом месте, куда у текущего пользователя нет доступа, а у программы есть. Любые попытки спрятать пароль где-то у пользователя не надёжны.
>>2516045 Моя программа - это экзешник на компьютере,который делает базу данных для своей работы. Думаю,путь лучше пароль лежит в базе данных,но хешированный. Поэтому вопрос другой. Как организовать хеширование на плюсах? Есть ли нормальные библиотеки? А то только реализации sha1-2-3 от Васянов на гитхабе есть,которыми не понятно как пользоваться
>>2516088 Если пользователь узнает хеш пароля, он может запустить твою программу в дебаге/декомпилировать и подсунуть хеш алгоритму проверки пароля, ему даже оригинальный пароль знать не надо. Разве что ты рассчитываешь, что никто этим заниматься не будет.
>>2516137 Ну смотри. Сейчас на носу праздники и скорее всего следующий раунд найма, как обычно, начнётся в феврале-марте. Итого ты потеряешь 3 месяца деньгами. Чтобы компенсировать выпавшие доходы тебе понадобится весной устроиться на 75к минимум (60 + 180/12).
К лету у тебя уже будет 0.5 коммерческого и осенью можешь просить повышение или перекатываться на лучшие деньги или условия.
Ну и в праздники НГ + февральские + мартовские будешь пинать хуйцов за зарплатку.
>>2515707 Я же как раз указал время на смену процесса, например, 5 минут. Окей, пусть будет раз в час, а компиляция такого ядра занимает ~минуту >>2515749 В моей модели ядро с матаном, и предполагается, что меняется размерность матриц и константы. Матан на Eigen3 с константыми матрицами >>2515756 Можно, но сложность и объем невероятно возрастают по мере увеличения аргументов.
Как управлять сервоприводом без использования библиотеки servoh? то есть по даташиту через analogwrite, нужно посчитать какой шим подать можете подсказать как это сделать?
Анон, имеется вот такое примечание к заданию: читать из stdin построчно и завершить работу при считывании конца файла из stdin
и у меня максимально тупой вопрос - конец файла в данном случае вообще это что? передавать данные в программу как int argc, char *argv[] ? или конец файла это какое-то магическое сочетание клавиш при вводе в консоль? Спасибо за внимание
>>2517275 >в каком-то стандарте добавили такой синтаксический сахарок Мне попалось в книжке, которая еще даже про 98 стандарт не знает. Вообще это еще с сей идет, что имя функции само по себе кастится к указателю, так же как с массивами.
Просто тут контекст другой - объявление, поэтому не очевидно почему и как оно работает.
>>2517466 прочитай теорию базовую по алгоритмам, тот же грокай алгоритмы потом идешь решать задачи, можно с литкода что не может решить за час, смотришь и понимаешь решение, закрываешь его, пытаешься по памяти реализовать если что то не понятно изучаешь
>>2517514 > наступают Разве что в своё говно, вытекшее из штанины. Либ-то нет. А что есть находится на стадии "на прошлой неделе придумал крутую идею, пилим с пацанами". Как бы мне он не нравился, но пользоваться им тяжело. Код компактнее, но надо полностью переписывать то что уже давно есть на крестах в либах. Биндинги на сишные/крестовые либы отдельная тема - либо пользуешься всратыми автобиндингами, либо сейф-огрызками. Делать ансейф религия не позволяет, а полностью покрыть API не могут.
>>2517529 Да все бы ничего, но эту хуйню уже в ядро Линукса пропихнули. И скоро придется помимо gcc/clang иметь rustc в системе. Т.е. для сборки системы нужно знать два языка и иметь два компилятора.
>>2517618 Если хочешь реально шарить - то лучше вообще их на сишке дрочить, без всяких плюшек в виде stl, фичей питона или js. Меня без иронии взяли на первую работу после того, как я сказал что всего Прату прочёл и все задачи из него же сделал. Ещё и котлету неплохую дали.
>>2517626 >Меня без иронии взяли на первую работу после того, как я сказал что всего Прату прочёл и все задачи из него же сделал. Ещё и котлету неплохую дали. Прату по няшной или плюсам?
>>2517618 Не слушай додиков, чтобы за алгоритмы шарить на плюсах писать не обязательно Но все таки если собираешься плюсов ком становится, то лучше на плюсах
>>2515669 Julia кажись такое умеет. Для мат модуля самое то. А перекомпилировать eigen на ходу как-то стрёмно. Ебанется на второй неделе работы и хрен проссышь почему
У вас вообще девушки были хоть раз в жизни, задроты-байтоебы? Перекатывайтесь на js, пить смузи в опенспейсе и чпокать классных эйчарок, лениво пописывая код одной рукой.
>>2518180 >пить смузи Я не люблю смузи, я пью кофе и тёмное пиво >в опенспейсе Хз что это такое, но звучит как какая-то социоблядская хуйня которая мне не нужна. >чпокать классных эйчарок Я уже давно не получаю удовольствия от тупого чпокинга. Да и вообще я уже смирился с тем, что найти девушку которая была бы в моём вкусе в современном мире почти что нереально так что я сублимирую в опенсорс. >лениво пописывая код одной рукой. Я в прогерство ради челенджа вкатывался, а не ради того чтобы два часа размышлять над тем, какие цвета выбрать для градиента на фоне кнопки.
>>2518119 >SOLID-шиз, ты узнал тебя по твоему говнокоду. ??????
Протокол языкового сервера (Language Server Protocol - LSP) - это способ общения с языковыми серверами (такой же как HTTP или FTP).
Языковые серверы - это специальные программы, работающие на обычных серверах. Они принимают мета-состояние редактора, в котором вы пишете код (например, текущая позиция курсора внутри редактора, токен над которым находится курсор), и возвращают набор действий или инструкций - какой токен должен быть следующим, что должно произойти, когда вы нажимаете CMD/Ctrl-клик на этом токене, и так далее.
>>2518180 >пить смузи в опенспейсе и чпокать классных эйчарок, лениво пописывая код одной рукой. Лол, ты не к тем людям приходишь маня. Здесь твоя мирская хуйня никому не нужна. Если бы мы хотели заниматься хуйней, то и без твоего совета разобрались бы.
>>2518186 >>2518207 >>2518213 Проснулись, байтоебики. Вы когда на свидание с тянкой ходите, говорите, что работаете грузчиком или строителем? Или кем-то еще, но не кодером-сутулым. Хотя, какие вам девушки, вы в своих конторках подвальных только мужиков видите целыми днями, да и не самых красивых. Поэтому зачастую писаки на плюсах это латентные геи.
>>2518273 >читаемость повышает Как-то не очень... Да и каким образом, если между мыслями в голове "переменная А целочисленного типа(А int := 10)" и "целочисленная переменная А (int A := 10)" нет особой разницы?
>>2518285 Ну ты давай не пизди на Реакт то, чмонь. Понимаю, что ты ёбик-дрочер-сутулый любишь всё усложнять. Ты бы веб до сих пор на жаба-апплетах писал, была б твоя воля!
>>2518251 Я думаю, на моменте (matrix i, j) ты и сам понял, какой это кринж. > FmtPuts "%s" tme Ты ведь знаешь, зачем в printf нужна строка форматирования, в которой есть эти уродливые %d, %f, %s и т.д?
>>2518282 > Да и каким образом Таким когда у тебя тип ахуеть какой огромный, а название переменной что то вроде name И ты пока через весь этот тип глазами пробежишься, название переменной еле заметишь, тем более если их несколько
Но да, для типа длино несколько символов, как INT вобще пох где он стоять будет, хоть в середине
>>2518328 > Но да, в объектноориентированном языке и раз уж в нашей цивилизации читают слева направо, то тип логичнее писать до переменной Ахуенная логика, если не считать того что тебе всегда важнее узнать имя переменной, а потом её тип
> почему все языки пишут типы справа > потому что читаемее > Ты тоже аргументов не особо отсыпал. Ну если у тебя есть какие то другие теории, почему тип справа пишут ВО ВСЕХ современных языках, я готов выслушать
>>2518346 > больше буковок > больше инфы Ты дибил? Я не знаю как тебе еще объяснить что имя у переменной > её типа Ты можешь прожить не знаю тип переменной, но не можешь не зная имя
> У тебя тут сразу куча ошибок: к большинству, к авторитету. > Да все современные языки пишут не правильно и не логично, хорошо что иван с с++ треда двача знает что как и лучше Братан, я понимаю когда 1-2 языка были бы такими, но сейчас вся индустрия на это переходит, у тебя в голове ничего не звинькает когда ты это осознаешь?
>>2518328 >раз уж в нашей цивилизации читают слева направо, Вот именно, что слева направа! Конпелятор разбирает объявление начиная с имени и мечется то направо (преимуществено), то налего.
В итоге получается порядок даже не справа налего, а изнутри и куда придется.
>>2518346 >Вот из такого разговорного синтаксиса все и следует. Нет, все следует из идеологии Си, что все конструкции должны максимально просто ложиться на компьютерную архитектуру.
>Так сложился естественный язык. В общем виде синтаксис объявлений Си далек от интуитивно понятного. И любое его объяснение строят на том, чтобы показать как переводится си-объявление в линейно читаемое слева направо объявление. И имя там стоит в крайней левой позиции.
>>2518422 Функция-член класса отличается от обычной функции тем, что у неё есть первый неявный параметр Calc this. То есть void Calc::Namig() на самом деле это void Naming(Calc). А function у тебя принимает <void()> == void func(). И тогда либо: std::function <void(Calc*)> Command_Function; Command_Function = &Calc::Naming; Либо обёртка bind, приводящая к void() с неявной подстановкой this: Command_Function = std::bind(&Calc::Naming, this);
>>2518322 >Таким когда у тебя тип ахуеть какой огромный, а название переменной что то вроде name >И ты пока через весь этот тип глазами пробежишься, название переменной еле заметишь, тем более если их несколько Пример из жопы, если честно.
>>2518331 >Ну если у тебя есть какие то другие теории, почему тип справа пишут ВО ВСЕХ современных языках Банальная мода и неосиляторство написать нормальный синтаксический анализатор, чтобы распарсить код. Парсер у Си-подобных языков намного сложнее, чем парсеры у новомодного шлака, потому что семантика синтаксиса Си зависит от контекста, когда же у новых язычков все более однозначно(особенно если используются ключевые слова func, var, let, и т.д.). Вот и все. А про "удобство" чтения это хомякам заливается, чтобы оправдать свою лень/нежелание/неосиляторство. Ибо даже лапша общелиспа становится удобной и читаемой со временем.
В cmake compiler options прямо без обработки кидаются к компилятору? То есть если флаги разные названия на разных компиляторах имеют, то может не заработать?
>>2518552 Видел как тип у итератора выглядит без auto? Да и тип в основном длиннее переменной
>>2518591 > семантика синтаксиса Си зависит от контекста Ты это за хорошее считаешь?
> становится удобной и читаемой со временем Я конечно понимаю что человек ко всему привыкает, но это не оправдывает решений не удобный у языка > все равно привыкнут, лол
Когда уже модули заработают? Чет нихуя пока, никак не добавят везде. А было бы круто. Я так понимаю, и компилилось бы быстрее иногда, и меньше проблем с определениями
Когда уже модули заработают? Чет нихуя пока, никак не добавят везде. А было бы круто. Я так понимаю, и компилилось бы быстрее иногда, и меньше проблем с объявлениями
То что ты хочешь cделать обсуждается в книжках по продвинутому использованию c++ (шаблоны и метапрограммирование). Ошибки, которые выдаёт компилятор по шаблонам всегда сложно разбирать. Но с этим особо ничего не поделать, разве что посмотреть что другой компилятор скажет (или IDE).
>>2518763 пока что только в мсбилде более менее с этим симейк разраб недавно на cppcon выступал, обозначил что, РАБОТА ИДЁТ, так что может через годика два заработает
>>2518750 >Ты это за хорошее считаешь? Я никак не считаю, мне на это все равно. Я же компиляторы не пишу, хотя если бы писал, то сделал бы тип справа.
>Я конечно понимаю что человек ко всему привыкает, но это не оправдывает решений не удобный у языка Разница не столь велика, чтобы считать что-то конкретное более удобным. Поэтому выбор больше от популярности самого языка и сопутствующих технологий зависит. Все эти языки-однодневки следуют моде, которая каждый год меняется. Да и сама мода пропитана референсами на старые языки по типу паскаля, оберона и т.д. Так и будем ходить по кругу. Поэтому нужно учить фундаментальные технологии, не отвлекаясь на инфомусор, потрогать палочкой C, Smalltalk, Lisp, OCalm, Haskell и тогда вообще похуй станет. Это я все к тому, что аргумент от марктелогов-блядин в духе "У НАС "ЛУЧШЕ" СИНТАКСИС, ПОЭТОМУ ИСПОЛЬЗУЙТЕ НАШ СТИЛЬНЫ И МОЛОДЕЖНЫЙ ЯЗЫК" - полная херня.
>>2518791 > Это я все к тому, что аргумент от марктелогов-блядин в духе "У НАС "ЛУЧШЕ" СИНТАКСИС, ПОЭТОМУ ИСПОЛЬЗУЙТЕ НАШ СТИЛЬНЫ И МОЛОДЕЖНЫЙ ЯЗЫК" - полная херня. Ну тут соглы
>>2519802 Видимо, чтобы не ебаться с cow. Когда ты строку присваиваешь нескольким переменным, она не копируется. Просто все эти переменные теперь указывают на этот объект строки. Если бы ты изменил строку одной переменной, она бы изменилась во всех других.
>>2519915 А что не так с копи он райт? Альтернатива - создавать новый объект каждый раз, когда нужно изменить строку, и в этом случае копирование будет происходить значительно чаще.
>>2519939 >создавать новый объект каждый раз, когда нужно изменить строку Это буквально то, что делает питон. Вместо str[4] = 'x' делаем str = str[:4]+'x'+str[5:] То есть создаем два временных объекта, чтобы создать новый объект на замену старому, лишь бы не переписать один сраный байтик, лол. Так чем это оправдано?
>>2520291 Где-то читал, что основной хлеб производителей видивокард - нифига не геймеры. А всякие майнеры, мл и прочий стафф всё равно запускают на линуксе.
2. Потому-что я работаю с играми под винду. У нас есть один кроссплатформенный проект, его через WSL в вижуал студии кросскомпилировать под никсы - норм работает. CI\CD для него само собой на нормальных никсах.
>>2520478 Свисни, когда член будет 20 см - тогда поговорим Нет блять, серьёзно? А если тебе предложат котят топить за лярд в год ты тоже этим кичиться будешь?
>>2520488 я не вижу смысла слушать что-либо о профессии от диванных теоретиков, программистов в нонейме и просто ебанутых.
Зарплата - хороший показатель достижений и навыков. А пока ты сидишь в Саратове и пишешь гуй для СДЭК.доставки - твое мнение ничем не отличается от мнения бомжа. Так что сходи, помойся. Может полезно будет.
>>2520492 Хороший показатель - это то что ты убежал как всякие либерахи. Не вижу ни одной причины почему твоё мнение на этой борде дожно отличаться от мнения бомжа, ты же фактически сейчас им и являешься.
>>2520511 Молодец, что понимаешь несостоятельность своих доводов. А то неспособность обустройства стабильной личной жизни выдаёшь за какое-то достижение. Это называется синдром отложенной жизни, когда живёшь ради подготовки к хорошей жизни, но непосредственно этой самой хорошей жизни прямо сейчас нет.
есть тут знатоки qcustom plot? нужно сделать так что бы в QCPBars, столбики рисовались не от 0, а от -90 скажем или другого значения. Также я почему то не могу изменить цвет столбиков.
>>2520520 А жизнь в Ереване это не синдром отложенной жизни? Нет ощущения, что другие конторы сразу перекатили своих лидов в норм страны, а тебя как помойного котёнка сдали на передержку в армянский приют?
>>2520590 ну проблемы с цветом столбиков я решил, просто на максимальном удалении, у столбика ширина равна нулю и рисуется только его граница QPen'ом, а она была другого цвета
На чем проще всего запилить ригидбоди, чтобы прям за вечер-два накатать взаимодействие бревна с рельефом местности без длительного курения доков и гайдов?
>>2522319 Да больше и никак. Есть приложение, которое при запуске требует логин, пароль и еще кое-какой номер (типа второго пароля). Все данные всегда одинаковые. Хочу сделать .ехе, чтобы каждый раз не вводить эти данные. Можно брать их из файла, можно прям в коде хранить. Без разницы.
>>2522486 Сборщик мусора сидит в кишках рантайма почти как отдельный процесс, следит за всеми ссылками и в фоне периодически удаляет объекты, применяя ёбнутые алгоритмы с поколениями и прочим говном. Что, похоже на умные указатели?
>>2522569 Чет там какое хорошее применение в шаблонах когда форвард заменяет разбор случаев и правильно обрабаиывает и ссылки и не ссылки и r vlaue и x value. Ща не помню, но че то такое
>>2522558 В идеальной передаче. Нужно для реализации таких штук как emplace_back, чтобы передать аргументы прямо в конструктор, без создания временных объектов.
>>2523237 Нет, в языках со сборкой мусора к объектам можно обратиться только через ссылку, а сборщик мусора знает о всех ссылках. Разве что как-нибудь в обход через ансейф узнать настоящий адрес объекта и обращаться к нему напрямую через указатель, о котором сборщик мусора не знает, и от этого могут появиться проблемы. Но ансейф всегда означает отсутствие гарантий, всё надо делать осторожно, на свой страх и риск. Ну и не всегда можно надеяться, что умный рантайм всё сделает за тебя. Попадались всякие говнолибы, где у некоторых классов был реализован финализатор (аналог деструктора), где делается что-то серьёзное при уничтожении объекта, например, меняются значения полей других объектов, и надо специально где-то придерживать ссылки на объекты таких классов, чтобы финализаторы не вызывались, даже если в своём коде эти объекты не используешь. К примеру, есть что-то такое в библиотеке Tkinter для GUI на питоне, там если не придерживать ссылки на какие-то объекты, приложение может просто взять и сломаться в рандомный момент времени, когда сборщик мусора решит их удалить. В жабе тоже что-то такое попадалось. Это в любом случае не проблема самих сборщиков мусора, а неправильного использования финализаторов.
>>2523487 Плюсы и веб почти не пересекаются друг с другом, и это прекрасно, остался хоть один относительно популярный язык, не зашкваренный вебом. Веб-фреймворков для плюсов хватает, но их никто не спешит юзать.
Читаю, значит, Таненбаума, и чтоб как-то развлечься, решил симулировать этот error-correction. Запустил: >001001100000101101110 (input) >001001100000101101110 (output) Цифры из примера. Как видно, ожидаемое исправление не было произведено. Впадлу уже разбираться, поэтому решил пукнуть в тред. Хотите отвечайте, хотите нет. В моей так называемой жизни ничего не поменяется.
>>2524347 argc argv - неиспользуемые параметры. Низя. Я всегда пишу фигурные скобки, даже если тело цикла или ифа состоит из одной строчки. Дальше не читал
>>2524383 >>2524437 Я искренне желаю, чтоб когда вы, уебки, будете сидеть с какого-то максимально мелкого экрана и спрашивать на форуме какую-то срочную и важную хуйню, вам кидали скрины с максимальным соблюдением всех пробелов, std:: и фигурных скобок.
Господа у меня задача, нужно сделать "водопад". Это так сказать верхний график, только поставленный осью y к нам лицом, как это сделать наиболее оптимально? Я сейчас делаю так рисую на прозрачном изображении верхний график, патом беру верхнее изображение графика и в каждом столбике иду сверху вниз, пока не встречу отличный от прозрачного цвета пиксель. Если встречаю, то записываю в новое изображение высотой в 1 пиксель. И так для каждой координаты Х. И у меня так получается новое изображение шириной с верхний график, но высотой в 1 пиксель, и раскрашенное в максимальные градиент цвета в этой координате. Если у изображения вырастает высота, то вырастает время обработки. Также из за того что высота изображения ограничена, то допустим если я поставлю высокий градиент, который выходи за пределы изображения, я не получу истинного цвета, потому что верхние пиксели будут ограничены, высотой изображения. Ну типо нужно будет всегда рисовать изображение высотой в разницу между координатами градиента.
>>2524736 Так я и не хохол. Меня 8 лет назад назвали русским. Теперь пришли меня защищать и защитили от воды в кране, стабильного света и интернета и бонусом изолировали меня в моём жилище вот уже на 9 месяцев.
>>2524792 Ну если ты из героев АТО, то могли. Хотя за швабру там сроков дали и зеканы не померли в муках. Цеж не Украина, где можно грабить и убивать рандомных челов, записав их в сэпары.
>>2525168 Catch2 >>2525170 Выглядит как параша, как и все высеры гугла. Это же аналог юнит-тестов от индусов, такой же окаменевший кал. Продакшен чтоб протестировать надо дико выебнуться. >>2525172 > Boost Буквально худшее что изобрели крестовики.
>>2525201 Практически да. Нашел, что initializer_list охуительно удобная хуйня. Ну и возврат this из методов тоже популяризовали в jquery 10-15 лет назад, получается тоже жабаскриптовая хуйня.
>>2525206 >код на расте Моя хрень на данный момент работает в браузере (wasm) без затаскивания туда большого рантайма, работает в линуксе под xlib и в винде под win32. В планах Андроид и наверное Яблоки, хотя последние, кажется, сделали всё возможное, чтобы под айфоны никто ничего не программировал.
>>2525217 Микрогуй. Однажды в Go-треде наткнулся на вопрос на тему как там с WASM в Голанг. Начал гуглить эту тему, хотя на тот момент уже знал, что Го несовместим с сишными либами из-за собственного механизма разметки памяти, поэтому для браузера ему нужно затащить рантайм в несколько мегабайn. Заодно увидел, насколько неудобны существующие гуи, ну те, которые не Webview.
>>2525223 К оупенсорсу не готов пока что. Надо подшлифовать. От всякой работы уже устал открещиваться, поскольку пишу на всём от ассемблера до пайтона. Ну и 40-летний специалист не интересен фирмам, потому что понимает лишнее.
>>2525228 Есть вещи, которые нельзя говорить, можно только намекать Иначе все вкатуны сразу вкатятся. А это ведь никому не нужно. Ну если так косвенно и что называется например. Например, есть популярный (S)FTP(S) клиент FileZilla. Что они сделали. Они воспользовались своим именем и сделали клиент под Android. Самым популярным комментарием под этим приложением от пользователей долгое время был такой: блядь, я повелся на ваше название и думал, что у меня на планшете сейчас будет 2-panes приложение как на компе, а вы просто сделали хуйню с мобильным интерфейсом, как же так?
>>2525222 А донёс только то, что не видишь разницы между > Впадлу уже разбираться, поэтому решил пукнуть в тред. Хотите отвечайте, хотите нет. В моей так называемой жизни ничего не поменяется. И > Двач, срочно выручай, не могу разобраться в примере, а если не разберусь, настанет пиздец.
>>2525215 Нельзя добавлять. Сколько про него не слышал, всегда он был в контексте лаб в вузе, потому что больше на нём никто не пишет. А лабы, как известно, идут нахуй.
>>2525239 Наоборот. Все еще есть очень много того, что не сделано, и, следовательно, можно это сделать. А у новоиспеченных программистов наоборот беда "а что сделать".
>>2525246 Ну например, я пишу цикл на крестах с сишными SIMD-интринсиками, в котором мне в последнюю итерацию надо подставить последний пиксель картинки вместо данных из памяти, которые уже в следующий row изображения вылезают. Есть два варианта, и оба плохие - макросы и инлайны. На этом сразу же срывается внимание программиста, отвлечение на какую-то хуйню, которой требуется еще и своё название, и написана она в другом месте. Намного более красиво было бы расширить синтакс циклов.
Какими способами можно сжать изображение по вертикали что бы выжили пиксели отличные от черного,я пробовал заполнять изображение прозрачным цветом, оно смешивается с прозрачным
>>2525210 Зачем? Если ты хочешь писать движки - это невозможно впринципе, если у тебя нет миллиардов денег. Если ты хочешь делать игры - возьми юнити и делай.
Все вкатывание в вулкан обычно заканчивается на прыгающем кубике
>>2525200 Если ты про копипасту с отличиями в 3 токенах да двух параметрах, то отвратительно. Если про разметку - вообще прохладно - у каждого попенсорсного проекта свой огород и своё подмножество языка.
>>2525226 >40-летний специалист не интересен фирмам, потому что понимает лишнее Это какая-то рефлексия? Или тебе нужна позиция не ниже CTO?
>>2525277 Да почему? >>2525286 Ну на плюсах всё пишется дольше. Зато пока треугольник отрисуешь - уже какие-то вещи "на железе" начнёшь понимать, так ведь? >>2525297 Не, игры меня не особо интересуют. Я на перспективу в основно. Я параллельно машобом занимаюсь, а тут как раз вычисления на гпу, вот глядишь напишу сильный ии, а вычисления на чём запускать? Ну или там 3D голограмы в обозримом будущем появятся, а я уже умею красоту делать, да ещё и в 300 fps.
>>2525408 Какая-то шиза. OpenCL фактически мёртв, как и OpenGL, по факту на стадии maintenance-only, всё теперь на Вулкане. В том числе и поддержка тензоров только у Вулкана есть нормальная. > TBB, OpenMP/MPI Это вообще не понятно зачем ты высрал в контексте вычислений на GPU. >>2525447 Нет. Никогда не используй проприетарные библиотеки под непонятными лицензиями - они могут легко поменяться в новых релизах. Тем более qt, он только в опенсорсе бесплатен, за всё остальное плати.
>>2525447 Можешь юзать хоть в ебически проприетарном коммерческом проекте абсолютно бесплатно и без открытия исходников, только линковать надо динамически. Статически линковать запрещает лицензия.
Что за хуйня, почему я в поле класса не могу написать просто std::vector<int> ass(10, 0)? Почему нужно костылять через std::vector<int> ass = std::vector<int>(10, 0) или в конструкторе это делать?
>>2525584 > в конструкторе это делать? Никогда не делай простую инициализацию значением в конструкторе. Либо через список инициализации конструктора, либо на месте скобками/присваиванием. А то можешь получить двойную инициализацию полей - сначала дэфолтным конструктором, потом второй раз руками в конструкторе.
>>2526008 Ну так то зависит от масштабов. Если ты в условном рф на локальном уровне будешь продавать готовое закрытле по, то никто нихера не сделает. А вот если на мировом уровне, то да.
>>2525767 Учи, полезно как практически, так и академически. Может оказаться проще сначала покрутить опенгл, потом много знакомого встречаешь и как-то поплавнее получается вкатиться.
>>2525408 Этот даже в руках не держал няшный вулканчик и че-то подпёздывает ещё. >>2525452 >>2525470 А вот эти респектабельные молодые люди что-то в этой жизни понимают.
После ебли с opengl-ами и всякими cuda-ми, vulkan как свежий глоток воздуха и спасение для всех, кто плотно ебется с gpu, как с графоном, так и с compute-ом. Мечтаю, чтоб он вынес нахуй dx12 и ебучую cuda, оставшись единственным api для возни с видимокартами.
Анон, подскажи. Решил прикрутить визуал к своей либе, чтобы отлаживается было проще (не графика, геометрия), решил взять SFML. В целом норм, но он пустой блядь! Пришлось самому писать всякие Arc, Triangle. Короче, думаю с sfml съебаться, долго выходит.
И вот собственно три пути: 1. Qt. Его пеинтер явно побольше методов имеет, да и накладных расходов меньше. Лицензия есть.
2. Использовать вебоговно, связка типа нода + какой-нибудь вебгл + кастомный юдп протокол (протобуф нахуй идёт). Мне такой подход нравится, так как потом эту технологическую софтину можно куда-то в релиз пихнуть, нравится сервисность, что моя явно серверная программа будет иметь технологический сокет. Но проблема, что у меня в вебе опыта где-то две недели, и хз насчёт технологий и оптимизаций, из чего клепать прожечку.
3. Остаться на SFML, но блин я вообще не вижу развития, библиотека будто бы мертвая
>>2526030 Там додики по треду. Хронос выстрелил потому что там олдовые сишники, а не вмякая гниль. И нвидия там од н из основных учасников. Везде где впжна производительность вулкан аытеснит все остальное.
Подскажите небольшую полезную утилиту на гитхабе, в коде которой можно копать и изучать как делают. А то я открыл исходники ffmpeg, а там 100500 файлов.
>>2526112 У плюсов есть забавная особенность Чем лучше написан код, тем неяитаемее он Буст и стл прямой пример такого Но можешь какие то опенсорснве проектики погуглить + реализации каких то простых штук, как те же контейнеры
>>2491360 (OP) Как искать книги на либгене? Нахера Страуструп назвал язык C++? Нихера не гуглится, потому что поисковики считают C++ за 1 символ, ++ не воспринимают. Кавычки не помогают. Даже по запросу Go выдает результат. Есть идеи?
Сап аноны, такой вопрос. Я делаю программу, которая очень активно, почти рилтайм, управляет устройствами на PCIe. Проблема в том, что система на дебиане с не RT ядром, и у меня нет опыта и знаний, как такие программы выглядят. Разработка ПСИе устройства у моего коллеги.
Вопрос собсно в чем: как в схожих системах, например, компьютерных играх, делается приближенный к рилтайму event pool с диспетчеризацией функций до миллисекунды? Ничего умнее пускать один поток в while(true) не приходит на ум, далее в коде, через precision_clock, проверять дельты. Ядро будет долбиться в сотку, что позволительно.
Либы типа ASIO, которые имеют epoll под капотом, имеют функции задержки на таймерах с временем до наносекунд, но никто не гарантирует, что вызов будет через заданное время, вызов будет не ранее чем через указанный промежуток, что связано, как я понимаю, с диспетчеризацией процессов в ОС. В интернете рекомендуют ориентироваться на время в 5мс.
К слову, выдача данных от устройства буферизирована, и как раз ориентирована ~5 мс.
Анон, как корректно делать? Что почитать? Считаю, что без QNX задача решаема, QNX блядь еболу имеет с драйверами.
>>2526194 >Искать по другим словам, которые есть в названиях книги. Надо же знать название. Искать сначала в Амазоне? Там не все опубликованные книги встречаются, например книги с leanpub отсутствуют. По leanpub конечно можно на их сайте искать. Тогда сформулирую вопрос по другому. Есть место, где можно искать все опубликованные когда либо книги, включая новые конечно? Google Books не вариант, там даже нельзя упорядочить по году или другим параметрам.
>>2526504 Нет 5 курса. К 1-4 курсам нет заданий. Неужели Яндекс забил на курс, который разрабатывал несколько лет? Должны же были куда то выложить. Есть же Openedu, Stepik и другие платформы.
На винду нужно написать функцию чтобы получала температуру с некоторых комплетующих вроде проца, ссд. Собсна вопрос это через драйвер нужно делать? Если через драйвер то нужна будет цифровая подпись или можно без неё обойтись?
На винду нужно написать функцию чтобы получала температуру с некоторых комплетующих вроде проца, ссд. Собсна вопрос это через драйвер нужно делать? Если через драйвер то нужна будет цифровая подпись или можно без неё обойтись?
>>2526721 >Так там и ругаются, что родное апи не работает. Где там и кто ругается? Может оно немного легаси, но сомневаюсь, что его выпилили. Честно говоря, с виндовыми апи дела не имел, но точно знаю, что их там дохера накопилось за все годы и похоже ничего не выпиливают.
>>2527004 КОМПИЛИРУЕШЬ В ГОЛОВЕ @ НАТЫКАЕШЬСЯ НА ОПЕЧАТКУ В ШАБЛОННОМ ШАБЛОНЕ ШАБЛОНА КЛАССА @ СОЗНАНИЕ НАЧИНАЕТ ЗАПОЛНЯТЬ БЕСКОНЕЧНЫЙ ПОТОК СООБЩЕНИЙ ОБ ОШИБКАХ И ТРЕУГОЛЬНЫХ СКОБОЧЕК @ ЖИДКО ПЕРНУВ УМИРАЕШ ОТ INTERNAL COMPILER ERROR
>>2526042 Я ровно поэтому и написал "мечтаю". Ещё бы яблочные черти выкинули свой metal, тоже было бы прекрасно. хоть moltenVK неплохо работает, и на этом спасибо
Как называется эта болезнь, когда мы может проводить операции с нигде не определенным, несуществующим классом как ни в чем не бывало? Это хотя бы является UB?
Почему арифметические операции с переменными не перенести в компил-тайм?
>>2527326 1. Forward declaration. И у тебя на картинке нет операций с объектом незавершенного типа, только объявление указателя на него. Что кстате порождает новый самостоятельный тип.
>>2527326 >Как называется эта болезнь, когда мы может проводить операции с нигде не определенным, несуществующим классом как ни в чем не бывало? Покажи где ты с классом операции проводишь
>Почему арифметические операции с переменными не перенести в компил-тайм? Чиво блядь?
>>2527347 Что мешает компилятору вместо a+b подставить 5 на этапе компиляции? Это локальные переменные, в других единицах трансляции использованы не будут, внутри функции тоже больше не используется.
>>2527525 Ладно, я наебал мб. В тупых примерах компилятор реально берет и подставляет, но я думал я смогу как то хитро изъебнуться с памятью, да так, что компилятор это проверить не сможет, поэтому предпочтет не подставлять во время компиляции значения. Хз, можно ли так, сходу сейчас не скажу
>>2526189 ты студентик или работаешь уже, а? как вас таких убогих на работку то берут? че, лошара, не знаешь как организовать базовый ввод-вывод, хоть синхронный, хоть асинхронный и придумываешь какие то охуительные велосипеды с "while(true) и ядро будет долбится в сотку" ты в универе курс "операционные системы" проходил, уебок? че, не знаешь как там ввод-вывод организован чтоли? окей, хуесос, набери в гугле "синхронный асинхронный ввод вывод linux" и читай википедию
>>2527601 std::cout << a + b; сворачивается в std::cout.operator<<(a+b); что уже является не чем-то мистическим, а обычным методом. Почему бы не оптимизировать на этапе компиляции аргумент метода?
>>2527644 >Почему бы не оптимизировать на этапе компиляции аргумент метода? Потому что это не то, что чел реквестил в начале. >Почему арифметические операции с переменными не перенести в компил-тайм?
Арифметические операции с переменными, а не частные случаи, когда и переменная-то избыточна.
Мужики, навалите БАЗУ по Rust-у. Самому трогать это поделие и очередного "убийцу" Си у меня нет времени, но при этом новости об этом языке достают меня даже в танке(например, принятие раста в ядро Линукс). Все бы ничего, но эта всеобщая атмосфера самоподсоса вокруг языка и потужные форсы т.н. превосходства ВО ВСЕМ вызывают у меня какое-то подозрение. Я не нашел ни одной статьи с разбором языка, вызде какие-то фанатичные текста с общими и идеалистическими аргументами в духе "ПИЗЖЕ ЧЕМ БЫЛО, just trust me bro". Никто там денег этой херни на рекламу не закинул? Или это очередной форс к смузихлебов как это было с Руби, Элексиром и прочими?
>>2527883 >Братан, если оно тебе нахуй не надо, то зачем ты вобще лезешь? Ответ на это в первом посте есть. >Вас самих не заебало всё обмусоливать из раза в раз? Кого вам? Я здесь один нахуй. Раньше мне было похуй, но потом поддерку сабжа добавили в ядро Линукса. Я про себя подумал "Нихуя себе историческое событие, второй язык в ядре" и пошел читать интернеты, чтобы понять, что это за ягода. Пролистав 5 страниц гугла, я кроме самоподсоса ничего не нашел.
>>2527889 >зачем тебе еще что то знать о нём? >>2527886 >Раньше мне было похуй, но потом поддерку сабжа добавили в ядро Линукса. >>2527879 >но при этом новости об этом языке достают меня даже в танке(например, принятие раста в ядро Линукс). Что тебе не понятно?
>>2527879 Если сравнивать с Си, то всё верно говорят - Раст его выебал во все щели. Но судя по твоему шизоидному тексту ты пришёл сюда за тем чтобы тебя успокоили и рассказали какое говно Раст. С этим тебе только таблетки помогут.
>>2527991 >Узнал о языке Х >пошел гуглить >не нашел никакой конкретики, критики и ничего кроме хуйни от маркетологов >"Пацаны, что за хуйня? Что почитать, чтобы ознакомиться и не потерять много времени?" >"РЯЯЯЯ ВСЕ СОСНУЛИ, РАСТ ЛУЧШИЙ" Ок.
>>2528004 > не нашел никакой конкретики А искал? В документации вся конкретика описана. Что ты ещё хочешь? Чтоб тебе разжевали почему были сделаны конкретные решения в дизайне языка и доказать что они верные?
>>2528186 Твой пробивальник? Хуйню порет, у раста куча плюсов, но он всё напиздел. Кто не может осилить ручной менеджмент памяти будет и в расте баги писать, только теперь из-за дремучего кода лесенками и ансейфа. Про легаси вообще кринж - у раста уже гора легаси, которое переписывают не дописав старое. Это один из главных минусов раста - наглухо ебанутое комьюнити, пишущее код для красоты, а не чтоб он просто работал. Написал код, но хуй не стоит? Решение есть - надо переписывать. А как ним этим пользоваться? Никак, мы тут пишем идиоматичный и безопасный код, а не рабочий софт. Алсо, я, к сожаления, сам такой же шиз. Весь рабочий софт был написан на отъебись, весь хорошо написанный код никогда не доводил до релизного состояния.
>>2528280 В справке асио везде фигурирует, что объекты в колбэках должны существовать, поэтому у них паттерн есть буферы и респонзы держать как аргумент класса
Аноны, есть вот такая конструкция: контейнер map, содержащий ключ-строку и data-pair, состоящая из объекта-fanction и указателя на переменную(типа double) std::map<std::string, std::pair<std::function <double(Calc,double&,double&)>,double>> Function_Name;
вопрос - как из функции правильно обратиться ко второму значению pair? при вызове этой функции из объекта-function из контейнера
Почему при передаче в функцию аргумента char data[] , вызов sizeof(data) в этой же функции всегда возвращает 4? Даже если data="Я ЕБУ СОБАК ЛАЛАЛА ЙЦХДЙЦХКЛЙЦЕЙЬЩЛЬ".
>>2528483 Потому что sizeof() вернёт размер массива только тогда, когда он определён в этой же функции. При передаче в другую функцию он считается указателем, на твоей системе размер указателя равен 4. Будто передал char *data. https://www.geeksforgeeks.org/using-sizof-operator-with-array-paratmeters-in-c/ Просто не используй сишные массивы, используй STL.
>>2529195 Вот ты пидорасина тупая. У тебя каждый вызов этого говна - отдельная функция. Про скорость можно даже не вспоминать, она действительно будет равна питоновской.
>>2529195 Не говоря о перформансе, надо как минимум добавить необязательный параметр для потока, чтобы можно было принтить в файл или поток ошибок, и ещё нужен необязательный флаг flush.
>>2529195 Ну принт()(...) Выглядит само по себе не оч Попробуй оператор статистическим сделать, или просто сделай функцию
Сделай чтобы можно было любой ostream в функцию пихать
Потом посмотри как это можно без cout сделать, ну или хотя бы сделай вторую версию и для себя сделай бенчмарк что быстрее будет
Потом как все это сделаешь, попробуй форматирование добавить, или хотя бы посмотри как оно делается Чтобы можно было писать fprint("hello, {}", "anon");
>>2527879 Мэмори сейфти + отсутствие garbage collector + упор на безопасность Ну а ещё хорошие инструменты для разработки, ахуенные макросы, более крутая система типов
В итоге: - для петов идеально - для прода со скрипом
>>2529582 > про безопасность актуалочка Самое забавное, что подобная хуйня только у Гугла. Пишут на Си с классами, а потом удивляются откуда дыры и ищут оправдания. При этом реально критические баги, позволяющие обойти все защиты без спецсредств - в жаба-коде.
Поясните! Пограмирую микроконтроллер, который должен выдавать текст на экраны по I2c. Всего экранов 16 штук. Заказал пикрелейтед 2 шт. для на чала. После пары часов ебли выяснилось, что у них 2 разные микросхемы. У одной адрес начинается с 0x40 (и далее до 0x4E), а у другой с 0x70 (и до 0x7E). Я так понял, что прислать могут тупо рандомные как повезет. А мне надо чтобы было 8 одних и 8 других, либо 8 одних и тех же, чтобы я их тупо параллельно воткнул по 2 на 1 адрес. Короче как поступить? И как в цикле обработать адреса, если мне к примеру придет 4 штук первого типа и 12 штук второго типа? Или там 11 штук первого и 5 штук второго? Пиздец бошка кипит от этой хуйни.
>>2529761 >0x40 (и далее до 0x4E) Поясню немного 0x40=0b01000000 Адрес задается 3 битами, выделенными жирным. 0x70=0b01110000 Здесь так же, но старшие биты другие.
>>2529761 Вообще ты должен ебать поставщика, но как выход используй калибровочную прогу в начале для сопоставления смещений к физическим устройствам, если это возможно канеш...
>>2529972 Если ты порвался с "си с классами", то их за это все кому не лень обоссывают. Посмотри хотя бы на тот же код Ведра - сплошное вырвиглазное легаси, про то что существует С++11 там услышали только через 10 лет после его появления. И дело не в кодерах, а в том что престарелые олдфаги из верхов гугла решили заставить всех писать в легаси-стиле. А потом выяснилось что, тех кого понабрали, не могут писать в таком стиле как эти деды и не косячить. И теперь "пук-среньк понимаете кресты дырявые, мы не виноваты", хотя огромное количество компаний пишут на крестах и не имеют таких проблем с дырами - даже у индусов из Майкрософта не так всё плохо в плане безопасности.
>>2529991 Но си с классами это литерали лучший язык программирования евер. А проблема в > А потом выяснилось что, тех кого понабрали, не могут писать в таком стиле говнокодерах
>>2491360 (OP) Антонио, посоветуй графический интерфайс под цпп. QT как я понял заставляет скачивать их хуйню с сайта и в общем оно мне не надо. Есть норм аналоги кт, но без всего этого? Нужно для пет проекта
>>2530151 Предполагаю, что в процах х86, подобно как и в арм кортекс, есть систем клок, зависящий от системной частоты. Его точность определяется кварцем, который явно точнее rc цепочки, ещё и стабилизирован по температуре. Также предположу, что десктопные прлцы с учётом своего переменного энергопотребления, учитывают снижение частоты.
От этой частоты и берется системное precision время в секундной размерности. Предположу, что точность где-то на уровне пикосекунд.
Понятное дело, что реальное время, которое мы синхроним по НТП, будет отличаться от системного из-за как минимум разных частотных доменов, а ещё учитываем, что сервера по НТП имеют в качестве базы атомные часы, которые точнее кварца, так ещё учёные периодически подводки делают на секунду.
хай-прецизион-клок отлично использовать в качестве дельты времени с отличной точностью, но грубо говоря в пределах суток, отсчитывать по ним год работы нельзя, необходимо иметь синхру, хотя бы по GPS.
Читаю про операционные системы и просто охуеваю. Оказывается можно написать уебищную инструкцию и оправить ее прямо в процессор, и вот он уже сам вызовет прерывание, сам сгенерирует исключение и отдаст на обработку в ядро. То есть никакой якобы прослойки между программами и железом нет. Волшебного ядра, контролирующего все на свете, не существует, даже проверкой адресов занимается MMU аппаратно, и пока мне видится, что ос можно заменить системой обработчиков прерываний. Может дальше пойму, почему такой хайп вокруг ядер.
>>2531230 Большая свобода - большая ответственность. Ну и проблема теоретически не решаема, если работаешь на "низком уровне". Даже в Ada какой-то недоГЦ встроен.
Слушайте, а если у меня поля состоят из raii-шных объектов, нужно ли мне делать пустой конструктор перемещения и помечать его как noexcept, чтобы вектор эти объекты перемещал при реаллокации? Не как в этом примере, тут понятно что копирующий создан не будет из-за юник поинтера.
>>2531869 Всякие нагугленные статьи из интернета и лекции на ютубе для студентиков. И конкретно Финогенов К.Г. win32 основы программирования, где в главе про архитектуру он кидал тейки как на пике про то, что говнокод обрабатывает прежде всего процессор, от чего у меня случилась фрустрация. Ну собственно по-другому быть и не может, потому что ось - это всего лишь набор команд в оперативной памяти, а не волшебная оболочка над железом. Такие фрустрации, переворачивающие все с ног на голову, по мере изучению плюсов у меня случаются иногда. Например, долгое время я думал, что выражение int x; это просто объявление, а чтобы определить надо добавить инициализатор int x = 5; Ебало представили? Так я понял смысл слова extern, подробно изучил ODR и разобрался для чего в современных плюсах нужен inline.
Анончики, помогите! В блокноте надо написать 'Hello world!'. Сделал вот такую конструкцию: string slovo = "Hello world!"; for (int i = 0; i <= slovo.length(); i++) { cout << slovo << "\n";
keybd_event(slovo, 0, 0, 0); keybd_event(slovo, 0, KEYEVENTF_KEYUP, 0); } В консоли все печатается как надо, но в блокноте печатается номер элемента. Как букву то напечатать? Т_Т
>>2525584 потомучто в class Class { ... }; все, что между фигурными скобками это особый контекст - контекст определения класса. Точно так же внутри этого контекста но вне какого-либо метода ты не можешь написать какой нибудь for (int i; ...) или if(flag). Тело класса вообще не является выполняемым кодом программы.
>>2532266 В данном случае тип параметров не определен (не указан), о чем компилятор тебе и скажет.
>>2491360 (OP) допустим есть коллекция boost::base_collection, элементы которой необходимо модифицировать, как это правильно сделать? Первая итерация - создать новую коллекцию, и извлекая элементы из старой конструировать новые, но тогда необходимо матчить между собой типы, ходят слухи что так делать не надо. Вообще как правильно сравнивать типы и можно на таком строить логику? https://godbolt.org/z/YEchndKzq
>>2533235 я в примере использую is_base_of_v, но проблема в другом. при работе с boost::base_collection, я получаю base&, мне надо какой именно это derived. Возможно надо по-другому логику строить, но как тогда? https://godbolt.org/z/an4d9z4Kh
>>2534170 class A class B:A class C class D:C имея A& необходимо сконструировать D, если A& это B. ветка if constexpr(std::is_same_v<A&, B>) всегда false.
Анон, как корректно интегрировать boost::asio (на нем либа) в Qt (на нем проверка)? Видел вариант запихивать io_context::poll_one() в сигнал, который по таймеру берется, но хз, как я понимаю, там реальный поллинг редкий, просер азио будет.
>>2534625 пробовал https://godbolt.org/z/a53796d8Y если раскомментить 46 строчку, видно, что там тип A всегда >>2534706 то есть переводить в указатель и проверять на через каст к определяемому типу?
>>2535600 Ну колись какие вопросы были? интригу тут создал, ебаный свет. >>2535771 > Каждую неделю узнаю что-то новое. Что например? Может тебе и не нужно, потому что используешь инструменты для ограниченной сферы.
Аноны, поясните за std::barrier Если в 33 строчке заменить arrive_and_drop на arrive_and_wait, то программа зависнет в ожидании. Не понял с этими фазами барьеров и счётчиками внутри него.
Вопроса два. Как вообще "правильно" и оптимально считать бинарник, чтобы потом инфой манипулировать? В файле много блоков одиннаковой структуры, которые еще zlib'ом распаковать надо и понадобится возможность фильтровать/сортировать их. Что использовать под буфером, какой размер выбрать и тип? char? uint8_t? В моем случае файлы 100кб-1,5мб. Первая идея описать блоки в файле структурами и заполнять их. reinterpret_cast массив байтов к нужной нам структуре и после копирования можно пользоваться. Структуры правильно заполнялись, и тут подумал изучить вопрос UB. Тут обсуждались примеры, похожие с моими, только я структуры на стеке держу (это пока) (пик1, пик2): https://youtu.be/_qzMpk-22cc?t=1278 https://youtu.be/_qzMpk-22cc?t=1452 В Си, кстати, второй пример с malloc валидный и не UB. Код: https://pastebin.com/bUJ7zXpX https://gcc.godbolt.org/z/KhjaqqMa9
struct Header_t { uint32_t field1; uint16_t field2; uint16_t field3; }; std::ifstream file("abu.bin", std::ios::in | std::ios::binary); std::streampos fileSize = 0x12345; // placeholder std::vector<uint8_t> buf(fileSize); uint8_t⚹ pBuf = buf.data(); file.read(reinterpret_cast<char⚹>(pBuf), fileSize); // (1) Header_t header; header = ⚹reinterpret_cast<Header_t>⚹>(pBuf); // (2) // ^ v одно и тоже по стандарту и в листинге header = ⚹static_cast<Header_t⚹>(static_cast<void⚹>(pBuf)); // (3) std::memcpy(&header, pBuf, sizeof(Header_t)); // (4) header = ⚹std::bit_cast<Header_t⚹>(pBuf); // (5) C++20 static_assert(std::is_trivial_v<Header_t> && std::is_standard_layout_v<Header_t>);
Ассерт оставил, потому что сначала я хотел от Header_t наследоваться в некоторых структурах (сабхедер, например), но такие структуры не являлись standard layout, хоть и заполнялись правильно (на винде). Как я понял, стандарт не гарантирует расположение base структур. Придется явно указывать вложенные структуры или есть еще более удобный способ?
Теперь, как думаете, где здесь UB? Изучив сноски стандарта и десяток вопросов на стаковерфлоу мое мнение такое: 1) read только char* принимает, думаю не UB, т.к. мы просто заполняем буфер. 2) и 3) одно и тоже по стандарту. Как я понял сам каст не UB, но когда происходит обращение (access) через ⚹ это UB. 4) не UB. Но нужно, чтобы src и dst был trivial copyable и POD (standard layout возможно не прав). 5) не UB. Внутри memcpy, но с проверками. Все проверки делает через шаблоны, возможно создает временный объект внутри и возвращает (в реализации на cppreference так) Все варианты правильно работают (на винде). Оптимизируются до 1-3 mov gcc, clang, msvc (но это не точно). Не смог дать понять компилятору, чтобы не выкидывал структуру/копирование при -O3 или /O2 в msvc.
>>2535609 >>2535791 Что будет если деструктор бросает исключения во время разрушения другим исключением? Можно ли обработать это исключение? Узнал, что weak_ptr, оказывается, в стандарте с 11-го. Правда нахуй он нужен, я не понимаю до сих пор.
>>2536020 Ну и прочая UB хуйня, которую никто в здравом уме не будет писать в прод. Вообще, удивительно, что никто не спрашивал про argument-dependent lookup или про value categories. Про шаблоны тоже 0 вопросов. Видимо, в 2к22 все ещё пишут на C с классами.
>>2536020 деструктор неявно noexcept, поэтому будет terminate можешь руками сказать noexcept(false), тогда можно будет ловить такое знаешь, если ты шалунишка и разок пробовал это сделать, но я думаю, что такое нет смысла спрашивать -- ни о чём такое знание не говорит
>>2536020 > Что будет если деструктор бросает исключения во время разрушения другим исключением? > weak_ptr, оказывается, в стандарте с 11-го. На самом деле базовые вопросы. Скажи спасибо, что не заставили писать примерную реализацию самого этого weak_ptr вместе с shared_ptr. >>2536029 > Про шаблоны тоже 0 вопросов. > value categories Вообще странно, да. Может пидарас собеседующий сам не шарит в шаблонах и этих ваших xvalue. >про argument-dependent lookup Просто удобная фича языка, зачем про нее спрашивать. >Ну и прочая UB хуйня, которую никто в здравом уме не будет писать в прод. А я щитаю, про UB надо спрашивать, чтобы убедиться, что потенциальный кандидат это самое UB тащить в прод не будет.
>>2536020 Как я понял weak_ptr нужен только для многпоточной среды, чтоб у тебя не произошло удаление объекта в момент когда кто-то в другом потоке с ним работает. В остальных же ситуациях достаточно .get() и сишных указателей.
Есть гуру всяких там атомиков и прочих memory_order семантик? С trivial переменными B и C все понятно, memory reordering и все такое, поэтому чтобы первый assert гарантированно не вылетал их оборачиваем в std::atomic. Но вот стринговая A как-бы совсем не trivial, и че с ней делать как-бы и не очень то и понятно. Хотя конечно понятно, что под капотом std::string этой просто набор опять же trivial переменных, и присвоение значения стрингу - это тупо последовательность присвоений этим же переменным каких-то значений, и теоретически для них свойственна та же проблема с memory reordering-ом что и для B и C, что собственно означает, что второй ассерт таки будет вылетать. Так вот вопрос - как принято решеать пободную проблему? Есть у меня подозрение, что нужно использовать std::atomic_thread_fence, но чет я не уверен.
У меня прога пишет, что нужен GLIBCXX_3.14.29. Я проверил, во-первых, у меня LD_LIBRARY_PATH ведёт к нужной директории с gcc 11 , к нужной папке с libstdc++.so.6. Внутри этой папке содержится поддрежка 3.14.29 . Далее, я указал , что нужно компилировать gcc 11 через update-alternatives --config gcc/g++. в Чём ещё может быть проблема?
>>2491360 (OP) Каким образом разрабатывать приложение модульно? Допустим есть 2 модуля: модуль парсер, модуль обработка. Насколько понимаю, парсер совсем не должен ничего знать о модуле обработка, но вот модуль обработки может включать в себя хедер парсера. Таким образом по принципу водопада получается. Следующие модули должны "знать" о предыдущих, но не наоборот? В такой постановке разработчик модуля обработка зависит от разработчика модуля парсера и постоянно его торопит. Независимой разработки модулей не получается. Или модуль разработчик парсера должен по-быстрому накидать хэдэр и отдать разработчику модуля обработки? И еще вопрос, допустим в модуле парсер используются тип 1, который в модуле обработки преобразуется в тип 2. Есть несколько вариантов. Первый - оставить "хвост" в типе 1 о его преобразовании в тип 2, тогда надо перевязать модули хэдэрами. Второй вариант - в модуле обработки включить хэдэр парсера и в лоб кастить типы парсера в типы обработки.
>>2539227 Не пойму, зачем в обработчике хедер парсера. В чем проблема, писать их независимо, но совместимо? А общие типы и реализации преобразований типов - в отдельный модуль. В чем я неправ?
>>2539280 Ну там новый софт с гуем не на электроне, а на сасном imgui, линуксовые модули всякие, полупрозрачные ИИ-тян, фирмварь всякая не на жс или питоне и вот это вот всё.
Изучаю Cmake, протестировал на линусs, теперь на винде, замечательно собрала исполняемый файл. Но я не пойму, что за дрисню она нагенерировала, как этим пользоваться? Зачем нужен проект или солюшен в котором нет исходников?
>>2539277 Это раньше так было, когда рефенмв были просто способом параметры в функцию передать А в 2022 это семантический монстр, который не понятно что такое, что аж референс врапер пришлось изобретать
>>2539236 Парсер строит синтаксическое дерево из структур, типы которых потом нужно знать в обработчике. Допустим, struct Ast::Solid({colour}, {mass}) В обработчике необходимо скомпоновать данные в матрицу struct Tcx::Solid(Ast::Solid){matrix={colour,mass}} поэтому необходимо в обработчике знать типы парсера. Это второй вариант. Первый вариант это добавить метод структуру парсера struct Ast::Solid({colour}, {mass}), Ttx::Solid asSolid (){} вроде хвоста, который буду в обработчике дергать. Теперь в хэдэре парсера необходимо знать типы обработчика. Какой вариант построения архитектуры верный?
>>2539227 как? а никак никаких "двух разработчиков" нет ядро пишет всегда все один человек на проекте а остальные просто имитируют деятельность в худшем случае, а в лучшем случае делают всякие обвязки и интерфейсы и прочее
>>2539268 в игрострое пишут "новые" игры а так да в энтерпрайзе кресты мертвы по понятной причине (сугубо технической) в микроэлектронике, в устройствах и прочем подобном на си пишут до сих пор и не собираются на кресты переходить ну и так далее кресты сегодня это эзотерический язык программирования, чисто для развлечения
>>2539377 >полноценную работу чистить снег на улицах или говно в толчке "вкусно-и-точка" ах да, еще можно поехать на украину убивать хохлов за безумные 240 тыщ рублей!
>>2538799 в си все параметры функций передавались по значению если хотел передать "по ссылке" то нужно было делать параметр указателем и в качестве аргумента брать адрес требуемой переменной поэтому само собой напрашивалось семантическое добавление в с++, а именно ссылки, которые позволят передавать параметры "по ссылке" с другой стороны можно сказать что это изменение семантки всего лишь добавляет синтактические удобства и не более поэтому создатели си и не спешили добавлять ссылки в свой язык
>>2539530 имхо, если ты обучаешься, то самый лучший проект для обучения, это там где тебе надо сделать сложный разбор какого-либо формального текста если по простому, то написать компилятор/интерпретатор/парсер etc компилятор оберона например или парсер xml либо других языков разметки или какой-нибудь протокол сетевого взаимодействия с относительно сложным форматом, типа ftp или smtp
Без auto&& это как то написать можно? Чтобы хотя бы тип возвращаемый из функции был понятен
>>2539854 >Страуструп таранит против введения новых ключевых слов. Грит и так их много. Ну бля, можно было сделать какой нибудь std::clone(...), ну или как там хотели изначально std::decay_copy(...)
>>2539884 да тут все просто-тупо: читаешь "книгу дракона" или вирта "разработка компиляторов", к примеру, но есть и другие книги, полно их от того что прочитаешь 1 книгу не умрешь, уж сделай подобный подвиг, лол а если будет лень пилить бэкэнд то используешь llvm для компиляторов или чего нибудь типа parrot для скриптовых языков хотя можно и по другому поступить - наоборот закодить бэкенд под какую-нибудь интересную машинную архитектуру, к примеру под микруху какую-нибудь, или даже есть такая интересная тема сегодня как GPGPU понятно что все (ладно, почти все) уже 10 раз писано-переписано, но в качестве учебного проекта, имхо, это будут самые результативные если осилишь, то ты реально станешь кодером
аноны, подскажите как получить фпс без привязки к графическому апи/приложению, типо как оверлей geforce или афтербернера показывает это все, как на директх так и на каком-нибудь вулкане/опенгл, хочу написать прогу которая будет показывать фпс на экранчике стилсерисовской мышки, в их приложении можно показывать температуру и загрузку цп и гп, а фпс нельзя( у них есть апишка, там джсончики надо кидать на нужный порт, осталось ток понять как можно достать фпс в любом приложении, мб подскажите какую функцию из винапи или чего-то подобного...
Задры, подскажите по контексту либы асио Если допустим у меня в приложении парочка высоконагруженных частей взаимодействия с сетью то как в таком случае поступить? Норм идей будет создать несколько контекстов в разных тредах, каждый для отдельной части приложения где троттлится? Гугл вроде как выдает чтобы в нескольких тредах бежал один контекст. Как эффективнее? Поясните плз
>>2541211 Замеряешь время в цикле отрисовки Одну секунду делилишь на это время Полученный результат пишешь куда угодно, хоть файл, хоть консоль, хоть отдельное окошко на imgui где будешь отрисовывать это Это самый простой и верный путь
Двач, буду краток.
Аноним15/12/22 Чтв 11:32:41№25415001206
Как же заебало писать все эти абстракции и не сосать по производительности. Я вот подумал, а может ебашить просто кишками наружу? Один хуй это опенсорс, кто не осилит - нахуй пусть идёт, главное мне норм. А то я вчера как начал писать обёртку класса на шаблонах, в итоге пердолил 4 часа и высрал какую-то магическую хуйню, зато красиво выглядящую снаружи. А мог бы за 30 секунд просто указатели наружу оставить торчать, даже тесты не пришлось бы писать.
>>2542790 наверное (хотя могу ошибаться) у тебя в экзешнике число "123456" будет в 2х местах первое это целочисленная константа а второе это переменная типа инт, которая инициализируется значением этой константы
>>2541755 Я на констеэкспр делал всякие смещения и маски для битовых операций, оче удобно. Фактически, констеэкспр заменяет макросы си. В каких-нибудь микроконтроллерах макросов пиздец как дохуя
>>2539983 Если актуально делаешь обычную пузырьковую сортировку, после пятого прохода останавливаешь цикл и получается что крайние (смотря куда двигал)студенты самые высокие. Напишу код за сто рублей, жрать хочется.
щас прикинул, и, в общем, только по с++ я прочитал около 10ти тысяч страниц книг в сумме естественно, при этом не написал ни одной полезной работающей программы на с++
>>2544329 считаю его книжку "42 рекомендации по использованию с++11 и с++14" одной из самых мастерски написанных книг, он сумел лаконично изложить сложный материал
У меня есть структура vector<vector<double>*> gavno; Для внешнего вектора память выделяется спокойно через gavno.reserve(n);
Как выделить красиво память для вектора-пойнтера, чтобы не создавать его с рандомным именем , ресервить, а затем присваивать? При чём я не хочу, чтобы пустые места нулями заполнялись как в new vector<double>(n)
>>2546899 Зачем тебе вектор указателей на вектор, если можно сделать вектор векторов? В чем профит?
Слабо решить детскую задачу?
Аноним20/12/22 Втр 14:41:27№25472461250
ПРОГАЧ, Слабо решить за меня лабу? Даны матрицы целых чисел S[1..3,0..2], K[1..3,0..2], в которых имеются по два одинаковых числа. Найти и напечатать их.
>>2547166 Ну вот у меня много векторов определённой размерности. Мне нужно их упаковать в эту матрицу. Т.е. за каждый цикл вдупляю по одному вектору. Вы имеете ввиду, что таким же образом можно подменить у вектора векторов имеющуюся строку и не оставить пустышку в куче?
>>2547438 Я имею ввиду, что тебе не обязательно выделять память под сами объекты векторов динамически через new. Что бы ты не имел ввиду под "подменить имеющуюся строку", vector < vector <double> > справится с этой задачей, а то, как делаешь ты, только усложнит тебе жизнь, потому что эту память потом придется вручную освобождать.
Как сделать так, чтобы в вижуал студии иде собранная программа запускалась относительно корня открытой папки, а не относительно папки, в которой лежит .exe? Просто я, допустим, хочу открыть файл в корне папки и мне приходится писать путь "..\..\..\file.txt" вместо ".\file.txt"
Собираю через симейк, в вижуал студии просто открываю папку, если это важно
>>2547748 Может, потому что компилятор не догадывается подставлять все варианты темплейт-аргумента во все глобальные функции с нужным именем? Для твоего юзкейса я бы наследовался от базового класса и виртуальный protected метод это так, навскидку, не эксперт
>>2547964 >Не надо автоматизировать А как жить-то? Ведь выходит два стула.
Либо юзаешь жирнющие готовые либы, где умные дядьки подзаебались с темплейтами и макросами вместо тебя, и тем самым тащишь в проект лишнее и чужое, утяжеляя репозиторий, компайлтайм, рантайм и все на свете, вдобавок лишаясь возможности допилить что-то на низком уровне под себя.
Либо пишешь сам, но примитивно, с кислым ебалом, кучей бойлерплейта и без перспектив для кодовой базы стать полноценным DSL.
На работе я сильно не выебуюсь, но для себя - хочется. Но препроццессор - слишком, согласен. Поэтому спрашиваю, может есть какие-то ФИЧИ НОВОГО СТАНДАРТА, О КОТОРЫХ НЕВОЗМОЖНО МОЛЧАТЬ, какие-то УБИЙЦЫ МАКРОСОВ V3.0, чтоли...
>>2548023 >М. б. проектировать так, чтобы писалось >dvach.privet(ti, negodyaj) вместо этого членинга. Очевидно, там может быть гораздо более длинный список параметров, и делать набор из 15 дефолтных значений в интерфейсе конструктора не вариант, потому что половину дефолтных значений один хуй придется набивать вручную, если надо кастомизировать значение восьмого. Ну и вызывающий код нихуя не читаемый, если ты не знаешь наизусть порядок аргументов или хотя бы не комментируешь их имена вручную. Алсо, у всех все в пизду сломается, если ты решишь порефакторить порядок. Хуета, короче.
>>2548142 Есть древняя забытая тнхника передачи кучи параметров в стуртуре, тогда изменение одного из дефолтных параметров, жаже последнего, не требует набивать все остальные.
Привет. Как прокачать понимание указателей? Вообще мои знания - это примерно половина книги Р.Лафоре. Очень сложно продвигаться без какой-то задачи или цели. Яндекс практикум я не потянул потому что там сложность возрастает в геометрической прогрессии имхо, надо гораздо больше времени тратить на конкретном этапе (по крайней мере мне). Спасибо за советы.
Куда перекатиться плюсовику, чтоб накопленный опыт помогал? По rust вакансий нет совсем, хотя на уровне растбука хотя бы наверное осилить стоит. По си зарплаты низкие совсем. Куда ещё глядеть?
>>2548762 Смотрел на ютубе с белого до красного включительно. Кое-какие интересные фишечки есть, но не вот прям откровение. Все их "реальные проекты для портфолио" суть обычный васянокод уровня laba.cpp.
Читал отзывы на сам курс, как по мне это трэш, который даже за бесплатно малоинтересен. Так называемые менторы - это чатик из таких же бедолаг как ты, где они делятся своим опытом. А опыт - это больше не про кресты, а про долбежку в систему автоматической проверки, которая не сообщает в чом ты не прав, а просто отклоняет решение и все тут. Нахер такой опыт нужен, я не знаю.
>>2548965 Не, ну это уже какой-то высший пилотаж. Да и прикол моего DSL в том, чтоб процедурно все это дело генерировать. Зацени, как я только что реализовал втыкание лямбд в свое выражение.
Конечно, блядь, я тот еще наркоман, спрятать пару core методов в отдельный translation unit вплоть до капсуляции всего приватного в std::unique_ptr<Impl>, и все только для того, чтоб потом высрать 100500 дсл фич макросами и темплейтами в хэдере. Такое уже имеет смысл делать header-only.
Суп, подскажите, что сделать с этим? Пик 1 - проблема Пик 2 - то, что я установил Пробовал и в VS 19, результат один Раньше как-то получалось. Да, на Шарпе это всё проще, но мне надо на крестах, но не собирается
Сколько времени нужно, чтобы выучить сетевые протоколы на хорошем уровне, чтобы свою реализацию написать. Хотя бы основные: tcp, udp, как ip вообще присваиваются и все такое
>>2550348 Ну прочитай эти "всего лишь 80" страниц и напиши свои реализации сетевых протоколов за пару вечеров, можешь потом хвастаться, как быстро превзошёл инженеров из Cisco.
>mutable - permits modification of the class member declared mutable even if the containing object is declared const. Ещё одно подтверждение, что кресты делаются шизоидами для шизоидов.
>>2550544 Это сделано для ленивых логических констант, которые вычисляются при первом обращении и кешируются. Макака естественно с таким не сталкивался. Мимо
>>2550597 >Дни, месяцы или годы. Хотя бы примерно Это все индивидуально же. Некоторые SICP за несколько месяцев-полгода осиливают, например, а некоторые на несколько лет растягивают. Плюс от начальной подготовки многое зависит, поэтому тебе никто не сможет дать адекватную оценку по времени, кроме того, что от пизды сказать.
>>2550339 да немного на самом то деле это неплохой способ выучить язык и вообще научиться программированию берешь спецификацию какого-нибудь протокола (тысячи их, для пром контроллеров, для iot, для финтеха, для крипты, для медиа, для ip-телефонии, и прочиее) и по спецификации ебашишь чтобы работало, вот и все думать вообще не надо а вот грамотно спроектировать протокол под конкретную задачу, вот это да, уже мастерство и другой уровень квалификации почти все референсные реализации протоколов написаны на pure c, часть из них на приплюснутой сишке в качестве учебной задачи можно написать реализацию использующую возможности новых стандартов с++, к примеру
>>2551473 а, дополнение - браться за реализацию сетевого tcp-ip стека я бы не советовал, с учебной целью гораздо полезней реализовать один из более специализированных протоколов либо семейство протоколов
>>2551016 1) int i(2.72); // i == 2 && warning C4244: 'initializing': conversion from 'double' to 'int', possible loss of data int j{2.72}; // error C2397: conversion from 'double' to 'int' requires a narrowing conversion
2) copy(istream_iterator<int>{sstr}, {}, inserter(v, deque_middle)); // Обрати внимание на пустую пару фигурных скобок в середине. А еще можно писать //... return {};
Бля, спасите, я ваши плюсы курю один день. Надо найти кол-во элементов в векторе объектов, int поле у которых больше 200. Надо использовать count_if, bind, greater. Я не ебу как забиндить, да и вообще не ебу как это должно работать и нахуя у вас это есть, но вот код который задачу выполняет, только нужно его изменить с использованием count_if, std::greater, bind https://pastebin.com/nQim1Yup
>>2549967 Пару лет назад, когда я был еще молодой и зеленый, один ревьюер пытался мне за это предъявить. Ох и горячий был спор. ревьюера по итогу обоссали.
Не пойму прикола Смаке, я в add_executable() должен вручную чтоле блядь все файлы прописывать? Я в GNU make мог шаблоны писать, да мог ничего не писать, утилита все сама собрала бы из исходников. И почему нигде не пишут проверяет ли сmake даты изменения зависимостей? Перед тем как сбилдить. И не понятно как работает вижуал студия, она проверяет даты изменения зависимостей как make или нет? По ощущениям она как будто каждый раз все файлы заново компилирует.
>>2554947 Во-первых вместо float нужно int. Иначе на больших числах возникнет округление. Во-вторых надо следить за переполненим целого -- 4e9 * 4e9 это больше чем 64-битный int
У меня самодельное дерево переполняет стек при вставке 50 000 упорядоченных элементов. Че теперь всю рекурсию на итерации переделывать? Нафик я тогда ее учил?
Вот вам вопросы от нубаса. Хочу в консольке - слушать нажатия клавиш и чтобы при нажатии что-то делалось, но чтобы при этом - все приложение не ждало пока нажму клавишу. Ну, типа я тетрис в консольке хочу. И как сделать так, чтобы игра просто шла, но фигурка крутилась только тогда, когда клавиша нажимается - я не знаю. Можно - ждать каждый "кадр" нажатия, но тогда вся суть теряется от такого вот тетриса.
>>2555748 Я дополню вопрос, пожалуй, мне тоже интересно, и заодно отвечу на него на 50%. Ввод можно ожидать в отдельной нити, и тогда приложение не будет висеть. Но как в плюсах проще всего читать ввод без эха и без необходимости нажимать ввод? Есть getch, но он чисто для винды. Можно использовать сторонние библиотеки, но может есть какая-нибудь магия со стандартными потоками?
>>2555800 "Сторонние библиотеки" для таких целей используют нативные функции целевой платформы. смотри сурс глфв пол ивентс - там это нормальго сделано
>>2555810 >"Сторонние библиотеки" для таких целей используют нативные функции целевой платформы. Да это понятно, просто не хочется подключать какой-нибудь sfml только ради этого. Выглядит, как оверхед.
В плюсах можно объявить класс A внутри другого класса B и обращаться к нему как B::A, как будто B это namespace (пример: string::iterator). Как это правильно называется, и где об этом почитать? Иногда нужно сделать класс Foo и производный от него (то есть логически связанный с ним) класс FooBar, и хочется чтобы он был вложен в первый (Foo::Bar). Проблемы возникают, когда это шаблон класса, и ещё если я пытаюсь на qt так же вложить qobject в qobject.
>>2555800 >может есть какая-нибудь магия со стандартными потоками? Нет никакой-такой магии со стандартными потоками. Вводом/выводом рулит операционная система и к стандарту языка оно никак не относится.
>>2555936 >Нет никакой-такой магии со стандартными потоками. Вводом/выводом рулит операционная система и к стандарту языка оно никак не относится. Не, ну по этой логике и тхреды контролируются ос и полностью зависят от платформы, но в стандартной библиотеке они, тем не менее, есть. Почему бы так же не внедрить в стандарт универсальный аналог getch?
>>2556380 cmp %eax, 0 А как это внутри на конкретном процессоре работает, врчд ли тебе ответят. Можешь почитать про физическую сторону вопроса, попыиаться сам сделать что то похожее, но не факт, что у intel все так же. А вообще он не проверяет каждый бит. Он одной инструкцией делает операии сразу над байтом, двумя, четырмя или восьмью байтами
>>2556380 На x86 процессоре, чтобы проверить, например, является ли число ненулевым, нужно выполнить с ним какую-нибудь операцию. Каждая выполненная операция устанавливает значения разных флагов. Один из них, ZF - означает, равен ли результат вычисления нулю. Для этого можно выполнить cmp eax, 0, как написали выше, но чаще всего пишут test eax, eax, так быстрее. Cmp выполняет вычитание, а test - побитовую операцию and. И в том, и в другом случае потребуется пройтись по всем битам. В некоторых случаях можно обойтись без test, если итак придётся перед проверкой выполнить какую-то операцию, которая установит нужный флаг. Хз, как оно может работать быстрее, по-моему норм.
>>2556385 Добавлю. Это на самом деле сложный вопрос. Есть вообще наука которая занимается булевыми схемами, как быстрее вычислять булевы функции схемами наименьшей глубины, например. Тут глубоко копать можно
>>2491360 (OP) Что почитать чтобы научиться писать ебейшие тимплейты? Желательно покороче, ака минимум воды
Я научился делать дженерики и простенькие рекурсивные функции на вариадических темплейтах, но этого мало, хочу сделать конструктор навороченной структуры данных, чтобы оно все скомпилировалось и требовало минимум указателей и константных значений в рантайме, пусть все что можно запекается в код.
Есть гарантия, что it.end() будет заинлайнен? Как вы вообще живете с вызовами 100 функций из критичных циклов, а вдруг компилятор это сделает медленно.
>>2558003 На более менее современном железе вызов функций настолько быстр что инлайн вообще потрял смысл. Хотя обвызывайся. а так про профайлер здраво сказано
С новым годом! Продолжая тему изучения cmake, как вы решаете проблему, когда find_package() не может найти библиотеку? Мне кажется эта распространенная проблема у виндодаунов, но толкового гайда не найти. Я пока решаю проблему установкой следующих переменных.
>>2560018 Ну а как тут решать проблему, только делать так чтобы пакет обязательно был, в противном случае падение И либо юзер сам ставит то что надо, либо сам ручками, нужные пакеты для твоего по, в отдельную папочку складываешь
>>2491360 (OP) Ананасы, решил через пару неделек походить по собесам, сам работаю мидлом с зп 2.5к$ не ДС/ДС2, но хочется попробовать поймать чего получше. Кто-то ходил в последние пол года по собесам? Готовились к собесам? Что спрашивали? На чем обосрались? Сейчас вспоминаю все с чем не работал эти 2 года, дрочу литкод, ссыкую дико
Как определить структуру, у которой есть массив длины N, массив длины N - 1, ..., массив длины 0 Вопрос: ты что, дурак, зачем тебе массив длины 0? Ответ: массивы для упрощения примера?
Но это всрато, я хочу указывать одну цифру. Попробовал так: // оставим то, что тут порядок возрастающий, как развернуть integer_sequence я нашел template<size_t N> struct LevelArrays{ std::tuple<std::array<int, std::make_index_sequence<N>>...> levels; } Оно ожидаемо не работает, как сделать правильно?
>>2560280 лучше уволься с текущей работы, отдохни месяц, а потом все силы направь на поиск нового более оплачиваемого месяца, а то 2,5к баксов с текущей инфляцией - это просто смех, ты просто гниешь в этом болоте без роста
>>2562491 Что интересного в этом высере? Мало того, что подобные проекты вообще никакого отношения к C++ не имеют, так ещё и говно какое-то, которая любая шарпоблядь напишет за несколько часов.
пишу два приложения, которые обмениваются данными через сокеты. Приложения 1 - клиент, посылает данные Приложению 2 - серверу, и Приложение 2 обрабатывает данные.
Возник вопрос при обмене данными - как приложению 2 узнать сколько прочитать из приложения 1 ? У меня возникла идея, что всегда в начале, перед посылкой основного сообщения, приложение 1 посылало приложению 2 число типа unsigned int в байтах, которое содержало бы размер последующего сообщения в байтах, и только после этого приложение 2 считывало бы указанное кол-во байтов.
>>2562514 >меня возникла идея, что всегда в начале, перед посылкой основного сообщения, приложение 1 посылало приложению 2 число типа unsigned int в байтах, Так и делают
>>2562600 Ну область применения, если просто хочешь работать пофиг где, то плюсы сомнительный выбор Слишком много учить, слишком узкие области применения, в целом боль при работе с ним
Есть множество других областей, мобилки, веб, машоб но это тогда тоже не для тебя и миллион других
>>2562383 О, оказывается, в хроме все ок. >>2562425 Скучно же, ну. >>2562467 Не, я и на работе C++ бэкендщик, правда там подобный DSL с макросами вряд ли восприветствовался бы. >>2562480 Так у меня пока что весь фронт - это браузер, то есть чистый HTML, который генерируется на бэкенде. Но да, если захочется какой-то крутой UI, то это однозначо должен быть самопальный клиент на WinAPI. И чтоб и то, и другое летало на 20-летнем синкпаде под Windows 2000. Джаваскрипт нинужон. Ноудискасс. >>2562487 Согласен. Все таки, нежелательно. От вида такого гигачедяры, как я, ваши комплексы совершат беспрецедентное пробитие дна.
>>2562492 Ну, моей первоначальной целью было потренироваться в реализации лоулевельной части. Даже репозиторий называется httpserver, и только потом тестовый main мутировал в imgbrd. Кроме STL, cstdlib и линуксовых хедеров там ничего внешнего не используется.
>>2563128 >Но да, если захочется какой-то крутой UI, то это однозначо должен быть самопальный клиент на WinAPI. Не не не, ты не понял Фронт. на плюсах. в браузере! Просто всё через wasm делать
идея мертво рожденная, но ржавые например на фулл ебале такое запилили, yew называется, на удивление выглядит норм
>>2563189 БРАУЗЕР ПРЕДНАЗНАЧЕН ДЛЯ ПРОСМОТРА ГИПЕРТЕКСТА @ ДЛЯ ВСЕГО ОСТАЛЬНОГО ДОЛЖНЫ БЫТЬ СПЕЦИАЛИЗИРОВАННЫЕ ПРОГРАММЫ, КОТОРЫЕ ПОЛЬЗОВАТЕЛЬ УСТАНАВЛИВАЕТ ПО СОБСТВЕННОМУ СОГЛАСИЮ никогда не интересовался wasm, звучит годно, вот бы когда-нибудь взлетело
>>2562514 >Или можно по-другому? хз я бы выбрал протокол подходящий под задачу и использовал его реализацию если бы писал для тренировки - то сначала по спецификации написал свою реализацию а придумывать свой (хороший) протокол, имхо, это уже высшая квалификация для программиста и таких людей единицы во всем мире
>>2562547 >Скажите, почему С++ не завоевал мир? ну, к примеру, в энтерпрайзе кресты абслютно справедливо сдохли, хотя в 90е было немало систем на них написаны, секрет простой: уебаны в комитете не захотели делать стандартизированную загрузку-выгрузку классов, ведь хуевертить шаблончики гораздо веселее обратный пример: в различных контроллерах (даже от самых маленьких до больших в которых уже по сути полноценные ос крутятся) на данном этапе вполне можно было бы использовать с++, потому что комитет дохрена сил за последние 25 лет потратил, введя много средств которые упрощают такой низкоуровневый кодинг, при том что уже изначально в кресты и stl был заложен потенциал работать на контроллерах, но эта отрасль довольна консервативна и там до сих пор на сях дрищут макросами и войд звездочка
>>2562600 без какого то намека на троллинг и наебалово, просто один совет: хочешь побыстрее начать зарабатывать деньги кодингом, даже не смотри в сторону крестов, даже не думай об этом, просто забудь что такой недоязык существует
>>2562645 на с++ не пишут компиляторы, ни одной штуки не написано пишут на приплюснутой сишке, в том числе и компиляторы самого с++, что как бы и показывает всю ущербность этого языка, ведь яп претендующий на звание языка общего назначения всегда пишется бутстрапингом (что ява, что шарп так написаны) но это не случай с++, все компиляторы которого написаны на приплюснутом си
>>2563228 Доводжу до твого відома, що я повноправний громадянин наймогутнішої держави у світі. Раджу тобі, чоловіче, якнайшвидше підготуватися до входу у склад нашої імперії. Наврядче наші шляхетні правителі лояльно ставитимуться до жителів східної колонії, що не поважають Україну.
>>2563253 Это то же, что C++, но в терминологии конченных долбоёбов, типа шизика, который сейчас бегает тут и говорит забыть про C++ и настаивает, что он не тролль.
>>2563122 Ну, если компилировать и запускать обе программы на одном и том же компьютере, проблем не будет, но тебе этого наверняка потом будет недостаточно, так что лучше сразу сделать правильно. Если ты используешь Qt, то там есть типы quint32_le и quint32_be.
Давно студией не пользовался. Пришлось установить. Даже обычный хело ворлд не собрался. Триллионная компания делает всё через сраку. Впрочем, ничего нового.
>>2563239 >на контроллерах, но эта отрасль довольна консервативна и там до сих пор на сях дрищут макросами и войд звездочка
Дрищут на С претенциозные деды, которые либо в полудохлых КБ работают, либо махараят мелкосерийку. Все зумеры и зарубеж давно на ++, причем там от насранного в очередном mbed говна может и шарпист какой охуеть.
>и stl был заложен потенциал работать на контроллерах Вот куда он точно был не очень заложен так туда. Любая хуйня для мк ДОЛЖНА поддерживать статическое выделение, не значит что оно всегда будет использоваться, но оно должно уметь.
А по факту - тебе надо либо костыли писать, либо либы сторонние брать, для того, что бы ебанную queue на статике возыметь. ringbuffer вообще блядь отсутствует.
Не, STL это пизда хуета не совместимая с встраиваемыми.
>>2562547 Да, да, очень интересно и прикольно, что ты можешь через union отъебенить себе ногу поколено, но рефлексии без долбления себя в очко так и не завезли.
А пиздатой компайл-тайм рефлексии ебанись как не хватает.
У меня есть много фотографий и их нужно назвать по порядку 1, 2, 3, 4. Порядковый номер зависит от самого содержимого фото. Сейчас фото имена их хэш-сумм, то есть они неупорядочены и если просто скрипт запустить консольный, то он назовёт их правильно.
Собсна хочу написать программу которую бы запустил и чтобы я просто в проводнике щёлкал на превьюху фото и он присваивал ей число. Ну запустил программу, щёлкнул одно фото он назвал 1, щёлкнул другое назвал 2.
Подскажите как это реализовать, какие либры юзать и вот это всё. В каком направлении копать короче.
>>2564211 Чтобы клик на картинку детектился тебе придется писать свою показывалку картинок и там уже обрабатывать события с мыши.
Если хочется проще я бы сделал так - создаем пустую папочку - перетаскиваем туда в искплорере мышой картинки по одной за раз - скрипт сидит и следит за папочкой - как только там появляется новый файл, переименовывает его по порядку
>>2564284 Может быть можно как-то при событии клик мышкой обращаться к процессу explorer у него спрашивать был ли выбран какой-то объект current window.
Наверняка можно в какой-нибудь стэк i/o вхуйнуть это как фильтр-драйвер
>>2564301 Ну у него же есть свои api к которым можно обратить и запросить типа был ли file selected сделан.
Ну короче щас попытаюсь снова объяснить что я хочу. Есть папка с файлами в explorer
Ты берёшь и запускаешь программу. Она чекает что рабочее окно(которое ты выбрал щас) принадлежит процессу explorer и если так то при событии клика мышкой она спрашивает у explorerа был ли выбран какой-либьо объект(папка, файл, фото видео) в окне если да то выбранный файл переимновывается присваивается число 1 и после чего оно увеличивается на 1 до следующего раза.
>>2564310 Сам Страуструп писал в своей книге Основы ООП на базе с++ чтобы люди не дрочили на лексику и головолоками вроде а что будет если всякую ебалу налепить, а писали программы
>>2564313 >Сам Страуструп Страуструп задумал свое грязное дело сильно загодя, еще в 80-х он осознал, что язык нужно стандартизировать. И это неспроста. Он падло чуел, куда ветер дует, и понимал, что все косяки на кого-то нужно спихнуть. Вот он и изобрел в дополнение к языку еще некий Стандарт.
На самом деле, все было бы куда проще, если бы программисты в непонятных ситуациях клялись Жопой Страуструпа, а не кивали бы на Стандарт.
Страуструп - учредитель Общества с неограниченной безответственностью.
>>2564336 Скоро дотнетовцы начнут траллить всех. У них уже есть компиляция в нативный код хоть под линукс, хэллоуворлд весит чуть больше 1 мб, установленный дотнет не нужен, по скорости ебёт всякое GOвно.
>>2564761 > хэллоуворлд весит чуть больше 1 мб Но если запаковать в него рантайм дотнета, он весит уже 20 метров, даже после трима. И это хеллоуворлд, а сервис будет уже под сотню.
>>2564769 Нет, в 7.0 дотнет уже не нужен при AOT-компиляции, там полностью нативный код. Из негативного - рефлексия выключается полностью и либы с ней не будут работать.
>>2564921 Совсем по феншую - да. По факту - пока не парься.
Из причин сделать free() перед завершением, что я могу придумать - это корректная отработка atexit() abort() всяких и какие нибудь ультра ебнутые случаи, когда твоя программа исполняется в одном и том же процессе с другой (я хз можно ли так вообще, не очень знаком с подноготной и ее проблемами, просто говорю тебе, что там до и после мейна что-то есть и тоже может исполняться.
>>2564912 Не эксперт по qt, но слышал, что valgrind считает утекшей любую неосвобожденную по завершению память. Вот есть у тебя глобальный объект - окно. Должен жить все время. Ты взял, сразу через new выделил и потом просто не удаляешь, пока прогу не убьют. Тебе норм, а он за утечку посчитает. Это мои предположения
Приветствую, Аноны! С Новым годом!) Счастья, благ)
появилась необходимость написать небольшой кликер, использую функции SetCursorPos и mouse_event проблема в том что они не всегда работают: 1). не получается "кликнуть мышью" на некоторые окна 2). если запустить эти окна через "эмуляцию" Alt+TAB, то функции SetCursorPos и mouse_event вообще перестают выполняться(наблюдаемый результат отсутствует) третий день мучаюсь, в интернетах пишут что-то про разные окна на Win API, мои силы на исходе, подскажите пожалуйста как решить данную проблему Спасибо
>>2565630 p.s. у всяких удалённых рабочих столов такой проблемы нет: по идее они так же должны эмулировать работу мыши/клавиатуры (без DLL инъекций я надеюсь)
>>2565691 а чего нибудь попроще нет? вот всё работает, потом перехожу на приложение - движения мыши прекращаются, SendInput попробовал - тоже не работает
косвенно догадываюсь что мышь и клавиатура находятся (подключены) к какому-то неизвестному окну, которое никак не связано с тем, что я вижу на экране
Нужно ли мне стараться, чтобы мой проект компилировался разными компиляторами? Что делать если какая-то либа в одном из компиляторов не компилируется? Нормальная ли практика чутка подпиливать либу, чтобы работала?
>>2566162 >>2566189 Хуй знает, по мне наоборот, если ты планируешь этим работать - нужно все делать энтерпрайзно, даже если это копродомашний проект.
Без этого ты просто не поймешь, нахуя делается куча вещей. Блин если ты билдишься под один таргет и на одном компиляторе, то ты например можешь вообще например забить хуй про UB, ведь вся веселуха там начинается только тогда.
Среди С++ пограмиздов знание УБ и тыканье им друг в друга это отдельная спецолимпиада.
Нужна помощь с автоотключением реле после включения по смс. Если использую delay 10000 * 8 то вся ардуина виснет. Есть какие ни будь другие варианты как это реализовать?
>>2566255 Вся эта шелуха тебя отвлекает от самого важного - пиления своих проектов.
Я, когда вкатывался, ваще ничего не умел кроме вижуал студии. Вкатился, моей сениорской лычке уже больше пяти лет, все еще ничего не умею кроме вижуал студии, и не хочу уметь.
сука)) как же я сиранул с обоссаных опущенных уебанов в этом треде, насколько нужнео быть нищей пидарашкой чтоб писать не на шарпе и тем более на этой хуйне
>>2567864 > Нахуй Алигн нужен? Доступ по выполненному адресу эффективнее. > Тем более зачем отнем знать компилятору? Потому что компилятор размещает данные. > Что такое pragma(push,1) и pragma (pop)? Выравнивание полей структуры по однобайтовой границе.
>SFML >SDL Вы пизданутые. Еще и мне это говно посоветовали когда-то. Я недавно узнал, что API OpenGL позволяет писать напрямую в драйвер видюхи, достаточно занклюдить <gl.h>. Вот на чем надо писать, потому что так писали серьезный сэм и другие ламповые игры.
>>2568530 И что? Тебя же не удивляет, что для вывода в консоль все используют стандартную библиотеку вместо вызова прерываний или функций WinAPI по адресам. Та же хуйня и с OpenGL, нет смысла писать тонны бойлерплейта для рисования фигур, когда в SFML это делается в несколько строчек.
А вы знали, что в 23 стандарт комитет ввёл std::expected (он же хаскелльный Either) и монадические операции над ним и над std::optional. Кто-нибудь остановит этот взбесившийся принтер?
>>2568615 Наоборот заебись, кресты никогда не были ООП-языком. Я бы уже давно полностью на кресты перекатился обратно, если бы вместо cmake что-то нормальное придумали.
>>2568447 Опенгл - это Си, а не плюсы. СФМЛ - это не только графика, но еще сеть, многопоточность, звук и ввод с клавомыши. СФМЛ очень дружелюбен к нубам с объемом знаний в одну книжонку по плюсам. Позволяет в живую пощупать все то, чего ради создавался C++ поверх сей.
>так писали серьезный сэм и другие ламповые игры. Так писали движки для игор. Игра - это гораздо более высокоуровневая штука. Доморощенное движкостроение нынче крайне не актуальная тема.
Необходимо написать надежную систему сохранений транзакций пользователей. А именно, необходимо быть уверенным, что если данные записались, то с ними ничего не случится, даже если потом комп отключится от сети и сгорит все кроме диска. Надежность диска - отдельный вопрос. Меня сейчас интересует следущее: верно ли, что если я записал на диск данные, сбросил буфер, то с ними уже все заебись? Или как это делать правильно?
Ну и на чём пилить быстрый и красивый гуй? Qt - говно, выглядит так себе и очень медленный. Всякие imgui от хача Омара и высер на расте egui - слабо пригодны для десктопного гуя, нельзя хуяк-хуяк делать. Фреймворки на C# - нет поддержки 7 дотнета, соответственно нахуй. Разве что js-парашу брать, в виде электрона или в PWA выносить. Видел ещё шизов с годотом, он весит пару десятков мегабайт после выкидывания всего игрового, говорят гуй ничего там. Что предложите?
>>2569224 > если я записал на диск данные, сбросил буфер, то с ними уже все заебись? Нет. Никаких гарантий нет что данные физически запишутся на диск после сброса. Даже если драйвер ФС будет считать что данные записались, то нет гарантий что сам диск их записал, а не держит в кеше. Если ты что-то записал на диск и питание сразу отъебнуло - это так называемое UB.
>>2569254 Тебе надо не в сторону софта идти за гарантиями, а в сторону железа. Если питание экстренно пропадает, то на обычном железе всегда есть шанс проебать данные за последние секунды вплоть до минуты. Ты думаешь нахуя в ДЦ ставят одиночные серваки стоимостью как автомобиль? Со стороны софта ты можешь только дублировать сохранение данных на разном железе для гарантий. Ты думаешь всякие серверные сбои с проёбом БД за хуй знает какое время - это чисто диски наёбывются? Да нихуя подобного.
>>2569267 >>2569280 >>2569287 А если серьёзно? У меня бэк будет на питоне, надо так. Я же не буду гуй на питоне писать, я вообще не хочу писать на нём. В идеале бы его в кресты встроить и нормальным гуем обмазать. Но надо чтоб это не было слишком жестким крестовым дерьмом - коллеги не поймут как с этим работать. Как говорится надо и рыбку съесть и на хуй сесть - питоном пусть развлекаются другие, а мне надо быстрый современный гуй к нему прикрутить.
>>2569301 > почему не веб-клиент? Звучит как хуйня, ведь будет очень медленно. Ты вообще видел какой перфоманс у веба в питоне? Да и оно будет запускаться фактически локально, нахуй оно нужно. >>2569302 Потому что макаки есть и пишут на чём могут. Я тоже пишу на чем могу хочу.
Приветствую всех! Каким образом в С++ можно многопоточно читать из файла так, чтобы каждый поток читал отдельный кусок? Просто у объекта типа std::FILE есть индикатор позиции начала чтения. Как тогда сделать так, чтобы для каждого потока он был свой?
>>2569716 можно посмотри как в fopen передать флаг на shared read если никак - погружаешься глубже в кал какой-нибудь CreateFileW и ебешься в сраку непосредственно с ОС хендлами файлов
>>2569224 если писать совсем упрощенно, то ты используешь субд в которой реализован ACID но есть и другие системы надежной обработки транзакций, если не важен вендорлок, то они есть и в ядрах современных ос самому тебе не написать, если у тебя нет в запасе лет 20ти
Короче я решил, что мне сейчас проще всего будет организовать запасной источник питания, в случае если основное электричество отрубят. Потом просто все данные как обычно записать на диск, да выключить машину. Думаю, мне для моих целей хватит
>>2569932 Апи либы принимал и наполнял вектор, а в программе везде результат передавался как указатель (и делитался после использования), а тк вектор большой, то копировать не хотелось, а памятью владеть хотелось.
Посоветуйте хороший курс по С++ для продвинутых, хотел пояса от яндекса проходить, но их выпилили с курсеры. Опционально еще бы что-нибудь про паттерны и всякие примеры как нужно писать, а как не стоит, но с учетом С++ специфики.
>>2570108 >проще всего будет организовать запасной источник питания, в случае если основное электричество отрубят. Правильно решил - иди выбирай и закупай источники питания, тыж программист!
>>2560280 Буду репортить результаты в тред. Пока-что сходил на один собес, прошел успешно, спрашивали будто на стажера-джуна, ни одного сложного вопроса не было. Немного завалился на тех вещах которые не использую эксепшены и метапрога, но в целом фидбек очень положительный. Предложили 3к на руки. Впереди еще пара собесов, хочу попробовать выбить 3500
>>2572480 Да хуйня какая-то джуновая. Написали пустой класс попросили дописать какие функции сгенерит компилятор. Потом попросили дописать какие из них будут noexcept, собеседующий сам подумал что копи конструктор будет не ноэксцепт но я ему статик ассерт вьебал и он согласился. Спросили какую-то шаблонную дрочь, я ответил неправильно т.к не пользуюсь таким, вопрос точно не помню, чет про универсальные ссылки и реализацию std::ref Потом спросили какие бывают мьютексы в стдлибе, сложность вставки в мапу и хешмапу, немного про рвалуе/лвалуе семантику Потом вроде бы пару вопросов по Qt - на какой-то простой ответил, на посложнее нет т.к не юзал его 2 года Больше не вспомню. В целом я на джуна в текущей компании собесился гораздо сложнее, ебали 3 часа мозг всеми аспектами языка и дали самый низкий грейд с зп 1к$, хотя ответил тогда даже лучше чем на этом собесе. На самом деле обидно немного что за такие собесы так платят, может фирма с подвохом, хуй знает
>>2572439 >Предложили 3к на руки. >Впереди еще пара собесов, хочу попробовать выбить 3500 Я бы на эти пиццот разницы попытался выбить бы себе всяких либеральных привелегий. Но если ты Die Roboter, то и хуй с тобой. Die fucking robot!
>>2572496 > пустой класс попросили дописать какие функции сгенерит компилятор > какие из них будут noexcept > универсальные ссылки и реализацию std::ref > какие бывают мьютексы > сложность вставки в мапу и хешмапу > немного про рвалуе/лвалуе семантику Серьезно? Где мои 3к?
Чет почитал статью на хабре - дайджест о С++23 и событиях за год.
Помоему плюсы умирают. Нет, они не умирают вот здесь и сейчас и не умрут через 10 лет и мб 20.
Но какое-то загнивание. STL и даже кейворды стали похожи на костылища и выглядят как пиздос рода new_keyword_what_must_do_better_but_do_worse() UB фиксятся не анальной стандартизацией, а добавлением новых фичь, без удаления старых.
Нахуя это все? Что это даст?
Че они так пекуться о ABI? Кто то на серьезных щах будет переносить многомиллионнострочный проект с одного стандарта на другой?
Все вот эти шутки, про не возможность выучить плюсы, это на самом деле нихуя не смешно же. Инструментом надо пользоваться, а не учиться набивать шишки пол жизни.
>>2573214 > плюсы умирают > появились концепты, ренжи, модули, корутины Охуенно умирают. > STL и даже кейворды стали похожи на костылища и выглядят как пиздос рода new_keyword_what_must_do_better_but_do_worse() auto используй > UB фиксятся Зачем UB "фиксить"? Ты точно крестовик или просто не понимаешь сути UB?
Ololo, der C-Pluse-Pluse ye pre-olde thraede, and comrades still don't give a shit... About std::shit_ptr About std::absolutely_void About std::ai_love_love
>>2573227 > Охуенно умирают. Это вообще не аргумент. Есть такое выражение - пир во время чумы.
>auto используй Ну охуеть, особенно когда я в объявлении поля класса должен написать, что то вроде static inline constexpr
>Зачем UB "фиксить"? Нехуевая часть UB это по факту implementation defined хуйня. Вполне можно было бы анально загасить все это, заставив в таких ситуация ЯВНО указывать платформу например, особенно при учете того, что прагмы уже давно существуют. Много писать? Никого никогда не смущала насрать три листа вложенной макропидерастии для разруливания платформозависемой хуйни. А тут хочешь сказать застремает?
У тебя создателя языка и топовых чуваков ловили на незнании UB, ты же понимаешь, что это не норма?
inb4: кокококоптимизации - на хуй не нужны не явные в стременных местах. Код не эта хуйня тормозит. А там где эта - люди и так лазают по дизасму в поисках где бы спиздить еще пару тактов, так что ничего не поменялось бы.
Я вот с позиции лоу-скилл практикующего говорю, а именно на таких должен быть нацелен любой человеческий инструмент, разве что ты не маня из мира с несрущими принцессами.
>>2573386 Чувак, у тебя одна ошибка логическая - плюсы язык не для людей, а для программистов. Всё. Когда ты это поймёшь, все вопросы отпадают. Они как саперная лопата - жестокие, брутальные, но универсальные и всем подходящие А до, людей сейчас развивают другие языки - managed в основном. Хотя у раста есть потуги в юзабельность, но это потихоньку выходит из под контроля
>>2503304 >>2503113 Работаю без образования на плюсах и сях, проект новый, писался мной с нуля. кодить особо некому, сейчас приходится вообще любых воннаби-кодеров со школ, универов, канав и притонов брать, и хорошо, если у кого-то есть опыт хотя бы шарпа, иногда пытаешься джава-скриптера с месячным опытом кодинга переучить, а он не осиливает
>>2503113 а, ну собственно используется во всех микроконтроллерах, системах ерального времени, автоматизациях производства, короче везде, что связано с реальностью и обеспечением средств существования человечества, а не миром поней и радуг
>>2573421 Пчел, может я невнятно написал - но это нихуя не плюс есчё. То что я написал - факт. Хуёвый и бесчеловечный. Если твоя предметка предполагает скорость, общение с сишными либами, системку etc - ты БУДЕШЬ юзать плюсы
>>2573939 Всё 22 или сколько типа инициализации в голове держишь, уеба? Хуею с таких как ты блять. Ладно бы ты поо мощность написал, я бы ещё понял. > головой думать Ну да, мыж блять не задачи собрались решать, а код писать. Точно, забыл
>>2574001 >Всё 22 или сколько типа инициализации в голове держишь, уеба? 0 Вспоминаю 1 на время, пока его пишу >Ну да, мыж блять не задачи собрались решать, а код писать. А, ну если ты из секты макак, то решай, соединяя свои миллиарды фреймворков изолентой, а я изначально код собирался писать, чем и занимаюсь