24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
>>2939722 Каким-нибудь потоком watcher подпишись на изменения каталога через какой-нибудь аналог fsnotify для своей ОС, складывай имена новых файликов в какую-нибудь очередь, а какие-нибудь потоки worker'ы пусть их берут из очереди и обрабатывают конкурентно
>>2940541 Нажалуйстесь на него вышестоящим, скажи ему что пока он не предоставит теоретических основ, то делать ничего не будешь, старый совковый пидор просто самоутверждается за ваш счёт, это пассивная агрессия копросовка жившего возле параши.
>>2940679 >>2940681 Маняграмотный пришёл рассказать зумеркам как надо голову в унитаз правильно мокать.
Тот старый пидор сам не знает нихуя и просто дрочит понакатаной, не имея никакой фундаменталки за спиной, либо просто мразь которая отказывается от доброжелательного предоставления инфы.
>>2940676 Да, пусть распишет вариативность исполнения с различной оптимизацией по памяти по времени по небу аллаху по количеству строк кода и хуйне малафье. Пусть научит думать в этой плоскости, и отрывать иногда свою жопу для расписывания на доске и ниписания гайдов в электронном. А то был у меня один такой вумный старый инфантил правда недолго и не правда, всё истории травил, падла, а знаний никаких.
Сап. Не могу найти годный вариант чтоб взять файлы из папки и шибануть одним архивом в другую директорию. Не привлекая сторонние библиотеки (включая рабочие только на 17 версии) это можно как-то реализовать? Хотя бы только с windows.h.
>>2938659 (OP) Хочу прокачаться в программировании и опуститься на уровень ниже, сейчас пишу на джаве и жсе, самоучка. Я же могу начать с плюсов без знаний си?
>>2941487 Опустись на дноассемблер лучше. У меня даже книжка для тебя есть, собака ебучая, JONATHAN BARTLETT - LEARN TO PROGRAM WITH ASSEMBLY FOUNDATIONAL LEARNING FOR NEW PROGRAMMERS. Там под х64 асм, повествование повторяет Programming from the ground up.
>>2941487 Ну тут мнения разделятся. Кто то считает плюсы отдельным языком, которому изучение С вредит. Кто то наоборот. Но если ты действительно хочешь вниз - это С. Кресты немного не про низ.
>>2941431 ответ будет зависеть от того, что ты подразумеваешь под архивом, обычный архив или сжатый, и второй пункт, начиная с какой версии винды ты хочешь чтобы работало твое решение
>>2941487 > Я же могу начать с плюсов без знаний си? Конечно нет, плюсы не существуют без си Поэтому в каждой книге по плюсам, тебе заодно и си объяснят
Молю, ананасы, помогите, я уже начинаю гореть. Как заставить ебаный clangd видеть ебучие стандартные плюсовые и не очень библиотеки? Что прописать этому еблану в compiler_commands? iostream не видит, string не видит, сука sdl2 зато видит.
Mac OS, neovim, сраный coc.nvim и coc-clangd
За мат извени ,третьи сутки потею уже над этим, подскажите как сделать, это пиздец.
Молю, ананасы, помогите, я уже начинаю гореть. Как заставить ебаный clangd видеть ебучие стандартные плюсовые и не очень библиотеки? Что прописать этому еблану в compiler_commands? iostream не видит, string не видит, сука sdl2 зато видит.
Mac OS, neovim, сраный coc.nvim и coc-clangd
За мат извени ,третьи сутки потею уже над этим, подскажите как сделать, это пиздец.
Молю, ананасы, помогите, я уже начинаю гореть. Как заставить ебаный clangd видеть ебучие стандартные плюсовые и не очень библиотеки? Что прописать этому еблану в compiler_commands? iostream не видит, string не видит, сука sdl2 зато видит.
Mac OS, neovim, сраный coc.nvim и coc-clangd
За мат извени ,третьи сутки потею уже над этим, подскажите как сделать, это пиздец.
>>2941870 Делаешь сложный месадж брокер, потом упрощаешь
Посмотри на redis например. Сделай однопоточный in-prosess kv-storage, который умеет только set/get для строк. Потом для списков. Потом добавь mset/mget. Потом сделай его многопоточным. Потом добавь publish/subscribe. Потом сделай его сетевым. Ну и тд.
>>2941864 Посмотри как примерно устроена Кафка, сделай похожее, но сильно попроще. Разберёшься с многопоточкой, хттп, синхронизацией доступа, бустом асио, бист, прог опт. Можешь ещё бд и логи привязать дядь прикола. Но это нихуя не маленький. На пару недель, может месяц работы, и не подойдёт если ты совсем зелёный. Ну и консумеров продюсеров сообщений тоже придется написать, но после этого это будет изи.
Ваши рабочие проекты выглядят так же, как говно? Хочу понять, что меня ждет, если я вкачусь на работу на C++. А то может лучше переучиться на сисадмина? Я перфекционист и меня корежит от говнокода.
>>2941783 Да все установлено. Вот на днях в вскоре делал проект, решил обратно на вид пересесть, потратить. Короче как я понял clangd не может разделить где искать библиотеки. Проблема в том, что я попробовал все, какие только мог, директории, толку ноль. Ну sdl2 из фреймворков подхватывает и все. А стандартные библиотеки внезапно не видит.
Попробовал YCM вместо coc.nvim, все то же самое. Но теперь надо не compile_commands заполнить, а какой-то Пайтон-скрипт в корне проекта. Что туда писать я еще не разобрался.
>>2941827 Ты долбоеб. Мб посоветуешь какую-нибудь ОС, где не придется ебаться с какой-нибудь очередной херней? На винде? На линуксе? На бсд? Нет? Вот и иди нахуй, еблан.
>>2942426 >дебаггер, профайлер просто используешь отладочный вывод, как делают гугловские полубоги в проэкте "хром" а еще они исключения не используют пользуясь двухэтапной инициализацией лол бери пример с лидеров отрасли
>>2941963 Что бы мне эти 50 строчек какой хуйни должны сказать? Обычный код, который можно чуть править по мелочи вроде цикл на range-based заменить. Говнокода ты еще не видел блять, обычно это происходит когда диды сишники высирают что то либо какие нибудь вученые дата сатанисты
>>2942986 Плюсы используются либо очень компетентными людьми, которые давно в профессии и им похер на язык, те твой вопрос максимально дебильный, либо всякими заводчанами и кутешными обезьяньими формошлепами такие которые в МВП треде сидят. Первые уважаемые 700к господа в бигтехе, вторые макаки за соротыжку в нии хуи и прочем кале. Можешь благодарить, я сэкономил тебе жизнь, но не слишком сильно
>>2941862 Трассировщик лучей или традиционный софтвер-рендерер Интерпретатор языка Х Текстовый редактор Шахматы и змейки Клиент и сервер хуйни Эмулятор процессора MOS 6502
не знаю как сейчас, а во времена моей скуфской молодости народ годами надрачивал программирование просто потому, что пёрло, а не чтобы вкатиться. Естественно на момент вката там приличный уровень был, только вот под формат работы надо адаптироваться
просто со времён "войти в айти" понабежало куча народу левого, кому чисто за бабки. Пройти курс какой-нибудь, сделать задания, и типа потом наученный, можно работать.
Конечно тут совсем другой уровень будет, полное его отсутствие.
>>2942986 по сравнению с другими яп - нет, и, пожалуй, это будет лучший совет который можно дать человеку который находится на пороге выбра специализации карьеры
>>2942337 читаешь k&r, от корки до корки, обязательно делаешь упражнения, перечитываешь приложение А где дано формальное определение языка раза 3-4 потом уже можешь начать с++ изучать по другим книгам или онлайн-курсам, почему бы нет
>>2943406 >обязательно делаешь упражнения И сидишь полгода на вступлении, делая "небольшое" учебное упражнение. Бро, не будь идиотом, скипай эту хуйню нахуй. Практику на реальных петах наберешь, а не на этой юзлес консольке.
Сап, плюсач. Такой вопрос интересует - а насколько кресты будут актуальны в будущем?
Сейчас очень многие проекты делаются в веб на реактах, когда ничего устанавливать не нужно, и достаточно лишь браузера для запуска приложения. Причем, достигается и кроссплатформенность, ведь достаточно на компьютере иметь только броузер.
С другой стороны - тот же броузер/нода/система работает на плюсах. Совсем их не выкинут, конечно.
Сам я хочу байтоебить и делать квейкоподобные движки, и инструменты к ним.
>>2943512 >а насколько кресты будут актуальны в будущем? так же и будут, риалтаймовые как писали на с/с++ так и будут, ну раст еще может добавится со временем.
>>2943427 Для K&R есть книжка с решениями, в том числе в переводе. И есть https://clc-wiki.net/wiki/K&R2_solutions с решениями всех задач, часто предлагается несколько вариантов решения и обсуждение.
>И сидишь полгода на вступлении После Липпмана выдрочил всю K'n'R за неполных два месяца Не надо ни в коем случае на пол года впадать в заёбы на второстепенных вещах. Доопредеил задачу исходя из своего видения, пробуешь решить. Решил - сравни свое решение с интернетами. Не решается - попробуй нагуглить решение. Не гуглится - берешь и как можно более конкретно локализуешь, в чем именно состоит твое затруднение. Записываешь эту трудность себе в блокнотик и спокойно двигаешься дальше, ты уже молодец, что знаешь чего именно ты не знаешь.
С задачками по плюсам все еще хуже. Язык сложнее, решения в интернетах если и есть, только для малой части задачек и сомнительного качества. У того же Страуструпа вообще "правило приличия" такое, что задачи его хронически недоопределены. Нихуя вообще не понятно чё он хочет и куда он клонит. У Липпмана тоже много таких недоопределенных задач. Но у него кроме задач есть еще контрольные вопросы с ответами и упражнения для прояснения и закрепления пройденного материала. Это именно классический учебник. У Праты задачки простые. Но они и столь же бесполезны, сколь и просты.
>>2938659 (OP) Друзья, я студик, делаю лабу. Есть траблы в настройкой среды для проекта(использую visual studio code). Лаба находится на гите, я уже скопировал реп и создал доп ветку(помимо master). В лабе используют Cmake. Cmake я накатил в visual studio code. В репе есть cmake файлы. И вопрос, а как понять, мой проект собирается по cmake или нет? (я до этого никогда не работал с этим)
>>2944030 Не собирается, пишет, что отсутствует исполняемый файл(.exe). Я как понимаю это значит без cmake. еще выводит сообщение, что неизвестное обращение к winform.
>>2944808 Хорошей маркетинговой машиной и собственной сектой, очевидно же. Вот всю жизнь самые крутые, быстрые и сложные штуки делались на языке Х, а тут появился язык У и сразу же за пару лет "убил" язык Х. в голове душевнобольных
>>2944882 А что не говнящие? Ты можешь показать эти дидам как нужно делать. Я уверен, что они даже сами не против будут. Или у тебя горит, что кто-то ДЕЙСТВИТЕЛЬНО занимается серьезным трудом, а не тяп-ляп срет, а потом убегает в другое место?
>>2944982 >тяп-ляп срет, а потом убегает в другое место Есть слово "инфоцыган". Не уверен какое у него значение, но отлично подходит как раз для таких "кочевников информационных технологий", которые не сидят на месте, а прыгают с работы на работу как натуральные цыгане кочуют. И такие же хитрожопые мошенники разводящие на деньги, чтобы съебаться и развести еще кого-нибудь. И вот такую бродячую шваль реально пропагандируют как стиль жизни и успех. Ну не пиздец ли. Какое программирование может быть у таких отбросов? Лично видел, работает языком как боженька, треплет как медом в уши льёт, только руками нихуя не делает, получает огого-бабло за свой важный уверенный вид, чтобы съебать на другую работу через год. Вот кого я зову ифоцыган, бродяга айти.
>>2944808 ну в отдаленое будущее заглядывать бесполезно, но пока, к примеру, есть такая тенденция что яп должен проектироваться так что его компилятор/интерпетатор должен уметь или давать инструментальный доступ к собственным потрохам, к ast и прочему, что позволит уже на основе этого оче быстро запиливать ide, редакторы, отладчики, и кучу других утилит, в общем все окружение языка
>>2945140 >Зачем форсят раст? Важно не что, а кто. Используются линуксоиды, как и осталные современные маргиналы типа пидоров, как моб для продвижения любой повестки. Маргиналы же тупые и обиженные, а на обиженных как известно воду возят, заливают любое говно им в уши, а те и рады и бегут орут всем надоедают этой парашей.
А зачем, достаточно факта, что это высер гугла, без интернета не работает, привязан к стору барина, язык не имеет никакого отношения к нагенерируемому им реальному исполняемому коду, плюс он ебанутый как парадигма, неудобный для разработки чего-то сложного, код становится нечитаемым.
Да и вообще, самое простое правило, если что-либо форсят пугалками "уязвимостей", это сразу анальный зашквар гулага, ибо самая тупая и стандартная корпоративная методичка. Кто на этот сёр повелся, значит безмозглый дрон, либо холуй корпораций на зарплате.
>>2946280 Это называется мудрость - видеть общие черты у того что не названо одинаковым словом. Важны не слова, а суть вещей, настоящее положение дел, а на словах можно трепать что угодно, реальность от этого не меняется. Наоборот по тому что пиздят враньё видно кто чего добивается, где настоящий рак и говно. Очевидно, что "линукс сообщество" это обычный филиал "сообщества пидоров лгбт", та же самая группа обоссанцев, которыми помыкают большие дяди ради своих грязных целей - всё хорошее загадить и разрушить, ведь в этом и состоит вся современная большая политика.
Таким образом, по тому что кукарекают любые современные маргиналы, прекрасно видно что на самом деле хорошее и нужное - то, против чего они выступают, и соответственно, за что они выступают это говно.
>>2947216 Все верно, зачем что то добавлять, когда можно несколько тысяч человеко часов положить чтобы сделать аналог, который возможно будет ещё и хуже
Зато не будет проблем, точнее они будут, просто решать их придется вам, а это ещё работка, а работка это зепешка
Пацаны, а есть адекватный туториал по QML? Мне тут в треде, да и на собесах эту технологию рекламировали, а адекватных руководств, как и 5 лет назад, найти не могу. То, что Qt-шники на сайте предлагают, хуйня хуйнёй.
Может кто знает, где можно адекватно пошагово поучиться?
Если кто-то попал на унылый скучный проэкт, можно пролоббировать создание своих библиотек якобы под этот проэкт, тем самым заняться тем, что интересно тебе. Плюс строчка в твоем резюме, что ты создатель библиотек, а не только ковырятель вилкой унылых типовых проэктов.
>>2947216 В том что в реальном мире - тебе не одна маленькая хуевинка нужна. Ну, типа с моей колокольни заводского. Нужны библиотеки вендора для работы с переферией, драйверы, эссДэКа. Далее - есть всякая промежуточная фигня от крупных игроков рынка, которые какой-нибудь DLMS просят или Zigbee или еще что-нибудь, а клиент еще хочет SNMP, MQTT и чтобы скада могла по Modbus опрашивать, а сбоку еще - для РФ сидят ФСБ и просят свои зонды встроить, чтобы БЕЗОПАСНО))) и прямо говорят, что вот есть два-три конкретных сертифицированных хуя, они за мульт-два-сто вам библиотеку дадут, если мы это библиотеку не увидим, ваш продукт сертификацию не пройдет. Ну так вот. Нет ресурсов чтобы все это добро разрабатывать, поддерживать, выяснять, что где оно там сломалось. А срок разработки обычный - месяц на версию, ведь менеджеры узнали слова Аджайл и Скрам, и типа - если мы назовем месяц разработки спринтом, но все остальное - как было по ватерфолу, так и осталось, с жесткими сроками, при этом отсутствием сбора требований и ТЗ - то можно ебать мозги, и при этом наваливать говна всякого каждый месяц. А на заводе, обычно - один человек - один проект. Вот и думай. Каким фигом ты за месяц все это изучешь, вникнешь и реализуешь.
>>2941431 >Не могу найти годный вариант чтоб взять файлы из папки и шибануть одним архивом в другую директорию. Напиши свой простенький псевдоархиватор (без сжатия офк, просто склеивай файлы в один).
>>2947216 Реализация регулярных выражений в несколько десятков строк - то-то я думаю, чего это ПёС-студио так тормозит? Им и невдомёк, что в нормальных либах регулярки векторизованы и тщательно оптимизированы.
>>2947316 Именно про регэкспы меня больше смущает, чем ему STL std:: не понравилось.
>чего это ПёС-студио так тормозит? Ну она концептуально задумана для работы в фоновом режиме. Прям вот тормозов от нее я не замечал даже на древнем amd процессоре. Правда я и больших проектов никогда за сиську не трогал.
>>2947227 Обосрался с инжалид дриже. У меня был перевод x-com 3. Большая часть текста была как-то переведена, но с кнопками был мрак. Up и Down почему-то выглядели как Ур и Дошп.
>>2947354 Старая добрая замена букв, так в 90-е переводили все консольные игры. Играл в одну рпг с кучей текста который был не переведен, а буквы все заменили на русские, так и читал вычислив и выучив замены, вполне бегло между прочим.
>>2947307 >В мире плюсов кутовая дока самая ахуенная Дока по самому Qt терпимая. Говно, но в целом пользоваться можно. Дока по QML же просто дерьмище. Точнее, может она и заебись, как справочник для тех кто шарит. А вот для вкатунов кал говна.
>>2948049 Qt это фреймворк. QML это язычок, придуманный Qt-шниками. Я, клепая 5+ лет говнософт на Qt/C++, нихуя в эту QML-парашу без мануала въехать не могу.
>>2946284 Я предположу что это из шарпов. Когда у тебя допустим есть класс. Он - например, в стандартной библиотеке. Допустим, тебе часто надо кодировать-раскодировать строки. Ты хочешь что-то в духе var encryptedString = "Hello World".encrypt("AES256", key) В шарпе - ты можешь сделать метод расширения, который добавит такой метод и ты сможешь вызывать его в своем коде, без необходимости делать новый класс/прокси/адаптер/любая другая ООП херня. При этом - это выглядит для пользователя, будто это все тот же няшный класс, просто с новыми методами. Доступа к приватной фигне - нету, так что просто так сломать что-то не получится.
В шарпах - удобная фича, потому что позволяет допустим сделать простой интерфейс, а потом расширениями - нафигачить в него всякого разного полезного. Ну или более простой пример. У тебя есть перечисление, которое в шарпах - число простое. Ты хочешь красиво выводить в консоль значение этого перечисления. Ты можешь конечно сделать logger.Message(Utils.ToNiceString(myEnumValue)), но ведь красивше выглядит так: logger.Message(myEnumValue.ToNiceString())
>>2948068 >Чё там вкатываться? Непонятно, как корректно сделать "бекенд" на Qt/C++ и наладить взаимодействие с "фронтендом" на QML. Типа как передача и объявление структур данных должны выглядеть, как проект вообще выглядит и прочая хуета. Базовая, замечу, хуета. Открываешь мануал с сайта, там нихуя этого нет. При этом этот мануал носит гордое название пикрелейтед. >>2948076 >и так же всобачено в доку qt Ога. Только из этой доки хуй проссышь, как этим пользоваться. Как на Qt или QtWidgets говнокодить разберётся даже даун. В отличие от.
>>2948105 Вообще-то это рак, обфусцирующий левые функции под методы класса. "Красиво" такое выглядит только для дацна. Суть, такой же рак как переопределение операторов - хуета вводящая в заблуждение.
Сап двач. У меня есть файл Module1.bas, в нём макрос Sub Макрос1(). Могу ли я его как-то применить в моей функции, используя библиотеку Interop.Microsoft.Office.Interop.Excel.1.9? Файл с макросом лежит в переменной macrosPath. Функция:
void ProjectPracticeDLL::ExcelWork::OutputInExcel(int mas, int numbers, int n, String^ macrosPath) { auto XL = gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
XL->Visible = true;
Object^ t = Type::Missing;
auto Workbook = XL->Workbooks->Add(t);
String^ str; XL->Cells[1, 1] = "Ответы:";
for (int i = 0; i < n; i++) { XL->Cells[2, i + 1] = String::Format("{0:f0}", numbers); XL->Cells[3, i + 1] = String::Format("{0:f0}", mas); }
Вот у меня есть интерфейс вида: IEnumerable<T> у которого есть единственный метод - GetEnumerator, возвращающий IEnumerator<T>
У тебя есть здоровенная библиотека всяких коллекций, которые имплементируют этот интерфейс. Ты хочешь иметь возможность разные IEnumerable<T> приводить к конкретной коллекции.
Что будем делать в случае с методами расширения? У нас есть хешсет? Деламе метод расширения ToHashSet<T>(this IEnumerable<T> self);
У нас появился иммутабельный массив ToImmutableArray<T>(this IEnumerable<T> self);
У нас появился словарь Dictionart<TKet, TVal >ToDictionary<T, TKey, TVal>(this IEnumerable<T> self, Func<T, TKey> keySelector, Func<T, TVal> valSelector);
И мы получили это поведение разом для ВСЕХ кто имплементирует интерфейс. Нам не нужно постоянно лазить и расширять интерфейс, классы, которые его имплементируют - нам трогать не нужно.
Что надо будет делать в случае если такого механизма нет? А мы базовый класс должны будем раздуть до неебических масштабов и каждый раз лезть в него, чтобы добавить приведение к новой коллекции. Либо делать кучу ненужных утилитарных методов/классов, которые это делают.
И в заблуждение оно никакое не вводит. В мире шарпов - используется повсеместно. Никто не жалуется. Тем более, что чтобы использовать эти методы расширения - ты должен явно использовать неймспейс в котором они определены. Зато это позволяет расширить поведение тех типов, к которым у тебя нет доступа, позволяет не раздувать интерфейс без надобности.
>>2938659 (OP) куда берут в РФ по С++? планирую игру сделать в будущем. или помогать в разработке. поэтому и вкатываюсь. будущее С# слишком туманным показалось. и кроме работы как в Озоне перспектив не увидел.
>>2948529 удивляет то насколько самоуверенно он это заявляет в том время как в крестах есть три фундаментальные семантики на основе которых строятся важнейшие идиомы и языковые конструкции, а именно пара конструктор-деструктор, шаблоны, и возможность переопределения операторов (включая и форму placement new в том числе)
>>2949075 На завод, лол. Прошивки писать, всякое ПО для микроконтроллеров и прочие очень интересные вещи. ЗП - 30к со старта, с перспективой до 90к-120к подняться через 5 лет.
Есть вопрос по юниттестам приложений на плюсах, хочу убедиться в верности своих выводов и решений.
Допустим я пишу приложения следующих видов: - Консольное приложение, которому задаешь команды и оно что-то делает, например совершает преобразование текстовых файлов - GUI приложение, в котором есть какое-то основное окно, внутри которого все рисуется - Сервис демон, который работает в фоновом режиме и что-то пишет в лог
Я хотел написать тесты для некоторых функций в этих программах, но столкнулся с некими проблемами. В динамических языках с системами импорта (Python, TypeScript) я могу напрямую импортировать нужную мне функцию и написать на нее тест. На плюсах мне доступны только инклуды, модули из C++20 пока не рассматриваю. То есть получается, что я должен структурировать свой код таким образом, чтобы основное ядро системы можно было собрать как библиотеку, которую потом уже подключать к коду, в котором есть входная точка?
И получается, что в крупном проекте мы напрямую не линкуем все в один исполняемый файл, а создаем множество библиотек, которые уже потом линкуем с исполняемым файлом, так? Я пока только в таком ключе вижу возможность тестирования.
Но это все хорошо, если более-менее изолированно можно тестировать. А как принято писать интеграционные и e2e тесты на плюсах?
>>2949579 > основное ядро системы можно было собрать как библиотеку, которую потом уже подключать к коду, в котором есть входная точка? Обычно так и делают Основную логику приложения в отдельную либу
>>2949579 Разве тесты используют в приложениях? Я думал это для тырпрайз дрисни разрабатываемой одновременно десятками людей, а значит там архитектура для каждого разработчика изолированный самодостаточный кусочек, естественно между которыми какие-то интерфейсы, вот на них и навешивают тесты. А приложение это одна цельная лапша, какие тесты. Ну городи модули имитируя тырпрайз в одно рыло.
пиздец какой то. проспал 14 часов. погода ебет ужасно. >>2949227 >Дык куча геймдева, куча мелких производств на каждом углу, но том Qt нужен. каво. я про Смуту только слышал. никаких мелких компаний впомине не видел. но если судить по вакам с HH
>Бигтех: Яндекс, Авито, ВК. ну норм наверн. только ничем кроме авито не пользуюсь раз в полгода... >>2949258 >яндекс - голланская компания и никакого отношения к россии не имеет уф. но все ранво ведь у нас широкое распространение имеет? >>2949285 >На завод, лол. Прошивки писать, всякое ПО для микроконтроллеров и прочие очень интересные вещи хз. не питал никогда к таким вещам теплотой... такое подойдет заядлым техникам или нердам, которых последних по пальцам пересчитать. >>2949477 >Не важно, имеет отношение или нет, важно что есть вакансии и офисы внутри России. >Геймдев: удалёнке, инди. Но это не для вкатуна варианты. а где тогда опыт получать? у меня нет возможности пока даже в миллионник переехать из Мухосрани на 500к (похуй что столько народу всего, вокруг одна ДЕРЕВНЯ блять, городских от силы 200к может наберется а и то меньше; город в топе по бедности состоит.)
Сильно ли обращение по указателям бьет по производительности? Есть ли разница между обращением к массиву std string и к массиву указателей на std string?
>>2950059 >Сильно ли обращение по указателям бьет по производительности? Может быть в сотни раз медленнее, если массив большой. Потому что кэш любит последовательный доступ к памяти.
>>2951868 разумеется в данном случае 2 уровня оптимизации по скорости для написания производительных программ: первое это минимизировать количество системных вызовов, ведь они ведут к переключению контекста, в случае си это проще понять, тк достаточно легко выяснить какие функции стандартной библиотеки используют системные вызовы а уже второе это думать о оптимизации доступа к памяти в том числе и заменяя рандомизированный доступ на последовательный первое может быть значительно больше влиять на общую производительность чем второе, разница может достигать двух порядков ну и тут не стоит забывать про пограничный случай, так как вообще то фии выделения памяти malloc и new вообще то тоже содержат системные вызовы и приводят к переключению контекста, и поэтому основной оптимизационный прием это выделять память некими чанками, в с++ зачастую для этого используется форма placement new
>>2953175 >так как вообще то фии выделения памяти malloc и new вообще то тоже содержат системные вызовы вернее, могут приводить к системным вызовам, насколько часто это происходит и в каких случаях будет зависеть от собственно реализации malloc и new по этой причине было одно время было популярно писать собственные менеджеры динамической памяти типа tcmalloc и подобные
>>2953175 тут еще наверное стоит уточнить, что процесс переключения контекста в системных вызовах, который приводил к переходу с user-space на kernel-space был неплохо оптимизирован в том смысле что зачастую не приводил к сбросу tlb что значительно ускоряло все это дело но насколько я помню и если не ошибаюсь (я не спец по безопасности, либо по написанию сверх-быстрого кода) чтобы закрыть уязвимость meltdown как раз и выключили эту оптимизацию лол
>>2953189 не соглашусь все же достаточно редко принимается решение о замене стандартного менеджера динамической памяти, подавляющее большинство пользуются стандартным который поставляется с компилятором и не паряться
>>2953792 >Все растопидоры такие пидоры? Да, почти во всех тестах РАСТ VS ЯЗЫК НЕЙМ будет специально подбираться задача, где стандартная реализация хуйни_нейм у раста будет эффективней, либо же прямо во время тестов под смешными предлогами могут поменять структуру данных и сказать что-то в духе "Да это не сильно повлияет на результат. Просто так нужно сделать". Например, видел тест, где сравнивали структру данных из стандартной библиотеки плюсов и структуру данных из левой библиотеке на расте. Ну а хули, на плюсах нельзя же библиотеки писать. А на комменты под видосом от адекватов, которые заметили наеб, сразу налетают сектопетухи и начинают спамить по методичке.
>>2953189 >Любой проект сложнее хелоуварда использует аллокатор/пул памяти. Только если тебе нужно больше 1М аллокаций в секунду. Такое не так часто бывает. Тот же Qt, где почти все классы с pimpl, вполне тянул таблицы с тысячами строк даже во времена четвертого пентиума и атлона хр.
>>2953792 >Все растопидоры такие пидоры? У них же это в Code of Conduct прямо написано "язык для пидорасов". Плюс там 90% коммьюнити трансы и всякие небинарные снежинки.
>>2941963 Ха. Наверное я долго на C# пишу, но на твоём скриншоте какой-то пиздец.
Не, на плюсах у меня тоже иногда такой говнокод получался, но не часто и не везде. Всё же STL нужно использовать с умом, а не по правилу "когда у тебя есть молоток, то всё вокруг кажется гвоздём".
Есть операции записи и чтения в переменную. Еще есть условия и циклы. Нужно вывести неиспользуемые записи. То есть если есть y=3 y=4 То надо вывести, что y=3 не используется. Была идея просто граф сделать и найти такие вершины записи из которых нет путей в чтение. while и if дают цикл и ветвление соответственно. Но меня просят с помощью ДКА решить. Есть идеи, а то я что то не врубаюсь
>>2954825 ну бля, челик это хорошее задание на кодинг, скорей всего ты учишься в хорошем вузе раз вам дают такие задачки на лабы ну нахуя ты себе сам жизнь портишь? ты забивай на непрофильные предметы, но все что относится к кодингу делай сам, набивай руку бля особенно алгоритмы
>>2956171 Я не забиваю. Есть простое решение за квадрат, но без дка. И во-первых, я очень сомневаюсь, что быстрее нельзя, а во-вторых, быстрее не придумал. И с ДКА тоже не придумал пока.
Я опытный прогроммист на компилируемых языках с рантаймами типа JVM, писал маленькие программки на C, патчил большие программки на C/Rust/Zig. В целом я довольно неплохо понимаю как устроен компьютер, как работают компиляторы, как устроены рантаймы.
Собственно вопросы:
1. Как научиться писать на последних плюсах не перепроходя кучи базовых вещей? 2. Какой у вас там есть простой тулинг для сборки и управления зависимостями? По уровню тупизны желательно как package.json в жаваскриптах. Я умею в GNUMake и Nix профессионально, но сложные проекты всё равно обростают CMake-ом, который я искренне ненавижу. Слышал были какие-то удобные тулы, но не помню названий (Conan или ninja или meson или как их там) 3. Какой тулинг для сборки предложите? Что-то тупое типа ctags/lsp и линтеров меня устроит. Я видел что есть 1000 и 1 анализатор для UB и прочей хуеты. Это на начинающем уровне вообще нужно изучать? 4. Хочу писать под юникс. gcc или cmake? или ещё какой-то есть?
Не знаю на счёт ДКА, но в компиляторах Dead Code находится построением графа. Либо control flow, либо data flow графа. Я недавно писал Sea Of Nodes, и там такое находилось довольно просто прям после построения графа
Тебе же тут будет достаточно во время построения data flow графа связывать те переменные, которые взаимодействуют (то есть в коде `x = f(y, z)` будет связь `x -> y` и `x -> z`. И вот ты до return построй и потом от каждого return иди и помечай в графе в каких вершинах побывал. Те, которые не пометил, это и есть Dead Code
>>2956282 >Этой "либе"(апи) 300 лет в обед, она и без плюсов существует, существовала и будет существовать. Да, это тонкий момент)) Две недели тред висит, а никто не обратил внимания))) Не так уж много образованных в наше время)))
>>2956286 Так это относительно простая таска. У тебя какие части компилятора готовы? AST уже умеешь собирать? Язык сам какой, мутабельный и процедурный, да, типа C?
>>2956302 AST не сложно собрать. Я дерево разбора построил, теперь надо просто аккуратно куски лишние убрать, да покрутить. Язык процедурный, мутабельный. Программа это список стейтментов, стейтмент это либо 1) переменная = выражение 2) if <выражение> <список стейтментов> end 3l <выражение> <список стейтментов> end 4) выражение это числа, переменные и арифметика
>>2956303 Выше написали же, переведи в SSA, и дальше раскрашивай граф. Обычные dead code elimination/global value numbering. От тебя видимо требуют ну оптимизацию вообще, по книжке, а какую-то узко специальную задачу, если нужны именно конечные автоматы.
>>2956217 > Сап плюсач, хочу вкатиться в вашу хуйню.
> Я опытный прогроммист на компилируемых языках с рантаймами типа JVM, писал маленькие программки на C, патчил большие программки на C/Rust/Zig. В целом я довольно неплохо понимаю как устроен компьютер, как работают компиляторы, как устроены рантаймы. Круто. Тебе или в две конторы писать компиляторы, или перекладывать протобуфы в бигтех. > Собственно вопросы:
> 1. Как научиться писать на последних плюсах не перепроходя кучи базовых вещей? Книга модерн спп. > 2. Какой у вас там есть простой тулинг для сборки и управления зависимостями? По уровню тупизны желательно как package.json в жаваскриптах. Я умею в GNUMake и Nix профессионально, но сложные проекты всё равно обростают CMake-ом, который я искренне ненавижу. Слышал были какие-то удобные тулы, но не помню названий (Conan или ninja или meson или как их там) В открытом доступе таких нет. Все что есть - кал. > 3. Какой тулинг для сборки предложите? Что-то тупое типа ctags/lsp и линтеров меня устроит. Я видел что есть 1000 и 1 анализатор для UB и прочей хуеты. Это на начинающем уровне вообще нужно изучать? Все что есть кал. > 4. Хочу писать под юникс. gcc или cmake? или ещё какой-то есть? Оба хороши. Но мне гцц больше нравится, в нем я реже сталкивался с хуйней по типу "бля мы реализовали эту часть стандарта но на 10%, галочку воткнули"
>>2956351 Ты класс в цпп обьявлять будешь? Если тебе обычная функция нужна, то конечно делай ее только в сорсах, а если конкретно метод класса, то приват это то что нужно
>>2956497 Не будет лишней функции которая не имеет отношения к логике класса, если речь про какие то специфичные. Например надо проверить, что число простое
>>2956209 План был такой что люди будут писать более хороший неломающийся от опечаток код. Но это всегда бьет по гибкости, ведь когда когда человек пишет какое то апи на плюсах он никогда не представляет что тебе понадобится от его либы
>>2956899 Все проще, даже чем вы описали. Я нашел в книге live-variable analyzis. Даже SSA не нужно. Просто найти по этому алгоритму live-variables, затем пройтись по всем assignmentам и пометить лишними те, для которых переменная не принадлежит live множеству
>>2957098 Ну точнее посмотреть на live множества всех потомков после assignmnt, и если там нет нашей определяемой переменной, то присваивание лишнее. Звучить просто
Да, и это нужно в SSA форме делать. Live анализ для кода ``` y = 3; y = 4; return f(y); ``` Скажет что `y` live. И вот потом сиди и думай какой собственно из двух имелся в виду. Поэтому чтобы их отличать ты и делаешь SSA. Причём для твоей задачи даже полностью SSA форму делать не нужно (например ФИ тебе нахуй не нужен)
Ну и да, Live analysis это обход data flow graph, который я выше буквально по пунктам тебе описал.
А вот более качественный Dead Code elimination делается сложнее, дорогой друг. Там надо качественно ебаться и с анализом CFG, чтобы находить ветки, в которые код никогда не попадёт, и всё такое.
>>2957163 Не, конечно можно строить DFG не поверх SSA формы, но собственно говоря удобнее всё-таки поверх SSA формы, чтобы дальше ещё оптимизировать. И в любом случае, построение DFG эквивалентно построению SSA формы, просто после DFG нужно ещё обойти граф поиском в глубину и номер версии для каждой переменной проставить.
>>2957163 >Да, и это нужно в SSA форме делать. Live анализ для кода >``` >y = 3; >y = 4; >return f(y); >``` >Скажет что `y` live. И вот потом сиди и думай какой собственно из двух имелся в виду. Поэтому чтобы их отличать ты и делаешь SSA. Причём для твоей задачи даже полностью SSA форму делать не нужно (например ФИ тебе нахуй не нужен)
Так я просто пройдусь по присваиваниям y = 3; live: \empty y = 4; live: \empty return f(y); live: y
На первой строчке я смотрю на live из второй, вижу пусто -> y из этой строчки зря определился. На второй строчке я посмотрю на live из третьей, увижу y и пойму, что эта строчка нужна.
> А вот более качественный Dead Code elimination делается сложнее, дорогой друг. Там надо качественно ебаться и с анализом CFG, чтобы находить ветки, в которые код никогда не попадёт, и всё такое. Пока не надо, поэтому усложнять не буду
>>2958337 Объясни в чем я не прав? Когда компилятор компилирует от ищет определения по всем cpp. Если у нас инклуд в разные cpp инклудится, то в разных cpp будут определения одной и той же функции
>>2958342 > Когда компилятор компилирует от ищет определения по всем cpp. Когда компилятор работает над текущей единицей трансляции, ничего вне ее он не ищет.
Я правильно помню, что когда я определяю явно конструктор, то конструктор по умолчанию отрубается, но по прежнему генерируются все остальные? И когда применять правило пяти? Если я хочу оставить конструктор по умолчанию, но еще добавить один, то правило пяти надо применять?
>>2958601 >когда применять правило пяти? Когда класс зохватывает память или любой другой ресурс. Если тебя не устраивает, например, поведение оператора присваивания по-умолчанию, то скорее всего и все остальное из "большой пятерки" нужно делать вручную.
>>2956217 >4. Хочу писать под юникс. gcc или cmake? или ещё какой-то есть? >gcc или cmake Это вообще ортогональные вещи, никак не связанные друг с другом.
Есть файл Tables.cpp: const int16 Glyphs[] { ... }
Есть второй файл Globals.h, который объявляет на весь проект: extern const int16 Glyphs[]
Есть звездочка.cpp файлы, который использует этот массив. Как так переписать Tables.cpp или Globals.h чтобы не указывать размер массива каждый раз при добавлении удалении элементов (на стадии компиляции), но везде в других местах можно было бы узнать его размер не прибегая к перебору.
>>2962062 Там все на уровне драйверов, какого-то особого API нет, может внутренняя прослойка есть, но ее снаружи не видно. В GDI наверняка куча окаменелостей со времен S3 Trio, когда только начали 2D ускорение в видюшки добавлять. OpenGL всегда на дровах от видюшки, или чисто софтовый 1.0 от opengl.dll, если дров не найдено. Что конкретно тебе надо?
>>2962496 Если я правильно понял объявление его как extern bla bla bla [] производит стирание типа, размер массива становится неизвестным использующему ЭТО коду.
Мне сказали что в С++ есть всё! Как исправить чтобы удобно было?
>>2962516 > Что конкретно тебе надо? Я просто хочу разобраться... > OpenGL всегда на дровах от видюшки Но дрова-то разные, значит есть какое-то API? или как это вообще работает?
>>2962486 блять, просто заведи константу в h-файле, типа const size_t GLYPH_SIZE и используй её и в определении массива и везде, если работаешь с дефолтными сишными массивами.
Вот щас раст на хайпе и из каждого утюга визжат, что он плюсы ставит раком по безопасности. Насколько это правда? Есть ли на плюсах какая нить современная хуета, которая не позволяет выстрелить себе в башку?
>>2963915 > Есть ли на плюсах какая нить современная хуета, которая не позволяет выстрелить себе в башку? Аналога борроу чекера нет Есть кор гайдлайны на них всем похуй Есть статические анализаторы кода Есть динамические проверки
Добрый день работяги! Важный вопрос имеется! вот есть определенный класс: template <int n = 1> class kek{}
я хочу создать структуру struct LOL{ kek<> qwe;}
чтобы потом её создавать с произвольными шаблонными классами. Вот только не могу понять, как мне в kek<> задать так, чтобы было не определённое число, а все ещё произвольный int.
Единственное до чего я додумался, так это определить шаблом у структуры как template<int N> struct LOL{ kek<N> qwe;} но затем бьюсь об то, что мне нужно эти структуры хранить с векторе, а они не лезут.
>>2963915 да этого говнеца всегда было полно в крестах и сишке, другое дело что все это развивается и те средства которые были доступны 30 лет назад теперь заменены на более современные аналоги статистические анализаторы (те на этапе компиляции или перед ней) санитайзеры (на этапе выполнения) + фаззинг
Почему функция протокает из неймспейса? Те ее почему-то можно без неймспейса использовать, хотя нужный структуры, обтявленные там же рядом, этот неймспейс требуют.
>>2965822 >не юзается ни pow ни fact Они вычисляются из значений, накопленных на предыдущих шагах основного цикла > delimoe=xx; > delitel=(n(n-1)); > term = term * delimoe / delitel;
Что вобщем-то вполне благоразумно, ибо зачем на ровном месте добавлять n^1 к сложности алгоритма.
Программисты микроконтроллеров, имеет ли смысл для сборки под AVR использовать CMake или это будет считать извращением и проще написать Makefile и рядом положить, нашел вот такой пример на github, отпишите если есть подводные и как лучше сделать, спасибо.
>>2966913 ето так, ты прав но новое поколение теперь юзает cmake почти всегда, даже если у проэкта по сути одна платформа что с этим сделать непонятно, мы к этому пришли
>>2966880 Лучше cmake, в нем удобнее делать проекты, где есть разделение кода на либы, экзешники, можно использовать разный тулчейн для разных экзешников, и т.д. Т.е. сначала ты думаешь, что будешь просто светодиодиком моргать, но потом оказывается, что какой-то код удобно не на контроллере тестить, а на десктопе, и ты выносишь его в либу с тестовой прогой под десктоп, проект пухнет, и простой мейк перестается с этим всем справляться.
Программа С++ по строкамСтудент18/12/23 Пнд 07:39:45#358№2967947
Привет, помоги пожалуйста с задачей по с++ по строкам. Задача по программированию. тема строки. С++
Дана строка. Словом, текста считается любая последовательность букв русского алфавита; между соседними словами - не менее одного пробела, за последним словом – точка. Найти и сохранить в строке те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству: в слове гласные буквы чередуются с согласными. Все остальные слова удалить.
Примерный код программы(Но он выполняет условие не до конца):
for (const std::string& validWord : words) { if (validWord != lastWord) { std::cout « validWord « " "; } }
std::cout « std::endl;
return 0; } Помогите пожалуйста с решением. Для примера, что я ввожу: адам ева udfsy яблоко бог ева. Программа выводит: адам яблоко бог А должна выводить: адам бог ева.
>>2967947 Перечитал условие. Если понял его правильно, то подразумевается, что надо найти все "слова", отличные от последнего слова в исходной строке удовлетворяющие тому условию. Тогда все равно результат должен отличаться и быть: адам бог
class Mesh { char memory_block; vec3 positions; int* indicies; };
Что я хочу сделать: - в memory_block = allocate ( pos_size + ind_size) - positions = memory_block - indicies = memory_block + pos_size
Вобщем мне нужно выделить память под две штуки, но я не хочу делать две аллокация, а просто сразу всё в один кусок запихнуть
Как такой класс Mesh написать используя современный с++, а не си с классами
начинаю понемногу с си пересаживаться на плюсы, и с казалось бы такой простой проблемой с памятью не могу разобраться, везде пишут что си с классами это пиздец говнокод, а я по другому даже хзы как сделать нормально
>>2968966 1) Класс сам для себя и выделяет единый, непрерывный кусок памяти и все свое нутро туда укладывает. Не путай инициализацию с выделением памяти (aka allocation).
2) >мне нужно выделить память Это в любом случае не задача такого класса, как Mesh. Меши отдельно, менеджеры памяти отдельно.
>>2969089 > Не путай инициализацию с выделением памяти (aka allocation). Да я и не путал, я говорил про аллокацию которая будет где то в конструкторе меша
> Это в любом случае не задача такого класса, как Mesh. Меши отдельно, менеджеры памяти отдельно. Менеджер памяти это аллокатор?
Какое я решение пока что нашел: - position и indicies засунул в std::span - мемори блок спрятал от юзера - в конструктор прокидываю pmr аллокатор которого и прошу сразу большой кусок памяти выделить - за выравниванием слежу ручками сам - потом ручками вычисляю где должны находится поинтеры и инициализирую ими std::span'ы
>>2969552 По умолчанию задал В шаблон пихать не хочу, потому что меши будут разными типами, если разный аллокатор И я их все в условный вектор запихнуть не смогу
>>2968966 фигней занимаешься в с++ есть "встроенный" менеджер динамической памяти (вернее предоставляемый его рантаймом), вызываемый через глобальный оператор new если ты хочешь изменить его поведение для конкретного класса то существует возможность перегрузки этого оператора для написания классов-контейнеров, реализующих некие структуры данных, очень удобна еще одна возможность языка - а именно особая форма оператора new - placement new, позволяющая отделить механизм управления памятью контейнера от конкретного алгоритма реализующего структуру данных НО последние 2 возможности тебе нахуй сейчас не нужны, и вполне возможно даже и не понадобятся никогда, даже если ты будешь писать производительный код, и вообще знают про них только некоторые лошары-задроты
Впервые столкнулся с чем-то подобным. Можете разжевать для нуба. Пик1. Почему переменная sum, после выполнения цикла while поменяла значение? Заметил, что это происходит после считывания определённой строки из инпута (справа). Могу предположить, что это связано с передачей sum в функцию checkNearby (она передаётся по ссылке). Опять же, это всего лишь мои догадки. Пик2. Почему комментирование массива visited вызывает Segmetnation fault? Массив при этом вообще нигде не используется. Использую если что VS Code + gcc. До этого сидел на студии и таких приколов ни разу не было
>>2969701 >Почему переменная sum, после выполнения цикла while поменяла значение? Потому что ты вылез за память на стеке выделенную для input и насрал в память переменных k, sum и visited. >Почему комментирование массива visited вызывает Segmetnation fault? Предположу, что если раньше ты срал в стэк до visited, то теперь ты срёшь в стек до line включительно, портя структуру самой строки line. Скорее всего в какой-то момент ты срёшь в указатель на внутренний c_str(), отчего у тебя он начинает смотреть на незамапленную память и page fault --- 1. Проверяй i не на line.size(), а на min(line.size(), n). И в цикле while тоде выходи после n итераций. 2. Сделай лучше input вектором строк, например.
"Очень хочется классику! Таких книг больше нет! Распечатайте пожалуйста! Может можно под заказ оформить?"
"Интересно организованный самоучитель. Обычно такого рода книги начинаются с разъяснения синтаксиса языка, типов данных и т.д. Здесь же автор берет быка за рога и начинает сразу с объектно-ориентированного программирования в c++. Подробно изучаются классы, массивы, указатели, ссылки, перегрузка функций и операторов, наследование. Отдельные главы посвящены вводу-выводу, виртуальным функциям, шаблон, обработке исключительных ситуаций, приведению типов, пространству имен, библеотеке стандартных шаблонов. Есть упражнения. Уровень "полупрофи"."
>Не стоит привыкать к практикам, которые были в ходу до 11 стандарта А что там за практики такие были, что их надо избегать? В шапке треда большинство рекомендованных книг изданы до 2011 года. Шилдт там тоже кстати есть, только не 2000 года, а 2010.
>>2970744 да не читай советы всяких ламеров с двача, ты бы сначал просто научился хотя бы hello world-ы писать а потом уже о чем-то говорил. тебе С++ учить сейчас как раком для китая, если хочешь реально чему-то научиться сначал надо разобраться с Си, а потом может быть если тебе программировать понравится пойдешь и начнешь изучать плюсы.
>>2970766 >сначал надо разобраться с Си Половина людей советует сначала разобраться с C, другая половина говорит, что это только помешает вкату в плюсы.
Короче, если ты хочешь реально что-то знать, когда ты учишь Си ты должен понимать то как в принципе устроены некоторые моменты аж на уровне железа и ОС.
С++ берет все то что имеет Си и утилизирует это, добавляя сверху синтаксис и семантику, которая в итоге позволяет тебе писать код так чтобы он был близок к коду на чистом Си по производительности, но при этом, тебе не приходилось например работать напрямую с указателями.
Но указатели это чистый Си и ты их в С++ понять не сможешь если не разберешься сначал с Си. Понимаешь в чем проблема?
>>2968966 Так тебе надо просто написать конструктор который будет сам это за тебя делать и да тебе придется дважды обратиться к аллокатору если ты захочешь выделить память под объект. Сначал под класс Mesh, а потом в его конструкторе под indices.
>>2968966 Уточню на всякий случай что имею ввиду, что positions у тебя является вектором скорее всего из трех float поэтому тебе не надо выделять под него память, а можно использовать память со стека, поэтому я и говорю что сначала придется выделить под объект Mesh память, причем не важно со стека или с хипа.
>>2970906 Ну да, ну могу потом мемори блок вобще не хранить, просто храню чтобы потом память под ним подтереть удобно А то вдруг я когда нибудь захочу местами память под positions и indices поменять местами, то не придется код переделывать и думать не сломаю ли я что нибудь этим
>>2970919 Почему ты думаешь, что аллокация - такая пиздец дорогая штука? Проще же сделать тупо два вектора, и потом, если оно именно из-за этой лишней аллокации тормозить будет, оптимизировать. Ты эти меши не на каждом кадре создаешь же, а хорошо если один раз в несколько минут. И создаешь их не миллионами, а максимум сотнями. Т.е. экономишь меньше миллисекунды, а геммороя получаешь вагон.
Плюсовики к вам вопросик Пилю тензорную либу Мне нужно чтоб можно было инициализировать тензор при помощи многомерного массива, типа такого: Tensor<int> t({3, 3}, {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} ); Так как у меня тензор хранит все данные в одномерном массиве, то нужно входной многомерный массив вытянуть в одномерный Вопрос как сделать произвольную вложенность этих самых std::initializer_list, какая сигнатура будет у такой функции ПОдозреваю, что через параметры шаблона, но все равно не ебу
>>2970890 не еби себе мозги просто сделай класс меш, в нем вектор позиций, и вектор индексов и скорей всего этот самый примитивный вариант удовлетворит тебя по быстродействию
>>2971111 > а геммороя получаешь вагон Ну вот когда на сишечке это же писал, потратил минут 5 всего, да и в плюсах такая штука не долго пишется, если бы я сразу знал что делать Это больше учебный пример, просто хочу разобраться как с памятью правильно работать
>>2971143 В плюсах правильно с памятью НЕ РАБОТАТЬ. За тебя все делают аллокаторы. Даже new и delete - в современных плюсах этого быть не должно, только обертки над указателями.
>>2971197 > В плюсах правильно с памятью НЕ РАБОТАТЬ. Мне нужен системный язык, если в дизайне языке предполагается что работа с памятью должно быть болью, тогда у меня вопросы нахуя он такой нужен?
>>2971128 >принять и обработать std::vector произвольной вложенности Лень обдумывать в подробностях, но я примерно так чувствую, что в языке нет для этого средств.
>чтоб можно было инициализировать тензор Я бы на твоем месте не выпендривался, а посмотрел бы документацию к математическим библиотекам на предмет того, какие бывают конструкторы у тензоров. Тут даже ставить библиотеки не требуется, просто посмотреть в документации(ях) сигнатуры конструкторов.
>>2971281 >если в дизайне языке предполагается что работа с памятью должно быть болью Боль - это не работа с памятью, а как раз автоматизация работы с ней. Представь, например, что у тебя не POD элементы, как в сишке, а класс с деструктором и остальным rule of 5 - тебе сразу надо писать как минимум деструктор, мув конструктор для всего контейнера, и это уже не пять минут. Потом в проект приходит новый чувак-олимпиадник и обзывает тебя лохом и сишечным пердуном, потому что на твоем контейнере не работают итераторы из STL, а ими писать модно и молодежно.
>>2971197 В плюсах правильно работать как хочешь, это мультипарадигменный язык, там нет единой парадигмы "как надо". Можешь писать как в сишке, можешь на сишке с классами, можешь на ООП как в жабашарпе, можешь подобие FP как жабаскрипт. Последние два варианта сделаны в угоду моде, я лично не вижу смысла когда есть оригиналы, но раз есть, можешь и воспользоваться если хочешь, наличие лишних опций никогда не есть плохо. Плохо это когда макаки с последних двух вариантов лезут в кресты и кукарекают что надо как они привыкли, а кор-функционал первых опций "плохо и ненужно". Только лишь показывает узколобость макак и как я сказал, по сути ненужность этих модных фич в крестах.
>>2971700 Не, он будет передавать либо вектор, как ты написал, либо initializer_list, например {{1, 2, 3}, {4, 5, 6}}, что достаточно удобно. А эта хрень уже будет каститься в вектор
>>2971525 Надо использовать rule of 0. Да и вообще не выебываться и использовать стандартные контейнеры и функции. Это гарант быстрой, надежной и гикбой работы приложений.
>>2971127 Ты лучше создай структуру в которой будет один вектор, а отдельным параметром передавай колличество его измерений. А потом создай какой нибудь метод, который будет по переданному N колличеству параметров возвращать тебе значение из этой N размерной матрицы.
Для того чтобы реализовать функцию с переменным колличеством аргументов используй variadic template arguments.
>>2971281 Предполагается что ты просто делаешь это безопасно, чтобы чел который использует твой код не мог накосячить. То есть ты то можешь написать все что угодно, а вот люди которые будут пользовться могут пострадать.
>>2971699 >>2971127 Бля затупил. В принципе это то о чем я писал выше, но только в STL.
>>2971781 Один умный хер кажется говорил о том, что STL не задезайнин быть быстрым.
>>2971721 >например {{1, 2, 3}, {4, 5, 6}}, что достаточно удобно Это удобным кажется на простейшем примере. Начиная с некоторого N количество скобок в таких выражениях станет умопомрачительным.
Простой одномерный массив вполне можно расписать в удобочитаемом виде за счет табуляций и переноса строк не прибегая ни к каким внутренним скобочкам. Больше того, как большой любитель записывать код и в особенности данные в колоночки и таблички, скажу, что внутренние скобки только мешают.
Алсо, в реальном приложении, я предполагаю, тензор будет инициализироваться не магическими числами.
Вы говорили, вам тяжело читать сетевой код с сишными колбеками, да? А мне вот не тяжело совсем. И дело тут не в readability, а в нехватке оперативной памяти у читающих, который в голове не могут удержать пару-тройку раскинутых мест по назначению колбека, его вызова и самой функции назначенной колбеком.
А вот современный супер ASIO c++20 с корутинами, вообще шедевр (пикрил 1), да? Его читать у вас глаза не ломаются?!
И теперь каждый долбоёб, который не хочет тащить ASIO, но хочет юзать корутины, будет писать свои future и promise
Каким же с++ говном становится с каждой пятилеткой.
>>2971882 Есть такая игруля культовая в определенных кругах - Dwarf Fortress, написана на няшной сишечке. На момент анонса в стиме игре было под 20 лет. И в анонсе она провисела года полтора до релиза.
Полтора года на то, чтобы прикрутить к стиму готовый, даже зрелый продукт. Это все, что нужно знать об удобстве няшной сишечки.
>>2971951 Я без понятия, как прикручивать игры к стимсу. Но тут может быть виновата архитектура. А я тебе говорю о локальных вещах в с++, от которых болят глаза. Да и просто сама уёбищность - через std::variant - определять сработал таймер, или прошло чтение? Пиздец... Это же просто безвкусица. Ну кто-то должен был остановиться и сказать: ну это просто не красиво, товарищи.
>>2971975 Стим-релиз сильно отличался, они нихуёво интерфейс перелопачивали например. Короче он фигню сказал. Дварф фортресс в этом контексте ну никак не связан с тем какой там си язык
>>2971981 >Стим-релиз сильно отличался В свое оправдание могу сказать, что релиза я так и не дождался.
>Дварф фортресс в этом контексте ну никак не связан с тем какой там си язык Связан тем, что на сях он написан и продолжает писаться. Причем связан - во всех смыслах этого слова.
В QT есть механизм сигнал-слоты. Как при нажатии на кнопку, сделать возможным передачу объекта? По-моему, там lambda-функция и у меня не получилось его передать.
Получаю вот такой вывод Ctor a Ctor b Copy Ctor a Copy Ctor b Dtor <--- откуда тут взялся деструктор? ======= Dtor b <- Из вектора удаляется b Dtor a <- Из вектора удаляется а Dtor a <-- Почему тут такой порядок? Сначала же создана А потом Б Dtor b т.е удаляться должо сначла Б потом А
g++ main.cpp -O0 main Компилироваю с флагом -O0 никаких оптмизаций быть не должно.
>>2971882 Полностью согласен. Добавлю только, что иногда современные фичи оправданы и удобны, иногда. Но по не понятной причине, как будто форс, они пихаются куда ни поподя, литерали с++26ооп головного мозга.
Здесь создаются два prvalue объекта, каждый из них вызывает new внутри. Потом они складываются, создавая еще один prvalue объект с вызовом new. Хотелось бы, чтобы вызов new был только у переменной str.
>>2973038 На днях буквально в книжке modern cpp/c++20 edition наткнулся на почти такое в примере. Всмысле это был не пример UB, а пример якобы рабочего кода.
>>2941891 Как думаете, есть смысл сейчас писать меседж брокер на юсервере? Я просто его трогал по работе не Яндекс , но думаю сейчас слишком сложная штука с избытком зависимостей для такой задачи
Запустил VS, открыл проект через Open Local Folder, что-то там студия ругнулась, что Qt кода не находит, это мне сейчас не важно на данном этапе, компилировать все равно не собираюсь. И вот у меня возник вопрос, что мне нужно сделать, чтобы студия просканировала проект, чтобы у меня в Class View показывало всю структуру классов с их методами, переменными и всем содержимым в открытом в данный момент файле?
>>2974489 Всё находится в оперативной памяти. Стек и куча - это всего лишь абстракции, чтобы программам было удобнее с работать с оперативной памятью. В процессоре находятся только регистры, в одном из которых адрес стека.
>>2974654 почему тогда стэк считается быстрее? как при обращении к памяти так и при её выделении?
выскажу догадку что стек просто чаще оказывается в кэше процессора. с выделением памяти все понятно - у стека чтобы выделить нужное кол-во памяти это просто прибавить оффсет к адресу верхушки стека. с кучей надо пройти через всю хуйню через вызовы к ОС, чтобы она просканировала память и нашла запрошенное кол-во страниц памяти.
>>2974670 По выделению всё так. При обращении к стеку достаточно прибавить к адресу стека из регистра известное при компиляции смещение, когда при обращении к куче надо взять из указателя в стеке ещё один адрес и обращаться уже к нему.
Ну за 183 рубля в месяц можно взять в принципе, копейки. Ща, если через winsys2 не получиться поставить, то куплю. А ты ны кутях пишешь? Ставится норм он через этот впн, без проблем?
>>2974727 Собери сам из исходников. Часа два займет. Исходники на гитхабе. А так пленет впн. Ещё попробуй залогиниться и отключить впн, вроде должно будет быстро качать.
Ой, та это пиздец ща будет геморрой с моим нулевым опытом в этом деле, уйдет минимум целый день, еще и выёбывться начнёт, ошибки выдавать, я буду тупить по жетскому, хз что за ошибку, что от меня компилятору нужно, лезть в гуголь, писать на форумы
> пленет впн.
Та он рвёт соединение, я его самым первым попробывал, пишет типа у меня торренты запущенны, хотя я всё по отключал и по закрывал
>>2974652 Перестать мучиться с голимой студией и переходить на иде креатор/силион/вскодиум с нормальной поддержкой симейка, которым твой проект и собирается.
>>2974670 Рискну предположить что обращение к памяти в куче медленное из-за того что к ней через pointer indirection надо обращаться. Плюс на стэке всё рядышком лежит и соответственно это более cache-friendly
А что если UI-интерфейс под винду рисовать на DirectX, а окна и события брать из winapi? Это супер-мега быстрое приложение получится с красивым дизайном? Так кто-нибудь делал вообще?
Расскажите про использование структур данных в продакшене. Я слышал такую пословицу, что использовать надо всегда вектор, а если юзаешь другой контейнер, то будь добр объяснить почему. Еще видео смотрел, где Страуструп говорил мол предпочитайте вектор листу. Хоть у него вставка в середину линейная, но поскольку все элементы рядышком, вектор хорошо кешируется. Хэш- таблица вообще гениальный контейнер, но не так часто используется. А в многопоточке любят использовать очереди. Вот все, что я знаю. Поправляйте и дополняйте, очень важно все это знать.
>>2979459 Т.е. вектор можно юзать вообще без вопросов? Это так не работает. Надо всегда понимать, почему следует выбрать ту или иную структуру данных, хоть вектор, хоть не вектор.
>>2979459 Надо просто на практике смотреть что эффективнее. Почти всегда это вектор, даже если кажется что это не так и несмотря на все теории про сложность и тп, вот и всё.
>>2979928 Новогодний Репертуар/кю - тут и так понятно, LIFO/FIFO. Ордеред мапа - много дописываем, много ищем, требуется хранить данные в отсортированном виде для обхода. Анордеред мапа - дописываем редко, создали один раз и пользуемся, много ищем, порядок не нужен, обходить не собираемся.
аноны, подскажите, есть ли какие-нибудь гайды \ примеры проектов на ❄️, где можно будет использовать самые разные фичи языка (новых стандартов, stl) надо вспомнить язык, теорию нашел (но буду рад годным советам по источникам, полезной структурированной информации), а вот что писать вообще хз. помню давно где-то видел типа рулетку, делаешь ролл и пишешь проект соответствующий, но найти не смог
>>2938659 (OP) Сап. У меня имеется класс Object3D с только одним нас интересующим полем -- position. Оно может меняться через соответствующий сеттер. К нему можно по идее прикрепить 3д модель/меш, у которой/которого есть атрибут матрицы, отвечающей за её/его 3д трансформацию (то есть за перемещение и т. д.). Position -- обычный вектор (одномерный массив). Матрица -- массив векторов.
Суть проблемы. Если у Object3D нет меша, то изменяется в сеттере только его поле position. Если у этого класса есть меш, то изменяться в сеттере должны и меш, и позиция.
Нужон самый оптимизированный способ.
Я думал, что можно будет сделать один публичный setter0 и две приватные функции (setter1 & setter2 условно). Таким образом, при добавлении меша к объекту можно установить публичному сеттеру (просто заголовок метода) адрес нужного приватного сеттера. Но я где в инете услышал, что такие выкрутасы -- низкопроизводительное дело чушпанов.
>>2980459 Опять преждевременными оптимизациями занимаешься? Сделай сначала так, как заработает и упрется в перфе в это место спросишь на геймдеве. Или на ревью тебе скажут что ты Тулуп.
>>2980771 Так пиши все на сях, ну забрали у тебя пару ключевых слов, сишное подмножество все также работает. Думаю твой препод, который считает что ❄️ это С с классами, будет очень рад видеть такой код.
>>2980770 Хачу, чтобы Object3D -- был базовым для остальных. И чтобы юзер мог его просто создать кое-как юзать. А так как он по умолчанию не имеет 3д модели, то, следовательно, и не должен менять матрицу просто так при своём изменении.
Кстати, аноны, мое увлечение дифференциальынми уравнениями, алгеброй, геометрией и ТФКП как сочетается с трехмерной графикой? На стыке этих областей можно создавать что-то интересное?
>>2981105 Просто базовый класс. Точка в пространстве. На его основе есть другие классы (светильники и т. д.).
>Кстати, аноны, мое увлечение дифференциальынми уравнениями, алгеброй, геометрией и ТФКП как сочетается с трехмерной графикой? Отлично.
>На стыке этих областей можно создавать что-то интересное? Можно, но надо быть гением, ибо очень много тем уже избито и которые ты должен будешь знать наизусть и уметь делать. Дальше классных спецэффектов и красивых фрагментных шейдеров ты вряд ли дойдёшь. Самые тяжёлые математические проблемы 3D графики решены (излучение (как в рейтрейсинге или рэймарчинге), 🎁еризация, фильтрация текстур, трансформации в пространстве, расчёты освещения и прочие магические для быдла штучки).
Главная задача Белый Медведьов GPU -- сделать так, что всё работало быстро. А для таких оптимизаций нужны глубокие познания computer sience: https://2ch.hk/gd/res/907734.🕛#917484 https://2ch.hk/gd/res/907734.🕛#917487 Тебе до всего этого ещё 🎁и и 🎁и.
>>2980771 а потом подобные ему начинают в миллионный раз реализовывать ооп на коленке вручную пиша vtable или делать adt на макросах, считая себя при этом неебатца крутыми
>>2981245 OpenGL -- относительно простой и эффективный. D3D 12 & Vulkan -- очень сложное и кропотливое занятие, в которое без опыта лучше не лезть. Это как asm.
>>2981257 Какбе в РФ есть Saber interactive, Белый Медведьатывающая Saber3D, есть ещё Nau engine, Белый Медведьываемый VK Group, и Unigine, с которой всё понятно. Олсо существуют навигаторы от Яндекса и 2ГИСа, которые ведут набор графических програм_мистов, не говоря уже о gd Застольех, которым нужно править говённые рендереры уринала и унити.
>>2981134 Ну хуй знает чел. (Я если что к гд никакого отношения не имею ибо та еще залупа) Но ты говоришь что решено, а открытые реализации этого есть? Я говорю хотя бы про кор решения, которые почти всем нужны, или как всегда завезено проприетарно под самую новую карточку за пол лямца пынефантиков?
Анон, с ориентируй, а почему в класс-вью при открытии таким способом ничего нету, ну чтоб я мог видеть дерево классов со списком всех функций, переменных?
>>2981418 Весь кор, и даже значительно больше, уже решено. >открытые реализации этого есть? Есть и в учебниках, и на Новогодний Выпуске, и в открытый интернет-статях. >или как всегда завезено проприетарно под самую новую карточку за пол лямца пынефантиков? Конечно, никакая коммерческая компания не будет никому давать свои наработки, ибо конкуренция.
НО гейдевелоперы, и не только, выпускают в открытый доступ на SIGGRAPH презентации по нанотехнологичным алгоритмам и нанотехнологичным решениям проблем рендереров. Это кладезь новейших исследований в области 3д https://advances.realtimerendering.com/
Ты там, конечно, исходный код не увидишь, но подробно узнаешь, что и как работает
>>2981418 То о чем он писал еще кармак порешал в большинсве. Все есть - читай доки. Они кстати рилейтед статьи в научных журналах публиковали и публикуют, а не в игровых.
>>2981572 Я понимаю, что в учебниках есть вообще все, ну кроме реализаций. А трудность как раз в этом, от момента когда вговне моченый напишет книгу до её реализации на конкретной железяке может пройти и 5 и 50 лет, а когда до опен сурса это дойдет и дойдет ли вообще - открытый вопрос. А что касается твоих статей, знаем мы их. Сам же говоришь, что компании конкурируют, никто в этих статьях тебе ничего не рассказывает кроме: 1 страница: вот у нас есть вот это формула и вот эта, мы че то там сделали и заебись. 2-100 страница: а вот собственно и наше заебись, заебись здесь и здесь, все ссылки в описании.
Я это собственно к чему, ты сказал, что гением нужно быть чтобы там создать что-то, но дело то скорее в реализации, и вот тут то и поле непаханное и можно залетать с двух ног. Я так кстати, все еще со своей табуретки рассуждаю
Ну я открыл через cmakelists, проект загрузился, а хуле в classview текущего файла нет ничего? Или ты такой же нубас как и я, не в курсе? Хуле тогда сам троллишь?
>>2981592 Верно рассуждаешь, без смехуёчков. Желаю удачи в бескрайнем мире графического программирования и полёта фантазии. И не забывай заглядывать в тематический тред в /gd/. Там тебя радушно примут.
>>2981330 чел уже то что тебе с натугой приходится перечислять то что осталось в россии от геймдейва и вообще от кодинга условной 3d графики (за исключением военки) как раз и означает что геймдев в россии мертв алсо, вообще основная кормушка геймдейва в россии это были мобилки последние несколько лет, а все мобилкоделы сьебали с россии так чтож спок
Прочитал поэкспериментировать с объявлениями сущностей без определений. Не пойму, почему в первом примере все работает, а во втором ошибка линкера - неразрешенный внешний символ?
А если мне надо в декструкторе записать строчку в лог и тут я вижу, что файла лога не существует, как мне быть, если бросать исключения из деструктора не принято?
>>2938659 (OP) Анончики, как намутить генерацию облака частиц, максимально близкого к реальным облакам? В играх это как-то реализовано ведь. Следовательно - математическая модель и код есть. А дальше надо лишь разобраться с его сложностью и сделать генератор тех самых облаков. Пока думаю. что можно сделать случайное распределение, а дальше в виде массива сортировать ячейки по параметру, чтоб ячейки с большими значениями "притягивали" ячейки с маленькими и так перераспределяли пространство.
Анон, как Белый Медведьотать архитектуру этой программа по заданию? Я нихуя не понимаю. Первое задание кое-как сделать при помощи примененного несколько раз паттерна observer, а с многопоточкой вообще пиздец какой-то. Написал очередь сообщений, перед входом в которой стоит накопитель команд, который сбрасывает команды пачками. Кроме команд в сообщении передается число count, равное числу потоков. Каждый поток получает сообщение при помощи top() и декрементиирует число count, когда это число равно 0 (последний поток получил сообщение), сообщение удаляется из очереди. Но с архитектурой у меня тут просто Тулуп. Как это сделать красиво?
>>2981112 > мое увлечение дифференциальынми уравнениями, алгеброй, геометрией и ТФКП как сочетается с трехмерной графикой? Никак почти что. Алгебру и геометрию достаточно знать в том объеме, чтобы ориентироваться в справочнике для инженеров. Желательно - в англоязычном. Матан и прочие дифуры нужны постольку, поскольку они суть язык физики (в частности, оптики и физики света).
>На стыке этих областей можно создавать что-то интересное? Можно, но это уже за пределами собственно три-дэ графики: визуализация, моделирование, симуляция и т. д. И все интересное, насущное и важное уже создано.
Энивэй, большая часть из этого реализуется и используется на компухтере приблизительным образом, а не в виде аналитических формул. Копай в сторону численных методов и вычислительной математики.
Сап, задам свой дебильный вопрос. Студентота третьего курса провинциальной высшей шараги по прогерской специальности. Есть два года, которые я могу проебать с пользой, например, получить какой-нибудь навык. Не могу определиться какой.
С одной стороны хочется вкатиться в нейронки, но там нужна матан, линал, но на лекциях я смотрел Голубой Огонёки, а на семёнарах, когда нужно было Читать у доски, в основном писал под диктовку препода. От этого есть ощущение, что это всё не моего ума дела и я ниосилю.
С другой, у меня периодически возникает интерес к тому, чтобы задрочить ❄️, а в месте с ним задрочить алгосы и архитектуру компика, сети и остальное из komputer sainc. Но если с матешей я умею матрицы перемножать, то тут вообще пиздец. Я чувствую, что когда я дойду до главы по указателям и не осилю, то просто обоссусь и буду плакать весь день.
Дорогие плюсомакаканы, помогите еблу утиному, как можно в сдл отрендерить анимку из кадров в отдельных файлах? Пишу читалку одного формата, в нём записаны имена файлов с кадрами и фпс, читать - не проблема, а вот зарендерить - проблема, думал может в какой-то массив можно сгрузить эти кадры, но был послан нахуй ибо ни surface, ни texture ты массивом не сделаешь, а с диска начинаешь читать - пердит и обмякает примерно через 30 секунд после запуска плеера.
Итак, скачал qtcreator из раздела Новогодний Выпуск на Новогодний Выпуске как тут предлагали выше (12 версия). Была версия для MinGW и для MSVC. Сам MinGW посмотрел - мне не понравились его сборки, туда то 🐍 пихают, то симейк, то еще бог весть что. При том что у меня 🐍 и симейк и так стоят уже в нужных мне директориях, вот это бесит. В общем скачал для MSVC, и я так понял разница с версией для MinGW там только в изначальной настройке набора? Отлично подключился qtcreator к собранной мною ранее библиотеки qt6 static, прямо plug and play. Теперь я разбираюсь в этих комплектах и могу подключить пятую, шестую, статическую, динамическую, какую угодно. Надеюсь эти знания ценны для устройства на работу десктоп-Белый Медведьом. Самое забавное из того, что я заметил, компилятор MSVC выводит ошибки в кодировке 866, а nmake (виндосовский аналог cmake) в 1251. А в выпадающем списке кодировок для выходных данных разных инструментов можно выбрать что-то одно. Поэтому кракозябры будут в любом случае. Непонятно мне следующее. Я посмотрел с помощью sizeof размеры разных виджетов, большинство из них 40 байт. В связи с этим мне не понятно, зачем их создавать не на Новогодний Репертуаре? Скорее всего внутри этих классов и так есть обращение в куче. Но в большинстве примеров и учебных пособий их создают с этим богомерзким new и подключают к иерархии parent - child, типо смотрите какая прикольная штука.
Стоит ли заниматься алгебраической теорией кодирования? Она сейчас применяется на каких-то работах? Чем больше погружаюсь в эту тему, реализуя разные кодовые алгоритмы, чем больше кажется, что это хуйня какая-то бесполезная.
>>2986944 Так они есть. Просто все в рот ебали переписывать кучу кода под них. Ну и выглядят они как говно. Я хотел просто писать import zalupa и не думать о связывании, хуязывании и тому прочем.
>>2987256 >4 года О них говорят уже лет 20 же, я программирую меньше. И это не самая простая задача для разработчиков компиляторов, иначе давно бы сделали.
>>2988161 Компилятор состоит из нескольких больших компонентов, если очень образно - это фронтенд, некоторые выделяют миддл-энд и бэкенд.
Фронтенд занимается анализом твоего говнокода и переделыванием его в некий Intermediate Language, платформо-языконезависимый.
Миддл-энд занимается оптимизацией этого IL, превращая твои охуенные вирши в некий mov eax, 2; ret;
Бэк-енд занимается генерацией полноценного платформозависимого бинарного кода из этого IL.
Вообще все компиляторы (включая МСВЦ и ГЦЦ) устроены по этой схеме, но нюанс в том, что ллвм это миддл и бэк энд отдельно, и он охуенно задизайнен без прибития гвоздями к фронтенду так, что фактически ты можешь реюзать бэкенд и миддлэнд без фронтенда (коим является кланг для крестов).
Итого - если ты решил написать компилятор языка PETOOH - то тебе надо только написать конвертер PETOOH -> LLVM IL, а оптимизацию и генерацию бинаря ты получишь бонусом. В случае с ГЦЦ это реально (опенсорц) но на порядок сложнее, т.к. гцц для этого изначально не предназначен и очень сильно завязан с фронтендом.
>>2938659 (OP) Вот мне не хватает какой-то книжки(или курса) типо как Python Cookbook у питонистов. Книжки где будут разбираться по очереди все идиомы и мелкие бест практисы. НО эта книжка обязательна должна быть 20-23 стандарта, потому что как я замечаю, многие вещи уже неактуальны. Я вот сегодня копался от нехуй делать в расширениях вскода и там нашел расширение со сниппетами всяких стльных алгоритмов, думаю прикольно -- потом смотрю -- последние коммиты 6-8 лет назад. Так эту всю хуйню уже переделывать надо что ли? Ну вот я думаю, хуй с ними со сниппетами, но мне бы погрузиться нормально в современный идиоматичный код со всеми новинками стл, в идеале чтобы уже и под 23 стандарт, чтобы не устарело пока дочитаю. Есть что-то подходящее?
>>2988169 Куча компиляторов не нужна, нужна куча языков. LLVM это компилятор промежуточного кода в бинарный. Причем этот промежуточный код документирован, таким образом в него несложно преобразовать любой язык, даже выдуманный тобой. Для этого оно и существует, чтобы подмять под себя все языки. Это как игровой движок Unity, на нем легко разрабатывать игры, но все попадают в зависимость от движка, его хозяина барина. Так и тут, легко разрабатывать новый язык и все лезут на халяву, но все языки попадают в зависимость от LLVM. Короче, ловушка с сыром на тупых крыс, думающих, что сыр бывает бесплатным.
>>2988350 Поясни за платность llvm-ного сыра плз. Его и гугл, и майки, и интел используют, и кучка языков под некоммерческими организациями - где ловушка-то?
>>2988350 То есть этот IL был придуман авторами LLVM? Я почему-то думал, что он всегда был и все компиляторы си и плюсов были на нем построены. А так получается у gcc свой IL, у msvc свой. То есть LLVM это фреймворк. Осталось понять почему он называется виртуальной машиной.
Я понял почему виртуальная машина. Создавая компилятор на этом фреймворке, ты разрабатываешь только платформонезависимые оптимизации, то есть как в жабе, ну вы поняли да?
>>2988578 Мещерин свой самый крайний продвинутый курс начал читать с ориентацией на 20 стандарт. Мне кажется это знак, что сейчас надо под 20 стандарт подбирать материалы. Про 23 я наверное реально загнул...
>>2989433 Напиши свой ecs движок и простой опенгльный рогалик на его базе. Естественно всё оптимально на шаблонах. Всё на crtp естественно без виртуальных функций.
>>2989739 >Лучше винапи ничего нет кроме экосистемы Mac.
Нет, серьезно. Стоит лишь преодолеть свой иррациональный страх перед vendor lock и твои волосы станут мягкими и шелковистыми, как Тулуп младенца. Ограниченный набор инструментов, кроме известных недостатков, все же и решает устраняет огромный ворох проблем. В первую очередь это проблемы выбора, но также и знание о том, с какой конкретно платформой ты работаешь развязывает руки для оптимизаций, невозможных в рамках дроча на кроссплатформенность.
Да, дорогие мои, кроссплатформенность - это тоже рамки, и еще какие.
>>2989433 >на плюсах, всё что угодно можно написать На голых плюсах пишут библиотеки, фреймворки, API и т. п. Конкретное прикладное пишется уже поверх этого.
>>2990222 Не рылся в его исходниках, честно говоря.
Но даже то, что на пикрил помимо прочего указан C++, надо понимать так, что он писан не на голимых плюсах. Даже если у них там какое-то предубеждение против сторонних библиотек и все на homemade велосипедах, проект такого масштаба практически невозможно реализовать без библиотек как таковых. Как минимум у них самописные велосипеды скомпонованы в библиотеки.
Никуда от этого не уйти. И это один из первеших вопросов для анона вроде >>2989433в чем смысл жизни, вселенной и вообще чё я пишу вобще, библиотеку общего назначения или что-то конкретное прикладное?
Что почитать/посмотреть, чтобы ответить на вопросы "awareness of some fundamental concepts, such as system calls and multithreading". Очень подробно не надо. На втором курсе мы многое на асме писали, в том числе системные вызовы, но мне лень пересматривать подробные лекции. Сейчас хватит чего то обзорного
>>2990401 Чел, ты хуйню несёшь. Автокад написан на плюсах. Всё. Точка. Дохуя софта написано на плюсах, а не только библиотеки. У меня отец работал над автокадом, когда свалил в сша. Но это другая история
>>2990690 >Автокад написан на плюсах. Всё. Точка. Инклуды там есть? Графику они как выводят? Математика чем считается?
>>2990695 >А как можно "рыться в исходниках" автокада? Он ж не опенсорсный. Вероятно никак. Но раз уж кто-то додумался именно такой пример привести, то приходится как-то гадать и додумывать исходя из.
>>2991064 Чел ты дурак? Какие инклюды какая графика? Вся математи это си/плюсы. Рендереры на плюсах или си и пишутся. Видео дрова на си. А ты просто серишь.
>>2991092 Чел, ты дурак. Я тебе про фому, ты мне про ерему. Математика, графика и многое другое в плюсах - это библиотеки, еб твою мать. На плюсах библиотеки или на чем другом, речь вообще не об этом. А об том, что написание библиотеки - это совершенно другой вид программирования и проектирования, чем проектирование и создание прикладной программы с использованием готовых библиотек. Тебя ебалом в букварь ткнуть чтоле?
Какую книгу из вашей шапки взять вкатуну? Про Прату нашёл что мол у него не слишком много расписано, а по остальным двум книгам что? Есть кто читал и подскажет?
>>2991092 Конкретно топик стартеру >>2989433 я даю подсказку, что можно не ебать никому мозги про то, что его покинула Муза, а просто взять какую-нибудь небольшую либу и запилить для нее оболочку на современных плюсах. Для чего и требуется понимание, что ты пишешь либу/оболочку, а не что-то другое.
И такой проект не стыдно будет на гит хабе показать, может даже им станет кто-то пользоваться.
кто работает в qt creator, я скачал эту хуйню и не понимаю : компилятор скипает ввод данных и завершает программу. условно, если мне нужно иницииализировать переменную, записать в нее данные и вывести ее, он не запишет туда данные и завершит программу(втф?) скрин вот
еще блядь как открыть проект на нем? я открываю main.cpp файл, а он его как текстовый редактор считывает и не дает собирать и компилить
>>2991179 Если у тебя cmake проект, то главный файл отвечающий за него это CMakeLists.txt файл лежащий в руте проекта А вобще в нормальных ide ты просто открываешь папку со своим проектом и он автоматом всё должен открывать
>>2991231 >Как и винда, думаешь все министерства уже пересели на линукс? ты реально думаешь, что госки на винде?....
>тебе хоть платят за это? мужик, открой вакансии C++ и посмотри востребованность владением QT параши и потом задавай вопрос себе "нахуя он нужен", а не мне
Есть идеи нахуя два школьника сверху, один из которых настолько нулевой, что проект запустить не может, обсуждают с умными ебальниками что происходит в НИИ?
>>2991133 вкатуну куда? ты в 2к23 году собираешься в плюсы что ли вкатываться? а справка из дурки у тебя есть? бабка оставила квартиру + пенсия по шизе? на что ты жить собираешься?
>>2991223 >мужики я не мужик, член у меня есть, но я его только чтобы поссать использую, оче удобно хз к кому ты обращаешся с++ кстати в отличие от местных чмонь я знаю на уровне
>>2991253 охуенчик, а теперь представь что из этого списка осталось в россии я тебе скажу - 80% всей этой разработки сьебало за кордон за последние 2 года СВО как раз сильней всего по крестовикам ударило если что теперь у нас голое поле, РАБоты нету в принципе
>>2991705 Какой то глупый вопрос. Те, которыми и занимался и называешь. Или ты про мои хочешь услышать? В основном там десктопные круды + утилиты для работы с устройствами через сетевые протоколы/usb.
>>2991392 Кто тебе сказал что у меня нету работы и я без денежного обеспечения? Я тебе сказал зачем мне плюсы? Ну вот и иди нахуй, тупое животное, это не JS тред чтобы предсказывать что-то там.
>>2991995 Серьезно? После всех отзывов в инете что у него недостаточно инфы ты напишешь это с надеждой что я прям так и буду читать его? Хоть пару слов бы почему.
>>2992103 Нашёл что Липпманн неплох, а вот по Страуструпу 0. Пара невнятных отзывов и нытьё что ниасилил. А про прошлые треды не подумал, разве так много вкатунов в плюсы? В любом случае, гляну, спасибо за наводку.
>>2991179 CMakeLists.txt или .pro файл открывай, а не файл с кодом. По поводу вводы ХЗ чё посоветовать, кроме как запускать собранный exe из консоли. Можешь настройки ковырнуть.
>>2992359 >Ну вот и иди нахуй, тупое животное Ебать ты лошара, ирл бы уже лежал в луже крови визжа от боли от заточки в почках, а я поехал бы зону топтать, но это ничего, ведь ты сука сдохнул бы в мучениях.
>>2993049 Добавлю ещё, что чат гпт уже существует, через который легче усваивать нужную инфу без графомании и неприкладной хуйни. >>2993076 >чтобы обучится писать на с++ Хм, наверное я писал на каком-то выдуманном языке свою пету. >говно код, да Ах точно, это же всё говнокод)
>>2991790 > В основном там десктопные круды Какие БД использовали, были ли ORM или сам запрос писал? > утилиты для работы с устройствами через сетевые протоколы/usb Какие классы Qt использовал для написания этих утилит?
>>2993302 > > В основном там десктопные круды > Какие БД использовали, были ли ORM или сам запрос писал? Где-то голые запросы, где-то самописная кодогенеративная ОРМ, так же QXOrm, но там не взлетело без покупки. Mssql и postgres. В мире кути орм стандартной нет, как и мире плюсов, так что чаще всего юзали голые запросы/репозиторий. > > утилиты для работы с устройствами через сетевые протоколы/usb > Какие классы Qt использовал для написания этих утилит? Я только QTelnet и QFtp знаю что древний кал, лучше нету. Ещё писал сокеты на QSocket. Тулзы для юсб писал на питоне и го.
>>2992906 Одиннадцатый стандарт -- это БАЗА, с которой можно спокойно обходиться (как минимум новичку). Новые стандарты откроешь для себя в специализированных учебниках и на ютабе. Разница в стандартах не прям значительная. К томуж СиПлюсПлюс -- обратно-совместимый.
>>2994261 Дабериего, Прату, либо Липпмана; выбор в учебниках не большой. Для ахринительного старта хватит их. Пробелы закроешь pet-проектами, ютабом и документацией.
Загадка всему треду - где посмотреть изменения поддержки стандартов у компилятора MSVC? На размышление даётся неограниченное количество времени. Есть вот такая хуйня, не обновлялось с марта прошлого года: https://github.com/MicrosoftDocs/cpp-docs/blob/main/docs/overview/visual-cpp-language-conformance.md Есть вот такая хуйня в STL майков: https://github.com/microsoft/STL/wiki/Changelog С ахуительными приписками к каждой фиче: > When MSVC and IntelliSense implement this Core feature, this will automatically "light up" the STL's CTAD for them too. Есть также приписки типа: > for Clang 17 Но я в тоже время вижу у самого шланга написано про то что до сих пор даже в 18 шланге под Виндой полноценно не работают корутины и модули, это уже прошлый стандарт, если что, лол. У MSVC они точно работают. Так же есть вот такая хуетень, тоже не понятно как это спроецировать на компилятор MSVC: > https://github.com/microsoft/STL/projects/8
>>2999509 Если тебе нужны такие масштабы и производительность, что ты начал смотреть на юсервер, то скорее всего в вашей компании уже есть местный велосипед с похожим функционалом и командой поддержки. Если нет, то он тебе и не нужен. если ты думаешь что в Яндексе все микросервисы на нем: нет, это совсем не так
>>2998515 Скорее компиляторы пошли не туда. Сейчас кресты фактически голый стандарт без поддержки компиляторами. Шланг на Винде неюзабелен, до сих пор не может С++20 реализовать, а на пердоликсе вообще кресты не котируются выше C++17. MSVC не понятно на каком свете, у них для IntelliSense используется EDG вместо компилятора - соответственно обе IDE майков вынуждены ждать это говно, а юзеры наблюдать непонятные ошибки IntelliSense и 4 года ждать пока заработает подсветка синтаксиса у модулей, которые компилятор поддерживает уже хуй знает сколько лет. Систем сборки нет нихуя, одна хуже другой - один только cmake чего стоит, где скрипты на непонятном языке генерируют через ninja проект для студии, такой комбайн даже ради троллинга не придумать. Стандартизированных либ нет - каждый дрочит как хочет, а бустоёбы вообще в очко ебутся, когда это говно надо собрать на хуй пойми каком компиляторе. Был бы единый компилятор, реализующий фичи сразу за комитетом и имеющий встроенную системы сборки - был бы идеальный ЯП. А так имеем выбор между говном и мочой - кресты и раст. Есть ещё неведомая хуита - zig, где пердолики собрались ради самого процесса написания компилятора, а не создания удобного ЯП. Я как-то попробовал "лучшую замену clang" в виде zig cc, какой-то фееричный пиздец с хэллоуворлдом на 800 кб и сборкой по 30 секунд, приправленный отсутствием документации.
>>2999947 >на хуй пойми каком компиляторе На хуй пойми каком их не соберёшь обычно без заплаток. Но тут сам дуроёб, коли их тащишь, если не уверен в среде сборки и её неизменности
>>2999509 >Мнение? Ахуенная штуку >Подводные в использовании? В плюсах
>>2999629 >Если тебе нужны такие масштабы и производительность Ты о чем вобще говоришь? >Если нет, то он тебе и не нужен Альтернативы кроме самописных велосипедов не подскажешь?
Я заметил, что почти весь софт в линуксе скомпилен так, что я могу наблюдать название каждой ВНУТРЕННЕЙ функции с помощью nm -D. И то что я попытался написать для gcc тоже экспортирует название функции НЕ в разделяемую библиотеку.
В принципе, можно без этого - gcc -s (striped), но что вообще происходит? Это связано с ASRL? А нельзя c ASRL, но без экспорта названий функций? Зачем так палиться? Как нынче тогда работает защита коммерческой тайны в сях?
>>3002631 > с помощью nm -D Ты хоть man nm в консольке бы написал, пердолик. Там в первой же строчке написано откуда он берёт эти названия. Для тупых - не из собранного бинарника. > Это связано с ASRL? Нет, конечно. Какое отношение это вообще имеет к твоему вопросу? > без экспорта названий функций? Они никогда не экспортируются, если ты сам не делаешь экспорта.
>>3003911 > экспортируются Чел, прочитай доки к nm. Нахуй ты тут шизишь, он берёт инфу не из собранного бинарника, а из object-файла, блять. > И почему же это происходит? Потому что дегенерат пердоликс поставил, а прочитать что делают команды что он вводит в консольку - нет. Даже локальная нейронка умнее тебя.
И вообще, нахуй ты пишешь в тред крестов про сишку?
>>3003956 Во-первых, собирай с флагом -O3. Во-вторых, удали все object-файлы. Я тебе могут и третий раз написать - он из них берёт инфу, тупой ты дегенерат.
>>3005566 Зачем тебе вся документация, тем более если процессоры разные? Качни курс Nand to Tetris, там начинаешь с логических вентилей и дальше по нарастающей делаешь регистры, АЛУ, память и тд. Все сначала описывается на hdl, как и вся современная микроэлектроника, а твоя работа проверяется тестами на виртуальной машине.
Аноны, дайте инфы, что у вас почитать по крестам. Программировать умею профессионально получаю деньги за свои высеры на питоне, хочу взять в оборот какой-нибудь прикольный компилируемый язык, думал про го, но чет он тухлый какой-то, так что решил посмотреть, че тут происходит у вас + почитать всякие исходники прыщавых приложений.
В общем, мне видимо нужно что-то по синтаксису чисто въехать в язык, ну и дальше фреймворк какой-нибудь для бекенда (вообще не ебу, что у вас самое популярное сейчас).
>>3007456 > думал про го, но чет он тухлый какой-то, У нас тут потухлее будет
> дальше фреймворк какой-нибудь для бекенда Писать бэк на плюсах это очень плохая идея Но если интересно, есть классная штука от Яндекса - userver
> нужно что-то по синтаксису чисто въехать К сожалению, в плюсах только синтаксисом не обойдешься Есть несколько семантик которых вообще в других япах нет и как будешь писать код по хорошему их надо учитывать
>>3007495 В смысле, еще тухлее, чем в го? Да быть такого не может. У меня кореш месяцев 9 сидел ботал с нуля с++, вкатился вот недавно на джуна, в го такой трюк не провернуть. >Есть несколько семантик которых вообще в других япах нет и как будешь писать код по хорошему их надо учитывать Вот да, я как раз про подводные всякие думал. Нужна литература, которая покрывает такие моменты.
>>3007528 В го такой трюк не провернуть потому что это изначально язык для мидлов. На мидлов в бэк на го вакансий в 1000 раз больше, и то что ты уже питонист открывает тебе возможность сразу дрочить го.
>>3007598 Тебе с твоим майндсетом тут делать нечего. Ну точнее нихуя не поймёшь. В плюсах тебе каждый класс, каждая фича, каждый инструмент хочет выстрелить в колено. А если ты неопытный, то решение задач на нем превращается в борьбу с языком. И да, в России пишут на плюсах бэк только Яндекс и Авито, из того что я знаю.
>>3007601 Ну у меня в компании один из проектов имеет бек на плюсах. Правда мы (((кипрская))) компания теперь. >>3007600 Да все не трясись, мы поняли, что ты крутой.
анончики , как мне в эклипсе добавить lua либы в файл плюсов . сижу на старом макбуке, в настройки компилятору и линкеру либы lua прописал ,а чет не видит импортов либы все равно . доков либо нихуя либо для винды . Помогите плез я заманался уже
>>3010673 Только если перевернуть пикчу. Хачкель даже раст выебать по производительности может, если грамотно использовать ленивые вычисления. Всякие парсеры на современном хачкеле под LLVM ебут всё что возможно. При этом у Раста безопасности явно меньше чем у языков на JIT, а ГОвно надо куда-нибудь за пределы графика убрать - в нём нет ни производительности, ни безопасности.
Поясните как работает CLR для создания кнопочек для C++ в студии. Оно все в этот непонятный байтокал компилируется или только стык интерфейса и плюсов?
>>3010927 У тебя там дотнет внутри будет. Лучше жди когда AOT допилят чтоб он мог фреймворки гуя компилить, тогда сможешь кресты вызывать из фронта и иметь нормальный бинарник без JIT и дотнет-кишков.
>>3010927 хз какой твой уровень понимания, но если вкратце то сегодня у майкрософт есть winrt, который, если упрощать, не требует дотнета, по сути это вторая реинкарнация com, эдакий com два ноль, исповедующий его подход последняя реинкарнация обвязки для того чтобы было удобно под него кодить это "C++/WinRT" (вот именно такое название), оно заменило собой обвязки C++/CX, WRL и прочую парашу которую в майкрософт успели наговнякать до них лол, причем эта последняя обвязка позволяет кодить под winrt как раз на полноценном с++17 (без каких либо расширений самого языка) если же говорить за кнопкодавство, то есть за формочки, то эта обвязка дает как раз доступ к платформе UWP, к ХАМL и к прочему, в общем ко всему тому что относится к кнопочкам и формочкам причем все это будет нативное и написанное с использованием с++17 с одной стороны это по настоящему круто (ибо наконец то умные дурачки в майкрософт сделали полный круг и наконец то пришли к тому что им всего лишь то нужен был модернизированный COM, и что вообще компонентный подход рулит) с другой стороны как бы нахуй уже и не надо, особенно в россии потому что РАБоты в россии по очевидным причинам ты не найдешь чтобы была необходимость писать под новые версии винды (а вся эта благодать само собой доступна только под новые винды) а во вторых все то же самое несмотря на все улучшения все же просто делать на дотнет и все
>>3011503 вот еще C++/CLI - эта хуета была для дотнета, устарела C++/CX - эта хуета была уже для winrt, устарела C++/WinRT - последняя обвязочка для крестов под winrt, типа пишите на нем
>>3011503 > по очевидным причинам ты не найдешь чтобы была необходимость писать под новые версии винды Это какие такие причины? У нас уже принудительно всё на десятку переведено, даже некроговно типа посов с гигом ОЗУ. Наоборот сейчас лучше стало, появилась причина не платить индусам. Раньше ещё ебали за плашки "активируйте винду" везде, а сейчас у нас повсюду стоит неактивированная десятка, поебать. Ну и все кто пишут на дотнете - пишут под актуальные ОС.
>>3011574 ну типа гос-во переходит потихоньку на линукс, слезает с хуйца майкрософт, то же самое делают и корпорации с большим гос участием (типа того же росатома), ну и оборонка само собой.. те рыночек разработки под винду в россии очевидно сокращается это с учетом того что любой формы разработки для барина на запад типа аутсорса или филиалов западных фирм в россии уже нет и никогда небудет
>>3011539 >хуета, устарела >хуета, устарела >не хуета, не устарела <-- вы находитесь здесь классика микрософт сначала понаписать хуеты а потом 20 лет хоронить
>>2940541 >показываешь работу: мммм ну я бы так не сделал, ой ну тут в иф условии оно тратит память Скажи ему что именно поэтом он просиживает штаны в универе, а не творит в гугле
Мне одному кажется, что препод все правильно делает? Не дал теории и отправил лабы делать? На работе будет тоже самое, вот тебе дока, если она есть, вот тебе гугол, на размышление дается 30 секунд, решай таску. И что плохого в том, что он докапывается к мелочам, ты бы предпочел, чтобы препод на отъебись принимал все лабы, которые вы скатали друг у друга, и чтобы ты получил диплом не научившись думать и решать таски?
>>2938659 (OP) Шалом анония! Вопрос скорее общего характера, так как на практике не сталкивался, но всё-же интересно.
Как происходит замена высокоуровневого кода на ассемблеровский? Допустим вы уже написали программу, но на текущем желез она всё равно не показывает достаточное быстродействие, а математическая оптимизация или аренда более мощного железа недоступна. Можно написать маленькую программу на том-же TASM или MASM, но как её встраивать в программу на C++?
Для примера можно рассмотреть генератор вордлиста или может даже программу для открытия zip/rar архивов. Но если душа жаждит чего-то более сложного, то пусть это будет генератор хэш сумм.
>>3032781 Ты хотя бы флеймграф построил, прежде чем выводы об оптимизации делать? Все что ты перечислил - ебаные числодробительные задачи, в которых С++ от Ассембера отстаёт на проценты.
Аноны, стал изучать тему многопоточки. Меня интересуют приёмы, техники, тулзы для работы с ней. Приёмы отладки и прочие хорошие рекомендации. Что можно почитать, посмотреть по этой теме?
>>3047486 Книжку Ульямса я уже читаю (и Грима Райнера, он проще воспринимается). Хотелось бы почитать что-то вроде книг Майерса, но касательно многопоточки если такие естб
⚹ https://github.com/sosachbot/cppthreadhat
⚹ Для кусков кода: https://0bin.net/
Ответы на вопросы:
⚹ https://en.cppreference.com/w/
⚹ https://www.cplusplus.com/reference/
Для указателей: ⚹
Прошлый тред