>>2410474 >>2410481 Что, питоноблядву НЕПРИЯНО, что в зависимости от роли файла в моей божественной архитектуре, я могу назвать его .cpp, .cc, .h, .hh или даже .hpp и .inl? Ну, собственно, сосать, что тут еще добавить...
>>2410631 ГОвно какое-то по синтаксису. Зачем-то кастрируют кресты вместо добавления фич. Нужна функциональщина и реальная замена макросам. Ещё было бы хорошо разрешить implicit move и выкинуть нахуй ссаный санитайзер. Но эти шакалы зачем-то просто выкинули 2/3 языка и сделали из него Go. Ебанутые, даже больше ебанутые чем zig-фанатики.
Зная какие говноделы в гугле, как-то с трудом верится в успех этого. На моей памяти у них только хром был более-менее вменяемым, да и то никто не пользуется самим хромом, только форками хромиума. Андроид - просто калище из каши кучи технологий и легаси. Го - дрисня для хэллоуворлдов уровня питона, буквально самый ущербный язык в принципе. Дарт и флаттер - какое-то раковое образование, отросшее от джавы, сделанное для жирух. Тензорфлоу - отсасывает у Торча не сглатывая, даже мокрописька херас не спасает. Сами гуглосервисы неудобное говно, с трудом взаимодействующее между собой: добро пожаловать в мокросервисы - ебись как хочешь и без смазки.
> пилют язык их дополняющий, как Котлин джаву Как показал пример Раста, подобная хуйня ничего не решает. Раст тоже совместим с крестами - там крестовый код можно компилировать вместе с растовым, использовать определения из хедеров напрямую и получать единый бинарник. Но проблема в том что ты в любом случае будешь писать обёртку на кресты, вне зависимости от уровня совместимости с ним, потому что API будет хуёво вписываться в инородный язык и надо будет адаптировать всё это. Но в Расте это решили шикарной кодогенерацией, а хули тут? Пусть покажут не хэллоуворлд, а как придётся взаимодействовать с шаблонами/концептами, легаси под void⚹⚹ и каким-нибудь winapi. Уверен, как обычно, скажут ебаться самому.
>>2410631 >Гугл: Предлагаем правки стандартной библиотеки С++ >Комитет: Отказано >Гугл: Ряя! Нахуй С++, делаем новый язык! Где логика? Каким образом правки библиотеки превратились в новый язык?
>>2410771 > Где логика? Это же Гугл, они просто ебанутые. Ты не помнишь что ли как они вместо запила под ведро нормального фреймворка гуя решили запилить сразу новый язык? Который ожидаемо оказался никому не нужным дерьмом, разве что китайцам он зашел из-за лицензий. У них так всегда, выдумывают какое-то говно и ждут когда опенсорс-комьюнити допилит его за них. Не получилось - да и хуй с ним.
>>2411043 Object-файлы, скомпиленные разными компиляторами, должны быть совместимы в теории, так по стандарту. Естественно там есть различия в STL и оно не будет работать на практике. Но условно, если ты соберёшь одним компилятором с no_stl под embedded, например один объект трансляции с функцией int a() {return 1;}, а main, использующий её - другим компилятором, то можешь слинковать два этих o-файла и оно должно работать.
>>2410781 Ох какие познания уровня /b/ в бекенде еще как используют, например https://nestjs.com/https://typeorm.io/ на фронте да, нахуй не нужон только в ангуляре прижился, на всяких реактах вообще срут jsx
>>2411203 Очень много. Слишком много, чтобы говорить, что тупоскрипт не прижился и ненужон. Сколько ни встречал фронтендеров - все так или иначе сталкивались с TS, хоть личные примеры и хуйня. Ладно, тред про нормальный язык, а не вебдрисню.
>>2411072 Как то не очень убедительно >использующий её - другим компилятором, то можешь слинковать два этих o-файла и оно должно работать. Зачем? Алсо там ведь как раз терки из-за изменений в STL, а по факту ты сам говоришь там уже нихуя бинарной совместимости нет. Напоминает сцену в Матрице >Mы потеряем узел приёма кораблей применив пушку в шлюзовом отсеке. >Сэр, мы его уже потеряли.
>>2410700 > Зачем-то кастрируют кресты вместо добавления фич. Ты это про контору в которой запрещены даже исключения в плюсах и вместо этого везде пихают ебаный StatusOr?
>>2411309 Ты не путай совместимость STL и бинарную. Бинарная должна быть везде, те кто не соблюдают - нарушают стандарт. Без бинарной совместимости ты бы даже с одним и тем же STL не смог бы слинковать либы.
>>2411459 А я не знаю. Увидел объявление функции в интернете, думал сам попробовать решить, не получилось. Я не понимаю момент, как и где нам сохранять имена и пароли. Присвоить строку wchar у меня не получается. Как то так
>>2411471 Что значит увидел объявление функции? У любой такой функции должен быть контекст задачи. Если ты увидишь объявление функции, которая производит валютный платёж в другой банк по СПФС, тоже попробуешь реализовать в разрыве от остального приложения? Если так хочется реализовывать какие-нибудь функции, лучше ищи задачи на алгоритмы.
Я понимаю что в айсберге причин по которым >прыщеблядье качает по сотне мегабайт аптейтов каждый день изменения в стандарте плюсов даже не верхушка, а маленькая снежинка. Но если совместимости нет - то значит ее нет и все тут. Какая нахуй разница что ее "можно зделоть" в идеальных лабораторных условиях. Или я чего то не догоняю?
Вот в жабке там можно взять jar скомпилированный хер пойми кем на заре человечества и импортировать из него классы и делать с ним всякое. (По крайней мере в теории, на практике хз как дела обстоят). Но это достигается тем что одна фирма контролирует и язык, и компилятор и вм его выполняющую. (Это кстати необходимое, но не достаточное условие MS в dotnet говна понамесили и каждая сборка идет в десятке разных вариантов)
Here is the death notice from gcc-4.7.2-1-mingw32.README.txt : Binary incompatibility notice!
The C and C++ ABI changed in GCC 4.7.0, which means in general you can't link together binaries compiled with this version of the compiler and with versions before GCC 4.7.0. In particular:
The option -mms-bitfields is enabled by default, which means the bitfield layout follows the convention of the Microsoft compiler.
C++ class-member functions now follow the __thiscall calling convention.
The compiler now assumes that the caller pops the stack for the implicit arguments pointing to an aggregate return value. This affects functions returning structs by value, like the complex math type.
>>2411584 >>2411541 > Что скажешь про это Что красноглазые пердолики на пердоликсе уже в край ахуели. Ломать calling convention даже индусы не додумались.
>>2412067 JS это схемка мимикрирующая под джаву, по сравнению с плюсами так вообще язык богов. Все кто утверждают что JS такой же кусок говна как плюсы или прости господи PHP - просто даунята умственно неполноценные.
>>2412124 Про "схему в браузере" был высер от самих создателей жопаскрипта ещё в те времена, когда более адекватное сравнение было сложно придумать. А шизы подхватили.
А может ли быть язык быстрее с/с++? Или саму концепцию "платить только за то, что используешь", на которой они построены, преодолеть невозможно математически, эстетически, физиологически
Просто я подумал, а что есть Rust, или нет, пусть существует воображаемый язык Fast, который превосходит в производительности плюсы. Тогда зачем мне углубляться в плюсы? Я вижу только одну причину - интересные легаси библиотеки, написанные на крестах - openCV, boost, Unreal Engine, Unity и многие другие.
>>2412136 > есть Rust Он примерно такой же по производительности как и кресты. Если ты не используешь очевидно медленные фичи, то скорость везде одинаковая, ведь оптимизации одни и те же. Отличия только в сахаре и в том что в Расте медленные фичи просто не добавляют, а в крестах всё подряд есть. Сишка, кстати, уже посасывает почти во всех случаях у крестов по производительности с максимальными оптимизациями.
>>2412136 Раст и другие подобные языки не про производительность, они про семантику. Типы недостаточно просто скорости, надо ещё и натянуть сектанство наподобие семантики владения. Они могут в каких-то задачах быть быстрее крестов, а в каких-то будут медленнее, потому что разные алгоритмы генерации и оптимизации кода. Да и то выигрыш не в разы, как при сравнении с питоном и JS, а в долях процента. > Unity Хоть рантайм и на крестах, самому тебе юзать кресты не дадут, только через обёртки на шарпе.
>>2412124>>2412127 Динамический язык с полноценными HOF с замыканиями, с чем вы предлагаете его сравнивать - с вашими сраками раздолбаными что ли? >>2412136 >пусть существует воображаемый язык Fast У тебя какая то логическая нестыковка уже в самом вопросе. Вот если бы у бабушки был хуй вот тогда... Ну когда такой Fast появится то весьма вероятно плюсопараша и задаром никому не нужна будет как кобол.
>>2412212>>2412232 Но ведь плюсы больше всех на свете надрачивают на обратную совместимость (на уровне языка). Исключительно имхо но я считаю что проблема таких контор в подавляющем большинстве в чисто бюрократической плоскости - ведь нужно чтобы некий Вася обновил весь тулинг по всей конторе и кто будет этот Вася и на каких основаниях совсем не ясно.
>>2412338 >От тезиса что плюсы уебищнее жс сральни загорятся только в этом треде. >С++ тред Интересно, почему же? Алсо, ясен хуй, что другие питухонища не будут гореть, а даже поддерживать, ибо сами на подобной скриптопараше пишут, а нормальные языки не осилили
>>2412136 >Тогда зачем мне углубляться в плюсы? Я вижу только одну причину че, хуило, думаешь мы тут тебя уговаривать будем чтобы ты на крестах попрограммировал ой, ну так и быть, убедите меня и я может быть начну иди нахуй
А как там с char в линуксе? Почему на винде надо ебаться с кодировкой для отображения кириллицы, а на линуксе char умудряется работать с русскими буковами(чар - один байт, но ведь одна русская буква в юникоде(utf-8) занимает два байта) без всяких там сетлокалей?
>>2412467 Нет, лол. Фронтенд языка компилирует IR-код для бекэнда llvm, а уже внутри эой адской машины происходит все оптимизации. Разница может быть только между разными бекендами, например, gcc , llvm, tcc и т.д.
Ну например, в си нет исключений, поэтому стек можно форматировать проще (в плюсах же не поставишь nothrow на каждой функции), то есть некоторые функции в си чуть быстрее.
>>2412730 Или си с ассемблерными вставками. Еще гипотетически какой-нибудь caml можеть обогнать программу со множеством malloc/free за счет сборки мусора, где выделение памяти будет очень дешево, а освобождение "бесплатно".
Ладно, спрошу в крестобоярском треде. Я решил перепройти первую халфу. Рендеринг картинки с использованием видеокарты через OpenGL там был написан на-отъебись. Какие-то дженерик алгоритмы, которые убивают всю красоту и ручную выделку картинки, заложенную в Software-рендеринг. Смазанные текстуры, отсутствие прикольного эффекта под водой и анимации поверхности воды, билинейная интерполяция всего, потраченный HUD с прицелом, словом, фублять-фунахуй. И никакие консольные команды не позволяют это даже приблизить по качеству к оригиналу. Но проблему Software-рендера в том, что там гвоздями прибиты только четыре опции по разрешению, и все они квадратные. Когда я жил с ЭЛТ-мониторами, мне было заебись. Но теперь, когда я захотел перепройти на FullHD, мне стало грустно. Можно ли как-то это говно пересобрать из исходников, запилив там нормальный резолюшен?
>>2412136 >А может ли быть язык быстрее с/с++? да, пиши на asm'e или в машинных кодах, что ещё лучше, долго пишешь, долго отлаживаешь, работать будет идеально - полок производительности достигнут
>>2412836 Поищи на гитхабе проекты, там уже все что угодно делали с халфой, и вулкан прикручивали, и рейтрейсинг добавляли, и текстуры меняли, в общем, на любой вкус найдется.
Почему все самые интересные задачи на плюсах? Пролистываю на хх вакансии, что там есть: бэкенд-дрисня на шарпе, ангуляр-дрисня, бэкенд-дрисня на пэхэпе, бэкенд-дрисня на питоне, 1С-дрисня, битрикс-дрисня, мобильная дрисня на андроид, мобильная дрисня на свифт. Из нормального только ERP/WMS/CRM-системы на жаве или шарпе и разработка игр на Юнити.
:-1: error: /Desktop/Project/hidapi/libs/libhidapi.a: error adding symbols: file format not recognized Как победить данную ошибку QtCreator система Ubuntu
>>2413426 Забавное, Степанов очень не любил ООП, и постарался чтобы его по минимуму было в стл. А дебилы вместо стл в крестах изучают всякие наследования и инкапсуляции...
>>2413607 Это максимчук, он реально похож, в гугле есть цветные фото Тут просто забавно насколько по внешности большинства можно стереотипно сказать кто есть кто, хотя было дело 20+ лет назад
Два 20летних тимлида нафоршмачившие из говна и палок легендарный по забагованности иксрей Три патлатеньких и духовно богатых художника Подкачанный энергичный кабан Лысеющий мужчина средних лет взявший на себя единственную технически сложную часть в этой салогалере
Ну остальные которых не выделил не так палятся конечно.
>>2413743 То же самое можно экстраполировать на математику в целом. Все знают что такое математика, но попробуй объяснить на кой чёрт это нужно в программировании. Не нужно.
>>2412898 да, пиши на asme сам бы хотел так, но для этого нужно обладать очень большими знаниями, которые хрен где найдёшь в удобоваривом виде один мануал по x86 от Intel - 2k страниц на ангельском (тут точно не помню, то ли один мануал из 4х частей на 2k страниц, то ли каждая часть на 2k страниц), потом если хочешь писать под какую-либо систему, ищи аналогичные по объёму мануалы на win/linux или ещё что
>>2413956 >но для этого нужно обладать очень большими знаниями, С чего бы? Ты вообще можешь сам написать простенькую виртуальную машину, реализующую например базовый RISC V для целых и писать под нее.
>>2413997 Лол, производительность идёт из инструкций которые ты исполняешь и их типов, видов и порядка. Поэтому тебе можно просто Тьюринг машину дать чтобы ты поигрался, но потом все проги переконвертировать в реальную архитектуру, в тот же risk v. А вообще раз уж вы тут такие охуевше требовательные к производительности, берите что-нибудь с интересной архитектурой типо Эльбруса и вперёд - там задач по оптимизации на тысячелетия
Как принято в реальных проектах структурировать код? Какие там файлы, .h, .cpp, .inl? Достаточно ли интерфейса класса в .h, а реализацию в cpp? Что должно быть в main(), а чего не должно быть? Какие примеры есть на гитхабе?
>>2413995 >программисты с реальными знанием asma Пердят в нии закрытых за 50к. (Показывай что ты там на хабре видел.) >>2413985>>2414014 >простенькую виртуальную машину >переконвертировать в реальную архитектуру >с интересной архитектурой типо Эльбруса Осторожно, в треде орудует анальный клоун.
>>2414038 Если кратко, все делают как хотят, никаких стандартов в индустрии не существует
> интерфейс класса Ты видимо имеешь в виду объявление класса, да обьявляешь ты класс в хедере, а реализацию в цпп файлы Но если класс является темплейтом, то пишешь определение в хедер файле
>>2414227 > Если кратко, все делают как хотят, никаких стандартов в индустрии не существует Ну охуеть теперь, я хочу, чтобы мои работы на гитхабе не выглядели по-долбоебски для интервьюера на будущую работу.
> Но если класс является темплейтом, то пишешь определение в хедер файле Время компиляции не жмет?
>>2414263 Использую, сам недавно узнал о такой залупе с шаблонам. Неудобно конечно и компил тайм увеличивает, но зато все логично. Вся-таки надстройка над портативным ассемблером, а не какой-то там абстрактный язык.
Анон привет. for (cost auto & it : entries) { auto I = std::distance(entries.begin(), it); } Как взять индекс I в таком цикле, работает при for (auto it=entries.begin(); it! = entries.end(); it++), а в варианте #1 нет. Не то, чтобы проблема, но хочется знать. P.S. Написал в прошлый по ошибке
>>2414387 range-based for это сахарок над итераторами для случая, когда тебе как раз не нужны индексы. Зачем ты пытаешься их получать? Если очень хочется, то можешь объявить отдельную переменную, которую будешь инкрементить.
>>2414236 > Ну охуеть теперь, я хочу, чтобы мои работы на гитхабе не выглядели по-долбоебски для интервьюера на будущую работу. Всем около похуй будет, но если прям хочешь запариться смотри популярные опенсорс проекты поглядеть
Я не знаток С++. Потому, скажите мне, что я сделал не так. Я просто не верю, что вот так вот нужно на самом деле писать. Просто мои познания плюсов - ограничены вузом, там по сути из плюсов нам только про классы рассказали, а остальное скорее был чистый си. А потом я увидел жаву, влюбился и плюсы не трогал. Но вот решил потрогать. И я опять же не верю, что вот так вот на самом деле на плюсах нужно писать. Покажите, как надо на самом деле.
>>2414482 > Я не знаток С++ А чего ты знаток? На сишке или жабе это тоже будет считаться лютым говнокодом. Если ты долбаёб, то на любом языке будешь писать хуиту. Нахуй ты циклы используешь, когда есть std::chrono::system_clock::now()?
>>2414493 А про > Нахуй ты циклы используешь, когда есть std::chrono::system_clock::now()? Цель вывсести время работы системы. Каким образом это поможет - я хуй знает, потому что судя по описанию: > Returns a time point representing the current point in time Если это подразумевает время прошедшее с запуска системы - то извиняй.
>>2414495 > я лид в команде на шарпах Да кому ты пиздишь, студент ебучий. На крестах это делается ровно так же, как на твоём пике, только с другими названиями методов.
>>2414495 >Gets the number of milliseconds elapsed since the system started. >public static long TickCount64 { get; } Буэ. Почему не наносекунды, почему нет своего типа, чтобы работало автоматическое приведение хоть к строке, хоть к Аллаху?
>>2414501 Чел. Так покажи. Я же сразу сказал, что не шарю за плюсы. Я потому и спросил же. Потому что по результатам гугления и смотрения на гитхабе - создается впечатление, что все вот так и делают.
>>2414504 Я в упор не понимаю что ты хочешь сказать. Чел, взглянув на функцию - зачем-то предлагает std::chrono::system_clock::now При этом. Функция называется : printUptime В теле функции - происходит нахождение дней, часов, минут, секунд и миллисекунд прошедших с запуска системы и вывод это в стандартный вывод. Но я - дурак. Я читать не умею.
>>2414494 Какой еще бейт? Возникли задачи на плюсах на работе. Очень жесткие требования к производительности и потребляемым ресурсам. Я - последний раз писал на C/C++(именно что вот так, потому что от плюсов там только классы) на втором курсе и это был интерпретатор паскаля. Сейчас - происходит исследовательский этап работ, по выяснению и составлению best practice, чтобы когда он закончился и новая команда была собрана - не тратить время на набивание шишек, а дать документик, с гайдлайнами и примерами как надо, а как не надо. Для примера - пилится простой сервер, будет корректировать время устройства, плюс отдавать данные с датчиков и диагностическую информацию, как раз в духе работы системы. Ну так вот. Меня как раз и смутило, что я не смог найти какого-то единого и удобного способа, такую простую вещь, как вывод времени работы хотя бы просто получить. Как я помню - С++ был ООП языком. И я почему-то ожидал, что будет что-то в духе: System.Uptime ну или похожего толка. Опять же, если знаешь пример как вывести проще время работы системы - покажи. Я только ж рад буду, добавлю в документик как хороший пример.
>>2414495 Это такой троллинг тупостью? Напиши алгоритм быстрой сортировки на плюсах, а потом выспи в треде - а на шарпе это делается вот так a list.Sort();
>>2414513 >Возникли задачи на плюсах на работе. Очень жесткие требования к производительности и потребляемым ресурсам. Это сколько раз в секунду нужно дёргать uptime, чтобы он тормозил?
>>2414491 А относительно этого, я вот только после того как запостил - заметил, что один while - лишний. Это действительно плохой код со стороны. Я просто почему-то думал, что мне покажут как надо. Я ж не специалист. А в шарпах тех же - сейчас тренд на как-бы функциональщину и циклы там никто сейчас почти не пишет. Все оч высокоуровнево. >>2414517 Нет не троллинг. Я потому и спрашиваю. Потому что в тех же плюсах я помню, что был std::sort. Но для такой простой вещи как время и временные промежутки для прикладных задач - все что я увидел это использование std::chrono и руками для нужд пилить вот такое вот. >>2414518 Это пилится пример. Реальное ПО должно будет с датчиков на дешевом китайском железе собирать информацию, хранить в Sqlite и по запросу отдавать в систему сбора, которая в свою очередь будет приводить к общему виду и в облако отправлять, а пользователь - будет видеть что у него там котел перегрелся и нужно включить аварийное охлаждение.
>>2414403 >range-based for это сахарок над итераторами для случая, когда тебе как раз не нужны индексы. Зачем ты пытаешься их получать? Если очень хочется, то можешь объявить отдельную переменную, которую будешь инкрементить. Для того, чтобы на основе текущего индекса и entry.size() высчитать прогресс операции в основной thread. Про переменную знаю, так и делал, но мало ли, может ещё варианты есть. А range based использую для лаконичности.
Анон, каков шанс пройти собес, да и просто быть на него приглашённым на c++ джуна без профильного образования и еба-онлайн курсов. Не вкатывальщик, с плюсами знаком больше 10 лет. Есть несколько не оупенсорс пет проектов, часть из них правда старое легаси на мобайл. Плюсы люблю, вижу как последние 10 лет он развивается, и логику и gui пишу только на нём, но комплексную из-за отсутствия диплома (хотя столько заданий решил будущим "дипломированным специалистам" с FL) и из-за возраста за 30 (ну ладно, чуть за 40). Ну и отсутствия опыта коммерческой разработки (донаты юзеров этож не коммерция наверное). Активно юзаю stl, могу в многопоток, успешно интегрирую сторонние либы в свои поделки, git, cmake, несколько ide и компиляторов. Был опыт с opengl и glsl. Знаю на базовом уровне sql запросы, т.к. юзаю СУБД у себя, что не знаю, узнаю в процессе. Жабу или Kotlin немного пробовал, но душа лежит к плюсам. От веб разработки или 1с тошнит. От разделения на backend или front-end впадаю во фрустрацию, вот десктоп приложение это фронт или бэк? Если пишу и логику и gui. Любую технологию по мере надобности осваиваю, в общем практик. Но и литературу почитываю. Inb: шутеечки про завод.
>>2414574 > за 40 > отсутствия опыта коммерческой > без профильного образования Тут проблема в том, что тебя ХР даже до чела которому нужен разработчик не покажет твое резюме. В твоем случае - по знакомствам - единственный рабочий вариант. Если пользуешься гитхабом, то должен понимать, что он в первую очередь - социалочка. Так вот - вливайся в комунити, когда тебя в нем шарящим начнут считать - вбрось инфу о том, что работа тебе бы была нужна. Можешь еще во всяких дискорд-конфах и телегах позависать.
Ну серьезно. Я когда про возраст услышал - уже охуел. У меня сразу вопрос: А хули ты 15 лет делал? Без проектов - каких-то, хотя бы уровня микроОС я бы не стал связываться с тобой.
>>2414604 Блядь. Как я люблю писать и редактировать не перечитатв. > Тут проблема в том, что тебя ХР даже до чела которому нужен разработчик не покажет твое резюме. Тут проблема в том, что ХР, увидев такое вот описание, даже не покажет твое резюме начальнику отдела, которому нужен разработчик.
>>2414610 Где ты там тупость видишь, лол? Моя жена - ХР. И вечерами пятницы под винцо - мы иногда такие вот резюме смотрим и ржем с них.
Ну серьезно. Я бы понял, если бы чел сказал, что он - работал инженером, по долгу службы что-то писал на си, в свободное время учил плюсы, а сейчас - решил не совмещать, а полностью уйти в плюсы. Я бы понял, если бы он был каким-то там идейным опенсорсером, который что-то уровня Nginx запилил и теперь работу ищет. Я бы понял, если это чел, который пишет блоги образовательные и у него есть репутация в комьюнити. Но тут какой-то мутный дед, без ясного опыта и примеров рабочих проектов, который любовью к плюсам воспылал. Тут два варианта: деменция и деньги.
>>2414574 > без профильного образования и еба-онлайн курсов Это говно нужно только для зумерков. > шутеечки про завод Туда джуном без проблем возьмут. А в нормальные конторы джуны скорее всего в принципе нахуй не нужны. Джуны там занимаются макакингом на высокоуровневых языках, а крестовики нужны хотя бы мидлы. Я бы на твоём месте не стал в это болото лезть, в ИТ и без кодинга денег достаточно, а для души можешь и так пердолить что-нибудь.
>>2414646 > Туда джуном без проблем возьмут. Если бы он это писал лет 10-15 назад, то да. Сейчас - любой приличный завод, которому нужны плюсовики - в каждом региональном вузе имеет кафедру или пару засланцев на кафедры, с которых на практику тащат студентов. А хорошим предлагают работу. И у завода, точно так же как и у галер - есть выбор.
>>2414604 >Тут проблема в том, что тебя ХР даже до чела которому нужен разработчик не покажет твое резюме. Я представляю уровень компетенции хрюш, поэтому и написал.
>В твоем случае - по знакомствам - единственный рабочий вариант. Знакомства в онлайне, часть за рубежом, а хотелось бы офлайн.
>Если пользуешься гитхабом, то должен понимать, что он в первую очередь - социалочка. Так вот - вливайся в комунити, когда тебя в нем шарящим начнут считать - вбрось инфу о том, что работа тебе бы была нужна. Я написал git, а не github. В ОС проекты меня приглашали, после некоторой помощи с моей стороны, но где-то было не интересно, где-то был чистый Winapi, что тоже не особо люблю.
>Можешь еще во всяких дискорд-конфах и телегах позависать. Читаю, пишу. Но форумы и стак по компетенции выше. Дискорд это что-то зумерское?
>Ну серьезно. Я когда про возраст услышал - уже охуел. У меня сразу вопрос: А хули ты 15 лет делал? Без проектов - каких-то, хотя бы уровня микроОС я бы не стал связываться с тобой. Писал в свое удовольствие, в ящике письма и благодарности от людей со всего света, в т.ч. от частных софтварных компаний,которым я помогал развивать их продукт just for fun.
>тим-лид на шарпах, 24 года Завидую белой завистью. Что ты лично от и до написал за последние 15 лет? Интересно, что нужно, чтобы стать таким крутым специалистом.
>>2414618 >Я бы понял, если бы он был каким-то там идейным опенсорсером, который что-то уровня Nginx запилил и теперь работу ищет. Я бы понял, если это чел, который пишет блоги образовательные и у него есть репутация в комьюнити. Но тут какой-то мутный дед, без ясного опыта и примеров рабочих проектов, который любовью к плюсам воспылал. Тут два варианта: деменция и деньги. Покажи свое, уровня nginx, запредельный ЧСВ ведь не на пустом месте?
>>2414646 >Джуны там занимаются макакингом на высокоуровневых языках, а крестовики нужны хотя бы мидлы Джуна я упомянул в контексте опыта не с языком, а скорее с отсутствием официального опыта. Про высокоурровневые языки хорошо, что вспомнил: я писал на плюсах расширения для одного из таких, из нативного формата в формат языка. Т.е. делал врапинг родного api платформы в интерпретатор, писал api reference к этому добру, часть просто врапинг, часть расширение функционала. Это к вопросу о том, что я делал 15 лет назад. В принципе это уже legacy, могу выкинуть и на github. >>2414574 "мутный дед" из этого поста.
>>2414696 Вот отзыв от разработчика интерпретируемого языка, для которого быдлокодил расширения на плюсах, нашёл: >Thank you very much username, this module gives us a hole bunch of new possibilities. >Great! Мутный "дед" :[
>>2414672 > Читаю, пишу. Но форумы и стак по компетенции выше. Дискорд это что-то зумерское? Ну так заведи блог. Внезапно - это сильно увеличивает твои шансы, если ты действительно крутой спец, как пишешь о себе. Кодеры - народ либеральный на самом деле, если тебя сам тимлид заметит - он может просто попросить хрюшу саму тебе написать и пригласить пройти собес. Плюс, для некоторых контор, иметь у себя автора популярного - это статусно, если ты при этом не будешь воду мутить.
> письма и благодарности Лучше бы у тебя были сертификаты или ты значился в патентах/авторах-соавторах.
> Что ты лично от и до написал за последние 15 лет Все что я писал от и до сам - это не связанная с работой хуня, уровня микро CMS, фреймворки на которых я пробовал идеи возникшие в ходе разработки, в духе: а что если у нас все приложение будет стеком и как это будет работать. Ну и в таком духе. А жизненный цикл этих петов: Возникла идея, за неделю склепал и выкинул на гитхаб, может быть кому интересно будет и форкент. А тимлид я потому что умею именно что организаторские вопросы решать и быть буфером между девелоперами и бизнесом.
>>2414718 В резюме или сопроводительное можно указывать такое? Legacy, сайт остался только в web.archive. На гитхаб могу выкинуть, как пруф и for historycal purposes. Эйчар действительно малолетние курицы в очках без диоптрий для умного вида, такое впечатление сложилось от просмотра инфоцыган на ютьюбе. И эти сущности стоят между людьми которыми есть что обсудить. Это печально :( "Мутный дед".
>>2414731 > В резюме или сопроводительное можно указывать такое? В гитхаб накидай всего. На хрюш похуй, не понравишься ей - уже похуй будет на твои знания, а вот если будет смотреть кодер, то уже лучше код показывать. > Эйчар действительно малолетние курицы в очках без диоптрий для умного вида Зависит от конторы. Если хочешь заебись работу, то надо чтоб тебя пригласили, а не ты оббивал пороги. У нас хрюша вообще хуй пойми чем занимается - за год ни одного собеседования вроде не было, всех новых брали только по рекомендациям от других сотрудников, такое ощущение что уже в очереди стоят люди на 10 вакансий вперёд.
>>2414725 >Ну так заведи блог. Внезапно - это сильно увеличивает твои шансы, если ты действительно крутой спец, как пишешь о себе. >Кодеры - народ либеральный на самом деле, если тебя сам тимлид заметит - он может просто попросить хрюшу саму тебе написать и пригласить пройти собес. Плюс, для некоторых контор, иметь у себя автора популярного - это статусно, если ты при этом не будешь воду мутить. С конца нулевых вёл, но забросил в начале 10-х. Форум свой был небольшой для своих, народ разный был и из СНГ и из-за рубежа. Но основная масса: пассивная: скачал и убежал, тоже закрыл. Крутым спецом себя не считаю, но и мутным дедом с деменцией, как ты выразился тоже. Опыт есть, но без обсуждения опыта с понимающий человеком через сито чьих-то жён-эйчар пройти проблематично.
>Лучше бы у тебя были сертификаты или ты значился в патентах/авторах-соавторах. Может и лучше, но имеем что имеем.
>Все что я писал от и до сам - это не связанная с работой хуня, уровня микро CMS, фреймворки на которых я пробовал идеи возникшие в ходе разработки, в духе: а что если у нас все приложение будет стеком и как это будет работать. Ну и в таком духе. А жизненный цикл этих петов: Возникла идея, за неделю склепал и выкинул на гитхаб, может быть кому интересно будет и форкент. >А тимлид я потому что умею именно что организаторские вопросы решать и быть буфером между девелоперами и бизнесом. Ну вот видишь, не всем, кто может (или не может) что-то показать стоит об этом говорить. Некоторые проекты я вёл несколько лет, в одно жало и каждую версию ждали и был фидбек. До коммерции оно не доросло по причинам не разработки, а сторонним. Ну да ладно это лирика всё. Мутный дед
опять какой-то дед в тред протек с десятком лет опыта, сотнями проектов и тысячами пользователей, а на деле на 4пда прошивки под симбиан пилит по выходным за бутылку пива
>>2414979 > не заставляет тебя использовать классы Но заставляет использовать корректные типы. Когда тебе приходится иметь дело с байтоёбством, то приходится дико ебаться, ведь кастануть что угодно к void⚹ нельзя. std::any немного упрощает жизнь, но всё равно не покрывает всё. В winapi например есть всякие LPxxx, которые очень неохотно кастуются, строки бывает сложно кастануть в правильный тип, хотя ты прекрасно знаешь что там массив чаров. Хотя с другой стороны после раста это кажется лёгкой задачей, там даже ансейф не даёт так просто наебать типобезопасность. > с new проще Его вообще нормальные люди в 2k22 не используют.
>>2415026 > А что нормальные люди используют в 2к22? std::unique_ptr > а что байтоебы используют? Даже я, байтоёбствуя, никогда new не использую. Всё на стеке, либо unique_ptr, либо уже из либ получаю указатели на кучу.
>>2415039 Ну выбрал это, а дальше че делать? Создавать новый файл .c и все? И точно все сишное будет? Среда не будет ругаться, что я выбрал scanf вместо scanf_s?
>>2415027 > эксепшены Выключаются в компиляторе, совсем. > мув семантика Без неё оптимизированный код невозможен. У тебя же даже в сишке с включёнными оптимизациями неявно перемещаются структуры. > RTTI Выключается в компиляторе, совсем.
>>2415048 > Выключаются в компиляторе, совсем. > Выключается в компиляторе, совсем. Подскажи ньюфу как сделоть? И как без rtti полиморфизм и прочие рантаймовые вещи будут работать?
>>2415046 > И точно все сишное будет? .c будет компилится сишным компилятором. Пикрилейтед можешь для всего проекта выбрать или для отдельного файла, разрешение хоть txt делай.
>>2410386 (OP) Иду строго по книге, компилятор не дает запустить выдаёт ошибку. Почитал, либо нужно сделать strcpy_s(всё равно не дает запустить пропадает синтаксис). Или же сделать DEFINE _CRT_SECURE_NO_WARNINGS, но также не даёт запуск. Помогите неосилятору
>>2415063 >Самые ценные фичи крестах - это комменты и автодобавление .h в include. ? >>2415072 Отключи варнинги, посмотри параметры функции strcpy_s и исправь код.
>>2414749 Я если что не хочу тебя демотивировать, няша. Попробовать порассылать резюме и примеры того что делал - стоит. Желательно, раз уж ты вроде как шаришь - сразу на тех спецов выходить, потому что они таки последнее слово имеют, и в отличии от хрюши твои дипломы, возраст и прочее для них имеет третью важность. Сорян, если показалось, что я пытаюсь тебя отговорить. Пробовать стоит в любом случае.
>>2410386 (OP) Подподает ли определение собственных и использование всяких мелких типов (меньше стандартного инта) под термин БАЙТОЕБСТВО. Есть мнение что типы меньше машинного слова только для педерастов поскольку не дает никаких профитов в скорости потому что они все равно приводятся к стандартному.
>>2415080 Хуйня без задач - говнокодер, считающий что если в одном месте что-то оптимизировать, то весь код станет быстрым. Сравнивать ручную оптимизацию в -О0 с -О3 - настоящая умственная отсталость. Поэтому в очередной раз делаем вывод, что хабр - это помойка уровня пикабу.
Юник поинтер это же по сути переменная, только хитрая, владеет памятью из кучи и умеет ее освобождать, когда выходит из области видимости. Почему тогда не сделали метод .copy() для нее, чтобы можно было создать переменную, владеющую другим кусом памяти, но заполненную такими же данными.
>>2415136 >Гитхаб. Это который разрабатывают индийцы для того, чтобы другие индийцы могли ставить друг другу звездочки и проходить собеседования таким образом, чтобы дальше подобную хуету разрабатывать?
>>2415142 Да это то место куда сливают лабы в надежде получить работу. Пытался найти что-то по openGL нашел только код с протухшим glut от линуксойдов.
>>2415102 > приводятся к стандартному Нет, у тебя все инструкции могут принимать однобайтные константы: короче инструкция - лучше кеш работает и меньше задержки. В кэш-лайн больше переменных влезет, если делать их меньше - быстрее из памяти чтение будет. Из регистров можно брать отдельные байты.
>>2415158 Поэтому после универа и каша в голове у всех. Структура из 4 чаров будет занимать 4 байта, а не 16. Так же и на стек можно пушить 8 байт RAX, а можно 1 байт AH/AL. То что widening-касты происходят неявно не значит что там выравнивание меняется.
>>2415169 Не, сказали не париться с short потому что автоматически он переведется в int и обработается как int процесоором. Видимо такая приколюха чтобы у байтоебов пердак порвало когда узнают.
Я так и не понял, крестаны, действительно ли не нужно запариваться инструкциями, отладкой, ассемьлером и прочей дрисней и просто напросто использовать O3 который сделает все за тебя быстрее сам? Звучит как бред.
>>2415196 > обработается как int процесоором На бюджете такому учат? Сложение может быть разными инструкциями выполнено, один опкод может принимать разные размеры данных.
>>2415196 Это не вся правда. Хранится он будет как short, обрабатываться ИНОГДА тоже: short s; ... s++; Этот инкремент потребует две команды на мипсе вместо одной. addu s0,1 and s0,65535
>>2415265 Любимая сингл игра есть? Засунь в дизассемблер, например в IDA Pro или radare2, начни изучать. Патчи константы, функции, смотри, анализируй. Потом вкатись в godbolt
нормально, чё а вы тут ноете что работы нет а вот челик не унывает влюбился в явку, покодил на ней, но вывертами судьбы оказался "лидом" в сишарп проекте, а сейчас вот будет походу лидом в команде плюсовиков и везде нужный и полезный а в коде портяночка из ифов и циклов, кхе, кхе
>>2415395 спасибо p.s. не скоро доберусь до этой книжки - есть в закромах, когда доберусь не знаю буду ли что-нибудь понимать( как же многое зависит от автора... дай некоторым букварь написать и иная книжка по матанализу будет проще
>>2415395 В целом бесполезная книга. И довольно устаревшая. Все эти базовые вещи сделает за тебя Гидра. А вот про высокоуровневые вещи тебе там не расскажут, а ты с ними столкнёшься. В реальном бинарнике из 2022 года надо с vtable разбираться, анпакингом, защитами на виртуальных машинах, скриптовыми движками, говном на стеке, портянками после оптимизаций, VEX. Помощи от Карпеского с его книгами никакой, только если консольный crackme ковырять сможешь после неё. Намного полезнее прочитать если не все 5к страниц документации Интела, то хотя бы 2A и 3A.
Для чего нужны списки инициализации гайс? Я уже несколько ссылок прочитал, все равно нихуя не понял. Вроде относительно сложные вещи понимаю, но вот это - нет. Зачем это надо?
CppCon 2018: Nicolai Josuttis “The Nightmare of Initialization in C++” https://www.youtube.com/watch?v=7DTlWPgX6zs Вот это выступление на меня оказало можно сказать экзистенциальное воздействие. Раньше я очень любил изучать разные фишки-фишечки-фишульки разных языков, что там да как. Но как то это увлечение сошло на нет, а вот это видео было особенно переломным в этом процессе. Теперь я просто хочу чтобы на языке было максимально просто написать то что мне хочется и без подводных камней, а дрочка на "стандарт" это что то сродни окунанию в море дерьмища.
>>2415524 Что бывает, когда в язык тащат что попало. Вот в божественном SML есть один способ: val i = 0 and f = 0.0 Тип выводится, присвоение опустить нельзя (оно вообще однократное).
>>2415521 Вероятность того что в коде с которым тебе придется иметь дело порезвился хотя бы один такой ебнутый очень велика, практически равна единице.
Сделал приложение под orange pi, ubuntu, оно должно работать с hid устройством. При запуске приложения оно не может читать байты с hid устройства. Но если запустить через командную строку и sudo, то оно читает, но там какой то режим запускается, что у меня графика вся уебищная и 2 фпс всего если я через sudo запускаю. Как разрешить приложению доступ к hid устройству
Что и где можно почитать/посмотреть про cmake и как им компилировать под все платформы (линукс, шиндовс, макось) приложение с динамической подгрузкой нативных либ? В шапке быстрым поиском не нашел ничего про cmake, книжки не читал.
>>2416702 >Он не компилирует. Ну к словам-то уж не придирайся. И вообще, в широком смысла слова - таки компилирует. >https://cmake.org/documentation/ Оттуда собственно и начал. Изначально мне не понравилось, что в туториале исходный код кладется рядом с конфигом cmake, но видимо отдельно класть научат попозже. Ладно, укатываюсь туда.
>>2415516 Ага-ага, меня вот одно уебище по имени Артем, не будем называть имена, собеседовало и спрашивало про то, какой тип данных вернет функция со всратой сигнатурой. Нет бы написать auto, но у этих уебком на проектах сишный код и ембедед.
Пытаюсь посчитать циклы проца в коде типа for (int i = 0; i < 10000000; i++) { start = get_cycles_start(); // code to benchmark end = get_cycles_end(); num_cycles += end - start; } но в ассемблерном коде gcc выдаёт аналог вот такого кода for (int i = 0; i < 10000000; i++) { // code to benchmark start = get_cycles_start(); end = get_cycles_end(); num_cycles += end - start; } Как запретить gcc изменять порядок инструкций? Желательно не для всего кода, а локально.
>>2416784 Бля, так вот почему запускалась и работала прога с созданием массива на овердохуя гигов памяти, но стоило туда попробовать что-то записать, и она сегфолтнулась.
>>2416867 Ну откуда я знал, у меня же cppreference в башку не вшит. Хотя то, что перегружено разыменование очень даже логично. А еще путаюсь с категориями выражений. Скажите, любое выражение, которое справа от знака равно вернет r-value? В частности сначала (⚹sptr) вернет r-value, а потом функция std::make_unique() вернет r-value?
>>2416819 Я просто вообще никак не могу понять чего ты хочешь добиться и нахуя заводить два юник пойнтера на один объект. Его же блядь не для хохмы назвали ЮНИК пойнтером. Проблемы уровня что выведет i+++++i - правильный ответ - такое напишет только пидор ебнутый.
>>2416965 Я понял, ты имеешь ввиду, что (⚹sptr) вернет ссылку. Но ведь ссылка стоит справа от =, она разве не становится r-value или я вообще ничего не понимаю. >>2416971 > онять чего ты хочешь добиться и нахуя заводить два юник пойнтера на один объект. Его же блядь не для хохмы назвали ЮНИК пойнтером. Бля, какой же ты тугой, сколько раз говорить, это не два поинтера на один объект, а два поинтера на разные объекты, но одинаковые по битам.
>>2416995 У тебя есть объект Obj а. В какой-то момент в коде нужно сделать его клон Obj b(a). Все. разница только в том, что смартпоитеры за собой убирают.
Отладчик в студии вообще через жопу стал работать. Заходит зачем-то в ostream, когда в консоль вывожу, строки пропускает, требует какой-то exe_common.inl. Раньше было лучше.
>>2416961 >что перегружено разыменование не только разыменование, но ещё и ->, иначе пользоваться этим очень неудобно
>любое выражение, которое справа от знака равно вернет r-value value категория — это характеристика самого выражения, а не возвращаемого значения, то есть само выражение может быть rvalue или lvalue
и нет, справа от знака равно необязательно rvalue
"⚹sptr" — это lvalue, потому что дереференс возвращает lvalue ссылку
"std::make_unique()" — это rvalue, потому что это вызов функции, который возвращает НЕссылку
>>2417127 Все верно > и нет, справа от знака равно необязательно rvalue
Само собой, но я не понимаю, что конкретно делает оператор = с правым операндом, как бы нелепо это не звучало. Я предполагаю следующий алгоритм: 1) вычисляет выражение, и как ты правильно заметил категория всего выражения может быть как r-value, так и l-value 2) если это l-value, то он применяет к нему операцию получить значение
И если это ссылка, то операция применяется конечно не к ссылке, а к сущности, на которую ссылка ссылается.
Вопрос остался в том, одинаково ли другие операторы выполняют операцию получить значение, например та же функция printf().
>>2417141 >что конкретно делает оператор = с правым операндом так от контекста зависит: переопределён ли оператор равно или нет, что стоит слева от знака равно
>1) вычисляет выражение ну да, как и при любом вызове функции: сначала вычисляются значения выражений-аргументов функции
>2) если это l-value, то он применяет к нему операцию получить значение >И если это ссылка, то операция применяется конечно не к ссылке, а к сущности, на которую ссылка ссылается. звучит как бред какой-то, я не понимаю, о чём ты, ссылки же по сути те же указатели, просто с немного другим интерфейсом
от того, является выражение lvalue или rvalue, могут быть вызваны разные перегрузки функции (move assignment или copy assignment, например), там нет никакой магии, просто overload resolution, как с обычными функциями
Есть большой файл, нужно его частями прочитать, кое-как обработать и записать в другой файл. Сейчас всё это работает в цикле, каждый блок пишу в строку. Всё работает вплоть до последнего блока когда кол-во байт считанных из файла может быть меньше тех, что я заранее резервирую в строке, в итоге логика ломается из-за хлама в строке. Как пофиксить?
>>2416770 не, челик, не каждый раз при обращении к куче смена контекта идет при запросе или освобождении памяти а вообще прикладному программисту нужно просто знать те функции которые могут привести к смене контекста и минимизировать их там где нужно писать быстрый код
>>2417201 > не, челик, не каждый раз при обращении к куче Да, я хуево написал, обращение к ядру только new и delete, уже выделенную память мы естественно без посредников используем.
Аноны, а какая у вас предметная область? У веб-макак, шарпистов, джавистов спрашивать нечего, там сплошное перекладывание ЖЫСОНОВ. А вот с сишниками и плюсовиками более интересно. Просто знание языка ничего не дает, поэтому нужны проблемы и методы ее решения, которые можно реализовать с помощью языка. Так в какой области вы работаете и какие проблемы решаете?
>>2417494 Вот я как раз примерно такие же функции с asm volatile и использую. GCC на asm volatile в данном случае почему-то пох. Возможно, из-за того, что volatile (помимо прочего) предотвращает перестановки инструкций по чтению из/записи в память, а у меня все данные в регистрах помещаются, и обращений к памяти внутри цикла нет. Короче, хз. Свою проблему решил по-простому: читаю TSC до и после цикла, делю разницу на кол-во итераций.
>>2417463 COW (copy-on-write) это общее понятие, а не >аббревиатура в крестах как и RDTSC похоже (не знаю что это)
Главное ты забыл RAII
Всегда кстати угараю с такой хуиты, что один загон скота не знает что творится в другом. Когда например дотнетчики рассказывали какую они охуенную штуку придумали называется MVC и теперь заживем, при этом даже пол-слова не обранив что все нормальные люди этот подход уже давно спиздили из рельс и применяют во всю. И такая хуита постоянно в общем то.
>>2417679 В джавах и прочих говнах уже давно на функциональщину пересели. Байтоёбы stateless код пишут. MVC - это синомим легасиговна с бесконечными багами, примерно так же сейчас MFC ощущается в крестах.
>>2417687 >В джавах и прочих говнах уже давно на функциональщину пересели. Только в твоем манямирке похоже. Пруфы? >Байтоёбы stateless код пишут. Вообще не представляю что ты там подразумеваешь под >stateless код ты что как-то map увидел в коде и перевозбудился? Или десяток туториалов про монады-бурито прочел? Апликативный функтор то хоть козявки отличишь?
Я не врубился. Мультипоток на бустовых сокетах не ломает их? В доке написано, что это составная операция и я не должен писать в один сокет в несколько потоков, НО чем это грозит? Мне надо знать последствия. Если логика как в cin/cout, то замечательно. Или оно крашнуться может?
>>2417701 > Пруфы? Уже целых два функциональных языка запилено на JVM, которые используют в продакшене. F# сейчас набирает популярность. Не говоря уже про то что даже в языках типа раста кучу фич хаскеля притащили, при этом выпилили половину ненужного ООП-говна. > Вообще не представляю Тогда зачем пишешь кринжатину строчкой ниже? Хотя бы загуглил о чём пишут тебе, пред тем как писать что-то.
>>2417714 >пишешь кринжатину Ой бля зумерок, я то думал что ты удивишь батю java фреймворками на которые все >уже пересели и которые не MVC А ты мне суешь мультипарадигменную дрисную нелепую. >F# сейчас набирает популярность ну просто охуеваю с тебя. Аж целых два языка используются в пердакшене блядь охуеть просто. Ну и на хуя мне гуглить твой понос, когда я просто издалека вижу что у тебя полные штаны говнища?
>>2417726 Причина подрыва? Алсо, может ты сам сможешь назвать хоть один свежий MVC-фреймворк на джаве, а не всякие Spring 20-летней давности? Не сможешь же ведь, потому что их нет.
>>2417729 А нахуя хоть кому то в java >свежий MVC-фреймворк на джаве, а не всякие Spring 20-летней давности там же не малолетние ебанько по хуям разных новых нескучных технологий скачут каждый год как ты. Напиши что такое по твоему >stateless код с примером крупного байтоебского проекта в опен сорсе. Предвижу только один пук-сереньк.
>>2417643 Повторяю, это классическое поведение вируса. Любой вирус действует так же, при заражении компьютера первым делом удаляет другие вирусы, оставляя только себя. Вот и твои ав-залупы делают ровно то же самое.
>>2417747 Ну если 40к звезд, то ладно, это значит не хуйня из под коня нахуй никому не всравшаяся. ctrl+f stateless -> Phrase not found ясно. Давай еще.
>>2417793 Ты ебанашка сучая никакого "stateless" кода там в тексте не появится и какую ты нелепую хуиту в своей безмозглой головеньке насочинял, сколько бы я этот текст не перечитывал.
Аноны, как перестать оптимизировать код? Меня аж трясёт, когда я чётко вижу что можно наговнокодить производительнее. В итоге занимаюсь какой-то хуйнёй, а потом наблюдаю кашу, которая устраивает по производительности, но не устраивает как выглядит. А ещё бывает переписываю классы, когда не нравится их структура. Как лечить это? Какие таблетки пить?
>>2417921 >об хто Об что? А так да, лучше бы ему (тебе) перестать дристать под себя с "функциональщиной на которую перешли все джависты" и "stateless кодом"
>>2417748 Только по согласию юзера. (а после, сетап старого антивиря должен удостовериться, что это юзер его удаляет а не зловред, но это уже не моя забота)
>>2418067 > UB Главная аббревиатура, которую надо знать каждому начинающему крестоёбу. А то блять как проинициализируют сид рандома значением неинициализированной переменной, ведь кажется, что там достаточно рандомное значение, чтобы было заебись.
>>2418082 Что бы ты не мог использовать перемещённую переменную. В крестах ты можешь её использовать и это будет UB, о котором тебе скорее всего компилятор даже не скажет. Причём тут вообще ансейф? Он невозможен без выноса коды в блок ансейфа, но даже в этом блоке borrow checker работает.
>>2418088 Потому что для сиспрога у тебя всё ебало будет в ансейфах, ну не всё, а частично, без верификации этих участков ты просто проигрываешь анус пацанам из треда. Но я понял, что ты там вебпарашу пилишь на расте и рад.
>>2418089 > для сиспрога у тебя всё ебало будет в ансейфах Даже при работе с винапи достаточно оборачивать ансейфом только непосредственно вызовы функций, null обрабатывается как None в Option, коды ошибок возвращаются в виде Result. Всё остальное пишется без ансейфа, есть куча safe-биндингов для либ, в том числе и системных. Да и нихуя в ансейфе нет страшного, блок ансейфа значит лишь то что внутри него рантайм раста не управляет памятью, все проверки всё так же работают в нём. >>2418090 Как обычно изворачиваются как могут - "valid but unspecified state". Т.е. переменная валидная, а что в ней находится стандарт не регламентирует. Некоторые инициализируют перемещённую переменную дефолтным значением, как в гайдлайне рекомендуют, кто-то не станет - в любом случае это гадание по фазе луны, фактически UB, если будешь использовать её после перемещения.
>>2418244 Ой, да иди ты в задницу, и драйвера удали - их сетапы то же самое делают.
Конечно мы удаляем другие ав, иначе не факт, что система запустится.
Если не можешь проверить подпись и чек сумму дистриба - не ставь.
А мозгоебли, что можно, а что нельзя, мне и от MS хватает, один аплейт винды охуительнее другого (у них есть куча документов в открытом доступе и ещё пачка под NDA)
>>2418359 А как ты прокомментируешь то что твоё говно работает хуже защитника винды, но ты обманом отключаешь его и ставишь свою мокропиську с зондами? Это ведь самый настоящий троян, как бы ты жопой не вилял.
>>2418359 >драйвера удали - их сетапы то же самое делают Нет. Драйверы это полезные программы, в них нет вредоносных функций.
>Конечно мы удаляем другие ав Еще удаляете другие вирусы и файлы пользователя. Еще пиздите https трафик. Еще майните. Еще замедляете и нагружаете систему приводя к скорому выходу оборудования из строя и ухудшая работу буквально всех программ, включая операционную систему, и не просто по производительности и потреблению памяти, но и внося множество сбоев. Еще отправляете мегатонны собранной информации неизвестно кому и зачем. В общем, нет хуже зловреда чем антивирус. Классический троян слетевший с катужек от вседозволенности, ведь их не судят и не садят. Куда хуже неофициальных троянов которые куда менее вредоносны и которым приходится скрываться.
Какие подводные могут быть в downcast с помощью reinterpret_cast?
У меня есть две ситуации:
- первая я точно знаю что в поинтере лежит производный класс
- во втором, я хочу сделать что то похожее на reinterpret_cast<TagEntity<Type1>⚹>(ptr), где ptr = TagEntity<Type2>⚹. Они же должны иметь полностью идентичны, кроме их константы
>>2418835 Авторитет лида должен быть чем-то обоснован. Иначе бы все стали активно юзать реинтерпрет_каст сразу после того, как сами получили бы право голоса.
>>2419030 А откуда нам знать в какой предметной области он хочет проект написать? Никаких вводных о себе не написал, может быть ему любительская астрономия нравится, тогда можно написать программу для обработки астрофотографий, либо ему нравится системная разработка и тогда можно заняться ядром/загрузчиком/планировщиком, либо вообще может по сетям угорать и написать распределенную сеть для вычислений.
>>2419038 нужен пет именно для джуна, чтоб в худшем случае посидеть недельку-другую и полчуть что-то готовое (возможно подтянуть некоторые навыки, возможно закрыть пару белых пятен, но не изучая целую предметную область на которую нужно пол-года минимум)
>>2419044 >>2419045 Ну так бы и сказали, что нужен проект для джуна. Попробуй просмотрщик и мини редактор для bmp-изображения написать на основе opengl/sdl/sfml. Это весело(можно быстро и наглядно увидеть результат своей работы, а не какие-то непонятные цифры) и полезно(учишься работать с информацией, декомпозировать проблему и проектировать архитектуру приложения). Начти с простого, а именно с ознакомления с форматом bmp, его считывания и вывода на экран. Потом погугли базовые операции с растровой графикой и реализуй эти алгоритмы(увеличение/уменьшение яркости, превращение изображения в ЧБ, изменение контрастности и т.д) . Главное писать все самому, а не использовать готовые решения и библиотеки, иначе какой в этом смысл, верно?
>>2419053 Нет, это сложно даже для синьора. Если взять какое-нибудь опенсорсное геометрическое ядро, то может за длительный период времени что-то и получится написать, но без геометрического ядра будет тяжко.
>>2419054 спасибо, хорошая идея думаю мне это по силам с помощью гугла, можно ещё идейку-другую, буду крайне признателен!
и ещё вопрос: сети я не трогал (ни в каком виде, не знаю с какой стороны подступиться на текущий момент), это большой минус в том что пет-проекты будут desctop only?
p.s. не джунам нужны пет-проекты? я думал у них есть опыт работы и стек технологий, которые они могут подтвердить на собеседовании и всё
>>2417729 Все современные веб фреймворки для жабы (javalin, кваркус, микронавт, ktor для котлина) так или иначе можно использовать и в MVC приложениях. MVC это просто подход к разделению слоев функционала приложения на модель, представление и контроллер. Еще частенько сервисный слой добавляют для всякой бизнес-логики.
>>2417687 >В джавах и прочих говнах уже давно на функциональщину пересели
В Го из функциональщины максимум могу вспомнить то, то функцию можно передавать как аргумент в другую функцию. Почти то же самое, что и указатели на функции в ANSI C89. А так Go даже до жабы очень далеко в плане функциональщины. А в самой жабе функциональщина только на уровне лямбд и стримов используется. Вообще до сих все пишут в ООП (или структурном, в случае Го) стиле, а функциональщину используют как синтаксический сахар.
>>2419061 >можно ещё идейку-другую, буду крайне признателен! >и ещё вопрос: сети я не трогал (ни в каком виде, не знаю с какой стороны подступиться на текущий момент) Ну могу тебе предложить простой проект связанный с сетью, а именно доработку твоего приложения до клиент-серверной архитектуры. Т.е. ты должен будешь предоставить пользователю тонкий клиент для общения с сервером, а все вычисления перенести на сервер. Юзеркейс, примерно, такой: пользователь загружает свой файл на сервер и выбирает операцию, сервер обрабатывает файл и отсылает результат пользователю, пользователь видит предпросмотр и если его устраивает результат, то скачивает файл, иначе выбирает нужную операцию снова. Тонкий клиент можешь реализовать как хочешь, веб-морда, ГУИ, консольная строка, а можешь и вовсе все сразу сделать, реализовав универсальный интерфейс.
> это большой минус в том что пет-проекты будут desctop only? От вакансии и деятельности компании зависит. Например, не думаю, что эмбеддерам будет интересно на твой десктоп-софт смотреть. Хотя для джуна, может быть, и нормально.
>не джунам нужны пет-проекты? я думал у них есть опыт работы и стек технологий, которые они могут подтвердить на собеседовании и всё Да и джунам они не всегда нужны, но опять же от работодателя зависит. Да и лучше иметь проекты на гитхабе, чем не иметь, лишним точно не будет. Важно еще понимать, что пет-проект - это личная инициатива разработчика, а не средство получения вакансии или звездочек на гитхабе. Если у тебя нет желания что-то писать для себя после работы, то не пиши, не нужно мучать себя.
>>2419072 >Юзеркейс, примерно, такой: пользователь загружает свой файл на сервер и выбирает операцию, сервер обрабатывает файл и отсылает результат пользователю, пользователь видит предпросмотр и если его устраивает результат, то скачивает файл, иначе выбирает нужную операцию снова Алсо, это я про проект с bmp говорил.
>>2415265 Ковыряться в каких-нибудь легких старых игрульках при помощи IDA/Radare/Ghidra, всякие crackme итд. Но смысла сейчас в этом нет особого, золотые времена реверсеров ушли в прошлое, лучше потрать время на что-нибудь более полезное и современное.
>>2419072 Еще можно сделать такую интересную и перспективную архитектуру: клиент посылает серверу командочки вида "нарисуй прямоугольник вот тут", а сервер это рисует у себя на экране. Обратно приходят движения мышкой и нажатия кнопок. Вроже этого нигде не было. Я еще не придумал как быть с тем, чтобы увидеть картинку на клиенте. Но и так может где-то пригодится. Скажем, будет редактор фотошоп работать на мощном сервере с экраном, а команды туда посылаешь с телефона.
>>2419078 >золотые времена реверсеров ушли в прошлое, лучше потрать время на что-нибудь более полезное и современное. Не сказал бы, работы для реверсеров только больше становится, только зачастую эта работа связана с поиском уязвимостей и подразумевает наличие знание в инфосеке, т.е. с обычными знаниями реверса делать нехуй.
>>2419072 >>2419076 да, прежде всего хочется для себя, но жизнь в текущей ситуации толкает на срочный поиск работы, да и для дальнейшего развития надеюсь это полезно должно быть
на данный момент я сильно ограничен теми знаниями что подчерпнул из учебников и "открытых" курсов, к сожалению в них нет "указателя" на "следующий элемент" обучения - они просто заканчиваются и всё(
>>2419069 > Вообще до сих все пишут в ООП Только в языках где других вариантов нет - жаба, шарп, пхп, частично в крестах. В мобилках появилась возможность и уже ООП остаётся только как легаси-отросток. В скале и кложуре ООП только для совместимости с жабой. Раст изначально не заточен был под него и никому оно не надо иметь полноценный ООП. В крестах регулярно можно увидеть как в свежих проектах изворачиваются и пишут код без классов - нэймспейсы, лямбды, процедуры и простые структуры. Чтоб была совместимость с не-ООП языками. В бэкенде веба может и актуален ещё ООП, но в остальных местах уже при любой возможности пытаются от него избавиться.
>>2419088 На скале и кложе сейчас мало кто пишет, скала вообще скорее мертва чем жива. В котлине ООП используют, в том числе и в мобилках. Раст тоже не шыбко взлетел, на нем массово никто не пишет ничего кроме криптоскама. Вот Го взлетел, да, правда там вместо ООП не функциональщина, а обычные структуры и циклы. Никакой функциональщины в Го нет по факту.
>>2419080 >Еще можно сделать такую интересную и перспективную архитектуру... Да много чего можно сделать, после начала работы новые идеи постоянно будут в голову приходить. НО главное много не мечтать, а сначала реализовать что-то более простое, иначе нафантазируешь себе многое, обосрешься и вовсе на проект забьешь. Уже проверено
>>2419085 >на данный момент я сильно ограничен теми знаниями что подчерпнул из учебников и "открытых" курсов, к сожалению в них нет "указателя" на "следующий элемент" обучения - они просто заканчиваются и всё( А вот это и есть ловушка вкатунов в ИТ. Вы изучаете инструмент, а что с ним делать дальше не знаете, вас этому просто не научили. Поэтому важно понимать, что такое ЯП и зачем они нужны. В первую очередь, ЯП - это инструмент человека для управления ЭВМ, все. С помощью этого инструмента будут решаться проблемы предметной области, которой ты занимаешься, поэтому куда более важно знать нюансы конкретной области, чем знать язык. При этом для каждой области методы решения проблем и сами проблемы будут разными. Допустим, что ты изучаешь астрофизику и тебя заинтересовал вопрос эволюции галактик. Для начала ты пишешь ТЗ, т.е. описываешь ЧТО должно поступить в черный ящик и ЧТО должно ВЫЙТИ из черного ящика, после формализуешь задачу, т.е. описываешь задачу языком математики, моделями и прочим говном, потом уже удет реализация, т.е. процесс написания кода. В итоге для решения задачи мне нужно знать: что я хочу получить в итоге, какими способами я буду решать эту проблему(численные методы, алгоритмы, математический аппарат и т.д.) и знание ЯП. У тебя есть только третий пункт. Поэтому вкатывайся в интересную тебе область, изучай местные проблемы и методы их решения. Алсо, 90% программиста - это работа на бумаге. Некоторые сеньеры-помидоры, настолько становятся далеки от этапа реализации, что забывают как писать код, так как его работа заключается в проектировании системы "на бумаге", а реализация ложится на плечи голодных студентов. Кодер - пишет код по ТЗ, программист - находит решение проблемы, проектирует систему и реализует ее(опционально).
>>2419124 то что ты написал для меня из разряда выступлений коуч-тренеров, которые сами нихуя не знают, но могут научить чему угодно извини, если обидел
посоветуй лучше инструментов (библиотек с нормальной документацией или ещё чего(?) и как их (с какой стороны) изучать), а что с ними делать я уж как-нибудь разберусь
>>2419140 на текущий момент могу реализовать какую-нибудь простенькую работу через консоль (хоть базу данных со своими инструкциями (за SQL / MSQL не брался, команды будут не стандартизированные)), всё что в ходит в стандартную программу обучения C++ я знаю, ввод/вывод с консоли, простенькая работа с файлами, STL, algorithm'ы STL
могу к какому-нибудь простенькому функционалу прилепить простенький интерфейс (путём гугления)
и меня совершенно не интересуют коуч-фразы типа: "ты сначала определись с областью" потом "сделай что-нибудь" и "у тебя всё получится"
меня больше интересует информация вида: 1. прочитай вот это: "obj_Name" 2. попрактикуйся с "obj_Name" 3/ по итогу у тебя получится "Result"
>>2419093 > скала вообще скорее мертва чем жива Откуда такие манявыводы? По популярности и количеству вакансий скала выше пхп, где-то на уровне раста. > В котлине ООП используют, в том числе и в мобилках. Compose - это функциональный фреймворк и там нормальной поддержки ООП в принципе нет. А это так-то актуальный нативный фреймворк для ведра, на котором уже почти весь софт написан в 13 ведре. > Раст тоже не шыбко взлетел Второй по популярности системный язык, после С/С++. У линукса есть поддержка модулей ядра на расте, у майков официальные биндинги системного апи есть только на раст и они сами говорят что некоторые части системы на нём пишут. > Го В нём вообще нихуя нет. Просто медленная сишка с сахаром. Нахуй ты его вообще на один уровень с полноценными языками ставишь?
>>2419140 >то что ты написал для меня из разряда выступлений коуч-тренеров, >и меня совершенно не интересуют коуч-фразы типа: "ты сначала определись с областью" потом "сделай что-нибудь" и "у тебя всё получится" Так, блядь, а как я тебе могу посоветовать что-то, если не знаю чем ты заниматься хочешь? Я тебе описал пусть разраба сверху-вниз, т.е. от твоих желаний и интересов, а ты хочешь начать снизу-вверх и сначала выучить не понятно что. Больше конкретики давай, пожалуйста.
>>2419178 > Корутины ща юзабельны? Вполне, но нахуя? Нормальная многопоточность в любом случае быстрее, а удобство корутин сомнительно. Вон в расте тоже завезли асинхронность и что, кто-то пользуется ей, кроме вебмакак?
>>2419365 > да и как она может быть медленнее многопотока Потому что у корутин куча кода под капотом, ещё и аллокации самой корутины. Ничего этого нет у многопотока, там только можешь на синхронизации выстрелить себе в ногу, но так и с корутинами тебе надо делать её, если ты не в одном потоке сидишь. А если нужны параллельные вычисления, то есть библиотеки под них, которые сильно быстрее чем куча корутин. Корутины ещё можно было бы использовать в эмбеддед системах, где нет нормальной многопоточности, но на полноценных процах корутины всегда будут медленнее правильного многопотока.
>>2419335 Т.е. кривые мокрописьки > нативное решение? А потом наблюдаем как лепят десять кроссплатформенных либ с одинаковым функционалом, потому что каждая прошлая была калом. Не лучше ли сделать три под конкретные системы, но сразу нормальные?
Вы тут ебанулись что-ли? Корутины это не замена и не конкурент мультипотоку. Это способ организации специфического контрол флоу, когда ты определяешь время переключения потока исполнения, а не ос. Редко нужно, но иногда очень удобно.
>>2419413 > А если много много ио операций? Ещё с доисторических времён есть асинхронное IO в системах. В том же винапи как сеть, так и фс, могут работать без блокирования потока. Так что вообще похуй, одного синхронного потока хватает всегда.
Слышали че-нить про Android NDK? Я подумал, если понадобиться написать приложение на андротд, нах мне еще учить жабу и котлин, запилю просто на плюсах. В чем подводные?
>>2419471 > В чем подводные? В том что это такое говно, что ты после него будешь с радостью вспоминать какой же крутой winapi. А ещё документации хуй, будешь читать исходники, а там миллионы строк легасиговна.
>>2419516 торч не жирно ли будет для игрулек? хороший байтоёб либо модифицирует клинент (вырезая из него всё что не нужно - графений и т.п. + самописный чит для ухода от анти-чит системы) либо вообще пишет свой такого правда в проектах сложнее карточных игорь не представляю
Гуру синтаксиса, подскажите как это написать без лямбд? Я пытался (то что закомментировано), но это не работает Нагуглил какие то стд бинды, в общем попроще можно как то чтоли?
>>2419538 не слышал даже о таком, видел разных ботов, один даже запускал и настраивал но потом всё накрылось - разработчик ушёл в тот момент как компанию купил китай
>>2417218 Роутинговые движки (навигаторы там). Иногда немного около автомотива и чуть чуть мл для eta. До этого чутка поисковыми движками занимался, медициной всякой на английских алкашей господ. Забавно, что раьотая постоянно с разными типа сложными алгоритмами вообще слабо в них шарю. Лит код вообще на сайт пыток похож. Хотя там вскоре головоломки математические интересно решать.
>>2419553 Ну да, std::bind Еще, если не ошибаюсь, может подойти std::mem_fn, но std::bind универсальнее, тк позволяет биндить не только this, но и аргументы.
>>2419596 Бле это не глобалы, сорян за кривую фотку, чет я протупил. Это класс my_socket, вишь там во втором комменте, да и переменные обьявлены позже функций
>>2419704 Хмм, а чому так? Вроде же можно написать типо так thread = std::thread(&my_class::my_function, this) и все будет работать. А почему нельзя thread = std::thread(&my_class::my_function, &my_class_var) ?
>>2419769 Так в смысле Если у тебя функция как аргамент принимает референс на функтор, то есть любую хуйню с оператором () То когда у тебя указывается как аргумент, pointer to member function То надо просто забиндить нулевой аргумент (this) Ссылка на объект это просто неявный нулевой аргумент
>>2419868 Ну вот так, это просто не собирается Вот так к примеру все ок std::thread(static_cast<size_t (asio::io_context::⚹)()>(&asio::io_service::run), &context); А вот так не работает std::thread(&asio::io_service::run, &context) Я не понимаю почему, вот в чем вопрос, к чему здесь биндить че то, хз, не очевидно
>>2420159 Э ну в скорости чего? Фронта? Разницы глазу ты не заметишь точно, единственное что qml довольно нагруженный и большие аппы на нем писать не профитно, как и слишком маленькие ибо ресурсы хавает не соизмеримые. Но для твоей задачи вполне подойдет
Хотелось бы язык с подробной и правильной семантикой, а не набор значков из 70-х, когда экономили каждый байт текста кода программы. К примеру знак "=" убрать, который все карты путает.
int x init 5; int c copy x; Obj o initObj(); Obj m copy o; Obj n move o;
>>2420587 Ооох ебать, сразу повеяло душком старой суки злой на весь мир которая с короной на голове а-ля "Я самая чёткая, самая умная" пришла "преподавать" в школу или универ.
Итак, что я узнал сегодня. У переменных, указателей, ссылок суть одна - это ссылки на некие сущности (например на область оперативной памяти). Переменные в c/c++ это ссылки-владельцы, то есть время жизни сущности привязано к времени жизни владельца, а операция копирования не отнимает владение сущностью, а смотрит на нее и пытается воссоздать по образу и подобию. Сырые указатели могут вызывать недоумение у новичков, потому что по сути совмещают в себе два предназначения. Во-первых, это хранилища адреса. То есть владельцы сущностей определенного типа - адресного типа. Поэтому такое многообразие указателей, от обычных до указателей на функции. Во-вторых, указатели с использованием разыменования могут вести себя как простые (не владельцы) ссылки на сущности (не на те, которыми они владеют, а на те, на которые указывают). Можно заметить, что в ЯП со сборщиком мусора так называемые ссылочные типы являются по сути тем же. То есть время жизни сущности, на которую они указывают не привязано ко времени жизни указателя, а сам указатель может свободно менять сущность. Операция копирования не приводит к тому, что сущность, на которую указатель указывает копируется, скопированный указатель указывает на ту же самую сущность, что и оригинал. Однако сущность, которой владеет указатель (значение адреса) конечно же копируется. r-value ссылки я протестировал и пришел к выводу, что они ничем не отличаются от простых переменных (кроме типа), так же владеют сущностью, также могут потерять владение, то бишь быть перемещены. И даже std::move к ним надо обязательно применять для перемещения. Посмотрел немного семантику Rust и как я понял, там вся эта семантика с владением и перемещением аккуратно спрятана под капот. С одной стороны красиво конечно, с другой я люблю сам все настраивать и вызывать UB. l-value ссылки ведут себя как константные указатели (да ладно.джпег) и по сути были введены, как мне кажется, только для удобства и большей читабельности. const ссылки на r-value также ничем не отчитаются от константных переменных, их также можно мувнуть, используя mutable в полях класса, на что MVS мне указывала и просила так не делать больше. Также она мне подсказала в моем мув-конструкторе написать noexcept, потому этот конструктор не выбросит никогда исключений. Я так понял этот noexcept писать желательно всегда в move-методах, чтобы все четко было, например в работе с векторами. Одно из предназначений типов и типизации вообще - запрещать недопустимые операции и выдавать CE. С сырыми байтами можно творить что хочешь, а потом часами сидеть отлаживать. Например, я создал указатель на функцию, преобразовал его сишным способом и присвоил указателю на int. Результат разыменования непредсказуем, видимо я получаю интовое представление байтов кода функции. Еще одно предназначение типов - перегрузка функций. Я думаю только для move-конструкторов и move-присваивания и был придумал тип T&&.
>>2420899 Неважно. Пчел ноет на набор значков из 70х и в том же посте постит набор значков из 70х. Ну, когда казалось что еще пару лет и можно будет программировать компуктеры на естественном языке.
нахуя так сложно? ну есть указатель и есть, ссылка тот же указатель, только работать с ней чуть попроще, но нет того функционала что у указателя, и то и то хранит в себе адрес какого-то байта, тип указателя/ссылки "говорит" компилятору сколько байт всего откуда у тебя этот материал? неужто нельзя было проще выражаться? я прочитал половину у меня мозг отреагировал как при чтении шизифренических постов
>>2421125 > нахуя так сложно? Формализую свои знания. На собесе отвечать буду также. Не нравится - нахуй. > и то и то хранит в себе адрес какого-то байта, Это стандартом определено? Если не ошибаюсь, стандарт не описывает как именно реализуются референсы. > неужто нельзя было проще выражаться? Ты вот такой простой, можешь ответить например на вопрос, почему в Яп со сборщиком мусора собственно сборщик мусора, а не аналог шаред и вик поинтеров с подсчетом ссылок?
>>2421136 >почему в Яп со сборщиком мусора собственно сборщик мусора, а не аналог шаред и вик поинтеров с подсчетом ссылок? я твой вопрос не могу понять
>почему в ЯП (это сокращение от языка программирования, хоть тут я надеюсь твоё и моё представления совпали?) >сборщик мусора?
почему в языке программирования со сборщиком мусора сборщик мусора - в чём вопрос? почему в яп автоматическое освобождение ресурсов? (не зачем, а именно почему?)
Раздувается ли бинарник от шаблонных функций. Есть у меня функция в которой колбек на колбеке и колбеком погоняет. Это вообще реально сжать бинарник в этом случае, если по сути начинка разная у лямбд и функций которые я захватываю?
Привет, Анон, я к вам с глупым вопросом - не получается подключить библиотеки в header-файле (там где main лежит всё работает), гуглить пробовал - не помогло.
>экономить место на жестком диске >2022 Плиз, ну хватит. Производительность > читабельность > расход оперативной памяти > говно > моча > размер бинарника
>>2421283 puts смотри в компиляторе С, естественно. Давай сравнивать идиоматичный способ вывода для С и С++. Выкручиваемся в стиле "пфф я тоже могу puts", "могу без исключений", "могу без шаблонов", "хочешь - пиши без классов".
>>2421343 > Ты чем там компилируешь? Msvc, но допускаю, что мог флаги некоторые забыть. Хотя вроде release и release-debug-symbols поставил. До этого было 500+ > На винде для крестов размер хэллоуворлда около 15 кб, 100 кб - это раст с жирным рантаймом. Так у меня не хэллоуворлд
>>2421310 Да, там инициализация иострим. Но она таки занимает место. Дальше, компилируем cout << "hello"; ...... cout << "hello"; и видим по три команды на каждую строку. А в сях получится по две команды.
А для map компилятор засунет весь код красно-черного дерева.
>>2421351 > Да, там инициализация иострим. Но она таки занимает место. > Дальше, компилируем > cout << "hello"; > ...... > cout << "hello"; > и видим по три команды на каждую строку. А в сях получится по две команды. И я теперь должен забыть про компактный исходник? Звучит не убедительно
> А для map компилятор засунет весь код красно-черного дерева. И? В других языках не так что ли? Не понял что ты хотел сказать. Кстати надо будет мне потестить как для разных типов в мапе меняется размер. Но уже завтра
>>2421359 Чуть уточню. Инициализация всего 1 раз за всю программу делается, так что +15 кб к любому бинарю звучит не страшно. А разница в 1 строчку в выводе меня улыбнула. Да, можно сказать, что это аж в 1.5 раза больше, но это только вывод, который, кажется, занимает незначительную часть исходника
>>2421365 Это примеры на коленке, где и почему кресты больше. Если вплотную обмазаться шаблонами и строками, будет нагляднее. >>2421359 > И? В других языках не так что ли? Не понял что ты хотел сказать. В сях большой код выглядит большим в исходнике. Или там МАКРОСЫ, которые своим видом как бы предупреждают. Поэтому у сишника меньше соблазна сделать хуяк-хуяк однострочник, из которого получится толстый код.
Если я вызову метод класса, а в методе класса вызову goto к метке, а метка расположена в другом методе класса, то программа перейдет к метке выполнет код после метки и все? Не вернется же к методу из которого вышла?
>>2421868 > Если я вызову метод класса, а в методе класса вызову goto к метке, а метка расположена в другом методе класса, то программа перейдет к метке выполнет код после метки и все? Не вернется же к методу из которого вышла? Да оно тебя, просто нахуй пошлет и не скомпилит такое. Как ты себе блять это представляешь?
Приветствую. Имею следующий вопрос: вводные данные: знаю базовые things на С++, такие как переменные и типы данных, Функции(включая лямбды), ООП(классы, функторы и предикаты), Шаблоны, Многопоточность, Ссылки и Указатели, контейнера STL ( и их адаптеры стек, очередь), могу в многофайловость но не знаю границ перечня методов и типов std (если верить оглавлению книги Josuttis: The C++ Standard Library то зная вышеуказанное должен уже знать почти всё, но уверенности в этом нет) Собственно вопрос(прошу принять во внимание мою глупость и то что я новичок.): пора ли браться за Qt? и что это такое (где-то пишут что это просто библиотека - т.е. я могу просто включить её в свой проект в Visual Studio? где-то пишут что это набор инструментов и предлагают скачать с сайта Qt.io(если не ошибся) набор этих самых инструментов, что это вообще такое, если простыми словами для непосвящённого? и что мне с этим делать!?). Ознакомление с самой популярной учебной литературой по Qt дало следующее: Шлее Qt 5.10 - не понимаю для кого пишет автор, мы явно с ним на разных волнах (появляется ощущение что автор либо пишет книгу для друзей законченных программистов либо к моменту написания получил сильную профессиональную деформацию и его сложно понять другим людям не находящимся на одном уровне с ним) Саммерфилд Qt - аналогично Земсков Qt 4 - начало хорошее, автор как минимум старается быть доходчивым Бланшет и Саммерфилд Qt4 GUI - видно что авторы стараются опуститься до уровня начинающих и немного чуть-чуть им это удаётся Ищу совета который помог бы новичку в дальнейшем развитии (куда-нибудь, с указанием цели и возможных результатов)
>>2422695 Лол. Qt это наоборот самый лёгкий старт в крестах, лично я с него и начинал не зная вообще нихуя. Qt прячет кучу крестовой сложности, даёт охрененные плюшки, разжеванные книжки на русском, IDE имени себя и лучшую документацию из всех что я видел в оную IDE и встроенную.
>>2422711 а как начать то? я посмотрел литературу - даходчивостью там и не пахнет лично для меня объясни, пожалуйста, мне как если бы рассказывал пятилетке
>>2422714 Чувак, в этой документации есть примеры, и дока на них ссылается, их можно собрать и потыкать. Читай бумажную (условно, в смысле и скан сойдёт) книжку (я точно не помню, вкатывался скорее всего через книжку саммерфельда по qt 4.5 а потом юзал доку) и смотри примеры. Пиши какие нибудь хелловорлды задействуя нужные тебе фичи, дергая их кусками из примеров и так далее. Вот так постепенно и въедешь.
Собсно Qt это локомотив крестов и лучший гуи-фреймворк эвар, 95% вакансий крестов будут требовать qt или boost (но буст это его противоположность, такая шаблонная поебень что ебнуться можно, новичку сходу я бы его не рекомендовал)
>>2422728 Понятия не имею. У меня линукс и поставлено из репозиториев. Тебе надо качать из инсталлятор и тыкать там галочки на documentation и examples. Скорее всего будет некоторая ебля - онлайн инсталлятор скорее всего тебя пошлет нахуй с рашкоайпишником, врубай впн или ищи оффлайновый, и во вторых эта хуйня потребует от тебя аккаунт разработчика, придется зарегать на фейкомыло. У линуксобояр этот тулкит в системе родной и они его просто ставят из репозиториев и от этой хуйни избавлены.
>>2422755 Ну значит если ты поставил все галочки и запустил Qt Creator то и дока и примеры у тебя будут встроены в IDE и все должно работать из коробки.
>>2422695 Qt это набор либ. Вообще а что тебе не понятно? Ты с такой уверенностью заявил что разобрался с ядром крестов но qt для тебя сложно? Что сложного? Из доки скопипастить трудно? Или тебя интересует как кишки и метакомпиль устроены?
>>2422770 >Ты с такой уверенностью заявил что разобрался с ядром крестов 1. мне помогли (я просто перечислил то, чему меня учили) 2. что такое ядро крестов? что туда входит?
>Qt это набор либ мне их как библиотеки в VS можно включать или мне нужно пользоваться Qt_creator? или и так и так сойдёт?
>>2422775 Ну всё что ты перечислил. Это так сказать база
Да, ты можешь их подключить прямо к проекту в VS, это просто набор либ. Но Qt это довольно автономный от крестов мир со своими свистоперделками, поэтому я рекомендую не страдать херней, а юзать нативные инструменты которые тебе предлагают авторы, качай куты через впн либо собирай сам. Открывай креатор, создавай гуи апп по шаблону и по ф1 жми доку и кури что не понятно. Можешь для разогрева к примеру крестики нолики написать простые
>>2422775 Лучше пользуйся креатором, если у тебя нет какой то конкретной необходимости использовать именно студию. Ну и просто как библиотеки его не подключишь, как минимум система сборки (хз чё там в студии) должна быть в курсе про moc, ту хуйню которая ресурсы компилит и прочие кутешные вызываемые утилиты.
>>2422775 >VS Подозреваю она будет визжать от кютешного кода как порезанная шлюха, это же все таки надмножество крестов. Или там можно как-то извратиться с language сервером?
>>2422837 Не должно оно визжать, в кишках кутешных инклудов кутешные ключевые слова дефайнятся во что то нейтральное на ifndef MOC или типа того. Короче голый компилятор это не соберёт, но и подсветка синтаксиса с ума сходить не должна.
Но один хрен студия говно а креатор имба - так зачем жевать кактус? Тем более креатор умеет в qml а студия и прочие clion'ы - вряд ли.
>>2422882 > Раз Qt компилится в нормальный C++, то этот препроцессор - тупо синтаксический сахар. Раз c++ компилится в нормальный асм/машинный код, то этот c++ - тупо синтаксический сахар
>>2422908 Нет, на ассемблере ты можешь делать то, чего принципиально на плюсах не сделаешь, только с ассемблерными вставками которые потом оптимизируются при компиляции, а они не являются частью стандарта C++. А на Qt можно писать без moc, но из-за хуёвого API много ебли.
>>2422914 > Нет, на ассемблере ты можешь делать то, чего принципиально на плюсах не сделаешь, только с ассемблерными вставками которые потом оптимизируются при компиляции Неа. > а они не являются частью стандарта C++ Похуй на стандарт, в любом компиляторе они есть > А на Qt можно писать без moc Нет, нельзя. Как только ты унаследуешься от куобжекта и напишешь Q_OBJECT - ты идёшь нахуй > но из-за хуёвого API много ебли. У куте охуеннейший апи
>>2422996 > ЭКСЕПШЕНЫ НЕЛЬЗЯ > @ > СТРОКИ НЕЛЬЗЯ > @ > STL И ШАБЛОНЫ НЕЛЬЗЯ > @ > ПРЕПРОЦЕССОР НЕЛЬЗЯ > @ > БУСТ НЕЛЬЗЯ > @ > ВЕЛОСИПЕДЫ И БОЙЛЕРПЛЕЙТ МОЖНО Эмбеддед/микроконтроллеры?
о, кстати, опущенец, постом выше упоминул ravesli.com он доступен в каком либо виде? через tor или vpn не получается получить доступ, отдельные страницы вытягиваю через кэш гугла, может ты, Анон, можешь что подсказать?
>>2423406 Тоже кстати даже через тор открыть не могу. Хотя уроки у него действительно хорошие, понятно объясняет на базовом уровне и потом уже можно уверенно углубляться в референсы.
>>2423770 Это просто синтаксический сахар вокруг функциональных объектов. Бустовские, кстати, когда маленькие, выглядели гораздо элегантнее. Сравни [](int i){ return i/2;} и arg1/2 но естественно не оптимизируются компилятором и дольше компилирпвались..
Доброе утро. Подскажите пожалуйста. Вот у меня есть текстовый файл, в который записана строка: 0000040A04000500=Библиотека TCP/IP. Мне нужно, чтобы при передачи в функцию такого значения, на экран выводилась строка Библиотека TCP/IP. Не понимаю как работать с содержимым файла, и как извлечь этот идентификатор оттуда. Заранее спасибо
>>2424270 то есть ты можешь построчно считывать файл, и в каждой строке есть некоторая зависимость? тогда.... 1. построчно считываешь файл для каждой строки: 2. проверяешь условие . . . PROFIT!
>>2413809 >Монада же это просто моноид в категории эндофункторов, это же все знают, что тут такого. Я бы сейчас тебя придушил. Я знаю, что такое категории, функторы (и эндофункторы тогда уж) и что такое моноид. Я читал дохуелиард примеров с Maybe и do-нотацией. Но я не знаю, хоть убей, что такое монада в смысле конструкта программиста. Как это работает? Как это использовать?
Похожую фрустрацию я разве что по отношению к продолжениям испытываю.
>>2424677 >Я знаю прекрасно, как работают продолжения (это просто аргумент для передачи управления) Подкинь немного из своих запасов, а?
Я вроде как понял, что ты можешь запомнить место в программе и немедленно в него вернутся. Поэтому можно построить цикл с break. А из-за реификации (тоисть "продолжение-внутри-переменной") можно сохранённое продолжение апдейтить после каждого возвращения. Так делаются генераторы.
Но я НИХУЯ не понял, почему при возвращении не откатываются назад все переменные всей программы. Продолжения контролируют только тот стек, где были запомнены?
В чём разница между MFC и SFML, это же 2 графические библиотеки? или это 2 разных названия для одного и того же? я ничего вразумительного не нагуглил Спасибо
>>2424695 МФЦ - древняя устаревшая виндовая либа для создания пользовательского интерфейса (кнопки, поля и т.д.), СФМЛ - кроссплатформенная либа для 2Д-графики (линии, прямоугольники). Но в МФЦ тоже можно делать 2Д-графику.
>>2424716 В самой простой реализации call/cc делает копию стека в хип и этот объект передает как аргумент. Когда продолжение вызывают, кусок из хипа копируется обратно в стек, восстанавливается указатель стека и т.п. Потом делается возврат, он выглядит как возврат из call/cc, только содержимое хипа и глобальные переменные будут другими.
>>2424736 Во, вот это заебись. Значит "продолжение" - это состояние программы, как обычно новичку объясняют. Эта хуйня тоньше.
То есть, например, если нужно сделать тот же генератор (и, соответственно, сохранять стек какой-то функции, а потом его апдейтить), то место сохранения "состояния программы" должно быть обязательно глобальным/в куче.
Ты не думай, что это что-то замудрёное, просто я тупой. Алсо, а где можно нормально про эти самые продолжения почитать? Чтобы всякие детали объяснялись. Только в талмуде мануале схемы?
>>2424759 >>2424736 Кстати, вспомнил. В языках, где все функции - замыкания (например scheme), ты можешь сохранить продолжение в переменной, которая по стеку находится ниже. То есть внутри функции, которая вызвала твою функцию. Но при использовании этого продолжения (возврата в эту точку исполнения), переменная не переписывается.
Это потому что я не понимаю, как переменные в scheme работают? Или потому что продолжения не весь стек переписывают?
Видел как сохраняли в переменной из let (а let - синтаксический сахар для вызова функции), поэтому эта переменная должна была быть частью стека ниже вызова call/cc. Почему не перезаписалось?
>>2424762 >Видел как сохраняли в переменной из let (а let - синтаксический сахар для вызова функции), поэтому эта переменная должна была быть частью стека ниже вызова call/cc. Почему не перезаписалось? А, нет, похоже спиздел. Извините.
>>2424740 >то место сохранения "состояния программы" должно быть обязательно глобальным/в куче. Для этого не обязательно даже продолжения использовать. Вот это (let ((c 0)) (values (lambda () (set! c (1+ c)) c) (lambda () (set! c (1- c)) c) )) выделит три куска в куче: два замыкания и общая ячейка для с. >а где можно нормально про эти самые продолжения почитать? Чтобы всякие детали объяснялись. Dybvig, Three implementation models for Scheme Более сложная, но очень забористая книжка про CPS и компиляцию в машинный код: Appel, Compiling with continuations.
>>2424774 А, нет. Похоже спиздел что спиздел. Код неверный, не делает того, что я пытался сделать.
>>2424775 >Dybvig, Three implementation models for Scheme >Более сложная, но очень забористая книжка про CPS и компиляцию в машинный код: >Appel, Compiling with continuations. Спасибо.
>>2424762 Если ниже на стеке есть переменная v и ты делаешь (set! v [call/cc (lambda (c) c)]), то компилятор считает v мутабельной и выделяет в куче объект из одной ячейки (box он же ref), а на стеке вместо v оставляет ссылку на этот объект. call/cc сохраняет копию стека сместе со ссылкой на ref (в котором неопределенное значение), а потом set! меняет это значение.
>>2424785 >А, нет. Похоже спиздел что спиздел. Код неверный, не делает того, что я пытался сделать. Вот так пытался сделать, не спиздел всё-таки. Честно слямзено с английской статьи про call/cc
>>2424790 >Если ниже на стеке есть переменная v и ты делаешь (set! v [call/cc (lambda (c) c)]), то компилятор считает v мутабельной и выделяет в куче объект из одной ячейки (box он же ref), а на стеке вместо v оставляет ссылку на этот объект. Вот! Знал, что здесь что-то не так. Бывает, когда нормальные книжки по языку не читаешь, а сразу в пекло лезешь. Хотя почти все книжки, использующие схему, мутабельность не любят. Как будто их мнения спрашивают.
>>2424825 встретил неожиданное для себя использование слова const в чужом коде после имени метода и его аргументов, перед телом метода, что значит в данном случае const? (в хедере класса)
>>2424883 Ты рил меня спрашиваешь, или просто тыкнул?
Метод константный. Нельзя менять значения полей класса (ЕМНИП, вообще нельзя обращатся к this). Это базовые знания крестов, любой учебник должен покрыть. Попробуй как справочник юзать, если от корки до корки читать не хочешь.
>>2424919 какой смысл использовать const? это обычный геттер, возвращающий значение одного из полей класса, не ссылку/указатель, а обычное значение почему const стоит после параметров метода и телом метода? не встречал такого в учебниках (ни в одном) - это меня "смущает" сводит с ума, т.к. я не понимаю почему так
>>2424919 Можно обращаться к this и можно менять mutable члены. >>2425036 Компилятор может использовать это для оптимизации. Ну и если ты такое используешь, то лучше везде - для однообразия кода, даже в простых геттерах. А если все таки захочешь случайно изменить не mutable член на тебя наорет компилятор и иде. >не встречал такого в учебниках (ни в одном) - это меня "смущает" сводит с ума, т.к. я не понимаю почему так void method () const && noexcept {} Как тебе такое, Илон Маск?
Двач, я никогда не использовал cmake. Я хочу подключить только одну библиотеку из буст не только буст, пусть будет для примера к cmake проекту, чтобы мой проект можно было скачать из удаленного репозитория. Я не понял, как это делается, чтобы не нужно было заставлять пользователя скачивать всю коллекцию буста вместе с проектом. Я бы хотел просто положить в папку с проектом нужные библиотеки как в винде и все.
Есть cmake https://pastebin.com/BXHvKNTk который нормально работает на линуксе, но в винде и vcpkg нет. Дает ошибку Target links to target "boost::boost" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing? Причем инклуды он ищет правильно
У меня получилось самостоятельно написать свою первую программу с компайл-тайм вычислениями. Но нормально ли вообще, что в ходе компиляции создается 100500 структур?
Суп, аноны. Я немого застрял. Учу плюсы для себя. Подучил несколько основных тем - циклы, массивы, переменные, функции и все в этом духе. А что теперь делать? Куда дальше копать? Вообще делал как - беру интересующую меня тему, например калькулятор, дальше копаю ее, попутно узнаю что-то новое. Тут позарился на сетевое программирование, типа винсокет, но понимаю, что вообще ничего не понимаю. Других идей, что написать и что изучать у меня, почему то, нет.
>>2426278 И как быть вкатуну? Ну вот хочу я допустим ковырять что-нибудь сетевое или системное. Про сетевые протоколы что-то знаю, через сокеты данные перегонял, простенький FTP клиент писал. Дальше что делать-то? Дальше расковыривать протоколы пытаясь из головы придумать интересную задачу для себя или что делать?
Аноны, вопрос может показаться глупым, но .... вот пощупал я разные win api /sfml / mfc, но совсем чуть-чуть как мне получить доступ к области экрана в моём "приложении" чтоб туда напрямую писать массив пикселей, а не рисовать квардратики/кружочки/чёрточки используя функции?
>>2427791 Обычно у тебя есть какой-нибудь канвас (холст), на котором можно тупо записывать данные в массив пиксеоей. В том же SFML создаёшь текстуру и рисуешь: https://stackoverflow.com/questions/18805206/sfml-drawing-pixel-array Некоторые пытаются рисовать пиксели через разноцветные прямоугольники 1x1, так делать неэфективно, для библиотеки слишком много лишних вычислений.
Сап двач я быдло Есть массив байт, допустим, {0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0} и мне в определенный момент времени нужно перестроиться и воспринимать его не как массив байтов, а как массив, например, интов, т.е. {0x12345678, 0x9abcdef0} Как это можно сделать?
Кто-нибудь страдает постоянным рефакторингом? Я все время переписываю старый код по чуть-чуть дописывая новый, иногда доходит до абсурда что я просто переменные переименовываю. Да код становится более читаемым, где то быстрее, но это вообще норм? Как вы работаете над своими проектами? Может я шизофреник какой?
Хочу хранить в массиве различные вызываемые элементы (функции/функторы/что-то ещё?). Пока вижу 3 варианта: 1. Указатели на функции. Похоже, самый легковесный вариант. Но, к сожалению, отпадает, т. к. нужно иметь возможность захватывать в функцию некий контекст (пару-тройку переменных) в месте, где эта функция вызывается. Кол-во захватываемых переменных разное, поэтому просто добавить в общий тип хранимых в массиве указателей на функции пару-тройку параметров не получится.
2. Классические указатели на базовый класс с виртуальной функцией. Что-то типа такого: struct Action { Action() {} virtual ~Action() {} virtual int operator()(int a, int b) = 0; }; struct Add : Action { Add(int c) : c(c) {} int operator()(int a, int b) { return a + b + c; } int c; }; потом где-то в коде создаём массив std::vector<std::unique_ptr<Action>> vec; где-то в другом месте добавляем в него указатель int c = 123; vec.emplace_back(new Add(c)); и где-то в третьем месте вызываем operator() (*vec[0])(a, b);
3. Обёртка std::function. Вроде, самый компактный способ. using Action = std::function<int(int, int)>; int c = 123; std::vector<Action> vec; vec.push_back([=](int a, int b) { return a + b + c; }); Однако, в данном случае sizeof(Action) == 32 байта (под gcc). А оверхед вызова таких обёрнутых лямбда-функций заметно побольше, чем у виртуальных функций (если я правильно померял).
Сам больше склоняюсь ко 2-му варианту. Но, может, есть ещё какой-то способ?
>>2428280 >Кол-во захватываемых переменных разное, поэтому просто добавить в общий тип хранимых в массиве указателей на функции пару-тройку параметров не получится. Что тебе мешает? В других случаях придется тратить слово на указатель VMT + фрагментация при динамическом выделении.
>>2428329 Ну ты же процитировал, что мне мешает. В одном случае это будет функция void func(Foo foo, Bar bar); в другом случае void func(Foo foo, Bar bar, Baz baz); в третьем случае void func(Foo foo, Bar bar, Abc abc, Def def); В один и тот же массив все эти указатели положить нельзя. Ну и потом мне нужно захватывать значения некоторых переменных (из контекста) при добавлении функции/функтора в массив, а не при вызове функции/функтора. А держать ещё один массив специально для захваченных значений переменных - это как-то не очень.
>>2428376 А, у тебя тот случай, когда нельзя всё привести к void. >А держать ещё один массив специально для захваченных значений переменных Если не держать такой массив, придется держать кучу маленьких массивов, сделанных компилятором. Ты хочешь аналог каррирования и динамической типизации, но почему-то не готов платить за это.
1. на память 2. на динамическую память, чтоб не регулярно потреблять системные ресурсы, а только когда есть в этом необходимость 3. ссылаться можно на функции (точка входа в функцию - тоже какой-то байт в оперативной памяти)
>>2428743 В Си нужны для того, чтобы передавать в функции большие массивы или структуры (сравни сам, можно передать 100 мегабайт нельзя, стека не хватит, но я просто как пример привёл, а можно передать 8 байт и смысл не изменится), передавать в функцию параметр, в который ты бы хотел что-то записать, для того, чтобы указывать на функции и для создания ссылочных структур данных (деревья, списки, етц) В Си++ первые 2 функции сместили ссылки, а для третьей появились новые варианты (которые всё равно основаны на указателях). В общем, в настоящее время оно нужно для создания ссылочных структур данных и байтоёбства.
А вот эта галочка просто пушка. С ней винда начинает больше походить на человеческую ось и сохраняет по умолчанию все файлы в юникоде. Больше не нужно писать setlocale std::ofstream теперь записывает в файл обычную char-строку, содержащую любые символы юникода
>>2428664 >видимо, придётся каждый раз перекладывать байты, ДОРОГО На x86 где-то со времён Pentium есть инструкция BSWAP, которая меняет порядок байтов в 32-битном (64-битном для x86_64) регистре на противоположный. В GCC и MSVC есть интринсики для этой инструкции. В итоге под GCC у тебя будет: inline uint32_t read_u32be(uint8_t ptr) { return __builtin_bswap32(reinterpret_cast<uint32_t*>(ptr)); } Это, понятно, нужно только для x86. Ещё можно написать честную функцию, которая с помощью &,<< и >> изменяет порядок байтов. Clang и GCC её, наверняка, оптимизируют до MOV+BSWAP или даже MOVBE (для современных процов). Так что это совсем не дорого.
>>2429283 Мало, но если придется, то будет много жопоболи. Лучше перебздеть. Типы это же интринсики, стандарт тебе вовсе не гарантирует наличие uint8_t например.
>>2428743 Ну есть у тебя ахуеть какая большая структура данных, например. Копировать её каждый раз - зачем? Долго, дорого. Поэтому ты може ссылаться на то место, где она есть. Хотя, как по мне, в ряде случаев это не нужно, как утверждают некоторые.
>>2427047 Value всегда равно n и не нужно. Специализация для 1 не нужна. >>2430200 У тебя все равно создаться 100 функций вместо 100 структур, шило на мыло. И код выдаст 100 вместо 5050.
Все это рассчитывается по элементарной формуле, учитывающей отрицательные числа, и также схлопывается при компиляции.
>>2430201 >чё будет если туда отрицательное значение прокинуть? Очевидная ошибка компиляции из-за превышения лимита шаблонной рекурсии.
>>2430229 >У тебя все равно создаться 100 функций вместо 100 структур, шило на мыло. Ну это хотя бы читабельно. А что там существует в компайл тайме - всем глубоко похую. Ну и функции очевидно обладают более выразительным/простым синтаксисом.
>>2430365 > Очевидная ошибка компиляции из-за превышения лимита шаблонной рекурсии. Обычную рекурсию оно вроде должно к циклу for соптимизировать, с шаблонной такого не будет?
>>2430200 Чувааааак, твой код натолкнул на мысль и у меня получился универсальный декоратор! constexpr чудеса творит, хоть я толком и не умею им пользоваться, например не знал что его после if можно ставить >>2430423 Ну так я изучаю петухон и смотрю можно ли сделать те же штуки на плюсах.
>>2430443 >Ну так я изучаю петухон и смотрю можно ли сделать те же штуки на плюсах. Можно, но обычно не нужно. У тебя здесь проебётся проверка на то, что function - это функция. Ошибка выскочит внутри твоего конструкта, хотя по идее должна быть там, где ты свой декоратор применяешь.
По хорошему, тебе нужно function как std::function объявить.
Нахуя вы ебётесь с этими шаблонами, если можно буквально написать constexpr int sum (int n){ int sum = 0; for(int i = 1; i <= n; i++) sum += i; return sum; } которое, судя по примеру в конце этой странички: https://en.cppreference.com/w/cpp/language/constexpr будет вычислено на этапе компиляции, но при этом будет допускать использование функции и в рантайме?
>>2430443 Да, это так и используется примерно, только и сам декоратор и вложенный генератор лучше сделать constexpr, в итоге будет сгенерена непосредственно целевая функция без всякой посторонней хуйни, т.е. фронт выкинет всю обвязку и объединит функцию с декоратором.
>>2430445 Это будет работать не только с функциями, плюс std::function работает только в рантайме.
>>2430579 >Это будет работать не только с функциями, плюс std::function работает только в рантайме. А с чем ещё? Функторы? Последний раз когда я хотел их использовать, сказали, что говнокод. Алсо: декоратор не в рантайме? Ты больной ублюдок? Тут реально лучше лисп возьми и перестань выёбываться.
>>2430585 >А с чем ещё? Функторы? Последний раз когда я хотел их использовать, сказали, что говнокод. Чел, челик, челидзе, все что trivially copyable + callable и нехуй воротить ебалом что ты не знаешь что это такое.
>сказали, что говнокод. К слову, протип: не работай с долбоебами. Если кто-то что-то не осилил, это не значит что это плохо.
>Алсо: декоратор не в рантайме? Естественно, нахуя он в рантайме, если вся логика и место привязки обозримы еще на фронте компилятора? На нормальном ревью тебя попросят обосновать нахуя ты еще один индирект впиздрячил в лице std::function там где этого можно было не делать.
>>2430598 >trivially copyable + callable и нехуй воротить ебалом что ты не знаешь что это такое Такие и предлагал, бля. Обоснование говнистости: нихуя нипанятна, почему для полей ты делаешь get, а здесь сделал operator(). Делай тогда уж call / do методы.
>нахуя ты еще один индирект впиздрячил в лице std::function там где этого можно было не делать. Чтобы тайпчек был. Если бы можно было проверку callable делать не внутри функции, а просто по типу, то незачем.
>>2430629 >Если бы можно было проверку callable делать не внутри функции, а просто по типy Эххх.. Если бы в stl были type_traits а в с++20 приняли бы концепты. Тогда да, тогда зажили бы.......
>>2430629 >Такие и предлагал, бля. Так я говорю, не работай с долбоебами. Если завтра нужно будет добавить корутины в оборот у них походу манямир треснет.
>Если бы можно было проверку callable делать не внутри функции, а просто по типу, то незачем. А в чем собственно проблема?
>>2430666 Сотона, он сделал функцию с аргументом типа auto. Но этот аргумент надо бы чекать на то, что он callable. Да, я знаю, что можно через тайп трейты проверить, если функция шаблонная. У него же constexpr auto (auto)
Поэтому я и спросил, как это сделать на его примере здесь: >>2430579
Алсо, концепты не ебу. Плюсы меняются быстрее, чем я успеваю учить программисткую теорию. Зато модули, которых я очень долго ждал, так и не впилили до конца, суки.
>>2430675 >Сотона, он сделал функцию с аргументом типа auto. Но этот аргумент надо бы чекать на то, что он callable. static_assert(std::is_invocable_v<decltype(function), Args...>, ... )
Это если у тебя по какой-то причине не поддерживаются концепты.
Расскажите что из себя представляет прога на функциАНАЛьноя языке? Там тупо в исходнике определения чистых функций и парочка грязных функций с входными данными. Вейт, но ведь в крестах тоже самое, только нет обязательного требования к чистоте феункций.. Рябят, я запутался, помогите, мне очень интересно знать в чем смысл функцианального подхода.
>>2432139 Функциональный язык не просто о чистоте функций, это ещё и когда функции у тебя не в компьютерном, а в математическом смысле, т.е. нет управляющих инструкций, и всё определение записывается в одно выражение. Фактически немного меняется семантика языка, а суть осталась прежней, пишутся те же самые алгоритмы, но вывернутые наизнанку, т.к. управляющие конструкции выразили через функции и рекурсию. Может потыкать хаскелль или схему, чтобы прочувствовать.
>>2432139 Крестовые шаблоны видел? Это полный по тюрингу функциональный язык. STL тоже во многом функциональщина, причем изначально, скажи спасибо Степанову.
>>2432139 >только нет обязательного требования к чистоте феункций Как это нет? Если не будешь соблюдать чистоту функций кроме определённых экзотических ситуаций - над тобой будут смеяться и показывать пальцем, люди будут сторониться и считать тебя дурачком. Чаще всего грязные функции - это быдлокод.
>>2410386 (OP) Аноны, есть ли жизнь на Винде с VS Code? Если не использую студию, то нужен шланг или можно всё же оставаться с MSVC? Есть ли варианты собирать чем-то кроме cmake? Хочу укатиться из студии, потому что заебал интерфейс, я пишу ещё на расте и VS Code уже удобнее ощущается, сильно не хватает аутлайна в студии, куча лишнего говна, которым я не пользуюсь. MSBuild бесит отсутствием папок, так же хочется модулей, но интели сэнс постоянно раком встаёт. Ещё видел всякие санитайзеры и прочие зумерские мокрописьки, но в студии ахуел от того как криво они работают.
>>2433160 >У нас есть std::byte. Что-то уровня stdbool.h, когда приходится подключать костыль извне, так как изкаробки не поддерживается. И если Си это можно простить, так как язык древний и содавался во времена, когда программирование было слабо развито, то плюсы - это пиздец.
>>2433109 Дурачок, си и кресты обслуживают хотелки бизнеса. Если бизнес захочет например сделать из-за инженерных или финансовых причин минимально адресуемые адреса 16 битными ( см. безумные творения Texas instruments), кресты сделают 16 битный char, стандарт это явно позволяет. А что сделает твой игрушечный язык? Ряяя я работаю ток на арме и х86?
>>2433191 Да костыль, у нормальных языков типы из коробки идут без подключений liba2.h. >>2433231 Да, дохуя они сделают, учитывая, что коммитет послал нахуй гугол(одну из самых больших потребителей плюсов, напоминаю) и те с горящей жопой побежали карбон пилить.
>>2433231 >кресты сделают 16 битный char, стандарт это явно позволяет Алсо, блядь, поэтому и нужен нормальных byte, а не его пародия через char, чтобы такой хуйни не возникало. И т.е. ты на полном серьезе этот аргумент привел, дуралей? Типа к тебе приходят спросить про тип, который означает один байт, другие отвечают, что можно использовать char, так как он занимает один байт, а ты выдаешь что-то уровня "ряяяя не выебывайся, жри, что дают, иначе вообще все сломаем". Ну охуенно что.
>>2433352 Что в твоём понятии "нормальный байт"? Чар и есть по стандарту ровно 1 байт блять, если байт это "минимально адресуется единица". Или что, 8 бит? Так такая хуйня во всяких рфцшках зовётся не байтами а октетами.
Аноны, только не бейте! Почему у меня в панели элементов нет баттонов, скроллбаров и тд? Делал ресет - не помогает. Если тыкнуть "показать все", то элементы высвечиваются, но на форму добавить их не могу
>>2434315 >>2434317 Ну так я и не зелень совсем, суммарно 2.5 года на js и шарпе отпахал, а начинал вообще с сишки. Ща просто в процессе гэпа+переката.
>>2434512 А хули поделать, если сахара нет? Вот в расте лямбду можно писать вот так - " || 1+1 " , а у нас ебучая лапша. С циклами так же, хули нельзя написать " for( i : 0..size() ) "?
>>2435004 С тех пор ничего нового и не придумали, лол. Все идеи в CS, а в частности языкостроения прямиком из 70-80х годов. Только в расте, что-то относительно новое высрали.
Анон, чего бы такого почитать, чтоб не совсем для новичков основы C++ более-менее знаю, но чтобы доходчиво friendly библиотека/фрейворк или ещё что - без разницы, главное хорошо разжёванный материал. Пробовал с пяток книжек по win api, и во всех одна и лабуда. К примеру ни в одной книге не написано что такое дискриптор окна windows (HWND). Лезу в гугл, там люди пишут что HWND (и другие дискрипроты) это тип данных HANDLE. Опять лезу в гугл, с вопросом что такое HANDLE, люди пишут что HANDLE это 32-bit unsigned int, в других местах пишут что HANDLE это указатель на тип void чего, блять!? - нагуглил что это указатель на почти любой тип данных А сейчас риторический вопрос в никуда, просто о наболевшем какого хуя люди-уёбки пишут книги в которых ничего не понятно, такое чувство что 999 книг из 1000 написаны только для того чтоб указать их в своём "портфолио" и работадатель заглянув туда охуел и подумал что перед ним ниебаццо какой специалист. Я страницы из таких книжек не могу прочитать чтоб 100 раз не полезть в поисковик и по итогу тоже нихуя не понять.
в первую очередь учусь для саморазвития, в идеале найти работу
>>2435638 >но чтобы доходчиво библиотека/фрейворк или ещё что - без разницы, главное хорошо разжёванный материал. Чё >в других местах пишут что HANDLE это указатель на тип void чего, блять!? Что такое HWND и HANDLE написано прямо в msdn. Если ты не знаешь, что такое указатель на void, то тебе ещё рано в winapi. Учи C++.
>>2435735 >Что такое HWND и HANDLE написано прямо в msdn можно ссылку? на предмет того одинаковые или разные материалы мы используем
>Если ты не знаешь, что такое указатель на void, то тебе ещё рано в winapi. нагуглил, теперь знаю, но опять же ни в одной из книг не было сказано что это указатель
>Учи C++ Хорошо. >>2435638>>2435735 посоветуй чего-нибудь >Анон, чего бы такого почитать, чтоб не совсем для новичков основы C++ более-менее знаю, но чтобы доходчиво friendly библиотека/фрейворк или ещё что - без разницы, главное хорошо разжёванный материал.
это оно? в глаза ебусь - не вижу чтоб там было хоть слово о типе HANDLE, но всякие HACCEL, HBITMAP, HBRUSH, HCOLORSPACE, HCONV и прочие являются typedef HANDLE
Блядь А почему не будет лика? Если Т нетривиальный тип, где в конструкторе есть new, то на какой-нибудь итерации цикла копирования бросится исключение и будет утечка на тех элементах, которые успели скопироваться.
>>2435638 Handle это просто ручка, за которую ты можешь достать нужный тебе объект. Обычно это целый тип данных без знака - считай просто число. А смысл числа зависит от реализации - адрес в памяти, порядковый номер в каком-то массиве данных или составной ключ (допустим 135428 == xxyyzz, xx - тип, yy - подтип, zz - номер в массиве). Это изначально абстракция для уникальной идентификации ресурса (объекта) и не надо парить мозг как она там под капотом устроена. Есть тип абстрактного ресурса HANDLE и от него "наследуются" (через typedef) типы других ресурсов HIMAGE, HDC, Hxxx.
>>2436244 >Так верно - к технологиям, а не к инструментам. Я уже знаю плюсы, жс и питон, зачем мне ещё ещё что-то если я уже универсальный боец? Так это именно та технология, которая решает проблемы, которые не устранили в Си и Плюсах за 30лет. Мне казалось, что для байтоебов должно быть максимально интересно.
>>2436268 Все, протестил и понял. new T[n] вызывает дефолтные конструкторы T для всех элементов, я почему-то думал, что просто выделяется кусок памяти размеров sizeof(T)*n с мусором, наверное потому что так было бы быстрее. delete[] вызывает деструкторы у всех элементов, поэтому в примере с видео все ок. И наконец, если во время аллокации new T[n] у одного из T конструктор бросит исключение, то до захода в блок catch магическим образом будет вызвано столько деструкторов, сколько элементов массива успело сконструироваться. Это при условии, что исключение отловлено. Если не отловлено, утечка памяти и UB, и студия стопает выполнение. Что будет в готовом продукте - хуй его знает.
>>2436362 > И наконец, если во время аллокации new T[n] у одного из T конструктор бросит исключение, то до захода в блок catch магическим образом будет вызвано столько деструкторов, сколько элементов массива успело сконструироваться. Потому что c++ это гарантирует Зачем ты лезешь в такие дебри, если ещё не выучил азы?
>>2436360 Базовая и основная, которая является причиной ~90%+ уязвимостей, а именно обсеры с памятью. Да можно упомянуть такие штуки как MISRA, но оно только для написания софта под марсоходов подходит, ибо сжирает непомерно много человекочасов
>>2436491 >В последнее время, правда, в хохлошизу ударился, но сам чувак нормальный. Сказал А говори и Б - он за чьих? Бтв что это за мода каждому первому прогеру писать свой ЯП?
>>2436509 >Сказал А говори и Б - он за чьих А мне откуда знать? Это стиимы по кодингу, а не политические дебаты, но ссылочка на донаты Украине в комментах висит.
>Бтв что это за мода каждому первому прогеру писать свой ЯП Поиграться? Попробовать свое говно слепить?
>>2436509 >Бтв что это за мода каждому первому прогеру писать свой ЯП? Потому что хороший программист в том числе немного лингвист. Может не каждый пишет язык общего назначения, но дсл под разные нужды точно.
>>2436550 >которые даже эксепшенов боятся Эксепшны это не просто синтаксический сахар, а сложная хуйня с RTTI, блекджеком, шлюхами и цирком с конями, от того их все и боятся.
>>2436556 Да знаю я, что они дорогие. Для этого вроде как noexcept и throw и впиливали же. Дело в другом: что, все так и ломанулись юзать ranges, концепты, корутины и вот это всё? Это же пизда.
>>2436568 В крестаче постоянно всплывают два типа людей: 1) нахуя это тащить в стл, она и так пухлая 2) чё кресты такие отсталые, там нет {функциональная или ещё какая хрень нейм} Похоже комитет в такой же ситуации.
Длинный ответ - сейчас для написания игр используют движки, есть unreal engine, в нем можешь на плюсах и блюпринтах писать, а затем свою игру хоть на пеке, хоть на консоли, хоть на мобилке запускать Можно попробовать написать игру без движка или написать его самому, все это тоже сделать возможно на плюсах, но сложнее в миллионы раз
Как лечить байтоёбство? Понятно что у меня психика уже наёбнута, но может есть какие-то практические упражнения. После крестов и раста не могу писать на других ЯП. Я вот понимаю что на десктопе в 2022 похуй софт жрёт 50 мб или 500 мб ОЗУ, но не могу пересилить себя, в итоге пердолю байты. Я понимаю что все эти абстрактные "быстрее в 3 раза" только в бенчмарке или хайлоаде можно увидеть глазом, но всё равно не могу. Без сахара как в расте не могу. Я вот недавно хотел на Шарп вернуться, как 10 лет назад, но потом, увидев документацию ref struct, закатил глаза и закрыл студию. Как жить теперь? Алсо, я работаю в ИТ, но не занимаюсь кодингом напрямую.
>>2437149 Шланг для линтеров, потому что структура новая и модульная, гцц для итоговой компиляции, потому что в итоге код получается более производительный.
>>2436953 >Как лечить >не занимаюсь кодингом Ну так займись, хуле. Берёшь таску, оцениваешь её и аппрувишь 0.75 от своей оценки. Хуячишь абы как, чтобы успеть. Сначала будет сопротивление, потом торг и принятие. Короче иди веслать на галеру - там твой недуг быстро вылечат.
>>2437470 Когда функция возвращает этот тип Когда переменная справа имеет этот тип
>>2437402 Микро игровой движок Рейтресер Файловый менеджер, с какими нибудь приколами Простой веб сервер какой нибудь, чтобы бд туда прикрутить и ещё пару свистоперделок Какой нибудь чит для игры сингплеерной, чтобы себе деньги или ещё какие нибудь ресы начитерить Зареверсь что то Ну ещё есть огромное колличество всяких приколов на Ардуино
>>2437628 В том что для того чтоб иметь структуры на стеке и быть уверенным что не случится boxing, нужно выкинуть 2/3 всего функционала. И индусы горда назвали этот огрызок ref struct. А обычная структура хоть и является value-типом, но может быть по желанию компилятора отправлена на кучу. При этом классы - это ref-тип и всегда на куче. В итоге вместо RAII на стеке имеем тонны говна на куче, которое чистит вилкой GC, и потребление памяти как у джавы. А из альтернатив только ущербный ref struct, от списка ограничений которого я ахуел.
>>2437709 >boxing Я сейчас почитал и охуел (снова). А как вообще язык, в котором такое есть (без ведома программиста, заметьте), может называться быстрым? Я всё понимаю, UB, грязные мерзкие поинтеры и прочая и прочая. Но вот это? Это же ебучая пакостная хуйня.
Можно ссыль на то, где обосновывается что boxing - это серебряная пуля, и прогер не должен над этим иметь контроля? (По крайней мере для языков, которые обычно компилируют в бинари)
>>2437779 это платиновый вопрос видимо. Но что после базовых книжек выбрать, куда дрочить дальше, в какую сторону? Из моих данных исходных: работа сервис-инженера\1сника\сис-админа- все клиенты на винде.Хотелось бы пока вкатываюсь и обучаюсь какие-то мелкие штучки дрючки под работу делать. Под такой расклад что в перспективе с c++ лучше учить?
>>2437866 Тебе не надо учить что-либо без задач. Тебе нужна задача. Сделать беспонтовый чат\супер марио\гуевое приложение\расчет какого-нибудь матана - писать код и учить то, в чем есть нужда. Просто учить что либо бессмысленно.
>>2437901 > Новая кста студия вроде быстрой стала, по крайней мере у меня это скорее всего у баринов с 666 гб оперативки и NVME, почему в этом говне такой уёбский интерфейс? я даже не вижу как папку создать
>>2437667 я тоже пытаюсь в winapi, только начал, что-то конкретное порекомендовать не могу, только то, что нашёл сам, пока на стадии выбора имею следующий список литературы:
Литвиненко - технология программирования на C++ Win32 API Саймон - справочник системного программиста Петцольд Побегайло - системное программирование в windows Рихтер - создание эффективных win-32 приложений Назар и Рихтер Русинович - аж 9 книг (часть из них разные переиздания) Щупак - разработка приложений для Windows Павловская и Щупак Гальченко - системное программирование в среде win32 Харт - системное программирование в среде windows Марапулец - системное программирование в win api Шрайбер - не нашёл книжку где скачать (справочник по базовым функциям)
я только начал и попробовать успел только Литвиненко, какую-то ещё книжку из списка, ну и разумеется msdn пока что сплошное разочарование, примеры не работают в VS-22 даже с msdn, ни в одном из источников не объясняются многие вещи, в ближайшие дни буду браться за Побегайло
отпиши в треде как у тебя дела, может что сам ещё найдёшь хорошего, хорошо?
>>2437977 Спасибо за список. Отпишусь, если не дропну винапи) Эх, ну правильно в треде отписали, что лучше иметь какую-то задачу. Так интереснее, легче найти по ключевым словам современные решения + не забудешь что узнал.
>>2438067 Смотря что ты хочешь получить. Если сложное стандартно выглядящее десктопное приложение, то скорее виджеты, в куэмле компоненты есть и под десктопную тему могут закосить, но 100% сложного виджетного функционала не покроют, и вскроется это на каком нибудь TableView или TreeView.
Во всех остальных случаях, особенно если запускаться это будет не (или не только) на десктопе - ессно qml, он охуенен, хотя есть у меня у нему некоторая претензия.
>>2438081 Ну что значит "тяжёлого гуя"? Если что то с миллионом таблиц и тривьюх то да, их куэмэльные компоненты появились совсем недавно и очень примитивны и ограниченны, хера с два сейчас там сделаешь колонки, сортировку по ним, редактирование полей и тому подобное, сделать скорее всего можно но сильно придется поебаться, а ради чего?
В остальном куэмэль удобнее виджетов раз в 10 и позволяет писать сложную логику используя кода на порядок меньше.
>>2438093 >хера с два сейчас там сделаешь колонки, сортировку по ним, редактирование полей и тому подобное, Колонки просто делаются по полям, а не номерам, остальное все делается в модели на крестах. Ничего сложного. Ну нет редактирования искаропки, да, но ты всё равно сам интерфейс пилишь.
>>2438101 Я имел в виду заголовки колонок. Чтоб можно было кликнуть по нему и табличка сортировалась, по алфавиту или обратно... Всего этого там нет, и если впилить то кучей костылей, а какой нибудь QTableView будет уметь искаропки.
Байтоёбы, а как собственно научиться так же ебаться? https://habr.com/ru/post/439698/ И миллион других примеров где из говна, палок и перекладывания битов получаются ебейшие проги. А то я сколько всего не перечитал/пересмотрел после таких статей и проектов кажется что ничего сложнее template <typename T> не знаю.
Блять, я понял. Используйте вообще везде где только можно wstirng и wchar_r. Char и стринг эта такая по сути легаси хуйня для однобайтовых кодировок, в которой накостылили поддержку мнимую поддержку UTF-8(только если в консоли это установлено будет), что пиздец. Вайд строки решают все проблемы.
>>2438972 > Блять, я понял. Используйте вообще везде где только можно wstirng и wchar_r Говнище которое в линупсе 4 байта а в шинде 2, ахаха? Как раз utf-16 это говно без задач, никакой гарантии что символ будет закодирован парой байт он не даёт и ничем не лучше utf-8 (но жрет больше места, плюс UTF-8 обратно совместим с ASCII).
>>2439930 Попробуй в батнике перед запуском экзешника зайти в папку bin, и запускай без префикса .\bin\
> Я не понял, а какой тред живой? Почему прошлый на 500 посте бросили? Этот, потому что тред перекатывал залётный мимокрокодил, спешивший стать опом, чтобы запостить смешную картинку.
>>2439930 Не помню, но вроде в окнах библиотеки в текущей директории библиотеки ищет, а она у тебя выше на уровень, чем бинарник. cd bin && ./output.exe
Почему нельзя сделать std::forward<T>(t) без <T>? Например, подставлять вместо T тип std::remove_reference<typeof(t)>::type или сделать специализации для всех возможных комбинаций const/неconst &/&& и всегда работать правильно, а не заставлять писать <T>.
>>2437402 > Подкиньте мне идеи для пета Напиши тулзу командлайновую которая будет искать пиры у торрента по DHT. Или клон скайпа - домелкомягкого, p2pшного
>>2440182 Хотя бы DHT, с трекерами все примерно ясно, а вот подебажить чего там эти пидорасы возвращают что в одних клиентах находится дохуя пиров а в других нихуя - было ь неплохо.
>>2440129 template<typename T> T &&id(T &&x) { ----return static_cast<T &&>(x); } По определению, std::forward<T>(x) == static_cast<T &&>(x). Вот и попробуй изнутри forward-а, догадайся, что такое T && без указания того, что такое T. Хуй получится.
>>2440224 Всё равно не понятно. Вот есть T x; И T&&, и T можно получить из decltype(x). T получается из T&& отбрасыванием &&. Зачем заставлять программиста писать <T>, если эту информацию можно получить из x? А если нельзя, то можешь привести контрпример с вызывающей и вызываемой функцией?
>>2440161 Почему правильная категория проебётся? Ведь при выборе специализации шаблона компилятор обязан выбрать наиболее подходящую, а значит при наличии & и && выберёт то, что надо, разне нет?
Вот у меня есть шаблон метода: // R и Args - типы специализации шаблона класса, в котором этот метод определён template < auto Fn, typename T, typename = std::enable_if_t< std::is_invocable_r_v<R, decltype(Fn), T*, Args...> && std::is_standard_layout_v<T> && std::is_trivially_destructible_v<T> && (sizeof(T) <= Foo<R(Args...)>::kValueSizeMax)>> void Insert(uint32_t key, const T& value) { ... } С самим методом всё в порядке - он компилируется только с подходящими типами. Проблема в том, что сообщение об ошибке в случае слишком большого типа явно не говорит о том, что проблема в sizeof(T). Пробовал сунуть внутрь функции static_assert(sizeof(T> <= kValueSizeMax, "Type is too big."); Но, почему-то, MSVC на этот static_assert пох. Как-то можно в данном случае на этапе компиляции сообщить о том, что проблема в размере типа?
>>2440311 Когда делаешь forward аргумента шаблонной функции, аргумент этот у тебя не T x, а обязательно T &&x, иначе его нельзя форварднуть -- теряешь какие-то варианты. Это то, что выше назвали universal reference. Так вот, тип T сам может оказаться ссылкой -- передаёшь int const &, T = int const &, T && = int const & && = int const &. Но это ещё цветочки. Передай int &&, тогда T = int и казалось бы, всё зашибись. А вот хуй, любое упоминание переменной x в твоей функции будет себя вести так, будто х это int &, и его надо дополнительно прикастовать к T &&, чтоб он передался дальше как int &&. Ну а дальше как я и сказал, хуй ты без T кастанёшь нормально к T &&, если T может оказаться ссылкой. Короче, держи, поиграйся. https://gcc.godbolt.org/z/sd7rqh3d6
Нигде не нашел инфы про fstream Что из себя представляют объекты std::ifstream и std::оfstream? Хранят ли они файл целиком в оперативной памяти? Буфер, поток ввода-вывода что это в физическом смысле, а не в абстрактом, где конкретно они находятся? Что конкретно делает flush(), а что делает .close()? Как мне освобождать ту часть файла, которая мне в больше программе не нужна? Например я средствами С++ попытался скопировать несколько фильмов по 500 мегабайт в разных потоках, но времени это заняло порядочно, из-за того, что памяти не хватало. Посмотрите на код, я ведь делаю хуйню, копируя файл по кусочкам? Просто когда я тестировал время кода, у меня так получилось вроде бы быстрее, но потом я понял, что есть какое-то кеширование и не все так однозначно. Как мне сделать, чтобы при каждом копировании кусочка, уже скопированная часть как-то освобождалась бы из памяти. Вы не представляете, я гуглил, никто нихуя не знает, на английском даже какая-то абстрактная хуита, вместо конкретики.
>>2440789 Пчел, начни с базы. У тебя на каждой итерации выделяется и удаляется в куче блок памяти. Вынеси make_shared за пределы цикла. Из неочевидного - ты взял размер CHUNK с потолка. Оптимального значения тебе никто не скажет - зависит от файловой системы и кэшей процессора и hdd (но в пределах размера L2 кэша и что-то кратное 4кб - 16 или 32). Всё остальное - тупо реализация библиотеки std и под капотом может быть всё что угодно. Хочешь скорости и понимания происходящего - пиши в стиле C.
>>2440846 template<class T> class ZalupaBase { static_assert(!std::is_arithmetic_v<T>);// тип T должно быть классом/структурой!
ZalupaBase() = default;
void FooCall() { (static_cast<const T*>(this))->DerivedCall(); //вместо вызова виртуальной функции и генерации таблицы таких функций, просто вызываем функцию. }
};
class ZalupaDerived : public ZalupaBase<ZalupaDerived> {
Читаю этого вашего Александреску, и там инициализация массива std::type_info "is left as en exercise for the reader". Я придумал вот так. Все взлетело. Аутпут: >c >i >l Реквестирую критику.
Вообще, охуенная тема это метапрограммирование. Как раз для лиспоебов годная фича. И способ достижения цели знакомый, и результат приятный для любителя баловать себя всякими DSL-ами.
>>2441232 На шарпе или веб. Гуй на плюсах нужен в 1% случаев, если у тебя реально сложный проект с кучей вычислений типа САПР или фотошопа, причём по какой-то причине нельзя вычисления вынести в отдельные нативные DLL-ки.
>>2441248 > На шарпе Говно с кучей зависимостей, запускается долго, жрёт ОЗУ, надо верстать ебучий XML. > веб > вычисления вынести в отдельные нативные DLL-ки JS с крестами на WASM вообще не вяжется, все существующие реализации ffi медленнее питона, разве что электрон ещё терпимый. Да и сам веб та ещё тормозная параша с кучей дерьма "для безопасности". PWA было неплохой идеей, но как обычно навтыкали ограничений до состояния неюзабельности.
вопрос на счёт ловли исключений. Пусть у меня есть блок try{}catch(), в котором вызывается множество функций, которые в свою очередь вызывают ещё функции и т.д. try охватывает только исключения брошенные на первом уровне? То есть, в функциях, вызванных непосредственно в блоке try? Чтобы ловить более "глубокие" исключения мне нужно в функциях первого уровня также делать блок try{}catch, чтобы передать их на нулевой уровень? и также во всех уровнях?
>>2441885 Пусть у тебя есть N функций func_i Исключения ты ловишь только в функции func_1. func_1 вызывает func_2, которая вызывает func_3, которая вызывает func_4 и так далее вплоть до func_N, которая бросает исключение. И func_1 его поймает. Ещё ты можешь его поймать, обработать и перебросить ещё выше
>>2442101 Но немного тупо, что сначала идут обязательные параметры как просто строки-аргументы, а потом одна большая со опциональными. Я просто думаю, не будет ли это выглядеть тупо, что пользователю потому придется ручками пробелы в строки вставлять
Я в первый раз с такой хуйней столкнулся. Пишу либу для более удобного использования API большого проекта. Мне сейчас понадобилось использовать кое какие утилиты из этого самого проекта. Исходники есть, но для маленькой хуйни 100500 зависимостей. Можно ли ее как то скомпилить, а потом юзать в моем проекте. Тащемта она просто очень компилируется, но получается исполняемый файл, а мне бы что то более удобное... Реально ли это вообще? Мб можно шо то типо dll сделать, не?
>>2442401 За 20 минут накатил арч и пишу на С++ без проблем. А у тебя как дела? Условный буст без мозгоебли установить сможешь или в каждый проект локально будешь пихать?
Привет, анон! Очередной вкатыш с очередными тупыми вопросами. Решил вкатиться в плюсы, не работы ради, а хобби для. Можешь посоветовать годные книги по алгоритмам, паттернам, основам ОС и т.д., которые ты сам читал и тебе зашли. Ибо что толку от этого синтаксиса, если я его толком применить не смогу? Бесконечные хэлловорлды писать? Или все книги, упомянутые в соседних тредах достойны чтения и просто поочереди беру и читаю?
>>2442913 >нормальное такое хобби, увлекательное с первого дня Тебе не всё ли равно как проёбывает своё время какой-то рандом?
>это вообще не про язык программирования Ты хочешь сказать, что прочитай я условного Страуструпа, то всё, могу писать конкурента unreal engine, к примеру?
>>2442895 Чел.. я начал учить кресты лет двадцать назад и до сих пор их не до конца знаю. Каждый год ты прочитаешь новую книгу и узнаешь как на крестах делать монады, умные итераторы, ещё какую-нибудь ебанаю хуйню, от какой ты охреневаешь и впадаешь в катарсис. Это пиздец.
Кто тут что-то говорил что qml тяжёлый? >The contents of a widget-based window and a window showing a Qt Quick scene are rendered in a quite different way: the latter relies on 3D graphics APIs (*), such as OpenGL, Vulkan, Metal, or Direct 3D, whereas a widget-based user interface is rendered using QPainter and then blitted to the native window by windowing system specific means, for example, either BitBlt or UpdateLayeredWindowIndirect in the case of Windows.
Я уже около полумесяца занимаюсь сипп часов по 5-8 в день. Смотрю ролики. Читаю книги. И знаете, вроде бы что-то откладывается в голове. Классы, объекты, методы, поля, функции, указатели. Но я вообще не представляю что практичного можно сделать со всем этим, кроме говно-хуйни какой-нибудь в коснольке, ну или говно-подсчета какой нибудь математической формулы.
Это нормально? Сколько мне нужно времени, прежде чем я смогу в нормальный программный продукт?
Я ещё книги читаю, но с них у меня прям човсем печально копятся знания. Поэтому пока делаю упор именно на лекции разного рода. Имеет может быть смысл смотреть разбор каких-нибудь программ? Или написание их с нуля? Я пробовал, но там обычно всё происходит в духе: - такч подключаем библиотеку, так используем оператор "йоба-нейм" Ты сидишь, слушаешь, но эти названия тебе ничего совсем не говорят.
>>2443532 > Сколько мне нужно времени, прежде чем я смогу в нормальный программный продукт? Пару лет минимум. Или ты думаешь самый хитрожопый и за два месяца станешь хотя бы джуном?
>>2443541 Ну, я честно сомневаюсь, что много людей действительно готовы тратить много времени на обучение. Большинство либо в вузах спят, либо по пару часиков в день трудятся.
А у меня ирл есть пример, как человек за лето выучил змеюку, устроился сразу на ахуенную зп (в районе 80) и сейчас, как раз через два года у него уже за 200 зп. У человека никакой базы не было, только инженерное образование, но он был ускрден.
>>2443547 > Большинство либо в вузах спят, либо по пару часиков в день трудятся. Так такие потом и идут в Мак Вкус очка работать после вуза. Ты определись, тебе знания нужны или видимость получения этих знаний? Если первое, то я тебе уже написал сколько времени надо. >>2443550 Опять же, тебе знания нужны или устроиться в самую донную контору чтоб говнокодить за еду? "В нормальный программный продукт" ты точно не сможешь, если по такому пути пойдешь.
>>2443556 Мне нужно стать профессиональным программистом. А чтобы им стать - нужно устроиться работать кодером. А чтобы устроиться работать кодером - нужно уметь выполнять, к примеру, прикладные задачи. Об этом я и спрашивал. А по поводу "нормального пп", то тут можно дискуссию разводить часами. Кто-то вообще скажет, что половина программ на рынке это говно и по большому счёту нормальный программный продукт делают только мудрецы сеньоры и то один раз за свою жизнь.
>>2443561 > чтобы им стать - нужно устроиться работать кодером Только в твоих фантазиях только. Без нормальных знаний сможешь только на завод устроиться и будешь через 20 лет заводчанином с пивным пузом, неспособным накодить что-либо за пределами своего заводского опыта.
>>2443578 За что спасибо, дядь? Ты на вопрос мне ответишь? Что есть прикладные задачи в плюсах? Вот я стл знаю, с бинарниками работал, шаблоны, мультипоток все дела. Это прикладные задачи?
>>2443588 Степан Трофимыч, вы? Я уже получил свой диплом вроде. Ну ладно, вот тебе определение прикладной задачи: Прикладная задача - это задача, поставленная вне математики и решаемая математическими средствами [4]; когда в какой-нибудь области науки (не математики), техники или практической деятельности возникает задача, она не является математической по своему содержанию.
>>2443532 > Это нормально? Сколько мне нужно времени, прежде чем я смогу в нормальный программный продукт? Теперь учишь Qt и ебашишь программные продукты.
>>2443532 Чтобы делать программные продукты нужно блять делать программные продукты. Берешь и делаешь. Сначала получаются ненормальные, но походу дела набиваешь шишки. Сперва сам, потом тебя будут тыкать в них ебалом на кодревью.
>>2443561 > Мне нужно стать профессиональным программистом. > А чтобы им стать - нужно устроиться работать кодером. А чтобы устроиться работать кодером - нужно уметь выполнять, к примеру, прикладные задачи. Чтобы устроиться кодером - нужно блять устроиться кодером. То есть пройти собеседование, брутфорсом. А в первое время на тебе все равно сложных задач не будет, даже если ты не ждун и тем более не стажёр - все равно будет стартовое время на погружение, и скорее всего поначалу будешь сидеть на багфиксе и по большей части код читать, а не писать, а фиксом нередко будет вообще одна строчка кода.
Короче если писать научился и базу знаешь - гугли вопросы для собеседований и пиздуй проходить. На нескольких обосрешься - будешь знать чё нужно подтянуть.
>>2443697 > Нахуя писать гуи на плюсах? Чтоб гуи не тормозил. Если бекендоговну тормозить позволительно, то вот с гуем если не будет отзывчивости у пользователя жопа сгорит, и он будет прав.
>>2443725 В целом да. То есть оно ограничено здравым смыслом а не жёстким порогом. Ведь суть то не чтобы ты баг пофиксил (раз он висит в трекере и еще никому не назначен и его дают джуну, значит он не такой важный и срочный) а как раз чтобы в поисках какого хуя там не работает и как его фиксить ты и погружался в проект.
Те которые критические и нужно из закрыть вотблятьпиздецсрочно - тебе сразу не дадут.
>>2443811 Чел, тормоза это необязательно тяжёлые вычисления и нагруженность, тормоза это отзывчивость, точнее ее отсутствие. Самое первое что приходит в голову - во всяких жсах нет нормальных структурок и типов которые хорошо бы ложились на аппаратную архитектуру, там все будет через дохулион абстракций, во вторых сборщик мусора, виртуалочка с байткодом, какая нибудь тормозная отрисовка - вот тормоза и набежали.
>>2443962 то, что у тебя мощности в десятки тысяч раз больше, есть современные инструменты (а не палка-копалка), и само программирование на порядки сложнее.
Если ты пишешь текст - пиши, я пишу сложные проекты. Так что неосилятор тут ты.
>>2443972 >>2443967 >>2443964 Бля, а вы вообще за пределы CLion/MSVS не выходили, да? Вроде бы тред не самого простого языка, должны не совсем тупоголовые с синдромом туннельного зрения сидеть...
>>2443989 Расскажи - зачем? Ты сейчас мне предлагаешь выйти из майбаха и сесть за проперженную полуразвалившуюся шестерку, зато в ней можно все ПОДСЕБЯ сделать. Только это все равно будет полуразваливашаяся шестерка.
>>2444020 Чел, я пишу проекты на работе, а не трачу свое время на хуйню. На еженедельном 1:1 я рассказываю что я закоммитил,а не "ебался с уже решенными проблемами всю неделю"
>>2444034 > ну мне за это платят в районе 450к рублей в месяц на руки Показать пачку денех с супом а не скриншот в фотошопе у тебя конечно же не выйдет, мамкин фантазер?
>>2444034 >Или ты элита с пенсией по шизе? Лучше, я сдаю две квартиры в ДС, а сам живу в мухосранском миллионнике, правда на квартиры пришлось повьебывать в свое время.
>>2444037 Какая пачка денег в 2022 году, ты рофлишь да?
Я в /b как-то запостил 190 килобаксов налом с супом - там были вопли смешные от "ПОЛОЖИ БАТИНУ ЗАНАЧКУ НА МЕСТО" до "ОТЛИЧНАЯ ПАЧКА БАНКА ПРИКОЛОВ" купил хату в ДС на них, еблан. За 3 месяца до пынявойны
Любой скрин с ЗП могу прислать на твой выбор
>>2444038 кайф, у меня только одна пока, и то строится. Но если ее сдавать (в районе 90к примерно оно будет, судя по достроенным в соседних домах) - мне на нормальную жизнь не хватит даже близко.
>>2444073 в С++23 будет, обещали стандартизировать, да и поддержку модулей допилят. Я игрался со студийными - ну, оно правда работало на моих примерах, но import std; намертво все ложило.
Какие строки использовать мне для кроссплатформенности(GNU/Linux, Windows там) и поддержки языков во всем мире(японский и т.д.)? Для меня еще важно чтоб я получал аргументы командной строки в юникоде. wstring? string? u32string u16string?
>>2444197 Аргументы командной строки ты в любом случае получаешь в char, и про кодировку нихера не знаешь. А вообще, наверное использовать для них не ASCII - скорее всего моветон, я сходу не могу вспомнить ни одной утилиты где это было бы не так.
Я знаю, что из функции никогда мувать возвращаемое значение не надо, потому что так оптимальнее. А если у меня в колбек передается параметр, то как лучше? Вроде мувать, но вдруг там хитрые оптимизации есть
Чет у меня хуйня. Куча коллбеков, надо проеврять ошибки, в итоге у меня есть места где подряд 10 строк одинаковых идут, где ошибка кидается дальше, скипая промежуточные функции
>>2445044 Ну типо если у тебя функция возвращает строку, то никогда не надо писать return std::move(s). Так только хуже будет. Компилятор может иногда вообще не мувать, не копировать, а сразу на месте создать нужный объект.
>>2445066 Извини, мне лень лекции читать. Без тролинга и пренебрежения, мне просто лень. Сам погугли, если интересно. Это к моему вопросу уже не относится
>>2445081 > Не только. Я же написал причину выше > Приведи пример кода > Извини, мне лень лекции читать. <...> Это к моему вопросу уже не относится Ты шиз что-ли?
>>2445089 У тебя в одном месте возвращается значение из функции, а в другом месте передается параметр в коллбек Ты ведь понимаешь, что это разные вещи?
>>2445093 А извини, я подумал, что нужно пояснение к возврату. Прошу прощения. Мой пример простой. Я вызываю функцию f, которая когда нибудь потом, как появятся данные, считает оттуда строку, да кинет мне в переданный коллбек ее. Внутри функции кажется логичным написать callbackfunc(std::move(s)), но вдруг там тоже есть какие нибудь такие оптимизации, и в случае, если чтение не удалось я могу писать без мува, просто в колбеке объявление временного объекта и он не будет копироваться/муваться, а сразу там сделается
>>2445030 Если ты прям щас не пишешь какой-то адовый бэкенд супернагруженный для яндекса или озона - даже не думай о такой хуйне как "хитрые оптимизации", и пиши корректный код, в котором ты полностью уверен
Как мне программировать на работе и не отвлекаться на ютубчик двачик и вк? Вот соберусь с мыслями сяду начну выдавливать из себя код, но патом минут через 10 тянусь открыть вкладку. Как заставлять себя?
Значит метапрограммирование это всего лишь шаблоны и программирование над типами. А как называется программирование, когда программа в рантайме меняет свой исходник или бинарник?
>>2445192 > А как называется программирование, когда программа в рантайме меняет свой исходник или бинарник? А как она может в рантайме чего то менять если там ридонли?
>>2445206 Вопрос некорректный, может или не может, это другой вопрос, технические трудности. Ну например, делает копию, потом пр перезапуске старую версию в архив, сравнивает результаты работы в новой версии, делает на основании этого какие-то выводы.
>>2445204 ну вот ко мне зашли недавно сказали ускоряться, ну мне конкретных сроков не называли, сказали к началу сентября. Ну мне просто надо научиться как то не отвлекаться, от думанья. Если честно так заебало программировать, хоть я всего пол года программистом работаю, и особо много не накодил, но чето уже так настоебенило вот это все.
>>2438972 >wstirng >2 байта на символ >UTF-8 Хуй с ними с символами, для которых хватает одного байта, но как в этой хуйне будут храниться трёхбайтовые символы?
> Char и стринг эта такая по сути легаси хуйня для однобайтовых кодировок, в которой накостылили поддержку мнимую поддержку UTF-8 Шизоид, ты вообще знаешь, что такое UTF-8?
Мне надо в окошке рисовать квадратики которые можно скроллить, на каждом квадратике будет номер, и квадратик с нужным номером всегда должен быть по середине окошка, и я чето вообще не представляю как это сделать. И они должны плавно скроллиться, типо если я выберу квадратик номер 3.5, то это значит что по центру будет квадратик под номером 3, но смещенный на пол квадратика влево, как бы промотанный на пол квадрата.
>>2445896 QML не вариант, некогда изучать примудрости, да и придется использовать просто виджеты, а у меня чето не получилось использовать и виджеты и qml виджеты одновременно
>>2445927 > QML не вариант, некогда изучать примудрости, да и придется использовать просто виджеты Ну и наворачивай говнецо > а у меня чето не получилось использовать и виджеты и qml виджеты одновременно Руки из жопы потому что. В твоем случае виджеты не нужны, но вообще никаких проблем миксовать qml и виджеты неь
У меня самая главная проблема в том что бы понять с какого квадратика мне рисовать начинать, так как я не хочу все 2000 квадратиков рисовать, а хочу только те которые помещаются в окошко
>>2445951 В этом то и проблема, я кое как наговнокодил, тут оно рисуется но криво, я хочу более правильно сделать, вот второй день не могу додуматься до алгоритма. Я даже не знаю как объяснить, что я хочу от алгоритма к которому стремлюсь.
>>2445979 Это я не знаю как тебе описать алгоритм какой я хочу, я то знаю что я хочу получить, хочу что бы квадратики перемещались и код хоть чуть чуть по уебански не выглядел.
>>2445990 количество квадратиков ограниченно, при скроллинге, едут квадратики в зависимости от выбранной координаты выбирают нужное место на линейке. Дело в том что я квадратик могу рисовать только полностью. Надо как то узнать на сколько мне пикселей отступать влево за окошко, что бы там нарисовать квадратик, что бы только часть его виднелась когда он не полностью помещается
>>2446019 > Дело в том что я квадратик могу рисовать только полностью Это ещё сфига? Шо, в купейнтере (ты ведь им рисуешь) нельзя отрицательных координат указывать?
>>2446021 можно, но как мне вычислить на какой координате в минусовой рисовать, и вообще надо ли мне рисовать квадратик за пределами виджета, может там и так все помещается, конечно, можно просто рисовать количество квадратиков = (ширина виджета/ширина квадратика и отступа между квадратиком) + 2. Один что бы слева за виджетом рисовался, другой справа). Но тогда надо будет считать на сколько сдвинуто все, патом прибавлять сдвиг, и там кароче проблемы у меня дальше возникают. Мне почему то это кажется говнокодством и мне кажется есть более изящный способ рисовать квадратики
>>2446033 Чего ты такое вообще пишешь что обязательно нужны виджеты? У нас обычно вся времязависимая хрень выносится в отдельную систему реального времени, а интерфейс быстро клепается на обычных ос, связь по сети или шаред мемори если системы на одном компе.
>>2446157 Потому что там будет один виджет в приложухе который я не представляю как реализовать на QML, может и можно реализовать, но мне некогда познавать все тонкости QML, к 10 числам сентября надо уже доделать.
>>2446159 >к 10 числам сентября надо уже доделать. Ну ладно. Хотя хз как получится, мне как то дали легаси на шарпе/ксамл и у меня была неделя на изучение языков. Как-то справился)
>>2446212 А без абстракции про квадратики чё он должен делать? Показывать гистограмму какой то хуйни? Скролл чем идёт, мышью тягаешь по горизонтали, или колесо крутиш?
>>2446232 Спектр сигнала по частотам, откуда берется не знаю, характеристики частота и мощность. Частота это номер столбика мощность высота столбика. Вообще представь что ты радио настраиваешь крутилкой
>>2445282 >но как в этой хуйне будут храниться трёхбайтовые символы?
Да ебучий китайский алфавит полностью помещается в два байта, да даже мне пришлось несколько десятков секунд мотать всю таблицу юникода, чтобы дойти до тех символов, которые в 2 байта не умещаются. А хранится символы которые больше 2 байт будут при помощи сурогатных пар в строке.
>>2446257 Дай угадаю, устроился в оборонкунападалку? Третью форму при устройстве подписывал?
Я чуть менее чем год назад свалил из такой на третий день РАБоты, даже записи о том что я там работал не осталось - трудовую в другой город на оформление отправить не успели.
Как работают автоматические сгенерированные конструкторы при разных наследованиях? Если я в базовом удалю мувание, то что в наследниках будет? Я так думаю, что если наследник публично отнаследовался, то он просто может по дефолту муваться, будто это его члены, а если приватно, то нет, так придется мувать неявно базу. Я прав? Доку не читал
Мужики, есть проблема. Мне дико скучно погромировать ради погромирования. Мне надо, чтобы конечный результат был кому-то нужен. Иначе я забиваю болт через 30 минут. А изучить плюсы без практики невозможно. Родилась ебанутая идея: зарегаться на сайте для фрилансеров, и предлагать свои услуги бесплатно, честно предупредив, что задача займет миллион лет. Насколько такой формат вообще может кому-то понадобиться?
Я знаю, что виртуальные вызовы это дорого, но я очень хочу в базе указать, что функция должна быть. Если я делаю ее виртуальной, но не определяю, то вызовы по прежнему будут дорогими?
>>2447104 > Я знаю, что виртуальные вызовы это дорого Схуяли > но я очень хочу в базе указать, что функция должна быть Нахуя? Если ты хочешь указать, что эта функция должна быть у потомков, то она обязательно должна быть виртуальной, потому что в этом и смысл виртуальных функций.
А как сделать так, чтобы из хедера вообще ничего лишнего не протекало? Есть у меня функция чисто для использования в либе, пользователю о ней знать не надо. Как ее скрыть? И нужно ли?
>>2447190 Напиши отдельный хедер с функциями для пользователя и напиши для него реализацию на базе имеющегося. Это будет правильно, т.к. пользовательский интерфейс должен меняться как можно реже, а внутреннюю кухню можно будет регулярно менять. Тем более, что у тебя наверняка dll и подвендой методы экспорта надо дополнительно помечать как __declspec(dllexport/dllimport).
>>2447405 >тезис очень прост Тезис ничем не подкреплён >приведи контр пример Почему я смог устроиться в 2 компании на полную удалёнку + поддерживать контакты с полдюжиной постоянных заказчиков с почившего апворка а ты нет?
>>2448092 > В 23ей строке ему это не помешало. Потому что они у тебя указаны в параметрах функции? Траллишь тупостью что ли? Как он во втором случае должен угадать из воздуха?
>>2448306 Конечно стоит, там кто-то может сидит думает где взять бабло на новую видюху, а тут ты принесёшь бабло просто так. > Мимо системный и сетевой админ Молодец. После курсов начинай учить кресты.
>>2448102 Вот, блядь, я об этом. Можно вывести тип, но делать он этого не будет. Потому что "траллишь тупостью что ли? я компилятор крестов а не cock coq."
>>2448353 Ты долбаёб что ли? Откуда он его выведет, если ты нигде не указал его? В первом случае есть откуда. А хули ты ждёшь во втором магию? Чтоб он рандомный подставил тебе?
>>2448430 Ты сейчас про лямбду? Ты не стесняйся, если она разворачивается в функтор, а не в функцию, то так и скажи же, ну.
Я знаю, что MyShiet - структура. Интересовало, почему нельзя вывести параметры шаблона из сигнатуры и типа возвращаемого значения функции, которой я инициализирую инстанс этой структуры.
>>2448433 > почему нельзя вывести параметры шаблона из сигнатуры и типа возвращаемого значения функции А где у тебя там сигнатура? У тебя есть только переменная с типом лямбды... Ты же не думаешь что в указателе на функцию умещается ещё и её сигнатура?
Нет, я не думаю, что в указателе умещается сигнатура. Да, я думаю, что в compile-time кресты знают полный тип указателя, в котором умещается и сигнатура.
Ну и естественно, я полагаю, что параметры шаблона подставляются в compile-time.
>>2448538 >Вот если бы у тебя всё это было в одном шаблоне, то сработало бы. Тогда бы ты передал параметры в функцию и они вывелись в структуре. Немного не понял. Из-за того, что MyShiet и FitnessFunction - разные шаблоны, подстановка нормально не работает?
>>2448408 Ты ебанат или куда? В рантайме нет никаких типов. Это нетрудно понять, если попробовать поискать типы в генерируемом ассемблерном коде. >>2448381 requires никого не связывает там у тебя и не выводит. Он просто подставляет всю хуйню в requires и проверяет, получилось true или false. Понять, что он ничего не может вывести, тоже несложно -- невозможно вывести тип Cost. То, что он конвертится к какому-то другому типу, не определяет его однозначно, ну вообще никак. У тебя получится, если твой концепт сможет всё вывести сам, зная только тип T. Сам вытащи из типа T то, какие он аргументы принимает, и что потом возвращает.
>>2448560 > если твой концепт сможет всё вывести сам, зная только тип T И тогда в концепте смысла не будет. Вот сейчас я понял. Пример высосан из пальца, потому что в struct MyShiet есть только поле с функцией. На деле там есть ещё поля, типы которых зависят от параметров шаблона.
>>2448568 Это оттого, что концепты совсем не для вывода типа нужны. Там у тебя из непростого -- вывести аргументы, которые принимает лямбда. Остальное дальше нетрудно.
>>2448602 Ну в вакухах что угодно можно встретить. А мне нужно что-то конкретное, чтобы и интересно писать было и работу найти можно. С чего вообще все начинали?
>>2448306 > Анчоусы, стоит ли вкатываться в с++ по курсам Яндекс.практикума? Цена вопроса ~120.000 рублей. Если нет, то обоснуйте. > Мимо системный и сетевой админ Конечно стоит. Вдруг они там на таком лошье наварят бабоса, и такси дешевле станет...
как такое фиксить? Я пробовал рисовать и с помощью QPainter и с помощью QImage. Пробовал рисовать по пиксельно, то есть эти квадратики рисовал сам, своей функцией рисования прямоугольника. Плюс QPainter рисует не столько пикселей сколько попросишь. Я прошу нарисовать квадратик 10 пикселей шириной, он рисует 15. Там что ли какое то сжатие стоит и он так масштабирует криво. AntiAliasing не предлагать, он тогда вообще криво рисует как на 2 пике
Каждый раз когда пытаюсь написать что-то мультипоточное, упираюсь в активное ожидания. Может быть, изначальную проблему оно и решает, но заодно с этим решает ещё и проблему отопления помещения. Посоветуйте что-ли книжки, в которых объясняется это и прочие проблемы. Ну и в целом желательно чтоб там объяснялось мультипоточное программирование
>>2449600 >ядро просто на другой процесс переключается В этом и проблема. Так должно быть, но я не знаю, как это сделать, и в итоге у меня цикл while и активное ожидание.
>>2449600 Попробуй сделать циклическое ожидание в потоке if(flag) без sleep. Увидишь как оно 100% от одного ядра зохавает. Как быть? Например использовать conditional_variable.
>>2449632 >>2449633 Нахера там делать while, вы совсем шизы? Для этого у операционок есть мультиплексированый ввод-вывод, хз чё там в винде но в линуксе это select/poll/epoll. Процесс тупо уходит спать указав за каким списком дескрипторов он будет следить, и операционка его разбудит когда там будут интересующие его изменения.
Соответственно, в крестах для этого надо или использовать qt - там в его QIODevice вся асинхронщина будет встроена, юзай сигналы и все, и есть классец чтоб сырой дескриптор из системного апи обернуть и уже с сигналом удобно работать.
Или юзать буст с его io_service(оно называется уже иначе, но когда я его использовал было ещё io_service) и асинхронные операции, типа async_read...
>>2449660 > Чем тебя std::conditional_variable не устраивает Тут нахуй не нужна многопоточность, чел. > Зачем тянуть за собой буст (asio) или блядский Qt? Во первых можешь не тянуть и использовать родное апи операционки (в моем случае posix, хз как там у виндоблядей) если хочешь поебаться и если кроссплатформенность не нужна. Только - boost asio реально куда то там надо тянуть? Она разве не header only? Блять, да она никак не может быть не header only, там же ебучие шаблоны шаблонов шаблонов шаблонов...
Всем привет. Потихоньку ковыряю сипипи, и чсх происходит необъяснимая хуйня. Пишу калькулятор. Вот фрагмент кода с самой функцией счёта: http://pastebin.com/h0kMZqRh Тут всё очень просто, есть переменная с выражением (3+4), есть переменная со смещением, и есть цикл, в котором происходит счёт, пока есть что считать. На этом моменте и происходит необъяснимая хуйня. Я в свитче проверяю знак в том месте строки, где он был найден. В итоге это не +, не -, не * и не /. Это, сука блять, "+4". Вопрос: как символ в определённой позиции строки может быть двумя символами?
>>2449827 > char⚹ expos = &ex[pos]; Ты возвращаешь не один символ, а строку, поэтому там и +4. Исключение кидает в итоге, потому что ты break'и забыл поставить.
>>2450049 Чел ты дурак или троль? Ты тут уже неделю пару квадратов нарисовать не можешь. Очевидно у тебя какой то график, почему бы тот же кастомплот не использовать или простигтсподи кутичартс? Нахер ты дрочишь в присядку?
>>2450119 Я нечто похожее делаю, только у меня не красная стрелочка будет бегать по шкале, а шкала будет под красную стрелочку нужное значение подставлять
>>2450119 Нужное значение, это значение которое ты виджету скармливаешь, а он ищет элемент массива у которого индекс точно такой же, и рисует посередине столбик такой высоты в зависимости от значения которое лежит под этим индексом.
>>2450132 Возможно, ебланское решение, но может просто сделать длинную горизонтальную картинку со шкалой и просто сдвигать по координате х влево/вправо?
>>2450146 ну изначально, то я так хотел, но не хочется рисовать несколько тысяч столбиков, если только несколько из них окажутся отрисованными, но время то затратится на отрисовку всех.
>>2410386 (OP) С++ стандарт драфт. Ебальничек бы разбить тому дауну что писал эту хуиту лел. У нас даже в TypeScript такой хуйни нет, всё чётко описано вплоть до интерфейсов callbackов. Ну ёптвою мать.
Сегодня начал читать матан и столкнулся с тем, что много беспруфного пиздежа. например, говорят вот предел у функции при х->∞ такой-то. А откуда мы это знаем? А что если на каком-то значении функция наебнется и вообще по-другому себя поведет? Обычно пишут очевидно, но хотелось бы точных пруфов, а не неполной индукции. Не ожидал такого от точной науки.
>>2450967 >Сегодня начал читать матан Хуёво читал, раз не дочитал до определения предела. > например, говорят вот предел у функции при х->∞ такой-то В нормальных книгах это как раз доказывают. Колись, что читал? Википедию?
Есть буфер и два потока - поток А и Б, Поток А записывает в буфер данные, введённые пользователем, а поток Б считывает из буфера данные и производит над ними определённые манипуляции. Как организовать их синхронную работу? Чтобы поток Б не постоянно запрашивал данные, а только после того, как в буфер были записаны данные. Понятно, что нужно использовать mutex, но как это реализовать на практике? Есть ли примеры?
>>2450967 > А что если на каком-то значении функция наебнется и вообще по-другому себя поведет? Если читать повнимательнее, то весь беспруфный пиздеж в матане, как правило, сопровождается всякими оговорками и уточнениями. В частности, весь беспруфный пиздеж про пределы работает с т. н. непрерывными функциями. Непрерывная функция - это по определению такая функция, которая хорошо себя ведет и не наебнется.
>>2451031 >Демидович Демидович это задачник, там и нет цели воспроизводить пруфы. Прост краткая справка для напоминания.
Во-вторых, я ничего не говорю о том что через что вводится. Я говорю о том, что почти к любому свойству предела будет оговорка о том, что оно верно только для непрерывных функций.
>>2450638 Если уж не получается реализовать задуманное через простую pod-структурку, то
1. Единооборазие - все делается через вызовы функций. Единообразие это хорошо. 2. Можно дать позырить член, но при этом не давать его трогать. 3. В общем случае могут потребоваться всякие танцы с бубном, а не просто return член.
Реально вопрос. Нахуй нужно выделять динамически память, кроме как для массивов(и то, уже есть std::vector и прочее)? Нахуя нужно динамически выделять память под указатель, а потом ее удалять? Это медленно пиздец. НАХУЯ. Поясните. Ведь можно статически выделить в стеке.
Так зачем нужны все эти unique_ptr, shared _ptr и прочая залупа?
>>2451130 >Ведь можно статически выделить в стеке Стек по размеру ~1 мегабайт. Удачи выделять в нём память. Очевидная проблем - в стеке нельзя выделять память во время выполнения.
>>2451130 > Это медленно пиздец. А статика как будто быстрее, чел. Ты же понимаешь, что с кучей статики у тебя будет бесполезный жор памяти? Статику никогда не стоит использовать, у нас тут не джавапараша. Если хочешь быстро, то не вылезай со стека.
>>2451107 >очти к любому свойству предела будет оговорка о том, что оно верно только для непрерывных функций Например? Ты со сходимостью или асимптотикой не путаешь?
>>2451130 > Нахуя нужно динамически выделять память под указатель, а потом ее удалять? А этого и нет, ты какую-то хуйню выдумываешь, аллокатор в крестах не так работает. И со статической аллокацией ты будешь платить скоростью обращения к памяти и её размером. Выигрыш от этого сомнителен, только если в эмбеддед пригодится, как корутины.
>>2451149 так я не пойму, нахуй все таки нужен умный указатель? Ведь суть его в том, чтобы вручную не писать new и delete, так? Так зачем это нужно для указателя? Почему нельзя использовать обычный, ака статический указатель? Вот для массива понятно зачем new и delete, но уже есть std::vector и велосипед не нужно изобретать.
>>2451157 > нахуй все таки нужен умный указатель? Для повторного использования памяти без ебли. > Почему нельзя использовать обычный, ака статический указатель? Потому что у тебя память конечная. Ты с тем же успехом можешь сразу себе выделить всю доступную память и без аллокаций срать в неё не снимая штанов.
>>2451171 А кроме этого? То что память конечная сомнительный аргумент, я видел дохуя примеров использования этой залупы в маленьких функциях и классах.
>>2451157 Например для обработки исключений. Если у тебя кидается exception то стек раскручивается и удаляется smart_ptr, который освобождает память автоматически. Придумай альтернативный сценарий со статическим указателем.
>>2451179 > сомнительный аргумент Тогда тебе лучше не писать на клестах, потому что ты идёшь по тем же граблям, что и многие говнокодеры, высерающие говно с текущей памятью и багами.
>>2451130 То ли я тупой, то ли ты. Во-первых, ссылка не открывается, хуй знает, что там за волшебный "статический смарт-поитер" изобрели. Во-вторых, ты в курсе, что при завершение функции, все локальные объекты считаются уничтоженными? А память, взятая из кучи существует, пока ты явно ее не удалишь либо до конца программы?
>>2450967 Если тебе кажется, что ты в кудрявнике видишь беспруфный пиздёж, остановись и осознай, что ты нихуя не понимаешь, что происходит и о чём речь. Существование предела функции при x -> inf имеет конкретный смысл, который там однозначно указан. Твоя отрыжка про "при каком-то значении функция наебнется" показывает то, что ты ещё и не понял, что вообще такое предел и нахуя он нужен.
>>2451197 Время жизни объекта заранее не известно. Например есть class A { static_ptr p; }; Код: A f1; { f1.p = alloc_memory_on_stack(); ... // в этом месте удаляется память f1.p так как scope закрывается } // в этом месте f1.p указывает на невалидный блок памяти
>>2451250 Так а в чём чай то? Если статическую память использовать то она освободится только в конце работы софта. Если стек, то освобождение по правилам LIFO.
Оператор размещения new будет работать с одинаковой скоростью для всех типов памяти. Только для кучи не будет ограничений по времени жизни блока, на котором всё размещается.
>>2451257 >Оператор размещения new будет работать с одинаковой скоростью для всех типов памяти. Маня, в курсе как работает выделение памяти, RAM, операционная система?
>>2451260 Видимо потому, что он в качестве аргумента принимает адрес уже выделенной памяти. И по этому адресу вызывает конструктор, работа которого также не связана с типом памяти.
Эх, завтра уже сентябрь. Кого-то из вас выпиздят за не пересданный матан, а кто-то опять начнёт изучать сишечку с преподами-маразматиками. Жалко вас, вкатотуси.
Удвоил так-то. Вообще не понимаю, нахуй изучать кресты будучи в проперженной шараге. Когда открою свой биз, принципиально дебилов с корочкой нанимать не буду. Один хуй бесполезны будут лел.
>>2451282 Инженер-констрктор. Выучил весь этот ваш computer science bachelor degree сам бесплатно, нахуй вообще в универ(тем более рашковуз, пиздец) поступать? Кроме как повыебываться перед РАБотодателем? Диплом и купить можно
>>2451282 >>2451284 >>2451286 Жаль уже больше 10 лет как закончил школу, а так травил бы вас на переменах. Как же заебись было, когда двачеры всегда под рукой и готовы хоть отсосать лишь бы не стукали.
>>2451286 >Инженер-констрктор. Это же дно ёбаное в плане зп. Ну разве что инженерные расчёты на барена копеечку приносят. Всякий там ansys, абкакус и прочие star-cd.
>нахуй вообще в универ Диплом решает, когда ты начинаешь с зарубежными организациями общаться. При релокации просят наличие master science или ph.d. Просто это хай тир и когда ты до него доходишь,, то время уже назад не провернуть.
>>2451292 > При релокации просят наличие В азиатских странах не просят. А релоцироваться в западные помойки с сжв, ниггерами и преступностью - это умственная отсталость.
>>2451299 Нет, просто говорю как есть. Интегрироваться в общество ты не сможешь никогда, в лучшем случае твои дети, зато бонусом будет ебля твоего мозга леваками а они будут в любой нормальной ИТ-компании и возможность получить перо под ребро от ниггера/абу-бен-ладена.
>>2451311 Хуёво, когда пользователь - это твой коллега-дегенерат за соседним столом и тебе приходится городить такое говно. Стоит задуматься туда ли ты попал вообще.
>>2451308 Диплом ещё идёт бонусом при всех видах миграции (в ту же Канаду есть система начисления баллов, которые дают за знание языка, профессию, образование, возраст).
Аноны, разве библиотека алгоритмов не нарушает принципов ооп? По сути все ее функции изменяют значения входящих параметров, вместо того чтобы возвращать новые значение.
>>2451130 Чот орнул. Тебя надо к скриптопетухам определить на парашу, там тебе никакой менджемент памяти не нужен будет. Будешь виртуальным колясочником.
>>2451689 В крестах вообще самый хуёвый OOP из возможных. Даже в жава параше он и то лучше. Долбоёбы зачем-то вынесли стандартные классовые методы в отдельные функции. Я в ахуе чё творится. И эта хуйню ещё с 2011 стандарта.
>>2451689 То есть допустим тебе надо отсортировать массив в несколько гигов - мало того что он сам весит ебануцца сколько - нужно ещё столько же памяти отожрать, лишь бы не нарушать каких то маняпринципов?
>>2452685 не, не криво, там есть на видео артефакты, где цвет смешивается и видно иногда не тот цвет пикселя который должен быть. Это из за 150% масштабирования у монитора. Мне просто лень было, ставить 100%, для видео. Вот что это >>2450132
>>2450098 Да, это очень легко на деле оказалось. Даже стыдно как то теперь.
double selectValue - значение которое мы выбрали, и которое должно быть по середине;
int widthLevelSignalColumn - ширина столбика;
int distanceBeetwenLevelSignalColumn - расстояние между столбиками;
QSize sizeTags - ширина и высота риски с координатой, это те которые черные внизу с цифрами;
double quantityLevelSignalColumns - количество столбиков помещающееся на виджете;
QVector <int> inputValueVector - массив со значениями;
double widthOneSegment - ширина одного столбика вместе с пустым пространством;
double step - прирост значение при одном шаге колесика мыши;
double tagsValue - на каких координатах рисовать цифорки внизу, типо хочу что бы каждые 10 столбиков рисовалась координата номер столбика, а можно поставить что бы каждые 10.5
>>2452704 А ну в принципе краткий комментарий по алгоритму могу дать.
Сначала определяем сколько столбиков + отступ от столбика помещается в виджете. Затем делим на два. рисуем столбик текущего значения на 0 координате, слева от 0 координаты рисуем количество столбиков помещающихся в виджете / 2 и справа также. Затем все это сдвигаем в право на половину виджета. Таким образом получается что значение которое выбрал пользователь всегда по середине. Также нужно нарисовать рисочки со значениями, также находим сколько помещается рисочек в виджете, затем находим ближайшую к выбранному значению риску путем алгоритма
double posValue = (selectValue - leftTag) + (i tagsValue);
он находит ближайшее слево значение относительно selectValue и кратное tagsValue. Затем также рисуем влево половину всех рисочек, от tagsValue и вправо также. Также сдвигаем на половину виджета. Ну и все.
Правда для корректной работы потребовалось добавить костылек.
Если у selectValue есть дробная часть то ее надо округлить, до step. Типо если у меня шаг прокрутки 0.1, то selectValue надо округлить до 1 знака после запятой. Если дробной части нет, то ничего не делаем. Я не знаю почему, но иногда у меня получались значения, вроде -1.164545 10^-16, и я придумал только такой способ избавиться, от этого, потому что на нулевых координатах столбики себя не адекватно вели иногда.
Я делаю много объектов маленького размера через new, причем живут они не более секунды. Каждый раз при выделении я к ОС обращаюсь? Это же долго очень. Надо бы заранее выделить память, и ее уже распределять, да?
>>2452773 > Я делаю много объектов маленького размера через new, причем живут они не более секунды. Каждый раз при выделении я к ОС обращаюсь? Нет. ОС с мелкой хуйней не работает, а ебошит страницы памяти килобайта по 4. С ОС работает стандартная библиотека, а как с памятью работает аллокатор в большинстве случаев тебя ебать не должно.
Надо принять (по сети) и обработать структуру, но какая именно это будет структура, я узнаю только в рантайме (выбор из трёх, возможно четырёх структур, какая именно - выясняется в момент приёма). Собираюсь принимать её и записывать адрес в void указатель, выяснять тип пришедшей структуры, а потом кастить этот указатель в указатель на нужный тип, чтобы можно было уже получать доступ к полям структуры и обрабатывать данные. Взлетит? Может, есть вариант получше?
Прочитал книжку для нюфань из шапки, следующим делом буду пролистывать Best practices/Проектирование и теперь вопрос, где набираться реального опыта для кодинга? Теория хорошо, но в прод меня, базовую макаку, никто не пустит же, даже как совсем джуна. Выдумывать свои пэты или в опенсорсе можно быдлокодить понемногу? Какие есть бест варианты тут?
я видeл, что тyт один yжe попpошaйничaл, тaк что поймy, ecли нaxyй пошлётe.. y мeня мой котофeй зaболeл. зовyт Гошa, y нeго capкомa жeлyдкa, тpи нeдeли нaзaд обнapyжили.. caм cтyдeнт, eщё нe paботaю, почти ниxyя нe имeю, a то, что имeл, yжe пpодaл - cмapтфон, нeкотоpyю одeждy, комплeктyющиe от пк, котоpыe xоть чeго-то cтоили. тaк жe влeз в долги. пытaлcя в микpозaймы или кpeдиты - ниxpeнa нe дaют из-зa отcyтcтвия paботы. pодитeлeй нeт, только бaбyшкa, котоpaя почти вcю пeнcию нa ceбя тpaтит - лeкapcтвa, eдa, коммyнaлкa. в общeм, нe помощницa..
тaк нacкpёб 16 c половиной тыcяч. нa опepaцию нyжно 18, eщё cpaныx 1450 pyблeй нe xвaтaeт. a опepaция нa зaвтpa, нa cубботу нa 11 дня нaзнaчeнa бляять...
yмоляю, aноны, xотя бы pyблём помогитe пожaлyйcтa. 220073ㅤ0247ㅤ539162 (извинитe, что имeнно так напиcал, боюcь бан выxватить раньше времени)
я догaдывaюcь, что нeкотоpыe пpeдложaт зaбить нa котофeя - я нe могy тaк, aноны... Гошa cо мной yжe полжизни, это caмоe доpогоe cyщecтво для мeня. и ceйчac, cмотpя, кaк он мyчaeтcя, xочeтcя нaxyй вcкpытьcя...