Вы видите копию треда, сохраненную 12 июля в 06:17.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
⚹ https://github.com/sosachbot/cppthreadhat
⚹ Для кусков кода: https://0bin.net/
Ответы на вопросы:
⚹ https://en.cppreference.com/w/
⚹ https://www.cplusplus.com/reference/
Для указателей: ⚹
Прошлый тред: >>3012308 (OP)
Все заклинания про "rvalue бадабум lvalue уга-чага" я уже знаю. Но без этих заклинаний, что конкретно там происходит?
В конечном итоге это же манипуляции с указателями на объект?
Ты кастуешь lvalue reference в xvalue reference
Когда компилятор видит xvalue reference он понимает что время жизни объекта скоро истечет, так что он может спокойно ему мувать не копируя
Физически с референсов ничего не происходит, мы просто в тип помещаем информацию о времени жизни объекта
https://youtu.be/Bt3zcJZIalk?si=mGjNlYqMPtsZ3rsX
> ему
его*
Так. Например у нас создался объект где-то в скопе (пусть в функции).
Если мы передадим просто ссылку на него куда-нибудь в другой поток, то при выходе из функции он разрушится и другому потоку будет плохо. Копировать мы тоже не хотим - это ДОРОГО.
В прежние времена такой объект создавался через new() и указатель передавался в другой поток и там потом жил пока его не делитнут.
И вот мув решает эту проблему без использования указателей.
Это верный сценарий применения мува?
И спасибо за ответ!
Да, мув примерно за этим и нужен - подсказать конпелятору что объект больше не нужен и можно передать владение его данными другому.
Ну всё, значит я продрался через заклинания про рвелью к пониманию. Спасибо за ответы.
Вся эта бодяга в итоге для того, чтобы убрать использование new, delete и указателей.
И да, я динозавр, который сидел себе пердел много лет на С++, а тут доебались рекрутеры, пошёл на собес, а на собесе дрочат мув. Выяснилось, что этот самый мув вообще выпал нахуй из моей практики.
Ну ничё, вроде подтянул, немного практики, и к следующему приходу рекрутеров буду готов.
>Короче, расскажите что конкретно происходит при std::move.
Ничего не происходит. Но сначала нужно это понять.
>Вся эта бодяга в итоге для того, чтобы убрать использование new, delete и указателей.
Нет. Подумай еще.
То есть
MyFrame *frame = new MyFrame("Моё приложение"); сейчас отображается как пикрелейт.
Меня заебало каждый текст переводить в wstring. Я вот даже в JSON храню информацию и достаю оттуда как string, потом перевожу в wstring, чтобы использовать в wxwidgets. А потом сохраняю базу и опять wstring перевожу в string.
И нихуя непонятно - пишут, что wxwidgets поддерживает юникод. А почему тогда символы вместо русских букв? Это не юникод?
Как? Ты про формат исходного кода?
Проблема не в этом. Вот, пожалуйста код и содержимое файла - та же фигня.
std::ifstream t("C:\\testfile.txt");
std::string str(std::istreambuf_iterator<char>{ t }, {});
MyFrame *frame = new MyFrame(str.c_str());
Где можно включить этот UTF-8?
Незнаю где спросить, но мне кажется win api это гдето в вашем треде. Кароче пишу универсальный конфигуратор для ини файлов на Autoit, практически сделал все на 80%, но блять столкнулся с банальной проблемой, немогу сделать скролинг и примеры внятные не гуглятся, может что подскажете?
>Что сказать-то хотел?
Да не, просто интересно. Первый раз вижу человека, пишущего на этом.
>>102519
>И нихуя непонятно - пишут, что wxwidgets поддерживает юникод. А почему тогда символы вместо русских букв? Это не юникод?
Ты поиграйся сначала с Windows Console приложением - наступишь на те же самые грабли. Нагугли как кодовые страницы переключать. Сделай по аналогии то же самое при работе с этой либой. Может быть этого будет достаточно.
>>102545
>Где можно включить этот UTF-8?
Консоли вот так:
#if _WIN32
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
#endif
DВозможно этого будет достаточно.
>>102734
>немогу сделать скролинг и примеры внятные не гуглятся, может что подскажете?
Есть несколько методов, но они относятся к пересчёту координат. А так твой скроллбар должен кидать события. Как спроектируешь - всё в твоих руках.
Вообще минимум событий, это клик по стрелкам, клик по области выше или ниже скроллбара. Можно добавить событие перетаскивания скроллбара.
Реализовать тоже можно разными способами - можно в одном окне и самому считать и рисовать, но проще и чуть-чуть медленне (незаметно для глаза) будет под каждый элемент скроллбара своё окно.
Затем тебе придётся создать нечто вроде большого виртуального окна, которое будет ловить события от скроллбара. И тут тоже варианты - самом проверять позицию этого виртуального окна и учитывать позиции при отрисовке контролов, или отдать это оконному менеджеру операционной системы.
Как быстрее и правильнее - не знаю.
Помимо этого, возможно, понадобится как-то анализировать оченредь сообщений и удалять из неё промежуточные сообщения с информацией о перетаскивании скроллбара мышью, потому что такие события приходят очень часто и картинка будет или неприятно дёркаться, а на слабом железе может перерисовываться уже после перетаскивания.
Иными словами скроллбар это сложный элемент и большой полёт для творчества и фантазии.
>Что сказать-то хотел?
Да не, просто интересно. Первый раз вижу человека, пишущего на этом.
>>102519
>И нихуя непонятно - пишут, что wxwidgets поддерживает юникод. А почему тогда символы вместо русских букв? Это не юникод?
Ты поиграйся сначала с Windows Console приложением - наступишь на те же самые грабли. Нагугли как кодовые страницы переключать. Сделай по аналогии то же самое при работе с этой либой. Может быть этого будет достаточно.
>>102545
>Где можно включить этот UTF-8?
Консоли вот так:
#if _WIN32
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
#endif
DВозможно этого будет достаточно.
>>102734
>немогу сделать скролинг и примеры внятные не гуглятся, может что подскажете?
Есть несколько методов, но они относятся к пересчёту координат. А так твой скроллбар должен кидать события. Как спроектируешь - всё в твоих руках.
Вообще минимум событий, это клик по стрелкам, клик по области выше или ниже скроллбара. Можно добавить событие перетаскивания скроллбара.
Реализовать тоже можно разными способами - можно в одном окне и самому считать и рисовать, но проще и чуть-чуть медленне (незаметно для глаза) будет под каждый элемент скроллбара своё окно.
Затем тебе придётся создать нечто вроде большого виртуального окна, которое будет ловить события от скроллбара. И тут тоже варианты - самом проверять позицию этого виртуального окна и учитывать позиции при отрисовке контролов, или отдать это оконному менеджеру операционной системы.
Как быстрее и правильнее - не знаю.
Помимо этого, возможно, понадобится как-то анализировать оченредь сообщений и удалять из неё промежуточные сообщения с информацией о перетаскивании скроллбара мышью, потому что такие события приходят очень часто и картинка будет или неприятно дёркаться, а на слабом железе может перерисовываться уже после перетаскивания.
Иными словами скроллбар это сложный элемент и большой полёт для творчества и фантазии.
Ты ничего не понимаешь и вопросы все тупые: "как отрубить себе ногу и выколоть глаз?"
Объясняю.
Слово "юникод" может означать разные вещи.
С точки зрения обывателя/пользователя, юникод это буквально "UNI CODE - УНИверсальная КОДировка", кодировка включающая символы всех языков, чтобы не надо было её переключать для разных языков - одна кодировка на всех. Любая такая кодировка называется юникод, хотя они бывают разные, но в www и далее везде, сейчас стандартом является UTF-8.
С точки зрения программиста, юникод это используемый тип данных.
Типов только два: char и wchar_t
1. char - это узкий символ (1 байт). Байт очевидно не юникод, т.к. байт не может вместить в себя все символы. Однако, есть кодировки позволяющие при необходимости делать символы из нескольких байтов если не влезают в один. В таких кодировках разные символы имеют разную длину, такие кодировки называются "мультибайтовые", например UTF-8.
2. wchar_t - это широкий символ (2 байта) юникода кодировки UTF-16.
Таким образом, юникода бывает два:
1. Мультибайтовый UTF-8 - char
2. Юникод UTF-16 - wchar_t
char - не юникод, а мультибайт, но может быть и не мультибайт не поддерживающий все языки, ты просто никак не узнаешь, байты char везде одинаковые, под ними может быть любая байтовая кодировка, как юникодная, так и нет. char это пук в воздух ничего не гарантирующий, то есть на практике гарантирующий кракозяблы. Пользуются char только дебилы говноделы желающие своим юзерам говна из кракозяблов, потому что пользователь обязательно получит кракозяблы когда программист серет сам не зная чем из char-ов. Такой char-похуизм работает только в линуксе, потому что там вся система однозначно настроена на UTF-8. В винде не прокатит, там не так, ты не можешь ради своего высера заставлять пользователей ломать свои системы переключая их на UTF-8 как линукс. Линукс это параша, если хочешь линукс, пиздуй в линукс, если же делаешь под винду - делай как в винде положено, иначе сделаешь говно и все будут страдать, включая тебя самого.
wchar_t - это юникод UTF-16 на котором основана винда начиная с Windows 2000, то есть всегда. Говоришь Windows, подразумеваешь wchar_t UTF-16. Всё четко, просто, однозначно, никаких кракозяблов быть не может, никакие настройки системы ничего не сломают, потому что юникод в винде сделан как надо, без неопределенности как с char в линуксе. Винда вся устроена на UTF-16 (wchar_t), поэтому в винде всегда надо пользоваться wchar_t, других вариантов просто не существует и не нужно. Всё где не wchar_t, всегда конвертируется в wchar_t каждый раз, любая строчка char каждый раз конвертируется в wchar_t потому что винда не понимает ничего другого кроме wchar_t. Таким образом, использование char в винде это лютый говнокод, производящий конверсии текста на каждый пук и кракозяблы везде и всюду. Просто убей себя, char-дебил.
Таким образом, вернувшись к нашим баранам >>102519 , посмотри на второй пик. Ты видишь строку char "Моё приложение" в 14 символов, но занимающую 28 байт. Очевидно это мультибайт, но какой - неизвестно, ты же тупая скотина и не задал кодировку нигде, она каким-то образом задалась твоими редакторами/компиляторами/системными настройками. То есть, ты написал хуйню сам не зная в какой кодировке и в результате получил кракозяблы. ЕСТЕСТВЕННО.
сразу нахуй, ты в винде, значит пользуйся:
wchar_t*
L"Моё приложение".
std::wstring
Если же у тебя пердоговно где нет wchar_t, например std::exception(std::string) у которого нет варианта с std::wstring для винды, тогда ты обязан ручками конвертировать свое мультибайтовое говно std::string контролируя какая там точно кодировка, в UTF-16 std::wstring, для этого есть системная функция MultiByteToWideChar(). В std:: тоже вроде есть какие-то конвертеры, но пердопидоры их депреукейтнули не дав ничего в замен, ну ненавидят они винду и гадят людям, уроды по жизни.
Так что, если твоя WxWidgets поддерживает std::wstring это прекрасно, пользуйся, иначе ебись, быдло пердольное. С линуксопарашей на винде ничего хорошего не будет, только говно и боль.
Ты ничего не понимаешь и вопросы все тупые: "как отрубить себе ногу и выколоть глаз?"
Объясняю.
Слово "юникод" может означать разные вещи.
С точки зрения обывателя/пользователя, юникод это буквально "UNI CODE - УНИверсальная КОДировка", кодировка включающая символы всех языков, чтобы не надо было её переключать для разных языков - одна кодировка на всех. Любая такая кодировка называется юникод, хотя они бывают разные, но в www и далее везде, сейчас стандартом является UTF-8.
С точки зрения программиста, юникод это используемый тип данных.
Типов только два: char и wchar_t
1. char - это узкий символ (1 байт). Байт очевидно не юникод, т.к. байт не может вместить в себя все символы. Однако, есть кодировки позволяющие при необходимости делать символы из нескольких байтов если не влезают в один. В таких кодировках разные символы имеют разную длину, такие кодировки называются "мультибайтовые", например UTF-8.
2. wchar_t - это широкий символ (2 байта) юникода кодировки UTF-16.
Таким образом, юникода бывает два:
1. Мультибайтовый UTF-8 - char
2. Юникод UTF-16 - wchar_t
char - не юникод, а мультибайт, но может быть и не мультибайт не поддерживающий все языки, ты просто никак не узнаешь, байты char везде одинаковые, под ними может быть любая байтовая кодировка, как юникодная, так и нет. char это пук в воздух ничего не гарантирующий, то есть на практике гарантирующий кракозяблы. Пользуются char только дебилы говноделы желающие своим юзерам говна из кракозяблов, потому что пользователь обязательно получит кракозяблы когда программист серет сам не зная чем из char-ов. Такой char-похуизм работает только в линуксе, потому что там вся система однозначно настроена на UTF-8. В винде не прокатит, там не так, ты не можешь ради своего высера заставлять пользователей ломать свои системы переключая их на UTF-8 как линукс. Линукс это параша, если хочешь линукс, пиздуй в линукс, если же делаешь под винду - делай как в винде положено, иначе сделаешь говно и все будут страдать, включая тебя самого.
wchar_t - это юникод UTF-16 на котором основана винда начиная с Windows 2000, то есть всегда. Говоришь Windows, подразумеваешь wchar_t UTF-16. Всё четко, просто, однозначно, никаких кракозяблов быть не может, никакие настройки системы ничего не сломают, потому что юникод в винде сделан как надо, без неопределенности как с char в линуксе. Винда вся устроена на UTF-16 (wchar_t), поэтому в винде всегда надо пользоваться wchar_t, других вариантов просто не существует и не нужно. Всё где не wchar_t, всегда конвертируется в wchar_t каждый раз, любая строчка char каждый раз конвертируется в wchar_t потому что винда не понимает ничего другого кроме wchar_t. Таким образом, использование char в винде это лютый говнокод, производящий конверсии текста на каждый пук и кракозяблы везде и всюду. Просто убей себя, char-дебил.
Таким образом, вернувшись к нашим баранам >>102519 , посмотри на второй пик. Ты видишь строку char "Моё приложение" в 14 символов, но занимающую 28 байт. Очевидно это мультибайт, но какой - неизвестно, ты же тупая скотина и не задал кодировку нигде, она каким-то образом задалась твоими редакторами/компиляторами/системными настройками. То есть, ты написал хуйню сам не зная в какой кодировке и в результате получил кракозяблы. ЕСТЕСТВЕННО.
сразу нахуй, ты в винде, значит пользуйся:
wchar_t*
L"Моё приложение".
std::wstring
Если же у тебя пердоговно где нет wchar_t, например std::exception(std::string) у которого нет варианта с std::wstring для винды, тогда ты обязан ручками конвертировать свое мультибайтовое говно std::string контролируя какая там точно кодировка, в UTF-16 std::wstring, для этого есть системная функция MultiByteToWideChar(). В std:: тоже вроде есть какие-то конвертеры, но пердопидоры их депреукейтнули не дав ничего в замен, ну ненавидят они винду и гадят людям, уроды по жизни.
Так что, если твоя WxWidgets поддерживает std::wstring это прекрасно, пользуйся, иначе ебись, быдло пердольное. С линуксопарашей на винде ничего хорошего не будет, только говно и боль.
Нет. Подумай еще.
спасибо, чел - тебе бы писать гайды по программированию.
Но с чего ты решил, что я на линуксе?
Ни в каких библиотеках нет поддержки std::wstring - пользуюсь nlohmann/json для JSON файлов и OpenXLSX для Excel файлов.
По итогу нужно конвертить туда обратно постоянно.
Тащем-то в винде как минимум с десятки есть полная поддержка UTF-8, но её надо включать в региональных настройках. Тогда оба UTF начинают работать без всякого пердолинга.
Так же в манифесте бинарника можно указать что он работает в UTF-8, так же как ты указываешь DPI-awareness. Тогда тоже будет работать всё без проблем.
Нету поддержки, ты не понял.
--- линукс ---
char - системный стандарт, UTF-8 мультибайт юникод
wchar - не используется
--- винда ---
char - легаcи совместимость с Windows 95, в каждой стране своя кодировка (ANSI) в зависимости от настройки языка
wchar -системный стандарт, UTF-16 юникод
Вот как на самом деле.
И теперь момент про опцию char UTF-8 в винде, она бесполезна, это совсем не то. В винде char это легаси ANSI, а char UTF-8 софта тупо нет, этой опции никогда и не было, она появилась только недавно. Единственно зачем она нужна, так навскидку, чтобы работал каловый софт с линукса высирающий UTF-8 в консоль. Короче, очень ограниченное специальное применение для узкого круга задач, причем, напоминаю, это системная настройка, а значит весь нормальный софт отвалится. Ну такое себе, отыквить систему ради полторы калечных поделки, своего рода эмуляция линукса в узкой задаче. Может для каких-то серверных извращений это и надо, но для людей и софта нет.
> Вместо шапки:
Я не хочу учиться по книжкам. Это скучно и не интересно.
Какие еще есть варианты быстрого роадмапа?
Ты эту чепуху побереги для журналистов, я тебе стратегический совет даю, а как ты там на проект будешь устраиваться - это твоё дело.
> про опцию char UTF-8 в винде, она бесполезна, это совсем не то
> В винде char это легаси ANSI
Чел, ты бы для начала попробовал. Пикрилейтед, локаль американская, после включения utf-8 в винде обычный чар превращается в мультибайт. wchar работает только если один язык в тексте, с китайским он выдаёт пик2. Только один язык на пик3 работает с wchar.
>после включения utf-8 в винде обычный чар превращается в мультибайт
Обычный чар это и есть мультибайт. Больше не пиши, раз не читаешь. Чар это говно потому что это просто байты, по нему не понятно какая кодировка. Ни компилятор не знает какая кодировка в твоем файле исходника чтобы запихнуть в бинарник, ни винда не знает из какой кодировки это говно конвертировать в wchar чтобы вывести на экран.
Ты высрал бессмыслицу с самого начала, потому что неизвестно в какой кодировке текст у тебя на скринах. Ты в курсе, что в текстовых файлах нет метаданных указывающих кодировку? Так какие байты тогда из него получатся? Никакие, рандом зависящий от всего, начиная от твоей тупости и заканчивая настройками винды, как твоими для компиляции, так и другого кто запустит твой экзешник. А если ты дашь свой исходник другому с другими настройками винды, то он и скомпилирует сразу испорченный мусор и текста уже никто никогда не увидит.
В общем, ты или читай пост >>102784 и понимай что делаешь, или нахуй следуй, дебил, тыкающий вслепую сам не зная что. Тупорылая сучья макака, наверняка с питона или жабаскрипта сюда приперся. Мозгов нет даже прочитать готовое, тыкает методом тыка, имбецилы ёбаные.
Ладно, ты прав
Он просто не понял что UTF-16 это тоже многобайтная кодировка, построенная по принципу UTF-8, только в ней "словом" является 16-бит (поэтому UTF-16).
А еще есть 16-битный юникод, с фиксированным размером символа (16-бит), и ИМЕННО ЕГО использует винда, и для него надо по-прежнему постоянно переключать локали.
Вот так, если внушительно написать, с апломбом - все верят в любую хуйню.
Так разговор про винду, в винде UTF-16 подразумевает ФИКСИРОВАННЫЕ ЧАРЫ, а никакой не мультибайт. А то что там в манястандартах ассоциации юникода - пофиг, разговор не про них, а про винду. Или что, майрософт на своем сайте тоже дураки и неправильно пишут?
Чел, хватит срать, utf-8 всегда у всех будет одинаково выводится, если включен вывод в нём. Я тебе уже показал, что в винде нет никакого "легаси-ANSI" в режиме utf-8.
> по нему не понятно какая кодировка
Пиздец ты мыслитель. Там только одна кодировка может быть - utf-8. В ней не надо переключаться на разные страницы.
> А если ты дашь свой исходник другому с другими настройками винды, то он и скомпилирует сразу испорченный мусор и текста уже никто никогда не увидит.
Тупая ты хуесосина, тебе уже написали что в винде можно просто в манифесте выставить ActiveCodePage в utf-8 и оно будет работать везде. Я понимаю что есть отдельный вид животных типа тебя, собирающих софт без манифеста, но зачем же на весь тред позориться.
Я просто сагрился на UTF-16, который якобы дефолтный в винде, в то время когда чётко знаю что там какая-то его часть (фиксированные 16-битные "слова"), а не утф-16 целиком. Не принимай на свой счёт.
Алсо, как раз сталкивался с этой проблемой, когда пердолер из линукса притащил "кроссплатформенную" программку, в которую на линуксе через argv[] приходили ascii (то есть однобайтный утф-8), а в винде (примерная иллюстрация) приходило ".a.r.g.u.m.e.n.t".
Дело тогда дошло до скандала, я, будучи лидом, ему талдычю чтобы делал нормально, а он никак не мог понять в чём дело, и дошло до того что мне пришлось в джире нахуярить лекцию про юникоды на три экрана и привлечь в тикет руководство, чтоб блять заставили его сделать нормально.
Сцук, как вспомнил сейчас, опять стул подгорел. Так что не ругаемся, это моё старое подгорание. А особенно не ругаемся с лидами, у них опыта больше и они в 90% случаев правы. Всё норм, всем добра и тебе тоже.
>и ИМЕННО ЕГО использует винда
А это точно-точно прям? Заебали они со своими кодировками ессчестно.
https://stackoverflow.com/questions/53293159/are-wchar-t-and-char16-t-the-same-thing-on-windows
https://learn.microsoft.com/en-us/cpp/cpp/char-wchar-t-char16-t-char32-t?view=msvc-170#remarks
Не будет. Будет только если весь процесс разработки, компиляции и выполнения будет полностью в UTF-8, такое бывает только в линуксе, на винде дефолтные кодировки могут быть какие угодно, у каждого человека своя, так что твой говнобайтовый текст char превращается в тыкву в 99 случаях из 100. Работает это только у тебя дебила - лично, и больше ни у кого.
>Или что, майрософт на своем сайте тоже дураки и неправильно пишут?
Может, они имеют в виду наоборот, что wchar_t используется для хранения UTF-16? Бля, опять test.c писать из-за хуйни.
>что в винде нет никакого "легаси-ANSI" в режиме utf-8.
До, и это не имеет значения, я и не утверждал, что точно знаю что делает эта опция. Я утверждал, что толку от неё нет, она ничего волшебно не исправит. Надо софт делать специально под эту опцию. Такого софта тупо нет, потому что опция только появилась, и она ломает нормальные программы. Кто вообще будет писать под такое говно? Кому это надо когда в винде есть нормальный юникод? Это нужно только для полторы говняных исходника из линукса которые кому-то лень править и хочется просто тащить говно из линукса наплевав на всё, лишь бы как проще, лишь бы заработало, конкретно эта какаха лично. Здоровому человеку на винде такое и в страшных снах не нужно.
2954x1544, 0:30
В общем пошёл нахуй, долбаёб. Ты явно винду в первый раз видишь. Манифест всегда имеет приоритет над окружением. Алсо, рекомендую тебе хотя бы иногда заглядывать в доки майков, чтоб знать что со времён XP изменилось.
Всё верно. Проблема линукса в том, что там нет проблем с кодировками, поэтому линуксоид никогда о кодировке даже не думает, у него "просто работает" всегда и везде, поэтому они ТУПЫЕ, совершенно не понимают как это работает, потому что такой необходимости - понимать, у них нет.
Проблема сои, у них "кроссплатформенность" это линукс и линукс, и в крайнем случае еще макос, а винда это ересь, из людей платформ выписана. Но вслух этого не говорят, а лицемерно делают вид, что их поделки "кроссплатформа", когда на самом деле делают только под одну платформу - линукс, и от силы его производные, где требуется только конфиг сборки чуть подправить.
Это фактически соевая повестка - взять всё хорошее (винда) и изгадить опустив на свой уровень. Софт делается с оглядкой только на линукс, винда не уважается, игнорируется, если в винде что-то устроено не так как в линуксе, это значит винда говно и даже под неё надо делать всё равно как в линуксе, во славу света истины правильности.
Отсюда и получаются эти ораторы, которым говоришь в винде нет UTF-8, а те копротивляются пытаясь впердолить его вопреки всему. Почему нигде нет ебланов визжащих что в линуксе надо отменить UTF-8 и сделать UTF-16 как в винде? Потому что все понимают, что винда говно, а линукс лучше? Конечно нет, просто люди не линуксовые соевые дегенераты, а уважают вещи воспринимая их так как они есть, а не как объект религиозный войн где есть только моё и неправильное. Узколобый скот.
>> Потому что все понимают, что винда говно, а линукс лучше?
Забавно обрезал.
Представь, если есть некое количество платформ, больше чем одна, и есть одна которая отличается от них всех. Естественно что все стремиться к унификации, а тут есть вторичная, не очень важная, платформа, на которой все не так просто потому что когда-то в 80-х были приняты мудацкие решения (нормальные в 80-х, но в 20-х определенно мудацкие). UTF-8 это стандарт индустрии, весь веб работает на UTF-8
>>104621
>> Конечно нет, просто люди не линуксовые соевые дегенераты, а уважают вещи воспринимая их так как они есть
Забавно что звучит твой тейк прямо как соевая леволиберальная повесточка
разрешите доебаться? суррогатные пары в виндовой сосноли это настоящий утф16 или нет. я просто тоже в рот ебал в этом разбираться
>Представь, если есть некое количество платформ
Опять соевое враньё. Нет никакого количества, платформ всего две: линукс и винда, причем линукс это уебанская помойка где ничего нет, кроме дефолтной консоли которая лучше виндовой, но и ту можно спокойно поставить на винду и всё, единственное преимущество аннулировано.
Линукс это убогий огрызок ущербного кала, днище операционных систем, позор нахуй, и это говно тянут на винду, имеющую широчайшие возможности, где всё работает десятилетиями, документировано вылизано до невозможности, никто к такому охуению даже близко больше не приблизился. И что делают эти соевые уроды? - Забьем хуй на все чудеса винды и притащим тупые порты с линукса из говна и палок игнорирующие все чудесные возможности винды. Это типичная повесточная погань, приходит и загаживает опуская всё хорошее на свой уровень днища. На винде никому не нужны линуксные огрызки кала, винда позволяет делать в тысячу раз лучше и в тысячу раз удобнее. Но нет, давайте не будем так делать потому что это не совместимо с линуксным днищем, давайте сделаем равенство, чтобы везде было днище как на линуксе. Вот что такое на самом деле их "свобода" и "мультиплатформа", это ущербный фашизм, когда уроды лезут везде и требуют сделать всё везде уродским как они сами.
Глупышка, в этом мире именно линукс и прочие юниксы это большинство, а соя нитакуся это винда. Поэтому все твои доводы умножаются на ноль
Сказать что черное это белое, типичная соевая пидарасня.
Вот самый простой пример который поймет даже слабоумный. На винде есть такая штука - Autohotkey, это язык программирования позволяющий не просто писать свою программу, но и манипулировать всем остальным в системе. На линуксе такое в принципе невозможно, потому что на линуксе НЕТ СИСТЕМЫ, т.е. нет стандартизированной структуры по которой всё работает. Невозможно сделать язык программирования управляющий сам не зная чем, потому что на линуксе нет ничего, это кусок кала без ничего, где ничерта не работает. Если на линуксе хочешь чтобы работало, нужно всё делать самому, делать по сути свою операционную систему со всем своим и тащить это с каждый своим приложением в комплекте, как это сделали Qt, потому что ничего стороннего нет, никакой опоры сторонняя параша тебе не даст, оно всё ломается каждый день, невозможно ни на что опереться, невозможно нормально писать программы.
Вот и получается, пока на винде мега-корпорация сделала охуенную систему позволяющую делать фантастические приложения, каждый отдельный линуксоурод костыляет свои велосипеды из говна. Естественно такие потуги смешны, что может отдельный хуесос против мега-корпорации? Вот и качество линуксных помоев соответствующее. На винде эта погань не нужна, не нужна эта ваша линуксная повесточная уравниловка, уровнять всё хорошее на уровень помойного дерьма на самом дне. Это не винда мастдай, это соевые уроды со своим линуксом мастдай, по крайней мере не должны лезть в винду. Если ты урод и пидарас, делай это дома где никто не видит, не надо лезть к здоровым людям и гадить им, им это не нужно, они лучше тебя, у них всё лучше твоего, не порти им жизнь, соевый урод.
> Сказать что черное это белое, типичная соевая пидарасня.
Я не могу понять, или это настолько толстый троллинг или ты реально дурак. Энивей, я все что хотел сказал, вникай, мб перестанешь позориться
Винда сейчас хороша только для виндовых приложений. По типу автокада, солидворкса, майкрософт офиса, экселя, сони вегаса и прочих инструментов. Но разработкой подобного занимаются 2.5 конторы в мире, да и те, отдали все на аутсорс в индию уже давным давно.
Лол, пердоли даже не знают как их говно называется. Линукс - это голое ядро. Всё остальное дичайший набор костылей, на десктопе треть из которых на питоне.
Все я прекрасно знаю, но я отвечал человеку который в целом мало что понимает, поэтому упрощения это ок
> на десктопе треть из которых на питоне.
Объяснишь? Я не вижу в этом ничего плохого если что, но как будто треть это сильное преувеличение. Раза в 4 эдак
> треть из которых на питоне
Всегда удивляло это у линуксоидов. Они постоянно рякают на дотнет, при этом сами постоянно пользуются питоном. Ещё и куча гуя на питоне написано у них, половина qt-параши на нём, в то время как на винде таким же формошлёпством занимаются на шарпе. На арче постоянно наблюдал какое тормозное говно весь этот кал.
Для тебя кроме десктопа ничего не существует?
На серверах популярнее Линукс, Андроид создан на базе Линукс, в телевизорах, роутерах и т.д. прошивки на базе Линукса.
Ваша Винда кроме десктопа нахуй нигде не нужна.
В этом и сила Линукса, её можно кастомизировать как угодно под желаемое устройство, от серверов до микроконтроллеров.
>Линукс - это голое ядро.
На винде ядро включает в себя пиздец как много, окна и намного больше. А на линуксе ядро это буквально ничего, с таким ядром ничего не сделаешь, в нём ничего нет.
>>104970
Питон это ужасно, шарп в сравнении это космос.
У меня есть одна-единственная годная прога на питоне у которой нет аналогов, постоянно пользуюсь. Прога предназначена висеть и ничего не делать следя за папкой, когда в папке появится файл, она его обрабатывает за долю секунды и опять ждет ничего не делая. Но есть нюанс, это ничего неделание постоянно отжирает около трети ядра, даже в диспетчере задач помечено красным как высокая нагрузка. В то время как десятки остальных процессов висят на нуле ничего не загружая вовсе. Вопрос, КАКОГО ХУЯ, питон?
В результате я сделал программу которая отслеживает активность пользователя и останавливает питоновский процесс чтобы не прожигал ресурсы, а когда надо размораживает и потом опять замораживает. Вот так приходится бороться с питоном. Представляете сколько миллионов людей во всем мире пользуются питоноговном не обращая внимания? Сколько гигаватт проебано, денег, экологии впустую просто потому что питономакаки говнокодят.
думайте
Да, да, прошивка для контроллеров и роутеров, консоль для компиляции, конечно полезно, только это не ОС, не аналог винды. Зачем лезете с прошивкой от роутера на винду, опуская великолепную настольную ось до уровня роутера? Не надо гадить людям, что не понятно. Не бывает никакой мультиплатформы. "Мультиплатформа" это взять и обгадить софт, деградировать его до уровня самой убогой прошивки на рынке. За что это издевательство пользователям лучшей и единственной настольной ос виндовс?
>инукс это уебанская помойка где ничего нет, кроме дефолтной консоли которая лучше виндовой
Там есть иксы, компилятор и библиотека Xft.
А больше настоящему джедаю ничего и не нужно.
Ты вообще не в ту сторону воюешь.
>Ваша Винда кроме десктопа нахуй нигде не нужна.
Windows Server c парой Xeon и 128 Gb RAM.
Внутри Hyper-V.
Под Hyper-V живёт с десяток линуксов и 4 винды.
Все они занимаются сборками и тестами.
Кому ты рассказываешь, что Винда не нужна?????
Короче, положняк такой - если вы (любой из вас) срётся в холиварах на тему винда vs линукс, то вы или вкатунцы, или умираете со скуки и не с кем попиздеть в рабочее время.
Но фишка в том, что это С++ тред. По идее пишущие здесь должны одинаково хорошо понимать обе системы и знать соотвествение POSIX и WinAPI системных вызовов.
>Вот бы выпустили новое поколение процов, на новой архитектуре и написали под это ОСь с нуля желательно.
Уже. Почти. Ещё лет 10-15.
>Желательно белыми американскими руками
А вот тут тебе стыдно должно быть.
> Уже. Почти. Ещё лет 10-15.
Терплю из последних сил
> А вот тут тебе стыдно должно быть.
Ну ладно. Славянам тоже можно
Ты написал скрипт который продрачивает папку насколько десятков тысяч раз в секунду и недоволен что он жрет цпу? Или же ты сделал тайм-аут, но сидишь на 386 процессоре, иного не дано
> Короче, положняк такой - если вы (любой из вас) срётся в холиварах на тему винда vs линукс, то вы или вкатунцы, или умираете со скуки и не с кем попиздеть в рабочее время.
Ну да, но ещё попустить залетного дурачка хочется с его байтами и кодировками
> Но фишка в том, что это С++ тред. По идее пишущие здесь должны одинаково хорошо понимать обе системы и знать соотвествение POSIX и WinAPI системных вызовов.
В теории да, на практике лично мне плюсовики пишущие под винду софт вообще не встречались, поэтому мне кажется что это вообще ничтожный процент рынка, но я вполне могу в пузыре жить поэтому утверждать не буду
))
Уж боюсь представить какое там говно, раз ты питон не осилил.
Ты свой пост читал, хуесос?
> У меня есть одна-единственная годная прога на питоне у которой нет аналогов, постоянно пользуюсь. Прога предназначена висеть и ничего не делать следя за папкой, когда в папке появится файл, она его обрабатывает за долю секунды и опять ждет ничего не делая. Но есть нюанс, это ничего неделание постоянно отжирает около трети ядра, даже в диспетчере задач помечено красным как высокая нагрузка. В то время как десятки остальных процессов висят на нуле ничего не загружая вовсе. Вопрос, КАКОГО ХУЯ, питон?
Лучше совета дайте.
Укачал я себе образ Mac OSX для VMWare.
Но чтобы его запустить, нужно использовать вот это - https://www.sysprobs.com/vmware-unlocker-macos
Проблема в том, что на компьютере принципиально не запускаю ничего неподписанного. Содержу его в идеальном порядке - всё лицензионное и очень триальное.
Другой железки под рукой нет, чтобы проверить.
А ещё опасаюсь в случае проблем потерять свои уже существующие виртуалки - слишком дофига на них завязано.
И вот смотрю я на этот унлокер - и хочется, и колется.
Может быть кто пробовал и поделится ощущениями?
Где было хоть слово про завоз чего-то винду? Одебилевшая линуксосина даже на русском языке прочитать не может, смотрит на текст, видит фигу и сочиняет говно из жопы.
Сейчас попробую жди
Да я в душе не знаю, я только вкатываюсь. Картинка для привлечения внимания
Тот же тип остаётся.
Лучше читается.
Я что-то вообще не могу найти даже вакансий где нужен бы был С++, либо это два объявлентя от НИИ очко_слона с потолком в 100 тысяч.
О других не скажу, но я за C# и "типа SRE" получаю зарплату.
С++ это для души, для своих проектов, это на будущее.
Слышал что в Яндексе активно используется на высоконагруженных сервисах.
> Господа сипипи-разработяики, вы как вообще ищите работу?
А в чём собственно проблема? Я ищу так же как на любом другом языке. Открываю headhunter, указываю в профиле что я готов к переезду, вбиваю c++, ставлю галочку "меньше 10 претендентов". Открываю описание, читаю чем занимается компания. Если это что-то интересное, что мне по душе, то ставлю закладку. Если нет, дальше иду. Отбираю штук 10-20 вакансий, с зарплатой 100к+. Если зарплата меньше 100к, я просто скипаю и не рассматриваю эту вакансию. Если это что-то связанное с нефтянкой, тоже скипаю. Если там написано "джуниор", "ученик", "стажер", тоже скипаю. Мои приоритеты: финансы, трейдинг, QT, вот это всё. Чем жирнее зарплата тем лучше. Ну и дальше пишу развернутое письмо, мол здравствуйте, заинтересовала ваша вакансия. У меня опыт есть с такими-то технологиями, работал с такими-то проектами. Буду рад поработать в вашей компании. Ну и дальше они либо дают тестовое, либо назначают собеседование, либо отказывают, тогда я просто иду дальше и ищу следующую компанию.
>где всё работает десятилетиями
Начиная с десятки - уже через раз работает. Дальше, думаю, надо будет какой-то вариант вайна под винду делать, чтобы старые проги запускать.
>Забьем хуй на все чудеса винды
"Чудеса винды" - это новый фреймворк для UI раз в пять лет? Я бы тоже хуй забил.
>Дальше, думаю, надо будет
Слышу эти пердомантры "винда вот вот сдохнет" уже не один десяток лет, и всё никак.
>"Чудеса винды" - это новый фреймворк для UI раз в пять лет?
Не кукарекай про что не знаешь. В винде UI это сама винда, WinAPI, он вечный во веки веков, был, есть и будет, а остальное сорта оберток для удобства, тоже кстати поддерживаемые многие десятки лет. Есть конечно и самопальное говно вроде линуксового и прямо оттуда, но это уже экстра опции, не необходимость, а извращение
>Почему нигде нет ебланов визжащих что в линуксе надо отменить UTF-8 и сделать UTF-16 как в винде?
Потому что UTF-8 объективно лучше. Если число длиннее одного байта, то надо задавать их порядок, и тут у UTF-16 начинается веселье из BOM и BE/LE. Плюс еще ушат говна в виде различий UTF-8 и UCS-2 и суррогатных пар.
>и всё никак
Сдохшей ее официально можно считать с момента появления WSL.
>а остальное сорта оберток для удобства
Это "удобство" привело к тому, что морды сейчас пишут на Qt или уже электроне, а все остальное в полудохлом состоянии (или используется полутора шарпистами для внутренних корпоративных прог).
>тоже кстати поддерживаемые многие десятки лет
Говорю же, не поддерживаемые уже. Например, старые приложения дельфи на десятке не работают. А остальное ломаться начало еще на семерке, с переходом на 64 бита. Дальше будет хуже.
>Потому что UTF-8 объективно лучше.
Для веб-страниц, да, поэтому оно там и стандарт, но не для операционной системы которую надо программировать. Параша с переменной длиной которую надо парсить это днище ебаное. Если уж взялись говнить, то надо это делать до конца, переделать в UTF8-ZIP, чтобы не только парсить, но и сжимать/разжимать, ведь так еще круче, верно, пердодебил?
> с момента появления WSL
Это как раз момент когда пердоликс стал окончательно не нужен, теперь он используется по назначению - как прошивка для WSL.
> старые приложения дельфи на десятке не работают
Хотел бы я посмотреть как ты запустишь на пердоликсе софт хотя бы 10-летней давности, лол. На 11 винде всё ещё 90% софта с XP работает, некро-игры из начала нулевых запускаются.
Ну вот ты и спалился, тупорылая хуесосина. Сам же говнокод пишешь, но виноват линукс и питон. Ещё и наглости хватает маневрировать.
>Параша с переменной длиной которую надо парсить это днище ебаное.
UTF-16 - тоже параша с переменной длиной. Особенно под виндой, где реально микс из UTF-16 и UCS-2, не соответствующий стандарту.
>Это как раз момент когда пердоликс стал окончательно не нужен
Так не нужен, что сейчас легко можно найти работу вообще без опыта кодинга под винду, а вот наоборот - гораздо сложнее, и это наверняка будет адовое легаси.
>Хотел бы я посмотреть как ты запустишь на пердоликсе софт хотя бы 10-летней давности, лол
Соберу контейнер с любой древней версией ядра и либ, и спокойно запущу.
>На 11 винде всё ещё 90% софта с XP работает, некро-игры из начала нулевых запускаются.
Под вайном они сейчас запускаются гораздо лучше, хотя на семерке было наоборот. А через пару версий винды - вообще прекратят запускаться (если там вообще еще можно будет софт без подписи запускать).
Под линуксом как раз виртуалки и контейнеры удобно использовать, в отличие от винды, где в виртуалку часто надо графоний прокидывать. Плюс пропиетарный софт под линукс скорее всего можно так просто запустить, потому что его специально собирают со всеми зависимостями.
> На 11 винде всё ещё 90% софта с XP работает, некро-игры из начала нулевых запускаются.
Лол хех мда, конечно запускается если челы из Гога и Стима сами все ручками патчат каждую Винду
А так даже Фаллаут 3 не запускается
>в общем понятно что ты написал, но почему скипаешь нефтянку?
Просто не моё, я уже наелся программированием роутеров. Все эти ебаные коммутаторы, хомутаторы, шкафы управления, место захламлённое писда, все какую-то хуйню блять паяют, у нас зимой чуваки надевали перчатки без пальцев и так писали код. Потому что был дикий дубак на этом полузаводе полупредприятии полунии. Начальство жопилось купить лишний обогреватель. Я как вспомню эти шкафы управления, клапаны хуяпаны, ну их нахуй. Конечно такого криминального, но просто не нравится.
>> с момента появления WSL
> Это как раз момент когда пердоликс стал окончательно не нуже
Кому как, у меня с WSL например не срослось из-за отсутствия доступа к аудиокарте, в итоге приложения типа qTractor не работают, потому что работают через jack, а не через pulseaudio
Нефтянка у нас очень большая и разнообразная. Там что угодно могут делать: от банальной морды для круда на Qt до симулятора бункеровки газовоза в ВР. У одной роснефти сотни всяких IT компаний внутри, и там далеко не только АСУ и слаботочка.
ссука лол. если меня разбудят через 100 лет и спросят чем сейчас занимаются линупсоиды я отвечу - ебутся с дровами на звук
Там какая-то хуйня про jack и pulseaudio. У нормальных людей звук просто работает, без ебли с прослойками и драйверами. Драйвера в 2024 году - это вообще смех, я за последние пару лет кроме видеодрайвера ничего руками не ставил - воткнул и работает.
Пулс это натурально плаг н плей фреймворк, с ним нужно пердолиться только если у тебя йоба аудиосистема домашний кинотеатр из 2004. Ебутся обычно с голой алсой пердолики, которые думают «а зачем нам этот фрЭймворк-та??? У меня дедка-то в 2001 на сюсе выводил моноканал на колонки микролап еп и не нужны был ваш этот.. как это.. блоатвЭйр еп… а че у меня мои маршалы не подключаются анон нужна помощь……..»
> Пулс это натурально плаг н плей фреймворк
Помню пару лет назад ебался с этим калом. Он оказывается не умеет в нормальный ресемплинг и если разный софт выводит звук в 44100/48000, то ты идёшь нахуй. Микшер кал и постоянно щёлкает, эквалайзера нет, Атмоса нет, звук через HDMI через жопу работает, про eARC никто на пердоликсе даже и не слышал, в 24 бита 384 кГц он не умеет вообще. Под сраный реалтек надо собирать драйвера из исходников и ставить руками, под остальное проще хуй соснуть, чем найти драйвер для ЦАПа.
И раз уж зашла речь про мультимедиа, то дальше можно вспомнить про HDR. Там тоже нихуя не работает.
>>106265
Та какие нахуй драйвера, у WSL вообще звуковухи самой нету в списке устройств тупо, там не на что драйвера ставить, винда ей не предоставляет звуковуху как устройство, в итоге тупо через PulseAudio отсылается аудиопоток винде, а винда его и воспроизводит, то есть получается, что если ты пишешь аудиософт какой-нибудь профессиональный и кросплатформенный которому нужно обращение к звуку на низком уровне, ты его уже в WSL не п тестишь, на виртуалках то же не потестишь(скорее всего!).
>У меня есть одна-единственная годная прога на питоне у которой нет аналогов,
А почему в С++ нельзя такое написать?std::filesystem отменили?
Нейросеточная модель для распознавания, они все на питоне.
>std::filesystem отменили?
У питономакак мозги отменили, вот у них мониторинг папки наверное делается её сканированием 100 раз в секунду, когда есть системная функция винды не требующая ничего и только посылающая уведомления когда надо. Но какие системные функции у питонодебилов, это же Си, нативные функции ос, это из другого измерения которое в мозжечке питонодауна просто отсутствует.
Хотя, что я несу, вот же исходник, наслаждайтесь, питонодебил за работой. 10 раз в секунду, мразь.
Зато кроссплатформа и работает везде
если бы я писал код на питоне, то такое же бы как затычку оставил
> они все на питоне
Нормальные люди инференс для прода делают на компилируемом языке с беком на onnx/trt. Никто в прод не будет тащить торч.
> питонодебил за работой
Нет никаких проблем и в питоне дёрнуть winapi, у тебя на пике скорее линуксодебил без системных ивентов от фс.
> А если не говнокодить?
Ну никто не заставляет же это в прод тащить
Ну или попробуй свое решение на питоне щас написать, посмотрим какая разница будет в коде
> пик
Ну это конечно пиздец)
Ну если а это указатель, то очевидно что тоьна что он указывпет нужно где то вне создать, а у тебя не создано.
Рутеров, уёбище.
Мехно. Просто я хочу сделать функцию что создавала создавала бы сущность типа структуры и само всё там заполняла, а не писать постоянно вручную всё.
>На винде ядро включает в себя пиздец как много, окна и намного больше.
Где ты об этом услышал? Не слушай там больше.
Да, ньюфаг, только начал изучать с++.
Питонодебилу неприятно.
Я кстати уже переделал этот косяк, потребление проца теперь - 0 (НОЛЬ).
И спасибо двачу! Бомбанул и обнаружил, что там работает исходник, а то думал они в экзешник запихнули. Оказывается все же лежит файлик голый, отредактировал и круто стало.
Вот скажите. Почему я на говнопитоне ни строчки в жизни не писал, а тут взял и исправил питонодебила который насрал говна >>107504 и исправлять не думал годами. И даже в здесь треде нашелся такой же выродок >>107509 >>107514 оправдывающий этот говнокод >>107504 Сраные вонючие индусы и тут сидят гадят друг за друга.
Начну с себя, 210к, с учетом обязательных премий 310к. Опыт почти 10 лет, стек C++/Qt думаю на голанг перекатываться, там сеньоры с 3 годами опыта 500к имеют
Какой стек, в баззвордах? Тимлид или обычный кодер?
212k свиссфранков зепе в год, +~200к бачей акциям. Всё пре-такс, налог где-то 37% в кантоне Цюрих на этот пиздец.
Давно тебя не было в уличных гонках. Хоть бы в МВП зашёл.
Спроси у остальных 200 анонов, которым надо побыстрее сдать лабу и забыть о плюсах.
150. С++/qt. Встраиваемые системы и прочее говно. Опыт 3 года, вкатывался в 30 лет под крики двачеров что я старый, тупой и нихуя не получится.
>Опыт 3 года, вкатывался в 30 лет
вангую ты до сих пор bsearch без ошибок на бумажке не сможешь написать
Я не он, но то что я это не смогу на практике мне никак не мешало.
Люди здесь не сидят, я тоже раз в неделю пукаю и ухожу. Пусть дальше срутся Винда вс Линух
Да у вас приоритеты говно, мистер зумерок. Дрочение на алгоритмы становится каким-то нездоровым. Я не буду разбираться в тысяче идиотских задач с литкода. Если господин интервьюер попросил меня поковырять его массивчик - будет послан нахуй. Лучше бы так ооп и ос дрочили.
Подготовился и прошел.
Нахуй не нужно задрачивать каждый базовый алгоритм, нужно понимать идею.
Редко когда тебе на алг секции понадобится ИМЕННО БАЗОВАЯ реализация, чаще тебе нужна будет только идея алгоритма.
Так что тупо заучив алгоритмы хуй ты пройдешь алг секцию.
Да я хз, объяснить могу. Что-бы узнать могу или нет нужно попробовать написать на бумажке, а нахуй мне это нужно? Что-бы тебе анонимному червю-вкатуну что-то доказать?
у меня антиспам включен, что-бы такие вот васьки мне не перезванивали.
Сколько раз ты сам его писал-то ИРЛ? Не для тренировки, а в реальном проекте? Лично я один раз, и то вариант без бранчей в шейдере (там длина шага по массиву выбирается через тернарный оператор). Реально это очень мало кому надо в жизни.
> это не бранч
Да, там обе ветки вычисляются и выкидывается результат ненужной. Ахуеть ты оптимизировал, лол. И это распространяется только на HLSL, на GLSL будет бранч.
>Да, там обе ветки вычисляются и выкидывается результат ненужной
Я уже не помню, как там точно было, но в результате что-то вроде idx += cond ? step : 0;
Это было быстрее, чем иф с двумя ветками.
>на GLSL будет бранч
Зависит от вендора, в HLSL тоже возможен бранч, но он умеет short circuit по стандарту.
В любом случае бинарный поиск - далеко не самая частая вещь, которую пишешь ИРЛ, если ты не профессиональный олимпиадник какой-нибудь.
Но есть проблема, вобще не понимаю что там внутри самой видеокарты в тех же шейдерах твориться, как что то бьёт по перфу и тд
Где эти сакральные знания получить? Я даже представить не могу как посмотреть во что мои шейдеры компилятся на самом деле, максимум на spv глядел
То что ты хочешь называется опыт блять. И нигде его в готовом виде не взять. Сиди нарабатывай.
> хочу сделать функцию что создавала создавала бы сущность типа структуры и само всё там заполняла
Чел, эта функция называется конструктор. Конструкторы бывают и у структур. Да и вообще struct и class это одно и то же, вопрос стиля: некоторые пишут struct чтобы подчеркнуть что в классе только хранятся данные, другие пишут чтобы дать понять, что достаточно shallow copy и не нужен деструктор и всё остальное дерьмо.
struct PPGroup {
PPGroup (int a, int b) { this.raz = a; this.cik = b; }
int raz;
int cik;
}
Понел?
Никто тебе не расскажет этого. В свежих графах шедулинг нод вообще на стороне драйвера - пишешь шейдеры, кидаешь ноды в субмодули, а дальше оно как-то само строит граф и выполняет. В том числе и синхронизация барьерами нахуй уходит.
> PPGroup (int a, int b) { this.raz = a; this.cik = b; }
За двойную инициализацию полей пиздить уже пора.
struct PPGroup {
int raz, cik;
PPGroup (int a, int b) : raz(a), cik(b) { this->raz = a; this->cik = b; }
};
>Я даже представить не могу как посмотреть во что мои шейдеры компилятся на самом деле, максимум на spv глядел
У АМД можно дизассемблер посмотреть, у нвидии - вроде только для куды. Под OpenGL у нвидии можно посмотреть псевдоассемблер (у них свое расширение на основе древнего arb_vertex/fragment_program). На самом деле там самое важное - число регистров, потому что если число регистров больше размера регистрового файла / количесво тредов на ядро, то тредов будет в N раз меньше. А так в вычислительную мощность обычно редко упираешься, боттлнек или в памяти или в синхронизации, но это от задачи зависит, конечно. А так в инете полно обзоров и на архитектуру современных GPU, и на методы оптимизации.
Там ведь надо medium задачки от руки писать, да еще и чтобы с первого раза скомпилилось и прошло все тесты. С трудом представляю, как ты умудрился это одолеть без умения написать bsearch на бумаге, это ведь вообще базовая вещь
Редко когда задрачивают чтоб прям скомпилилось, да и то намекают что и где не так.
> Базовая вещь
Как же у вкатунов в голове насрано, это пиздец.
Базовая вещь это синтаксис языка, типо понимания когда инициализировать с помощью (), а когда {}, как работает auto, что такое T&&.
А это хуйня ситуативная.
Блять, да мне алгоритм поточного семплирования чаще нужно был, чем бинарный поиск, написанный от руки.
>>Редко когда задрачивают чтоб прям скомпилилось, да и то намекают что и где не так
Как же оно все тесты пройдет, если даже не скомпилится?
>>Базовая вещь это синтаксис языка, типо понимания когда инициализировать с помощью (), а когда {}, как работает auto, что такое T&&.
Это синтаксис конкретного языка, Яндекс, как и фаанги, вроде как ищет специалистов без привязки к конкретному языку
Да там не только в этом проблема. Забавно как сразу видно людей кто плюсы либо учит либо толком не до учил.
>Яндекс, как и фаанги, вроде как ищет специалистов без привязки к конкретному языку
Пятнадцать лет назад они искали специалистов по круглым люкам и бросанию двух яиц с многоэтажки, сейчас - специалистов по задрачиванию задач на литкоде. Это тупо мода по вопросам на собес. С реальными скиллами кандидата она довольно косвенно связанна, примерно как прохождение теста IQ с аналитическими способностями.
>ищет специалистов без привязки к конкретному языку
То есть с привязкой к конкретному языку, который кусок мяса болтается во рту.
Ладно, я походу с векторами где-то проебался. Но остается вопрос форматирования. Чтобы нормально отформатировать пришлось вот такую дичь городить, если приводить просто к int, то некоторые значения могут быть отрицательными и hex их видимо неправильно форматирует. Есть правильные способы это делать?
Если не кастить вообще, хекс как будто ничего не форматирует (первый запуск). Если кастить только в инт, то шляпа как на втором запуске. Только если сперва в беззнаковый, а потом в инт, то тогда хекс нормально преобразует как на третьем.
Не, не работает. Походу если просто unsigned, то он автоматом в близкий к максимальному четырхебайтному int конвертит, потому что считает что оригинальный чар был отрицательным, а мне сперва нужно именно в максимальный char, после чего уже это значение не будет превышать 255 и уже его можно кастить в инт а потом передавать в hex, по крайней мере так я понял. Странная заковырка конечно.
Очень странно, но сходу сказать ничего не могу.
В целом код стремноватый, посмотри, мб есть способы сделать это проще/корректнее.
У меня в неовиме тоже инлей хинт
Если у меня есть std::unordered_map<int, double>, у которого value_type является <const Foo, Bar>, то почему работает перегрузка insert(value_type &&) в виде insert(std::pair<Foo, Bar>{1, 2})? value_type ведь не совпадает из-за const. Ок, мб происходит какой-то implicit conversion, но вызова copy ctorа для Foo не происходит. Так как это поведение правильно называется? Это просто заложено в язык, что non-const type is treated the same as const type? Если да, то как именно это поведение называется (если имеет название)? Желательно получить выдержку из стандарта, где такое описывается. Я сегодня весь день над этим думал, но гуглинг и чат-гпт ничего полезного не дают. Помогите, плз. Если получу ответ, то будет вопрос в продолжение топика.
https://developers.redhat.com/articles/2024/04/03/improvements-static-analysis-gcc-14-compiler
Видишь ли, вся фишка в том, что многие программы на Си и плюсах являются кроссплатформенными. И каждый компилятор генерирует свои замечания. Т.ч. у тех, кто пишет кроссплатформу, больше вариантов почистить код от багов.
>А то я понял что самые базовые знания из этих знаний помогают очень хорошо представить и сформулировать программу.
Не очень помогают. Это вообще ортогональные вещи. Даже в хаскеле категорий нет. Они просто приучают к более строгому и системному мышлению, что уже помогает. А так можно хоть философию ботать, она помогает на проблему с разных сторон смотреть. В программировании, как в игре на скрипке, решает только опыт, чем больше пишешь, тем лучше кодишь.
> Не знаешь теорию множеств, категорий, абстрактной алгебры и топологии - не умеешь кодить?
Не умеешь кодить... ЧТО? Что конкретно не умеешь кодить? Игры? Драйвера? Прошивки для роботов? Настольную программу для подсчёта пенсии?
В смысле? Студия и так такую хуйню делает, выводит предупреждения где прямо по шагам нарисовано как например может быть некорректное обращение к буферу. Видно, что перебирает все варианты бранчей и находит косячный.
Не умеешь хрюкать что умеешь кодить. У индусов понты, чтобы быть выше других надо иметь статусный символ.
>>111597
>>111606
Это всё сложно понять.
Вот я чем-то владею из "матана" (в широком смысле слова), а кто-то не владеет - и хрен объяснишь ему что эта область полезна для программирования. Будет до последнего упираться и твердить НЕ НУЖНО.
Теперь представим себя в обратном положении, что кто-то пришёл и заявляет что топология полезна. Скорее всего и полезна, но понять это невозможно, если сам ею не владеешь.
А, да! Всё-таки "полезно", а не "необходимо".
Не бывает кроссплатформенных программ. Бывают программы под винду, но они больше ни с чем не совместимы. А бывают программы под линукс, их можно портировать под винду, то есть, твоя "мультиплатформа" на самом деле говнопорт с линукса под винду. Такой софт жирный, ибо тащит за собой инфраструктуру линукса, и ограниченный, т.к. не поддерживает богатые возможности винды, а только ограниченные линукса.
В общем, когда натягивают на несколько платформ, софт естественно ограничен самой убогой из них, потому что иначе он на ней не пойдёт если написать под более навороченные. "Мультиплатформа" это та же повестка - изговнить ВЕСЬ софт опустив на днище САМОГО УБОГОГО пользователя. Софт говнодела, а софт здорового человека - писать под каждую систему отдельно, полностью используя её возможности, так чтобы софт был максимально высокого качества. Короче, как видно, линукс это рассадник повесточной пидарасни и деградации. Все кто кукарекает про мультиплатформу должны сдохнуть, ибо тянут софт в говно.
>хрен объяснишь
Раз нет аргументов за нужность, значит не нужно. Пустой кукарек делюзий дебила, который думает что нужно, а когда спрашивают конкретику, ничего сказать не может.
Так непонимающий неспособен понять. Ему надо подготовильный курс с пол-семестра, чтобы мочь понять. В этом загвоздка.
> знаешь теорию множеств, категорий, абстрактной алгебры и топологии
Представь, что оппонент знает и несогласен. Как ты аргументируешь свою позицию?
Любому видно, что браузерная какаха - УБОГА, жирно, тормознуто, ограниченно, криво. Потому что мультиплатформа - УБОГА, это опускание на самое днище.
>неспособен понять
Это отмазы дауна. Факт в том, что ты ничего не говоришь, потому что сказать ничего не можешь, идиот с делюзиями головного мозга. Как ни отмазывайся, факт молчания не меняется, пустоголовое брехло.
Давай выберем область которую я знаю, а ты нет.
Кстати, про топологию и всё остальное в оригинальном посте - это был не мой пост.
Про топологию я только знаю что это наука про дырки в бубликах, и не могу понять как она мне может быть полезна. Но легко представляю что кто-то шарящий в ней найдет прикладную пользу для программирования.
>Давай выберем
Дебил без аргументов завилял сракой. Да хватит уже обсираться, чем больше кривляешься, тем больше пруфаешь свой даунизм. Тупой детский сад.
Или у виска пальцем покрутит
Иногда лучше молчать, чем говорить.
Изначальну я пишу на Винде, а затем портирую на POSIX системы.
>Софт говнодела, а софт здорового человека - писать под каждую систему отдельно, полностью используя её возможности, так чтобы софт был максимально высокого качества.
Это выдаёт в тебе... слова не подберу... скажем так - не очень опытного разработчика. Потому что есть понятие... э-э-э-э... ну назовём его мерзко - "бизнес логика". Т.е. это суть программы, ради которой она пишется. Так вот эта "бизнес логика", она на то и логика, что она ПЛАТФОРМО НЕЗАВИСИМА. В ней зачастую даже #ifdef нет. А уже рисование на экране это дело десятое. Обычно разносится по файлам под конкретную GUI библиотеку.
Более того, твоя фанатичная упёртость говорит о том, что от кроссплатформы ты далёк.
А ты пиши всё равно. Хуесос такой обычно один, высрался из какой-то быдлятни и пытается "тралить". А нормальных анонов с десяток.
Кроме винды и линукса полно других систем. И почти все они или юниксообразные, если это ОС или используют линуксовый тулчейн для разработки, если это железо. Особенности винды (кодировки, особенности файловой системы, несовместимость с POSIX) при разработке под них обычно только мешают.
Количество названий не значит количество систем. Систем всего две, винда и линукс. Формально есть еще всякие Temple OS, но это игрушки не применяемые на практике, не считаются.
Но линукс это и есть юникс, а не замена юникса.
Ты точно вообще хотя бы краешком относишься к айти?
>но это игрушки не применяемые на практике
В твоем десктопном мирке если только. Да и с десктопом как минимум макос - далеко не игрушка. А уж если брать встраиваемые системы, сервера, там не игрушки, а серьезный бизнес, и почти везде юникс-вей.
>Юникс устарел, давно заменили на линукс.
Расскажи это IBM и HP, у которых AIX и HP/UX вполне живут. У МакОС ядро юникса. На плойках ОС, основанная на FreeBSD.
Ты точно хотя бы краешком относишься к думающим людям, а не даунам?
Смотри, винда, одно слово, но куча систем, но все называют просто "винда", хотя там не просто куча систем, а реально разные по функционалу ядра и как следствие разный функционал систем. быдло ядро 95 основанное на DOS, потом ядро NT, потом в 7 его серьезно перехуярили. Вот, как минимум три РАЗНЫХ ядра, а систем на них десяток, но нем не менее слово-то одно - "винда".
А что у тебя? Есть линукс, бсд, макос, но только на словах, а на деле-то ебаное одно и тоже, карбонная копия, абсолютно одинаковый функционал. Так какого хуя тогда ты кукарекаешь разными словами, когда на винде реально разные, но слово одно? Нет, чувак, если одно, то и называть надо одним словом. И какое слово выбрать? Ну явно не бсд и макос, верно? Только линукс, потому что линукс взлетел и макос и бсд от него пошли, а юникс давно подох и забыт. Правильное и употребимое слово только одно - линукс, так что линукс, маня, все эти ваши залупы - линукс.
>Есть линукс, бсд, макос
И всё это вместе называется юникс.
Ты не знал такого что ли? Только сейчас нагуглил?
Юниксом уже ничего давно не называется. То что ты на педивикии прочитал что было такое когда еще твой батя не родился, это не значит что сейчас оно есть. Уже давным давно никаких юниксов нет. Покажи пальцем на пользователя юникса: Ты? Я? Кто? Поднимите руки, юниксы? Не пори чушь, дебил, хватит уже срать тупостью.
> У МакОС ядро юникса.
Ага. Но внезапно не поддерживается вот это - https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_timedwait.html
И вместо стандартной POSIX функции приходится изъёбываться с dispatch_semaphore_wait
>Даже в хаскеле категорий нет
Да ну.
>Они просто приучают к более строгому и системному мышлению, что уже помогает.
>представить и сформулировать программу
>Не очень помогают
>Это вообще ортогональные вещи.
>что уже помогает
Пиздец калейдоскоп у тебя.
Но я тебя понял.
>>111606
Что угодно. Я конечно только новичок в с++, но дай мне задачу какую-то, я её тебе сформулирую через матешу, при том сформулирую по степени абстрактности.
>>111647
Ну да, наверное.
>>111652
>Раз нет аргументов за нужность, значит не нужно.
Ну докажи это. Это тоже самое, что если чего-то ты не знаешь - то его нет. В каких-то логиках так и делают, но это не универсально и должны быть особенные условия.
>Пустой кукарек делюзий дебила, который думает что нужно, а когда спрашивают конкретику, ничего сказать не может.
Так конкретно то можно объяснить, просто сложно. Это как с гегелем. Понять гегеля можно только через его философию. Никаких пересказов, только сами его работы. И тут тебе надо будет просто провести серию лекций, если ты хочешь конкретно узнать.
>Что угодно
>но дай мне задачу какую-то
Ну то есть ты сам не знаешь. Это такой же ответ, как сказать "все бабы суки". А кто конкретно суки, перечисли имена и фамилии? Нуууу все! Приведи мне пример женщины, а я тебе докажу что она сука.
Не было этой штуки никогда. GNU Hurd - мертворождённое поделие с ошибкой в ДНК. Смотрел её где-то в 2003 году. Она тупо крутила кулером на пустом месте. Походу её разработчики вообще нихуя не понимают как устроены ОС.
Нормально относится.
>Ну то есть ты сам не знаешь
Как ты сделал такой вывод? Я же тебе сказал 0 что угодно. Я не знаю, что могу сформулировать что угодно математически? Пример же данного, т.е конкретностью, можно назвать уже "дай мне задачу какуе-то", как раз для демонстрации и, самое главное, как это называют, экстраполяции абстрактностей методов что применены в данном случаях.
Ох, это уже какой-то запущенный случай.
>"все бабы суки"
Если я тебе приведу аргумент к тому, что все бабы суки, будет ли это значит то, что какая-то женщина - сука?
Но дело в ином. Когда ты говоришь.
>"все бабы суки". А кто конкретно суки, перечисли имена и фамилии? Нуууу все!
Ты не опровергаешь то, что все бабы суки. Ибо ты просто спрашиваешь у абстрактного его конкретность. А когда в ответ получаешь саму абстрактность - это не есть что-то такое, что опровергает саму абстрактность, точнее её смысла. Для примера того, что такое есть - множество что содержит само себя(ибо конкретность-абстрактность это в том числе и работа множества).
Примеры таких множеств? Множество всех множеств, не содержащих яблоко к примеру.
> А о Колибри что думаешь?
Это клон MenuetOS.
Во времена MS-DOS она была бы годной.
А нынче бессмысленна, потому как на ассемблере написана.
Маленькая и на дискету помещается? Ну и что? На тех плюсах, при умениии, можно написать то же самое и на дискету поместится.
>Походу её разработчики вообще нихуя не понимают как устроены ОС.
Походу разработчики поняли, что юниксвей не работает с ядром и разосрались.
Работает, если правильно спроектировать.
Но нахуя крутиться в циклах каких-то, когда ждёшь внешних событий? Процессор в сон и жди прерывания. Но видать разработчики GNU Hurd считали как-то иначе.
хочу скопировать их в массив fullAdress через :
я чо-то вообще не могу как норм это сделать
Приходит как-то ламер к хакеру и просит посмотреть свою программу:
- Будь добр, подскажи где у меня ошибка.
Хакер смотрит в программу ламера и отвечает:
- У тебя ошибка в ДНК.
Рой в сторону zip
https://en.cppreference.com/w/cpp/ranges/zip_view
Если нет доступа к новым стандартам наверняка давно сделали в бусте.
Попробуй написать то, что ты хочешь, на простом Си.
После этого сможешь и на С++ написать.
На картинке какая-то бессмысленная дрочь, если что.
Ноль информации для ответа.
Не веришь? Ну давай подождём пацанов - может быть это я глуп и они дадут тебе решение.
Чтобы правильно задать вопрос и получить на него ответ нужно знать хотя бы половину ответа.
>Работает, если правильно спроектировать.
Сам понял, что сказал? Похоже, нет. Поясняю как на самом деле работает:
Есть, скажем, 5 разработчиков ядра, каждый "спроектировал" по-своему. Внимание, вопрос: у кого из них архитектура "правильная", а у кого нет? Кто решает, правильно или не правильно? Ты решаешь со своего дивана на дваче? Или кто-то из них? Кто? Кто решает кого посадить в кресло главного решателя?
Ответ: Никто. Потому что юниксвей это "идите нахуй, я сам знаю как писать, не смейте мне указывать!". Такое не работает в проектах где требуется больше одного разработчика, и ядро именно такое. Юниксвей НЕ РАБОТАЕТ с ядром.
>Но нахуя крутиться в циклах каких-то, когда ждёшь внешних событий?
Потому что юниксвейный разработчик так решил, думаешь ему не посрать на твои кукареки? не нравится - пиши сам, "умные" советы со стороны параши юниксвейщикам не нужны.
Поэтому ядра пишут корпорации, а пердоядро это дебильный мем, его не могло быть с самого начала.
Нахуя для чтения из бинарного файла таскают за собой какую-то блять локаль, codecvt и прочую непонятную тяжеловесную хуету?
>Почему stream-ы такая медленная хуйня?
Может быть потому что ты их неправильно используешь?
>Нахуя для чтения из бинарного файла таскают за собой какую-то блять локаль, codecvt
ssize_t read(int fd, void buf, size_t count);
А если совсем быстро и круто хочешь, то вот
void mmap(void addr[.length], size_t length, int prot, int flags,
int fd, off_t offset);
HANDLE CreateFileMappingA(
[in] HANDLE hFile,
[in, optional] LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
[in] DWORD flProtect,
[in] DWORD dwMaximumSizeHigh,
[in] DWORD dwMaximumSizeLow,
[in, optional] LPCSTR lpName
);
Почему так? Как так вышло, что строки нет? Сборка дебажная, компилятор - mcvs
Что значит медленные, у нас же зеро кост, так падажи ебана...
Я наверное путаюсь в терминологии, но были строки, записанные на английском через нули, типа H E L L O. Это ведь юникод, два байта? Искал я также юникод. И были строки типа hello. Искал именно английский, хотя исходная строка содержит ещё кириллицу
Юникод же вроде не обязательно два байта.
Да и конпелятор мог выкинуть твои строки, соптимизировать, или еще что сделать.
>>113381
Короче я искал по-разному и вообще ничего не нашел. Я все думаю, может ли mcvs как-то хитрожопо, ради безопасности, хранить строки? Типа, вдруг это приватный ключ и т.п. Пример такого "тупого" хранения - шифр Вижинера на байты, с отдельным словарём. правда, будет известно, где словарь хранится
>ssize_t read(int fd, void buf, size_t count);
Я в курсе, ебанько.
Речь про конструктор. Глянь декомпилят, там локали подтягиваются и прочая залупа.
>void mmap(void addr[.length], size_t length, int prot, int flags,
>int fd, off_t offset)
Подводные? Почему ей не пользуются массово тогда?
>>ssize_t read(int fd, void buf, size_t count);
А, вейт, прошу прощения, анон имеет в виду posix функцию.
>
>Подводные? Почему ей не пользуются массово тогда?
Пользуются. Но для очень больших файлов, перекинув всю работу на операционную систему. Она мапит гигантский файл в адресное пространство процесса и дальше с ним работаешь как с обычной памятью. Размер файла может многократно превышать размер оперативной памяти - ОС всю кухню прячет в своих потрохах. Часто используется в базах даннвх.
Так же mmap может использоваться для прямого доступа к видеопамяти, с её помощью (если root) можно замапить видеорамять в адресное пространства проуесса и рисовать в ней напрямую. Обычной программе это нафиг не нужно, но тот же X-сервер использует её.
Может кто дать формулу вычисления Азимута по двум точкам? И нет, мне не для ЖыПыЕс, мне не нужно считать вокруг шара и прочее, просто получить градус точки "б" относительно точки "а" в двумерной системе координат.
/math/
Константная стринга вообще соптимизироваться может. Может, можно попробовать как volatile ее объявить
> соптимизироваться может.
Короче я про это хотел узнать. Как выглядит такая оптимизация? Что происходит с набором байт? Как можно так наоптимизировать, что последовательный текст пропал?
В моем представлении конст строки лежат где-то в секции констант, ну и когда что-то хочет вывестись в cout, данные копируются из этого массива. Не представляю, что может быть более оптимизированным, чем обычный линейный массив.
Другое дело - хитрожопая не мной сделанная обфускация кода ради безопасности. Но опять же, секретные ключи и пароли намного правильнее вообще не хранить в программе, а получать извне, например, файла
его нет, фристайл
Ну ты чёрт. Эмулировать биты через char (или что там у тебя) это надож было додуматься!
Ты прям когнитивный диссонанс ввзвал - с одной стороны занимаешься темой не для вкатунов, с другой стороны - ты не слышал о битовых операциях и опреациях сдвигов.
И вот это сочетание, оно источник охуевания.
Почему ты делсешь неправильно? Потому что дрочишь память почём зря. Битовые операции и сдвиги прямиком транслируются в инструкции процессора и оптимизируются в регистры. А твой подход хорОш разве только для визуализации, но работать будет раз 10 медленнее. А то и в 30 раз.
Но темой похвальной занимаешься - если не осиановишься, то далеко пойдёшь.
А вообще присмотрелся - сдвиг есть. Про битовые операции ты слышал.
Но всё равно хуйня написана.
Ищи в интернете - там есть хортшие статьи где прям на пальцаx объясняется как ловит oveflow.
Я поступал проще - мне надо было очень быстро ловить overflow 32-х битных регистров. Макимально быстро. Я их приводил к 64 битам и проверял 33-й бит.
Был бы не с телефона, накидал бы сылок.
Для начала хотелось бы узнать о каком overflow речь, ведь uint не переполняется. А 1 появляется от сдвига, что не так-то?
>с её помощью (если root) можно замапить видеорамять в адресное пространства проуесса и рисовать в ней напрямую. Обычной программе это нафиг не нужно, но тот же X-сервер использует её.
Ты про выделенную память на гпу? Маняфантазии. Напрямую работать с памятью гпу может, как бы это банально не звучало, только сам гпу.
Как можно рисовать без доступа к видеопамяти? Так же как программировать без доступа к ОЗУ?
Просто раскрываешь ладони и ждёшь пока бабочки взмахнут крыльями.
Просто слезно умолчешь драйвер нарисовать тебе что нибудь на экране
Если у нас POD объект, например десяток числовых полей и всё, без всяких строк и вложенных объектов - то move сработает точно так же как копирование, и короче никакого улучшения жизни не случится. И один хуй если хочешь тут какого-то ускорения, придется брать от такого объекта указатель и в коллекции хранить указатели "по-старинке". Так что ли?
Мув, как и копирование, КОПИРУЕТ объект
Самый быстрый способ сделать это как раз таки что и происходит при муве
То что ты хочешь сделать с указателями не копирует обьект
> И один хуй если хочешь тут какого-то ускорения, придется брать от такого объекта указатель и в коллекции хранить указатели "по-старинке"
Для таких вещей сделаны референсы
Сишный скуф, что ты тут забыл?
Какой ещё смысл? Оригинальный объект нельзя после мува использовать, это UB.
>>115267
Да, речь о том, что "под капотом". Что буквально делает компьютер при этом муве. Прошу не примешивать семантику языка.
>>115219
>Для таких вещей сделаны референсы
Ну как ты референсами заполнишь вектор например. std::ref какой-нибудь дрочить?
Короче, нахрена всё это, если можно взять указатель, и положить его в коллекцию. (потом только не забыть делитнуть его, лол, но разве не для этого существуют деструкторы).
>Ты про выделенную память на гпу?
Нет, я про обычную видеопмять память.
Зачем тебе окошки на gpu рисовать?
Из пушки по воробьям.
>если можно взять указатель, и положить его в коллекцию.
Да. Так и делается
Только или за временем жизни объектов тебе придётся следить самому.
А не знаешь, случайно, как проверить какие конструкторы автоматически сгенерировал компилятор? В дебажной сборке как-то смотреть символы, или есть более простой способ?
Ты когда мув вызываешь что надеяться получить? Какой результат?
Правильно, вызов мув конструктора и тд, которы что делает?
Копирует значения из одного обьекта и кладет их в другой
Или тебя смущает слово копирование само по себе? Представляешь существует и не глубокое копирование
> Копирует значения из одного обьекта и кладет их в другой
Лол, нет. Что за говнокод ты предлагаешь?
Гугли флаги компилятора, там можно вывести артефакты любого этапа.
Пошел троллинг тупостью, открой любой мув конструктор и сам посмотри что там происходит
Чел. Он почти буквально делает shallow copy объекта.
Помечает там рвелью-лвелью-хуелью блаблабла, но под капотом он копирует блять поля.
>>115392
Пиздец с какими даунами сижу в одном треде. Мув-конструктор не должен копировать ничего, а иначе это говнокод.
https://en.cppreference.com/w/cpp/language/move_constructor
> A move constructor is a constructor which can be called with an argument of the same class type and copies the content of the argument, possibly mutating the argument.
copies the content of the argument
умоляю, больше не пиши ничего мне
Ты видимо не понимаешь чем отличается lvalue от rvalue и что происходит при копировании rvalue. Спойлер - rvalue это не реальный участок памяти, ты его физически не можешь скопировать куда-то. Например при
> int a = 1 + 1;
у тебя нет никакого копирования результата сложения, хотя там = написано, само а и есть результат сложения.
Так же и при муве - там нет никакого копирования, это и есть тот же объект, только теперь в другом месте. А если кому-то хватает ума в мув-конструкторе не мувать, а реально копировать, то это явный говнокод, потому что по факту там обычный конструктор копирования получается.
> Ты видимо не понимаешь чем отличается lvalue от rvalue
> Спойлер - rvalue это не реальный участок памяти, ты его физически не можешь скопировать куда-то.
В универе еще до xvalue не доходили?
> А если кому-то хватает ума в мув-конструкторе не мувать, а реально копировать, то это явный говнокод, потому что по факту там обычный конструктор копирования получается
Расскажи мне чем отличается конструктор копирования от мув конструктора в POD типах, очень интересно послушать
Когда он мувает, поля класса взлетают в воздух и перелетают в новое место?
>>115436
>Так же и при муве - там нет никакого копирования, это и есть тот же объект, только теперь в другом месте.
Ты напоминаешь мне Гиппократа, который утверждал что у женщин меньше зубов, чем у мужчин. Проверить, конечно, он не догадался.
https://en.cppreference.com/w/cpp/utility/move
Хоть в треде узнаешь о крестах, лол, раз не смог сам осилить.
Это ты уже начал траллевать, поняв свои ошибки, но не можешь признать их, потому что являешься ментальным подростком.
Я тебя и стандартом могу обоссать, мне не жалко.
Самый простой способ - вывод в консоль.
И точку останова туда. Когда она тебя задолбает, ты вспомнишь зачем её туда поставил и всё поправишь ;-)
Но ведь вопрос был в том, как узнать, сгенерировался ли автоматический конструктор.
Ты что несёшь?
Я тебя возможно удивлю, но мувается X-value, а у него адрес есть.
> сгенерировался ли автоматический конструктор
Чего? Если ты не написал explicit-конструктор, то не сможешь инициализировать объект без implicit-конструктора. Компилятор выдаст ошибку вызова deleted constructor. Если надо прям проверить, например в шаблоне, то можно чекать тип через std::is_convertible к самому себе.
А ты знаешь что генерируется больше чем один конструктор? В первый раз, наверное, слышишь о таком?
> В первый раз, наверное, слышишь о таком?
Да. В крестах implicit-конструктор не генерируется если есть explicit. Никогда.
> больше чем один конструктор
Больше чем один конструктор копирования/мува, лол? У тебя точно какой-то свой стандарт крестов.
Ты перенаправляешь мои вопросы чатгпт, и потом пересылаешь сюда её ответы? У тебя контекст теряется или смешивается.
>У тебя контекст теряется или смешивается.
>У тебя
У какого "тебя", если ты разговариваешь с чатомгпт?
Программист не может разговаривать с ботом, он понимает, что это тупая программа лишь внешне имитирующая человека. На такое ведутся только тётки-сраки и секретарши.
На смену вышел, инфовоин?
> робот может написать симфонию, создать шедевр?
> вот три трека с симфонией классического жанра и три картинки с героями с шестью пальцами, но композицией
эпического жанра, желаете уточнить ваши промпты?
> ...
Hundu be like:
Читаю байт из файла
Если это 10, то превращаю по локали в КОНЕЦ СТРОКИ.
Если открыто в бинарном режиме, то превращаю по локали назад в 10.
Вернуть cChar
>>ну и когда что-то хочет вывестись в cout, данные копируются из этого массива
Ничто не мешает компилятору при выводе в cout не читать строку из памяти, а напрямую на ассемблере захардкоженные символы вывести
Ну эти символы будут в бинарнике, и крайне вероятно они будут подряд, вот я их и искал. Делать не подряд - вариант усложнения, влияющего на скорость и размер
2) Чем ограничен стек вызовов в c++? Как понять, какую глубину рекурсии можно делать?
> онраничения на размер кучи
Система его ограничивает. Разово нельзя большие куски памяти выделять. Мелкими можно.
> Чем ограничен стек вызовов в c++?
Размером стека.
>Система его ограничивает. Разово нельзя большие куски памяти выделять. Мелкими можно.
Впервые слышу. Источник?
> Источник?
Какой тебе источник нужен? Попробуй выделить разово 10 гигов рам в винде и получишь ООМ, даже если свободно 30.
>2) Чем ограничен стек вызовов в c++?
Системой.
>Как понять, какую глубину рекурсии можно делать?
Никакую. Так делать нельзя, получишь переполнение стека. Стек это системный служебный объект, не лезь в него. Делай рекурсию не засирающую стек.
Почитай про коды управления терминалом. В него можно послать последовательности начинающиеся обычно с \27 (то есть escape). И этими последовательностями можно двигать курсор, менять цвета и делать всякое такое.
Да. И вроде эта штука прямо так называется "эскейп-последовательности".
Я лет 15 назад занимался этим, смутно помню что надо обеспечивать совместимость с терминалом VT220, тогда оно будет работать везде.
https://vt100.net/docs/vt220-rm/chapter4.html
Спешу сообщить, что у тебя на скрине винапи. Кому из нас тут "лишь бы говна пожрать" остаётся открытым вопросом.
>2) Чем ограничен стек вызовов в c++? Как понять, какую глубину рекурсии можно делать?
Узнать размер стека в рантайме можно через pthread_attr_getstacksize или GetThreadInformation
Задать можно флагом линкера "--stack,размер" для gcc, под msvc вроде /F
Под линуксом можно сделать неограниченный стек (не уверен насчет винды).
Размер стекфрейма у функции можно узнать у gcc через (char )__builtin_frame_address(1) - (char )__builtin_frame_address(0) или отладчиком/дизассемблером.
>Спешу сообщить, что у тебя на скрине скрин.
Свое свинячье хрюканье оставь в своей помойке. Вопрос закрыт.
Судо не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
какой же ты говно
Через launch.json как-то.
#define move(y,x) SetConsoleCursorPoisition(lpdwHeaven, ...)
Покажи как в cmd и PowerShell работает. Даже капча подозревает нехорошее.
>Стирание строки от курсора до начала строки.
У меня консольный тетрис есть, который Esc-последовательностями стакан и фигурки рисует.
>В cmd.exe каретка переводится, но строка не стирается, получается "Ohuenny progress 50% [1K".
Так и думал, уже насмотрелся на такой мусор, работает только под башем.
Вот есть такой кусок кода, идея в том, что коннекты менеджит один тред, а сообщения составляет другой и одинаковые сообщения отправляются всем клиентам.
Проблема в том, что допустим я не хочу тратить время на составление сообщений, если клиентов нет, как мне заставить тред ждать по условию, но только один раз, а потом пропускать вейты, пока условие снова не станет false?
Пытаюсь в condition_variable, но оно блочит вообще всегда, и оба треда зависают, так как один ждет нотифая, а другой ждет коннекта.
Я хз, что тебе надо.
Берешь мутекс. Если клиентов нет, спишь на переменной, мутекс при этом освобождается. Разбудили - снова проверяешь клиентов. Обработал клиентов - освобождаешь мутекс, делаешь еще что-то.
Ну и в догонку, если клиентов нет и я дождусь нотифая, то второй анлок ни на что не повлият? Ну и даже если не повлият, как-то коряво выглядеть будет.
> как мне заставить тред ждать по условию
Чел, виндовые системные ивенты.
> блочит
Это отдельный вопрос нахуя ты что-то лочишь до того как потребуется обращение к общим данным. Ещё и бесконечные циклы, пиздос.
>Чел, виндовые системные ивенты.
На линуксе?
>Это отдельный вопрос нахуя ты что-то лочишь до того как потребуется обращение к общим данным.
Я же написал причину.
>Ещё и бесконечные циклы, пиздос.
Буквально везде так пишут, а как надо?
Используй на оба потока один pthread_mutex + один pthread_condvar вместо той хипсторской параши на скрине.
Чел я конечно в твоем разбирать не хочу, но вот на пример первые же строки судя по всему ты юзер неймспейс стд уникуе лок <мутекс> ...и¿ это тип а сам мутекс то где? Локи выглчдят так лок<мутекс тайп который к слрву можно опустить в случае стд мутекса>(&мутекс нейм)
Мютексы нужны когда есть какие то глобальные данные к которым могут обращаться разные треды.
Когда у тебя в разных потоках что то свое делается мутексы и локи-анлоки не нужны.
Если у тебя один тред как бы не взначай крутится возле данных другого и постоянно спрашивает ну что там? То надо вместо хуютексов писать асинхронный обработчик событий, а в других тредах не локеры ставить а отправку событий.
Рекомендую посмотреть в библиотеку SDL2 посмотреть как реализованы SDL_WaitEvent и SDL_PollEvent и SDL_PushEvent, так же в медиаплеере мpv есть асинхронные функции работающие через обработчик.
Я сильно не согласен свторым твоим параграфом, но спорить не буду - не хочу годноту палить. На полном серьёзе отвечаю.
мимо наелся собак на многотопочности
> один тред как бы не взначай крутится возле данных другого и постоянно спрашивает ну что там?
В таких случаях достаточно атомика. А когда ему ответят что пришло время брать данные, тогда уже и лочиться перед самим обращением к ним. Или вообще можно не лочиться, если другой поток не будет писать туда.
>Или вообще можно не лочиться, если другой поток не будет писать туда.
Вот поэтому я их и не люблю, из за того что большинство плохр понимает что в них и зачем. Нельзя читать то, во что пишет другой поток, поток который пишет блоркирует все остальные потоки что бы не произошло чтение. Что бы поток блокировался непосредственно при обращении к данным, надо уже проявить изобретательность писать всякие конструкции интересные.
оно просто ничего не делает если сдвиг больше размера типа
поэтому оно и писало неизмененный memory где 1
Если к этому сведется, значит одно из двух либо ты не понимаешь что делаешь, либо к твоей задаче/алгоритму/архитектуре что то другое не приминимо, либо вообще либо в текущей реализации.
>В итогде то всеравно сведется к блокировкам и ожиданию их снятия лол.
В хорошо написанной многопточной программе блокировки редки. Разумеется они будут возникать, без этого никуда. Но их количество будет таким малым, что в большинстве применений ими можно пренебречь.
Так ты не гномов-волшебников ищи, а смотри на реализацию, как эти блокировки используются.
>мне нужно поменять из проги время на 10-ой винде,
https://learn.microsoft.com/ru-ru/windows/win32/api/sysinfoapi/nf-sysinfoapi-setsystemtime
Но потребуются привлегии, иначе никак. И это правилно - нефиг каждой программе давать возможность по желанию левой пятки менять системное время, иначе быть беде.
>желательно при этом отключив автоматическую настройку часов (пик 2).
О, а тут уже, скорее всего, потребуется к WMI лезть или, на худой конец, в реестр.
В свое время дядя Билли славно посторался над тем что бы изуродывать си и плюсы в реализации от майкрософта до такой степени что бы исходный код было максимально геморно куда то портировать.
Современный мелкософт конечно уже не такой как при очкарике, но наследие то все равно еще болтается.
нужно достать теймплейт арг темплейта и засунуть в компайлтайм чек
>А мне надо, чтобы шёл постоянный расчёт в фоне, но чтобы при этом интерфейс пользователя не зависал.
мультипоточность в помощь
>А как такое же делать в Qt?
Не ебу как в QT, но под голые иксы точно так же как под WinAPI. Походу "цикл обработки сообщений" в Windows слизывали с иксов. А как иначе?
QT - говнецо ещё то, но наверняка там тоже можно как-то, возможно через хуки и каллбэки.
А чего тут спрашиваешь? В интернетах быстрее в 100 раз найдёшь ответ.
Документацию то открой ебтвоюмать
я плюсов не знал, и то при помощи документации таки написал асинхронную хуевину с ивентами.
> под голые иксы точно так же как под WinAPI
Не пизди, у них совсем разные реализации. В иксах просто внутренняя очередь из неё дёргается функцией следующее событие. Цикла как такового там не подразумевается.
А в WinAPI самая система вызывает твою функцию обработки событий.
В случае иксов события сам собираешь когда захочешь, у винды обработка события сразу вызывается а можно и вручную дёргать из очереди необработанные. Во втором случае задержки на события сильно меньше, чем при ручном сборе.
>В иксах просто внутренняя очередь из неё дёргается функцией следующее событие. Цикла как такового там не подразумевается.
Ты хоть сам понял, что ты сказал? Выебнуться решил?
Втыкай в скриншот до просветления.
> скриншот
Чел, ты сам этот цикл написал, иксы тут причём? Ты можешь XNextEvent вызывать в любой жопе. Алсо, посмотри хотя бы как в xfree86 писали обработку событий, до того как спиздили твой пикрил из WinAPI.
> Ты можешь XNextEvent вызывать в любой жопе.
Могу. Но смысла в этом ровно 0.
Использовать XNextEvent вне цикла сообщений это хороший способ написать говноприложение.
С таким же успехом ты можешь под Виндой в любой жопе вызывать. GetMessage, TranslateMessage и DispatchMessage. А смысл сего действа?
Если С99, то моментально. Просто меняешь опцию/имя компилятора. Например gcc -> g++.
От трёх месяцев до 6 лет. А какого ещё ответа ты хотел с таким расплывчатым вопросом?
{ ... }
Мне нужно передать только 3й аргумент, оставив первые два дефолтными
Зачем? Юнит тест на сгенереный код
В куьюте заточка под свои задачи, все там возможно и все там продумали
Не забывай, ты пишешь на крестах, ты можешь вытянуть любую либу на свой вкус и подрубить ее в кьют
А вообще, во всех книжках \ гайдах \ при старте кьюта должен быть огромный дисклеймер
ТЫ ПИШЕШЬ ГРАФИЧЕСКИХ ИНТЕРФЕЙС, ВЕСЬ РЕНДЕР ПРОИСХОДИТ В НЕМ, ВСЕ ЧТО НЕ СВЯЗАНО С ИЗМЕНЕНИЕМ ИНТЕРФЕЙСА ДЕЛАЙ В ДРУГИХ ПОТОКАХ
* рендер в мейн треде
>В куьюте заточка под свои задачи
Заточка под говно, как в любой пердопараше.
Хочешь писать нормальные программы - не лезь в линукс, пиши под винду, иначе выйдет пердопарашный огрызок из кривых костылей на соплях, который на винде будет работать так же говняно как работает линукс со своими 3% десктопа - никак, в то время как у винды 75% не случайно, задумайся.
Думай головой, иначе будешь как такой соевый ебанат.
Был нормальный человек сделавший хорошую программу на "дельфях" которая получила известность. Всё было хорошо, но потом ударила в голову соя и началось:
https://github.com/z1dev/zkanji
>This is when I decided to make it cross-platform, and chose Qt as the library for the user interface. I finally reached a point in 2017 to release this new version, and plan to develop it further.
Прям по соевой пердо-методичке закукарекал лозунги, как прекрасно, новые горизонты, бла-бла.
А потом настала реальность:
>Ой, чота сворачивание в трей глючит, в винде было всё норм, но теперь мультиплатформа, как сделать везде не знаю, пук среньк, слился.
https://github.com/z1dev/zkanji/issues/30
>Ой, чота шрифты распидорасило, в винде было сделано норм, но теперь Qt юзает свои опенсорсные либы которым насрать и всё глючит, ничего не сделать, ебись, можешь поменять шрифт на другой, авось повезет с ним, или отредактировать шрифт (!), пиздец пердорешения.
https://github.com/z1dev/zkanji/issues/38
>Ой, чота тормозит пиздец, но проблема внутри Qt, ничего не могу сделать, терпи, жри говно, и кстати, в винде 10 эти тормоза сильно усилились, а в винде 7 было лучше, так что можешь откатить винду на семерку.... просто_блять_ноу_коммент
И итог:
I'm not working on this project anymore. I wanted to make a full release and maybe add some small adjustments years ago, but for a long time nobody tested zkanji or reported issues, and I didn't want to make a full release of a possibly buggy program, then I moved on. (I'm adding this text at the start of every answer today, it's not a sign I don't care.)
Заебало это говно, забил хуй, даже компилить релиз не буду чтобы не позрориться. Адиос! (ушел в закат)
В общем был хороший человек с хорошей программой под винду, потом ебнула в голову повестка (мультиплатформа, Qt), и нет человека, кусок сои на ножках высравший вонючее Qt-говно от которого даже самому стыдно.
>В куьюте заточка под свои задачи
Заточка под говно, как в любой пердопараше.
Хочешь писать нормальные программы - не лезь в линукс, пиши под винду, иначе выйдет пердопарашный огрызок из кривых костылей на соплях, который на винде будет работать так же говняно как работает линукс со своими 3% десктопа - никак, в то время как у винды 75% не случайно, задумайся.
Думай головой, иначе будешь как такой соевый ебанат.
Был нормальный человек сделавший хорошую программу на "дельфях" которая получила известность. Всё было хорошо, но потом ударила в голову соя и началось:
https://github.com/z1dev/zkanji
>This is when I decided to make it cross-platform, and chose Qt as the library for the user interface. I finally reached a point in 2017 to release this new version, and plan to develop it further.
Прям по соевой пердо-методичке закукарекал лозунги, как прекрасно, новые горизонты, бла-бла.
А потом настала реальность:
>Ой, чота сворачивание в трей глючит, в винде было всё норм, но теперь мультиплатформа, как сделать везде не знаю, пук среньк, слился.
https://github.com/z1dev/zkanji/issues/30
>Ой, чота шрифты распидорасило, в винде было сделано норм, но теперь Qt юзает свои опенсорсные либы которым насрать и всё глючит, ничего не сделать, ебись, можешь поменять шрифт на другой, авось повезет с ним, или отредактировать шрифт (!), пиздец пердорешения.
https://github.com/z1dev/zkanji/issues/38
>Ой, чота тормозит пиздец, но проблема внутри Qt, ничего не могу сделать, терпи, жри говно, и кстати, в винде 10 эти тормоза сильно усилились, а в винде 7 было лучше, так что можешь откатить винду на семерку.... просто_блять_ноу_коммент
И итог:
I'm not working on this project anymore. I wanted to make a full release and maybe add some small adjustments years ago, but for a long time nobody tested zkanji or reported issues, and I didn't want to make a full release of a possibly buggy program, then I moved on. (I'm adding this text at the start of every answer today, it's not a sign I don't care.)
Заебало это говно, забил хуй, даже компилить релиз не буду чтобы не позрориться. Адиос! (ушел в закат)
В общем был хороший человек с хорошей программой под винду, потом ебнула в голову повестка (мультиплатформа, Qt), и нет человека, кусок сои на ножках высравший вонючее Qt-говно от которого даже самому стыдно.
Ты знатный боец с линуксом, уже узнаваем по первым двум предложениям.
Но ты не постиг Дао. Ибо тот, кто постиг Дао, в холиварах на тему Windows vs Linux будет участвовать только от скуки или чтобы повыёбываться. Ты не похож на скучающего человека, а выёбываться тебе особо нечем.
Нюанс - High DPI. Под голыми иксами отмасштабировать содержимое окна не так, чтобы вот прям легко и надо заморачиваться. А под виндой это делается легко и непринужденно. Но разве это повод отказываться от любителей Линукса и MacOS?
Если ты пишешь коммерческий софт, то большее количество поддерживаемых платформ выливается в большее количество пользователей и известность, а это конвертируется в деньги. И вот на этом моменте все религиозные предпочтения о любимой оперционной системе заканчиваются.
>Если ты пишешь коммерческий софт
Так не бывает. Ты НЕ пишешь коммерческий софт.
В коммерческой разработке ты безвольный безмозглый болванчик, раб делающий что скажут. Не ты принимаешь решение под какую ось писать. Не ты принимаешь решение на каком фреймворке писать. Это делает высший менеджмент, как он скажет, так и будешь писать. Скажут писать на паскале под дельфи, так и будешь писать. Скажут на js под браузер, так и будешь писать. В коммерческой разработке ты никто и звать тебя никак, ты даже не имеешь никакого хзначения, завтра тебя уволят заменив на другого и ничего не изменится. Так что завали ебло, пустое место, тупорылое животное. Неудивительно, что именно такие имбецилы защищают линуксную пердопарашу пребывая в манямирке где они президенты корпораций правящие миром. Просто обоссаные придурки.
А вот если ты, как в было упомянуто выше, САМ себе хозяин, сам делаешь выбор что и как писать, сам пишешь весь код от начала и до конца, и сам в ответе за то что в итоге получится, тогда остановись и подумай. Сможешь ли ты преодолеть пердопарашу, чтобы в итоге вышло что-то стоящее, а не кусок такого же кала от которого тебя самого тошнит. Возможно ли это в принципе? Подумай вдумчиво, если не хочешь кончить как этот жалкий хуесос >>122983
В галерах постоянно выбирал технологии, да и продукте есть степень свободы, поставить либу или лисапед написать.
мимо
>В коммерческой разработке ты безвольный безмозглый болванчик, раб делающий что скажут.
Ты похоже совсем макакен.
Да просто дурачок очевидно ни дня в жизни не работал, но зачем-то высирается своим "очень важным" мнением
Да, форк с кде
640x480, 0:10
Я с тобой не согласен. Могу сказать что если меня что-то не устраивает, я просто ухожу и иду туда где меня все устраивает.
Ну а то, что тебя легко заменить это уже твой осознанный выбор.
>>122983
Ну во первых, кьют не тормозит по определению потому что это гуи фрейморк, если кто-то написал/портировал код криво, ну я не вижу смысла тут комментировать.
Жалобы на медленность кьюта валидны только от тех кто заплатил бабки для того чтоб писать коммерческий продукт под камни.
Во вторых, любой коммерческий продукт неизбежно заменяется опен сорсом. И когда ты пишешь что-то что должно жить дольше 5 лет нужно думать про это. Сейчас практически под все есть открытый стандарт, в том числе под фонты. Ну а раньше нужно было просто держать нос по ветру и делать исторически правильные выборы.
Винда через 10-20 лет умрет и ее рынок игр разделят между собой консоли для людей которые привыкли платить и играть, любителей пк которые перейдут на линукс (когда будет 100% совместимость со всеми играми винды, потому что кроме игр винда качественно не решает ни одной задачи) и лаптопами где будет заточка под линукс из коробки.
Я ни в коем случае не говорю что сейчас линукс из себя представляет продукт который можно поставить бабушке и она будет счастлива, как если дать ей епл, но это неизбежно произойдет.
Кьют де факто стандарт гуи, он победил. Живи с этим.
И вообще вы все здесь присутствующие используете язык который переживет все языки (кроме своего бати).
Возрадуйтесь же, блядь, ибо вы уже сделали исторически правильный выбор с самыми жирными зп (в этой сфере интеллектуальных шлюх) и обеспеченной старостью.
К слову, про исторически правильный выбор. Была такая штука Windows CE, в нее прям много кто вбухал достаточно приличное количество ресурсов.
В любом случае токс нормален, поскольку не все одинаково везет в жизни.
Но можете себе представить уровень фрустрации девов, когда андроид перешел на котлин?
Или когда юнити умрет и анрыла станет стандартом игровых движков?
Или когда пересмотрят протокол http (нихуя не шарю, но уверен что от него перейдут к чему-то более оптимизированному, вероятно с питоном вместо js, когда питон до ума доведут).
Что будет со всеми теми людьми что вьебали всю свою молодость на изучение, блядь, выражений в джсе или оптимизации гербедж коллектора в шарпе? Это же тысячелетия человековремени.
>>123051
LGPL. Я понятия не имею что имеешь ввиду под "теперь" ибо лицензия не ребенок, так просто не откажешься. От тебя требуется:
1. Разместить исходный код изменений, которые ты внес в сорсы кьюта непосредственно
2. Если ты вкомпиливал кьют, полностью опубликовать сорцы или предоставить возможность релинкать либы, если ты прям хитровыебанный.
3. Предоставить возможность релинкать либы, уточнение п2. Если ты нихуя не трогал и не настраивал, там никаких вопросов быть не может, либы легко меняются, все символы на месте, потому условия лицензии ты выполняешь.
Все остальное вытекает из этого, грубо говоря:
1. Если ты ембеддед, то нужно отстегнуть.
2. Если ты хакер, то тебе и так похуй.
3. Если ты не хочешь один исполняемый файл то тебе нужно определиться, подвинуться принципами или отстегивать
Ну и 4, выбор большинства.
Если тебе важен просто сам фреймворк для написания своей аппки, ты просто делаешь все как обычно, то тебе нужно просто вставить копирайт лджпл кьюта в установщик и в описание продукта где это нужно (если ты конечно хочешь шипить либы кьюта вместе с прогой, иногда этого можно избежать).
И просто продаешь свой продукт где угодно и как угодно.
>>123063
Да, он стопудово залетел на какую-то неправильную галеру, где нет корпоративной культуры и большого офиса с девочками, кофе, митапами и ивентами.
ОН НЕ ЗНАЕТ ЧТО ЗНАЧИТ ВЬЯБЫВАТЬ.
640x480, 0:10
Я с тобой не согласен. Могу сказать что если меня что-то не устраивает, я просто ухожу и иду туда где меня все устраивает.
Ну а то, что тебя легко заменить это уже твой осознанный выбор.
>>122983
Ну во первых, кьют не тормозит по определению потому что это гуи фрейморк, если кто-то написал/портировал код криво, ну я не вижу смысла тут комментировать.
Жалобы на медленность кьюта валидны только от тех кто заплатил бабки для того чтоб писать коммерческий продукт под камни.
Во вторых, любой коммерческий продукт неизбежно заменяется опен сорсом. И когда ты пишешь что-то что должно жить дольше 5 лет нужно думать про это. Сейчас практически под все есть открытый стандарт, в том числе под фонты. Ну а раньше нужно было просто держать нос по ветру и делать исторически правильные выборы.
Винда через 10-20 лет умрет и ее рынок игр разделят между собой консоли для людей которые привыкли платить и играть, любителей пк которые перейдут на линукс (когда будет 100% совместимость со всеми играми винды, потому что кроме игр винда качественно не решает ни одной задачи) и лаптопами где будет заточка под линукс из коробки.
Я ни в коем случае не говорю что сейчас линукс из себя представляет продукт который можно поставить бабушке и она будет счастлива, как если дать ей епл, но это неизбежно произойдет.
Кьют де факто стандарт гуи, он победил. Живи с этим.
И вообще вы все здесь присутствующие используете язык который переживет все языки (кроме своего бати).
Возрадуйтесь же, блядь, ибо вы уже сделали исторически правильный выбор с самыми жирными зп (в этой сфере интеллектуальных шлюх) и обеспеченной старостью.
К слову, про исторически правильный выбор. Была такая штука Windows CE, в нее прям много кто вбухал достаточно приличное количество ресурсов.
В любом случае токс нормален, поскольку не все одинаково везет в жизни.
Но можете себе представить уровень фрустрации девов, когда андроид перешел на котлин?
Или когда юнити умрет и анрыла станет стандартом игровых движков?
Или когда пересмотрят протокол http (нихуя не шарю, но уверен что от него перейдут к чему-то более оптимизированному, вероятно с питоном вместо js, когда питон до ума доведут).
Что будет со всеми теми людьми что вьебали всю свою молодость на изучение, блядь, выражений в джсе или оптимизации гербедж коллектора в шарпе? Это же тысячелетия человековремени.
>>123051
LGPL. Я понятия не имею что имеешь ввиду под "теперь" ибо лицензия не ребенок, так просто не откажешься. От тебя требуется:
1. Разместить исходный код изменений, которые ты внес в сорсы кьюта непосредственно
2. Если ты вкомпиливал кьют, полностью опубликовать сорцы или предоставить возможность релинкать либы, если ты прям хитровыебанный.
3. Предоставить возможность релинкать либы, уточнение п2. Если ты нихуя не трогал и не настраивал, там никаких вопросов быть не может, либы легко меняются, все символы на месте, потому условия лицензии ты выполняешь.
Все остальное вытекает из этого, грубо говоря:
1. Если ты ембеддед, то нужно отстегнуть.
2. Если ты хакер, то тебе и так похуй.
3. Если ты не хочешь один исполняемый файл то тебе нужно определиться, подвинуться принципами или отстегивать
Ну и 4, выбор большинства.
Если тебе важен просто сам фреймворк для написания своей аппки, ты просто делаешь все как обычно, то тебе нужно просто вставить копирайт лджпл кьюта в установщик и в описание продукта где это нужно (если ты конечно хочешь шипить либы кьюта вместе с прогой, иногда этого можно избежать).
И просто продаешь свой продукт где угодно и как угодно.
>>123063
Да, он стопудово залетел на какую-то неправильную галеру, где нет корпоративной культуры и большого офиса с девочками, кофе, митапами и ивентами.
ОН НЕ ЗНАЕТ ЧТО ЗНАЧИТ ВЬЯБЫВАТЬ.
Qt дерьмицом попахивает: платное, санкционное, дак ещё и не ставится по нормальному.
> кьют не тормозит
У него рендеринг такой всратый, что даже GDI быстрее будет. Как он может не тормозить, если не способен каждый кадр перерисовывать интерфейс. Доставь ебало того, кто говорит что не могущий в 60 фпс гуй не тормозит.
А как ты ставил и какая убунта? Он все подхватывает, хотя я видел подобное, но это маловероятно, что твой случай
А зачем тебе это делать? Лучше заведи отдельные часы в своей программе, потому что как сказали - менять системное время плохой сценарий
Так без хуев, согласен.
Вообще и GDI тормознутый, все же самый оптимальный способ это vt100, я считаю
> настраивать вручную задолбаешься
> не может настроить тулчейн
Ты уверен что системное программирование это то что тебе нужно? Питон из коробки работает даже на моей кофеварке
>>123385
Если еще актуально, время форсит нтп демон\сервис, его нужно либо сконфигурить либо потушить с вертухи https://learn.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-controlservice
Даже если вы вообще не знаете шарп - это будет все равно быстрее и сильно лучше, чем ебля с культями.
> Если уж пиздец как надо гуй - делаешь его на шарпе на Авалонии какой-нибудь. Если логика пиздец нужна на крестах - делаешь динамическую либу рядом
Так всё и делается на Qt последние лет 10, а мейнстримно 3-5 лет.
Гуй на QML, логику-пиздец-на-крестах экспозированием С++сных объектов в QML.
>системное программирование
>формошлёпство на Qt
Ты бы почитал, что такое системное программирование
Да сразу видно что телега нормально сделана.
Впрочем, непонятно может это Qt с петухоном, а не с С++.
Строчки про петухон встречаются, но это может быть связано с апи для ботов.
Да нет никакой ебли, проще только в консоли писать ио
Если начинающий разработчик - я думаю тебе с радостью тут помогут разобраться в основных принципах работы исполнямых файлов
Какое-нибудь. Я слышал что у телеги боты на петухоне, и предоположил, что в том числе могут быть клиент-сайд боты, и потому в ехешнике встречаются строки про петухон.
Фар был в аппдата/роаминг недалеко от телеграма.
Не подхватывает. Я же не совсем тупка.
Скачал через впн версию с санкционного сайта, отключил временно интернет и поставил Qt. Всё сразу завелось.
Вроде работает, но всё равно нет удовлетворения от этого. Хотелось бы, что-то действительно свободное. А тут как-будто с торрента своровал.
>>123380
Надоело что? Я уже много лет увлекаюсь программированием и не собираюсь бросать.
Wix Toolset
Смотри, если ты качаешь .ран файл и ставишь кьют через установщик, он тебе сам все тулчейны настраивает (базовые)
Если через апт, то насколько я помню нет. По факту, там делать совсем почти ничего не нужно, выбрать С++ компайлер, гдб и кьют версию (камон это проще чем автокоррекцию в студии убрать)
К слову, я не помню идет ли maintenance tool в ящике, или его доставлять нужно (или он проприетарный) но хлопцы шепчут что должен идти в комплекте к qtX-default
>>123562
Насколько я понимаю все сводится к заполнению файлика где ты указываешь что тебе нужно. Никогда не юзал, но учитывая что для него нужен сервис windows installer framework, скорее всего так и есть
В кьюте, к слову, в комплекте сразу под все оси, прошу прощения за пошлость
>modern development experience for XAML
> UI is similar to WPF,
Уж лучше электрон
Неужели до сих пор не придуман способ подсунуть текстовой файл в компаилтайме как литерал?
я знаю про юниксовую утилиту xxd но она какую то хуйню выдает. Зачем мне const char COPYNG[]
нельзя что ли сделать просто
# define COPYNG " COPYNG \n\n ...\nEND"
чтоб я сам где мне надо сделал:
static const char copyng_inf[] = COPYNG;
ключами играл оно нихуя по другому не делает
Ты подразумеваешь что с++ не способен в высокоуровневые абстракции? Что это за язык то такой калечный?
Inno setup
Я подразумеваю, что если лучшее для разработки Ui что есть в С++ куте - то UI на С++ писать не надо.
Это как мемас с симейком - что это де-факто стандарт, но такое ебаное говнище, что говорит о языке многое
Чел, там сейчас QML, который на опенгл-ном контексте рисует охуенные контролы, и весь View (в терминологии MVC) можно написать на этом QML + немножко джаваскрипта. И вся эта штука относительно прозрачно стыкуется с С++ (или с питоном, если С++ не мил) в котором кишки и связь с бекэндом.
>что есть в С++ куте - то UI на С++ писать не надо.
Qt это не UI а фреймворк, в котором есть аж два UI - QML и QWidgets
Даже не смотря на то что сам дотнет есть не везде, а qt собирается даже под гайку и эльбрус, в дотнете нету никакого ui из коробки, и ты предлагаешь какой то левый уй написанный непонятно кем и который неизвестно в каком состоянии будет завтра.
DX вроде можно выбрать рендерером.
А еще можно выбрать software - только там антиалиасинг некрасивый получается.
Начальная поддержка DX12 только в октябре прошлого года появилась, допиливать хуй знает сколько ещё будут, по дефолту всё ещё DX11. Вообще qt по производительности рендеринга очень сильно от дотнета отстаёт, WinUI 3 вообще космос.
Потому что есть кьют. Бесплатный.
В нем идеальный баланс между OSI-апрувд кодом, который писал студент с сдвг, но перестал поддерживать потому что ему стало похуй и умеренным влиянем бабок со стороны дядек.
ничего против кода от студентов с сдвг не имею, работает лучше коммерческих решений, но это либа в лучшем случае, а не фреймворк
> в бинарь телеграм.ехе
Вот чего-чего, а Телеграм у меня будет жить только в мобиле и вкладке бразуера. Устанавливать его на комп никогда не буду.
Слишком мутная история с ним.
Открой для себя чюдный мир скриптинка из Делайфайла. Препроцессор не обязан уметь то, что деды в 70-х сочли лишним.
Причем здесь диды и 70, есть гну мейк есть куча юниксовых утилит сделать строку и сунуть в препроцессор проще простого, казалось бы, но до сих пор приходится изъебываться..
catch2
Boost.Test
Что значит теперь? Он всегда был или условно бесплатный, или качай исходники из репов и собирай.
Раньше он свободно скачивался, а сейчас они спрятали все ссылки на скачивание, требуют регистрации, а в РФ вообще недоступен. Хотя один из принципов оперсорса, что не должно быть ни каких ограничений и дискриминаций.
Сорцы где-то можно скачать, инфа девяностодевятка. Где-нибудь по торрентам лежат и качать их законно (собирать придется самому)
А вот собранные бинари, да еще с инсталлером и апдейтером - это уже сервис, который, как сам знаешь "частный бизнес, кого не хочу, того не обслуживаю".
Не все же супер-линуксоиды и умеют собирать из сырцов. Многие просто по гайду изучают Qt, а там всегда вариант только с установкой через инсталлер.
Для суперлинуксоидов это задачка недели на две.
У меня на прошлой работе творился этот пиздец регулярно. Собирать надо было кросс-тулзами для винды, мака и линукса (предварительно собрав сами кросс-тулзы).
Если для одной системы и нативными средствами, может повезти и соберется за денёк. Это еще более-менее.
Это знаменитые индийские программисты?
>open source offline installers are not available any more since Qt 5.15.
Исходники Qt6 QtCreator лежат вот здесь: https://download.qt.io/official_releases
Бинарники делают либо маинтейнеры дистрибутивов (как обычно у них каждый qml модуль выделен в отдельный пакет из за чего жопа постоянно подгорает)
Либо есть в сторонних пакетных менеджерах типа homebrew/linuxbrew, там как правило самый свежий, но но лично у меня их qt не работает и при сборке чего либо с ней выазят матюки на ABI glibc, короче не умеют там собирать.
В тюрьме запрещены тутаировки.
$5-10 за работу? Нехуёвые деньги можно делать, если в день раз 10 нырять.
Привыкай, установи бесплатный впн.
Анончики, может кто-то внятно объяснить, чем был так плох std::allocator?
https://cpp-lang.net/docs/std/memory/allocator_traits/
В C++11 ввели allocator_traits, кода придется писать больше:
теперь
std::allocator_traits<decltype(allocator)>::allocate(...);
вместо
allocator.allocate(...);
Я чего-то не понимаю?
Буквально в документации:
>template< class Alloc >
>struct allocator_traits;(since C++11)
The allocator_traits class template provides the standardized way to access various properties of Allocators. The standard containers and other standard library components access allocators through this template, which makes it possible to use any class type as an allocator, as long as the user-provided specialization of std::allocator_traits implements all required functionality.
>>123385
>>123396
Спс за инфу. Бля, сорян, я пиздец торможу с ответами. На самом деле по той же причине я вообще хз, когда доберусь до написания этой проги.
>>123385
В том то и дело, что это не моя программа. Мне нужно чтобы прога видела другое системное время, когда запускается. При чем желательно +- то, на котором она закончила работать. Пока меняю вручную, но, когда окончательно доебет, мб автоматизирую а мб и нет, посмотрим
Ты хуету несешь братан. Ботов для тг ты можешь писать на чем угодно, хоть на дедушкиных сях?
Берешь хттпклиент и шлешь запросы согласно апи. Все методы в апи get. Опрашиваешь сервер методом апи гетапдейт, диспатчишь хуятчишь, двигаешь офсет, обрабатываешь ошибки ибо они будут, флудвейты всякие ... получаешь респонс джсоном, десеришь его в модельку, передаешь в хэндлер ... короче на какую архитектуру говна у тебя фантазии хватит. Есть готовые либы и да на питоне либы популярны потому что пайтон дзен хуе мое, боты в пару строк, школотрон разберется. И главное ни какой еботы со строками и кодировками - как я либу для тг ботов на плюсах писал на голом винхттп.
Десктопная телега написана на кутах. Есть ли там какие скрипты какая логика на пайтоне? Возможно, почему нет. Но никакого отношения к ботапи. Помимо ботапи у тг есть еще юзерапи и да оно доступно. Ничто не мешает тебе написать свой клиент телеги под любую ось.
Ты написал выше:
>>Я слышал что у телеги боты на петухоне
Создай бота через фазера сейчас.
Открой любой браузер и напишу api.telegram.org/bot<токен твоего бота>/sendMessage?user_id=<твой айди>&text=<любой текст>
Поймешь как это работает.
Как ты надеюсь понимаешь хттп запросы к апи ты можешь слать на любом языке. Хоть на асе.
Апи на стороне бекенда. А десктопка просто шлет к юзер апи запросы, получает ответы а потом рендерит все это говно на экран. Ты нажал кнопочку чата, отправился запрос, прилетел ответ джсончиком, контролы построились хуяк муяк. Конечно там еще ебота с шифрованием, в отличие от бот апи. Боты это точно такие же чаты иерархически.
На чем написан бекенд телеги? Да кто знает. Может и на питоне.
https://core.telegram.org/#getting-started
Если интересно. Интересная задачка написать свой клиент тг.
Прям хороший челендж.
>Мне нужно чтобы прога видела другое системное время когда запускается. При чем желательно +- то, на котором она закончила работать
поэтому надо пользователю программно все поотрубать нахуй
20 лет на виндовзе
итоги
Открой исходники любого браузера что ли и посмотри как там время сделано https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Date
Не понятна суть спора.
Что то про эксепшены и ретерны и путаница с понятиями блок / стек
Блоки есть не только в коде но и в ассемблере, и стеком иминуют не только какой то аппаратный стек, но иногда и локальный контекст в языках программирования.
По первому впечатлению нижний выглядит меньшим долбоебом чем верхний но оно может быть обманчивым скорее всего оба долбоебы одинаковые.
Нижний долбаёб говорит что эксепшены всегда привязаны к блокам кода и их можно ловить сразу после ретурна. Но это нихуя не так, в сишке эксепшены никак к языковым конструкциям не привязаны, а есть даже платформы с аппаратными эксепшенами.
>Нижний долбаёб говорит что эксепшены всегда привязаны к блокам кода и их можно ловить сразу после ретурна.
Нижний вроде говорит что ретурн - это одно, а выход по эксепшену, это уже не ретурн. Сложно понять, о чем именно срач.
Нижний мудрый человек, во-первых не доебался что в Си нет эксепшенов, чем сразу бы срезал верхнего долбоеба.
Во-вторых, грамотно пояснил, что эксепшены выходят за семантику ретурнов, и они нихуя не ретурны. Происходит что-то вроде аварийного останова, который потом хендлится путём вызова обработчика исключения.
Опять таки может они спорят про эльбрус в котором нельзя просто так прыгнуть куда то там в обработчик, так как там адреса возвратов в отдельном аппаратном стеке и они автоматически добавляются/выбиваются по мере углубления/возврата.
Поэтому даже на какой то конференции рассказывали что отматывают стек до обработчика именно возвратами.
Я смотрел этот конкретный спор, но он начался где-то раньше в твиттерах или типа того.
На самих "дебатах" они просто начали сразу кидаться говном друг в друга (особенно волосатый товарищ) - и это была просто схватка двух бабуинов за доминирование, а не спор. В чём был изначальный предмет спора вообще нихуя не понятно из видео.
> майкрософтовская хуета
В пердоликсе точно так же аппаратные эксепшены ловятся, просто они строго в ядре и в юзерспейс вместо SEH кидаются сигналы.
> Покажешь стандарт Си с эксепшенами?
А сам не можешь посмотреть в стандарт? Или загляни в fenv.h, например, увидишь там функцию для кидания эксепшена - feraiseexcept. В сишке просто нет специального синтаксиса для них, но эксепшены всегда были там.
>А сам не можешь посмотреть в стандарт?
Зачем? Я знаю что эксепшенов там нет.
Ты говоришь что есть, значит можешь найти стандарт и показать где они там.
Я тебе показал функционал для работы с ними из стандарта. Долго ещё будешь отрицать очевидное?
Ну это тогда вообще пиздец, спор мартышек о балете.
> ваши эксепшены не эксепшены
Лол. Видимо авторы стандарта сишки тоже не знают что такое эксепшены, раз называют их так.
Ну так это про какие-то флаги процессора, выставляемые при делении на ноль и т.п. проблемах. А не те исключения которые кидаются из try {}.
Ты так пытаешься тралить что ли?
При делении на ноль происходит прерывание, а не флаги выставляются. Ты бы теорию подучил.
Это ты тупостью траллишь. try точно так же оставляет флаги, которые чекаются в catch. В стандарте это всё называется эксепшенами - что в сишке, что в крестах.
Так как происходит прерывание, можно сделать вывод что в Си есть эксепшены?
Или что ты имеешь ввиду?
Какое отношение try имеет к эксепшенам? Это детали реализации как их кидают и ловят. В питоне вот нет catch, что это меняет? Ты уже реально на траллинг перешёл.
Весь интернет говорит о том, что исключений в Си нет. Я знаю что их там нет.
Так что траллить пытаешь тут исключительно ты.
здесь не шваброшвабр и здесь не минусуют за незнание.
когда нибудь возможно понимание к тебе придет, а пока просто перестань нести хуйню.
Съебите в lit, господин гуманитарий и там с единомышленниками хоть всю википедию исчертите на тему упоминаний эксепшенов в документации к си, или жизни на луне.
Что ещё расскажешь? Эксепшенов настолько нет, что в винде есть SEH с полноценной реализацией как в крестах, а у линукса сигналы.
Философ в программировании по определению шарлатан, ибо философия о людях, а не о технике. В программировании могут быть парадигмы, это не философия. Тут шарлатаны используют слово "философия" чтобы придать веса своей брехне.
Заставил работать 70% <type_traits> на C++98, потел знатно с этой черной компиляторной магией.
Очень ценю теперь новые версии C++, какой же старый C++ блевотина.
> майкрософтовская хуета
оче приятная штука была, доступная и при написании драйверов между прочим
В NeXT c Objective-С тоже так было
И в Амиге так было, вообще все родные американские операционные системы (за исключением unix world) пилили свое подмножество системного языка, свои скриптовые языки, свой неPOSIX итд. Майкрософт чуть ли не самая последняя компания которая пошла по этому пути, но уже в отличии от других гейтс добавил к этому агрессивный маркетинг воспитывающий мысль что MSVC = Си, Windows = Стандартная ОС на компьютерах.
Сейчас майкрософту времена режима билла отвратного тяжело аукаются, они хотят раст, хотят джаваскрипт в качестве интерфейсного скрипта, но удаленность винды от позикс вынуждает майкрософт самой все это добавлять а потом еще поддерживать как старое говно. А винда давно уже столько не приносит, битва за серверы пройграна, за суперы даже никто не пытался воевать, остались только офисы которые с радостью бы сидели до сих пор на виноус хр/7 если бы их не заставляли обновится.
Единственное спасение для винды - убрать все досовское наследие и сделать как эпл юниксовый юзерспейс с позикс совместимостью. Полумеры и перетягивание одеяла на себя которые предпринимает мс как не приносили эффекта так и не принесут его в будущем.
Штук 80, не более.
Больше всего кода пришлось на проверку для std::is_function и std::is_member_function_pointer
Я могу компилировать современный код на C++20 с крутейшими библиотеками по типу {fmt} и оно будет работать в многопоточке хоть под Windows XP.
В принципе, работать можно даже под Visual Studio, нашёл гайд в интернете.
https://colinfinck.de/posts/targeting-25-years-of-windows-with-visual-studio-2019/
Почему? Ручками дофига удобно собирать проекты? Или писать эти малопонятные, монструозные макефайлы?
Двачую адеквата.
> CMake гавнооо рРЯЯЯЯЯЯЯЯЯЯ
Ни одного аргумента почему. Утята не могут объяснить в чем их неприязнь.
> УДАЧИ ХЕЛЛОУВОРЛДЫ СОБИРАТЬ УИИИИИ ХРЮЮЮ
Firefox CMake-ом собирается кст.
Что значит не нужно? Такая система команд проще, чем писать эти душные макефайлы, в которых чёрт ногу сломит. Мало того их надо каждый раз дописывать, если в проект добавляются новые файлы. Если у тебя 100500 файлов и 100500 файлов заголовков, то сиди и прописывай ручками 201000 строк в макефайл. Интересно, какова вероятность ошибки при этом?
Какие крестовые ИДЕ вообще существуют?
Вижла - только под винду, платная, тяжёловесная, тормозящая, с зондами от микрософт
Клион - платная, тормозящая, жрущая озу как не в себя
КуТэ Криейтор - условно-бесплатная, кривой интерфейс из 90-х, ноль кастомизации, сборщик свой QMake, а не CMake
Коде::блок - устаревшая, надо вручную всё донастраивать, постоянно что-то отваливается, не работает как надо
В итоге, лучше писать код в текстовых редакторах с подсветкой синтаксиса и собирать в консольке.
Можно вообще на ассемблере писать в консольном редакторе. Даже компилятор не нужен будет!
Нужен будет ассемблер транслятор, чтобы переводить ассемблер мнемонику в машинный код
аутизм + ретроградство
ты даже если прямо сейчас напишешь ИДЕАЛЬНУЮ сборку, то вся индустрия будет еще лет 15 сидеть на симейке а тебя говном поливать
Visual Studio и RAD Studio. CLion жирная и пердопараша, но если это не проблема, то думаю можно пользоваться, судя по WebStorm и PyCharm от той же конторы которые лично немного юзал, действительно работает.
>КуТэ Криейтор
Куте это говно-язык сам в себе, не С++, так что нахуй.
>Коде::блок
Убогий блокнот не ИДЕ, с таким же успехом можно вим дрочить.
Потому что никто не осилил. Слишком сложно. Только в плюсах есть 100500 компиляторов, линкеров, менеджеров зависимостей, исторических систем сборок и уже написанных либ, которые всё это говно используют. Никакого стандарта нет (только стандарт самого языка). Те же header-only либы появились не от хорошей жизни.
Похожая картина в JS, но там всё это написано не по необходимости, а потому что так хочется макакам.
Потому что такое может себе позволить только раст, хаскел и прочий ноджс, так как:
1. они все нужные для работы библиотеки собирают и таскают с собой, тогда как си и плюсы часто линкуются с какими то сторонними библиотеками, зачастую даже закрытыми-проприетарными.
2. на их поле нет других систем сборок и альтернативных репозиториев. У си и плюсов нет репозиториев а систем сборки более одной и за каждую топит отдельная группа пользователей.
Упомянутый выше cmake это вообще не система сборки, это конфигуратор сборки проекта. Этакий препроцессор для GNU Make на своем языке. Помимо GNU Make есть еще Ninja Build который предпочтительнее для крупных проектов, так как make - тормоз.
А в линукс в какой ИДЕ сидеть?
Симейк может запустить скрипт на пистоне, собрать инкскейпом битмап из векторов, или даже ttf шрифт с монохромными иконками.
Причем при пересборке проекта это все пересобирать не нужно, так как симейк это не система сборки, это конфигуратор проекта, и он идеально сочетается с git репозиториями.
Карго же представляет из себя npm-подобие что на мой взгляд огромный просчет разработчиков этой системы.
Как человек пришедший в плюсы из мира джаваскриптов ответственно заявляю что npm-подобные репозитории это устаревший архаизм времен распространенности svn и роста популярности таких вещей как Packagist из php. Там неудобно размещать и обновлять свои пакеты, из за этого версии там постоянно отстают от гитхабовских.
Там постоянная проблема с версиями и совместимостью, через год уже ничего толком собрать невозможно. Гит лешен всех этих проблем, там можно форкнуть себе конкретный комит конкретного бранча, форка оригинального проекта и включить в свой проект. Гит репозиторий может размещаться на локальном компьютере, корпоративном хабе или еще где то, абсолютно похуюгде. По словам Торвальдса они и пытались победить проблемы контроля версий с чем успешно справились, но люди которые пишут менеджеры пакетов продолжают думать в более простой парадигме svn и поэтому адок продолжается.
> Стмейка нету
> Иде нету
Пиздец
Тоже хочу разрабатывать приложения под линупсы. Реально устроится на такую работу вообще?
Это наверное на уровне заводов или даже хуже. Половину времени будешь ебаться с багами этого куска говна, вторую половину будешь ебаться чтоб qt не тормозило на планшете за 10к дерева.
Это же заебись, можно писать мейкфайлы, а можно и не писать.
Раз Qt не дают нам качать свои программы, то сделали отечественные аналоги. Аврора IDE не хуже хваленого зарубежного Qt Creator'а.
Да, для трёх платформ. И это правильно. Старая школа.
Вижуал студия бесплатная для домашнего использования, и она в разы пизже чем все остальное, вместе взятое. Для работы - контора мне лицуху купила без проблем.
Если у тебя проблемы, что она ТЯЖЕЛОВЕСНАЯ И ТОРМОЗНАЯ - то ты студент с 2мя гигами и 2мя ядрами ноутпуком для учебы, и твое мнение не учитывается. Можешь хоть в фар менеджере свои хелловорлды шлепать, только не надо писать свое охуенное мнение где-либо
установить операционную систему вместо линупса.
>Если у тебя проблемы, что она ТЯЖЕЛОВЕСНАЯ И ТОРМОЗНАЯ - то ты студент с 2мя гигами и 2мя ядрами ноутпуком для учебы
Блять, 64 битную версию последнюю поставил, уже проц обновил, оперативку побыстрее разогнал, м2 ссд купил
А go to file все еще ТОРМОЗИТ, я начинаю вводить название файла, а он только через секунду появляется
Ну вот что еще мне сделать можно?
ui кстати кал говна, поскорей бы майки научились в него
Не знаю, пишу ya make -r а что дальше мне похуй.
VS Code збс, есть под линупс.
Но не IDE, да.
>>127331
Заебись операционка кстати, интерфейс на Qt+вяленд и нормальный линукс под капотом. Умели же в нокии делать https://www.youtube.com/watch?v=AmeNhyoU7T8
У меня не тормозит. Вообще.
Приукрашиваю. Если дотнет проект собирается, то относительно долго. Можно успеть прочитать твойо ответ, возразить не успею. При этом собирается достаточно проект большой - нечто уровня "энтерпрайз" (как там оно в корпоративной среде назыввется?).
А ежели С++ проект, то в этом режиме Вижуал Студия работает как интепретатор. Нажал F5 и оно тут же в режиме отладки стартануло. Если не трогал заголовочных файлов, то проект компилируется в миг.
> А go to file все еще ТОРМОЗИТ
Чую это у тебя не Visual Studio тормозит, а MS Windows.
По какой причине - не знаю. У меня так на старом железе было.
Допускаю что занёс какую-то заразу. Новое железо с новой лицензионной ОС - ничего не тормозит.
Впрочем, "новое" железо не товое и новое, гарантийный срок прошёл давным давно.
>Чую это у тебя не Visual Studio тормозит, а MS Windows.
>По какой причине - не знаю.
Ехидный блинчик.жпг
Креатор самый топ.
Приведу пример: на днях отлаживался, и ни силион ни вскод не могли корректно дебажить код шаред либы, а креатор смог.
Платная и тормозная
>>128950
Не смог привыкнуть к интерфейсу. Список открытых файлов, а не вкладки как везде. Нет функции автосохранения файлов, надо жать ctrl+S как 20 лет назад. Нет интегрированной консоли. Работа с гит тоже прикручена для галочки, пользоваться неудобно.
>>128953
Только под винду, тормозная, устаревший монструозный интерфейс.
Других больше и нет. Альтернатива только Makefile
Автосейв кода чаще раза в минуту очень важун для программиста да, иначе твои пару строк хэлоуворда пропадут.
Особенно на фоне утверждения о том что автосейва и терминала нету
Вс код скачиваешь просто и работает, а клион надо на торрентах искать версию и активировать по всяким мутным схемам.
Вс код занимает со старта 200 Мбайт, с открытым проектов где-то 500Мбайт, а продукция жидбрейнс сразу отжирает 3-4гига. Не на все компах есть столько ОЗУ. Также клион грузит процессор перманентно, постоянно что-то там делает. Такое ощущение, что там майнер встроен.
> надо на торрентах искать версию
Зачем? Качай просто с сайта джетмозга.
> активировать по всяким мутным схемам
Просто спизди у китайцев ключ. Или поставь сервер лицензирования, он на всех их IDE сразу будет работать.
> с открытым проектов где-то 500Мбайт, а продукция жидбрейнс сразу отжирает 3-4гига
Вот не пизди. Пикрилейтед один и тот же проект открыт, что за 10 процессов электрона висит одному хрому известно. Он ещё и врам жрёт больше чем полноценный хром.
> постоянно что-то там делает
Потому что это IDE, а не текстовый редактор. Сейчас там даже построчный автокомплит встроенной мелкой нейросеткой есть. По подсветке синтаксиса Нова ебёт всё остальное, clangd и интелисенс даже рядом не валялись, это по сути правильный решарпер, а не как в студии костылями пришитый. Я как попутно питонист-млщик вообще никогда с чарма не слезу уже, слишком уж большой отрыв по функционалу от всего остального, в крестах ещё можно подумать чтоб на студии сидеть, но обоссаный интелисенс уже бесит.
По силиону по большей части согласен.
Опять же качается с офф сайта и активируется фри ключем. Нова, когда крайний раз пробовал, не корректо отображала тред локал и атомики, в отличии от клангд.
Анон подскажи как вкатиться в CMake, чет нихуя с разбегу не пынямаю что и как
В симейке все очень сложно.
либо расскажи в чем конкретно проблема, либо юзай meason.build аналог симейка на питоне
Хочу собрать проект из 30 файлов, никаких библиотек кроме STL и шиндосовской API
Так чтобы он работал на MSVC(с шиндовс) и Clang-cl (с пердоликса)
Это не вопрос,а желание сбайтить кого нибудь на написание скрипта вместо тебя.
возьми какой нибудь проект (например ggml) скопируй оттуда симейкфайл к себе в проект, поправь то что нужно, убери то что не нужно, , пробуй собрать.
Лезут ошибки - гугли, смотри в документации как и что.
>>129988
>Это не вопрос,а желание сбайтить кого нибудь на написание скрипта вместо тебя.
Мне это в хуй не упало, я сам хочу такую залупу писать. Просто хочу понять с чего начать
>возьми какой нибудь проект (например ggml) скопируй оттуда симейкфайл к себе в проект, поправь то что нужно, убери то что не нужно, , пробуй собрать.
Ок, гляну
> в отличии от клангд
clangd как минимум на майковской STL отрыгивает которая на шланге без проблем собирается даже под линукс и в модули плохо умеет. У Новы нет проблем ни с чем из этого.
Как будто лучше есть, лол. Как кто-то кроме майков полностью реализует 20/23 стандарты, так и приходи со своим мнением.
>ненужной модульности
Она нужна, просто MSVC говно ебаное.
>нн..ноо... стандарты быстрее реализуются
кому не похуй, а? Самое в таких вещах главное это стабильность. GCC, в отличие от ненужного проприетарного кала которым только виндузятни пользуются(ака MSVC) компилирует реальные вещи на которых весь современный мир работает, например ядро пердоликса.
В Clang С++17 работает, в GCC C++20 реализован, чем хороши эти два компилятора у них уже оч давно стабильный ABI(уже 15 лет как один и тот же Itanium ABI).
Тем временем MSVC обоссаный не может даже стандартизировать свои интрисиксы, в то время как в Itanium компиляторах все лаконично и понятно, есть приставка __builtin
> В Clang С++17 работает, в GCC C++20 реализован, чем хороши эти два компилятора у них уже оч давно стабильный ABI(уже 15 лет как один и тот же Itanium ABI).
> тем временем шел уже 2024 год
Вот пример.
>_BitScanReverse(result_ptr, mask)
И что это за говно? Вот нахуя здесь указатель блять? Нахуй мне указатель для ебаного числа?
>result = __builtin_clz(mask)
Я реально не знаю как можно проще и понятнее написать. Разработчики GCC продумали всю эту хуйню на годы вперед и оно работает пизже и стабильнее.
Тем временем аж до 2015(!) у MSVC не было стабильного ABI, из версии в версию совместимость херилась
любитель словить сегфолт, ты? Никогда ничего не писал кроме хелловорлда? Написал std::println("Hello World"); как в новой книжечке и радуешься жизни, да?
Что такого в C++23 что тебе ЖИЗНЕННО необходимо прям сейчас и похуй на баги?
Ах да, GCC и <stack_trace> реализует, которого до сих пор у мелкомягких фанатиков ИТТ до сих пор нет. С++23 же, че они так?
В кутекриейторе все настраивается, и симейк там поддерживается, надо при создании проекта указывать чтоб вместо кумейк использовался симейк
Кто то уже выше писал про ретроградство и аутизм, так вот это про тебя
> чем хороши эти два компилятора у них уже оч давно стабильный ABI
При этом в шланге С++20 такой забагованный, что они некоторые фичи просто выпилили, например корутины. Ахуеть стабильность. Сразу видно лучше майков.
> простую и удобную систему сборки как у шарпа
Проиграл. Ты видимо никогда не сталкивался со сборкой огромных фреймворков, там если что-то с зависимостями происходит, то ты просто нахуй идёшь, даже руками это говно не накостылить. И про удобство XML ты явно троллишь, потому что в дотнете всё в XML, даже Аллах на XML написан.
>Ах да, GCC и <stack_trace> реализует, которого до сих пор у мелкомягких фанатиков ИТТ до сих пор нет. С++23 же, че они так?
huh?
Я xaml разработчик с 10ти летним стажем, я уже привык. Да и кроме многословности минусов у xml нет
Ну кланг это же корпопотивная параша на подсосе гкгла и эпла. Не стоит ожидать. Кланг нужен для клангд и флрмата. ну и каксть ллвм для друших говноязыков. Как компилятор си спп есть гцц
Меня трясет просто ужас, хотя уже весь интернет перерыл с самыми распространенными вопросами по плюсам
Что могут самое страшное у Джуна спросить?
> Что могут самое страшное у Джуна спросить?
Спросят сосал ли хуи и делал бочку. Опыт от двух лет нужен.
Неа
Как бороться с ромбовидным наследованием.
В каком порядке вызываются конструкторы и деструкторы при наследовании.
Чем map отличается от unordered_map.
List от vector, array, span.
Ну и дебильные вещи, которые я надеюсь тебя не спросят:
Сколько памяти занимает пустая структура?
А если отнаследована?
А если у родителя есть виртуальные методы?
Почему make_shared предпочтительнее, чем shared<T>{new T}
Как вызвать ошибку pure_virtual_call
Потому что на с++ сегодня не начинаются крупные проэкты, тк это эзотерический вымерающий язык. В такой системе просто нет необходимости.
>почему для крестов нельзя создать такую же простую и удобную систему сборки как у шарпа?
А с чем сравниваешь? Какая именно система сборки для крестов тебе не понравилась?
Обычно за него по рукам ещё на этапе архитекторного планирования пиздят.
Этот вопрос чисто узнать, знает ли человек про виртуальное наследование или нет. И если знает, то как оно устроено и какие подводные камни.
Но такое спрашивать - чисто самоутверждение.
Для этого завезли пайп-оператор. Всё это выкинуть можно.
> Как бороться с ромбовидным наследованием.
Чето про виртуальное наследование. Не помню, ниразу в коде этого не видел за 11 лет, что я программист.
> В каком порядке вызываются конструкторы и деструкторы при наследовании.
Не помню, вроде база -> наследный создание, наследный -> база разрушение. Опять же похуй, если честно.
> Чем map отличается от unordered_map.
Алгоритмическими сложностями операций.
> List от vector, array, span.
Тоже самое
> Сколько памяти занимает пустая структура?
По моему 1 байт, т.к. нельзя 0. Но там какая-то хуйня в стандарте есть с no_unique_address, тогда может и ноль в определенных кейсах.
> А если отнаследована?
sizeof(void)
> А если у родителя есть виртуальные методы?
Тоже sizeof(void) ? Или там 2 указателя? Хотя какая разница.
> Почему make_shared предпочтительнее, чем shared<T>{new T}
Хуйня аллоцируется рядом вроде. Но там какая-то чушь что с С++хуйзнаеткакого это уже вроде не работает, хз.
> Как вызвать ошибку pure_virtual_call
в душе ниибу
Лычка сениора уже 7 лет
> Как бороться с ромбовидным наследованием.
Чето про виртуальное наследование. Не помню, ниразу в коде этого не видел за 11 лет, что я программист.
> В каком порядке вызываются конструкторы и деструкторы при наследовании.
Не помню, вроде база -> наследный создание, наследный -> база разрушение. Опять же похуй, если честно.
> Чем map отличается от unordered_map.
Алгоритмическими сложностями операций.
> List от vector, array, span.
Тоже самое
> Сколько памяти занимает пустая структура?
По моему 1 байт, т.к. нельзя 0. Но там какая-то хуйня в стандарте есть с no_unique_address, тогда может и ноль в определенных кейсах.
> А если отнаследована?
sizeof(void)
> А если у родителя есть виртуальные методы?
Тоже sizeof(void) ? Или там 2 указателя? Хотя какая разница.
> Почему make_shared предпочтительнее, чем shared<T>{new T}
Хуйня аллоцируется рядом вроде. Но там какая-то чушь что с С++хуйзнаеткакого это уже вроде не работает, хз.
> Как вызвать ошибку pure_virtual_call
в душе ниибу
Лычка сениора уже 7 лет
VAlige IDE
Может несколько версий Qt на машине стоит, собирается под одну, а запускается с dll от другой, может не находятся dll с плагинами.
Ну и как прошло? Что спрашивали?
Да я уже и явно задавал путь к либе. Тем более что с коре и гуи норм линкуется, да и вызрвов то нету все равно. Херня.
Разумеется на ровноме месте в кути пробелм нет, хотя я им и не пользуюсь на постоянной основе, но пару проектов старых собрались пошли легко, проблема с конекретным проектом.
Повторюсь, никаких вызовов кутишного в сборке нет. Ломает сам факт линковки с кутивиджетс.
Но вообще делал я это из праздного любопытства, это не моя работа и не моя проблема.
подозреваю что то не так с прагма вик
>В каком порядке вызываются конструкторы и деструкторы при наследовании.
В таком в котором подразумевает парадигма ООП, скомпилируй с -O0 и посмотри
>Чем map отличается от unordered_map.
Тем что не гарантирует упорядоченность данных при перечислении.
>Сколько памяти занимает пустая структура?
Нисколько
>А если отнаследована?
Столько сколько унаследованная.
>А если у родителя есть виртуальные методы?
Размеры указателей.
Про остальное не слышал.
Мы вам перезвоним.
Указатели на методы класса/функции нужны потому что иногда нужно указывать на методы в скомпилированном бинарнике?
Чел ты пряник.
Нет, их используют, когда у тебя одна функция зависит от другой, причём заранее неизвестной. Может, эти функции в разных либах, а может, есть сложное условие выбора нужной функции из десятка возможных. И в таких случаях просто передают указатель на нужную функцию в качестве аргумента.
Это было особенно актуально в сишке, но в плюсах есть другие способы косвенной передачи управления, например, через виртуальные методы. Но ты вряд ли до них дошёл.
Я вообще пересаживаюсь с питона и матлаба, в том же питоне нет указателей и он с памятью не работает вообще никак.
Там внутри одной функции можно сразу вызывать функцию.
В питоне вместо указателей используются ссылки ровно с той же целью. Вместо указателя на функцию тупо передаётся ссылка на функцию.
> он с памятью не работает вообще никак
В модуле ctypes это есть, там тебе и указатели, и утечки памяти, и UB, и сегфолты.
Ссылка и указатель разные вещи -
ссылка указывает на стекпоинтер в конкретной процедуре которая запущена;
указатель указывает на адреса функций или данных в памяти.
Все функции во время запуска приобретают адреса (указатели)
Если функция имеет внутри статичные переменные либо как в плюсах обращается к данным в private секции, то передача адреса функции например библиотечной функции не будет иметь доступа к static переменным внутри функции (это в Си) или private части (в плюсах), так как они находятся на стеке и не доступны никому извне, поэтому в таких случаях вместо адреса функции (то есть просто имени в коде) нужно передать ссылку:
SetCallback( &my_callback_fn_with_statics, arg1, arg2);
QtConcurrent::run(this, &MyClass::method, arg1, arg2);
Что бы библиотека дергала не просто какую то функцию из памяти которая будет работать в своем контексте, а возвращалась сюда же в этот контекст. Разумеется лучше таким не злоупотреблять.
Что касается ссылок в питонах и пхп то там они могут означать все что угодно, ведь там как правило эмулируется стек некой стековой машины (виртуальной машины) и реализован контекст может быть как угодно.
> ссылка указывает на стекпоинтер
Чел. Ты даже не неправ.
> указатель указывает на адреса функций или данных в памяти.
Вот тут норм.
> Все функции во время запуска приобретают адреса (указатели)
Школьник своими словами об auto.
Какую то хуйню вообще написал.
Сдается мне ты пытаешься понимать адреса, ссылки и указатели (внезапно все трое абсолютно разные ипостаси одного и того же) с точки зрения языковой абстракции, тем более такой высокоуровневой как плюсы (кто бы что не говорил). Забудь об этом, это все сугубо низкоуровневая поебень из области ос+железо.
Будет Юнион в 4 байта, которым будет сложно пользоваться
если ты не сидишь на системе где бул это не 1 байт
Зачем же ты анонимные поля.
Разметка сожрала звёздочки но мне похуй
Пиздюля на ревью
В который разубеждаюсь что диды еще сто лет назад все предусмотрели.
не уверен нужен ли тут юнион мне кажется что без выравнивания компилятор будет каждый бит пихать в регистр и сравнивать с единичкой, а не байт с байтом по битовой маске. Надо будет проверить.
И ты наверное думаешь, что quit будет младший бит байта? А это не гарантируется. Размер bool тоже может быть любым.
Никто так не пишет
Смысл в том что бы как раз не использовать битовые операции проверяя значение в конкретном бите, пусть этим занимается компилятор.
И пусть flags не сбивает с толку он не будет использоватся по факту. А если ты подразумеваешь что флаги могут залезть на второй байт, то нет, такого не может произойти.
Так пишут только лохи.
Четкие посоны убирают знаковые типы и пиздячат на самописном импровизированном асме.
unsigned a0,a1,b0,b1,p0;
__asm_arch_ldw(i1,a0);
__asm_arch_ldw(i2,b0);
__asm_arch_fmuls(a0, b0, c1);
__asm_arch_fsubs(c1, a0, b1);
__asm_arch_fcmpeq(b1, c1, p0);
>>133817
ну во первых юнион по идее не позволит, в нем данные располагаются строго определенным образом.
А во вторых мне то как раз все равно где он их захочет расположить, поэтому юнион убрал нахуй.
Порядок битов определяется машиной а не компилятором.
Он в моем случае на него вообще похую, я не знаю что ты доебался с ними.
Значит, ты считаешь, что Undefined behavior, Unspecified behavior и Implementation-defined behavior - это одно и то же, так?
Будет уб, если у тебя динамическая библиотека сделана одним компилятором, и программа, которая ее использует - другим, и там в интерфейсе битфилды.
Если ты не вылезаешь за пределы своей экосистемы то канеш пофиг.
компилятор генерирует машинный код, который либо будет исправно работать на целевой машине либо не будет. И абсолютно поебать что ты там другими компиляторами накомпилируешь, они точно так же либо рабочий код выдадут либо не рабочий.
Я то понял, так как смотрю в ассемблерный выхлоп периодически, а вот понимаешь ли ты о чем говоришь я не уверен.
Так просто смотрю, и нихуя не понимаю.
на сегодня вроде бы осталось одно практическое применение объединений - а именно когда требуется получить побайтовый доступ к примитивным типам
>а именно когда требуется получить побайтовый доступ к примитивным типам
а именно когда требуется получить побайтовый доступ к внутреннему содержимому примитивного типа
> на сегодня вроде бы осталось одно практическое применение объединений
А как же в glm
struct vec3{
union {
struct {float x, y, z;},
struct {float r, g, b;}
...
}
}
>они точно так же либо рабочий код выдадут либо не рабочий.
Это равнозначно тому, что у крестов есть стандартный ABI для каждой системы, которого придерживаются все компиляторы. Что не так. Следовательно ты пиздобол.
Opinion discarded.
>вроде бы осталось одно практическое применение объединений - а именно когда требуется получить побайтовый доступ к примитивным типам
Ты трактуешь юнионы как какую то объектную плюшку языка, что нормально для программиста на ооп плюсах.
Но люди которые придумывали Си они создавали чуть более высокоуровневый ассемблер а не язычек с плюшками-хуйнюшками. Если ты будешь в си делать побитовые операции например над флоатом, то компилятор сделает преобразование в инт, битовую операцию, и преобразование во флоат во флоат. При этом на ассемблере ты можешь просто скопировать вещественное число на целочисленный или какой нибудь общий регистр и просто вызвать команду (например and чтоб знак убрать).
Второй пример - если ты будешь знаковый инт шифтить вправо то, он подставит арифметический сдвиг с учетом знака, а не простой.
Что бы всего этого не происходило тебе надо выразить в коде что переменную следует воспринимать как
union uni_t { floar f; int i; unsigned u; };
union uni_t a, b;
a.f = arr_floats;
b.f = arr_floats[1+i];
a.u &= ~0x80000000u; // fabs();
b.u &= ~0x80000000u;
if (a.f > b.f) / do stuff /
в ассемблере а и б будут простые числовые переменные, которые будут загружатся из памяти в целочисленные регистры и после битовых операций копироваться в вещественные и сравниваться вещественным сравнением. Без вызова команды преобразования которая нам все испортит.
сахарок
ля, челик
у тебя нет другого способа получить побайтовый доступ к содержимому примитивных типо, только через объединение
вот и все
зачем еще что то выдумывать сверху
указателем можно.
В принципе и флоат можно указателем переинтерпритировать в целочисленный, просто указатель тебя наебет с порядком байт, а в юнионе байты будут слева направо для программиста, а для машины согласно ее порядку.
> синий экран
В винде такого не может быть из юзерспейса. Винда кинет SEH эксепшен да-да, в сишке не существует эксепшенов о некорректном доступе к памяти, если его поймаешь процесс даже не крашнется. Если у тебя случается BSOD, то это всегда в ядре что-то отъёбывает, в теории оно и из-за твоих действий в юзерспейсе может отъебнуть, например если кернелспейс драйвер хранит какие-то данные в юзерспейсе и крашится при их повреждении, но это тогда вопросы к криворуким драйверописакам.
Никаких прерываний там нет. Это софтовый эксепшен при обращении в защищенную память.
Исключения (эксепшены) это то что обычно указывает на место спровоцировавшее либо выбросившее его, включая весь стек вызовов. Аварийный останов или что там операционная система делает это не исключения.
Чел, прекращай бредить. Никакого останова не происходит там, в винде именно системные эксепшены кидаются ядром при некорректном обращении к памяти. Процесс крашится с Access Violation только если такой эксепшен не обработан.
https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-exception_record
> If the process is not being debugged, or if the associated debugger does not handle the exception, the system attempts to locate a frame-based exception handler by searching the stack frames of the thread in which the exception occurred. The system searches the current stack frame first, then proceeds backward through preceding stack frames.
В шин95 бывало.
>ns-winnt-exception_record
Ну так это системная хрень причем здесь си?
Но интересно, теперь критиков эльбруса можно макать ебалом в винду где обработка исключений тоже через ядро реализована.
Хотя кстати они возможно и делали ее для итаниума тоже.
Ну а если я поставлю обработчик sigsegv, библиотека будет ловить исключение под шиндой?
> причем здесь си?
А причём он тут, в самом деле? Зачем ты вообще про него вспомнил?
>>136230
Ты никогда не видел как софтовые дебаггеры делают? обычный аппаратный дебаг палится слишком просто Например в том же Cheat Engine. Там просто ставят на участок памяти запрет на обращение к ней и при первом же обращении летит EXCEPTION_ACCESS_VIOLATION. Точно так же можно любые сегфолты ловить. Минусы естественно есть - оно пиздец медленное, один раз можешь такое сделать, но тысячи эксепшенов в секунду уже будут тормозить дико.
Ну так ты же саркастнул под спойлером,
Рисовал школьник.
NULL TERMINATOR
Звучит конечно угрожающе но на деле это всего лишь нулевой символ который разрывает строку и раскидывает ее кишки по округе то есть обозначает ее окончание.
И актуально это только для сишки, в плюсах и работа со строками на уровне скриптовых языков и nullptr_t из коробки есть.
k&r читаешь два раза от корки до корки, приложение А в книге читаешь столько раз пока не снизойдет озарение, обязательно выполняешь все упражнения
после этого можешь приступать к изучению с++
Так в высокоуровневом программировании все сахарок, ты уже освоил ассемблер я надеюсь?
тут я задаю вопросы
> А почему тогда символы вместо русских букв?
M A N I F E S T
Ты как будто в первый раз делаешь гуй для винды.
Это не для винды это кросплатформенный тулкит.
>>102519
Сдается мне ты делаешь что то неправильно.
то что WxWidgets поддерживает utf-8 не значит что его в код на плюсах можно пихать. Ну то есть пихнуть то можно, но любая русская буква будет как два символа вместо одного. Тебе нужно делать как предлагает тулкит, то есть в какой то языковой фаил писать строки на кириллице и какому шаблону они соответствуют.
Думал, в низкоуровневых крестах есть какая-то встроенная библиотека для этого, но поиск в инете выводит на разного уровня костыли типо пикрила - то раздели, это раздели, дополнительную память выдели.
Нахуя это все, если число по умолчанию в компе хранится в двоичном виде. Ну ок, к битам обращение дольше чем к байтам, но неужели дольше чем вот таким говнокодом переводить десятичное в двоичное. Или всю двоичную дрочь люди оставляют в инстиутах, а на работке она редка, и потому забивать хуй на производительность нормально но кресты же про производительность.
Какие десятичные в какие двоичные?
>Думал, в низкоуровневых крестах
Не правильно думал:
1) кресты высокоуровневый ООП язык.
2) в низкоуровневых языках никогда ничего нет, на то они и низкоуровневые.
>Какие десятичные в какие двоичные?
Вводит пользователь для своего удобства десятичное число. Программист обращается к нему типа number или func(number, i), чтобы получать bool значение двоичного разряда, и чтобы летало нахуй.
>кресты высокоуровневый ООП язык
Самый низкоуровневый из высокоуровневых.
Блядь, там индексация короче, двач не рисует квадратные скобки.
короче по коду понял это какое то декодирование в двоичные числа. Вот так вот компилятор cоптимизирует цикл как ему удобней
inline uint32_t decToBinary(int n) {
uint32_t binaryNum;
for (int i = 0; i < 32; i++, n /=2)
binaryNum = (n % 2) << i;
return binaryNum;
}
Самый низкоуровневый из высокоуровневых это си.
> uint32_t binaryNum = 0;
> binaryNum |= (n % 2) << i;
Ну мы же здесь не в детском садике, сам бы поправил.
printf("binNum: 10 %x\n", decToBinary(10)); // binNum: 10 a
printf("binNum: -10 %x\n", decToBinary(-10)); // binNum: -10 fffffffe
std::vector<bool>
printf("binNum: 10 %x\n", decToBinary(10)); // binNum: 10 a
printf("binNum: -10 %x\n", decToBinary(-10)); // binNum: 10 fffffffe
просто перепечатывает разряды в массив?
так тогда
union binNum {
struct{ unsigned int
b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1, b8:1, b9:1,
b10:1, b11:1, b12:1, b13:1, b14:1, b15:1, b16:1,
b17:1, b18:1, b19:1, b20:1, b21:1, b22:1, b23:1, b24:1,
b25:1, b26:1, b27:1, b28:1, b29:1, b30:1, b31:1, b32:1 };
int num;
};
union bitNum;
bitNum.num = 10;
bitNum.b2; // 1
> Non-constexpr function 'std::sqrt' cannot be used in a constant expression
Погодите, это реально?
>В 26
А что не в 39?
Мне правда интересно как это получилось так что constexpr ввели в с++11, а до sqrt это всё добралось в 26?
Все кто хотел компайл тайм писали свою реализацию? звучит как шутка
видел конечно, в 26 стандарте его как то изменят?
Натуральное десятичное число можно представить как сумму 2 в натуральной степени 0, 1, 2... То есть суммой 1, 2, 4, 8..., где слагаемое либо входит (1), либо не входит (0). Здесь цикл остатком деления проставляет коэффициенты существования или нет этих слагаемых (0 или 1) по возрастанию.
Например, массив 0101 значит 01 + 12 + 04 + 18 = 10 в десятичной
Блядский двач, там в конце где цифры склеились парами между ними знак умножения
Ну так представить можно и бабу у себя в кровати, только по факту то все числа на машине являются двоичным кодом его не нужно ни конвертировать ни декодировать.
Команды сравнения или побитовые операции есть чуть ли не в каждом языке. Я не понимаю что к этому еще можно добавить.
>>138259
В приложениях с гуем обычно используется асинхронное многопоточное программирование
> асинхронное многопоточное программирование
Как мне его на коленке реализовать то? Я приложения с гуем только на котлине писал, но там всё за меня уже реализовано.
Да как блять, библиотеку возьми, sdl или qt там есть.
В qt сигналы-слоты поддерживают многопоток, можешь на них делать. Посмотри примеры, там все базовые вещи есть.
> union binNum {
> struct{ unsigned int
> b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1, b8:1, b9:1,
> b10:1, b11:1, b12:1, b13:1, b14:1, b15:1, b16:1,
> b17:1, b18:1, b19:1, b20:1, b21:1, b22:1, b23:1, b24:1,
> b25:1, b26:1, b27:1, b28:1, b29:1, b30:1, b31:1, b32:1 };
> int num;
> };
Зумеры не знают про сдвиг и побитовое И...
>Зумеры не знают про сдвиг и побитовое И...
Конкретно для таких штук есть битсет
https://en.cppreference.com/w/cpp/utility/bitset
У меня в НИИ имени Пердоли запрещено std использовать. Нормальный вариант покажи.
> У меня в НИИ имени Пердоли запрещено std использовать. Нормальный вариант покажи.
https://stackoverflow.com/questions/47981/how-to-set-clear-and-toggle-a-single-bit
Выбирай любой понравившейся вариант
про битовые операции слышали даже бабки у подъезда твоей мамаши, когда твой батя к ней цикличные сдвиги делать ходил. А вот про юнионы знают не все.
Что будешь делать, когда понадобится аналогичное решение для разно разрядных чисел? Городить bitSet64, bitSet32, bitSet16, bitSet8?
добавлю в юнион шорты и чары
добавлю лонг и всего подва раза если прям вот пиздец никак без 64битных чисел
Если у тебя вопрос только к трудоемкости написания, то замечу что битовые операции тебе никак жизнь не облегчат а только усложнят. Если ты хоть где то на бит наебался или перепутал тип у тебя вся программа идет по пизде и ты не знаешь где твой косяк. Здесь такого не произойдет потому что телебоньканье битами берет на себя компилятор. Более того он может и векторные подставить, тогда как ты будешь по одному байту на регистр ложить и шифтами туда-сюда дрочить еще возможно и не правильно.
>Городить bitSet64, bitSet32, bitSet16, bitSet8?
я напишу для этого темплейт
и тут в твоей голове на макушке приоткрылась щелочка к богу
Visual Studio Community.
> Это же так работает?
Да, но шабашить всё же придётся очком. В свободное время можешь пограмировать сколько угодно.
Качай книгу "The Problem Solvers Guide To Coding". Проходи задания. Прокачивай скилы. Повышай продажи.
Нет, нет, очком вообще не буду ничего делать. Я им только сру. Шабашить именно программированием.
Это шутка или совет?
>Я же смогу шабашить по 20 минут в день и зарабатывать по 1к долларов в месяц?
10k часов и может быть начнешь что-то зарабатывать
а может не повезет и не начнешь
мне не повезло
Блять, ты и сюда пришёл
Почему? Я решил, что это базовый язык, пускай просто для понимания как работает комп буду учить. А насчёт фриланса, так разве в нём не должно быть меньше конкуренции?
Ты прав, если нет работы, то нет и конкуренции
Работа во фрилансе больше похожа на 1с бухгалтерию, знать как работает компьютер не нужно, и даже вредно, совсем другая работа и другой менталитет требуется.
>для понимания как работает комп
Кресты относительно высокоуровневый язык, но даже знание ассемблера тебе не даст понимания работы современного компьютера. Читай Таненбаума для начала.
Так С++ говно или чё? Мне понравилось что он фундаментальный, просто ради прикола прочитать сайтик по освоению.
Потому что проекты на сисиплюс нежизнеспособны без команды, которая постоянно с ним пердолится.
У меня сложилось мнение, что джава нежизнеспособный язык на текущий момент. Или я не прав?
мнение? я что то даже и не задумывался так move переделать
>>142753
того что ты хочешь не существует
>В крестах вроде язык норм
До мув семантики еще не доходили в университете?
> раст
> страдаем как в крестах
это ты еще до реального страдания не доходил
Семантика это когда стандартом языка предусмотрено, мув в плюсах это функция библиотеки.
ты не поверишь...
Как же ты ахуеешь, когда увидишь что действительно делает atd::move return reinterpret_cast<T&&>(std::remove_cv(t))
В идеальном случае не делает ничего, просто свапается указатель на внутреннюю кучу пежду двумя объектами, в осбых случаях подставляются сгененрированные функции вроде ::move_allocator<Т> там их несколько штук, вроде для массивов специальный предусмотрен и еще для каких то
в чем он не прав
тут надо просто отличить ид от другой валидной конструкции языка. невалидная и без тебя не сконпелировается
только не говори что принялся бы тут полноценный парсер qualified-id пердолить
Не constexpr? В с++29 пофиксят?
Не понял в чем проблема.
Вообще как я понял из доков обе функции определяют является ли символ буквой алфавита или номером в таблице символов.
В таблице символов которая задается сетлокалом, понятное дело такое при компиляции не вычисляется.
Надо использовать какую то функцию для валидации хэшайди ну или тупо написать
if (!(str >= '0') || !(str <= ':') || !(str >= 'A') || !(str <= 'z') || !(...))
так даже лучше будет для бранчпредиктора и для оптимизаций.
>Как же хочется нормальный, компилируемый в машинный код, язык.
пишешь на приплюснутом си и норм
Многие богатыри пытались, да соблазняло их ООП окоянное, операторами разными да инлайн конструкторами бесовскими.
как это решит проблему анальной ебки со сборкой и либами
Проблема в том что все либы написаны на полном зоопарке стандартов от сишки до С++17, стиль кода везде разный, системы сборки разные, API такое разное что часто надо писать обёртки на обёртки сишных либ, кроссплатформенность везде номинальная, часто у либ ебанутые зависимости типа буста или гну-пердолиб. В итоге ты знаешь что хочешь написать, ты знаешь как написать, но сидишь и ебёшься со всем этим говном вместо написания кода. Ну или сам пишешь велосипед на чистом std, теряя кучу времени на бойлерплейт, хотя в большинстве языков этот велосипед уже в std или в std-подобных либах.
Мне иногда хочется взять написать простенькую утилитку на крестах в пару сотен строк, но потыкавшись в либы и оценив перспективы ебли с ними я просто иду и пишу тормозной говнокод на питоне за 15 минут или на шарпе, если надо немного производительности.
>Проблема в том
Проблема в том
>я просто иду и пишу тормозной говнокод на питоне
что в ситреде питоноговно серет. Настряпало свой питоно говнокод за 15 минут, а остальные 24 часа серет с ситреде.
Могу себе позволить, свободный человек. Кто-то живёт полной жизнью, кто-то пердолится со сборкой либ.
Ну вообще нет. Хорошие вакансии есть и не эмбед. Да и эмбед разный бывает - я в свое время с большим интересом писал лютую прошивку для многотерабитных роутеров. Но так же работал и с полной хуйней, типа микроконтроллеров - там рили скучная залупа, к программированию отношения имеющая немного.
Если ты ВКАТУН - твоя задача год-два поработать на любой работе, а потом идти в яндекс или кашпировский, и учиться нормальному С++
Хуй знает где там вообще в яндексе плюсы.
На серваке у них джава наверняка, веб на жабаскрипте.
Приложения - аналогично.
Может в нейросетке (которая нихуя найти не может) есть что то на плюсах но сама библиотека наверняка на си.
Вотчина плюсов это прикладное ПО и Игорь.
А так же хайлоад и прочий HPC. Из нестандартного - ядра ОС и эмбедщина.
В хуяндексы меилрушки за плюсами идти бессмысленно, надо идти в Unigine Gaijin или в госы на Qt под линукс писать.
Есть два стека: на одном корутины точены на другом спинлоки дрочены. На какой сам сядешь, на какой нам прод посадишь?
Без понятия, но думаю если ты будешь активно контрибьютить в их движок (они его на хитжаб выложили) то тебя всяко разно оценят и возьмут. А так может и нет.
>>145709
Ну хуй его знает я слышал что им еще завалишин серверную часть писал, Хотя может как раз с переходом на нейросети переехали на плюсы.
Сам нашел какой-то способ через приватную структуру, но выглядит всё равно как какое-то уёбство
Так никаких проблем в этом быть вобще не должно
Объявляй в хедере, определяй в цпп, все тоже самое что и с публичными методами
Модули ещё не завезли к вам в деревню?
Действительно проблем нет, а у меня это почему-то сходу не выходило, видимо проспаться стоило
спасибо за ответ
Нет, не нужно.
Качаешь сурс с любого зеркала, тясячи их. Собираешь что нужно.пцтх
Просматривал вакансии — C++, ООП, Qt, STL, сторонние библиотеки.
Что прям точно нужно знать? Сколько времени займет вкат?
brew install qr6
> STL
Забавно, что эту часть стандартной библиотеки всё время обособляют, будто надо учить отдельно. Вот прям будут происходить челы, которые специально не учили STL, если в вакансии забыть его упомянуть.
>STL не в библиотеке находится а в компиляторе
> STL в его плюсовом фронтенде
Ты сам то понял что сказал?
> >STL не в библиотеке находится а в компиляторе
> > STL в его плюсовом фронтенде
> Ты сам то понял что сказал?
Да он вообще пряник. Буилтины с плюсовой либой перепутал. я уже молчу что линковка стандартной либы по умо лчанию видна в флагах компилятора
пытаюсь в vs code поставить OpenCV, оно требует Cmake
устанавливаю расширение, а оно не работает
любая команда в консоли пишет, мол, нет такого
Компилятор C++ ты тоже ставил через расширение?
Я не про билтины а про то что в "стандартной библиотеке" в основном низкоуровневые функции для реализации ввода-вывода, выделения/освобождения памяти итд. Это важная библиотека без которой плюсы не смогут даже хеловорлд в консоль вывести, но это строго говоря не libboost и не фреймворк.
Да с фронтендом компилятора я тоже слегка сиранул, но только потому что я имел в виду собственно темплейты и константные выражения (кто же знал что STL не про них вообще).
Может тебе еще интернет эксплорер поддерживать, wmf и директикс? Иди в майкрософт стор библиотеки покупай, шизойд.
И OpenSSL это BSD библиотека.
Ну давай на раст посмотрим. Сходу две либы нашёл:
https://github.com/seanmonstar/reqwest
https://github.com/http-rs/surf
Обе умеют в нативный TLS без зависимостей, итоговые бинарники по 1.5 мб. Есть ещё несколько либ поменьше, но лень проверять.
На шарпе в стандартной либе поддержка всего этого есть, при АОТ-компиляции в машинный код дотнета в зависимостях нет бинарник 5 мб, всё ещё меньше крестов, лол.
> Может тебе еще интернет эксплорер поддерживать, wmf и директикс?
Для начала бы перестать городить костыли вместо использования функционала ОС.
>Ну давай на раст посмотрим
>На шарпе в стандартной либе
А давай ты просто нахуй пойдешь и все?
Нет, теперь ты должен перекатиться в раст или шарп.
А хуй будешь?
К сожалению таков с++ путь. Казалось бы, совсем не веб макаки а умные настоящие программисты, но на какие библиотеки и инструменты не посмотри то сплошное говно
Вон, даже анончики готовы это защищать с пеной у рта
Вобщем самый простой способ это взять 7мб ОпенССЛ и не париться, с++ это тяп ляп либо всё делаешь сам
Да мы все поняли семен. Плюсы говно и библиотеки все говно и программы говно, иди лучше шарпи на пидарасте, в сто раз веселей и библиотеки не скучные.
Что есть в расте, что есть в плюсах? Все.
Что есть в плюсах, что есть в расте? Ничего.
Раст - это весь функционал плюсов и еще тысяча мощнейших фич и оберток + разнообразных крейтов на любой вкус. А главное - если так хочется писать код уровня си без удобных растовских абстракций и библиотек, как на плюсах, пожалуйста, тебя никто не заставляет. Но зачем?
Темплейтов например.
Кормлю тебя исключительно из интереса что ты выпукнешь.
Может что то оригинальное.
В крестах хоть нет боровчекера и unwrap. Уже это ставит кресты на голову выше пидораста. Единственный плюс раста - это либы в репозитории, ставящиеся без ебли. Хотя это тоже отчасти минус, потому что в любой либе ещё 50 либ зависимостей.
яп и инфраструктуре вокруг него скоро пол-века будет;
в конце девяностых к примеру ты мог просто поставить с++ builder и у тебя сразу же был компилятор, отладчик, ide, с системой проектов и системой сборки, а более того проблема сторонних либ в том числе решалась и компонентами, которые ты тоже тупо устанавливал в ide и уже через пару секунд ты мог использовать этот компонент накидывая себе на форму приложения, либо используя именно как либу; более того все компоненты с дельфи ты мог использовать и в билдере а там их было сотни и тысячи
и это всего лишь один пример в истории с++
а были и qt, и решения от майкрософт, и gtk...
те это для тех нытиков-ньюфагов которые думают что у с++ не было комплексных решений "из коробки", они были и есть!
но сегодня подход так называемого modern с++ в котором вам да, придется поебаться собирая свой паровозик из опенсорсных либ, причем используя или нет понравившиеся вам системы автоматизации сборки и пакетные менеджеры, причем на тех редакторах и отладчика которые вам нравятся; но за гибкость нужно платить
Вот кстати сразу видно кодера, а не залетного.
Еще понятно когда либы зааисят от всяких злиб зстд фритайп де факто стандарт ... , но когда что то абстрактное пихают, особенно а как правило так и бывает это не дает никаких примуществ, это бесит.
В душе не ебу что такое траитсы
>>149040
>это либы в репозитории
Вот это одна из главных ошибок в восприятии его инфраструктуры, там в репозитории не либы, а исходные тексты которые собираются в монолитный проект с межмодульной оптимизацией. Что само по себе конечно хорошо, но шаг вправо-влево - расстрел. Раст почему то физически не заточен на то что его библиотека будет поставляться в бинарном виде и к ней придется динамически линковаться, в нем проще прилинковаться с сишной/плюсовой библиотекой через прокладку чем со своей.
Его инфраструктура заточена на монолитные консольные программы, а сам язык заточен на динамические парсеры xml/html/css/svg/yaml и прочие деревья. Там нет указателей, ведь хранить указатель в постоянно меняющихся деревьях проблемно, там при любом обращении к списку осуществляется обход всегодерево, нельзя сохранить итератор с какой то позицией, потому что движок браузера может в любой момент может все либо часть данных переносить и у них поменяются указатели.
Но как обычно какие то ушибленные фанаты перелезшие с js-фреймворков на теперь бегают с ним как с серебряной пулей.
> Что плохого в unwrap?
То что это очередная текущая абстракция. Литералли каждый вызов функции требует от тебя обработать ошибки этой функции. Даже дефолтного поведения нет, только unwrap, вызывающий панику. Точно так же как голые указатели текут и перекладывают обязанность менеджмента памятью на высокоуровневый код, так же и в расте куча подобного говна, посылающего нахуй любую инкапсуляцию.
> контрить борров чекер
Боровчекер это очередная текущая абстракция, требующая выстраивать архитектуру высокоуровневого кода в зависимости от низкоуровневых реализаций. Если я хочу передать мутабельную ссылку, то меня обязывают сделать это особым способом. Особенно хуёво когда боровчекер триггерится при изменениях в существующем коде и надо менять все места использования этой переменной.
В крестах хотя бы можно не использовать их. В отличи от раста, где ты обязан ебаться с ними. Причём оно повсюду.
> В крестах хотя бы можно не использовать их
И как ты собираешься мув семантику не использовать?
Да даже вся стл это большая протекшая абстракция
> В отличи от раста
так не используй ни unwrap ни borrow checker, пиши как на сишке с классами
>>149048
> в 90-е что то было, щас этого нет, вместо этого зоопарк компиляторов, систем сборок чтобы совладать с которыми приходится делать отдельные команды для сборки проекта
спасибо за гибкость
> пиши как на сишке с классами
Чел, ты точно раст видел? Если бы можно было написать fn unsafe main() { } и писать всё как на сишке, то никто бы и не жаловался на всё это говно.
прекрасно его видел, какая из семантик тебе мешает сделать си с классами?
или ты не знаешь что можно сырые указатели и в расте использовать?
> указатели
Как они тебе помогут избавиться от боровчекера? При чём вообще твои указатели, шиз?
Ясно, о борроучекере только по наслышке слышал?
Как он тебе будет мешать использовать си с классами?
> При чём вообще твои указатели, шиз?
у поинтеров нет времени жизни
Вот ты явно никогда не трогал раст, раз прочему-то думаешь что боровчекер только для указателей.
Ну смотри, у меня к тебе простой вопрос: Как тебе бороу чекер мешает на расте писать как на си с классами?
Если на него не отвечаешь, то считай что слит
> Как тебе бороу чекер мешает на расте писать как на си с классами?
Передать один объект в разные функции? Передать по ссылке? Или ты предлагаешь всё указателями обмазывать? Тогда я делаю вывод что ты и сишку никогда не видел.
>Передать один объект в разные функции?
Ну и вспомни как это в си с классами делается - правильно, через указатели
А так как они стирают лайфтам до тебя борроу чекер не доебется
Твой референс это буквально указатель с привязанным лайфтаймом
> Или ты предлагаешь всё указателями обмазывать?
> сишку никогда не видел
это шутка такая?
> правильно, через указатели
Неправильно. Иди нахуй уже, хуесосина тупая.
> это шутка такая?
Это у тебя надо спросить нахуя ты предлагаешь передавать всё по указателям, выкидывая производительность нахуй.
Copy trait на тип поставь чтобы он себя как сишечке вёл
Ну вот нахуй ты вобще своё мнение высераешь если ты в теме полный ноль?
> поставь
Ты вроде говорил как на сишке будет, а теперь уже надо костылить? Что предлагаешь делать если у объекта из либы нет копи-трейта?
>Что предлагаешь делать если у объекта из либы нет копи-трейта?
То это не си с классами
Ты когда в си пишешь a = a у тебя что бля происходит?
А есть какая то возможность посмотреть что в ассемблере делается? Оно алоцирует структуру как объект что ли или что, почему данные на стеке функцией то съедаются
Пока ты не покажешь как сделать пикрилейтед в расте без костылей с тобой не о чем дальше разговаривать.
> А есть какая то возможность посмотреть что в ассемблере делается?
Конечно есть, у себя скомпиль и посмотри, хзы может аналоги godbolot есть
> почему данные на стеке функцией то съедаются
Считай что тут структуру а мувнули в функцию b, а раст следит чтобы после мува ты не мог трогать эту переменную
>>149313
Ты реально тупой или не понял что я тебе в сообщении написал?
Нет, тут скорее делает структуру POD типом
Чел, повторю ещё раз - без костылей. Ты так и не ответил что ты сделаешь если объект из либы не умеет копироваться.
> как писать на си с классами и использовать библиотеки которые не си с классами
Никак, пишешь на си с классами, значит и используешь сишные или подобные либы
Т.е. писать на расте без раста? Заебись ты придумал, с учётом того что даже в std много чего не умеет копироваться. И это всё ещё не объясняет зачем мне раст с derive-костылями и оборачиванием объектов во всякое говно в попытках обойти боровчекер, если в крестах можно без этого.
> Т.е. писать на расте без раста?
то есть писать на расте как си с классами, что как ты говорил невозможно, и борроу чекер нас убьет
> зачем мне раст
я ебу зачем тебе раст?
> то есть писать на расте как си с классами
Ты так и не показал как это сделать без derive-костылей. А для передачи по указателю ты наверное Rc притащишь, да? Я уже молчу про типы. Все эти классические "2 плюс 2 равно пошёл нахуй" - прям как в сишке, да.
Раст нельзя просто взять и скомпилировать как си или плюсы, надо ставить rustup и настраивать проект.
>Считай что тут структуру а мувнули в функцию b, а раст следит чтобы после мува ты не мог трогать эту переменную
Структура (в си) это просто метаинформация для компилятора о размере и составе куска данных. Как в данном примере она может влезать в одно машинное слово и представлять из себя обычную числовую переменную в 4 байта.
Создатели раста судя по всему представляют структуры как именованные списки в js/typescript (типа let a = { a: 123, b: "ABC" };), что в принципе выдает в них js-макак
и так же как в js где все объекты передаются только ссылками, авторы раста впиздячили глобальные правила на копирование/перемещение и возможность их задания для конкретного объекта.
В си так можно складывать.
> Создатели раста судя по всему представляют структуры как именованные списки в js/typescript
Хуйню несёшь
> А для передачи по указателю ты наверное Rc притащишь, да?
Нет, притащу указатели
> Без костылей
> Сделай так чтобы некпируемый тип стал по волшебству копируемым
Ну ты даун или что?
Ну да, и карго на ноду не похожа, и язык функциональный не из за этого, и вообще все совпадения случайны.
> Сделай так чтобы некпируемый тип стал по волшебству копируемым
А при передаче числовых переменных они тоже со стека пропадают?
> по волшебству
В сишке не существует некопируемых типов. В крестах для этого явно надо удалять конструктор копирования. А вот растокостыли - это реально волшебство издевательства над людьми.
не трясись, по делу есть что сказать?
>Числовые переменные копируемы
Таким образом приходим к пониманию что "структура" в расте это js-object подобие а не си-подобная структура.
> буквально две разные вещи
под нодой разумеется имелся в виду npm который и пакетный менеджер и инсталер/билдер/ранер.
>под нодой разумеется имелся в виду npm
тогда у нас получается все нормальные пэкедж менеджеры это нода
> Таким образом приходим к пониманию что "структура" в расте это js-object подобие а не си-подобная структура.
ты сам то понимаешь что говоришь?
нет это хуевый менеджер где постоянный адок с версиями и зависимостями.
>ты сам то понимаешь что говоришь?
Структура в си могут быть локальными, могут быть глобальными, могут быть вообще объявлены приватно внутри конкретных процедур.
Структура (как я и сказал) это просто метаинформация о размере данных и размерах сегментов из которых они состоя.
Можно и обычное число интерпритировать как структуру при условии разумеется что их размеры совпадают.
В джаваскрипте "структуры" это алоцированные в памяти объекты со скрытыми атрибутами, в расте же "структуры" это типы со скрытой метоинформацией.
Разница только в том что у первого атрибуты появятся только непосредственно во время создания объекты и могут быть изменены во время исполнения, у второго же статично приколочены к типу.
>это типы со скрытой метоинформацией
какой информации? в компиляторе?
в си\си++ думаешь компиляторы информацию о типе не хранят?
>есть раст
Раст это один компилятор и всё от этого отталкивается. Приходи, когда будет полная спецификация/стандарт.
>И как ты собираешься мув семантику не использовать?
Huy(Huy&&) = delete;
Huy&
operator=(Huy&&) = delete;
Ну раст по идее можно без рантайма собирать и в этом случае да вся информатся существует только на время конпеляции.
Без какого рантайма, шизик. Его без std только можно собрать, всё остальное как и было останется.
вот и мне интересно узнать что у тебя в голове происходит, чем по твоему рантайм раста занимается
в реальном мире в рантайме нет информации о типах ВООБЩЕ
Ну я то провожу аналогию с виртуальными машинами, разница лишь в том что VM это обычно байткод и стековая машина его исполняющая. В расте ничего подобного нет, тогда остается только проверка границ массивов, правильность обращения к ним, ну и менеджмент памяти и указателей.
А теперь объясни как не имея на руках информацию о типе рантайм будет что то проверять? Как без информации о копируемости/перемещаемости "структуры" он будет очищать после нее память?
Не, одно дело когда просто в машинный код просто все подставляется (как в плюсах ну и в расте без рантайма) но мы то говорим именно про рантайм.
> проверка границ массивов, правильность обращения к ним
не нужна информации о типе вообще, просто машинно проверяет чтобы ты не вылез за границы памяти
> менеджмент памяти и указателей.
Всё в компайл тайме, рантайм этим никогда не занимается
Сам подумай, если тебе бороу чекер выдает ошибки в КОМПАЙЛ ТАЙМЕ, то за каким хуем и главное чем будет заниматься рантайм?
> А теперь объясни как не имея на руках информацию о типе рантайм будет что то проверять?
Со стека всё само удаляется, с кучи программист явно или неявно
> Как без информации о копируемости/перемещаемости "структуры" он будет очищать после нее память?
Точно также как и в плюсах, только компилятор явно знает где можно вызывать деструктор, а где не надо
В плюсах например если ты сделаешь b = std::move(a); у а все еще вызовется деструктор, и да их вызовется два
> как в плюсах
В плюсах как раз таки есть информация о типе в рантайме - RTTI
> рантайм этим никогда не занимается
Вот тут ты пиздишь, любая динамическая память управляется в рантайме. Зеро-кост памяти тоже не существует, ты везде одинаково платишь за алокации/освобождение.
> то за каким хуем и главное чем будет заниматься рантайм
Оно в компайл-тайме только определяет момент уничтожения объекта, сама память в райтайме освобождается. Ты не поверишь, но даже джаваговно в некоторых ситуациях может в компайл-тайме определить что объект не нужен и удалить его без сборки мусора.
> у а все еще вызовется деструктор
Чем дальше читаю твою поеботу, тем тупее она становится. При муве деструктор не вызывается, что произойдёт со старым объектом ты сам решаешь в мув-конструкторе. Именно поэтому использование объекта после мува это UB, а не гарантированное уничтожение.
> у а все еще вызовется деструктор
> При муве деструктор не вызывается
=)
считать до двух надеюсь умеем?
> любая динамическая память управляется в рантайме.
Это даже комментировать не буду, просто полное непонимание того что такое рантайм языка
кому то смешно, а мне таких собесить приходится
>Со стека всё само удаляется, с кучи программист явно или неявно
>не нужна информации о типе вообще, просто машинно проверяет чтобы ты не вылез за границы памяти
Не понял вот этого виляния жопой причем тут стек?
Если раст мувает "структуру" то она явно не на стеке, а в памяти, нельзя убрать или переместить данные со стека если они там объявлены.
>Всё в компайл тайме, рантайм этим никогда не занимается
А чем он тогда занимается? Что ты имеешь в виду под рантаймом? Я имею в виду рантайм библиотеку раста а не условный железный рантайм.
>Сам подумай, если тебе бороу чекер выдает ошибки в КОМПАЙЛ ТАЙМЕ, то за каким хуем и главное чем будет заниматься рантайм?
Он как раз выдает ошибки в рантайме, у раста есть такая возможность, он сходу собирает всю информацию о типах и тут же тебе подсвечивает то что обычный синтаксический парсер отследить не в состоянии, о том что переменная объявленная выше перемещена. Си и плюсам надо зупускать препроцессор компилять объектные файлы и даже когда он все скомпилирует он не увидит ошибки в том что данные куда то перемещены а ты к ним обращаешься у них нет рантайм информации об этом, это будет понятно только по фапкту происшествия. Так уж си/плюсы устроены.
>что такое рантайм языка
Это c++ тред, долбоеб, тут машинный код
Рантаймы языков иди в питон/жс/шарп тред обсуждай.
Не переживай, на следующей лекции вам расскажут что и в плюсах есть рантайм
Чел, std::move ничего не перемещает, лол. Ты просто скастовал a в r-value. Всё. Естественно оба объекта вызвали свои деструкторы при выходе их main. Более того, в твоём коде вызвался конструктор копирования, а не мув, потому что если ты написал деструктор, то должен и мув-конструктор написать.
> If no user-defined move constructors are provided for a class type, and all of the following is true:
> ...
> - there is no user-declared destructor
> Then the compiler will declare a move constructor ...
С какими же даунами сижу в одном треде.
Ты же понимаешь что с такими знаниями плюсов ты никогда работу не найдешь?
Ты реально тупой? Ты а не перемещаешь никуда. Схуяли у него должен перестать вызываться деструктор? Молодец хоть со второй попытки вызвал верный конструктор, но это ничего не меняет, в мув-конструкторе ты перемещаешь внутренности объекта, а не объект.
>Естественно оба объекта вызвали свои деструкторы при выходе их main.
Тоже проиграл с этого, он или очень жирный или хуй его знает.
Даже для людей не разбирающихся в ассемблере думаю будет понятно.
Твоя ошибка в том что ты думаешь будто деструктор уничтожает объект но на самом деле это просто код который запускается перед уничтожением объекта и в данном случае уничтожение это просто выход из main.
у тебя деструктор Movable вызвался после деструктора А
Ну и самая главная проблема в твоем коде в нем ничего никуда не переносится, потому что просто нечего.
Возможно компилятор вообще его нахуй выбросил.
В моем переносится строка, точнее const char[] алоцированная где то в памяти.
>>150063
В твоем случае вызывается деструктор у стринг 3 раза
Посмотри что у тебя в деструкторе ~A вызывается вызывается деструктор стринг
И чтобы это тебе показать я и сделал Movable, потому что ты даже в 100 строчках сумел проглядеть их
анончик, я тебя уже носом тычу, ты что, совсем слепой?
> Возможно компилятор вообще его нахуй выбросил.
Два вызова &&Movable в выводе тебя не смущают?
Ты ведь помнишь что ты пытаешься доказать, да? Что после мува деструктор у смувленного обьекта не вызывается деструктор, ты ведь все еще это доказываешь?
Блять ты жирный пиздец.
В конструкторе вызывается вот это (пикрелейтед):
remove_reference()
basic_string() // constructor
так как внутри класса объявлен свой объект строки.
локальные объекты.структуры данные нельзя переместить со стека, они там выделены хардварно. Переместить можно только указатель на какие то внутренние данные как в данном случае и происходит.
>конструкторе
а я говорил про деструктор
31 строчка, можешь и у себя проверить
как будто с глупой нейросеткой общаюсь которое не может смысл поста понять
> Ты ведь помнишь что ты пытаешься доказать, да? Что после мува деструктор у смувленного обьекта не вызывается деструктор, ты ведь все еще это доказываешь?
Деструктор это семантика ООП, они вызываются не потому что что то важное делают а потому что так правила диктуют, понимаешь или нет? Нет такого правила в ООП что деструктор вызывается после перемещения объекта, наоборот это против правил ООП вообще и плюсов в частности, это в расте перемещение правилами определено, а в плюсах это просто костыль для улучшения производительности чтоб не пришлось расчехлять memcpy или цикл с копированием.
>Нет такого правила в ООП что деструктор вызывается после перемещения объекта
Да, он вызывается в конце скоупа для любой переменной, даже котору смували
Ты мне второй день пытаешься доказать что это не так
Кратко ответь: в твоем примере вызовется 3 деструктора? Ты понимаешь почему?
Потому что создается три объекта string - один внутри main и два внутри классов.
В самом ассемблере при этом все конструкторы деструкторы вызываются поражником просто симулируя работу ООП. Если включить оптимизации он просто вместо деструкторов подставит код который внутри них прописан
проебал вывод указателей
В итоге ты сам согласился что вызовется три деструктора, спасибо за внимание
Потраченного времени жаль
> даже котору смували
Чел, ты хоть и переключился на срач с другим челом, но тебе ещё раз скажу это - ты никуда их не мувал. Каким же дауном надо быть, чтоб не понимать этого.
Мой проект состоит из библиотеки mylib и примеров ex1, ex2. Есть option сборки каждого примера, типа BUILD_EXAMPLE1.
В скобках if(BUILD_EXAMPLE1) я хочу определить define для сборки mylib это настройка лога. Я делаю через команду
target_compile_definition(mylib PRIVATE ENABLE_LOG1)
далее линковка проекта:
target_link_libraries(ex1 PRIVATE mylib)
Так вот, если я включаю несколько option, то все define для mylib сохраняются, и каждый ex1, ex2 будет собран с флагами "предыдущего".
В целом, с точки зрения CMake все верно, но я не могу понять, как мне правильно решить мою задачу, чтобы разные примеры компилировались с библиотекой, которая собрана с разными флагами? Есть вариант делать разные библиотеки для разных флагов, но это как-то странно.
Линкуешь свою либу статически, каждый билд экзампла получает свою либу со своими флагами
Это не проблемы симейка чел, он тут не причем.
Но анон ниже правильно сказал но не обязательно статик, если нет других нг и если.
Собираешь свою либу. В ней в лог.н пишегь ифндеф логлвл дефайн логлвл дефаултлоглвл. Соответсвенно определяешь дефолт и не определяешь лвл.
Сои экзаплы собираешь с таргет компиле дефенишн логлвл. Или просто дефайн логлв перед включением лог.н
Как ты описываешь, я так и делаю. У меня не логлвл, а варианты, типа БУИЛД_ЛОГ_НЕТВОРК, БУИЛД_ЛОГ_ПИСИАЙ
Что-то из этого чисто для дебиана и в основой проект тащить не хочу, поэтому и настраиваю в симейке.
>>150557
Спасибо, я еблан совсем забыл, что есть статическая сборка. Крайне вероятно, оно мне так поможет
Удвою. Смотри содержимое тела первого макроса.
Какой у вас стаж, чем занимаетесь и сколько получаете?
> Какой у вас стаж
4 года, девопс, полностью удалённо.
> чем занимаетесь
Фактически нихуя не делаю, работаю 12 дней в месяц, последние месяцы 95% рабочего времени скролю двачи.
> сколько получаете
120к.
> мне кажется, что меня на работе немного наебывают
Если приходится думать на работке и за это не платят хотя бы 150к, то это пиздец.
Получаем бонусы на карту петерочка когда отбиваем пиво на занятые у мамки деньги. Иногда по ебалу, но в последнее время редко.
Стаж большой.
>меня на работе немного наебывают.
Так тебя и дома наверняка наебывают, сходи сделай наебышам днк тест.
Посмотри на разных сервисах отзывы коллег о своей шаражкиной конторе, изучи вилки которые предлагают и слитые зепки.
В этом надо так разбираться, а не сравнивать сколько сеньеры пиздаболы с двачей получают, главным образом дело в том что разброс деятельности слишком большим может быть
Всего сотыга. Для моего недомиллионника норм вроде. Но нам добивают социалкой: дмс со стоматологией, корпоративная пенсия капает, 80% скидка в ведомственный санаторий на черном море, 50% оплачивают любые другие санатории, бассейн, спортзал. Гарантированная 13я зп. В последнее время особо ничего не делаю, немного работы есть, но вообще не запарно.
Вопросы тем кто пользуется IDE CLion под Linux.
Как продлить лицензию?
Не нашел торренов под Линукс, либо пишут, что кряк не работает.
Как вариант может официально оплатить, но пройдет ли оплата в нынешних условиях?
Заранее спасибо, если кто подскажет по данному вопросу.
Для состоятельных джентльменов - оплата картой любой неподсанкционной страны через vpn, либо через помогал на авите.
Для остальных - 3.jetbra.in
люблю тебя няша
Ну сколько можно то... Уже сяду на него до конца жизни
На завод еще реально за полтос устроиться без вышки?
> На завод еще реально за полтос устроиться без вышки?
Но зачем? За полтос даже в техподдержке зашкварно сидеть.
Да у меня есть щас работка не пыльная, но хотелось бы в будущем совмещать приятное с полезным.Не ради денег, а просто
Ну дэйкстру не смогу написать по памяти, лучше не вкатываться?
Ну. Т.е. примитивнейший HTTP-сервер, который из пути достанет переменную, передаст в обработчик и вернет какой-то ответ.
Гей шлюхи на плюсах что-то делают?
В регионах это хорошая зп, бывает и меньше.
Даже если одним компилятором разных версий можешь поймать ошибки
Ну, дык я спрашиваю, какую отвертку взять. Чтобы просто вкрутить этот шуруп.
Я просто вот гуглю: С++ HTTP SERVER!!!!
Мне гугл какие-то невразумительные видяшки выдает про сокеты-хуекеты, сервер фром скреч и прочую поебистику. Ок. Я в свое время слышал про буст, гуглю буст, там та же хрень, но в профиль, типа да, сокеты-хуекеты, но еще вот такенный мануал как там каналы какие-то и прочее.
А мне просто надо на железке запустить веб-сервер, который будет уметь в HTTPs и позволять из бравззера железку включить-выключить, какие-то настройки железки поменять, может быть какую-то админскую хуйню сделать, типа сжать логи и выгрузить и т.д. Воооот.
Шарп в железку не влезает, пхп - тоже( Питон - тоже((( В СДК вендора - никаких веб-серверов нету.
Кресты сейчас чуть ли не единственный язык, почти не зашкваренный вебом. Ну т.е. веб и рестапи на них писать можно, но обычно их юзают для другого. Так-то есть куча либ, реализующих HTTP: https://github.com/fffaraz/awesome-cpp?tab=readme-ov-file#networking
А я не уверен что у тебя в железку влезет жирный плюсовый сервак. Ищи какие нибудь тини серваки, это нишевая хуйня. Ну или сам на коленке собери, тебе же не нужен рпс, как я понимаю.
Сомневаюсь, что с растом будет меньше ебли при написании вебговна, чем в плюсах. Го хотя бы задумывался для таких задач.
Почти 10 лет, 3 сотыги в миллионнике с учетом премий, стек C++/Qt.
Как же хочется стать сеньором голангером с зарплатой в полляма
cpprestsdk, простая и удобная либа
Раз у него петухон не влез, то и нода не влезет.
Нода тоже не предназначена, это просто библиотека предоставляющая доступ к стандартным функциям ОС втиснутая жабаскриптовую VM. Что бы писать на ней веб надо к ней всякие фреймворки устанавливать
на плате есть dsp-процессор с микроядерной осью в набортной памяти, который работает уже когда просто провод включен в розетку.
Называется Intel Managment Engine
Это понятно, но я думал это только на полноразмерных коипах, а не таких куда дот нет не влезает... Какие тогда вообще у тебя параметры железки?
И как ты на ней веб сервак поднимешь, она же закрытая
Все твое говно читать смысла нет, обсер в первой же строке.
эдд кастом команд выполняются линейно. Их так не используют.
Для генерации/модификации чего либо до/после непосредственно сборки цели/целей используется эдд кастом таргет и добавляется зааисимость. В таком случае порядок комманд сборки будет коректным.
> эдд кастом таргет и добавляется зааисимость
Ты читать не умеешь? Я так и делал. Всё равно эта пидорасина не выполняет команду раньше. Вот упрощённый вариант, что за пердолинг тут ещё нужен? Есть таргет shaders с указанием что он зависит от сгенерированного файла, явно указано что main зависит от shaders. Но по факту main собирается ДО shaders. Это с генератором ninja. С MSVC оно вообще не работает. Я тебе больше скажу, видишь там PRE_LINK? Так вот на деле оно уже ПОСЛЕ линковки выполняет эту команду.
Как я должен понять что с этой парашей надо делать, чтоб она заработала? Пробовал в add_custom_command таргет main, пробовал add_custom_target позже вызывать - нихуя не меняется. Кеш естественно чищу после изменений.
У тебя всё это из-за последней строчки. Он сначала линкует ресурс, а потом уже начинает сборку всего остального, в том числе и выполнение команд, уже не важно кто от чего зависит. Как пофиксить не знаю, писать скрипты на симейке ублюдство ещё то.
Ты блять видишь что он в соседней строчке есть? Как я тебе выполню команду без add_custom_command?
Ты делаешь что то не правильно с самого начала.
cmake это конфигуратор (скриптов автосборки) проекта, а не скрипт сборки.
add_custom_target как я понимаю это ты добавляешь альтернативный таргет к текущему проекту, тебе оно не нужно если у тебя единый проект с библиотеками.
Тебе нужен add_subdirectory() и понимание что cmake работает покаталожно.
> Тебе нужен add_subdirectory()
И зачем он мне, если у меня файл шейдера тут же лежит? Вопрос же совсем не в этом. В текущем варианте сборка работает, но не в правильном порядке. Мне сейчас надо два раза жать сборку - первый раз он линкует старый ресурс и уже потом собирает новый, второй раз нужный. От того что я выношу сборку шейдера в отдельную папочку и делаю add_subdirectory ничего не меняется, подпапка всё так же собирается после.
> это конфигуратор (скриптов автосборки) проекта
Заебись, и как мне заставить его выполнять скрипты в нужном мне порядке, а не как он решил? А ведь эту задачу можно решить батником за наносекунду, хули в симейке так сложно.
>задачу можно решить батником
Так и решай батником нахуя ты взял симейк?
>Мне сейчас надо два раза жать сборку - первый
Тебе надо лечится от ожирения
Все левое (не Cmake) добавляется через модуль
ExternalProject_Add()
Спасибо
> нахуя ты взял симейк?
Действительно, зачем я взял симейк вместо системы сборки.
> Все левое (не Cmake)
У меня и нет такого, это тебе надо лечиться. Чтоб добавлять внешние проекты надо чтоб они были.
1) Вызываю delete pPeFile
2) Внутри деструктора pPeFile делаю throw new FileException(...)
3) Конструктор класса исключения отрабатывает
4) Вместо того чтобы пойти в catch, вылетает ошибка MVC++, программа крашится.
Потому что у тебя деструктор не вызывается в обработчике исключений, шизик.
У тебя в обработчике лежат
try { SectTest(); print(); myObj::operator_delete(); print(); }
С чего ты взял что тут где то скрыто должен деструктор пристроится? Это тебя раст к такому додумыванию приучил или майкрософт.
Вызывай деструктор явно или опиши правило для delete откуда выкидай исключение.
Почему моя прога крашится я так и не понял.
Если исключения нельзя использовать, то что тогда делать? Каждой функцией возвращать статус-код?
Если мне никто не будет отвечать, то и я не буду писать сюда. Это вроде очевидно
Не надо выделять эксепшн на куче. Ты кидаешь указатель, а пытаешься поймать ссылку. Ещё он мог бы утечь, но так как прога крашится на это похуй.
new в крестах и new в шарпах это совершенно разные вещи.
Иди учи основы, потом возвращайся.
и вот с этим вот мы сидим в одном треде..
деструктор у него при делете не вызывается вообще охуеть
Я этот new как раз дописал, т.к. думал что прога крашится из-за его отсутствия, но дело не в нем оказалось
Тут анонимный форум
кидать эксепшены из деструкторов нельзя. это классика это знать надо
Это зеленый шарпист который тут полтреда доказывал что move вызывает деструктор.
Официальный комментарий по теме: съеби отсюда, хуесос.
> new exception
ПРОСТО ОРУ
Нужно написать прогу на C++, которая использует библиотеку для считывания штрихкодов ZXing, которая требует стороннюю библиотеку для работы с изображениями (я нагуглил OpenCV).
В плюсах вообще не программировал, да и вообще проще будет сказать что опыт околонулевой. Получилось через CMake прицепить OpenCV, как сделать тоже самое с ZXing не понимаю.
Дайте наводку как это правильно называется и как подобное гуглить. Я так понял что-то типа "Подключение сторонних библиотек в проект"
Совсем долбаёб, да?
FetchContent_Declare(ZXing GIT_REPOSITORY https://github.com/zxing-cpp/zxing-cpp)
FetchContent_MakeAvailable(ZXing)
target_link_libraries(example ZXing)
А я ебу?
Вроде в плюсах throw без new используется, не? А если используется new, то это значит «бросается» наверх указатель на выделенную память в куче типа, заданного после new? То есть, в данном случае FileException?
всегда удивляюсь тому что умные дураки пишут бесплатные опенсорс либы чтобы всякое быдло потом зарабатывало на использовании этих либ
поссал на дебила
обычно lighttpd используют для встраивания в железки
>всегда удивляюсь тому что умные дураки пишут бесплатные опенсорс либы чтобы всякое быдло потом зарабатывало на использовании этих либ
А если мама в комнату зайдёт? А так хоть всякое умное будет видеть на мониторе
подачки умным дурачкам чтобы с голоду не сдохли
алсо как это получилось что многие огромные корпорации используют бесплатный софт написанный лошками
зарплатный закукарекал
Да это не так критично. Спартак был рабом.
А вот современные в целом кодерки это толстожопые никчемные кнопкодавы, которых за пределами офиса не существует, их нет нахуй.
И я думаю что когда ты такая вот чмоха остальное принимается уже не так критично. Рабы, тоже мне
Но какое же блядь дикое отторжение я ощущаю, буквально потеря человечности.
Хочется делать что угодно, кроме вникания в эти стейтменты и алгоритмы.
инб4 пуссибой
Я не такой, честно.
Как в этой параше смотреть bluetooth rssi для уже подключенных девайсов есть инфа?
по крайней мере они работают за деньги, а не бесплатно
а опенсорс умные дурачки убивают индустрию
и да особенно мне печет с бесплатной opencv и других библиотек на ее основе
потому что позволяют нахаляву всякому быдлу решать проблемы связанные с комп зрением
Ctrl-H и Ctrl-Shift-H
Стэнли Липпман, Жози Лажойе и Барбара МуЯзык программирования C++2014
Препроцессор.
Может у него есть и плюсы?
ЕбалЕгоВРот
Я даже знаю, кто зашкварил.
Ясное дело. Только k&r
Потому что у ровных пацанов силион, и он работает. А клион у лохов, что еще ожидать.
А он за C++ сосал сынок?
должны быть
Пытался собрать собственную либу с помощью g++, получаю ошибку. Где почитать как билдить код? В книгах об этом почти не пишут. В статьях поверхностно.
Каких статьях?
Здесь https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html тоже будет поверхностно для тебя?
Не нужен мне make. Мне надо разобраться с темой в общем. Статические и динамические библиотеки, компоновка и сборка вообще. Вот это вот всё. Чтобы понять почему у меня ошибка. Почему то в книгах по линуксу и C++ это обходят стороной.
Делаю все как тут написано, ошибок при компиляции нет, но при запуске скомпилированного main выдает error while loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory
https://medium.com/@felipemantillagomez/recreating-nodejs-from-scratch-chapter-1-c-for-javascript-developers-b4e0db8e1604
На этапе преобразования объектного файла в либу создаю .so файл, а не .dylib, так как под линукс. Все этапы проходят нормально, но либу не видит. Даже если в том же каталоге все проделать.
Так у тебя проблема не в сборке, а в установке либы. Одна переменная окружения всё фиксит.
110. Balanced Binary Tree
113. Path Sum II
Чет тут дикий тупняк с деревьями всегда. Я знаю умею проходится по дереву. Но на моменте подсчета суммы из за использования рекурсий вообще все не сходится и даже сложно в голове понять что не так. Помогает только тогда, когда реально сажусь дебажить пошагово. И вопросы а как возвращать а что возвращать, что сделать итд итп. И только когда посмотрю в решение - а да, все логично и понятно. А вот так сама зависаю на пару часов.
можно -> засунуть в макро
Пишу свой вектор. Второй день не могу найти ошибку, StackOverFlow говорит все ок.
Я уже карандашиком на листочек весь процесс через gdb c адресами выписывал.
все куски кода ниже исправлены и упрощены
class vector
T arr;
int size;
int capacity;
Вектор у меня пушит объекты простейшего класса T с ресурсом (new).
class T:
int res; // тоже работает new
int size;
Суть:
Внутри метода push_back использую placement new.
//vector -> метод reserve
T arr = reinterpret_cast<T>(new char[capacity sizeof(T)]);
//выделяю "сырую память" под (object_T capacity)
//vector -> метод push_back
new (arr + index)T(obj);
//в "сырой" участок памяти отрабатывает конструктор копирования.
внутри класса T также динамически выделяется память через new
auto* res = new size_t [obj.N];
так вот когда отрабатывает деструктор vector (в цикле проходит все объекты)
он успешно вызывает деструктор класса T в куче!
(arr + i)->~T();
но уже сам деструктор класса T выдает ошибку!
delete[] a;
munmap_chunk(): invalid pointer
Program received signal SIGABRT, Aborted.
по отдельности все куски кода работают нормально. косяков в самом классе T вроде нет
Пишу свой вектор. Второй день не могу найти ошибку, StackOverFlow говорит все ок.
Я уже карандашиком на листочек весь процесс через gdb c адресами выписывал.
все куски кода ниже исправлены и упрощены
class vector
T arr;
int size;
int capacity;
Вектор у меня пушит объекты простейшего класса T с ресурсом (new).
class T:
int res; // тоже работает new
int size;
Суть:
Внутри метода push_back использую placement new.
//vector -> метод reserve
T arr = reinterpret_cast<T>(new char[capacity sizeof(T)]);
//выделяю "сырую память" под (object_T capacity)
//vector -> метод push_back
new (arr + index)T(obj);
//в "сырой" участок памяти отрабатывает конструктор копирования.
внутри класса T также динамически выделяется память через new
auto* res = new size_t [obj.N];
так вот когда отрабатывает деструктор vector (в цикле проходит все объекты)
он успешно вызывает деструктор класса T в куче!
(arr + i)->~T();
но уже сам деструктор класса T выдает ошибку!
delete[] a;
munmap_chunk(): invalid pointer
Program received signal SIGABRT, Aborted.
по отдельности все куски кода работают нормально. косяков в самом классе T вроде нет
>Плэйсмент нью значит фри, а не делейт, только сначала деструктор вызови.
спасибо за ответ, но не очень понял
>не очень понял
потому что он хуйню написал
лучше нормально код запости посмотрим как у тя в классе Т косяков нет..
держи няша
class A{
public:
size_t a;
size_t N;
public:
explicit A(size_t n): N(n) {
a = new size_t [N];
}
~A(){
delete[] a;
}
A(const A& obj) {
auto tmp = new size_t [obj.N];
copy(tmp, tmp+ obj.N, obj.a);
this->a = tmp;
this->N = obj.N;
}
перемещения/присваивания не стал кидать, т.к. не ипользуются в данном кейса
в векторе через прошу "сырую память"
T newarr = reinterpret_cast<T>(new char[sz_cap * sizeof(T)]);
далее туда со стека через placement new --> констуктор копирования собсно глубоким копированием копирую объекты
new (arr + index)T(obj);
затес из этой же памяти --> arr
вызываю деструктор
(arr + i)->~T();
деструктор класса Т начинает отрабатывать, но когда дело доходит до удаления ресурса самого объекта Т
~A(){
delete[] a;
}
munmap_chunk(): invalid pointer
по отдельности тестил сам класс, ну все норм вроде
да, а что
да это просто класс для теста
главное чтобы этот класс какие-нибудь данные в куче содержал, неважно что и как.
суть то не в этом
я создаю объект и выделяю данные в куче:
T(int N):
a = new size_t [N];
затем удаляю их:
delete[] a;
> суть то не в этом
Суть в том что сколько ты выделил в new, столько и должен удалить. Ты не можешь сделать 3 new и потом одним delete удалить все три куска, даже если они лежат последовательно.
если ты хранишь массив как Т٭ а не char٭ тоби пизда
вектор содержит три объекта класса А
каждый обеъект имеет ресурс --> массив int в куче
затем при вызове деструктора vector
в цикле вызывается --> деструктор каждого объекта
этот деструктор удаляет этот массив int
деструктор вызывается для каждого объекта
вот так все работает!
int main() {..
A arr = reinterpret_cast<A>(new char[2 sizeof(A)]);
A obj1 = A(3);
A obj2 = A(4);
//конструкторы копирования
new (arr)A(obj1);
new (arr + 1)A(obj2);
//деструкторы и в них нормально delete[] отрабатывает
arr->~A();
(arr + 1)->~A();
delete[] reinterpret_cast<char>(arr);
ситуация и вправду запутаная, иначе бы я не стал вас тревожить
простите доны
протестил сам класс
все работает: консрукторы и деструкторы
но когда пуляю эти объекты в вектор через emplacment new опять при удаления объектов
"munmap_chunk(): invalid pointer"
причем деструктор первого объекта срабатывает норм,
а второго нет
[отя два одинаковых объекта в куче лежат
видимо как говорил дон выше --> проблема в align
Забудь про new[] и delete[], выделяй sizeof(T) * N. Плейсмейнт сам вычислишь?
ты знаешь как delete[] работает?
Код практически не читал, мне похуй
>Забудь про new[] и delete[], выделяй sizeof(T) N. Плейсмейнт >сам вычислишь?
так я так и делаю.
T arr = reinterpret_cast<T>(new char[sz_cap sizeof(T)]);
А выделяю char, чтобы конструктор по умолчанию не вызывался. потом уже привожу к Т*
>ты знаешь как delete[] работает?
ты про то что в куче лежат структуры перед самими данным в которых -> указатель (то что вернул new) + размер массива.
и когда я вызываю
delete[] arr
кучевед ищет этот адрес в этих структурах + размер массива ну и удаляет. Вроде так
вообщем проблема пока не решена, вечером буду дебажить одним способом
Всем спасибо, буду держать в курсе!
Это задачи из области моченых в говне аспирантов.
Раскрашивать клеточки с бобрами и заниматься прочими очень важными математическими проблемами лучше всего на пистоне, во первых быстрей и проще, а во вторых только jit может хоть как то этот пиздец соптимизировать https://algo.monster/liteproblems/110
В крайнем случае можно сначала на скрипте отработать потом на плюсы перенести, хотя я не вижу смысла такой хуйней на плюсах не занимаются.
не знаю как щас но 10 лет назад на всяких олимпиадах питухонщики сидели под одной шконкой с жабопидорами а тру пацаны вращали деревьями на цпп или вообще си
Да понимаю, многие уже сказали мол херней не страдай с этими задачами, лучше просто работай. Но блин все же это важная херня которую спрашивают практически все компании при найме. И им пофигу на твой стек, опыт. Но с другой стороны это уж лучше чем потратить неделю на реализацию тестового проекта с нуля типа сервер-клиент под хотелки или программа которая делает один два три … сто крутостей.
Спасибо за сайт не знала. Но хотя и в решениях на лите тоже пытаются объяснения давать, но выходит зачастую у всех через жопу типа - отвечаю так работает как к этому прийти додумать хз, но у мяработает.
Мб не права, но энивей лучше даже го изучу, чем это.
Тру :-)
Открываешь литкод
Выбираешь тему, те же графы
И хуяришь от самых простых пока не надоест.
Я ток так понял дфс/бфс/дийкстру
Слушай, анончик, там разница меж изи и мид очень большая, если работа со структурами, а не строки. Таки так и делаю, точней в таком же направлении и двигаюсь.
А ты не смотри на мид/ищи/хард, смотри на аццептанц. Это то, сколько людей условно осилило задачу. Отсортируй по нему и решай.
У тебя в массиве вектор лежит. Ещё раз [0] попробуй в конце. Я в душе не ебу как оно у тебя должно работать, но он тебе человеческим языком пишет что возвращает вектор объектов, а не объект.
Ну, в теории это обычный массив, а вот хули ругается - неясно.
Макака скобочки сжирает. Вот это ты указатель на вектор кастанул в массив векторов.
Вопрос к практикующим программистам. Сейчас слушаю лекции из цикла: "С++ продвинутый уровень".
Кому не тяжело, можете подсказать (пометить в списке ниже)
a) темы, которые стоит особо пристально изучить (можно пометить !)
b) темы "какие хорошо бы знать", но на практике такое редко встречается (можно пометить + или *)
c) ну и на какие темы можно пока что просто забить (можно пометить "минус" или никак не помечать)
сам плейлист (кому интересно)
https://www.youtube.com/playlist?list=PL4_hYwCyhAvYTzwME4vQoDO8ZINM5trra
список тем из плейлиста (список лекций идет с 20-ой, так как это вторая часть курса):
C++ 20. Итераторы, виды итераторов.
С++ 21. Const-, reverse-, output-итераторы. Потоковые итераторы.
C++ 22. Внутреннее устройство vector
C++ 23. Внутреннее устройство list, map, unordered_map
C++ 24. Перегрузка new и delete. Аллокаторы
C++ 26. scoped allocator, выравнивание, aligned_alloc
C++ 27. move-семантика, move-конструкторы
C++ 28. Виды value, rvalue-ссылки, универсальные ссылки
С++ 29. Perfect forwarding, xvalues, reference qualifiers
C++ 30. move_if_noexcept. auto, decltype, decltype(auto)
C++ 31. Structured bindings. common_type, declval. unique_ptr
C++ 32. Внутреннее устройство shared_ptr, weak_ptr
C++ 33. enable_shared_from_this. Юнионы, std::variant
C++ 34. Реализация std::variant, функция std::launder
C++ 35. Реализация std::any. Идиома type erasure
C++ 36. Лямбда-функции
C++ 37. Лямбда-функции (продолжение). std::function
C++ 38. std::bind, std::invoke, SFINAE
C++ 39. std::enable_if, std::is_constructible
Вопрос к практикующим программистам. Сейчас слушаю лекции из цикла: "С++ продвинутый уровень".
Кому не тяжело, можете подсказать (пометить в списке ниже)
a) темы, которые стоит особо пристально изучить (можно пометить !)
b) темы "какие хорошо бы знать", но на практике такое редко встречается (можно пометить + или *)
c) ну и на какие темы можно пока что просто забить (можно пометить "минус" или никак не помечать)
сам плейлист (кому интересно)
https://www.youtube.com/playlist?list=PL4_hYwCyhAvYTzwME4vQoDO8ZINM5trra
список тем из плейлиста (список лекций идет с 20-ой, так как это вторая часть курса):
C++ 20. Итераторы, виды итераторов.
С++ 21. Const-, reverse-, output-итераторы. Потоковые итераторы.
C++ 22. Внутреннее устройство vector
C++ 23. Внутреннее устройство list, map, unordered_map
C++ 24. Перегрузка new и delete. Аллокаторы
C++ 26. scoped allocator, выравнивание, aligned_alloc
C++ 27. move-семантика, move-конструкторы
C++ 28. Виды value, rvalue-ссылки, универсальные ссылки
С++ 29. Perfect forwarding, xvalues, reference qualifiers
C++ 30. move_if_noexcept. auto, decltype, decltype(auto)
C++ 31. Structured bindings. common_type, declval. unique_ptr
C++ 32. Внутреннее устройство shared_ptr, weak_ptr
C++ 33. enable_shared_from_this. Юнионы, std::variant
C++ 34. Реализация std::variant, функция std::launder
C++ 35. Реализация std::any. Идиома type erasure
C++ 36. Лямбда-функции
C++ 37. Лямбда-функции (продолжение). std::function
C++ 38. std::bind, std::invoke, SFINAE
C++ 39. std::enable_if, std::is_constructible
А через стрелку вот такая поебота.
> C++ 20. Итераторы, виды итераторов.
!
> С++ 21. Const-, reverse-, output-итераторы. Потоковые итераторы.
!
> C++ 22. Внутреннее устройство vector
-
> C++ 23. Внутреннее устройство list, map, unordered_map
-
> C++ 24. Перегрузка new и delete. Аллокаторы
+
> C++ 26. scoped allocator, выравнивание, aligned_alloc
-
> C++ 27. move-семантика, move-конструкторы
!
> C++ 28. Виды value, rvalue-ссылки, универсальные ссылки
!
> С++ 29. Perfect forwarding, xvalues, reference qualifiers
+
> C++ 30. move_if_noexcept. auto, decltype, decltype(auto)
+
> C++ 31. Structured bindings. common_type, declval. unique_ptr
+
> C++ 32. Внутреннее устройство shared_ptr, weak_ptr
~
> C++ 33. enable_shared_from_this. Юнионы, std::variant
-
> C++ 34. Реализация std::variant, функция std::launder
-
> C++ 35. Реализация std::any. Идиома type erasure
---
> C++ 36. Лямбда-функции
!
> C++ 37. Лямбда-функции (продолжение). std::function
!
> C++ 38. std::bind, std::invoke, SFINAE
+
> C++ 39. std::enable_if, std::is_constructible
-
> C++ 20. Итераторы, виды итераторов.
!
> С++ 21. Const-, reverse-, output-итераторы. Потоковые итераторы.
!
> C++ 22. Внутреннее устройство vector
-
> C++ 23. Внутреннее устройство list, map, unordered_map
-
> C++ 24. Перегрузка new и delete. Аллокаторы
+
> C++ 26. scoped allocator, выравнивание, aligned_alloc
-
> C++ 27. move-семантика, move-конструкторы
!
> C++ 28. Виды value, rvalue-ссылки, универсальные ссылки
!
> С++ 29. Perfect forwarding, xvalues, reference qualifiers
+
> C++ 30. move_if_noexcept. auto, decltype, decltype(auto)
+
> C++ 31. Structured bindings. common_type, declval. unique_ptr
+
> C++ 32. Внутреннее устройство shared_ptr, weak_ptr
~
> C++ 33. enable_shared_from_this. Юнионы, std::variant
-
> C++ 34. Реализация std::variant, функция std::launder
-
> C++ 35. Реализация std::any. Идиома type erasure
---
> C++ 36. Лямбда-функции
!
> C++ 37. Лямбда-функции (продолжение). std::function
!
> C++ 38. std::bind, std::invoke, SFINAE
+
> C++ 39. std::enable_if, std::is_constructible
-
люблю тебя
Так вот, c++ и stl вроде как освоил
так вот такой глупый вопрос, но тем не менее
за сколько можно освоить "базовый" Qt, чтобы найти работу где это требуется.
P.S. всю подноготную библиотек Qt знаю: сети, базы данных, графический стек Linux, ОС и т.д. (долгое время изучал Computer Science). GUI на Xlib могу создать
Напиши пару многопоточных крудов на кутях и считай базу для гуя знаешь. А дальше кто во что горазд.
типа аля многопоточный сервер, который работает с базой данных, только на Qt?
Скорее клиент-морду для бдшки.
В qt очень хороший хелп, если у тебя нет проблем с английским то очень быстро все находишь. Скользкие моменты давно обсосаны на стаковерфлоу.
Я когда устроился профессионально программистом "на завод" у меня первое задание было в одиночку запрограммировать бортовую железяку для тестовых полетов на qt - сделал за два месяца, хотя про кют вообще до этого не слышал.
гугли View matrix
есть статья на хабре про это неплохая
там две матрицы надо (первая в начало координат загонят, вторая поворачивает)
спасибо
спасибо всем
ну вообщем меня и интересует смогу ли это "на базовом" уровне за месяц освоить, из ответов выше понял, что да.
ты тут еще? хотел кое-что еще спросить про рабочие моменты уже "на заводе", да в целом про рабочие моменты в любой конторе
Именно там я и услышал. Сперва был шарп с ксамлом, а потом был божественный (не совсем конечно) qml как манна небесная.
Тут. Какие рабочие моменты?
Считаешь локальные координаты точки относительно центра. Умножаешь на матрицу поворота и преобразуешь назад в глобальные. Если глобальная система координат с перевёрнутой осью y, как и большинство экранных ск, то преобразование в локальную выглядит следующим образом: y_local = y_center - y_global, вместо x_global - x_center у координаты x соответственно.
C-тред по коридору а налево.
Да тоже пораша еще та, html + css гораздо удобнее. А вот экмаскрипт могли бы и не добавлять.
К сожалению приходится использовать на работе.
У тебя указатель на вектор. Ты сам вектор то сделал?
Вообще задумался может самому переписать, а не использовать Kaitai Struct плюс код поверх...
https://paste.techedubyte.com/y5ndaqiebw
BEHOLD! ПОЛУСГЕНЕРИРОВАННЫЙ КОД! НЕЧИТАБЕЛЕН НА 10 ВКАТУНОВ ИЗ 10!
земля пухом братишка
И инт прото тайп нигде не используется.
Бля, тупанул пиздос. Чет мне показалось, тут аппликация через пробел как в haskell
В вузе послали на практику на завод. Там, от не🌶 делать сказали сделать таймер на плюсах. Типа: задается задержка, передается что надо выполнить.
В ВУЗе у нас все на Java было.
Я вот написал https://pastebin.com/wS2Bj1HW но это не компилируется. Я в душе не понимаю, что я делаю не так( Какие-то undefined reference to `Timer::__timer_worker_thread' но в самом VSCode - все нормально, ниче красненького. Я реально не понимаю...
Альтернативой было - на кафедре, либо самому искать. Я ебал кафедру, потому что в прошлом году - "практика" была в том, чтобы помогать отчеты составлять преподам; Сам искать - я не знаю как. А на заводе хоть какой-то кодинг. Просто я почему-то думал, что навучат, а там просто сказали: вот задание, как сделаешь - приходи, подпишем тебе дневник по практике.
Пикрилейтед локальная нейронка. Пора уже в шапке оставлять ссылку на нейросети для студентов с лабами.
> Как эту нейронку у себя запусти
Если есть Эдж, то можно не выходя из браузера натравить индуский копилот на pastebin.
Таки написал этот таймер. Довольный. Работает. Пойду в понедельник на завод подписывать дневник и показывать.
МБ покритикуете мое решение? Я просто жавист же.
Теперь вот так выглядит https://pastebin.com/DY8CmVBt
Хм. Я рано обрадовался. Оно вылетает периодически, если больше 1 таймера. Ладно. Все. Больше не буду вас мучать.
Да, подожди немного.
Ну тогда больше инфы нужно давать при реквесте.
Даже так не работает, ну что за ебля вечно... Это говнище меня уже выбесило.
Тогда пишет что не найден Zlib, хотя я его нигде не использую, его использует библиотека.
https://file.io/kJNC0EEQO03H
Ну либа не линкует его за тебя. OpenSSL тоже всегда надо самому линковать, если какая-то либа его использует. Это тебе не раст, в котором ставишь либу, а она попутно автоматом 250 зависимостей тащит с собой.
> пишет что не найден Zlib
Иди гуглить как zlib подрубить.
Так мне линковать Zlib и к моей проге, получается?
А гугление мне ничего не дало по итогу, как только не извращался, может дашь какую-то ссылку?
Первое было год назад, тотальное унижение, но все же на троечку справился. Сейчас конечно поднаторел.
Контора какая-то полуГос, производители оборудования.
Резюме такое себе, все по верхам, но базу хорошо знаю (ОС, сети, архитектра, кодинг, ООП).
Qt - нет, а там вроде как надо.
Готовлюсь к ебке.
Мысленно ищу отговорки, чтобы не ехать, но поеду в любом случае.
Написал, чтобы "выговориться".
>полуГос, производители оборудования.
>ОС, сети, архитектра, кодинг, ООП).
>Qt
Примерно то же самое
хз че ты там хотел накодить но это явно не трение
Здравствуйте, стоит ли вкатываться в c++ для создания ботов для игр , автоматизации или с этим справится лучше другой язык программирования? Обычно я занимаюсь перепродажей валюты, но захотелось занюхать эту сферу жизни.
> создания ботов для игр , автоматизации
Смотря какие боты и автоматизация. Если ничего нагруженного не требуется, то лучше взять питон или говно
Мне кажется это личные предпочтения. Я ещё использую жс, питон, сишку, легаси на шарпе, но большие проекты мне проще воспринимать именно на крестах.
Как часто вы используете Boost? Например для решения "стандартных" задач: работа с файлами, алгоритмы, многопоточка.
Или используете только в случае специфических задач: когда нужны, регулярные выражение и т.д.
>я лично планирую перекатывать с крестов на го
А почему перекатываешься? Что на плюсах не устраивает? И почему Говно,а не жаба?
ну го по сути - это взято все лучше из С++, убрано лишнее.
как по мне это хороший рестайлинговый С++
а то заебали эти костыли начиная с 17 стандарта
Лол. В говне взято всё самое худшее из сишки, из крестов там нет вообще ничего. И по сравнению с современными крестами говно как будто для студентов делалось, сплошные сложности на ровном месте ради "простоты".
У меня такой дилетантский вопрос.
Вот написал я приложение : в нем я использую какую-то стороннюю библиотеку (например boost или даже Qt).
Как мне теперь это грамотно распространять?
Например мое приложение нужно скачивать с сайта.
Как я это вижу.
1. Надо написать некий скрипт (bash?), который проверит - установленна ли у пользователя эта библиотека, и если нет то скрипт скачает ее.
2. Сразу распространять ПО с нужной библиотекой. А если у пользователя она уже есть?
И в идеале все это еще обернуть в GUI?
Я сегодня пришось использовать sfinae на работке... Не удивлюсь, что где-то ебанутые делают рекурсивные типы на них.
Под популярные дистрибутивы линукса линкуй динамически и собирай пакеты, у которых в зависимостях нужная версия твоей либы.
Под все остальное или линкуй статически, или поставляй вместе с либой.
>где-то ебанутые делают рекурсивные типы на них
ну да я. что меня выдало
еще фолд експрешонами сверху полирнуть
template<template<class...> class C, class... TS> requires (!(... && Govno<TS>)) void zaulpa(C<TS...>&&) {}
УХ БЛЯ
если я некоторые модули boost(библиотеки которые нужны приложению) слинкую статически это норм будет?
Да
Какие-то компании запрещают их использовать...
Так по итогу можно(или может даже нужно) использовать или нет?
Если нет, то какие альтернативы?
Еще такой момент, после выделения данных в куче, достаточно будет проверить?:
new ptr ... = bla bla bla ...
if( ptr != nullptr ) {
cout "Неудалость выделить память";
exit(1)
// или даже бросить throw;
}
вообщем как лучше быть?
понял
спасибо за оперативный ответ
еще такой вопрос, а умные указатели часто используешь?
вообще что скажешь насчет них
Текущая абстракция, поэтому лучше не надо, но есть нюанс.
> Если нет, то какие альтернативы?
И этот нюанс - отсутствие нормальных альтернатив. Только если коды ошибок или монады, но это сорта. Без шуток, goto самая адекватная альтернатива для обработки ошибок, но за него тебя на любой работке обоссут, т.к. его надо использовать с умом.
а если я использую библиотеку и эта библиотека посылает исключения, тут уже надо их ловить?
Конечно. Так-то и std их кидает. Если не ловишь эксепшены, то ты должен заранее чекать что оно точно успешно выполнится.
Они облегчают кодинг, так сказать. В идеале лучше не использовать ничего что хуже дефолта. На практике же их использют регулярно потому что банально улобнее. Особенно в настоящих проектах.
Оцените код по десятибалльной шкале.
говорят какое-то зарубежное измерительное оборудование.
для него кем-то (давно) написано desktop-приложение, (GUI, интерфейс под Windows).
Надо написать/переделать это ПО (информация скудная, но что-то можно нарыть. например какие библиотеки использовались)
Вопрос:
Браться?
P.S. никогда подобным не занимался.
Ну если код есть, то все возможно. Я как-то переписывал проект на крестах на шарп, все доки были пиздец, ориентировался только на код. Сейчас наоборот шарп у нас легаси, а новье на крестах.
дружище, кода то нет.
Но в целом там нужно реализовать простое GUI
Меня смущает только драйвера или как там нам этом станке происходит взаимодействие ОС Win с самим оборудованием...
Тогда хз, кроме протоколов общения с оборудованием есть какбэ и логика работы, которая в них не входит.
Я бы не брался, пока все досконально не распишут (но это не реально, лол).
Скажите кому не сложно, сколько примерно строчек кода занимает в среднем ваш С++ проект?
Где-то слышал, что обычно небольшой проект это где-то 3-4 тысячи строчки
Очень большой, долгий проект (например Firefox) - 8-9 млн строчек.
Вопрос просто ради интереса, чтобы иметь представление
У меня были и утилитки по паре сотен строк.
А большой проект будет включать кучу строк не на си++. Тебе даже наличие строк никто не гарантирует. У нас например есть визуальный язык программирования, который потом компилируется в байткод и исполняется на виртуальной машине на плюсах в ос реального времени. Ни одной строки.
А g++.exe?
Всегда. У меня была одна хрень от тексас инструментс с чаром 16 бит, размер был единица.
Делайте уже перекат что-ли.
Каков пиздец. Что ты блять делаешь?
Блоуджон как всегда пиздит несвязную хуйню. Да ещё и спалился, что не понимает концепта RAII.
Нужно прибавить к нему n байт(n - DWORD) и получить указатель на RESULT_MEGA_STRUCT_COCOCO
Как это сделать лаконично?
Я делал так, но выглядит не очень:
PRESULT_MEGA_STRUCT_COCOCO res = (PRESULT_MEGA_STRUCT_COCOCO)((PCCH)pGigaStructMonster + n)
Чего?
Чел из покон веков все делали так:
(Uint8t *)target + offset , оффсет целое, получаешь свою ебу. Так работает со все велючая мемцпи и подобное. Шизов с уб мозга недоразвитого не слушай.
В стд нет сети. На recv/send можешь написать, там элементарно.
Если нет сорцов и у тебя нет опыта реверс-инжиниринга windows приложений и бинарных протоколов (скорей всего там такой), то однозначно - нет. Опыт реверс-инжиниринга года три минимум нарабатывается.
Так же как и всегда, на свое усмотрение. Паддинги просто часть структуры.
Щас на тестах эти списки небольшие, до 10 элементов.
И вот проблема: прога в дебаге прям пиздец медленно рабоатет в vs2022, причем в линуксе на гцц в дебаге все быстро летает, как и должно. Моих знаний отладки и профилирования не хватает, чтобы понять, почему такое говно происходит. Я виню работу списков, так как предыдущая реализация, где были векторы и move, работала быстрее.
В чем может быть проблема? Норм ли вообще splice? Как по мне, он быстрый пиздец, так как это два присвоения указателей, если данные нужным образом разделены.
>Я виню работу списков, так как предыдущая реализация, где были векторы и move, работала быстрее.
Bjarne Stroustrup: Why you should avoid Linked Lists: https://www.youtube.com/watch?v=YQs6IC-vgmo
Использую различные учебные примеры, в основном с MSDN. В различных IDE работают, даже в C-ной Pelles, а на Visual Studio упорно отказываются собираться. При этом дефолтные примеры Visual Studio нагроможденные.
Сноси нахуй винду и ставь linoops. Отныне системные вызовы - твои лучшие и единственные друзья. Без виндового ниггерсокого говна.
Ахххаахах блять, а чего это тебя так порвало? Ты думаешь, что кто-то будет гадать, что у тебя там не собирается по абстрактному описанию проблемы? Наверняка ты проебал какие-то библиотеки, не выставив пару чекбоксов в своей студии aka интерфейс макака-машина. Продолжаем жать на кнопочку билд алл.
Нет, братан, убогий - это ты. У тебя нет никакого представление об организации работы с памятью в современных процессорах.
>Пиздец.
такова жизнь, абстрагироваться от железа на котором работаешь не получится, так что даже если по теории алгоритмическая сложность меньше, это не значит что будет работать быстре
> Имхо убогая реализация в стл
ты про мапу? ну ее в основном все и переписывают постоянно
но для общего случая не так уж и плохо
C++ своим синтаксисом и развитием всем показывает, что главное - архитектура, а тут блядь на, надо про кеши и память знать. Это не должно быть проблемой в 2024.
Какие проблемы сделать эффективный выровненный list, либо скрывать под листом вектор? Нахуя мне в 2024 знать, что лист не эффективен? Причем уверен, что есть реализации от васянов, которые уменьшают эти проблемы. Тот же Eigen мог бы стать частью стандарта
>C++ своим синтаксисом и развитием всем показывает, что главное - архитектура
ты новенький, да? никогда такого не было, в плюсах самые протекающие абстракции, где если ты не знаешь наверняка что происходит под копотом, то зеро кост моментально улетучивается
> Какие проблемы сделать эффективный выровненный list
ничем не поможет
> либо скрывать под листом вектор
тогда это перестает быть листом
> Нахуя мне в 2024 знать, что лист не эффективен?
чтобы писать хороший код, ты еще скажи что тебе не нужно знать как там в кишочках каждого контейнера происходит
> Тот же Eigen мог бы стать частью стандарта
может заняться этим, свой порпозал написать и обьяснить тупым дедам почему это нужно добавить в стандарт
я если что вобще мимо, и даже не тот анон которому ты отвечаешь, но думаю он просто тебя обзовёт в ответ
Начал со Страуструпа "Программирование. Принципы и практика использования C++" (2016), но уже за двесте страниц читаю графоманию для первокурсников компутер саенса.
> это не мой первый ЯП
Пиздишь, студентик. У любого адекватного кодера даже вопроса такого не возникнет - он нагуглит документацию по языку за 30 секунд и пойдёт её читать.
Может мне стоит пойти почитать какие нибудь исходники с гитхаба чтобы это понять?
>учить с++
учи дальше, математика как примеры обучения чтобы надрочил язык. Учись работать со строками. Калькулятор пиши вот реальный софт. Хорошо прокачаешь строки если напишешь консольный калькулятор, считающий типа такого ./calc 2+2*2 и функционал скобок ещё не забудь.
> Не хочу через впн.
Всего за 10000 православных рублей я скачаю тебе все нужные либы и отправлю почтой на dvd-диске
proxy. quterussia. ru порт 31031
первая же ссылка в яндексе показывает этот прокси, но хз вдруг они мне модифицируют бинарники, встроят туда вирюсню?
Есть двумерный массив булов 15 на 20 (вся сетка инвентаря), и предметы, (условно могут занимать 2 на 6 элементов), как можно без ебанутых переборов быстро выставлять что определённые клетки заняты и также быстро находить занятые/свободные?
Пробовал что-то придумать, но пока лишь подсказали что можно не всю сетку перебирать если она 10x10, а предмет 2x3, то можно лишь 8x7 от левого края, а вот как место находить - так и не могу понять как оптимизировать.
чтобы было так:
h-файл
template<typename T>
class A { T getValue(); }
c-файл
T A:getValue() { return _data; }
можно но при использовании из другого цппшника конпелятор не сможет инстанциировать шаблон и придется делать это руками в цпп с реализацией для каждого типа
неее, это совсем не подходит) предполагается, что тип может быть любой
после добавления возможности пилить под мобилку.
смотрю видосиков по тематике на ютубе за последний год все больше и больше
На winapi же.
есть вообще разница с дебетовой, а то не хочу еще одну карту оформлять
Задача: перебор занятых слотов в инвентаре по предметам из него чтобы найти место для нового предмета.
https://paste.techedubyte.com/ddt4oylucg
Скорее всего что-то типа этого, оно в идеале раскидывает выполнение по нескольким потокам
https://en.cppreference.com/w/cpp/algorithm/reduce
Так их компания оформляет, тебе то зачем? У нас соцвыплаты шли на мир, зп на визу, сейчас все на одну переносят.
За наводку конечно спасибо, но прикол в том, что в движке где пишу - Angelscript, это типа плюсы, но с кучей оговорок, и там 90% std - тупо нет, только лютый базис.
так оно у тебя может зависнуть в бесконечном цикле если слот занят:
>
> for(uint x = 0, y = 0; x < 15 - itemWidth && y < 20 - itemHeigth;)
> {
> if(busy_slots[x][y]) continue;
разве не?
Плюс внутренний цикл почему то двигает xx++ yy++ то есть как бы по диагонали
оптимизовать без уточнения деталей можно разве что вот так
https://paste.techedubyte.com/qlavw5z5l5
10 лет опыта, проходил недавно собес в YADRO на 300к+, вопросы по ощущению были джуниорские. Спрашивали про сети, про linux (и там и там я мало что ответил, т.к. я qt-шник формошлеп), затем спрашивали C++, вот там-то я все хорошо и подробно поотвечал, не зря все-таки 5 книг по плюсам прочитал.
Оффер сделали, но я его не принял, т.к. и сейчас не намного меньше получаю, но работы на полчаса в день
>Оффер сделали, но я его не принял, т.к. и сейчас не намного меньше получаю, но работы на полчаса в день
Бля жиза, сейчас так же хожу по собеседованиям и время от времени получаю офферы, но потом понимаю что там будут ебать первые пол года и отказываюсь..
Если я хочу в резюме напиздеть, чтобы попасть на такую позицию, то о каком опыте можно на уши сесть эйчарке инб4 об опыте вертения хуями
Я думаю, что лучше уж Golang еще выучу и попробую найти вторую работу как же хочется валютную удаленочку
> реально-ли на фрилансе заработать пописывая код на плюсах?
Смотря чего хочешь заработать. На еду можно. Деньги нет.
Ну, мне скорее разово заработать нужно, 50к реально за несколько месяцев заработать?
>можно ли зп на кредитную карту получать?
Можно, надо заяву в бухгалтерию написать, что хочешь получать на такую-то карточку.
Если мингом собирал - ставь Qt через MSYS2, если MSVC - через vcpkg. Там все либы качаются без проблем. Можно через эту тулзу качать:
https://github.com/miurahr/aqtinstall
Только надо конфиг задать с нужными зеркалами.
https://habr.com/ru/articles/709064/comments/#comment_26408910
Как ты собрался зарабатывать на эзотерическом языке программирования. На современных крестах чисто для души пишут.
Да скорей всего датасайнс ебучий. Не еби себе мозги, в тему с заднего входа не влезешь. Щас по этой спецухе тыщи студентиков выпускают в россии которые потом хуй без масла будут есть
Да ладно, за полгода анальной ебли у тебя даже все еще сфинкер будет какашки держать.. Так чтож почему бы и не попробовать. За такие то деньжищи!
Не гони на сбер, его ядро хоть немного прикормит чутка голодных крестовиков, а то бля с голодухи тут пухнем уже. Кому то повезет, хватит на хлеб с маслом, может быть даже с тяночкой потрахается, потому что денежки появятся.. Не все явашникам со сбера денежку сосать.
>ожиданий от сеньоров на собесах
перевернуть односвязный список на бумажке без ошибок
>сравнению с мидлами
бинарный поиск на бумажке
Нигде не могу найти примера кода.
Вызываешь CoCreateInstance() и погнали.
Примеры не ищутся, потому что:
1. Мало кто автоматизирует работу в MS Office на сишке/плюсах, поскольку будет сплошная ебля с дёрганьем WinAPI, заполнением бесчисленных структур из 10 полей и проверки возвращаемых кодов ошибок, как будто пишешь драйвер, а не работаешь с текстом. Чаще для этого берут шарпы, там не так больно.
2. Вместо OLE надо гуглить COM, при этом нужно по отдельности читать про работу с COM из плюсов и документацию COM-интерфейса офиса.
Не вижу связи. Сбер это дядя с деньгами, а ядро это чья-то (мантурова-чемезова) частная присоска к деньгам госкомпаний.
Если бы сбер думал о том, что завтра ксеоны ультраголдэжишн с экзабайтом памяти не удастся закупить, а жаба на прошлом поколении с 500терабайт памяти уже грустит, *а от отечественного железа вообще падает в обморок), то Сбер волей неволей сам бы нанимал плюсовиков что бы хотя бы частично какие то ядра своих сервисов переписать на плюсы, перелапатить архитектуру сервера в целом, но вместо этого ядро их активно подкармливает свежим импортом и джавакодеры сидят на жирных жопах ровно.
Я побовал astyle. То ли я с ним не разобрался и надо долго его настраивать...
Для сравнения, для тайпскрипта линтеры чуть ли жопу не подтирают...
Да, тут срачкочат и конфа. Тред на главной странице видят всякие шарпобляди и растопидоры, которым сразу надо зайти и высраться. Тегами и избранным большинство из них не умеет пользоваться, так что тред в бамплимите от них защищён.
clang-format, все ide конфиг из корня проекта уже умееют подтягивать
спасибо, братюнь
> Мало кто автоматизирует работу в MS Office на сишке/плюсах,
Угораздило меня это сделать. Ебусь с экселем(через библиотеку), Word хер заполнишь. Переписывать 3 года работы на C# чёт влом...
При этом COM интерфейс оутлука вполне себе лёгкий, когда пример перед глазами видишь.
Вылетает такая ошибка при попытки запуска программы.
Компилятор тот же, cmake тот же, вообще ничего не менял. Как такое возможно и что поменялось?
У сбера вообще раньше была децентрализованная структура. Вернее иерархически устроенная. Примерно 4 ступеньки. Все работало как часы.
Потом они решили все сломать и сделать все в одном месте. И до сих пор ебутся с этим.
Это если совсем широкими мазками.
> Все работало как часы.
Да, вот это были времена, не то что теперь, ни интересных велосипедов в каждом тербанке, ни пересылки выгрузок операций в CSV по почте и сетевым дискам, ни крутых двухзвенок с бизнес-логикой на хранимых процедурах в БД, ни десктопных клиентов на Delphi и Borland C++. Скучно стало.
>У сбера вообще раньше была децентрализованная структура. Вернее иерархически устроенная. Примерно 4 ступеньки. Все работало как часы.
Не работало. Было куча тербанков как отдельные юрлица для каждого региона. Т.е. Среднерусский Банк Сбербанка России ОАО, Северо-Западный Банк Сбербанка России ОАО и т.д. И центральный банк на Вавилова в ДС. Причем головной офис Среднерусского банка был тоже в Москве. И у каждого банка было все свое - своя велосипедная система документооборота, свои сайты без общего дизайна, свои продукты, свои услуги. Поэтому и шутка была, что в каком отделении карточку выпустили, туда и обращайтесь. В целом оно работало как часы только до конца нулевых, пока все ходили ногами в сберкассу за квартиру платить. Когда у всех смартфоны появились, работать перестало.
Разобрался. Настройка внутри qt появилась, use internal terminal - и она не работает. Ну то есть совсем. Насколько я понял, идея была в том, чтобы содержимое терминала внутри ide отображать, но по какой-то причине перехватить содержимое консольки оказалось слишком трудно, и аж с 11 версии это починить не могут.
На втором пике (из другого процесса) делаю WaitNamedPipeW, потом CreateFileW, потом ReadFile
В этот момент ReadFile фейлится, GetLastError выдает 6 (ERROR_INVALID_HANDLE)
Где ошибка может быть?
ЗЫ на пикчах вырезаны проверки возвращаемых значений, но они есть
Смотря какие программы. В десктопе/играх/серверах речь обычно о долях процентов, которые и не заметит никто. А если это софт для суперкомпьютеров, там скорость работы может отличаться в разы, но там и пишут всё под конкретное железо, а не для массового распространения.
Подскажите где можно скачать Qt Creator под Linux + таблетка в идеале
Скролю ссылки, там какая-то херь
При реализации конструктора перемещения и оператора перемещения, чтобы грамотно "перенести" члены типов классов из стандартной либы, нужно использовать move, как во втором скрине для всех членом?
кстати, думаю можно и для структуры
Вы видите копию треда, сохраненную 12 июля в 06:17.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.