Вместо шапки:
⚹ https://github.com/sosachbot/cppthreadhat
⚹ Для кусков кода: https://0bin.net/
Ответы на вопросы:
⚹ https://en.cppreference.com/w/
⚹ https://www.cplusplus.com/reference/
Для указателей: ⚹
Прошлый тред: >>3203818 (OP)
Он ещё и тег проебал.
Че ты мало полезных ссылок указал.
Двачую, даже нет ссылки на стандарт.
Неочевидная полезность для кабанов
Отсутствие полезности для кабанов
Отсутствие микробиблиотеки для эмбедщины, или хотя бы каких то опций сборки стандартной, чтоб например только vector и и все что ему нужно собиралось и все.
А так я считаю хорошо что у плюсов те же корутины реализованы как костыль, а не как асинхронный блок кода.
Да, не конфа, а чятик.
И что для тебя эталонная реализация корутин?
Пиздец шиза. Ещё и написана русским шизиком из Черногории. У него даже SSL нет, а его веб-сервер на сишке формирует простой HTML целых 150 мс.
Что такое жизнь без MMU
Члены ua действительно не инициализируются, зато инициализируется "recursion_protector", после чего его значение сразу же проверяется, не стало ли оно внезапно больше 6. Это норма для AVR? Я чего-то не понимаю?
Говнокод ебаный. Пойди сам догадайся что значит if (i % 3 == 2) или ua.a <<= 4. Оторвать бы руки программисту который писал ЭТО.
% - остаток от деления, <<= - битовый сдвиг с присвоением (left shift assignment).
Непонятно именно зачем он двигает данные в неинициализированной переменной. И где тут рекурсия. Ни далее в теле функции, ни в eeprom_read_block она не вызывается. Можно было бы свалить на неудачный пуш в CMS, но это код из тарболла, лежащего довольно давно на официальном сайте.
Переменная не инициализирована, это так. Но судя из кода она в первую итерацию цикла присваивается. Остаток от 3 по 14 будет 2 (14 -12).
Но в целом плохо работать с не инициализированными переменами.
Ну сам код кхм в плане чтения тот еще шифр.
Это не то что плохо, это самое настоящее UB. В эльбрусе в защищенном стеке работа с неинициализированными данными или мусором, например запрещена вообще, будет прерывание.
А чё такова, я так и пишу. Удобно же.
Я правда перед логическими операциями выражение в отдельные скобки пихаю типо
(i%3) == 0
а, то вдруг он случайно посчитает i%(3 == 0) то есть i%0.
Че такова?
С конечно же.
С++ я не знаю, если честно, но впринципе слышал немного. И скажу так: С++ это что-то типо сиквела-ремейка к С.
Сам по себе язык С довольно простой. Он поэтому и называется "низкоуровневым", потому что тут много чего нет. Тут нет массивов, тут нет строк, тут нет констант, тут нет операций возведения в степень, тут даже модульности нет. Язык С - это как бы отличная подготовка для перехода в С++. Изучая С, станет понятно в чем суть некоторых выражений.
Лучше обои клеить учись. Этим сможешь хоть женщину лет 40-50 поразить
я старался
>С++ это что-то типо сиквела-ремейка к С
Хуёв там. Классо-ориентированность создаёт 98% сложности и материала для изучения (ёбаными годами блядь) современных крестов. Остальные 2% это как раз и есть база в виде C.
Если ты не можешь въехать в язык написанный специально для облегчения написания софта то наверное лучше сменить сферу деятельности. Потому что если годами постигать ооп, то конкретные задачи вроде 3d графики, криптографи нейросетки, hpc, придется видимо веками постигать.
Хуйня типа сайд-эффектов крестовых лямбд очень быстро из башки выветривается при неиспользовании, поэтому читать приходится все время. А еще там дохуя тонкостей, что в какой версии есть, типа гетерогенных лукапов или atomic wait with timeout и как эту версию у себя в компилере сделать. Половина из тех, кто пиздит, что это просто, просто не знает на самом деле нихуя из этого и думает, что ооп заканчивается на std::move. А вторая половина и до этого не дошла и думает, что std::unordered_map быстрее, чем std::map. В крестах дохуища просто тонкостей и если для тебя это все просто, то велика вероятность, что ты просто пиздишь.
И да, забыл. Если у тебя не дай бог два рабочих инструмента, а не только кресты, ну допустим, +питон, то всё, пизда, можешь забить хуй на художественную литературу и прочую личную жизнь.
Мозги мамке еби.
> А вторая половина и до этого не дошла и думает, что std::unordered_map быстрее, чем std::map
Причем здесь объекты стандартной библиотеки и нахуя ты все это учишь ебанутый?
Ты хоть понимаешь что в языках более высокого уровня ещё больше всего, там xml парсеры, вебсерверы в стандартной библиотеке, ты все это постигать собрался? Нахуя? Зачем?
>А вторая половина и до этого не дошла и думает, что std::unordered_map быстрее, чем std::map.
А что, не быстрее?
Ну хз, для меня знание языка, это всё таки небольшое знание синтаксиса + знание стандартного библиотеки.
Синтаксис С же очень прост. Но что можно сделать без функции malloc? без работы с файлами? без fork?
Ясно, что так то можно ими и не пользоваться, но тогда си превращается в ассемблер просто.
Ща тебе расскажут про O(2n).
Там такая же тема как и с linked_list и vector
Даже с лучшей ассмптотиках на определенных значениях, лучше выбирать худший варик
> Синтаксис С же очень прост. Но что можно сделать без функции malloc? без работы с файлами? без fork?
можно попросить операционную систему напрямую, в винде или эмбедщине glibc не используют.
Зато на крестах это в стдлибе уже все запрограммировано за тебя и под win, и под lin, и даже под браузер. Зачем самому ебаться.
В винде нет libstd там свои библиотеки visual c++. Ну и вообще в плюсовой библиотеке находится совсем не то что ты думаешь. Все вот эти объекты map/set/promise и их методы в заголовочных файлах и все это включается в твою программу. В библиотеке только системо-зависимые подпорки для этого всего.
В либе тоже часть функционала, по крайней мере в линуксных компилерах. Когда линкуешь clang с его libc++ вместо дефольной гццшной libstdc++, то многие фичи С++20/23/2c начинают работать. Почему ж оно так, если там в хедерах все?
Потому что путь линукса - держать миллион либ разных версий в окружении. А путь психически здоровых людей - всё нужное хранить в бинарнике. На винде из внешнего только есть вцрантайм на 120 кб, но его можно и статически линкануть с /MT. Сам STL всегда статически собирается.
В смысле? В линуксе тоже можно статически собирать и часто так и делают, единственное что glibc (это не кресты), лучше статически не линковать. Ты хуйню какую-то написал, не забыв при этом разделить людей на психически здоровых и нездоровых.
Психически стабильный человек никогда не выберет коляску вместо удобной ОС. Не понимаю в чём упрёк.
У линукса много недостатков, у винды много недостатков. Операционки все еще в бронзовом веке, к сожалению. А ты просто ёбнутый.
>у винды много недостатков
Это каких, лол? Единственная вменяемая ос для ПК, остальное сорта прошивок для той или иной залупинской задачи, не более.
Только не подумай неправильно, я понимаю корпораборв присосакшихся к кормушке клепания прошивок кабанам, но бабло это бабло, а ос это ос, совсем разные вещи. Если что-то прибыльно для кого-то (мало кого, ведь корпораб это 1 из 100000 людей), не значит это что-то хорошее, полезное.
Домохозяйка съеби в /s со своей прошивкой для игр. Или в /gd Прошивка для сервера хотябы к тематике относится
>glibc (это не кресты), лучше статически не линковать.
Поч? Единственное что стабильно статично линкуеттся
Хорошо, но как это противоречит тому что я сказал?
>>258040
Майкрософт для винды свой софт точно так же собирает, вынося все в библиотеки и линкуя с ними программы и точно так же как на динуксе некоторые библиотеки не включены в дистрибутив их надо выкачивать с сайта Майкрософт.
Просто на винде сложилась такая культура таскания своих библиотек из за генетической памяти, когда все прибивали софт гвоздями к wmp shell32 из виндовс xp а потом хуяк и в висте все поменялось. Плюс винда уже давно сдала все позиции по всяким wmv ie (сейчас уже никто и нипомнит что они доминировали когда то) и в целом все пришло к тому что пользоваться чем то из состава винды кроме гуя это примерно то же самое что в линуксе привязывать по ко всяким сервисам типа phonon из KDE. Просто в линуксе (и кстати макоси) помимо сервисного разного говна есть и нормальные библиотеки вроде zlib libssl а в винде квадратно-оконный велосипед от ms.
Чел, линукс - это софтина из винстора. Нахуя её на голое железо ставить и ебаться с консолькой, если можно пользоваться линуксом из винды?
Ды мы все поняли, съеби уже.
Под эльбрус уже можно наноядерную ос на плюсах писать, но нету сырья и кадров.
Пипец, тупое животное, не видит космической разницы в устройстве винды и линукса. Вот до чего доводит привлечение в программирование свиней охочих до денег.
У меня есть класс, который принимает извне шаред_птр по значению, далее этот шаред_птр идёт в два члена, один хранится по значению, второй по шаред_птр. Проблема: при работе класса, у меня меняются те значения, которые вообще никак меняться не должны. Бул инкрементируется блядь. Смотрел в отладке, на Винде (msvc 2022) и дебиане, выводил в консоль - одинаково плохое поведение.
Что характерно, при вызове конструктора в проблемном месте, конструктор не меняет значения, что вообще пиздец какой-то. Понятно, что конструктор работает до обработки (сама обработка - заполнять буфера), и здесь выход за границы массива маловероятен.
Я тестировал валгриндом и санитайзером в Винде - начего. В других местах программы используется asio, есть места с использованием atomic. Программа в одном потоке. Ещё, винда показывает, что память растёт, хотя по коду ничего такого быть не должно, и это очень похоже на ту же ошибку.
Я воооообще не понимаю, как отловить баг, все мои знания закончились. Я даже часть кода переписал, думал, что проблема из-за шаредптр, в итоге упростил часть с ссылкой классов друг на друга. Если класса разбросать на компоненты, инициализация и рвота корректная.
>у меня меняются те значения, которые вообще никак меняться не должны
Нельзя watchpoint поставить и посмотреть, каким кодом это значение меняется? Вроде вочпоинты неплохо работают, я так делал в gdb и в инструментах разработчика в Хромиуме для WASM.
https://sourceware.org/gdb/current/onlinedocs/gdb.html/Set-Watchpoints.html
А вообще сам понимаешь, сложно по твоему описанию что-то предположить. Ну чисто наотъебись может у ASIO настройка неправильная размера буфера или типа данных сигнала (вроде там float32, не помню точно уже) и он переписывает твои данные звуком.
Это надо сначала чистый C++ учить, а потом какой-то фреймворк? Какую литературу про такие задачи можно почитать?
Вотчпоинты (смотрю в отладке в интерфейсе msvc) меняются. Либа asio не про звук, а Boost::asio - про асинхронное выполнение. В целом, либа очень надежна, и вряд-ли в ней проблема. Переменные меняются, как в вотчере, так и в выводе в консоль.
Для меня наибольшая загадка, почему в конструкторе члены при инициализации не меняются.
Да, ещё забыл сказать, что один из мутных классов шаблонный, и наследуется от нешаблонного интерфейса. Я предположил, что где-то как-то vtable поехал или типа того, но вроде все делаю корректно.
И вообще, sanitizer в новой msvc вроде мощный инструмент в поиске утечек. Пример: я сделал вектор<чар> в(4), далее указатель на чар* птр = в.дата(), и записал птр[4]=10. Санитайзер это нашел и заорал, а обычное выполнение эту часть пропустило.
Не совсем "чистый" c++, смотри Qt. Это очень хороший фреймворк, нормально скилл с ним развиваешь. Начинаешь с чего-то простого, потом все сложнее и сложнее штуки делаешь. В какой-то момент без проблем сможешь любые сторонние либы подключать, и писать жирный визуал на опенгл/вулкане.
Для начала, для формочек сойдёт штатный функционал с графиками и пеинтером.
Минус куте в лицензии, за что его красноглазики не любят, но они идут нахуй.
По каким материалам изучать Qt, чтобы научиться разрабатывать приложения, а не просто поделия уровня laba2 под диктовку?
Qt параша подходит только для хеллоуворлдов или проектов попила бабла типа KDE, где занимаются переписыванием: Qt N -> Qt N+1 -> Qt N+2 -> Qt N+3 -> Qt N+4 ... Разработка? Это что такое? Нам некогда, там новый Qt вышел, надо на него переписывать.
Ты понимаешь, что даже мелкая программа разрабатывается годами, за это время выйдет несколько новых Qt превращая твой код в тыкву. Никакой разработки быть не может если у тебя нет галеры рабов задача которых постоянно переписывать на новый Qt что уже давным-давно написано, иначе это будешь делать ты, то есть разработка не сдвинется с мертвой точки.
Ты портфель собрал уже? А летние задания сделал? Проверь еще раз.
Actual Size всегда разный, как будто я где-то из нулевого указателя читаю.
А, написал довольно косноязычно, нужный текст в прочитанной строке таки есть, но вот после него абсолютно левые данные.
Бля, подозревал что-то такое, но слишком тупой чтобы пробовать такое, спасибо, возьму на заметку.
std:vector<char> buf();
buf.capacity(len);
_File.read(buf, len);
return std:move(
std:string(buf.begin(), buf.end())
);
Вот так надо это делать на плюсах.
Притворяюсь что ничего не видел, иду пить кофе.
1. Без полного кода и примера формата файла нихуя не понятно
2. Ты говоришь сначала идет размер u32 то есть в бинарном виде? Если так то тут влияет endianness.
В остально твой высер не читал
> По хорошему конечно такие методы надо делать инлайновыми
И каким же образом ты это будешь делать, так чтобы тебя рандомно компилятор нахуя не послал
По чатужпт. Книги всё хуйня, только опыт.
Для начала, сформируй свою хотелку, что ты хочешь, накидай этапы. Это реально важно. Нормально, что первый этап "запустить хеллуворлд", это уже достижение.
Потом, если у тебя нормальная задача, типа матана, то тут надо понять, что тебе нужно. С++ нужен для скорости и создания такого визуала, который другие средства предложить не могут. Но с++ срано подходит для мат. разработки, он не скриптовый, и вывод произвольных данных или картинок сильно затруднен.
Для матана лучше использовать матлаб или питон. Предположим, ты хочешь сделать супер алгоритм сжатия картинки. Вот у тебя есть lena.jpg и наброски алгоритма, типа каждый четный пиксель удаляем. Алгоритм прост в реализации как и весь матан, поэтому его лучше сделать на питоне. Он тебе даст постой способ загрузки джпега с переводом в пиксели, и даст такой же простой вывод. С чистым с++ ты потратишь день на вкат в смаке и поиск либы.
Зачем тогда C++? Для реализации например http сервиса, который примет от миллиарда клиентов картинку и сожмет ее. Но и тут прикол в том, что многие другие языки отлично подходят для конкретно этой задачи
1. Добавить прямо в объявление класса
2. После объявления класса добавить в заголовок #include inline_methods.cpp 3. Прописать метод как inline и использовать lto.
Молодой человек, на пересдачу
Битовые операции иди выучи, потом придешь за препроцессор пояснять.
>Для меня наибольшая загадка, почему в конструкторе члены при инициализации не меняются.
Может объект где-то скопироваться успел? cout << this то одинаковое везде? Ну я хз вообще, у тебя там сложная какая-то ситуация, ее словами не объяснишь даже особо.
this я не везде вывел, но спасибо за подсказку. Я удалил конструкторы присвоения и копирования в мутных классах на всякий случай.
Вообще код очень типовой, типа в классе А создаётся shared_ptr<B>, который передается (по значению) в конструктор класса C: c_(b_ptr_). Порядок инициализации верный.
Собственно всё, но я щас объяснил с точки зрения на подозрение, что проблема где-то в шаред_птр. Ещё я упростил передачу шаред_птр и отказался от ссылок друг на друга, хотя такое допустимо.
Меня беспокоит другое, я не знаю, какими средствами запустить диагностику. Я далек от флагов компиляции, обычно пользуюсь дебаг/релиз и редко чем-то другим.
Всякая технологическая залупа, которую не часто ирл встретишь, типа >>259368. Куте хорошо подходит, из коробки есть работа с сериал портом, модбасом, сильная библиотека по работе с 2д графикой. Достаточно просто накидать утилитарный ui, но делать красиво уже дроч, хотя куте всячески продвигает QML.
QT сильно кроссплатформенный, а так как кресты, то ещё и быстрый, что позволяет собрать форму с кнопками доильного аппарата на говнопланшете, который имеет старое железо, зато сенсорный дисплей, и работает -50..+70.
Сам qt намекает на использовании в серьезном проме, типа делать кнопки и графики на ртос QNX, где надёжность и рилтайм. Или спидометр машины. Не пробовал, но интригует. Ява сосет и хуйня, вебоговно очень прожорливое и нестабильное, винда масдай и нахуй не нужна во встройке, когда есть линукс и андроид. Получается, qt чуть ли не единственный вариант для не мощных систем с графикой, а кроссплатформа дает не самый мозгоебальный перенос своей программы на разные ос.
Вроде телеграм десктоп на куте. Вроде qbitorrent.
>Программа для настройки доильного аппарата
Никогда не знаешь, что придумают эти юзеры.
>>259374
Я только помню, что для gcc/clang для максимума отладочной информации -ggdb и -O0, а то все переменные будут <optimized out>. Но это для отладчиков на основе GDB. Для DWARF там какие-то свои флаги. А под виндой я тем же clang пользуюсь на основе mingw, хоть это и не совсем правильно.
>ресайзил обе строки под один размер
Если ты их так копируешь, то надо бы глянуть, как ты их ресайзишь, а то мало ли...
Да делают так, хоть это и неправильно и против всех стандартов. Оператор [] возвращает ссылку на char из реально внутреннего буфера. Указатель на ссылку это законно.
Ага, а еще нельзя забывать про охуенный operator= и ебейший конструктор копирования.
> Достаточно просто накидать утилитарный ui, но делать красиво уже дроч, хотя куте всячески продвигает QML.
Какашка та еще. Не понимаю зачем надо было эту хуйню выдумывать когда в кюте есть xml.
Кстати годная идея, сделать этакий аналог Qt, без qt легаси на 20+ стандарте. Вместо виджетов и qml реализовать веб-стек html+css+svg+js, для утилитарного гуя можно просто накидать стандартных элементов которые будут забинжены на системные чекбоксы-хуексы, для верстальщиков и вебдесигнеров дать css+js, только скрипты сделать компилируемыми как в qml, это можно сделать через ноду путем js->AST->macroasm.cpp + macroasm.h, последнее тоже можно выдрать из какого нибудь браузера.
Естественно о полной поддержке вебстека не может быть и речи, всякие jquery и js+фреймворки идут нахуй, полные стандарты тоже поддерживать ни к чему. В любом случае это будет в 1000 удобней чем qml портянки с мьютабл свойствами и нестандартным ecmascript -ом.
string это не тот тип где предполагается работа с байтами. Используй array<char, N> или vector<char> и используй .copy() либо итератор.
И? Кто-то cpp заинклюдил, бывает, к ответам это как относится?
Какая ирония, ведь сишарп это как раз то, на что тебе надо бы обратить внимание. Тебе компилятор в том месте >>259542 три раза написал, что ты уёбище, а ты отмахнулся преобразованием типов. В результате наиболее вероятно, что uncompress просто увидела по адресу packed_data какую-то хуйню, ведь это не байты строки, а байты объекта string, и не стала вообще ничего писать в unpacked_data. Но если бы стала, то ты бы ещё и затёр объект unpacked_data и еще что-то дальше него в памяти на какую-то глубину.
Инклюдить cpp все равно не нужно, или хотя бы переименовать его в inc, это кстати по крестовому стайлгайду гугла, чтобы у тебя сломалась подсветка синтакса в ide и ты задумался, на правильном ли ты пути. А по расширению cpp могут определяться например списки целей в Makefile, и прочая хуйня. Лучше в хедеры тогда свой говнокод пихайте.
Ну, это я знаю, я хуй знает вообще откуда взялось про inline_functions.cpp, это не мой файл и я ничё подобного не скидывал, в треде тоже не видел.
Ну, сгенерил через glGenTexture, сохранил в GLUint, потом вызываю glBindTexture с этим GLUint, по итогу получаю пустую текстуру.
ЧСХ если вызывать glBindTexture один раз и сразу после glGenTexture - всё работает, но тогда я меж текстур переключаться не могу.
> Инклюдить cpp все равно не нужно, или хотя бы переименовать его в inc, это кстати по крестовому стайлгайду гугла
Что бы что? Что бы OS/хиджаб и редактор кода не могли понять что это такое и как это воспринимать?
> чтобы у тебя сломалась подсветка синтакса в ide и ты задумался, на правильном ли ты пути. А по расширению cpp могут определяться например списки целей в Makefile
Допустим у тебя проект, в котором есть модули:
format_abc.cpp
format_cdf.cpp
Каждый для своей os/подсистемы/конфигурации сборки. Как ты один из них предлагаешь исключить из "списка целей" при твоем подходе? Предлагаешь их тоже слить в один фаил и под блоки препроцессора загнать?
Не контролировать процесс сборки, не знать какие цели у тебя собираются в бинарник - вот подход который надо менять.
дебил бля
>Как ты один из них предлагаешь исключить из "списка целей" при твоем подходе?
Причем тут я вообще. Это не мой подход, но я видел как это делают другие - делают папку generic, папку unix и папку windows. Ну например.
> Эти номера еще надо в параметры шейдера вроде пропихивать
Накой чёрт? Я-же не использую шейдеры.
Ожидаемо.
А если у тебя скажем под одну операционку несколько разных подсистем и одна из них для некоторых совпадает как быть?
Я понимаю что хочется сделать просто %.cpp и не думать о файлах но в нормальных не студенческих проектах так не делается.
Вообще конечно можно .hpp/.hh файл с методами назвать не принципиально, просто потом вдруг понадобится эти функции в объектный фаил скомпилировать (как обычно) а фаил заголовочный. Впрочем в моем случае предполагается что есть не инлайн методы и можно в этом случае туда инклюдить.
Другой вариант - называешь файлы вменяемо, а не abcd блядь. А то потом весело будет кому-то за тобой твою писанину разбирать, если они у тебя еще и переинклюжены все друг в друга.
Имею опыт только в браузерном gl и шейдерах. Главное что уяснил это то что все это говно исполняется на GPU и все данные тоже сидят/должны сидеть в видеопамяти, и все это очень аккуратно надо мешать с кодом и данными которые исполняются на процессоре что бы не получилось так что данные туда сюда копируются или что данные в обычной памяти, а ты как долбоеб пытаешься с ними работать в контексте видеокарты.
Х.з. проверь что биндится и генерируется действительно один и тот же номер текстуры. Сразу после gen то оно понятно, что так, а вот как там у тебя методы выдываются, это сложно понять. В общем репортни его через cout (дебаг может наебнуть взаимодействие с gl).
А вот в строке 229 что за безобразие?
Ты номер текстуры превращаешь в intptr_t. Так делают, когда хотят какую-то арифметику с адресами сделать сложнее +-, например, выровнять адрес. Во-первых, номер текстуры это вообще не указатель, а во вторых ты его без всякой арифметики сразу конвертишь в void ptr. Может так и надо канеш, но это как-то необычно.
Абля, я мудило, там типа так и положено костылиться по ману с этим ImGui.
Какие книжки посоветуете для начала?
Или мне стоит учить только то, что требуется в вакансиях на ХХ для стажеров/джунов? Как адекватно это воспринимать, если количество необходимых условий или навыков "слишком" много/мало в вакансии?
Нужен отдельный ноут с линуксом?
Поступил на заочку околопрограммисткую, т.к уже заканчивал магу по другой специальности. Диплом и 2 статьи пилить... по ит для меня это новое и выглядит довольно странно( хотя и в теплотехнике формул хватало из книжек 20-50 летней давности)
мне 31
Не так ты подходишь к реализации цели. Купи ВПН, зарегайся в чатжпт и начни делать игру. Определись, что ты хочешь, механику, лор, это самое важное. С++ всего лишь инструмент, как молоток, а чатжпт - сосед Вася, у которого есть молоток и который за тебя может гвоздь забить правда, хуево.
Ты хочешь изучать С++ так, как старперы в книгах и на форумах описывают. Так вот, это всё хуйня, это неэффективно, отрывает от реальной современной разработки и тупо устарело. Я знаю о чем говорю, на работе меня окружают такие ламеры-пердуны, которые блядь младше меня, но для которых СЛОЖНО изучить новый язык ради простого скрипта.
Программирование не цель для большинства разработчиков. Если оно действительно как цель, то это академическое изучение и тема выходит из математики.
так что остаюсь на плюсах. С# не хочу, хз душа не лежит, хотя на последней работе приходилось и на нем писать.
Других вариантов не вижу.
Игори хз, тоже не особо тянет.Чисто для ознакомления писал движок на OpenGL, но эта еботня с библиотеками заебала. Они у них по кд что-ли API переделывают.
Так что буду пилить проект-микросервис на userver по совету анона и уныло искать работу хотя бы за 150к
всем бобра
пакет curl установлен последней версии проверено через:
curl --version
но когда устанвливаю userver пишет:
Loading failed: Cannot start component http-client: Unsupported libcurl 7.88.1,
в чем проблема, куда копать, гугл молчит
Тебе буквально написали в чем проблема
Сиди, дед. Говнокодить можно и макаку научить, навык как у лифтера кнопки нажимать
Заставь макаку говнокодить - так она будет менять капчу каждые полгода.
Попробовал сегодня, кайфанул чёт жёстко.
> xmake, а не обоссанным б-гмерзким цмейком
Ох уж этот юношесский максимализм.
Проблема в том, что все эти новомодные *make'и выходят постоянно как грибы после дождя уже который год, и который год CMake остается основной билд системой для плюсов. Да, он далеко не идеален и пользоваться им не самое простое занятие, есть много нюансов и т.д. Но все уже привыкли и научились. Но прыгать на каждую новую вышедшую билд систему это бред. Вот если это говно будут использовать в качестве дефолтной билд системы основные IDE на рынке, тогда еще можно ее рассмотреть. А так это просто пыль, которая не стоит и наносекунды внимания.
Все эти "Вышла убийца Х" как правило мертворожденное говно, которое никому не нужно кроме парочки фанатиков, которые используют это с своих пет проектах. Гляньте сколько уже убийц С++ вышло и где они все? Даже пресловутый раст. Ну да он занял свою какую-то нишу, но не заменил С++, как об этом многие трубили. А тем временем С++ всё развивается и улучшается. Посмотрим конечно что гугл сделают со своим Carbon, такие корпорации обладающие анлимом бабла на пиар и разработку действительно могут сместить баланс системы, но что-то я пока в этом очень сильно сомневаюсь что это станет настоящей заменой С++.
Короче не гонитесь вы за новомодной хуйней, не тратьте своё время на это, само по себе время покажет стоит ли оно того или нет.
На первой работе тимлид писал код типа:
void MyClass::safeExec(const std::function<void(std::vector&)&> func)
{
std::lock_guard lock(mutexMember_);
func(vectorMemberOfMyClass_); //внутри себя создает потоки и работает с переданным вектором, читая из него
//По замыслу создателя, мьютекс должен был защищать коллекцию
}
Причем я, джуниор, должен был этот баг фиксить, т.к. ПО вылетало.
Поменял работу, вырос в зп значительно. Сложный шаблонный код тупо не нужен, многопоточность пригодилась раза 2, все хуячится в 1 потоке. Сеньоров тупо нет, по сути стартап с джунами, максимум мидлами. Все стараются, но никто никогда не работал в местах, где были сеньоры. В проекте все методы noexcept и физическая константность.
На собеседовании в серьезные места задают охуительные вопросы про многопоточность, про шаблоны, про всякую хуйню малафью. Я могу запомнить что-то о технологиях, которые мне никогда не пригождаются, но если меня спросят что-то вглубь, станет очевидно, что я это не использовал. Как я блять для себя должен хуячить пет-проект с кучей шаблонного кода и многопоточностью? Да еще и с бустом, да под линукс? И когда?
void MyClass::safeExec(const std::function<void(std::vector&)> & func)* фикс
Накопить на год сычевания и сесть и написать движок для спрайтовой ммо. Пол гда на чтение, пол года на писание кода. Если у тебя есть сила воли не потратить гэпчик на аниме и двачевание вместо чтения джосатисов и писания ммо двигла...
Звучит как хуйня совет, потому что валидировать написанное некому. Можно писать полную хуйню в стол хоть десятилетиями, и оно даже будет работать. В говноконторах так пишут
Еще вадидировать можно в сообществах. Например есть большой с++ сервер в дискорде. Там куча народу каждый день текстом и голосом общаются на ангельском.
Что-то мне подсказывает, что в 99% случаев человек месяца 2 пыхтит, потом просто вола ебет, потом устраивается на дноработу опять
>>263519
Бесплатно тебе максимум на стековерфлоу ответят, потому что некоторые люди любят медали за участие в коммьюнити. Никто блять не будет валидировать архитектуру твоего кода в дискорд-сообществе, по крайней мере, ничего путного там не скажут. Будет ли человек после работы пастись в таком соо, чтобы смотреть говнокод других людей? Нахуя?
Корутины там реализованы, внезапно, как безстековые корутины. Кроме того, что выполнение можно суспендить и резюмить (кооперативная многозадачность) там ничего и не нужно.
Асинхронщину можно и без них вообще делать. Ничего тебе не мешает намутить очередь событий, и плясать от коллбеков. Но нахуя когда есть Boost.Asio?
> Отсутствие микробиблиотеки для эмбедщины, или хотя бы каких то опций сборки стандартной, чтоб например только vector и и все что ему нужно собиралось и все.
Что это значит вообще? У тебя код генерируется только для инстанцированных шаблонов. Если используешь только вектор, то и код будет только для инстанцированных векторов.
А зачем системному вызову быть частью стандартной библиотеки? Кому-то и на CreateProcess норм.
>Какой по вашему мнению фатальный недостаток C++?
Всё окружение нужно пердолить самому с нуля. Начиная от мейкфайлов, линтеров, пакетных менеджеров, юнит тестов, генерации документации ну и так далее короче. Каждая мелкая хуйнюшка ебёт мозги. 100500 разных систем и ни одной шоп из каропки сразу и без головняка как в расте или golang.
> Кстати годная идея, сделать этакий аналог Qt, без qt легаси на 20+ стандарте. Вместо виджетов и qml реализовать веб-стек html+css+svg+js
Это называется Chrome. Ставишь электрон, пилишь фронтенд на вебморде. Если хочется функционал именно нативно на плюсах писать, то делаешь на них бекенд с FFI прослойкой.
>Это называется Chrome. Ставишь электрон, пилишь фронтенд на вебморде. Если хочется функционал именно нативно на плюсах писать, то делаешь на них бекенд с FFI прослойкой.
Электрон это браузер + нода + нативные библиотеки в комплекте с приложением, там джаваскприпты запускаются в виртуальной машине, поддерживается целиком весь Web стек с генерацией html и скриптов и стилей из строк. Моя же идея состоит в том что бы сделать как в Qt/QML с генерацией из html+css+js плюсового кода и последующей компиляцией в натив. Естественно при таком подходе никаких динамически генерируемых скриптов/стилей/деревьев из строк не может быть, CSS3 анимации не будут поддерживаться, веб-объекты целиком не будет поддерживаться, вебпаки/js-фреймворки идут нахуй
Идея в том чтоб вместо вот такой вот хуйни:
main.qml ```
import Qt.platform.moduleA
ApplicationWindow {
_ id: win1
_ width: 640
_ height: 480
_ property var col1: "black"
_ property var str1: ""
_ Text { color: col1; text: str1 }
_ function test() {
__ str1 = "hello world!"
__ col1 = "green"
_ }
}
```
сделать по стандартному:
package.json ```
"window": {
_ "width": 640
_ "height": 480
}
```
index.html ```
<!DOCTYPE html>
<html>
<head>
__ <title>test application</title>
</head>
<body>
__ <div id="txt1"></div>
__ <script src="main.js"></script>
</body>
</html>
```
main.js ```
import "js/modules/A.js"
const txt1 = document.getElementById('txt1');
function test() {
__ txt1.textContent = "hello world!";
__ txt1.style.color = "green";
}
```
В общем стандартный c++ стандартный js+html+css который в совокупности должен обеспечить то же самое что qt и даже немножко больше. Резон: куча скопившегося легаси в самом qt и сомнительная политика головного разработчика.
>Это называется Chrome. Ставишь электрон, пилишь фронтенд на вебморде. Если хочется функционал именно нативно на плюсах писать, то делаешь на них бекенд с FFI прослойкой.
Электрон это браузер + нода + нативные библиотеки в комплекте с приложением, там джаваскприпты запускаются в виртуальной машине, поддерживается целиком весь Web стек с генерацией html и скриптов и стилей из строк. Моя же идея состоит в том что бы сделать как в Qt/QML с генерацией из html+css+js плюсового кода и последующей компиляцией в натив. Естественно при таком подходе никаких динамически генерируемых скриптов/стилей/деревьев из строк не может быть, CSS3 анимации не будут поддерживаться, веб-объекты целиком не будет поддерживаться, вебпаки/js-фреймворки идут нахуй
Идея в том чтоб вместо вот такой вот хуйни:
main.qml ```
import Qt.platform.moduleA
ApplicationWindow {
_ id: win1
_ width: 640
_ height: 480
_ property var col1: "black"
_ property var str1: ""
_ Text { color: col1; text: str1 }
_ function test() {
__ str1 = "hello world!"
__ col1 = "green"
_ }
}
```
сделать по стандартному:
package.json ```
"window": {
_ "width": 640
_ "height": 480
}
```
index.html ```
<!DOCTYPE html>
<html>
<head>
__ <title>test application</title>
</head>
<body>
__ <div id="txt1"></div>
__ <script src="main.js"></script>
</body>
</html>
```
main.js ```
import "js/modules/A.js"
const txt1 = document.getElementById('txt1');
function test() {
__ txt1.textContent = "hello world!";
__ txt1.style.color = "green";
}
```
В общем стандартный c++ стандартный js+html+css который в совокупности должен обеспечить то же самое что qt и даже немножко больше. Резон: куча скопившегося легаси в самом qt и сомнительная политика головного разработчика.
Это для твоей программы генерируется, а библиотека нужна в самой embedded системе, в памяти висеть и предоставлять программам функции вроде мемори алокатора и чтения/записи файлов. Последнее к слову на эмбедщине не нужно и вот без них например и хотелось бы иметь параметры сборки.
А что именно? Разве можно инициализировать массив указателем, если нет то это просто опечатка в книге?
Массив это и есть указатель
Это не массив, это куча на стеке.
Поскольку ты константную строку пихаешь в неконстантный буфер, очевидно оно разворачивается в побайтное копирование либо вызывается копи треит какой нибудь.
это я навалил
такая хуйня прокатит только при инициализации
и раньше думал что только с литералами а вон оно че
array это куча, дословно.
И да куча навоза тоже array. Но именно навоза и именно большая куча, человеческие экскременты (типа как твой пост) кучей на считается, а зовется просто pookp.
этот лингвистический факт однако не отменяет того что если ты в приличном обществе назовешь массив кучей то тя обоссут
кстати это произошло прямо сейчас
> в приличном обществе назовешь массив кучей то тя обоссут
Это в обществе джава-петухонщиков что ли?
Вот туда и съеби гыгыкать с единомышленниками, а здесь изволь всасывать термины из мира С/C++.
> Массив это куча
А ведь учебный год только начался...
сынидзе наху в с++ хип/куча это либо динамическая память либо
древообразная структура данных
газуй усваивать термины утром экзамен со сложными вопросами
в виртуал_аллок конечно есть смешные флаги но это не то
То есть все таки слово "куча" есть, (на швабре нагуглил, молодец).
Только вот в плюсах никаких хипов и "динамической памяти" нет, это речь как раз про стек высокоуровневых "безопасных" языков джавы, и "кучей" оно обзывается потому что там сишными "массивами" все реализовано. Естественно в памяти потому что процедурном стеке такие вещи не делают.
никто и не говорил что нету че ты затрясся так
я говорю что массив и куча ето разные вещи никто и кроме тебя шиза его так не называет
так что давай тащи ссылки на литературу где ты этой хуйни начитался или обтекай inb4 хранение бинарной кучи в векторе не считается
никто не мешает выделить кусок памяти на стеке и использовать его как кучу с кастомным аллокатором
Пиздец у тебя каша в башке. Стек - это уже выделенная память. То что ты там рядом выделишь уже не будет стеком.
Стек (процедурный) это механизм железа, он будет внезависимости от того что ты с ним и с данными на нем делаешь, помоему был даже раньше такой хак через расширение стека, но что то давно уже про эксплуатацию таких дыр не слышал.
ну дык
вспомни про двухканальный режим работы памяти (во всех бытовых компьютерах), теоретически увеличивает пропускную способность в два раза, практически - от 10 до 70% в зависимости от того какое приложение используется;
на серверах есть 4х канальный режим работы памяти, ну и так же в зионовских материнских платах с али которые переделаны с серверных компов тоже есть 4х канальный режим (но не навсех матплатах)
с другой стороны ничего тебе не мешает почитать о физическом устройстве оперативной памяти, как она работает, вплоть до разводки на плате и то как работает контроллер оперативной памяти
На четвёртый день индеец Соколиный Глаз заметил, что в сарае, куда их заперли, не хватает одной стены.
- Вот тут у нас багов много, понимаешь?
- Давай я вот тут хип навалю, и мы их разом и убъем.
Шиит Г. Принципы и основы Java. (Глава 2. причины появления)
Плюсовых программистов хлебом не корми дай пописать шаблонного говна
Весь этот сложнейший синтаксис, шаблоны (кто бы что не говорил, а плюсовые шаблоны это антипаттерн, не контроллируемый комитетом [см. лупхолы], открывающий дорогу к метапрограммируемой нечитаемой лапше), комитет, занимающийся какой-то хуйней, зоопарк билдсистем, из которого долбаебы выбрали самую хуевую и назвали её «де факто стандартом», два пакетных менеджера, один из которых разработан на ПИТОНЕ, а второй курируется майкрософтом, умопомрачительно долгая компиляция, и, как вишенка на торте, отсутствие модулей (они, если что, даже в фортране появились 30 лет назад)
Поэтому, ищем альтернативу.
C — очевидно, нет. Достоинств меньше, недостатков больше. Те же проблемы с модулями, системами сборки, к которым добавляется отсутствие каких либо удобных способов обработки ошибок, почти полное отсутствие стандартной библиотеки, отсутствие неймспейсов, необходимость говнокодить макросы.
D — непонятно чего блять нахуевертили, попытались сесть на все хуи сразу и порвали жопу. Какая-то помесь говна и желание угодить всем. Есть GC, заявляется, что можно писать и без него, по факту на него опирается половина стд. Не знаю даже что ещё написать, на язык дрочит Александреску, а значит вместо написания кода на нем нужно дрочить метапрограммирование в присядку.
Zig — уже лучше. Есть модули, есть своя система сборки (пока вроде бы без пакетного менеджера, но вроде бы обещают добавить). Комптаймы вроде бы лучше шаблонов. Нет нормальной работы с ошибками, банально нельзя передать вместе с ошибкой какую-то доп. информацию. В каком-то из issue на их гите прямо говорится, что можно костылить Rust-way с самодельным Result<T, E>. Непонятно только, нахуя при этом нужна обработка ошибок, предоставляемая языком, если для консистентности во всём проекте нужно будет использовать эту. И использовать её будет не так удобно, потому что поддержки в языке нет. При этом язык пока слишком молодой, и всё может измениться. Задел хороший, нужно ждать.
Hare — язык от Дрю ДеВолта. Насколько я понимаю, наполовину спизжен с Зига, и наполовину с раста. Стандартной библиотеки почти нет, каких-либо дженериков нет совсем, пока что не понятен роадмап развития языка, об этом даже написано на официальном сайте. Но обработка ошибок уже лучше чем в зиге. Язык ещё моложе, чем зиг, так что пока тоже ничего не ясно, придётся ждать.
Rust — не рассматриваем, те кто хотел, давно на него пересели. Те, кто захотел сейчас — клуб кожевенного ремесла на два треда ниже.
Знающие, напишите про остальных возможных кандидатов. Таких как Cabron, Odin, Nim, AsmX, и всё остальное, о чем я не упомянул.
Плюсовых программистов хлебом не корми дай пописать шаблонного говна
Весь этот сложнейший синтаксис, шаблоны (кто бы что не говорил, а плюсовые шаблоны это антипаттерн, не контроллируемый комитетом [см. лупхолы], открывающий дорогу к метапрограммируемой нечитаемой лапше), комитет, занимающийся какой-то хуйней, зоопарк билдсистем, из которого долбаебы выбрали самую хуевую и назвали её «де факто стандартом», два пакетных менеджера, один из которых разработан на ПИТОНЕ, а второй курируется майкрософтом, умопомрачительно долгая компиляция, и, как вишенка на торте, отсутствие модулей (они, если что, даже в фортране появились 30 лет назад)
Поэтому, ищем альтернативу.
C — очевидно, нет. Достоинств меньше, недостатков больше. Те же проблемы с модулями, системами сборки, к которым добавляется отсутствие каких либо удобных способов обработки ошибок, почти полное отсутствие стандартной библиотеки, отсутствие неймспейсов, необходимость говнокодить макросы.
D — непонятно чего блять нахуевертили, попытались сесть на все хуи сразу и порвали жопу. Какая-то помесь говна и желание угодить всем. Есть GC, заявляется, что можно писать и без него, по факту на него опирается половина стд. Не знаю даже что ещё написать, на язык дрочит Александреску, а значит вместо написания кода на нем нужно дрочить метапрограммирование в присядку.
Zig — уже лучше. Есть модули, есть своя система сборки (пока вроде бы без пакетного менеджера, но вроде бы обещают добавить). Комптаймы вроде бы лучше шаблонов. Нет нормальной работы с ошибками, банально нельзя передать вместе с ошибкой какую-то доп. информацию. В каком-то из issue на их гите прямо говорится, что можно костылить Rust-way с самодельным Result<T, E>. Непонятно только, нахуя при этом нужна обработка ошибок, предоставляемая языком, если для консистентности во всём проекте нужно будет использовать эту. И использовать её будет не так удобно, потому что поддержки в языке нет. При этом язык пока слишком молодой, и всё может измениться. Задел хороший, нужно ждать.
Hare — язык от Дрю ДеВолта. Насколько я понимаю, наполовину спизжен с Зига, и наполовину с раста. Стандартной библиотеки почти нет, каких-либо дженериков нет совсем, пока что не понятен роадмап развития языка, об этом даже написано на официальном сайте. Но обработка ошибок уже лучше чем в зиге. Язык ещё моложе, чем зиг, так что пока тоже ничего не ясно, придётся ждать.
Rust — не рассматриваем, те кто хотел, давно на него пересели. Те, кто захотел сейчас — клуб кожевенного ремесла на два треда ниже.
Знающие, напишите про остальных возможных кандидатов. Таких как Cabron, Odin, Nim, AsmX, и всё остальное, о чем я не упомянул.
> сложнейший синтаксис
Ты совсем хлебушек? Пиши на си с классами, если так сложно. Тебя заставляет кто-то пользоваться всем сразу? В либах даже дженериков часто нет.
> Zig — уже лучше
Мразотное говно от пердолей, рулит всем идейный борец за швабодку. Решения принимает естественно не в пользу кодеров, а в пользу свой шизы. Чего только стоит тот пиздец с неиспользуемыми переменными, был дикий шитшторм, но он всё равно сказал идите нахуй, я за вас уже решил как вам лучше.
> есть своя система сборки
Лучше бы не было. То что в симейке делается стройкой кода - в зиге парой десятков. Писать скрипты сборки зига на зиге - это пиздец.
> Комптаймы вроде бы лучше шаблонов
Зиговский комптайм это аналог крестового consteval. В сложных задачах по производительности медленнее крестов, потому что не умеет в то что умеет constexpr.
> можно костылить Rust-way с самодельным Result<T, E>
> потому что поддержки в языке нет
Так и в расте нет никакой системы обработки ошибок. Все дрочат как хотят и костылят свои реализации монад, в либах часто несовместимые с Result типы. Обработка ошибок через паттерн-матчинг - это вообще пизда.
> Cabron
Единственная потенциальная замена крестов, потому что полностью совместима с ними. Так же как было с жаба-котлин. Но зная гугл ждать чего-то хорошего не приходится. Особенно если они будут пытаться сделать из него ГОвно или внезапно похоронить.
> Nim
Вместо синтаксиса костыль на костыле. Мертворождённое говно.
> Весь этот сложнейший синтаксис, шаблоны (кто бы что не говорил, а плюсовые шаблоны это антипаттерн
Понимаешь, хороший язык это не тот который что то лучшее новейшее высрал, а тот кто дал то что заказывали. Раньше в Си через препроцессор имитировали темплейты то есть через дефайны задавали имена функций инклюдили код меняли дефайн, можно много по разным проектам до сих пор найти этот способ, писать 500 дублированных функций и потом их дружно править это прямая дорога к ошибкам. В плюсах сделали темплейты которые делают именно то же самое и даже чуть больше. Не нужны темплейты не используй, они нужны для генерации двух и более типизированных функций. Понятно что долбоебы ими все обмазывают. Ну так дураку и виртуальный хуй дали он его везде начал сувать. Что поделаешь.
Че мне вообще надо. Хочу в пет проект openssl впихнуть. Естественно мне не нужно подгружать разные провайдеры, фетчить какие то конкретные реализации. Еще я очень не хочу руками память чистить. Поэтому хотел взять какую нибудь обертку в которой хотя бы RAII есть. Но гуглеж не выдает ничего современного.
Может использоваться вперемешку с обычным кодом и умеет в бранчи между константными/неконстантными данными. Не надо дрочиться с этим, компилятор сам выжмет всё что можно.
> один из которых разработан на ПИТОНЕ
Что за пакетник?
Все правильно сделали, современные пакетники на скриптах и надо писать.
> плюсовые шаблоны это антипаттерн
> нечитаемой лапше
Шизик, антипаттерн - дублирование кода. Лапшу ещё 15 лет назад придумали как победить, в отличии от раста. Сейчас можно вообще типы в большинстве случаев не писать.
> комитет, занимающийся какой-то хуйней
Он по крайней мере развивает язык.
> самую хуевую
Только с точки зрения неграмотного дебила. Симейк ахуенная система сборки, позволяющая делать много вещей в пару строчек. Он стал стандартом потому что удобный.
> два пакетных менеджера
В 2024 году в симейке отлично работает установка либ напрямую по ссылке на гит.
> умопомрачительно долгая компиляция
Ты из 2005 капчуешь? Даже огромные проекты с миллионами строчек кода собираются за пару минут на современном железе. А дальше инкрементальная сборка работает, пересобирается за секунды.
> отсутствие модулей
Куда они делись? Даже std переведён на модули уже.
> Ты из 2005 капчуешь? Даже огромные проекты с миллионами строчек кода собираются за пару минут
Ну учти, про миллионы строк кода спизданул не я. Сколько там LLVM собирается?
> Даже std переведён на модули уже.
Ты из 3005 капчуешь? Либо путешественник во времени, либо шиз. Чьих будешь?
Хотя, судя по
> Он стал стандартом потому что удобный.
ответ очевиден
> Компилятор сам
Хехе, ну надеюсь не будет такой ситуации когда компилятор по какой то собственной причине ничего не сказав просто перестанет это делать, такого же не случится, да?
> Сколько там LLVM собирается?
А сколько компилятор раста собирается?
> Ты из 3005 капчуешь?
Из 2024, С++23 требует std на модулях. Хотя есть компиляторы, до сих пор даже С++20 не поддерживающие шланг.
> ответ очевиден
Про тебя всё стало очевидно когда ты написал что система сборки зига лучше симейка.
>>273133
Нет, конечно. Есть стандарт, у компиляторов нет на этот счёт своих собственных причин перестать выполнять код во время компиляции.
>А сколько компилятор раста собирается?
Причём здесь вообще раст? Давай я придумаю гипотетический язык PENIS--, который собирается год. Смотрите, C++ лучше чем PENIS--.Так и победим.
> С++23 требует std на модулях
А, так мы в принципе обсуждаем гипотетический язык, которого в природе не существует?
> Есть стандарт
И что стандарт говорит про то когда компилятор обязан выполнять констэкспр в компайлтпйме?
ты либо наивный, либо н когда не смотрел на выхлоп компиляторов на чем то кроме синтезированный бенчмарков
> Ну учти, про миллионы строк кода спизданул не я. Сколько там LLVM собирается?
Я не он, но ты хоть понимаешь что ты сейчас пускаешь себе подливу в штаны? Это как доебываться до того что av1 или h265 долго кодируют, вон xvid все быстренько делал.
Ты какой то ебанутый, если нельзя положится на компилятор, то тогда что кроме ручных оптимизаций в принципе поможет?
У какого языка выхлоп будет "оптимальный" вопряки тому что компилятор не справился? Ассемблер что ли предлагаешь?
> Давай я придумаю гипотетический язык
Тогда зачем ты пиздишь про медленную сборку? Медленную по сравнению с чем? С джавой, шизик? Или ты примерно почувствовал?
> обсуждаем гипотетический язык, которого в природе не существует?
Если у пердолей нет компиляторов, то это не значит что он не существует. У всех остальных уже есть полная поддержка С++23. У msvc реализация стандартной библиотеки на модулях есть ещё с 2020.
>>273161
> И что стандарт говорит про то когда компилятор обязан выполнять констэкспр в компайлтпйме?
Почитай его. Ты совсем пирипизднутый, раз приходишь и просишь процитировать стандарт? Если вкратце - всё поведение constexpr стандартизировано, там нет "может оптимизирует, а может нет". В стандарте чётко указано когда код выполняется при компиляции, а когда в рантайме. Выше про "компилятор сам разберётся" имеется в виду что тебе не надо жестко разграничивать констевал от рантайма как в зиге, но если ты не понимаешь как оно будет работать - это ты долбаёб, не знающий крестов, а не компилятор в штаны насрал.
>если нельзя положится на компилятор, то тогда что кроме ручных оптимизаций в принципе поможет?
Ничего, ты бля никогда код чтоли не перфил?
Берешь вилку и чистишь то что медленно работает, иногда поглядывая что тебе компилятор на выхлоп дает и направляя его в правильную сторону
>>273177
> "может оптимизирует, а может нет"
))
братишка раии обертки за час пишутся ты либу будешь дольше искать и в симейк себе прикручивать
> Ничего, ты бля никогда код чтоли не перфил?
> Берешь вилку и чистишь то что медленно работает
Что чисти блять? Как ты будешь циклы то чистить если у тебя оттуда колы лесенкой идут? Они должны были синлайнится но нет, константы должны были вычислиться но нет и оно это делает на каждой итерации. А еще у тебя restrict стоит но компилятор не понимает что это такое, ему похуй.
Если у меня отберут оптимизирующий компилятор я лично выхода кроме перехода на сишные дефайны и темплейт-файлы другого не вижу.
> У всех остальных уже есть полная поддержка С++23
У кого всех остальных?
> У msvc реализация стандартной библиотеки на модулях есть ещё с 2020.
Где?
>Медленную по сравнению с чем
Как минимум, с паскалем. Возможностей в нём не в 100 раз меньше, а компилятор собирает себя меньше чем за минуту.
смысл поста?
если ты не можешь положится на компилятор ты решаешься от него полностью отказаться?
ну отказывайся, я то только тут причем
Смысл что если на компилятор нельзя положится в части каких то конструкций например инлайн или прагмы или константные выражения, то придется это либо вручную делать либо вспоминать дедовские хитрости с препроцессором. А как иначе? Что там можно чистить то?
> У кого всех остальных?
У msvc, например. В 17.5 полтора года назад оно вышло из экспериментального в релиз, полная поддержка модулей и std в соответствии со стандартом.
> Где?
https://devblogs.microsoft.com/cppblog/standard-c20-modules-support-with-msvc-in-visual-studio-2019-version-16-8/
Только тогда стандартная библиотека ещё была разбита на несколько модулей std.*, т.к. ещё не было нормального стандарта.
Zero cost abstraction это такая же маркетинговая залупа как и в расте безопасность
> xtensor
Так ты возьми нормальную реализацию матриц на крестах. Где ты это говно откопал? Ясен хуй нампай быстрее, потому что он на крестах и написан. Бери хотя бы eigen, а лучше ggml, если реальная скорость нужна.
А винда написана на дотнете, да.
еще один компонент языка для эффективного soft obfuscation
> C 35%
Ты потролить просто зашел да ведь?
Ты же не знаешь ни си, ни плюсов, ни про библиотеку нампи.
Библиотека содержит низкоуровневые оптимизации под процессоры и видеокарты (вроде даже под эльбрус есть, но не факт что это принято в маинлайн), разумеется не на питоне а на си с интринсиками и ассемблерными вставками. На плюсах написано высокоуровневое API которое пробрасывается в питон и далее питонья библиотека реализует комплексные функции потому что на питоне кодят в основном ученые и математики которые далеки от всяких там обработок массивов/тензеров в цикле, им нужна просто функция которая дает результат
Я как-то сделал программу на С, которая работала целых 32 секунды. Я хуй знает что я намудрил, но она внатуре пиздец как долго выполнялась. Потом подправил немного - стала за доли секунды работать. Так что проверь может у тебя в коде ошибки просто.
>api на плюсах
>пробрасывается в питон
пруфца бы. есть мнение что апи на крестах там только для использования в крестах
и вообще любое апи на крестах годится только для использования в крестах
Шизик, все либы для вычислений на питоне написаны на сишке/крестах. Питон только как скриптовая обёртка там. В каком-нибудь торче вообще JIT свой собственный есть, как и в numba.
CоСи буквально все может взаимодействовать.
Только в нумпае не питон считает матрицы
ls -l lib/python3.12/site-packages/numpy.libs
libgfortran.so.5.0.0
libopenblas64.dev.so
libquadmath.so.0.0.0
мимо
В api на си будут просто функции с причудливыми названиями, а что бы сделать объект/класс с методами нужно писать на плюсах. Питоновый интерпритатор (и jit) в конце концов на плюсах написан.
нет ты шизик я про то что интерфейс с питухоном там через сишку а не кресты
как и вообще интерфейс чего угодно с чем угодно потому что у крестов abi нет
например манглинг тупо не стандартизирован а может и не документирован
творчество душевнобольных
> у крестов abi нет
Ты так говоришь как будто оно есть у сишки, лол. И всё это не вина крестов, а вина сишки. У того же раста всего лишь 170 вариаций ABI, даже под виндой целых 3 штуки. Просто потому что все обязаны взаимодействовать с окружением через сишное ABI, которого не существует в едином виде. И поэтому приходится таскать с собой компилятор сишки всегда, даже яблоко не осилило написать FFI и пользуется шлангом для парсинга сишного кода и генерации биндингов в свифте.
Не будет, твёрдо и чётко. И этот высер похоже даже в серьёз не рассматривали, потому что на летнем съезде комитета не вижу никаких упоминаний про это. Про безопасность комитет рассматривает только компайл-тайм контракты - https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3297r1.pdf
Это намного мощнее инструмент, потенциально позволяющий как раз контрактами чекать дыры, и не только в памяти.
И я уверен что комитет никогда не станет рассматривать "небезопасную память" как то что надо точечно фиксить одним сложным инструментов. Дурак-чеккер всегда будет стоять рядом с GC, поддержку которого несколько стандартов назад окончательно вычистили, чтоб ни у кого даже желания не возникло этим обмазываться. В крестах собираются дать базовый инструмент для решения проблем с безопасностью, а не заставлять пить магические таблетки от проблем с башкой как в дурке.
> компайл тайм контракты
Ебать! Деды ассерт придумали!
Растеры тряситесь, сейчас деды весь код контрактами как покроют!!
хуета ненужная для всяких залуп, которые и так на аде какой нибудь сидят
> ассерт
Это вообще про другое. В аде они действительно как просто ассерты работают, поэтому и не нужны.
> Растеры тряситесь
Им только и остаётся это делать, потому что их дурак-чекер даже не рассматривают как что-то полезное и пилят нормальную реализацию без анальных ограничений.
>пользуется шлангом для парсинга сишного кода и генерации биндингов в свифте.
неплохой подход, ибо многие до этого аналогичную проблему решали (и решают) ручным кодингом
Все правильно делают, безопасность должна быть на уровне железа как у эльбруса. Тогда на крестах можно будет писать быструю наноядерную ос.
Просто ты криворукая макака.
Выучил он С++, сука я 15 лет на с++ программирую коммерчеки и не могу сказать, что я его идеально знаю, а он блять выучил наскоком чтоб говно свое питоновское переписать, ну-ну.
>C++ — говно
Согласен, но что есть то есть. Альтернативы еще кратно хуже.
Единственная надежда на Carbon, но что-то тоже есть сомнения.
Ну либо ждать коммитета, пока язык допилят до современного уровня, но учитывая скорость разработки новых стандартов, хз сколько еще десятков лет придется ждать.
>Плюсовых программистов хлебом не корми дай пописать шаблонного говна
>Весь этот сложнейший синтаксис
Ну хз, раньше да, разбирать шаблонный код было тем еще занятием не для слабонервных, но сейчас то с появлением концептов, ренджей и прочих улучшений, шаблоны стали довольно приятными, единственное пока компиляторы не очень хорошо выдают ошибки в концептах, выдавая простыню разного рода из ошибок, причиной которого может быть просто несоответствие типа концепту. Но это поправят еще думаю.
>комитет, занимающийся какой-то хуйней
Ну хуйней не хуйней, а язык пилят постепенно. Другой вопрос скорости разработки и решений предлагаемых коммитетом, вот к примеру мне не ясно почему корутины вылезли такими сложными и не было более высокоуровнего интерфейса к ним, чтоб можно было легко пользоваться прям сразу, но нет, надо познать ебейший дзен чтобы разобраться в них и соорудить что-то что будет их использовать.
> зоопарк билдсистем, из которого долбаебы выбрали самую хуевую
Ну как зоопарк, по факту есть только 2, make и cmake.Остального говно не используется.
Ну да цмейк не особо удобный, синтаксис немного ебанутый, но все привыкли и научились.
Да и лучших альтернатив тупо нет.
> один из которых разработан на ПИТОНЕ, а второй курируется майкрософтом
тут не особо понял про что ты, что из них на питоне и что курируется майкрософтом? И что плохого в том что курируется майкрософтом? Я хоть и яро ненавижу винду, но не весь майкрософт такое лютое говно, вот к примеру пару лет назад я пересел с жидбреинсов на вскод и доволен как слон.
>умопомрачительно долгая компиляция
Бля, ты попробуй какой-нибудь проект средней велечены хотя бы скомпилировать на расте, там еще дольше это все. А на хаскеле? Тоже долго
Да и не сказал бы что в С++ прям очень долгая, конечно сравнивая с Си да, тут си очень быстро компилируется, но сам должен понимать что любой высокоуровневый ЯП будет относительно долго компилироваться.
Хотя даже не сама компиляция настолько долгая как линковка, работал я как-то на проекте, там компилировался весь проект с нуля 40 минут, из которых минут 20 только занимала линковка. Но там конечно крахово все было еще и под винду...
>и, как вишенка на торте, отсутствие модулей
Ну модули уже есть, не знаю если честно какое их состояние на данный момент, но пока что-то руки не дошли затестить. Но в любом случае в скором времени допилят и все будут на них переходить.
Так что не пизди и пиши на С++, других вариантов нету.
>C++ — говно
Согласен, но что есть то есть. Альтернативы еще кратно хуже.
Единственная надежда на Carbon, но что-то тоже есть сомнения.
Ну либо ждать коммитета, пока язык допилят до современного уровня, но учитывая скорость разработки новых стандартов, хз сколько еще десятков лет придется ждать.
>Плюсовых программистов хлебом не корми дай пописать шаблонного говна
>Весь этот сложнейший синтаксис
Ну хз, раньше да, разбирать шаблонный код было тем еще занятием не для слабонервных, но сейчас то с появлением концептов, ренджей и прочих улучшений, шаблоны стали довольно приятными, единственное пока компиляторы не очень хорошо выдают ошибки в концептах, выдавая простыню разного рода из ошибок, причиной которого может быть просто несоответствие типа концепту. Но это поправят еще думаю.
>комитет, занимающийся какой-то хуйней
Ну хуйней не хуйней, а язык пилят постепенно. Другой вопрос скорости разработки и решений предлагаемых коммитетом, вот к примеру мне не ясно почему корутины вылезли такими сложными и не было более высокоуровнего интерфейса к ним, чтоб можно было легко пользоваться прям сразу, но нет, надо познать ебейший дзен чтобы разобраться в них и соорудить что-то что будет их использовать.
> зоопарк билдсистем, из которого долбаебы выбрали самую хуевую
Ну как зоопарк, по факту есть только 2, make и cmake.Остального говно не используется.
Ну да цмейк не особо удобный, синтаксис немного ебанутый, но все привыкли и научились.
Да и лучших альтернатив тупо нет.
> один из которых разработан на ПИТОНЕ, а второй курируется майкрософтом
тут не особо понял про что ты, что из них на питоне и что курируется майкрософтом? И что плохого в том что курируется майкрософтом? Я хоть и яро ненавижу винду, но не весь майкрософт такое лютое говно, вот к примеру пару лет назад я пересел с жидбреинсов на вскод и доволен как слон.
>умопомрачительно долгая компиляция
Бля, ты попробуй какой-нибудь проект средней велечены хотя бы скомпилировать на расте, там еще дольше это все. А на хаскеле? Тоже долго
Да и не сказал бы что в С++ прям очень долгая, конечно сравнивая с Си да, тут си очень быстро компилируется, но сам должен понимать что любой высокоуровневый ЯП будет относительно долго компилироваться.
Хотя даже не сама компиляция настолько долгая как линковка, работал я как-то на проекте, там компилировался весь проект с нуля 40 минут, из которых минут 20 только занимала линковка. Но там конечно крахово все было еще и под винду...
>и, как вишенка на торте, отсутствие модулей
Ну модули уже есть, не знаю если честно какое их состояние на данный момент, но пока что-то руки не дошли затестить. Но в любом случае в скором времени допилят и все будут на них переходить.
Так что не пизди и пиши на С++, других вариантов нету.
Если в коде обращение к БД, файлу или в сеть, то проще код на петухоне написать, не? Что думаете?
Достаточно раз в месяц перечитывать стандарт и через год будешь "знать". Вся "сложность" крестов из-за того что вместо стандарта все читают какую-то жёлтую поеботу. В других языках официальная документация фактически и есть стандарт, но в крестах нет документации, а читать стандарт неподготовленный человек не может.
Ой бляяя... кукаретик, ты хоть раз сам то пробовал "раз в месяц" перечитывать стандарт и вообще читать его? Стандарт не для изучения языка, а для формализования правил и согласований написанный очень сухим формальным языком, который "просто читать" нереально, можно к нему обращаться для выяснения поведения по стандарту в какой-либо ситуации, но изучать с++ читая стандарт это все равно что пытаться жрать жопой.
>крестах нет документации
Есть cppreference, чем тебе не документация?
> "просто читать" нереально
Вот поэтому у таких как ты и нереально знать кресты.
> Есть cppreference, чем тебе не документация?
Это документация по стандартной либе, а не языку. Ты либо читаешь стандарт, либо пытаешься урывками из статеек выхватывать инфу по крестам и рассказывать как 10 лет не хватает на изучение языка.
Ну да, в питоне и сокеты, и sqlite из коробки.
>Это документация по стандартной либе, а не языку
Уебище, не позорься.
Судя по твоим высерам, ты вообще нихуя не знаешь С++ даже близко, и никогда не читал ни стандарт ни даже цппреф.
Разговор с таким тупым животным, как ты, на этом окончен.
В общем иди нахуй в тред какой-нибудь джавы, раз не умеешь читать стандарт. На твоём cppreference нет даже о каких-то базовых вещах типа UB, только один абзац короче википедии и всё. Там даже по свежей стандартной либе всё очень плохо - даже уже реализованные хедеры нормально не задокументированы.
Ты просто выблядок тупой шлюхи, сука желаю тебе больше никогда не прикасаться к программированию, а лучше вообще к компьютеру, раз ты настолько тупая скотина, которая в самом знаменитом сайте по С++ не может разобраться, при этом животное аппелирует к стандарту, на сайте которого есть прям ссылка на этот сайт, мудило гороховое, это ты нахуй пошел от сюда бездарь тупоголовый.
Я блять анус ставлю, что твои познания в стандарте просто равны нулю нахуй, ты ебучий фантазер школьник, который пытается быть вонаби экспертом С++ по факту ты нулина тупая. У тебя нету ни работы по с++ ни знаний по нему.
При этом мелкий сопливый выблядок, еще имеет дерзость спорить со знающими людьми с опытом. Просто ахуй с этого треда.
Да я просто в ахуе с интеллекта этого дауна, который на вопрос "Как выучить С++?" советует каждый день штудировать стандарт. Просто фейспалм нахуй. Тупее ничего нельзя придумать. Это совет из разряда, чтобы выучить новый разговорный язык, зубрите каждый день словарь, без понимания вообще чего либо. Ахуенно пиздец
Чел, хватит позориться. Стандарт не читал, а уже вдруг стал знать язык и учить чему-то, хоть секунду назад пиздел что это невозможно. Выключай режим сверхманёвренности.
> словарь
Для конченых дебилов показываю стандарт С++23 по ссылке - https://timsong-cpp.github.io/cppwp/n4950/draft.pdf
Это нормально написанный текст, структурированный начиная от базы и далее к сложным вещам, с примерами кода. А ты как раз предлагаешь шариться по каким-то рандомным статейкам на cppreference.
>>275484
Ты просто идиот ебаный, который ни строки не прочитал оттуда, но который продолжает дристать говном и вилять жопой пытаясь делать вид, что он не обосрался. Все что ты можешь - это повторять мои же фразы, тупоголовый лоу айкью школьник. Кто тебе сказал, что я не читал стандарт? Я этого не говорил, идиотина ебаная. Я-то читал его частями, когда надо было. Мне уже давно не требуется "изучать С++", я на нем уже 15 лет пишу коммерчески,в отличии от тебя безработного дауна, который только мысли чужих людей на дваче может транслировать, бездарность. Ты тупоголовый отброс, даже не знаешь, что такое cppreference, а уже споришь тут и затираешь что-то про стандарт, который ты даже не читал, еблан.
Бля короче, кукаретик хуев, пока ты не скинешь сюда свою трудовую, где не будет хотя бы лет 5 стажа С++, можешь мне больше сюда не кукарекать ничего, твои высеры просто посмешище и ты меня уже заебал своей невменяемой тупостью. Над тобой кто-то прикололся, сказав, что С++ надо начинать изучась с чтения стандарта, а ты еблан, принял это за чистую монету и теперь транслируешь это везде с умным видом, хотя сам ты этого никогда не делал. Короче заебал иди нахуй.
Нихуя как дурачка порвало, не сумевшего прочитать стандарт за 15 лет.
Да лучше на писоне/джава/пхп. Ибо в приложениях где основное время занимают чтение/запись всякие запросы по сети, выйгрыш от времени исполнения плюсов трудно разглядеть даже под микроскопом.
И даже на самом деле языки с jit в таких задачах сильно предпочтительнее статик-компаил программы, потому что там как правило большое количество бранчей/свитчей/вызовов с которыми в статике ничего нельзя сделать, а у джаст ин тайм есть возможность собрать статистику по горячим следам и выпилить то что редко или никогда не используется.
На плюсах пиши сервисы кторые какие то быстрые задачи выполняют например хэшсуммы вычисляют/сравнивают, картинки сжимают, архивы проверяют, подписи делают итд итп. Вызывай из питона/пхп и всё.
>Поэтому, ищем альтернативу.
Альтернативы нет, если тебе надо делать продукт, а не изобретать велосипеды. С/С++ однозначно решают по поддержке языка на всем возможном железе, и количеству библиотек для всего, чего угодно. В результате зачем мне ебаться с кривыми биндингами и взаимодействовать с откровенными шизами из коммьюнити мелкоязыков, если все уже и так есть?
3 заход на плюсы
Что меня толкает на это:
1) Один хуй отсутствие работы анальником, сижу пержу на насиженном месте за приятный прайс
2) Самые интересные проекты с открытым кодом
3) Люблю страдать
> сижу пержу на насиженном месте за приятный прайс
Это ты про завод? Там да, тебя за приятный прайс возьмут, для завода.
А что можно выбрать для потенциальной работы? Питон/go/js, где по паре тысяч кандидатов на вакансию?
так хоть вакансии есть
Моя точно умеет его выводить. С русским везде всё одинаковое, а тут чему отличаться?
Почему?
Почему вот это вообще работает?
Не помню, не было такого.
Есть, но в другом фрагменте документации, которого нет на скрине.
Деструктор не может быть корутиной.
То есть все это тупо ломает всю парадигму С++ с RAII, блять ахуенно! Нахуй мне теперь эти классы вообще нужны, если я должен писать goto _destroy в каждом его методе и обрабатывать все возможные ошибки и эксепшены что могут стрельнуть, чтобы не дай бог не проебать закрытие ресурса? ПРОСТО БЛЕСК! Браво!
Ты совсем долбаёб? Корутина это просто promise-объект с состоянием фрейма функции для возможности её остановки/возобновления, там нет никакой магии. Так же у промиза вызывается unhandled_exception() если из корутины пытается вылететь эксепшен, после чего освобождает ждущего. У объекта, методы которого корутины, деструктор вызывается штатно - когда он выходит из зоны видимости, а не когда тебе захочется. А если ты хочешь уничтожать объект асинхронно т.е. когда-нибудь потом, то тебе надо к психиатру.
>А если ты хочешь уничтожать объект асинхронно
В WinAPI и liburing отмена асинхронной операции сама по себе асинхронная операция. Поэтому деструктор может резко заблокировать весь поток. У Rust такая же проблема.
мимо проходил
Долбоёбина это ты, я и без тебя знаю что такое корутина и как она перехватывает эксепшены. Вопрос совсем в другом.
Посмотри на этот код и больше не неси хуйню, долбоеб.
Да я как раз на liburing делаю. Там проблема не в отмене, а том что в принципе невозможно провести асинхронную операцию в деструкторе ( по крайней мере получив результат выполнения ).
Я просто не понимаю в чем проблема была сделать возможность объявлять деструктор асинхроныным, который бы просто вызывался бы c co_await в конце скопа внутри корутины, как к примеру у самой корутины вызываются тот же final_suspend.
Блять как же я заебался от этого С++ с его ебаным комитетом.
>В чём проблема выполнить close синхронно в деструкторе?
В чем проблема перестать нести хуйню?
Про ABI слышал? Комитет молодцы что не ломают его. Логика очень простая - ты можешь использовать либу на корутинах даже если твой компилятор не поддерживает их. Допустил у тебя есть проприетарная асинхронная либа, асинхронные методы будут возвращать простую структуру и ты можешь синхронно выполнить корутину, даже не зная как там оно работает. Тот же шланг 5 лет их запилить не мог без багов, так что это актуальная тема.
Да аби это хуйня, кто хочет тот поддерживает. Вон майкрософт не парится и хуярит новое аби каждую версию компилятора.
Ладно аби, если аби не нарушается для обычных функций, то почему оно бы нарушилось для корутинных деструкторов? Деструктор это точно такая же функция, которую вызывает компилятор после окончания времени жизни объекта.
Так ты перестанешь вилять жопой и объяснишь почему вот так тебе не подходит?
Если тебе не нравится что закрытие блокирующее, то ты тогда в любом случае пердолишь многопоточные корутины, напердоль и close в отдельном потоке. Или либу возьми с тред-пулом для корутин.
> Деструктор это точно такая же функция, которую вызывает компилятор после окончания времени жизни объекта.
И в каком месте она выполняется? Как ты будешь контролировать выполнение того что выполняется за пределами области видимости? Корутина должна вернуть поток выполнения, деструктор куда вернёт? Это уже похоже на GC, когда у тебя в неизвестный момент начнут деструкторы мусор чистить.
Ты реально дурачек или как?
У меня и так close в отдельном потом в тред пули в нижестоящей либе закрывается, проблема в другом, боже блять какой же ты тупой.
Если ты еще скажешь что ты кем-то нанят я точно ахуею с того какие у нас кадры в айти работают.
Ты понимаешь что мы обсуждаем проблему нарушения RAII концепции в корутинах из-за невозможности асинхронно вызвать деструктор?
>>283023
В смысле, ты о чем вообще? Деструктор просто вызывается как прописано в стандарте после жизни объекта. Что куда вернет? Вернет тому откуда вызывалось.
Ладно вот пример как это могло бы выглядеть
Блять, дебил, ты вообще понимаешь как корутины работают? Корутина это не функция, тупой ты дегенерат. co_await это ебучий сахар над return task и task.resume(). Если у тебя нет task, то и корутины нет. Чтобы твои бредни работали деструктор должен возвращать task, который впоследствии возобновляется. Причём он возобновляется руками или либой, если ты сам не писал реализация рантайма, компилятор ничего не делает за тебя, корутина магическим образом не выполняется сама. В твоём шизоварианте деструктор возвращает в никуда таск, который мгновенно уничтожается и деструктор никогда не выполнится.
И никакой RAII не нарушается, все объекты вызывают свои декструкторы, а корутины не имеют никакого отношения к объекту, методы которого ты сделал корутинами.
Просто веб-макаки приходят из жс и считают что корутины это как у них асинхронные функции, лол. А потом пытаются деструкторы сделать асинхронными.
Ты меня уже заебал своей тупорылостью.
Я в доль и поперек знаю как корутины устроены, а ты похоже что вообще не понимаешь.
>Корутина это не функция
А что это по твоему, поехавший? Пиздец.
>A coroutine is a function that can suspend execution to be resumed later.
>деструктор возвращает в никуда таск,
Ебланище тупоголовое сука блять, деструктор возвращает таск, как я написал в примере возможной реализации, в вызывающую его корутину, еблан ты это осознаешь сука собака тупая? Понимаешь? Внутри корутины вызывается деструктор объекта который внутри неё же и создается и она же его и co_await'ит, понимаешь это сын ебучей собаки?
Ты шакал, осознаешь что у тебя корутина вызывает в конце final_suspend которую она же и co_await'ит? Но ты этого не видешь. Ты в курсе про это, идиот? Так вот дебил, слушай дальше, тоже самое могло быть и со всеми обхектами с автоматическим лайвтаймом внутри корутины.
>И никакой RAII не нарушается, все объекты вызывают свои декструкторы
Спасибо, нахуй не надо мне деструкторы с блокирующим кодом.
>а корутины не имеют никакого отношения к объекту, методы которого ты сделал корутинами.
Еще скажи что корутины вообще не имеют отношения к объектам которые ты объявил внутри них.
Ты просто ноль ебаный не отвечай мне больше ничего сюда, вести диалог с нулем мне нахуй не надо время тратить только.
>>283127
Классный самоподдув.
> А что это по твоему
Тупая макака, твоя "корутина" ничем не отличается от обычной функции, совсем. Что по твоему на пикрилейтеде является корутиной и почему авайтится просто таск?
Корутина это структура, в которой сохранён приостановленный фрейм функции.
> деструктор возвращает таск
> в вызывающую его корутину
Вот же ты дегенерат. Деструктор выполняется ПОСЛЕ выхода из области видимости корутины, а не в ней. Корутина его не вызывает.
> Спасибо, нахуй не надо мне деструкторы с блокирующим кодом.
Еблан, корутины это не многопоточность. Нахуя ты пытаешься добиться результата не предназначенным для этого инструментом? Деструктор по определению должен выполняться сразу, а не как ты хочешь откладывать его выполнение. Для неблокирующего выполнения есть многопоточность. Точно так же как у тебя реализована многопоточность в примизе, так же и реализуй её в close.
Ты просто неадекватно туп, даже отвечать тебе ничего по теме не буду, это все равно что биться головой об стену, пытаясь обсуждать С++ с приматом из зоопарка, и то эффект наверное будет лучшим с приматом, чем с тобой.
Ты несешь полнейшую хуйню, не понимая как работает С++ вообще, просто в голове каша из каких то фрагментов знаний.
Да пока они починят там все, я уже на пенсию уйду, лол.
Стандарт выходин раз в 3 года, в с++26 я не примопню, чтоб что-то с корутинами делали, значит как минимум ждать до 29 года
>>283727
В С++29 не планируют ABI менять, значит ничего не будет. И в С++32 тоже не станут, пока сишка не сдохнет ABI будет стабильным. Единственные за его изменение были Майки, но у них только один человек в комитете сейчас, столько же сколько и от Яндекса. Так что смиритесь, отдельных асинхронных функций не будет никогда, только корутины в текущем виде.
Пздц как коротка человеческая жизнь, ты меня депресанул
Никаких, разве что зашквариваешь единственный оставшийся нормальный язык вебом.
А почему не будет и почему это поломка ABI? В джаваскрипте же есть async function() которые промис-объект возвращают, логично то же самое сделать в плюсах что бы не ебаться с интерпритацией, так же собственно как это сделали с корутинами.
То есть например
async myFunct() -> int { return 1; }
будет аналогично
std::promise<int> myFunct() {
return std::promise<int>(... [] () {
_ return 1;
_ })
}
При чем тут С++ и флот16 который ни один цпу не поддерживает?
В куда компиляторе вроде есть, пользуйся.
>>284674
Аллё, AVX2 его поддерживает. В AVX512 гору новых инструкция для него и bfloat16 завезли.
https://software.intel.com/content/www/us/en/develop/download/intel-avx512-fp16-architecture-specification.html
Я ведь не требую в стандарте его, мне хоть какую-то реализацию бы. Но ведь нихуя нет, только на ассемблере писать. Алсо, у растанов даже вроде что-то есть.
>>284704
Как наличие векторных инструкций для упакованых f16 значений поможет с одиночным f16 типом, шизик растанутый? Этот формат используется в квантовании/нейросетках чисто что бы f32 массивы сжимать, не нужно на нем вычисления делать, хотя в матбиблиотеки вроде добавлен round16, есть наверно и конвертер, используй их.
А под avx надо так и так на ассемблере хуячить, кокпелятор по части автовекторизации очень ограничен, это считай задача уровня планирования кода для vliw.
Майки решили что им не нужен стандарт, у них компилятор не поддерживает его и они не собираются реализовывать этот хедер в STL.
>>284763
> не нужно на нем вычисления делать
GPU уже 20 лет делают вычисления на нём, AVX512 умеет в операции над ним.
> кокпелятор по части автовекторизации очень ограничен
uint128_t же завезли, а ведь это ещё более "ненужная" хуйня.
Так если ты на AVX2 пишешь, используй интрисикты, там должно быть, один хуй это все векторные инсрукции и ты там не должен оперировать обычными скалярами.
Но если ты такие вопросы задаешь, то скорее всего тебе это точно не нужно.
Зачем он нужен, если рефернс\мув семантика все и так покрывает? Я чего то не понимаю?
> тебе это точно не нужно
Мне и не нужно. Я просто разобраться хотел как с системщиной в системном языке. Вот надо будет что-то сделать, а тебе челики из комитета говорят пиздуй на ассемблере писать.
avx это не скалярные операции над числом, а специализированные операции над векторами. Прежде чем на них ссылаться изучи документацию что они делают, более чем уверен там наборы операций для ускорения свертки нейросетей, что бы не simd под них подстраивать как с sse/neon, а уже сразу в simd -е были нужные наборы операций. Это то чем интел занимается все последние года, да и gpu тоже туда идет. Что касается int128 то он как бы нужен для перемножения лонгов, и в железе с ним вопросов меньше так как 128b векторные регистры и поддержка f64*f64 это на сегодня векторный минимум.
> Прежде чем на них ссылаться изучи документацию что они делают
Я же и кинул список инструкций AVX512, не ебись в глаза, а лучше сам загляни туда.
Ты вообще понимаешь концепцию view?
>Кто-нибудь полноценно пользуется в своих проектах этим классом
Постоянно.
> Я чего то не понимаю?
Да, советую изучить концепцию вьюшек.
пикрелейтед.
В любом случае avx это упакованый тип vf16x12 (под 256 регистр), который можно сложить или что-то еще сделать только с таким же типом, семантика языка не позволяет вводить такие типы потому как набор операций и результатирующий выхлоп строго зависят от конкретной реализации конкретного процессора например может быть mul(vf16x12, vf16x12) -> vf32x6 а может и не быть или быть иначе, как вендор решит так и будет.
А ты просишь тип что бы строчить:
f16 a = 1.0fc; a += (f16)b;
Мотивировав тем что ну вот там есть же векторные операции какие то.
Это так не работает, можно ввести тип он будет конвертироваться в f32 туда и обратно, иначе человек который сейчас хочет скалярный f16 следующим шагом захочет заполнять им структуры, писать в юнионы итд.
> он будет конвертироваться в f32 туда и обратно
Лол, чел, прекращай. Там операции над упакованными f16, без всяких конверсий. Если инструкции как ты описываешь, но есть и без конверсии.
Короче ты походу или тролль или просто долбоеб.
>Так я и не понял нахуя этот стринг вью нужон
Потому что без него контейнер<стд::стринг> будет тебе при каждой сраной проверке существования такого ключа ебашить аллокацию с копированием.
Согласен. Хороший пример придумал
>Верим
Долбоеб?
То есть, если ты чего-то не понимаешь в С++, как это использовать, значит и другие, по твоему мнению, так же должны не понимать и не использовать это?
Алсо, буквально сейчас написал парсер json на стринг вьюхах.
Да нет же. Ты же просто тупой, как тебе можно верить что ты там что то понимаешь в плюсах и пишешь парсерсы если ты даже вопрос распарсить не можешь. Банально однозначное айкью вот и все как бы
Братишка не рвись. Кто виноват что ты придурковатый клоун который непонятно зачем берется на вопросы отвечать в которых он сам не разбирается? Ладно на двачах ты не понятно нахуй полез, а если например ирл кто? Ты же опозоришься перед людьми. Так что ты можешь пойдешь чего по вьюхам почитаешь?
Пиздец, лол, подзалупная шалупень строит из себя кого-то на двачах.
Ты с сеньором базаришь, примат тупоголовый.
Ты чего вообще в этом треде забыл? Иди в JS помойку свою, тебе там по уровню такие же даунята будут.
Нет. Ты просто хронический пиздабол который пиздит и пиздит. Когда ты свое ебало раскрываешь тебе никто всерьез не воспринимает, обрати внимание на это, на двачах да это все хуйня, а ирл ты тот еще клоун конечно
Прикольные у тебя фантазии конечно, это ты свои комплексы проецируешь сюда? Жаль тебя, униженца.
Алсо, ирл ты бы очень быстро от меня в ебало получил, за такой базар. Хотя нет, ирл ты бы смотрел в пол и боялся бы сказать что-то не то, чтобы ненароком не разозлить кого-нибудь, чтобы не получить пизды, как это было с тобой в школе.
пиздец наху 2025 год крестотред троллят стрингвьюхами итоги
или вы оба на самом деле один шизик который тут уже про мув конструкторы и делет без деструктора высирался
Крутой ты школьник
Вот уже много лет здесь единственный анон создаёт иллюзию того, что в этом треде сидит куча анонов и обсуждает плюсы. Но почти все посты написаны одним и тем же аноном.
Имеется еще подозрение, что какой-то пидоrust специально перекатил тред без тега. Потроллить, ага.
Есть мнение что тег специально не добавлен что бы в него не перекатывалось все вот это ноющее вахтерное говно, которое перепутало тематический тред про программирование со своим калфо-чатом.
А если серьезно, обезьяна вас больно избалывала, мы при педалине все руками искали и ничего, а у вас без тега уже вой и паника. Мама не разрешает за первую страницу гулять, там наркоманы и детей похищают.
Лучше пойду обсирать пидоrust'ов. Там хотя бы весело бывает, чем тут унылая помойка с 2.5 шизоидами с нулевым скилом.
Правильно, вкатывайся в раст. Сектанты обрадуются такому напористому болвану.
В дизассемблере будет call call call, и по каждому call ты опять доебешься. Поэтому, и правда, пошел ты нахуй, пидорас.
Ахахахаахх ну ты блять просто ноль ебаный. Ору с идиота.
Пиздос, клован, как ты собрался без аллокации строки искать пустоту? А строка это всегда указатель.
Дебилоид, у тебя string создается неявным образом из сишной строки, потому что find принимает const string&.
Тебе надо тогда либо const char* делать в качестве ключа либо string_view, но ты понимаешь, что это будет работать только для статических строк, которые зашьются в память твоего бинарника.
У тебя стрингвью не может хранить сам объект строки с динамической памятью и если ты такое провернешь создав string и присвоишь его в мапу со string_view где то в функции то по окончанию функции у тебя эта строка станет невалидной т.к. память очистится.
string_view можно использовать в качестве ключей, до тех пор пока память указывающая на эти данные валидна.
Скопировались они только внутрь мапы при её создании.
Сам поиск по мапе не аллоцирует никак память.
string key1 =
Вот здесь они скопировались конструктором точно, при создании карты еще раз вероятно.
А нахуя мне сам поиск, у меня не волшебнве винт/сеть, которые сразу данные хранят в виде std::string. И речь-то о недостатке крестов, исправленном в более поздних стандартах вьюхами и гетерогенными лукапами, а не о алгоритме поиска.
Какой недостаток крестов со стрингами? Вьюхи тебе тут как помогут вообще? Тебе эти строки в любом случае где-то надо хранить.
Если не хочешь даже единоразово копировать строку храни shared_ptr<string> в качестве ключа тогда или сделай свою CoW строку, но в любом случае тебе её нужно хранить где-то в памяти, вьюхи тут тебе никак не помогут.
>строки в любом случае где-то надо хранить
А они уже прочитаны в память и хранятся себе, даже если это const char. Вообще такое ощущение, что я объясняю какие-то очевидные вещи, но при этом и мне объясняют какие-то очевидные вещи. И это при куче конрструкторов. Блеск и нищета. Теперь я понимаю козлов, которые назло всем придумывают новые языки.
>А они уже прочитаны в память и хранятся себе
Ну допустим, тогда тебе нужно следить за тем, чтобы твои строки не подохли раньше чем мапа в которой ты хранишь указатели на эти строки через sv или const char.
Просто то, что ты описываешь можно было решать и до стрингвью довольно просто, храня конст чар зведочка, вью же решают проблему некопирования строки при передачи её в какие-нибудь функции и т.д. где время жизни объекта предопределено стеком.
С вьюхами удобно работать потому что у тебя есть строка либо фрагментр со всеми вытекающими функциями типа поиска и т.д.
и ты его можешь практически бесплатно скопировать или делать так value = value.substr(0, value.find('something'); у тебя не будет лишних копирований памяти а копироваться будут только указатели и размерности объектов sv.
Но использовать стринг вью в качестве ключей мапы можно, нонужно это делать очень осторожно.
Очевидно, что куча конструкторов - это плохой путь, который плохо описывает то, что должно происходить. Но это теперь навсегда с нами, потому что кресты это инструмент, которому в ряде случаев замены просто нет. Создатели stl наверняка периодически испытывают отчаяние, если они не совсем бездушные твари, от того, что они сделали это все именно так.
>Так я и не понял нахуя этот стринг вью нужон.
Нужен, очевидно, чтобы работать с кусками строк без копирования. До этого приходилось даже в станадартной либе лепить костыли вроде str, str_end в strtof. Сейчас можно (и нужно) во всех функциях, принимающих константную строку, делать это через string_view.
А определять, целая это строка или только лишь её кусок, тебе несчастный компилятор обязан?
В смысле? std::string в string_view преобразуется неявно. Для пользователя ничего не меняется.
Правильно блять еще шаредпоинтерам на строки шизика научи.
Не надо лезть в низкий уровень хуй пойми зачем и для чего, пишите с копированием перекопированием, это будет все равно гораздо меньше по ресурсам занимать чем джава какая нибудь. Когда до приличных массивов дойдете которые которые на копировании обходе все колом ставят, тогда и занимайтесь экономией и оптимизациями.
Ну ведь мы же на крестах пишем, чтобы это было чуточку быстрее и вкорячивалось куда себе сложно предствить жабу какую-нибдуь? Или?
Так я и пишу с копированием где нужно, мне похуй что там скопирутеся пару раз че-то, это никак на общей производительности программы не отразится и я не страдаю шизой с преждевременной оптимизацией.
Ну да, только не чуточку, а во много раз быстрее, и для этого не нужны оптимизации, просто пишешь без задней мысли и всё. Оптимизации нужны только когда ты хочешь написать на крестах быстрее написанного тоже на крестах.
Только начинаю вкатываться в это ваше настоящее программирование и у меня, как у математика, сгорела задница от непоследовательности синтаксиса. Почему указатели инициализируются через , хотя наоборот является оператором превращения указателя в значение? Т.е разве не логично бы было иметь
int a = 5;
int& b = &a;
вместо
int a = 5;
int b = &a;
???
И да, какого-то фига этот синтаксис используется для ссылок, хотя для них можно было бы использовать освободившиеся или вообще какой-нибудь $ чтобы явно обозначить то, что это совсем другая концепция.
Еще меня слегка взбесило то, что операция % не работает как это должно было бы работать в циклической группе, но это хотя бы технически оправдано, насколько я понимаю.
>>286819
(⚹ вставлены)
Только начинаю вкатываться в это ваше настоящее программирование и у меня, как у математика, сгорела задница от непоследовательности синтаксиса. Почему указатели инициализируются через ⚹, хотя ⚹ наоборот является оператором превращения указателя в значение? Т.е разве не логично бы было иметь
int a = 5;
int& b = &a;
вместо
int a = 5;
int ⚹b = &a;
???
И да, какого-то фига этот синтаксис используется для ссылок, хотя для них можно было бы использовать освободившиеся ⚹ или вообще какой-нибудь $ чтобы явно обозначить то, что это совсем другая концепция.
Еще меня слегка взбесило то, что операция % не работает как это должно было бы работать в циклической группе, но это хотя бы технически оправдано, насколько я понимаю.
Делай свой яз. Сейчас благодаря LLVM это просто. Да даже сама ниша LLVM существует - ты же не будешь тащить 200 мегабайт, чтобы преобразовать свой код в условный WASM, который и сам выполняет задачи преобразования кода, это я про JIT. А где компилер?
Проблемы си плюс плюсеров.
Говорят же вам, не ебите мозги, возьмите другой язык - rust или golang. А вы неееет, это база! Ну получайте свою базу. Где-нибудь среди тысяч строк поставишь не там амперсанд или звёздочку и будешь миллион лет гадать, почему программа крашится. Чего никогда не случится в том же расте, так как он показывает где ссылка и на что.
>в это ваше настоящее программирование
Про "настоящее программирование" это вообще пушка.
Если программа/сайт/приложение работает - какая хуй разница, на чём они написаны, на языке си плюс плюс или на языке коровьих лепёшек?
Двач вообще по-моему на пёрле написан и чё?
Чуть более сложные проблемы и растом не решаются. Я вот спросил у них в треде, как раст помогает разрулить простую ситуацию, что кнопка может быть уничтожена в обработчике события onDown, после чего onUp это будет хуже UB. А никак. Ну и зачем мне ебаться с растом тогда.
Ты задал какой-то вопрос и тут же слился через 2 миллисекунды.
Все языки будут хуёвые если сливаться при малейшей трудности со словами "фу развод".
Почему не решаются? Это твоё такое мнение?
Та не, в остальном мне скорее даже нравится, по крайней мере пока. Хотя разобраться с тем, что из себя представляет линковка и как нормально использовать чужие библиотеки у меня все еще получается лишь частично.
>>286836
Мой родной питон просто не вывезет вычислять симуляцию, которая меня интересует. Я не хочу ждать результата несколько недель.
>что из себя представляет линковка и как нормально использовать чужие библиотеки
Это вопрос зубрежки. У вас же в матане бывает так, что простой принцип основан на куче материала, которую надо просто выучить. Ну и тут так же.
>Мой родной питон просто не вывезет
Змеюка хотя бы умеет в realloc в отличие от крестов. Не спеши хоронить.
>отвечай на вопрос тогда
Не-не, стоп нахуй.
Ты про какую вообще кнопку говоришь? Их миллион.
Откуда интерфейс? Веб? Эмбеддед? Десктоп?
В каждом по 100500 разных фреймворков. Я тебе могу навскидку перечислить egui, slint, lvgl, tauri, dioxus...
И в каждом своя реализация кнопок.
И в каждой реализации свой набор методов, надо документацию открывать и смотреть.
Представляю, как ты ебешь мозги подчиненным, паразит.
> Мой родной питон просто не вывезет вычислять симуляцию, которая меня интересует. Я не хочу ждать результата несколько недель.
Только хотел предложить питон
Что за привычка хвататься сразу за указатели? У тебя в пистоне они были? Нет? Так за каким хуем ты переписывая с пистона на плюсы начинаешь код обмазывать указателями?
>как у математика
Ты хуй с горы
>Почему
Потому
>можно было бы
Тебя забыли спросить
>взбесило
Таблетки прими, если ты такая нервная сучка.
>>286847
>Мой родной питон
Теперь понятно откуда ноги твоего даунизма растут.
> не вывезет вычислять симуляцию,
Не вывезешь ты анскил ебаный, на питоне на изи можно вычислительную программу не медленее чем на С++ написать.
>не хочу ждать результата
Не жди, всем похуй на твои говно пет проекты, где ты числа Фибоначчи вычисляешь.
База.
> на питоне на изи можно вычислительную программу не медленее чем на С++ написать.
Напиши обработку массива на 100000+ элементов, померяем.
> У вас же в матане бывает так, что простой принцип основан на куче материала, которую надо просто выучить
Не, в математике учить почти ничего не надо. Одни принципы выводятся из других принципов. Главное выработать понимание с опытом.
>>286852
>Змеюка хотя бы умеет в realloc
Моих знаний пока не хватает, чтобы полностью тебя понять.
>>286883
>Что за привычка хвататься сразу за указатели?
Потому что про них часто говорили, та и вообще это оказалось довольно базовой и простой штукой. В отличие от линковки. У меня все еще травма от того, что я не могу нормально даже график нарисовать в плюсах.
>>286984
>Таблетки прими, если ты такая нервная сучка.
Что за таблетки :3
>на питоне на изи можно вычислительную программу не медленее чем на С++ написать.
Ого, и как же на питоне написать, например, эффективный клеточный автомат типа GoL на 100000x100000 ячеек на 1000000 итераций? Использовать numpy?
>всем похуй на твои говно пет проекты, где ты числа Фибоначчи вычисляешь.
Ну так я для себя этим занимаюсь. Пока, п крайней мере.
> вообще это оказалось довольно базовой и простой штукой.
Для плюсов это не базовая штука, это низкоуровневая архаика для совместимости с си. То что ты на плюсах в линковку не можешь говорит о том что ты в принципе не понимаешь как адреса работают, и берешь стекпоинтер и говоришь что это база.
Это пиздец, а не база.
Ну может и так... Просто мне показалось интересным и полезным.
>Почему указатели инициализируются через ⚹
Это не инициализация, а объявление переменной. Т.е. int ⚹a означает, что объявлена переменная a, такая, что у ⚹a будет тип int. Немного странная логика, но она тут есть. Это исторически из си пришло. С синтаксисом ссылок уже Страуструп налажал.
>Это не инициализация, а объявление переменной.
Уместное замечание, я действительно имею ввиду именно объявление.
>объявлена переменная a, такая, что у ⚹a будет тип int
Ну, действительно не бессмысленно, но по-моему это все равно пипец, а не адекватный синтаксис.
>но по-моему это все равно пипец, а не адекватный синтаксис.
В Паскале примерно так же, объявление a : ^integer, дереференс a^ := 10, адрес a = @b. Скорее всего это из какого-то более древнего языка пришло и в си и в Паскаль.
Проблема в том, что int* a, b объявит один указатель, и один инт. в С и С++ указатель и ссылка - это свойство переменной.
>Ого, и как же на питоне написать, например, эффективный клеточный автомат типа GoL на 100000x100000 ячеек на 1000000 итераций? Использовать numpy?
numpy, cython, numba еще хуева туча jit компиляторов. Используй че хочешь
Какие еще свойства переменной, наркоманище. Переменные распределяются по регистрам.
b - это переменная. int - размер данных выделяемых на стеке (4 байт).
xa переменная с адресом на данные (размера адресов в адресном пространстве ос, обычно это 32-64бит). int - размер данных расположенных по адресу.
auto c = xа + b; - сложение целых типов (размером в слово).
Что бы генерировать машинный код нужно строго знать размер сегментов и какие конкретно операции подставлять, без этого ничего работать не сможет. В самом языке никаких свойств переменных нет это формула для генерации корректного машинного кода.
> auto c = а[0] + b; - сложение целых типов (размером в слово).
Поправ-очка это загрузка слова плюс сложение (т.е. 2 операции)
ldw a, 0x4, %r0
addw %r0, b, c
Уважаемый синтаксический нацист, подскажите, пробелы лучше использовать или табуляцию?
>uuu
>ua
Оторвать бы руки все говнокодерам кто так обзывает переменные и типы, сука что это значит????
Ну ua это усраина, код писал какол.
canseled
Что не так? Отмываем память, чтоб компилятор не узнал откуда мы её взяли.
> Лучше бы Мозила, кстати, за браузером следила, чтобы он не оказался среди практически неиспользуемых. Что интересно, отсутствие раста не помешало хрому, который-то сделан на сложных неудобных крестах, выбросить фаерфокс на свалку.
Так пидорастеров выгнали из мозилы.
Посмотри первые эпизоды handmade hero, там делают игровой движок исполняемым файлом, а игровой код дллкой. И еще реализуют горячую перезагрузку игрового кода.
>>3289726
> го
Ну какой го блять. Я понимаю если бы я спрашивал... Хз, на что заменить питон, тогда может быть го и прокатил бы. Но какой нахуй го как замена плюсам?
А вообще ведь да, я наглухо забыл что только в бфг по уёбищному игровая либа статически линкуется с экзешником движка если дефайн _DOOM_DLL_ не задефайнить, спасибо ещё раз что напомнил.
dhewm3 не бфг, это форк ванильного двигла рассчитанный как раз на динамические моды/дополнения.
Нахуй они выкатывают говно неюзабельное из коробки?
Бля С++ реально язык мем нахуй, такой помойки как в С++ нету ни в одном языке пожалуй.
Сейчас я услышу вскукареки петушков о несовместимости различных систем, но пошли вы нахуй блять, в питоне и других языках вполне себе есть все атрибуты файлов в их стандартных кроссплатформенных либах.
Просто пиздец, реально С++ захватили дауны с отрицательным IQ. Уж лучше бы нихуя не делали и это говно бы уже давно сопкойно умерло никому не мешая и уже давно бы придумали его саксесора типа карбона, но пидарасы комитетные давали иллюзию что язык якобы развивается, но по факту это фейковое развитие, большинство функционала не нужно либо не юзабельно в полной мере из коробки.
Желаю С++ скорой и мучительной смерти, надеюсь в один день все резко забудут о таком уебищном высере даунидзе страуструпа как С++. Который из коробки заслуживал смерти. Вспомните С++98, этож блять не язык а говна кусок вообще. Я не понимаю как такое уебище вообще в свет можно было выпускать. Как можно было проектировать язык так безграмотно, что в нем есть миллионы UB, куда не плюнь - это UB разве так должен работать современный язык? Десятки лет потребовалось долбоебу страуструпу и его даунской команде, чтобы допилить язык до с++11, на котором стало проще писать, и я считаю на этом нужно было закончить развитие языка, потому что он был все еще невозможно уебищным, но для поддержки легаси говна упростили немного жизнь, а нужно было проектировать новый язык с нуля, на котором бы писали уже все новые проекты, а не делать вид что ебать у нас "коммитет эспертов С++" "коммитет решил" да вы хуесосы позорные, которые нихуя в языках не понимают, которые нихуя не могут сделать с языком.
Вот реально если взглянуть трезво правде в глаза, С++ жив только и только потому, что есть огромная база легаси кода. Даже сейчас раст уже отбирает у С++ неплохую долю на рынке, хотя раст по мне тоже еще то говно на костылях, но это все равно в 10 раз лучше чем С++.
С++ язык ущерб, язык пидор, язык гной.
Нахуй они выкатывают говно неюзабельное из коробки?
Бля С++ реально язык мем нахуй, такой помойки как в С++ нету ни в одном языке пожалуй.
Сейчас я услышу вскукареки петушков о несовместимости различных систем, но пошли вы нахуй блять, в питоне и других языках вполне себе есть все атрибуты файлов в их стандартных кроссплатформенных либах.
Просто пиздец, реально С++ захватили дауны с отрицательным IQ. Уж лучше бы нихуя не делали и это говно бы уже давно сопкойно умерло никому не мешая и уже давно бы придумали его саксесора типа карбона, но пидарасы комитетные давали иллюзию что язык якобы развивается, но по факту это фейковое развитие, большинство функционала не нужно либо не юзабельно в полной мере из коробки.
Желаю С++ скорой и мучительной смерти, надеюсь в один день все резко забудут о таком уебищном высере даунидзе страуструпа как С++. Который из коробки заслуживал смерти. Вспомните С++98, этож блять не язык а говна кусок вообще. Я не понимаю как такое уебище вообще в свет можно было выпускать. Как можно было проектировать язык так безграмотно, что в нем есть миллионы UB, куда не плюнь - это UB разве так должен работать современный язык? Десятки лет потребовалось долбоебу страуструпу и его даунской команде, чтобы допилить язык до с++11, на котором стало проще писать, и я считаю на этом нужно было закончить развитие языка, потому что он был все еще невозможно уебищным, но для поддержки легаси говна упростили немного жизнь, а нужно было проектировать новый язык с нуля, на котором бы писали уже все новые проекты, а не делать вид что ебать у нас "коммитет эспертов С++" "коммитет решил" да вы хуесосы позорные, которые нихуя в языках не понимают, которые нихуя не могут сделать с языком.
Вот реально если взглянуть трезво правде в глаза, С++ жив только и только потому, что есть огромная база легаси кода. Даже сейчас раст уже отбирает у С++ неплохую долю на рынке, хотя раст по мне тоже еще то говно на костылях, но это все равно в 10 раз лучше чем С++.
С++ язык ущерб, язык пидор, язык гной.
> Даже сейчас раст уже отбирает у С++ неплохую долю на рынке
Ты в следующий раз это пиши в начале поста, чтобы я дальше его не читал
По факту Раст это ещё более говно чем плюсы, и вменяемых альтернатив им просто нет.
Я согласен, что раст тоже говно, но он хотя бы намного более грамотно был спроектирован на самом начальном этапе, хоть и не без косяков. Но мой тезис заключался в том, что нахуя было """"развивать"""" дальше с++, вместо того, чтобы сидеть и пилить ему замену? Почему карбон только сейчас стали пилить? Чем думали последние десятки лет? Все нравилось писать на этом кривом раздутом говне с кучей UB? При чем многие же писали свои стандартные либы, потому что понимали что стандартная либа из коробки - кусок говна. Многие использовали только сабсет из языка типа там всяких MISRA C++. Я думаю ответ очевиден, что толкало их на такие решения - с++ сам по себе раздутое, неюзабельное из коробки говно с кучей UB, которое просто не подходит для проектирования серьезных систем.
Ты прав вменяемых альтернатив практически нет, писать на чистом си - еще более опасно и долго. Раст слишком поздно появился, D умер из-за GC, что там еще было ну понятно что все языки с GC мы не берем в расчет. Да альтернатив не было в те времена. Но неужели всем так нравилось жрать говно наебовая свои велосипеды на с++? Вопрос риторический. Эта индустрия проклята
> более грамотно был спроектирован на самом начальном этапе
Дай угадаю система сборки?
Которая без интернета пук и все, приехала.
Систему сборки я даже не учитывал, когда это писал. Я говорю про сам язык.
Система сборки в расте, кстати, одна огромная дыра, потому что build.rs выполняется на твоей пеке при сборке либы, т.е. там может быть какой угодно зловредный код. Точно так же как в npm и питоне уже напарывались на подобное говно, когда сборка проекта целенаправленно ломает систему/ставит вирус.
>>289954
> Я говорю про сам язык.
Про realistic subset или нет, лол? А то ведь в безопасном расте без проблем реализуются небезопасное обращение к памяти. Как и UB достаточно из-за дырявой системы типов и мисскомпиляции. Я уже молчу про то что каждая либа тянет ещё сотню либ, половина из которых содержит ансейф и безопасность фактически только локальная, да и то если используешь только realistic subset без попыток провернуть что-то за пределами описанного в доках.
https://github.com/Speykious/cve-rs
А тебе кто-то обещал что нельзя? Вот раст много чего обещает и ничего по факту не выполняет. Если бы растаны на каждом углу не пиздели про безопасность, то и к ним не было претензий. А по факту раст просто безопаснее крестов, но ни разу не безопасный, в том числе и в работе с памятью. При этом куча шизиков ещё рассказывают что безопасность работы с памятью в расте формально доказана, хотя в этом доказательстве не про весь раст, а некий realistic subset, лол.
Так никто не спорит, что в расте куча дыр, но в сравнении с с++, где на каждом шагу UB и в котором даже нету намека на безопасность по памяти, раст выглядит как относительно безопасный неплохо спроектированный язык с хорошим функционалом и современной системой типов.
Лучше ли раст С++? Да
Буду ли я переходить с С++ на раст? Нет
Вижу ли я будущее у раст? Нет
Вижу ли я будущее у с++? Сомнительно
> на каждом шагу UB
Не на каждом. И всё UB задокументировано стандартом. Это не дыры как в расте, которые могут отстрелить тебе ногу пока ты думаешь что в безопасности.
>всё UB задокументировано стандартом
Ты хотел сказать, всё UB что не задокументировано стандартом.
> Я говорю про сам язык.
Нормально спроектированный язык к одному компилятору и репозиторию исходников прибит гвоздями быть не может.
Я уже не говорю про совместимость с библиотеками и вообще отсутствию в расте понимания что библиотека может быть частью операционной системы а не репозитория, кроме того она может быть проприетарной (т.е. без исходников). Этот язык с его ограничениями физически не может заместить си и плюсы, его соперники это го и свифтами но пидорастеры со своей хуйней поперлись в системный уровень и библиотеки, щас мы их мол перепишем и хорошо будет. А лоу левел оптимизации под симды хуимды подвезете? Какие ещё оптимизации, у нас все llvm сам сделает.
Хочу почитать про винапи. Чтобы восполнить пробелы в образовании. Нашёл книжку Джефри Рихтера, 4 издание, переработанное и дополненное. А там говорится, что есть три ядра, вин95, вин98 и самое новое, заморское, вин2000. И упоминается, что появились 64-битная версия. Вот и возникла мысль, а может быть есть литература посвежее или получше?
Шо ты несешь, ненормальный?
> отсутствию в расте понимания что библиотека может быть частью операционной системы
Во-первых, что значит частью операционной системы? Ядро ОС - это как правило тупо монолитный бинарник, и чтоб он запустился никакие библиотеки не нужны, ну кроме загрузчика.
Во-вторых, допустим ты имеешь ввиду библиотеки которые ты\кто-то другой уже установил в твою систему, на сколько я помню раст конечно же не может напрямую цеплять сишные либы как и любые другие языки кроме С++, поэтому в нём предусмотрен FFI. Так что не особо понятна твоя претензия.
> его соперники это го и свифтами
Бля ну тут ты вообще мимо нахуй, это абсолютно другие языки для другой прикладной деятельности, как минимум из-за наличия у обоих GC.
Наличие GC в языке в корне меняет его применимость где-либо.
>поперлись в системный уровень и библиотеки, щас мы их мол перепишем и хорошо будет.
Так раст и был задуман как системный язык изначально, алло нахуй.
Что там кто переписывает я хз, и главное зачем, ты наверное путаешь обертки FFI с полным переписыванием библиотеки.
>А лоу левел оптимизации под симды хуимды подвезете?
С этого вообще выпал, что тебе мешает использовать симды в расте?
>Какие ещё оптимизации, у нас все llvm сам сделает.
Ты о чем вообще, ну да llvm может наверное что-то векторизовать если увидит возможность. Так же как и в GCC и в других компиляторах.
Думаешь в С++ твой говнокод с вычислениями автоматом векторизуется как надо и будет использовать новейшие симд иснструкции? Хуй там. Только ручками.
Так винда уже сто лет работает на последнем ядре NT это и есть твой вин2000.
И естественно уже столет 64 битное.
Хз я не эксперт в виндокале, я линуксоид, но вроде у них даже на MSDN если вся необходимая инфа.
Кстати вспомнил на работу 5 лет назад покупали кижку по виндовому апи, но не помню как называлась, я её открыл 1 раз чтобы доказать одному дауну, что я прав.
MSDN почитай. Полнее документации не найдёшь. Примеры кода на стаке загуглить можешь.
>>290086
> Так винда уже сто лет работает на последнем ядре NT это и есть твой вин2000.
Так-то с 2022 винда перешла на модульное ядро, а драйвера на WDF. Просто индусы беспокоятся об обратной совместимости, в отличии от линуксоидов, и все переходы происходят незаметно для юзера.
>Так-то с 2022 винда перешла на модульное ядро, а драйвера на WDF. Просто индусы беспокоятся об обратной совместимости, в отличии от линуксоидов, и все переходы происходят незаметно для юзера.
Неудивлен даже, Поэтому она такая лагучая? У меня она стоит на ноуте второй осью, сидеть на винде это вечный лагодром, все медленно грузится, постоянно поттупливает - просто пиздец. Хотя железо у меня хорошее, ноут игровой asus rog strix. Возвращаешься на линукс, просто шик, все летает, все плавно работет, ничего не поддупливает, просто блеск.
> все медленно грузится, постоянно поттупливает
> железо у меня хорошее
2 ядра 2 гига из 2005 - это не хорошее железо. Алсо, если у тебя система не на SSD, то можно только посочувствовать твоему слабоумию.
> Во-первых, что значит частью операционной системы?
Операционная система это дистрибутив состоящий из многих компонентов и библиотек оттестированных и стабилизированых. Так не только в линуксе но и в маке и в винде и в андройде.
Для предоставления программам api используются заголовочные файлы библиотек/фреймворков, это в винде/макоси. В линуксе большой пласт софта требующий зависимостей вроде gtk4, вяленда, systemd итд, который, судя по флатпакам, будучи собранным не мамнтейнером а васей залупкиным под свой core-i9 x9999 на тестовом ведре, у других либо отказывается запускается либо работает нестабильно.
Некоторые вещи в принципе нельзя в пространстве пользователя пускать я говорю про контейнеры виртуалки и 3d контекст, нужна библиотека из пространства системы работающая с привелегиями.
> цеплять сишные либы как и любые другие языки
А свои либы оно может цеплять внешние? Не может так как нет заголовков система сборки сама находит модули, как ей предоставить информацию о модулей который будет снаружи подцеплен не прдумали, в npm на джаваскриптах у парней таких проблем не было.
> это абсолютно другие языки для другой прикладной
Именно что оно, для "безопасного" приклада, сидели бы там и конкурировали но нет.
> С этого вообще выпал, что тебе мешает использовать симды в расте?
Так нет заголовков и билтинов, или ты сишный код вставляемый в виде строки в раст записываешь?
> Ты о чем вообще, ну да llvm может наверное что-то векторизовать если увидит возможность
Именно в том что даже умный компилятор для эльбруса предупреждает что возможности по автовеаторизации у него крайне ограничены и надо подключать ручки.
Какие инструменты раст предлагает для ручной векторизации при помощи интринсиков? Блок строки на си?
Знаешь на джаваскрипте тоже можно код на GLSL в строке писать, там обработку картинок в цикле, переворот, фильтры вот это все, очень быстро работает на gpu, можно наверное и математику считать какая разница. Но только это не делает жабаскрипт системным или прикладным языком. Тем более заменой плюсов на которых его виртуальная машина написана и оный компилятор glsl.
> Во-первых, что значит частью операционной системы?
Операционная система это дистрибутив состоящий из многих компонентов и библиотек оттестированных и стабилизированых. Так не только в линуксе но и в маке и в винде и в андройде.
Для предоставления программам api используются заголовочные файлы библиотек/фреймворков, это в винде/макоси. В линуксе большой пласт софта требующий зависимостей вроде gtk4, вяленда, systemd итд, который, судя по флатпакам, будучи собранным не мамнтейнером а васей залупкиным под свой core-i9 x9999 на тестовом ведре, у других либо отказывается запускается либо работает нестабильно.
Некоторые вещи в принципе нельзя в пространстве пользователя пускать я говорю про контейнеры виртуалки и 3d контекст, нужна библиотека из пространства системы работающая с привелегиями.
> цеплять сишные либы как и любые другие языки
А свои либы оно может цеплять внешние? Не может так как нет заголовков система сборки сама находит модули, как ей предоставить информацию о модулей который будет снаружи подцеплен не прдумали, в npm на джаваскриптах у парней таких проблем не было.
> это абсолютно другие языки для другой прикладной
Именно что оно, для "безопасного" приклада, сидели бы там и конкурировали но нет.
> С этого вообще выпал, что тебе мешает использовать симды в расте?
Так нет заголовков и билтинов, или ты сишный код вставляемый в виде строки в раст записываешь?
> Ты о чем вообще, ну да llvm может наверное что-то векторизовать если увидит возможность
Именно в том что даже умный компилятор для эльбруса предупреждает что возможности по автовеаторизации у него крайне ограничены и надо подключать ручки.
Какие инструменты раст предлагает для ручной векторизации при помощи интринсиков? Блок строки на си?
Знаешь на джаваскрипте тоже можно код на GLSL в строке писать, там обработку картинок в цикле, переворот, фильтры вот это все, очень быстро работает на gpu, можно наверное и математику считать какая разница. Но только это не делает жабаскрипт системным или прикладным языком. Тем более заменой плюсов на которых его виртуальная машина написана и оный компилятор glsl.
Выкуси, а.
Просто винда - худшая, тормозная, неудобная, напичканная анальными зондами. ос. Которая еще будет пытаться быть умнее тебя. Ну для овоща с отрицательным IQ норм вариант.
А виндовое API... это пездец.
Я как-то разрабатывал пол винду, тормозящие алокаторы плохо умеющие в многопоточность, говенный сложнейший дизайн апи, куча багов в компиляторе msvc и многое другое
> Так нет заголовков и билтинов, или ты сишный код вставляемый в виде строки в раст записываешь?
Да как это нет https://doc.rust-lang.org/core/arch/x86_64/index.html
А даже если я где-то обосрался, что-то не дочитал и их на самом деле нет, то есть асм вставки
Похуй что ты визжишь, намного важнее что сам Линус говорил про десктоп линукса - он считает что надо как на винде, а не как у криворуких дистроклепателей, тянущих каждый в свою сторону. И он всегда признавал что десктоп линукса кал с нулевым юзерэкспириенсом. Алсо, забавно слышать про скорость от тех, у кого второй язык в системе - это питон.
> напичканная анальными зондами
Раз уж ты линуксоид, то надо придерживаться Линуса. Он за нормальную бинарную дистрибуцию софта, а не миллион репозиториев и компиляцию всего по часу.
> Которая еще будет пытаться быть умнее тебя.
Опять же, пердоль обоссывает сам Линус, говоря что если кто-то умеет пердолиться, то это ещё не значит что его надо заставлять тратить своё время на это, софт должен просто работать из коробки.
Да, есть.
> Он за нормальную бинарную дистрибуцию софта, а не миллион репозиториев и компиляцию всего по часу.
Нормальная дистрибюция это когда библиотеки vcredist за весь 2000-2010-2020 надо из интернпта доустановить, Нет.Срамворк, directx online installer, power shell - это вот это нормальная дистрибъюция я правильно понимаю?
Пинус торвальдс сам не добавил в ядро никаких модулей с api как в винде и макоси, а ждет что маинтейнеры как то на своем уровне договорятся о стандартизации юзерспейса что бы программы были совместимы. Но линукс как был программой из которой просто функции торчат так и будет
Я правильно понимаю, что нормальная дистрибуция по мнению пердолика это установка из интернета сотни зависимостей перед тем ставить нужные пакеты, а потом сборка из исходников того что нет в репе? Нормальная дистрибуция когда ты не можешь установить разные версии пакета?
> библиотеки vcredist за весь 2000-2010-2020 надо из интернпта доустановить
choco install vcredist-all
> Срамворк, directx online installer, power shell
В системе уже есть. Если надо старый, то choco install dotnetfx
Че несешь, спермохлеб?
1.Пруфы что Линус так говорил.
2. Даже если это так, мне похуй как он говорил или говорит, я пользуюсь свободным ПО и я в состоянии настроить систему так, как мне нужно и не испытывать с ней никаках проблем, потому что IQ у меня не отрицательный как у некоторых.
3. Ядро линукса != вся система. Не зря говорят GNU/Linux. Линукс это только ядро.
Так что твои вскукареки про Линуса я хз вообще нахуй тут нужны, ты только позоришься открывая свой рот.
4. Судя по твоим изречениям, своего мнения у тебя нету и ты как ведомая обезьяна вынужден опираться только на чужое. Неудивительно, что ты защищаешь индийский член у себя в жопе.
Так винда с собой тащит огромный пласт легаси говна, поэтому и весит уже сколько там 10 гб в чистом виде? + еще и лагает как мразь на современном железе.
Короче бля, хуже чем спермоглоты я даже хз кто, наверное только дауны js'ники.
Я лучше на маке буду сидеть, это хотя бы имеет юникс корни и работает шустро.
Алсо, про линукс, наверное поэтому валв решила не виндос накатывать на свой дек, а пилить линукс так, чтобы там работали все игры. Наверное люди там понимают что винда куча говна лагающего, поэтому в условиях ограниченного железа это не вариант. И то что они сделали с протоном это уже огромный успех, потому что игры под ним зачастую работают быстрее чем на обоссаной винде.
> , что нормальная дистрибуция по мнению пердолика это установка из интернета сотни зависимостей перед тем ставить нужные пакеты
Официальным пакетником из официального репозитория, а не васянским как ты предлагаешь. Ни винда, ни макось ни тем более линукс не включают весь дистрибутив из коробки, они его делят на библиотеки/программы (внезапно) и предлагают их доустановку, в линуксе из репозитория, в макоси сперва через кнопки (буквально кнопки в меню были установить mac-jdk/xcode-sdk) сейчас через апстор, но разработчики все равно пользуются васянским brew, ну а в винде некрософт предлагает на сайт к ним идти искать скачивать. На уровне интуиции догадыватся что msvc100.dll это из состава пакета vcredist2012 смотри не перепутай.
А там есть еще vbredist, юникс шелл, нет.срамворк 3 и 3.5, потом 4 и 4.5 причем как отдельные пакеты.
И самое главное: ты предлагаешь все это решить сторонним пакетником и говоришь - вот достижение винды, пакетник в стиле линупс от васянов.. Совсем с башкой плохо что ли?
> Официальным пакетником из официального репозитория
Ох лол, ещё расскажи что майнтейнер это разрабы этого софта, а не просто васяны.
> а в винде некрософт предлагает на сайт к ним идти искать скачивать
В msix всё само ставится. Это если софт упакован в непонятно что, то при запуске бинарника он ткнёт носом и скажет идти по ссылке.
Искать никогда не надо, сейчас всегда прямая ссылка на нужный дистриб в ошибке.
> сторонним пакетником
choco в винду встроен из коробки, он не сторонний, лол. Майнтейнеры так же как и в пердоликсе рандомные челы, но сейчас часто сами разрабы выкладывают туда свой софт.
Если тебе хочется пря от майков репу, чтоб ни один васян не притрагивался, то всегда есть вингет, тоже в системе из коробки:
winget install Microsoft.VCRedist.2015+.x64
> причем как отдельные пакеты
Ты лучше расскажи как поставить условный питон на пердоликс и чтоб потом не приходилось доустанавливать пакеты. Он разбит на 50 пакетов за каким-то хуем, хотя у мака/винды просто один пакет. То же самое про CUDA - миллион пакетов на каждую отдельную либу. Хочешь поставить сраный neofetch - 30 пакетов зависимостей. При этом в момент когда ты захочешь поставить свежую версию пакета, а не двухлетнюю из репы, то дико отсосёшь из-за зависимостей.
>Обтекай.
Лол, еще раз во-первых, похуй что он там говорит, его там только ядро.
во-вторых, при чем здесь вообще это нахуй, дебил? Разговор о том, что винда сосет по всем фронтам, при чем тут ты высрался с Линусом, с какими-то пакаджами, нахуй ты это принес? Да хуй с ними. Это никак не улучшает ситуацию с тем, что винда говно, которое лагает, которое неудобное, которое с анальными зондами и кривым неудобным апи? А? Говноед? Ответь мне на вопрос: Почему спермобляди так яростно оправдывают член господина у себя в анусе? Ну хочешь ты поглощать говно с членом в жопе окей. Я выбираю свободный и быстрый софт. Если бы даже мне запретили использовать линукс я бы лучше стал макойобом, выучил свифт или че он там юзают и пересел бы на макбук. Чем был бы членоглотателем индийского высера под названием windows.
>Ряяяя, нет тыыыыы.
Ну дебилушка, что сказать.
Сиди дальше сперму глотай, анскил ебаный. Я уверен, что ты даже не настоящий программист, а сидишь тут просто так срешь своим бредом на всей доске.
Так ты реально долбаёб, защищаешь линукс хуй пойми зачем, он тебе еблану всё правильно объясняет, что с одной стороны копроративный виндогной, что с другой стороны открытая линуксойдная моча без внятной экосистемы, и что там, что тут - страдаешь.
>питон на пердоликс и чтоб потом не приходилось доустанавливать пакеты.
>Он разбит на 50 пакетов
Ты реально такой анскил? Что за бред ты несешь я в ахуе. Какие 50 пакетов. Таблетки прими.
Питон вообще предустановлен зачастую на многих дистрах.
А идет он одним пакетом python3 какой-нибудь и все.
> То же самое про CUDA
Куда тебе до куды? Судя по твоим изречениям, ты вряд ли что-то сложнее хелоу вордов пишешь, если вообще пишешь что-то.
По теме твоего высера про куду, это называется метапекедж, и то что каждая либа разбита на отдельный пакет это очень правильное решение. И вообще твоя претензия тут не к разработчикам дистров должна быть а к нвидиа, но они молодцы все правильно сделали.
Это я тебе говорю как чувак, который под куду много чего написал.
>neofetch
Понятно, дауненок из десктоп треда. Ты че тут забыл, реально? Ты походу тредом ошибся.
>зависимостей
А ты как хотел? Чтоб каждая сраная утилита в 200 строк кода, паковала каждый раз кучу зависимостей в один большой условный бинарник и весила пару сотен мегабайт? Ну в макоси так сделано и всякие флетпаки и снапы похожим образом работают, поэтому их все хуесосят.
>При этом в момент когда ты захочешь поставить свежую версию пакета, а не двухлетнюю из репы, то дико отсосёшь из-за зависимостей.
Ты про себя очень точно сказал, ты отсосешь, но не потому что линукс плохой или разработчики пакета, а потому что ты криворукий далекий от разработки даун.
Ну давай разберем тобою написанное:
1. Пакеты двухлетней давности это только в каком-нибудь дебиане. Ставь дистр с ролинг релизами и будет тебе счастье все самые новые пакеты.
2. Реальная необходимость в новом пакете встречается довольно редко. Но если таковая реально есть, то можно просто этот пакет собрать из сорцов и установить куда-то не в систему.
3. Ты просто дауненок, который не разделяет системные пакеты от локальных. Потому что ты не разработчик, если бы ты был реальным разработчиком, то такую хуйню ты бы уже давно знал как решать.
4. Когда я работал над виндовым проектом, там знаешь как делали? Просто абсолютно все зависимые либы хранили в одном огромном архиве, который очень редко обновлялся, потому что если ты что-то обновишь то зачастую это может поломать весь проект. Ты просто не раработчик, поэтому с этим не сталкивался и не знаешь что да как делается на практике. А на практике делается так: Работает - не трогай.
Короче заебал ты меня. Я пошел спать.
>питон на пердоликс и чтоб потом не приходилось доустанавливать пакеты.
>Он разбит на 50 пакетов
Ты реально такой анскил? Что за бред ты несешь я в ахуе. Какие 50 пакетов. Таблетки прими.
Питон вообще предустановлен зачастую на многих дистрах.
А идет он одним пакетом python3 какой-нибудь и все.
> То же самое про CUDA
Куда тебе до куды? Судя по твоим изречениям, ты вряд ли что-то сложнее хелоу вордов пишешь, если вообще пишешь что-то.
По теме твоего высера про куду, это называется метапекедж, и то что каждая либа разбита на отдельный пакет это очень правильное решение. И вообще твоя претензия тут не к разработчикам дистров должна быть а к нвидиа, но они молодцы все правильно сделали.
Это я тебе говорю как чувак, который под куду много чего написал.
>neofetch
Понятно, дауненок из десктоп треда. Ты че тут забыл, реально? Ты походу тредом ошибся.
>зависимостей
А ты как хотел? Чтоб каждая сраная утилита в 200 строк кода, паковала каждый раз кучу зависимостей в один большой условный бинарник и весила пару сотен мегабайт? Ну в макоси так сделано и всякие флетпаки и снапы похожим образом работают, поэтому их все хуесосят.
>При этом в момент когда ты захочешь поставить свежую версию пакета, а не двухлетнюю из репы, то дико отсосёшь из-за зависимостей.
Ты про себя очень точно сказал, ты отсосешь, но не потому что линукс плохой или разработчики пакета, а потому что ты криворукий далекий от разработки даун.
Ну давай разберем тобою написанное:
1. Пакеты двухлетней давности это только в каком-нибудь дебиане. Ставь дистр с ролинг релизами и будет тебе счастье все самые новые пакеты.
2. Реальная необходимость в новом пакете встречается довольно редко. Но если таковая реально есть, то можно просто этот пакет собрать из сорцов и установить куда-то не в систему.
3. Ты просто дауненок, который не разделяет системные пакеты от локальных. Потому что ты не разработчик, если бы ты был реальным разработчиком, то такую хуйню ты бы уже давно знал как решать.
4. Когда я работал над виндовым проектом, там знаешь как делали? Просто абсолютно все зависимые либы хранили в одном огромном архиве, который очень редко обновлялся, потому что если ты что-то обновишь то зачастую это может поломать весь проект. Ты просто не раработчик, поэтому с этим не сталкивался и не знаешь что да как делается на практике. А на практике делается так: Работает - не трогай.
Короче заебал ты меня. Я пошел спать.
>Ну с линуксом можешь поебаться один раз и норм дальше сидеть
Надмозгам этого не понять.
Да и ебаться уже давно не приходится, как правило все работает из коробки.
> А идет он одним пакетом python3 какой-нибудь и все.
Вот ты явно никогда его не трогал, чухан. Банально pip или venv - это отдельные пакеты в пердоликсе. Прям так и называются python3-pip и python3-venv.
> но они молодцы все правильно сделали
Кто они, шизик? Нвидиа не мейнтейнит свои либы в репах дистров, они же не ебанутые.
> choco в винду встроен из коробки, он не сторонний, лол. Майнтейнеры так же как и в пердоликсе рандомные челы, но сейчас часто сами разрабы выкладывают туда свой софт.
Куда "туда" выкладывают? В пакетник что ли? Школьник ты дрищешь.
> Так это достоинство.
Нет, иногда нужен барский сапог, чтобы была хоть какая-то стандартизация, отталкиваясь от которой ужe можно пилить комьюнити велосипеды под свои хотелки.
Если бы был барин, то хуита ввиде cmake, который изначально был костылем для красноглазого мейка, не получила бы такое распространение
Мимо премейко-боярин
>python3-pip и python3-venv.
Это системные пакеты. Точно не помню пип вроде и так идет с питоном вместе, но ты манька, плохой тон ставить все в систему, обычно делают локальный venv и туда пипом все ставят. Не понимаю твоего бугурта, на счет этого.
>Нвидиа не мейнтейнит свои либы в репах дистров
Да ты что? Алёша, а как на счет нвидивских реп, прямо у них на сайте, когда ты хочешь куду с сайта установить? Кто это меинтейнит по твоему?
Это неверное та тян которая про воксели хороший ролик сняла?
Узнал ее по шизойдным высерам интересу к 3d графике, она редкое явление и ей не само программирование итересно.
>>290560
> Это системные пакеты.
Спермошкольник считает что системные скрипты это вижуалбейсик и повершел скрипт, а если обкусаный питон или руби (как в макоси) то это тупые юниксойды неправильно скачали/собрали.
Ты мейнтейнишь что-то? Ты хоть раз мейнтейнил в своей жизни?
Шизоид, ты опять выходишь на связь?
>Но мой тезис заключался в том, что нахуя было """"развивать"""" дальше с++, вместо того, чтобы сидеть и пилить ему замену?
Замену в какой области лол? Раст начали пилить разработчики браузера, потому что С++ их не устраивал именно для разработки браузера. Есть куча других областей, где требования совсем другие, и С++ там норм. Тот же раст для микроконтроллеров сейчас - далеко не идеальный вариант, хотя бы потому, что там динамических аллокаций обычно нет, а со статической памятью раст работает не лучше плюсов (и гораздо хуже, например, Ады). С++ очень гибкий, можно писать в любом стиле от процедурщины и функциональщины на темплейтах до классического ООП в стиле джавы. Раст же предлагает только один, одобренный партией путь, а это далеко не всем подходит. Ну и наконец, раст это идеологически тот же наследник Алгола и батч-процессинга на мейнфреймах IBM. Предлагает разработку в стиле 60-х годов, как будто не было лиспов и смолтолка. В результате вонючее мыло предлагается обменять на кривое шило. Чтобы что?
> потому что С++ их не устраивал именно для разработки браузера
Там история такая что в фаирфоксе очень много легаси чуть ли не с нетскейпа. Именно в самом коде браузера, если вспомнить сколько раз его целиком переделывали с нативного на XUL/COM потом на Quantum-хуянтум, теперь сделали как в вивалди максимально где возможно на html+js, где невозможно gtk библиотека затыкает.
Хотели просто перелопатить код браузера, но какая то умная голова посоветовала создать альтернативу blink да на особом языке ну и в итоге все это вылилось в servo, который застыл в разработке т.к. в коде стало сложно разбираться.
>в итоге все это вылилось в servo, который застыл в разработке т.к. в коде стало сложно разбираться.
Лоботрясы-попильщики потому что, работать им нет смысла, надо наоборот нихуя не делать и резину тянуть. И такой весь линукс, вон посмотри, вышла новость, что Валв скооперировалась на разработку Арч-линукса, и сразу подняли вой, про "плохих корпорастов". Ну для начала, Валв не корпорация, но что важнее это тоже компания которой нужен рабочий продукт, а значит надо пинать жопы чтобы работали и делали как следует, а не как привыкли в этих пердуликсах хуи пинать говно говнять.
>сколько раз его целиком переделывали с нативного на XUL/COM потом на Quantum-хуянтум
Кстати, смешно, что в результате сделали специально для браузера язык, в котором удобной работы с XML нет, и удобной работы с UI тоже нет. Да и вообще, каличный и нерасширяемый синтакс.
Да хуй с ним с этим растом. Уже 10 раз тут обсудили, что это примерно такое же говно как с++.
Запилите нормального наследника С++, чтоб было с кайфом на нём писать жи эсть нахуй.
>>291795
Ебать, как же тебя трясет до сих пор...
Чем же тебя так линукс-то обидел, что ты готов даже не в тему просто отвечать, зацепившись за какую-то хуйню, высрать очередной гневный пост о линуксе?
Тебя что линуксойды в школе головой в унитаз мокали? лол
> Запилите нормального наследника С++,
Это так не работает, высрали плюсы и джаваскрипт в бородатые времена, в джаваскрипт какой то наркоман запилил prototype отдельной библиотекой, в плюсы другой наркоман stl, люди приняли как стандарт дефакто следом подтянулся консорциум, и вот так вот языки развиваются. По другом не получится твой красивый язык с правильными идеями нахуй никому не нужен кроме кучки верующих, разработчики решают практические задачи и им нужен инструмент с доступной и понятной механикой, а не дзен-буддизм с книгой мантр и священником наставником.
Поэтому популярные языки обречены быть свалкой инструментов.
> им нужен инструмент с доступной и понятной механикой, а не дзен-буддизм с книгой мантр и священником наставником
Как раз таки поэтому плюсам и ищут замену
>Сtrapon
Не знаю что это такое, если бы я знал что это такое все равно бы в себч не принял от гугла.
А я и не про го
Что в нем такого особенного? Какие он дает преимущства в сравнении с повсеместным обязательным использованием умных указателей и избеганием сишных функций, через которые можно утечь?
Сам язык не трогал и сложил впечатления о нем лишь мельком почитывая тред.
Зумеры с растом не носятся, они знают только про JS и петухон. Про раст здесь срут местные 3.5 шизика.
>обязательным использованием умных указателей и избеганием сишных функций
Проорал с этого эксперта по безопасности
> Почему все носятся с растом
Многих заебали плюсы, некоторым просто интересно что то новое в системщине, кто то шизит по мемори сейфти и пытается спасти мир
Знаю людей которым нравится по языкам прыгать, сегодня Раст, завтра зиг, после завтра ещё что то
Животное - это твоя мать, которую пьяные разнорабочие изнасиловали, что появилось такое, чмо, как ты.
А я уважаемый господин, Senior C++ Developer.
Обтекай.
Да это намного приятнее чем городить обосранные try..catch блоки везде, ну либо вообще забивать и ловить экспепшен в main где-нибудь, но это тоже хуевый путь.
Жаль только с++ понадобилось 30 лет чтобы дойти до expected.
У эксепшенов только устаревший джава-синтаксис плохой, а так он сильно лучше возвращаемой ошибки. Хотя try-функции немного решает всратость синтаксиса.
Они вообще наоборот сильно хуже, если у тебя частая ошибка возникает. Поймать эксепшн довольно дорогая операция. А проверить еррор код - дешевая. Ерроркод находится сразу в кеше и то что там даже будет бранч-миспредикшн это хуйня, по сравнению таблицей эксепшенов которые вряд ли вообще в каком либо кеше будут находиться.
> частая ошибка возникает
Когда у тебя код из сплошных ошибок состоит, то тут только эвтаназия спасёт. Нормальные люди сначала проверяют, а потом делают что-то. Если ты сделал что-то не глядя, поймал ошибку и после обработки начал делать это заново, то уже потратил кучу производительности впустую.
> Senior C++ Developer
SFINAE расшифруй и расскажи, зачем std::launder нужен, и что конкретно делает.
> Они вообще наоборот сильно хуже, если у тебя частая ошибка возникает. Поймать эксепшн довольно дорогая операция.
Именно поэтому она и называется исключительной ситуацией, что происходит редко. Если она у тебя происходит часто, то ты долбаёб и делаешь что-то не так.
> А проверить еррор код - дешевая.
Да конечно. Когда исключения не кидаются, код с ними ПРОИЗВОДИТЕЛЬНЕЕ, и не засоряет кэш (с чем ты и сам согласен)
> и то что там даже будет бранч-миспредикшн это хуйня
Ахуенно. Съеби короче.
Ловить исключение, да, дорогая операция, а обходить аппаратное исключение например при делении на ноль и протягивать через весь код проверки с бранчами - это дешевая операция? Я понимаю динамический язык, там хотя бы jit есть который весь холодный и маловероятный код выкидывает нахуй, но у вас то статик компаил блять, надо все заранее продумать, нахуй его ловить это исключение, если что то происходит неправильно программа должна завершатся и все, ну для дебага можно исключения кидать чтоб стек вывесть ну и все.
Он и на него не ответил.
Нет, проблема в том, что долбоебы разработчики С++ распихали экспепшены как попало, куда по кайфу. Вот возьмем никогда не возникающий на практике эксепшн bad_alloc? Нахуй он нужен? Зато я обязан это учитывать в теории. Ясен хуй что всем похуй на него.
А какие-ниудь out_of_range? Вот мне ахуенно не нравится эксепшн в string_view//string - substr блять вы ахуели? Нахуя так делать? И таких примеров сотни. Где неоправданно может выброситься эксепшн и ты должен это говно учитывать.
Зачем тебе это все учитывать? Что ты там делаешь, ебанутый?
> bad_alloc? Нахуй он нужен?
Бывает железо без mmu, вполне себе актуальное. Наверное для системщиков-пидорастеров открытие что мир состоит не только из десктопных core i7, но их еще будет много таких на пути.
На ассемблере пишут приложения для смарт-тв, приставок и киосков, да. И symbian не на плюсах написан.
Ты умственно отсталый? Приложения для ТВ пишут в большинстве своем на джава\котлине ибо весь андройд на этом работает. Под эпл на свифте. Ты бредишь.
>symbian
Лол, и где сейчас этот симбиан?
Низкоуровневый код в основном не пишут на С++. Либо пишут с огромными ограничениями по использованию всего и получается что-то типа си с классами.
А уже потом создают фремворки на более высоуровневых языках в т.ч. и С++. для прикладного использования.
>Приложения для ТВ пишут в большинстве своем на джава\котлине ибо весь андройд на этом работает.
>Низкоуровневый код в основном не пишут на С++.
А джава и скотлин на чем написаны? Виртуальная машина и компилятор это высокоуровневый код или нет
>приложения для смарт-тв, приставок и киосков
Там тормозная веб-параша на электроне в основном.
>Вот возьмем никогда не возникающий на практике эксепшн bad_alloc? Нахуй он нужен?
Только в твоих лиллипутских программульках не нужен. Какой-нибудь научный софт легко всю память съест на симуляции FEM или CFD. У меня лет 10 назад блендер только так вылетал с 8Гб памяти на рендере тяжелых сцен.
>протягивать через весь код проверки с бранчами
>там хотя бы jit есть который весь холодный и маловероятный код выкидывает нахуй
JIT - это буквально бранч на бранче. На каждый вызов проверка - запускать jit вариант или поднимать интерпретатор, или, наоборот, компилировать кусок кода, если трейс больше заданного. Он работает быстро потому что бранч-предиктор.
А английский на чем написан???
>а каждый вызов проверка - запускать jit вариант или поднимать интерпретатор, или, наоборот
Вот ты вызвал функцию и там вместо 2х стало 3 проверки и 3 путя:
1. прыгнуть в цикл
2. прыгнуть в конец к ret
3. прыгнуть в код интерпритатора
Это все более менее совмещается по времени и ошибка предсказания при допустим внезапном откате в интерпретатор незаметна, и даже полезна в каком то смысле полезно ибо нехуй кэш занимать.
У тебя же в цикле проверки на каждой итерации что бы отловить и опередить исключение, прям как в интерпритированном коде.
>У тебя же в цикле проверки на каждой итерации что бы отловить и опередить исключение
Эксепшени как раз и нужны, чтобы не в цикле ошибку ловить, а где-то выше.
>Джуну можно сказать лишь одно предложение, чтоб было понятно, что он джун.
Сиди и молчи тогда, никто не догадается.
Ну так то да, причем с асинхронными объектами еще и ловушка ненужна и основной поток непрерывается.
Я хуйню не несу, в отличии от тебя. Так что сиди, молчи и учись, джун, пока тут сеньоры общаются на концептуальные темы.
Потом пойдешь учить что такое SFINAE или что ты там сейчас проходишь на каком-нибудь скилбоксе, лсина...
Ну и бунтарь!
Для меня новый стандарт это С++20 (старый С++11)
да верь не верь, это буквально его определение
ПОВЕДЕНИЕ НЕ ОПРЕДЕЛЕНО != да сто проц чот типа сигфолта будет, очко ставлю
>будто подразумевают что у тебя может прон с конями в хроме открыться вместо обычного сегфолта
Еще раз: это не джава где защищен стек и контролируются границы. UB это то что выходит за рамки языка и зависит от реализации ОС и железа.
Смысл поста?
> выходит за рамки языка и зависит от реализации ОС и железа
Чел, нет. Есть unspecified behavior - это когда стандарт не определяет конкретное поведение, но оно обязано быть определено компилятором. А undefined behavior - это когда даже в рамках одной программы поведение может быть любым в зависимости как в конкретном месте компилятор пожелает. У компиляторов обычно есть куча флагов чтобы второе сделать первым, например для переполнения и границ массивов.
Разговор был про сегфолт, то есть рантайм ошибка, которая, будь она гарантированно поведением железа, не было бы UB как его нет в джаве и ее виртуальной машине, например.
Сап, плюсачеры
А вы где работаете-то в РФ?
Глянул вакансии в ДС- полтора финтеха, пара вакансий бекенда, остальное госпараша.
> Актуально сейчас Майерса читать?
Актуально
> Или есть какие то кор книги по 20-23-26 плюсам?
Да ты ахуел, какие книги по C++26? По 20 Tour of C++ Страуструпа
У Майерса последняя книга по 11-14. У языка такая же разница как с 98.
Сейчас уже 24 год, стандарт вышел год назад, а нормальной книги так и нет?
Страуструпа я бы не стал читать тоже. Он давно не коммерческий программист, да и вообще очень старый уже, ему 70 лет нахуй, какое программирование, да и к современным плюсам он отношения никакого не имеет
> У Майерса последняя книга по 11-14
И? Если ты не знаешь 11-14 (а ты, судя по всему, их не знаешь), то тебе рано учить фичи из 20+, ты их просто не поймёшь.
У тебя неверный подход к изучению языка. Ты как в том тиктоке, где чела попросили попить воды, он начал изучать биохимические процессы. Потому что по твоей логике я и 11\14 не пойму потому что до этого не прочитал 98\03.
А если я действительно не пойму фичу из современных плюсов, то это потому что в книге это херово объяснено. Мне например не нужно читать про thread и практику его применения если уже есть join thread. Если в книге кратко упомянут про различие в поведении деструктора этого будет вполне достаточно. Еще есть такие вещи как референсы, знания у людей всегда тянутся от чего то, ты если посадишь читать каменного человека Майерса он не поймет нихуя. А раз я спрашиваю за 20\23, то у меня есть некий понятийный аппарат чтобы проскочить ненужную информацию по старым стандартам или хотя бы достанет навыка пойти быстренько почитать что то, особенно будет круто если такой рефернс будет прямо в книге на какую-нибудь крутую лекцию\главу книги того же Майерса например. Это хороший подход к изучению.
А читать все подряд это, извини, всей жизни не хватит
Скажем так, госпраша госпараше рознь. Да и что сейчас в рахе не госпараша? Сбербанк, ВК, Яндекс это госпараши?
Если же мы говорим про такой эталонный совок с дидами, то там тебе и зарплату то платить не будут, будешь сидеть на хлебе. А еще есть параши посовременней укомплектованные молодежью, там и зп побольше, но и упахиваться придется, требуется обязательное образование и прочие атрибуты так же присутствуют в виде жополизания, анального рабства, че мы мужики начальника что ли подведем и прочее такое говно. Но все равно ЗП в любой госпараше будет ниже рынка всегда, это аксиома. Проекты еще говно не особо интересные, как правило это шиза всяких конторских шизиков, будете делать софт аля на кутах на 11, максимум 14 стандарте под астру жрать кмльное говно и это самое интересное будет твое занятие. Есть еще всякая военка, но это я тут обсуждать не буду.
В целом почему я написал не советую, потому что нормальные люди таким не занимаются. Пройти там стажировку - нуууу ок, если очень хочется посмотреть на это всё, но обязательно обрати внимание чтобы коллектив разработчиков при этом был в среднем до 30. Оставаться дальше там - нет. Особенно если у тебя хороший вуз вроде физтеха или мгу. То на последних курсах сходи на стажировку в госуху и съебывайся сразу же желательно в другую страну
Актуально, книжки сперма это просто сборник best prwctices, а не краткое повествование фичей языка
>>296891
Ага, как будто фичи из старых стандартов в новых куда то пропадают
Не говоря уже о том, что как анон выше написал, большая вероятность ковырять с++11-14, а о двадцатом стандарте только мечтать
Ну так или иначе, в книжке Майерса нет ничего такого что устареет через n стандартов
да и что там читать, студентотой прочитал и разобрался за несколько недель
Сперма Майерса?
>Сбербанк, ВК, Яндекс это госпараши?
Под госпорашей имеется в виду какое нибудь ВГУП НИИ ЦКБM где нет этих ваших менегмента и корпоративной этики а есть руководитель, задачи государственной важности, маленькая зарплата, и полная свобода в выборе инструментов и библиотек.
Яндекс и ВК и близко не госпараша ни по одному параметру, Сбербанк сложнее, я бы сказал так: это частная параша с "эффективным" менеджментом от госчиновников как ныняшний автоваз примерно, то есть смесь если не всех то самых едких говен из двух миров.
Нии это нии и отдельные мемы, хотя тоже госуха. И я уже написал что госуха госухе рознь. Касперский анти бпла и анти дроны делает, инфа открытая, где они применяются тоже ходить к гадалке не нужно. Задачи гос важности? Сто проц, как и весь их остальной подряд про который мы даже не слышали. Подозреваю что и инструменты они там самые новые используют, это тебе не совковые диды в нии, и менджмент у них там госчинуши на бнв и мерседесах катаются и про аджайл со скрамом думается они тоже чето слышали. Времена поменялись, совок разворачивается во все поля, так что "ни по одному параметру" это ты постесняйся так писать
если у тебя переменные лежат в одной cache line, то доступ к ним синхронизируется через неявный мьютекс внутри процессора
Процессор всегда читает память размером с кеш линию, сколько бы байт ему не требовалось прочитать минимальный размер чтения 64 байта ( х86 ).
И во-первых, у тебя сама очередь в одной кеш линии будет, то есть все эти счетчики.
А во-вторых, сами элементы в очереди, если будут например меньше 64 байт, то могут попасть в одну кеш линию и если к соседним элементам нужен будет доступ из разных потоков, то тоже будешь фолс шаринг, поэтому предлагается выровнить их alignas'ом по размеру кеш линии и тода каждый из них будет распологаться в памяти с таким оффсетом что гарантирует их "несоседство".
>Сложнейший синтаксис
Лол, у какой-нибудь Джавы/Сишарпа синтаксис и читабельность кода гораздо сложнее, особенно если смотреть энтерпрайз код - там настоящий классовый хаос, где обычное наследование превращают нетривиальную задачу в громоздкую pajeet shitting factory. В противовес этому, хороший с++ код читается как книга.
Вот писать код для плюсов сложнее, тут согласен.
Делаю всякие конвертеры для старых игр в своё удовольствие, понадобилось сделать конвертер png в текстуру для первой кваки (.lmp), как можно цвет конвертировать в индекс палитры? Каким образом сравнивать? Гуглил, но инфы не нашёл, может жопой искал? Это не какая-то специфичная инфа вроде-бы.
читаешь каждый пиксель, ищещь в таблице индекс кладешь в вектор и вот так вот набираешь массив индексов в палитре. Самое сложное это алгоритм сжатия если оно там используется
Не-не-не, как мне из RGB-пикселя путём сравнения найти хотя-бы плюс-минус схожий цвет в палитре?
Добавь эпсилон в сравнение цвета на канал и найди условный диапазон палитр который попадает в px_col + eps < palit_color && px_col - eps > palit_color , там уже эвристически найди jlby наиболее подходящий.
Короче - я еблан, это называется цветовое квантование, https://en.wikipedia.org/wiki/Color_quantization, а тут и сам алгоритм, подтолкнул в нужном направлении с составлением запроса, спасибо.
В сложной математике я профан, но что то мне подсказывает что определить что цвет тот же просто другой градации можно вычислить как abs(a - b) == abs(b - a) или (a - b) / (b - a) == 1
Ну допустим в палитре цвет a rgb(21, 32, 43)
а у пикселя b rgb(49, 60, 71) - тот же цвет только темнее
делаем
union color_t {
struct { uint8_t r,g,b,a; };
struct { uint32_t rgb:24,alpha:8; };
};
color_t a = {21, 32, 43, 255};
color_t b = {49, 60, 71, 255};
a.rgb - b.rgb => 213243 - 496071 => -282828
как то так, для соседних цветов.тонов это работать не будет естественно
Это какой-то говнокод на си, к с++ не относящийся. Который еще и работать не будет.
> Это какой-то говнокод на си, к с++ не относящийся.
Плюсы это тот же си в котором данные обернуты в классы а с работа с полями структуры происходит через безопасные методы. Если ты не можешь представить как сишный код переложить на плюсы, то не знаешь с++ и не понимаешь зачем он придуман.
union color_t {
🕳️ struct { uint8_t R,G,B,A; } m_v;
🕳️ struct { uint32_t color:24, alpha:8; } m_fill;
public:
🕳️ color_t(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) {
🕳️ 🕳️ m_v.R = r, m_v.G = g, m_v.B = g, m_v.A = a;
🕳️ }
🕳️ bool isOnColorGrade(color_t &c) const {
🕳️ 🕳️ int a = m_fill.color,
🕳️ 🕳️ b = c.m_fill.color,
🕳️ 🕳️ r = (a - b) / (b - a);
🕳️ 🕳️ return r == 1 || r == -1;
🕳️ }
};
color_t a(21, 32, 43);
color_t b(49, 60, 71);
auto v = a.isOnColorGrade(b);
https://godbolt.org/z/5E76MW64W
>Плюсы это тот же си в котором данные обернуты в классы а с работа с полями структуры происходит через безопасные методы
На это спасибо, мы вам перезвоним
>Если ты не можешь представить как сишный код переложить на плюсы, то не знаешь с++ и не понимаешь зачем он придуман.
Сказал он с умным лицом и высрал уб.
720x720, 0:14
Для особо одаренных пикрил
>Если пидорастеры что-то не осилили, не значит что это ub.
Тот анон прав на счет юниона, доступ к неактивным элементам юниона UB. пикрил 2
Вообще в твоем случае даже юнион не нужен т.к. у тебя сам алгоритм неверный.
>Для особо одаренных пикрил
Пикрил красноречиво подтверждает что ты залетный и в языке не разбираешься.
>у тебя сам алгоритм неверный.
В чем именно не верный?
>Пикрил красноречиво подтверждает что ты залетный и в языке не разбираешься.
Ухахаха лол, лсина которая не может самостоятельно осилить алгоритм квантования решила вместо признания своей ошибки, дальше закапывать себя, выдавая отборнейший бред.
Но если стандарт языка для тебя ничего не значит, нахуя ты нас тут тогда что-то спрашиваешь, делай как считаешь нужным. Всем настрать вообще на тебя и твои детские поделки.
>В чем именно не верный?
Да иди нахуй, тебе уже тут отвечали в чем.
Тред даунов тут >>> https://2ch.hk/pr/res/3294005.html (М)
Так это логично, ало.
Съеби нахуй отсюда и семенов своих забери.
Да всем похуй на си
Да.
Что "это" ? Попытайся внятно сформулировать вопрос и возможно сам себе ответишь на него.
если ты такой умный то почему задаешь такие даунские вопросы? Тебе в палате поговорить не с кем?
>Доступно лишь в стандарте cpp23 и выше
Кеееек. А раньше не додумались завести? Ой блядь, необучаемые...
можешь свой принт написать с помощью format из 20 стандарта
или можешь библиотеку fmt использовать
жыдбрайнс не предлагать
P.S. на линухе
нет!
Емакс.
QtCreator
> Когда имеет смысл
Когда много больших файлов и нужно чтоб все изменения где то наверху мнгновенно подсвечивали все участки требующие правки.
когда что то на qt формошлёпишь, может qt creator быть полезным
собственно кроме него, иде от жидбрейнс и миллиона текстовых редакторов альтернатив и нет
ну потыкай в дебаггер\профайлеры\гит и посмотри где удобнее с ними работать
>Когда имеет смысл пользоваться IDE?
1. Дебаг. В студии удобно мышкой тыкать и смотреть значения. Для GDB в некоторых редакторах есть интерфейсы не хуже, но там надо почти всегда пердолить, и все равно часто через командную строку с ним работать.
2. Рефакторинг в большом проекте. Через LSP оно работает только для простых случаев, и часто глючит. У джетбрейнса же очень богато все сделано.
3. Плагины для всяких штук. Для студии, эклипса обычно делают плагин под всякие библиотеки, системы сборки для микроконтроллеров, и т.д. Если оно коммерческое и непопулярное, то без ИДЕ там очень много пердолить надо.
Криэйтор довольно убогий, а qmake - жопная параша говна мочи. Проще чисто QtDesigner поставить для формочек, а код писать где удобно. В cmake и студии сейчас есть поддержка Qt, можно с pro вообще не заморачиваться. Криейтор нужен только если под линукс/мак кодишь, и ничем другим пользоваться не умеешь.
>В чем именно не верный?
Цветовые значения - трехмерные, их надо сравнивать как евклидовы дистанции в 3Д (лучше в цветовом пространстве Lab). Твой код работать не будет совсем никак, сама идея сравнивать цвет в целочисленных значениях максимально тупая: между соседними значениями по R целочисленная разница будет в 16 миллионов, а по B - в 256.
Я вроде и не говорил что это хороший алгоритм или что он пригоден для решения задачи того анона, просто привел пример алгоритма который определяет если картинку просто затемнили. Есть конечно более лучшие математические алгоритмы, но они сложные и зачастую избыточны.
Подобные оптимизации нужно делать вручную или это должен делать llvm?
https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0
> или это должен делать llvm
должен, но не обязан, в некоторых случаях даже не способен
так что в некоторых случаях подобные оптимизации нужно делать вручную но это скорее исключение из правил
>должен, но не обязан
Даже, если указаны флаги оптимизации?
>в некоторых случаях подобные оптимизации нужно делать вручную
Мда, существуют десятки разных оптимизаций, еще и комбинировать их нужно. Переписывать код потыщу раз и тестить производительность, такое себе.
Вкатывальщик что ли?
Эти оптимизации делает компилятор, при указании определенных опций либо при указании групповой опции -O1/2
Бывают случаи когда компилятор не может использовать оптимизации потому что в определенных случаях может сломаться программа, для таких есть как отдельные опции типа -fno-finite-math так и групповая -O3 для агрессивного оптимизирования.
Так же компилятору для раскрутки циклов нужно примерно представлять сколько там итераций примерно, для таких случаев можно юзать прагмы для подсказок:
#pragma loop-count(1024)
for (...) {
#pragma loop-unroll(8)
for (...)
}
ну и писать так чтоб компилятору было доступно больше информации, гадать по указателям и состояниям переменных он не может.
Иди уже книгу открой
Нет.
Есть способ отправить это все в видеопамять и производить все вычисления там при помощи шейдерного типа vec4.
>А есть способ кастануть std::vector<uint8_t> в std::vector<color>
Можешь кастануть .data() у вектора.
>А если это конвертер? Нахуя мне OGL/SDL2 в обычной читалке/экспортилке pngшек?
Ну в консольной экспортилке может и не нужно, но если ты ее еще выводишь то есть смысл считать то что ты там считаешь прямо на видюхе
Так есть же божественный vscode, последние 2 года на нем сижу на всех языках ( основной конечно с++, пользуюсь clangd + свой самопальный плагин для всякой мелочевки ).
Раньше сидел много лет на CLion но потом когда осознал настолько жидбреинсы пидарасы слез с этого говна и доволен, вскод лучше и гибче. Единсвенный минус у кода - слабоватый отладчик, но нахуй он нужен если отлаживается все логами.
> GCC делает какие-либо оптимизации
Делает
> насколько он хуже LLVM
Лучше. LLVM есть смысл использовать только если тебе лицензия жмёт, и жопа горит от моих базированных расширений.
А так GCC компилирует и быстрее, и производительнее.
Потому что..?
Почему PsGetProcessPeb нормально объявляется, а PsGetThreadTeb нет?
в driver.h есть только #include <ntifs.h> и больше нихуя
Это как раз ты шиз. LLVM околопроприетарный кусок говна, в котором нахуевертили низкоуровневых слоев подразумевая видимо какую то модульность и универсальность для статических и динамических языков.
По факту имеем второй gcc с непереносимыми фронтендами непригодный ни для чего кроме компиляния бинарников. При этом еще с архаичной внутренней архитектурой, где разработчики языка или архитектуры находятся находятся в крайних положениях от господина компиляторщика, первый ему код на правильном блюде подает (ака LLVM IR), а второй выносит горшки с говном (Machine IR). А llvm-сударь только жует и похваляется смотрите мол как я циклы умею разворачивать, а как я сложение с умножением векторизовал видали?
Да вы очень мудр (говорит фронтенд), а можно я вместо LLVM IR другие представления выдавать скажем Gimple или AST?
Чтооо? Ах ты мразь такая, забыл кто тут хозяин на тебе, на тебе, блядина.
А, блядь, так ёпта, нет такой ф-ции. По инету она лишь в ndk 7-й винды находится.
Примите беженца с iOS, оттер глаза от капель мочи 5 лет это говно ел
Пока думаю вкатиться в связку C++ + unreal engine ну и если что пойду на оборонку если совсем гойда
Мне стал 31 и чувство что тут конкуренции меньше в силу панического страха зумеров при упоминании С++ и все хотят что-то модное молодежное да и в iOS прут всякие зумеры выпускники с универов готовые работать за еду и сильно демпингуют рынок что просто невыносимо да еще и работать они готовы по 16 часов в сутки
>панического страха зумеров при упоминании С++
Ха, лохи!
Мимозумер.
Платят вроде-бы за мейнтейн всяких говнолиб в конторах, а больше тебе тут остальные расскажут.
вот у меня на десятке она там же где и PsGetProcessPeb
Нет нигде никакого дефинишена в том то и прикол был
Проблему решил в итоге тем, что переместил описание PTEB в начало
>Пока думаю вкатиться в связку C++ + unreal engine
Оттер глаза от мочи, чтобы намазать говном лол.
>C++ + unreal engine
мало вакансий, хуй найдешь работу, про минусы работы в каком нибудь геймдеве сам думаю должен догадываться
а если собираешься в десктоп, то там вобще пиздец, qt-формошлёпы хуже жс макак
>мало вакансий, хуй найдешь работу, про минусы работы в каком нибудь геймдеве сам думаю должен догадываться
У нас сейчас не в геймдеве вакансий на анрил, думаю, больше. Геймдев за границу уехал. На анриле делают всякие интерактивные туры, ВР-шоурумы, симуляторы комбайнеров и т.д.
Формошлепаю на qt, дружу с паяльником. Все нравится. Считаю что это вот и есть то самое тру программирование и петушки пишущие бэк для свох говноподелий(или че вы там без железа делаете я хз) должны уважительно привставать, когда я в треде.
Даже от этого поста несёт тру программированиемговнокодом
В одной такой конторе работал, с тремя другими приходилось взаимодействоать
хотя вам я слышал сейчас зп начали сильно поднимать, хоть какой то плюс
>>305948
63 вакансии на всю россию все еще очень не густо
> На анриле делают всякие интерактивные туры, ВР-шоурумы, симуляторы комбайнеров
ну если их вместе сложить то возможно будет больше геймдева, но по отдельности это очень маленькие сферы
>а если собираешься в десктоп, то там вобще пиздец, qt-формошлёпы хуже жс макак
я щас выбирал себе ide решил использовать qt пиздец пиздец пиздец пиздец какое-то ишачное поделие уровня жет брейнс
- по дефолту весит 4гб с какой-то вкрученной говной, отключил вроде стало 1гб
- просит регистрацию с заполнением анальных данных чтобы скачать иде
- при российском ip показывает хуй и не дает ниче скачать
ебать я ахуел с вашей швабодки, вспомнил что хКод можно заюзать под с++ завел его и сижу довольный
Кстати, даже хкод можно просто так скачать без такой анальщины да и с рф айпишника без проблем хоть там и есть куча санкций от эппла
Вендопроблемы. На линуксах, маках одной строчкой из репы ставится.
Под виндой можно через vcpkg установить либы, qtdesigner (это отдельная тулза для лепки формочек), и спокойно работать из студии или вскода.
>qt-формошлёпы хуже жс макак
Зависит от конторы. Есть конторы, в которых, как мне кажется, qt-формошлёпство вышло на высший уровень - огромные проекты с ООП во все поля, дизайн, генерации формочек без использования .ui файлов - прям макакингом не назовёшь, прямо скажем
>а можно я вместо LLVM IR другие представления выдавать скажем Gimple или AST
Я не понял, ты хочешь, чтобы LLVM работал не только с LLVM IR, но и с другими IR?
Нет про то чтоб фронтенды работали не только с LLVM
На самом деле все это нытье только по поводу clang, другие языки вроде котлина, хаскеля и zig и так свои компиляторы на базе llvm-овских кусков нагородили и генерируют во что им удобно.
Ну почему шиз то блять? Хуйню высрал и доволен? Ты объясняй давай.
>Нет про то чтоб фронтенды работали не только с LLVM
Зачем? Насколько я понимаю, почти все создатели компиляторов приходят к тому, что LLVM IR их ограничивает, там каких-то возможностей нехватает, для некоторых оптимизаций надо лезть глубже, и пилить свой форк. Так что фронтенд LLVM делать универсальным смысла особого нет.
Так я об этом и говорю. высрали хуйню которая не работает как задумывалась.
Фронтендщики забили хуй и форкают, а бакендщикам что делать? Им тоже недостаточно того что компилятор высирает но ничего не поделаешь приходится изъебываться.
Элита в плюсах это компиляторщики с докторскими степенями и научными статьями.
А не инфоцыгане.
Конечно, например: опера, десктопная телега, skype, vlc. И только на борде считают qt говном для формошлепства.
Никак не противоречит понятию формошлепства
Ты хоть знаешь сколько всего ахуенного можно на фронте сделать? И что, он от этого меньэее формошлепным стал?
Анончик, расскажи как называет процесс получения изображения прям с экрана? Например когда работает экранная лупа, она выбирает увеличиваемую область с самого верхнего окна, учитывая так-же наложения интерфейсов или окон других программ. Как такие программы получают изображение от монитора и как мне это повторить для себя?
ну или как сформулировать запрос в поиск на стек оверфлоу?
Нах вообще делать какие-то очистки перед выходом? Один хуй память освободится, падаем как при эксепшене и норм.
> "__CMAKE::CXX20" target exist, but it was not provided by the toolchain.
Что это блять значит и почему мне всё нахуй сломало? Пришло время переустанавливать пердоликс?
нихуя. память конечно освободится а вот всякие графические контексты хуйтексты могут и остаться я себе так однажды чето в вулкане наебнул пришлось перезагружать шиндовс
>Как же заебала моя криворукость, рандомно что-то сделал заработало, потом своими культяпками сделал опять какой-то рандом и ФСЁ СЛАМАЛАСЯ.
Дебил, иди руки чини.
Если сборка симейком делает что-то рандомно, то это пиздец. Нах вообще этот мусор нужен.
В вузике и дома пишу с огромнейшим удовольствием на C++, и я не понимаю, почему выбирают прожорливую Java, в которой единственная вменяемая иде платная, или тот же обосанный Go, в котором все надо самому велосипедить.
До божественных крестов пробовал ноду, питон, раст, го и жабу и я нихуя не понял почему этот кал на костылях так нахваливают и облизывают со всех сторон.
Разве нельзя все на свете, включая backend любого уровня, писать на современных плюсах, где безопасность, про которую так любят везде визжать, можно довести до уровня ничуть не хуже, чем на жабе.
Может я чего-то нихуя не понимаю или ит индустрия действительно так сильно зависит от моды? Ведь объективно современные кресты ничуть не сложнее шарпа или джавы.
Ну так напиши что то на гитхаб, кроме лаб для вузика и дома, мбы поймёшь что то
> Безопасность можно довести до уровня джавы
> Не нужно все велосипедить
Очень интересные тезисы, с реальностью конечно не имеют ничего общего
>безопасность, про которую так любят везде визжать, можно довести до уровня ничуть не хуже, чем на жабе.
к 26/27 году государство обязало вычистить плюсы из госухи США.
плюсы стали ненужны, с приходом пидоrustеров.
малолетние дебилы убегают на динамопарашу, потому что бизнес важнее.
в плюсах остались только шизойды, и псы режима.
Индустрия зависит от среднего айсикью по палате, а он довольно низкий, поэтому
>нельзя все на свете, включая backend любого уровня, писать на современных плюсах
Потому что даун-опхуй не осилил написать три буковки в поле "тег".
На ютубе полно тутов 40м-1.5ч, как создать окно и делать в нём всякое, от рисования пикселей до окон внутри окна. Зачем эти говнолибы нужны?
1. Посоветуйте либу для Digital Signal Processing, а то что-то противоречивые либы советуют
2. Почему тред тонет?
>Зачем эти говнолибы нужны?
Например, тебе надо из МРТ скана построить изоповерхность, потом построить разрез и на нем показать плотность цветовой картой. Или у тебя есть 3Д сетка от с результатами от CFD, и надо нарисовать течение газа вокруг объекта. Или у тебя есть данные по странам, и надо на карте нарисовать какие-то пай-чарты для каждой страны. По туториалам с ютуба будешь это делать?
> По туториалам с ютуба будешь это делать?
Возьму питон, а не буду заниматься анальными утехами.
>к 26/27 году государство обязало вычистить плюсы из госухи США.
Им это не поможет, у них проблема не в языке. После первого же аутсорса в Бангалор, старый код на плюсах будет выглядеть как вершина вменяемости по сравнению с тем, что высрут индусы на расте.
>Возьму питон
У которого внутре будет та же плюсовая либа, только теперь нельзя будет залезть в потроха, и сделать что-то не предусмотренное питоновой оберткой.
Мамку свою парализованную перекати. Мы тут до 1500 сидим обычно.
с этим будут проблемы.
Как быть дебилианисту?
1. Qt creator ебаная, неудобная, сделанная через жопу лажа
2. Clion, Eclipse, NetBeans жручий джавакал
3. VS Code костыль, сделанный через жопу(electron),
4. KDevelop вечно ломающаяся хуета
Неужто остается разве что только сосать хуй, пользуясь вимом с плагинами либо же садиться на анальные зонды ради вменяемой IDE? Правда есть еще Zed, который на порядок лучше vs code, но он еще очень сырой; пользуюсь чисто как блокнотом
Clion скачай и мозги не еби. Если ты работаешь, а не хуи пинаешь, то у тебя должна быть достаточно хорошая машина, чтобы запустить 10 clion'ов, 1000 вкладок в хроме и не ныть. Если не работаешь (да и если работаешь тоже), то code oss + компиляция из консольки
>VS Code костыль, сделанный через жопу(electron),
Что значит костыль? Код полноценная IDE которая еще и всяким цлайонам в рот даст.
>Zed, который на порядок лучше vs code
ахах смешная шутка нет
Это дерьмище от нитакусиков написанное на пидорасте, которая нихуя не может, кроме подсветки синтаксиса.
>Неужто остается разве что только сосать хуй
Такому уебищу, как ты - да.
> Код полноценная IDE
Хорошая шутка. Редактор кода это не IDE. Где хотя бы хот-релоад/профилирование? Дебаг тоже говно - в вскоде он примитивный, просто брейкпойнты, даже условие нельзя указать. Поддержки даже С++20 нет в вскоде.
Одним словом - малолетний дебил.
>Где хотя бы хот-релоад/профилирование?
Какой нахуй хот релод на С++, манька? Иди нахуй в свою дотнет парашу за таким.
Профилирование? Дебил умственно отсталый, для этого есть perf.
> Дебаг тоже говно - в вскоде он примитивный, просто брейкпойнты, даже условие нельзя указать
Примитивный твой мозг, а условия в брекпоинтах можно ставить.
>Поддержки даже С++20 нет в вскоде.
Дебилоид, схуяли ты такое высрал вообще? Поддержка С++20 уже сто лет как там есть, и С++23 даже есть.
Блять, серьезно, дебилёнок, покинь этот тред и С++ заодно, ты невероятно тупорылый малолетний недоносок, я тебе 1000% гарантию даю ты ничего не добьешься в карьере с++ разработчика с твоим уровнем интеллекта.
> Какой нахуй хот релод на С++, манька?
В студии уже давно есть для крестов, клован. А ты дальше сиди в текстовых редакторах и пересобирай при каждом изменении кода.
> для этого есть perf
О чём и речь - вместо IDE пользуешься пердольной консолькой.
> Поддержка С++20 уже сто лет как там есть
Как там модули поддерживаются, которые в студии уже 3 года как работают?
>В студии
>в студии
Так и сиди тогда на своей студии, спермаглот форточный, хуль ты ноешь тогда тут, даунёнок.
>вместо IDE пользуешься пердольной консолькой
Точно малолетний дебил. Тебе еще красивые кнопачки надо нарисовать как для умственно отсталых даунов, чтоб ты этим мог пользоваться и не обшиться?
Пикрил буквально ты.
Ты тредом ошибся, дебилоид. Тебе сюда https://2ch.hk/pr/res/3311130.html (М)
И знаешь, что еще самое смешное? Что ты даже со всеми этими свистоперделками останешься нулём, а красноглазый пердолик с консолькой и текстовым редактором будет способен решить любую задачу.
И угадай кого возьмут на высокооплачиваемую должность: тебя недоноска или красноглазика с текстовым редактором?
Я думаю, ответ очевиден.
Так что дружеский совет: забей на С++ ты тут ничего не добьешься, тут много сложностей и много "пердолинга", и как мы уже видели, ты на такое не способен.
> мам, я в интернете видел все крутые прогеры сидят в блокнотах, а еще они все пользуются линуксом, а еще они все говорят что жс и питон это для некрутых, а я крутой. Если я стану фанатиком этих вещей я тоже стану крутым как они?
> всмысле пердолинг конфигов, покупка крутой клавы и срачи в тредах не сделают из меня тру прогромиста??????? ряяя
Лол, даунёнок ты всё коупишь?
Я понимаю, что тебя сейчас переполняет обида из-за совей никчемности и разум пытается найти оправдания этому, что не ты такой, а просто все другие не правильные.
Но не расстраивайся так сильно, может быть даже тебя когда-нибудь наймут джуном в дноконтору, будешь сидеть как блондинка секрутутка и нажимать красивенькие кнопачки как ты любишь.
А вот короткое слово "коуп" может выражать и просьбу о прощении, и пожелание терпения, стойкости,и уверенность в том, что человек обязательно справится. Наиболее близким по значению будет что-то вроде известной присказки "Терпи казак, атаманом будешь".
Соглы, надо ровняться не на каких то борщехлебов показушников, а на реально успешных людей
Возьмём хотя бы нвидия куна, самый успешный и умный в треде, на плюсах давно уже не пишет. Вот пример для подражания
>Возьмём хотя бы нвидия куна
>самый успешный и умный в треде
С чего ты это взял? Тот нвидиа кун вроде что-то тривиальное делал там. Тем более откуда ты знаешь где другие работают, что делают и какую квалификацию имеют? То что тут в треде 95% долбоебов даже не работающих на плюсах это факт, конечно среди них даже обычный мидл будет самым успешным. Но это так себе заслуга.
Это знаете как парадокс красавицы и её уродливой свиты, на фоне своих подружек даже самая обычная тян будет касаться ахуеть какой красивой, поэтому они так и делают, создавая себе выгодное окружение. Так же и тут, если этот тред использовать не как туалет, куда можно насрать, то это может означать только одно - компенсация своих комплексов неполноценности за счет лоу айкью обезьян и вкатывальщиков.
Так что пошли вы нахуй, я сваливаю.
За многие месяцы тут ни одного полезного поста не было, что уж говорит об конструктивных обсуждениях С++ и смежных этому тем.
Сидеть тут нормальному разрабу = деградировать среди даунов
начинаем
До завтра, лол.
гоя нельзя монетизировать когда он пишет на glfw.
Сам то понял что сказать хотел?
> A() { try { код } catch (...) { } }
То размер бинарника как положено 10 кб. А если вот так:
> A() try { код } catch (...) { }
То он весит 130 кб. Что там блять происходит, что он аж 120 кб высрал?
В том то и дело, что код генерит он одинаковый. Если этот класс не использовать, он его вообще оптимизирует, его нет в бинарнике. Но 120 кб насрано.
>Посоветуйте либу для Digital Signal Processing
в эти годы ответ зависит от того на каком железе ты это хочешь запускать, тк у нас ренессанс специализированных железяк и процов
Неиронично но это будут упраженения из K&R и упражнения из книжки страуструпа "язык программирования с++ 4е специальное издание" (но НЕ других книжек страуструпа).
хуй знает, вот если подумать что если твоя команда решила писать софт, например, для реконструктивной томографии, то ты так будешь думать думать и придешь к выводу что лучше всего такое писать на плюсах
Спасибо
блять, как же лень это всё понимать.
Ле классик
Там есть такая хуйня
class Message {
friend class Folder;
public:
void save(Folder& f);
private:
std::set <Folder*> folders;
};
void Message::save(Folder& f)
{
folders.insert(&f);
f.addMsg(this);
}
Вот этот момент в функции сейв folders.insert(&f); приводит к ошибке при закрытии программы. И я чет не очень понимаю, почему она выскакивает. Выглядит как будто уничтожается указатель, переданные в инсерт и при попытке очистить память после окончания программы происходит ошибка.
Спасибо, братишка. Разобрался
зарабатываю на qt галере, какие вопросы?
> В РФ на плюсах совсем грустно все?
грустно конечно, но в целом по айти сейчас так, у кого из знакомых не спросишь все около джуны, везде грустно
> в целом по айти сейчас так
В девопсе даже лучше сейчас стало, когда свинявые убежали из рашки, а западные сервисы стали отваливаться от бизнеса. Можно выбирать из кучи вариантов, в том числе на полной удалёнке. Рубль конечно тонет, но и зарплаты ползут вверх норм, явно лучше нищенских 130к в крестах.
Нормально если аутсорсишь на запад либо разрабатывает графику. В остальной сфере мрак. Платят столько же, сколько фронтэнд макака после онлайн курсов.
Как тебе такая вакансия?
Москва. полный день, 5/2, удаленка
З/П: 160-200к
Должностные обязанности:
- Разработка и проектирование ПО контроллера автоматики ОВиК
- Разработка схемотехники и топологии печатных плат
- Разработка КД и пользовательских инструкций свободной формы (нет ЕСКД)
- Сопровождение и подготовка к производству
Знание/опыт:
- Уверенное владение C/C++
- Навыки работы с Git
- Навыки работы с CMake
- Знание FreeRTOS
- Опыт в разработке многофункциональных устройств с пользовательским интерфейсом
- Опыт в разработке промышленной автоматики
Условия труда:
Небольшая компания, находящаяся в интенсивном росте. Возможно гибко договориться о условиях сотрудничества.
АО «НТЦ «Атлас», Москва, полная занятость
от 180000Руб
Должностные обязанности:
- Разработкой управляющих прошивок для высокоскоростного шлюза VPN (10Gbe, PCI Express);
- Разработкой модулей ядра linux для взаимодействия с аппаратной частью маршрутизатора;
- Участие в проектировании ПО;
- Разработка и тестирование ПО;
- Документирование собственной разработки;
- Отладка и профилирование ПО на оборудовании.
Что нужно знать:
- Знание принципов работы микропроцессорных RISC ядер;
- Умение пользоваться git и ведения работы в gitlab;
- Понимание принципов работы компилятора, компоновщика;
- Понимание принципов автоматизированного тестирования ПО;
- Понимание принципов работы ядра linux;
- Опыт работы с интерфейсами UART, SPI, I2C;
- Умение работать в команде.
Будет плюсом:
- Опыт проектирования встраиваемого ПО;
- Опыт написания модулей ядра linux;
- Базовые знания схемотехники;
- Умение читать Verilog/SystemVerilog будет плюсом;
- Опыт работы с сетевой и pcie подсистемами.
АО «НТЦ «Атлас», Москва, полная занятость
от 180000Руб
Должностные обязанности:
- Разработкой управляющих прошивок для высокоскоростного шлюза VPN (10Gbe, PCI Express);
- Разработкой модулей ядра linux для взаимодействия с аппаратной частью маршрутизатора;
- Участие в проектировании ПО;
- Разработка и тестирование ПО;
- Документирование собственной разработки;
- Отладка и профилирование ПО на оборудовании.
Что нужно знать:
- Знание принципов работы микропроцессорных RISC ядер;
- Умение пользоваться git и ведения работы в gitlab;
- Понимание принципов работы компилятора, компоновщика;
- Понимание принципов автоматизированного тестирования ПО;
- Понимание принципов работы ядра linux;
- Опыт работы с интерфейсами UART, SPI, I2C;
- Умение работать в команде.
Будет плюсом:
- Опыт проектирования встраиваемого ПО;
- Опыт написания модулей ядра linux;
- Базовые знания схемотехники;
- Умение читать Verilog/SystemVerilog будет плюсом;
- Опыт работы с сетевой и pcie подсистемами.
Ещё и кидаются на эти самые доступные вакансии как караси на червя.
Нет уж, в стране где все хуево с инженерией и являющейся ресурсной державой, в плюсах ловить нечего. Относится ко всему постсовку уж.
Но сделал напрямую, к сожалению не вызывается и в бинаре нету соответствующего символа. Как это правильно обставить чтобы было как я хочу?
Если плюсы, а не си, то можно сделать конструктор у глобальной переменной. Они вызываются до main. Главное, чтобы линкер потом ее не отрезал как неиспользуемую.
>Нет уж, в стране где все хуево с инженерией и являющейся ресурсной державой, в плюсах ловить нечего
Просто продуктов мало, зарубежные компании ушли, на плюсах теперь пишут во всяких НИИ, и это обычно приложение к какой-то железке. Соответственно, у кодера там зарплата примерно как у инженера. А у инженеров во всем мире зарплаты ниже, чем в ИТ, хоть в Штатах, хоть в Европе.
Ананасы, хочу написать отображение ртсп видео на оранже с минимальной возможной задержкой, но совсем не понимаю, какими средствами, куда двигаться, на что смотреть. Может, встречали минимальные подобные проекты с открытыми исходниками.
Мне эту лабу завтра сдавать
Я бы решил за тебя за деньги, если бы ты не в последний момент все делал
у меня военник с категорией В
Лабы идут нахуй.
Имеется map и цикл, который итерирует по ней и может добавлять в неё элементы.
Нужно сделать так, чтобы цикл итерировал только по тем элементам, которые существуют в map на момент начала цикла.
Есть ли какой-то изящный способ это сделать без костылей вроде дополнительного вектора указателей и тому подобного?
У нейронки спроси
При этом ебли там в десять раз больше чем у фронтэнд макаки/CRUDошлепа и значит надо больше - схемотехнику, физику, уметь вычислять в маткаде сигналы и преобразования, знать сетевые протоколы, ЕСКД, иметь базовые знания Unix систем.
Но зато как говорят кабаны в эмбеде есть ДУША и задачи интересные, а в 40-50 лет тебя не пропрут с работы в яндексе как старого скуфа.
Кому вообще он нужен? Туда студентов набирают в основном, и платят соответствующе. Веб на крестах - это уже как анекдот. Я бы в России на сишке/крестах в военку целился, там хоть интересно будет. Вон в Ланцетах аж Нвидия Джетсон разработанная на деньги Дарпы, лол стоит для машинного зрения.
>без костылей вроде дополнительного вектора
>Завести вторую мапу/сет/вектор
Кек.
Ладно, в принципе так и сделал, спс.
Это не костыль
Потому что ты не писал крупнее чем лаб1 и лаб2.
Когда у тебя крупное приложение оно покрыто абстракциями для решения разного типа задач и твоей целью становится бизнес логика, трахаться с указателями или баран-чеккером в этот момент меньшее что хочется.
Что за форс?
В Яндексе после IPO в 11 году корпоративного маразма все больше с каждым годом. Им сейчас нужен исполнительный винтик со знанием стандартов и паттернов, который будет таски закрывать, и выдавать 150 строчек энтерпрайз кода в день. Человек-оркестр с пика (паяльник, эмбед, UE, Qt) там может только куда-то в рисеч устроится, но там уже своих кодеров хватает, у которых при этом еще научные степени и статьи. Такому надо в стартап или небольшую контору, которая за берется за все, что закажут: сегодня ВР на анриле, завтра робохомяк, потом дроны какие-нибудь с машинным зрением.
Как минимум в военке тебя засыпят кучей разного железа, а не на одном ATmega пердеть годами. Писать у кабанов под мегу - это реально днище.
Мой знакомый на Юнити работу найти не мог, все что было доступно - мобильная параша 3 в ряд. Всякие норм проекты (даже инди) требовали 5+ лет опыта либо имели под 500 откликов за пару дней.
Сейчас такого уже никогда не будет, увы. Никто не кинет тебе предложение работы просто по факту решения олимпиадки. Никто не будет тебя хантить за красивые глаза. Дефицит кадров уже давно прошел, тем более на плюсах.
Сойслоп для гоев
Говно. Проприетарный, с хуёвой совместимостью со всем, не кроссплатформенный. Какой-то васяноаналог свифта с синтаксисом питона.
не боги горшки обжигают, в данном случае нужен драйверописатель под линукса
если уже умеешь кодить на си, то читаешь пару книжек по ядру линупса и драйверописанию, делаешь пет прожект и все в принципе ты готов
А язык Верилог и базовые знания радиолюбительства (схемотехники) зачем? Небось будут заставлять пилить схемы и FPGA. Человек оркестр
Мне когда 24 года было, я только начал познавать удивительный мир плюсов лол. Теперь уже 32 и думаю а стоило ли.
не, там у тебя будет коллега (коллеги) электронщик, но нужно просто понимать че он тебе будет говорить;
опять же достаточно прочитать пару книжек по теме, это блядь займет неделю другую максимум
а так на таких должностях 90% задачь если обобщить это ввод-вывод, сеть или файловая система, точно так же как по ява-макак говорят что они тупо круды пилят, тут то же самое
Так это конкурент неуправляемых языков.
Какие задачи нужно тебе решить, которые не может решить современный шарп с ансейвом или со спанами или рефами?
Я уверен что натягивая какие-то гига-либы типа Qt ты просаживаешься по производительности до какой-нибудь авалонии.
Я сейчас один эмбеддед и системный код пишу. Тут никому сишарп не нужен. Меня в дырку сдадут если начну писать код на нем, причем неважно для чего - для микроконтроллеров, драйверов или процессоров
Так паяльники сишку юзают, как плюсового монстра с рантаймом в железку засунуть?
Здравствуйте анончики.
Решил потрясти старыми мудями. Изучал плюсы раньше и решил вот вкатиться повторно, может что и получится.
Так вот вопрос такой, тут на гитхабе из последнего Бьерн СтрауструпПрограммирование. Принципы и практика использования C++2016. А есть что-то поновее или этого достаточно для ньюфага, чтобы подливы не напустить в штаны?
Или что-то еще менее мудовое, типа годного видеокурса с торрентов, мне все-таки не прямо с нуля учить а вспомнить старое.
Ну и второй вопрос куда после этого двигаться, что еще почитать/смотреть?
Уже много лет эмбеддед на с++ пишут. ARM, STM32. Доброе утро.
На Си уже никто кроме петровичей не пишет, которые на совковых НИИ работают.
https://www.learncpp.com/ читай, делай отжимания, присед, на турничке виси. Параллельно сразу книгу по доменной области бери, которая тебя интересует и дрочи до посинения свои проекты или что ты там хочешь сделать.
Как минимум половину из этого я и так знаю, а есть какое-нибудь русскоязычное комьюнити в дискорде? А то у того же страуструпа половина книги водичка, а из 800 оставшихся страниц мне нужны примерно 500.
Спасибо, гляну
>Вот на STM32/ARM все на реальных плюсах пишется.
Под STM с гитхаба какую либу не откроешь, там почти всегда сишка, иногда адовая вроде имитации темплейтного списка макросами. Под ардуиной чисто по ощущению плюсов больше. Но я не настоящий сварщик, это вроде хобби.
>шарп с ансейвом
можно, делай
на явке тоже можно
тут уже скорее респект тебе что ты знаешь что не обязательно пилить либу на сях-крестах чтобы потом ее вызывать из манаджед кода, когда можно ансейв расширениями попробовать сделать и не просесть в производительности/реакции
>куда после этого двигаться
помечаешь на своем районе все пятерочки-магниты, смотришь с задних дворов на какие помойки они коробки выносят и в какое время обычно, формируешь маршрут обхода, ну и пара часов у и тебя всегда будет что покушать! ну а чем будешь заниматься в остальное время уже тебе решать
да мне поебать, я и так 3д-шником работаю, в бабле не нуждаюсь
>формируешь маршрут обхода
Сложность: medium
Антон - опытный программист на С++. Он запомнил на своем районе все пятерочки и помойки, куда из пятерочек выбрасывают продукты, а также точное время выброса.
Помойки располагаются по углам кварталов: координаты помойки x y означают что до неё от точки 0 0 идти х кварталов на восток и y кварталов на север. Антон проходит один квартал за одну минуту и может ходить только по улицам, так что время составит х + у минут.
Находясь рядом с помойкой Антон получает 1 единицу продуктов в минуту. Но конкуренты не сидят сложа руки, поэтому через 10 минут после выброса все продукты разбирают, независимо от того, находится Антон рядом или нет. Таким образом с одной помойки можно добыть 10 единиц, если прийти ровно в момент выброса.
Помогите Антону собрать как можно больше продуктов, чтобы он мог посвятить освободившееся время программированию на С++. (он выходит из дома в t=0 минут, и его дом находится в точке с координатами 0 0)
Входные данные:
N - количество помоек
следующие N строк:
два числа xi yi - координаты i-й помойки
M - количество пятерочек
следующие M строк:
два числа ki - номер помойки, куда из i-й пятерочки выносят коробки (нумерация с 0) и ti - время в минутах, когда это происходит
Выходные данные:
P - максимальное количество продуктов, которое Антон сможет добыть за один обход.
Ограничения:
0 <= M <= N <= 1000
-1000 <= xi, yi <= 1000
0 <= ti <= 1000
auto pc = &a;
const double ((pd) [3]) (const double , int) = &pa;
Это блять вообще нормально? Так реально пишут?
Имею класс-интерфейс для окон в программе, массив указателей на который дёргается для рендера и всяческого обновления.
Узнал что оказывается можно не выводить отдельной кнопкой в интерфейс показ-скрытые окна, а передать в функции на открытие окна в ImGui указатель на бул, регулирующий видимость окна, и тогда у созданного окна появится кнопка для закрытия переводящая переданный бул в false.
Вопрос - почему я иду нахуй? Базовый класс ведь для меня публичный, чому я не могу его приватные члены использовать если он для меня публичный?
Бля, затупил, спасибо.
Для меня это все выглядит как малопонятная ебанина из символов. Объяснения из книги понятны, но без них это похоже на лютый говнокод
> Базовый класс ведь для меня публичный
Нет, он публичный для других. Приватные поля базового класса приватные для всех.
Так и есть. Но это нужно понимать, вдруг прилется такое писать
Чтобы значение k при инициализации было = 0
Ты неправильные вопросы задаешь: не что означает, а зачем это было сделано? А сделано это было с целью software obfuscation, чтобы челики подобные тебе тратили свое время (и жизнь) на разгадывание ребусов, а не на решение практических задач.
В точку. Массив указателей на функции, которые принимают другие указатели
В точку. Массив указателей на функции, которые принимают другие указатели
Но зачем?
Вот я стал плюсы после c изучать. И заметил, что C в целом лаконичен, а вот в c++ зачем-то запихивают все и вся в надежде, что хоть какие-нибудь конструкции будут использоваться.
Константин Владимиров как-то говорил, что много кто считает, что в C++ есть лишние вещи, но на самом деле у каждой мелочи есть своё предназначение и место в языке.
Вот какие конструкции ты считаешь бесполезными?
ну смотри, вот ты наверное не используешь плюсы в огромном проекте, вот тебе и кажется что многие конструкции лишние
гарбадж коллектор наверно имел охуительно важное предназначение так жаль что его выпилили да жозенько а че делать такова жизнь
хорошо что сейчас точно ничего ненужного не осталось
главная проблема с++ сообщества разработчиков языка это то что они концентрируются на мелочах, причем тратя на реализацию таких фичей гигантские усилия
при этом то что действительно нужно было сделать, чтобы хотя бы удержать на какое то время часть рынка, не делаются
к примеру, не захотели работать дальше над опциональным сборщиком мусора в языке а о том чтобы стандартизировать abi и вообще не хотят слушать, по итогу проебали весь энтерпрайз сектор а сейчас проябывают и все остальное помаленьку
>Константин Владимиров
Алсо, поменьше уважения к таким челикам. Потому что если ты не из мифи или бауманки, то ты для них будешь хуже говна на тратуаре, в лучшем случае брезгливо обойдет, если заметит вовремя. А может и наступить.
Двачую
Хочу попробовать написать экранную лупу.
Подскажите пожалуйста как или через что можно получить картинку с экрана? Виндовская лупа и Magnifixer получают картинку с самого верхнего окна из всех открытых. Даже игры в режиме полноэкранного окна воспринимает.
Хз даже как это гуглить. C++ screen capture?
Превратить его в число.
Через UB.
Классическая сишка
лупу-залупу
Парсинг текстовых файов звучит странно. Под твое описание подходит вообще любая программа на плюсах которая что либо из внешнего мира в виде текста читает. А так, бери курс по формальным языкам
норм ли он как аналог конкретно для писюgnuкс?
Пиратство.
Нормально, это полноценное иде. Но выглядит как говно, поэтому если ты сидишь пирдишь на стуле и просто пишешь код и конпилируешь то для этого и обычного вскода хватит
Как редактор кода не очень как IDE збс
Особенно заебись что qtсreator сам корректный cmake генерирует, его остается только подправить ну и дописать правила для подкаталогов и все.
Куда душа пожелает - в дворники, в грузчики, в кассирыб в штурмовики.
Выбор вакансий большой.
>Я бы в России на сишке/крестах в военку целился, там хоть интересно будет
Каким образом вообще можно в военку попасть?
По объявлению, без шуток. Ждёшь годами когда появятся места в какую-нибудь военную корпорацию, можешь заранее с отделом кадров наладить контакт и оставить свои контакты на будущее, там как в совке бабки сидят, напоминать о своём существовании условно раз в пол года. Это ничем не отличается от попадания на завод, просто заводов много, а кодеров в военку много не надо. Я с конструкторским бюро Туполева пересекался, туда все ровно так и попадали. Из минусов - скорее всего будешь невыездным.
Завод
Если ты топ 5% то хоть куда, яндексы, yadro, военка, геймдев
Если ты обычный чел, то qt-формошлёпство. Если хорошо алгосы позадрочишь то можешь пойти в яндекс, но там будет обычный бэк на плюсах, стоит ли оно того - думай сам
ну я же образно выражаюсь, смысл ты понял
using it_t = std::conditional_t<std::is_const_v(*this), const_iterator, iterator>;
Но это не компилируется, потому что this нельзя вызывать не в теле методов. К тому же, непонятно, будет ли this иметь тип с const или нет. Это вообще возможно сделать?
Как ты собрался обращаться к экземпляру объекта, который не существует при компиляции, шиз?
> константным или нет
Используй constexpr метод и внутри делай if consteval.
> Ты про это?
Да, в том числе, но смысл в том, чтобы 2 раза не писать 2 метода, которые делают одно и то же, но с разными типами
> Как ты собрался обращаться к экземпляру объекта, который не существует при компиляции, шиз?
То есть это только в рантайме можно узнать, или как? Сори если это тупой вопрос, мне это не очевидно
> Используй constexpr метод и внутри делай if consteval.
Вот я что-то похожее написал, но в обоих случаях выводятся нули:
struct S
{
constexpr bool objectIsConst() const
{
if constexpr(std::is_const_v<decltype(*this)>) return true;
return false;
};
};
int main()
{
S s1;
std::cout << s1.objectIsConst();
const S s2;
std::cout << s2.objectIsConst();
}
Не вкурил по итогу как использовать Winedbg, но смог снюхать один из дампов, неполный, но хоть какой-то.
А что мне собсна с этим дальше делать? Не сидеть-же ебаться с IDA, может как-то студии можно эти адреса скормить и человеческие ссылки на исходники получить, или тут нету нужной инфы?
Побитовые операции в процессорах есть только над 32битными числами. 64+ это уже при наличии векторных расширений вроде mmx/sse
В любом случае указатель это тип задаваемый операционной системой, он может быть 32/48/64 битным или вовсе 96/128 битным дескриптором
Да, но только через UB.
#define P1 23
#define P2 32
#define P3 20
Теперь пусть где-то вызывается таким образом функция:
f(P1,P2+P3), что аналогично f(23,32+20).
Вопрос: 32 + 20 будет складываться на этапе работы gcc/g++ или это будет уже складыватсья на железе в процессе выполнения программы?
Не понял к чему тут макросы, они буквально ни на что не влияют в данном случае.
Это обычный constant propagation, не уверен, что по стандарту компиляторы должны это делать, но все современные это точно сделают в compile time.
Нет - это ссанина коня. Некоторые действительно любят ссанину коня, но норм челики пишут без этих ебаных звёздочек, за исключением ситуаций низкоуровневой работы с памятью. Юзай контейнеры, их рефы и move семантику, и пизди всех, кто до сих пор мыслит поинтерами, как C-макака
https://www.youtube.com/watch?v=Ebz4ev_B2ec
Челик из разработчиков стандарта сделал публикацию с названием "UB Question" и его забанили за то что название кому-то напомнило фразу австрийского художника "еврейский вопрос". Теперь все смеются над тем что UB это жидовское изобретение.
> {
> adds,0 %r28, 0x1, %r28
> adds,1 0x0, 0x0, %r9
> mmurw,2 %dg16, %dam_inv
> }
делай mmurw,3 и %dam_inv
https://www.youtube.com/watch?v=cSTIQU9WPso
чтобы всё работало с кнопочек в иде.
cmake, vcpkg, googletest.
я вчера пол дня ебался, либо иде не видит тесты,
либо проебываеться линковка.
жпт не умеет в такое.
как сделать нормальную структуру по фичам с TDD?
завёл.
Между тем в нашей реальности в С++26 придумали залупу "valueless after move". Это типа как null у указателей, но у переменных. И эти шизы предполагают что мы должны теперь чекать значения на валидность, так же как деды чекали указатели на null. Логика у этих шизов такая - переменные не могут быть null, поэтому выдумаем новую хуйню под названием valueless. А обращение к valueless это естественно UB, как же по другому. Боров-чекер изобрести или его альтернативу - это для пидоров.
Пока чуханы не решат дропнуть совместимость с сишкой так и будем жрать вот такой пиздец.
То есть не самый жирный объект найти, а скорее самый частый
уже ядро допереписывал, пидорастер?
> Между тем в нашей реальности в С++26 придумали залупу "valueless after move".
Ты это сам придумал? Оно не гуглится.
Это сишарпер-пидорастер-спермораб пришел пояснять за мув вызывающий деструктор. Скорее всего он вообще к программированию не имеет отношения просто срет сидит, в разные треды причем.
> Both indirect and polymorphic have a valueless state that is used to implement move. The valueless state is not intended to be observable to the user. There is no operator bool or has_value member function. Accessing the value of an indirect or polymorphic after it has been moved from is undefined behaviour. We provide a valueless_after_move member function that returns true if an object is in a valueless state.
Не ну а что, одним UB больше, переживём. Язык по дизайну UBлюдочный.
По отношению к кому?
Мы так до рейта жсонов докатимся.
> #include should not be used in a module unit (outside the global module fragment), because all included declarations and definitions would be considered part of the module. Instead, headers can also be imported as header units with an import declaration:
Как это должно заменить pch, как мне сфмл тот же подключить с их помощью?
имеется еще знание JSON, YAML. За 300к/наносек возьмете?
>cpp
>h
Kek. Ты там по книгам 99 года учишься. Открой репу Гугла, что ли, посмотри. Норм челики юзают cc. Заголовки для педиков
>да не хочу я этих пидаров кормить !!1
C++ мусор слабее JS-макаки, спешите видеть. Давно уже есть способы накатить патч и не платить, которые даже JS-мартыхи осилили
<iostream.h>
ты с нихуя весь стандарт написания LLVM и их репозиторий в пидоров записал? может это ты пидор?
как в вузовских лабах учили писать так и буду, не вижу смысла перекатываться
в сурс файлах обязательно.
>учусь на 1 курсе в хорошем вузе
>в хорошем вузе
>у пети было 777 1
>он решил распечатать машу
>напишите это на плюсах с динамическим управлением памятью
>в хорошем вузе
Треды или корутины надо использовать что бы добавить васю параллельно распечатывать другой оутпат? А то из задачи непонятно.
Пиздец короче
Я честно сам не знаю, но по идее без корутин(ов) можно обойтись. Вуз - ИТМО.
изи катка O(N * M) https://godbolt.org/z/b87G1Ee1c
10 лаб решать не буду даже за отсос совсем там ёбу дал давай сам дальше сырочек удачи крч
че первый раз олимпиадную задачу видишь
как продвигается вкат в кресты без дрочения литкода не верю что ни разу на собесах не давали
Ты бы хоть лекции повторил пропущенные. Это классическая задача на поиск прямоугольника максимальной площади. 99% вы такую разбирали на практике
А там, квадрат. Так даже проще