>>1796625 В переменной среды PATH добавлена папка. Из командной строки я могу их любой папки написав название файла запустить любую программу лежащую в ней. Хочу тоже самое в коде, чтобы он мог найти файл лежащий в этой папке
Аноны через 2 года кончается уник. Сидел в основном на плюсах хуйнёй страдал. Пара проектиков есть. Сделал торрент клиент криововатый на qt форм нашлепав и ещё говна поменьше. Достаточно для стажировки/джуновки? Или ещё нахуярить что-нибудь? Ибо я в основном на всяких спортивных программированиях хуярюсь
>>1796190 → >вместо того чтобы нормально сделать парсер даты, тупо брали два последних символа строки Например как ты спарсить предлагаешь? 212022080115вав45203072220 На, вот строка тебе, парси хули, что последние джва символа это год
Труп страуса какой-то левый в этой компании, похоже, больше как популяризатор языка. Его базар не производит впечатление работы над реальными проектами. И книги галимые по сравнению с Пратой.
На плюсах не писал уже 6 лет, как закончил универ. За свою карьеру перепробовал кучу экосистем с различного рода менеджерами пакетов: go get, mvn, sbt, pip, nvm — всё вот это дерьмо.
Есть ли что-то подобное для крестов, чтобы можно было просто объявить нужную зависимость, и чтобы билд система сама стянула всё, что нужно?
>>1796935 Дядь, что за наезд? Зачем ты мне предъявляешь за свободу? Где в моем посте хоть что-то про винду?
У меня есть чужой плюсовый проект с достаточно большим количеством LOC. Мне нужно этот проект отрефачить а затем накидать туда нового функционала. При этом cpp - не мой основной язык. По предыдущему опыту я знаю, что при работе с подобными проектами CodeBlocks (для меня) удобнее консоли, но сейчас заметил, что IDE от Intellij значительно удобнее CB.
Если ты считаешь, что в этом случае пойти ебаться с вимом - это последовательно, у меня для тебя плохие новости.
>>1796977 Ай, блэт. И правда. Совсем забыл про вайн. Спасиб тебе.
Блять сука как первую работу найти без опыта заебало уже, на хх даже отказ не ставят просто смотрят и все сука. Уже скоро вуз закончу, а опыта так и нет аааа
Сап плюсачи. А всплывала ли где-нибудь проблема с переполнением стека в деструкторе мапы при использовании MSVC-компилятора?
Вкратце суть такова: если пилить оч.длинную конструкцию типа map<char, map<char, map<...>>> и заполнить её, то при удалении вылезает stackoverflow/segfault/еще какая дрянь.
Чтобы не быть голословным - вот очень простой код (25 строк, без выебонов): https://rextester.com/NBCLT14094 Если скопипастить его для clang/gcc, то всё отрабатывает без запинки, а вот с vc++ беда.
Проверил на своей VS19 (16.7.2) - то же самое. Есть ли идеи как с этим бороться?
Как описать тип ссылки на массив фиксированного размера? using arr_t = int[3]; arr_t& foo() {...} Так вот как описать этот тип без using? int[3]& foo() выдает ошибку.
>>1798454 Да, даже нужно. Если не выводится, можно поставить сишное преобразование к желаемому типу перед выражением. Можно даже всегда его ставить для порядка, так сказать, альтернативный интересный синтаксис.
>>1798461 Не пизди. Двум краснодипломникам месяц назад отказали, зато взяли паренька с неоконченным высшим. Он оказался гораздо сообразительнее первых двух.
>>1798892 >тайно Хуяйно, зачем анону мозги пудришь? То, что ты написал, работает только в STL контейнерах (например, когда у тебя есть std::vector, там в классе есть метод size, который возвращает размер вектора, все метаданные о векторе хранятся в объекте класса std::vector).
Но если идет работа с сырыми указателями прямо как в Си, а он имел в виду именно это, то размер куска памяти в куче хранится в хедере метаданных удаляемого куска, а это целиком и полностью работа аллокатора памяти (ptmalloc3, jemalloc и т.п., есть дохуя реализаций), который к твоему коду не имеет никакого отношения, это отдельная подпрограмма, которая управляется отдельно операционной системой. Для простоты понимая - glibc в Линуксе, там среди всего прочего есть аллокатор памяти ptmalloc3, в нем ресурсы такого плана и находятся под управлением.
>>1798928 >размер куска памяти в куче хранится в хедере метаданных удаляемого куска, а это целиком и полностью работа аллокатора памяти Именно это я и имел ввиду
Спросил в МВП, продублирую сюда. Какая сейчас средняя рыночная зарплата на руки в ДС для C++ миддла? От чего вообще отталкиваться чтобы не продешевить? Опыт есть.
В java в хэшсете используется функция hashCode(), в которой я могу выбрать значимое поле объекта, в std есть что-либо похожее, либо надо лепить свою реализацию?
>>1799154 Вставляет "ребра" из диапазона в дерево значений. Каждая итерация цикла внутри увеличивает "глубину" структуру на единицу. >>1797844 Виртуальность тут ни причем, я ж не наследуюсь ни от чего. Сделал виртуальным - ничо не поменялось >>1797633>>1797647 Увеличение стека чуть помогло, но мне на вход по идее может придти строка хоть из мильона символов, а там необходимый размер должен уходить в небеса. Мне такую самодеятельность не зааппрувят. Похуй, поставлю ограничение на входящий размер строки.
Вообще основной вопрос был в том, почему другие компиляторы спокойно прожевали этот кусок, а msvc соснул. Раньше они бывало выдавали разные результаты для хитровыебанных случаев, но эксклюзивных крашей не было. Видимо надо перекатываться на clang.
Народ, можете объяснить как вкатиться в Qt? Там ебать много всяких тулов, без пол литра не разберешься. Я понял есть версия для бомжей и для бояр. Можете скинуть ссылку на гайд по старту с бесплатной версией? Т.е. какой софт качать чтобы начать. С меня тонны нефти.
>>1800300 Ну понятно что наследование от мапы, но никаких приблуд при наследовании от stl-контейнеров сроду не вводил, всё работало.
>class ValueTreeTest : public std::map<T1, ValueTreeTest<T1, T2>> >И вообще, пожалуйста объясни, чего ты хотел добиться этой строчкой, я непонел. Шаблонный класс "m-ary tree" для поиска слов по дереву, ребра (T1) - char/wchar, значения (T2) - какие-нибудь инты. Поиск и прочую ерунду убрал, отставил только инициализацию (insert).
>где-то стоит хитрый флаг или твой код UB или баг в конпеляторе Вот я и пытаюсь понять что за флаг там нужно поставить чтоб всё работало. Никакого UB нет, код рабочий на небольшом входе лет 10. Сейчас просто дошли руки до тестов на экстремальный вход и получилось вот такое.
Ананасы, недавно слышал о такой штуке применительно к многопоточному программированию. Вместо использования примитивов синхронизации можно посылать на loopback (каждый поток слушает порт свой) пакеты. Какую-то я такую мысль читал. Может кто-то подробнее этим интересовался?
Суп, подскажите, есть ли ресурс с перечнем каких-нибудь проектов, которые можно пописать в качестве тренировки, да и более углубленного изучения языка.
>>1801064 яростно двачую насчет эмулятора, это один из лучших байтоебских проектов, по крайней мере в пространстве пользователя, не спускаясь в священное ядро, который только можно сделать.
>>1801064 >Трассировщик лучей Если я полный нуб в линейной алгебре, есть ли смысл начинать с книжек вроде "3D Math Primer for Graphics and Game Development"?
Есть конпелятор gcc 4.6.3 и собранная им же библиотека без исходников. Есть библиотека, которой для сборки нужен c++14. В наличии только компилятор с поддержкой c++11 gcc 4.8.3. Как это всё подружить между собой?
Анон, можно как-то для std::partition указать максимальное количество элементов слева? Типа есть рандомный вектор чисел, я хочу разделить на те, что меньше 10, но чтобы их было не больше четырех штук
>>1801219 Я сейчас собрал библиотеку, которая наполовину C90, частично С++11, а в нижних слоях два ассемблера (yasm и jwasm). Полёт нормальный, тесты прошли, ещё и модуль ядра соберу потом.
Правда, у меня все исходники были и версии gcc/g++ соответствуют, но, я думаю, в плане совместимости ты можешь это всё попытаться подружить.
(кроме сборки c++14 компилятором, не поддерживающим с++14).
>>1801260 Вряд ли у меня получится слинковаться с проектом без исходников, собранным с c++98, если я начну собирать свой проект с c++11. Может быть написать обёртку над второй либой, обернуть там всё в extern "c" и продолжить писать на c++98? Есть у кого-нибудь опыт написания такого?
>>1801729 А хуё ево знает. Чем контора то занимается? Стандарты пошерсти. Наверное будут вопросы про наследования и перегрузки функции при них. Про структуры данных могу спросить: все эти списки, дек, очередь и тд. Может быть что-то про сложность алгоритмов. Про универсальные ссылки и вообще move семантику. Сложно так сразу сказать.
>>1801642 Напиши тест: Класс с конструктором копирования и конструктором перемещения. Запихни его в вектор. Перемести вектор. Если вызовется конструктор перемещения, то можешь не париться
>>1802291 Я не знаю. Пример привел потому, что это первый пришедший в голову способ проверить, что там по умолчанию задано. Полагаю, если noexcept == true, то и в остальных случаях тоже.
>>1802003 Симулятор - детально моделирует внутреннее устройство. Эмулятор - только воспроизводит внешнюю работу АПИ, типа черный ящик. Пример из жизни (писал эмуляторы 6502 по работе): В старых играх программисты использовали разные трюки железа чтобы выжать производительность. Эти особенности железа не всегда были описаны в документации, и зачастую открывались случайно экспериментальным образом. В нескольких играх на эмуляторе не работала мигающая анимация заднего фона при атаках, взрывах. Оказалось, что в эмуляторе, как по документации, выводилась строка пикселей целиком. В реальности же, программисты меняли содержимое строки во время ее вывода на экран, прямо пока бежал луч по кинескопу. Для того, чтобы вывести правильный эффект, надо точно рассчитать, в какой именно момент произойдет смена пикселей в оперативной памяти. Тут бы помог симулятор, который обрабатывает команды по тактам и точно знает что происходило в чипах. Но считать все по тактам и пикселям очень долго, неприямлимо для реал-тайм эмуляции на 50-60фпс. Подобные трюки были использовались и со звуковыми чипами. По документации один канал использовал рандом для шума. В эмуляторе это и будет просто рандом. Но в реале программисты изучили и поняли устройство чипа, на самом деле там счетчик со сдвигом, и научились "дергать" его в определенный момент времени, чтобы получить конкретный шумовой эффект для ударных. Без знания устройства эмулировать это не получится. Для создания симулятора процессора, в частности, спилили крышечку чипа и он рассматривали его в микроскоп, чтобы воспроизвести детальную работу логических элементов. В частности, таким образом через 30 лет разгадали загадку, почему одна недокументированная команда процессора работала на некоторых партиях компьютеров, а на других зависала. (а на третьих зависила от того, насколько компьютер прогрелся, буквально). После чего, даже разобрались, по каким адресам памяти ее можно располагать, чтобы она работала стабильно. В эмуляторе, без этих симуляторных знаний, у тебя были бы только документированные команды, а для недокументированных у тебя была бы просто заглушка, которая могла, к примеру, выводить ошибку, или игнорироваться.
>>1801729 Базовый вопрос, который меня спрашивали НА КАЖДОМ собесе на миддла по плюсам: чем std::map отличается от std::unordered_map, начиная от реализации и заканчивая сложность поиска, удаления и вставки. Заучи так, чтобы проснувшись посреди ночи мог на него сразу ответить! А так должны спросить по сортировки и их сложность, стандартные контейнеры вроде вектора/листа, основы ООП перечислить, скорее всего будет пара базовых вопросов по темплейтам и виртуальным функциям, статическим переменным и их особенностям, аллокация на стеке/куче и прочие заковыристые места языка (но сношать тебя по ним не должны, тут скорее просто знаю-не знаю). Может задачку с литкода дадут или SQL запрос небольшой попросят написать, у всех по разному. Но map спрашивали вообще везде, так что первым делом учи STL контейнеры.
>>1797996 Всё просто. Язык C есть везде, на всех платформах, под все процессоры и ОС. Он одинаков, прост, быстро работает. С++ же не столь универсален. Не все фичи везде доступны, где-то даже компилятора не найти. В общем, подлинно портируемые программы стараются писать на C. Тогда они заработают на любом утюге.
Здорова пацаны! А давайте поговорим на тему вакансий программистов под C++. Правда ли, что язык сдувается? Что вакансий всё меньше, а зарплаты уступают разработчикам на других языках? Не лучше ли вместо всех премудростей плюсов, просто проштудировать Java и идти грести бабло?
>>1802597 >Для создания симулятора процессора, в частности, спилили крышечку чипа и он рассматривали его в микроскоп, чтобы воспроизвести детальную работу логических элементов.
Какие-то сказки венского леса. Интересно, сколько они положили сил, времени и денег на это "спиливание крышечки и изучение"? Ради чего такие заморочки? Ради парочки глючных игр? Да ещё 30 лет спустя. Кому это понадобилось?
>>1802597 И да. Засунь свою доморощенную терминологию в задницу. Меня как-то не ипёт это твоё деление на "симуляторы" и "эмуляторы". Откуда ты это притащил? Каждый гандон будет изобретать термины и тонкий их смысл, а все остальные должны послушно всё это жрать.
>>1802597 Если что, могу ещё сообщить шта эмулировать ньюансы работы электроники - это не хуй собачий. Имею скромный опыт разработки цифровой схемы. На симуляторе её логики (на уровне вентилей) она ведёт себя не вполне так, как вживую в железе. В симуляторе все относительно прямо и просто. А в железе вылезают косяки. Воспроизвести это программно совсем не просто.
>>1803221 Относительно других языков - вполне. Говорят, сейчас на плюсах нужно работать в нишевых областях, где требуется высокая квалификация, дабы прилично зарабатывать. Плюсы сдали поляну языкам, на которых писать код проще и быстрее (не код быстрее, а производительность программиста выше). Посмотрите -- даже в геймдеве, традиционной поляне C++, Unity использует C#. Что на чём вертится не так важно, эти фундаментальные вещи не занимают большой доли рынка. Впрочем я не говорю про примитивные задачи, которыми занимаются толпы кодомакак. Клепание сайтиков на PHP каком-нибудь. Я про языки и области применения с оптимальным соотношением профит/усилия_на_изучение.
>>1801064 Можно ещё софтвер-рендерер или 3D игру, вместо трассировщика. Впрочем, если это не по зубам, можно и 2D игру. Изометрическую какую-нибудь. Стратегию, например.
>>1803227 Это сделали демосценеры, потому что охуевали с мистики почему у одного работает а у другого нет, а компов у них и так навалом. А фанатов у 6502 полно, комьюнити огромное, очень уж удачный проц был. До сих пор под него игры каждый год выходят.
>>1803242 >производительность программиста выше Там где нужна производительность и в плане скорости работы программы и в плане скорости написания програм возьму реального профессионала. Но ладно, не отрицаю что зачастую прототипы програм пишут на других языках, тру. >даже в геймдеве Ни один ААА проект не станет использовать юнити и шарп в качестве инструментов. Даже при современных идиотских стандартах. >эти фундаментальные вещи не занимают большой доли рынка Архитектуры x64 и arm самые распространённые в мире на сегодняшний день. Весь лоулевельный софт для взаимодействия остальной системы с ними написан на чистом С или порой на С++. Это львиная доля рынка и пока не будет готов полностью рабочий квантовый компьютер тут и говорить нечего. >с оптимальным соотношением профит/усилия_на_изучение JS макаки радуются 120к в месяц в лучшем случае, люди с реальными знаниями и страстью к технологиям уезжают в Германию/Калифорнию/Канаду.
>>1803242 Экстремальное байтоёбство сейчас на Zig модно писать. Это по сути обёртка на LLVM с кучей сахара. Крестовики обзавидуются местным чудесам синтаксиса.
пчелы, норм ли для в качестве работы для диплома написать текстовый редактор ? (со шрифтами, поиском редактированием). Вначале хотел сделать что-то типа экселя, но понял, что не справлюсь с таким объёмом работ.
>>1803483 Если использовать готовые либы то да, за 2 вечера можно взять какой-нибудь imgui и юзать просто textbox. С нуля даже просто отрисовку текста пиздец как сложно сделать. >>1803470 Сомневаюсь, что тебе в вузе разрешат такое брать на диплом. Я вот тоже хотел на плюсах что-то низкоуровневое на дипломе писать, так меня нахуй послали и сказали "А КАК ЭТА МОЖНА ИСПОЛЬЗАВАТЬ В БИЗНЕСЕ??7" ну и пошел делать сайт на шарпе...
>>1803485 >>1803487 Извините, парни. Совсем забыл где посчу. >>1803486 Сочетаю образование физика с образованием софтварного инженера и работаю в лабе по изучению виртуальных частиц. Светодиодами мигать тоже умею.
>>1803494 Ничего страшного, малыш. Если попробуешь отрендерить шрифт со всеми нюансами выключки, скейлинга, кернинга, трекинга, сглаживания, прокрутки без глюков, немного собьешь спесь, может за полгодика научишься рисовать что-то более менее сносное.
>>1803497 Дедуль, чтобы получать свои 13к евро в месяц мне не нужно дрочить никакие шрифты, это прерогатива людей уровень развития которых остался на уровне текстовых редакторов в качестве дипломки. >>1803499 >с образованием софтварного инженера Даже близко не он, сижу код за другими комментирую.
>>1803537 Ну ок, для такого маэстро как ты не составит труда показать легкость тир5, сейчас как выходные будут, значит сможешь сделать такую легкую вещь как копия нотпада за вечер, верно? Ты же не пустозвонный тролль.
>>1803483 Какая связь между временем на реализацию, и временем на то, сколько нужно учить компьютерные науки, чтобы уметь это написать? А главное, причем тут опыт (который нарабатывается в коммерческих компаниях) и академическое обучение?
>>1803543 Точно не изобретение жигуля и претензия на то, что это ауди. >>1803547 Обязательно. Ты ещё методичку скинь, я тебе и диплом с 0 напишу. О, и адрес, адрес тоже. Я тебе свою тян пришлю, поебёшься на халяву. >>1803550 В условиях постсоветского ущербного образования - связи никакой. В то время как в Европе и Северной Америке 4 года обучения выдают абсолютно готовых к комерческой деятельности спецов методички Священной в лучшем случае к 4 курсу высрут человека способного выёбываться умением в рендеринг текста. Плюсом идёт всеобщее ебланство, но об этом даже говорить не приходится.
Имеется следующий класс class Alpha { Alpha(const Alpha& a){/.../} }; Какие члены класса в данном случае будут автоматически определены при создании класса?
>>1803561 >4 года обучения выдают абсолютно готовых к комерческой деятельности спецов Ну то есть это уровень ПТУ, а не Вузов, которые должны давать научные знания, понятно.
>>1803561 >>1803470 Вот тебе пример тем дипломов из моей шараги. Мб что-то подойдет
«Разработка стохастического метода оптимизации на основе механической аналогии» «Анализ вариабельности сердечного ритма» «Модификация комплекса ПА9» «Создание платформы для локального развертывания клиентской части веб-приложений» «Разработка клиентской части информационной системы по организации гоночных такси» «Модельно-ориентированное проектирование в основе программирования логических интегральных схем» «Исследование многосеточных методов решения систем линейных алгебраических уравнений» «Разработка модуля экспорта для системы проектирования калибров для профилегибочного производства» «Разработка витрины интеллектуального анализа данных биржевых операций» «Исследование режимов максимальной и минимальной диссипации механической энергии в простейших силовых сетях методами математического моделирования» «Динамический и прочностной анализ робота-манипулятора» «Разработка программной реализации удаленного запуска графоориентированных решателей систем инженерного анализа» «Разработка хранилища данных для анализа биржевых операций» «Разработка приложения для организации бизнес-процессов проектирования ПО» «Оптимизация хранения медицинских данных на основе использования технологии блокчейн» «Численное моделирование движения многосекционного бурильного инструмента внутри скважины» «Разработка системы детектирования дороги для мобильного робота» «Разработка информационной системы автоматизированного доступа к онлайн-сервису товаров и услуг» «Разработка безопасного генератора случайных чисел в блокчейне» «Разработка серверной части информационной системы для заказа скоростного такси» «Разработка мобильной части программно-аппаратной системы голосового управления транспортным средством» «Модельно-ориентированное проектирование в основе программирования микроконтроллеров» «Разработка NX приложения для редактирования размерных цепей в ТУ» «Использование концепций создания пользовательского интерфейса для кроссплатформенных приложений на основе UX-исследований» «Разработка Web-ориентированных CASE инструментариев для автоматизации генерации объектов на основе шаблонов» «Разработка пользовательского интерфейса инвестиционной игры с использованием Unreal Engine 4» «Исследование масштабируемости работы серверного программного обеспечения в «облачной» инфраструктуре» «Разработка редактора нейтрального слоя профилей для системы проектирования калибров профилегибочного производства» «Разработка подсистемы структурного анализа сложных изделий» «Разработка аналитической подсистемы для исследования банковских операций юридических лиц» «Разработка web-ориентированных CASE инструментариев автоматизации построения исходных кодов графоориентированных решателей» «Разработка нейросетевого ансамбля для прогнозирования банкротства ресурсоснабжающих предприятий» «Разработка автоматизированной системы поддержки трейдинга» «Разработка WEB-аналитической подсистемы исследования цифровых биологических сигналов» «Разработка редактора профиля для системы проектирования калибров профилегибочного производства» «Разработка подсистемы визуализации для системы проектирования калибров для профилегибочного производства» (хвост по КП за прошлый семестр) «Разработка математической модели амортизатора самолета для комплекса ПА9» «Разработка системы автоматизированного проектирования приложений среды ROS» «Исследование распределения статического заряда по поверхности проводящего тела» «Разработка программного комплекса для линеаризации избыточных механических структур» «Разработка архитектуры и реализация программного комплекса оптимизации робототехнических приложений» «Разработка веб-приложения для визуализации многомерных данных» «Анализ конечно-элементной сетки в приповерхностном слое изделия, усиленного «наклепом» «Динамический и прочностной анализ элементов механизма перекоса винта вертолета» «Машинное обучение на основе непрерывных динамичечких систем» «Реконструкция эффективных кривых деформирования ПКМ на основе аппроксимации кривых деформирования отдельных компонентов ПКМ» «Разработка информационной системы балансирующего рынка электроэнергии» «Разработка модели деформации листовой заготовки при формовке роликами в системе LS DYNA» «Разработка web-приложения для визуализации многомерных дан-ных» «Исследование динамики контактных сил в неконсервативных упругих системах» «Разработка эффективного алгоритма поиска с возвратом на основе эвристик» «Разработка распределенного комплекса дистрибуции программного обеспечения»
>>1803562 Вроде бы деструктор всегда, копи конструктор потому что класс простой, все остальное отключено явным конкструктором копирования. Могу ошибаться, я не эксперд в стандарте.
>>1803589 > «Разработка редактора профиля для системы проектирования калибров профилегибочного производства» А вообще одна хуйня типа посчитать говно по формуле. Вообще не программирование. Зато лохчейны порадовали, но вот там реально на 2 вечера работы.
>>1803594 >«Разработка редактора профиля для системы проектирования калибров профилегибочного производства» Так при чём тут текстовый редактор со шрифтами, поиском редактированием?
а блокнот и не надо на крестах писать на как не нужно - "движок" то все равно придется на си или крестах писать но нужен быстродействующий высокоуровневый скриптовый язык, он должен лежать в основе любого редактора что больше всего бесит в емаксе и виме? - это емакслисп и вимскрипт бесит просто до зубовного скрежета но коммьюнити вложило в эти редакторы миллионы человеко-часов, и все продолжают стонать и писать на этих хуевых скриптовых расширениях
>>1803615 >стонать и писать на этих хуевых скриптовых расширениях Для авторов может и да, а у меня они просто работают, стонать не приходится. (не отрицаю их хуёвость).
>>1803610 >смежного Действительно, ты же аутист. А это тоже не смежное? >Использование концепций создания пользовательского интерфейса для кроссплатформенных приложений на основе UX-исследований >Разработка web-приложения для визуализации многомерных дан-ных Это еще в разы проще.
Можно ли в VS2019 увидеть где в коде ещё используется переменная как в Notepad++, там при двойном клике на слове оно выделяется везде где встречается в том числе и на прокрутке, в VS только в текущем окне.
>>1803654 Задачки которые в унике дают делаю. А если делать свой проект то на матан времени не хватит. Думаю забить хуй на задачки уника и делать что-то своё, тупа списывая у одногруппов дз
>>1803666 Я тебя понял. Отвечаю последний раз и ухожу на работу а ты продолжаешь троллить своей тупостью других.
>визуализации Не принта, а именно визуализации >многомерных дан-ных Это могут быть данные любого вида. Что подразумевает что текстового вывода здесь может вовсе не быть
В подобного рода проектах тебе нужно будет реализовать оптимизацию быстродействия и защиту от битых данных/устранение шумов etc. а не ебаться со шрифтами.
>>1803497 >отрендерить шрифт со всеми нюансами выключки, скейлинга, кернинга, трекинга, сглаживания, прокрутки без глюков ага, а потом понимаешь что это все костыли-костылики а идеал это растровый шрифт + система с выстовленным ppi==dpi (и да, винда тут уже не подходит)
>>1803676 Ты считаешь что в шрифтах не надо ебаться с быстродействием? Лол, я понимаю если бы мы сидели в js треде, но в с++ такие перлы выдавать это конечно лол.
>>1803654 И оглядывайся на примеры (хорошего) кода. Почитай, как другие люди пишут. Передирай у них удачные моменты. Как они оформляют код, как его организуют, как устроены и работают программы.
Вот можно поковырять исходники: - Библиотека xerces-c. Это XML парсер. Очень чисто написана. - Стандартная библиотека, которая прилагается к твоему компилятору. Поковыряй, как там написаны контейнеры, например. - Исходники игр, игровых движков. Doom 2, Doom 3, Unreal - Исходники всякого софта, вроде Linux, FreeBSD, Libre Office, Apache, Chromium Browser
Разработай свой собственный styleguide для того кода, что ты сам пишешь.
>>1796605 (OP) Как же меня рожа этого Александреску на первой картинке бесит. Так и хочется в неё кирпичом запульнуть. Ну почему программисты сплошь и рядом выглядят не как фотомодели?
>>1803790 >примеры (хорошего) кода >Стандартная библиотека, которая прилагается к твоему компилятору Ебанутый? Там же тысячи строк #ifdef __CXX_EXPERIMENTAL_CXX0X__ костылей под разные версии крестов/архитектуры/ОС с __gnu_debug_std::__М_такими_именами_переменных___ и мудацким форматированием пробелами пополам с табами.
>>1803731 Потому что большая часть перечисленного касается больше расстановки буковок, какими бы они не были (растер/вектор). А если масштабировать шрифт (растр то у тебя под 1 размер будет), то и со сглаживанием тоже возиться.
>>1803804 Нуу. Пусть это не хороший код, но тоже экспириенс на тему "вот так тоже бывает". Разве не интересно, как устроены и работают вот эти самые контейнеры, про которых столько говорилось?
>>1803831 У нас опенспейс, и мне приходится буквально целыми днями просиживать, вперясь в ебло соседа-программиста. И кодить-кодить-кодить. Не видя ничего кроме компа и офиса.
Уже не уверен, правильно ли я выбрал профессию. Вон - адвокаты. Постоянно какая-то драма, люди всякие, интересные случаи, поездки, трепаться надо. А тут што?
>>1803862 Потому что кодить надо для души и себя, а работы в ИТ кроме кодинга полно. Я вот хожу на работу, пью чай, скролю двачи и попутно запускаю скрипты на PowerShell, которые делают почти всю работу за меня. А платят как местным макакам, которые по 12 часов сидят за мониторами и не могут даже пернуть. Ещё и ходят на работу по СКУДу, повинуясь бездушной машине, считающей их часы и опоздания.
>>1803874 Ещё одна трабла - преимущественно мужской коллектив. Что в инсте одни мужики, что на работе. Где-б няшных тяночек найти? Меня от мужиков уже воротит. Особенно на работе. В инсте все молодые, а тут какой-то мрак.
>>1803790 > Исходники всякого софта, вроде Linux, FreeBSD
Хочется почитать исходники разного ПО, но вот без навигации по вызовам функции, подсветка используемых переменных и прочего крайне не просто. Какой редактор может просто "сожрать" папку с исходниками по которым хоть как-то можно будет перемещаться?
Куда вкатиться на плюсы в москве джуном? Около часа листал хх, обнаружил штук 10-15 вакансий на весь город. Так и должно быть? На джаве в разы больше почему-то.
>>1804170 Пару задачек на логику придумай, спроси про современне фишки языка - чтобы не шарахались от твоего проекта. Указатели умные; попросить записать из двух потоков в один ресурс; виртуальный деструктор; мув-семантика; crtp, специализация шаблонов; Спроси, читал ли он/она какие-нибудь книги и что оттуда вынесли. Ну и правило номер ноль: если от кандидата воняет, то с собеседованием нужно не затягивать.
Вопрос по поводу архитектуры сервера. Сначала идет команда, потом данные. Даннве и команду отправить в одном запросе или сначала отправляю команду, а в следущем запросе данные что мне кажется более плохим вариантом. Тогда мне лучше придумать для каждой команды свой код, чтобы размер команды был одинаковый для любой команды?
>>1804382 Эти два сообщения в любом случае попадут в один буфер сокета. Даже если ты как-нибудь сумеешь разделить их при отправке, со стороны приема всё в один буфер улетит.
Можешь сначала посылать пару байтов, сигнализирующих, что это команда либо данные. Потом размер команды\данных. А после уже данные согласно размеру.
>>1804395 Спасибо. Раньше никогда не писал чего то большого. Обычно задачи какие нибудь решал или редко что то для себя. Там обычно так: есть идея, чуть обдумал, может на листике че то написал и записал на компе. Тут блин нужно сначала продумать заранее как оно все будет работать, а потом писать, иначе хуйня получится
>>1804382 я бы выбрал уже существующий протокол обмена (бинарный или текстовый) и использовал его либо бы готовую реализацию, либо, если бы захотелось велосипедостроения, то сделал бы сам по существующим спекам но даже второе не советую а "проектировать" свой протокол это надо очень умным и опытным быть раз ты задаешь такие вопросы, ты явно не из тех ребят
>>1804395 > Эти два сообщения в любом случае попадут в один буфер сокета. Как будет время я это на компе проверю . Да и вообще уточню как boost данные обрабатывает, но вопрос тогда. Раз сообщения с любом случае попадут в один буфер, то как тогда данные скачивают большие. Программы не хранят же в буфере 10гб игры. Скачали кусок, очистили буфер. Как я понимаю. Ну я по идее тоже так смогу. Ну и так буду разделять сообщения
посоны, поступил в вузик, будет с++, сказали будем работать по книге "всеволод иванов прикладное программирование на с/с++ с нуля" по отзывам - книга максимальная хуета, или для сойдёт?
>>1804454 Ну изучатели буста это отдельная секта, солидарен. Но ТУРБО мать его СИ. Серьезно. Даже в 2010 это был лол кек чебурек. А уже в 2020 подавно.
>>1804449 На самом деле не важно. Ну, то есть, понятное дело, что книга говно. Как и Turbo C.
Но я не думаю, что это как-то должно сильно мешать. Всё равно нужно дохуя самому изучать, использовать разные нормальные компиляторы, читать статьи, ковырять стандартную библиотеку, пробежаться по хотя бы одной обзорной книге, разобраться в отличиях между стандартами.
А в каком там виде вам будут хеллоу-ворлды демонстрировать — на мой взгляд без разницы.
>>1804455 Да, к остальному не придираюсь, очень смешно.
>>1804402 Ты вызов read() видел? Ты ему задашь считать 10ГБ, а функция вернет что считал, например, 1 Мб. По хорошему ты её в цикле вызываешь, до тех пор, пока все данные не будут считаны. Параллельно, при достижении определенного размера буфера, пишешь в файл, чтобы не держать всё в оперативке.
>>1804458 Так себе С или С++? Для С есть другой тред, в конце концов бери Кернигана и Ричи. Тоненькая книжечка просто и лаконично описывает язык. Для С++ Липпман и Прата, Шилд ещё (синенькая такая кажется, в чём-то устарела наверняка, но для примитивного уровня достаточно)
>>1804382 Собираешь в достаточно большом буфере команду фиксированной длины, длину данных и данные, сколько влезет. Пишешь в сокет. Продолжаешь писать остаток данных.
Аноны, спрошу тут. На работе есть большая прога, ~3 МБ исходников, написана 50/50 в С/С++ -стиле В ней проблемы с памятью, работает в 95% при компиляции в VS2008 в релизе, в дебаге падает с рандомными ошибками assess violation и т.д, в VS2015 работает неправильно и иногда падает.
Прошу советов как это можно дебажить. Есть ли какая-нибудь прога чтоб туда логи сырой памяти структуры вставить и ее описание и посмотреть как со временем значения в этой структуре менялись? (околориалтайм и взаимодействие с несколькими железками, брейкпоинт в студии только 1 раз поставить можно, после всё собьётся и перезапуск и всё чуть по другому будет)
>>1804675 Для начала пройдись статическими анализаторами, например clang-tidy. Потом прикрути формирование дампов, узнаешь хоть, где вылет происходит.
Напиши пару тестов на предполагаемые методы. Введи логирование входных/выходных данных. Поиграйся с брейкпойнтами в студии: им можно задавать условия или смотреть количество срабатываний без остановки программы.
Стоит ли вкатываться в Qt если собираюсь делать приложения только под винду? Вообще считаю что Unix подобные системы должны сдохнуть, это тупиковый путь развития
По моей задумке пользователь в браузере должен сгененрировать карту и потом сохранить ее на сервер. При этом нужно исключить момент, когда два человека случайно создали одну карту. Карт может быть, много, хоть и весят они мало. Сравнивать все созданные карты с только что созданной выглядит долго. Заранее создать пул со всеми возможными картами тоже кажется не идеальным решением. Потому что размеры могут быть любыми. Конечно можно сначала создать пул сначала с размерами до 100x100 например , а потом его расширять, но тогда будет много не используемых карт, но место занимающих. Вероятнее всего, проблема не нова, и уже есть какое то оптимальное решение.
>>1804752 Хотя можно наверное и оставлять дублткаты. Возможно ничего страшного не случится, если будут созданы 2 одинковые карты. Единственный мнус в том, что когда пользователь будет потом искать карты, он может найти две одинаковых. хотя можно будет вручную такое отслеживать переодически, в моменты, когда сервер не нагружен и дубликаты сливать в один элемент.
>>1804731 >Для начала пройдись статическими анализаторами PVS Studio юзаю, оно норм? >прикрути формирование дампов Как правильно это сделать, чтобы >узнаешь хоть, где вылет если они в рандомных местах >Напиши пару тестов Почти вся прога - симуляция физических процессов, написана давно не нами, вообще хз что там внутри происходит (принимает структуру 1000+ полей) >Введи логирование входных/выходных данных Вот я и хочу с минимальной болью это сделать, сохранять ту структуру на каждом такте работы, что может её потом из лога в виде дерева показать как в отладчике студии? >Брейкпоинты, задавать условия Уже мало помогает
>>1796605 (OP) Помогите студню-дебилу Из навыков программиста обладаю только умением гуглить поэтому нашёл решение своей задачи на спп Проблема такая - возможно ли перевести это решение на python или pascalABC.net? я НЕ прошу переводить просто подскажите софт/идеи, ибо я совершенно не знаю спп, а сроки горят. Ну или нахуй пошлите тоже можно Собственно код:
аноны обьясните плиз этот синтаксис, что делает двоеточие после функции Player? class Player : public Entity { private: string m_Name; public: Player(const string& name) : m_Name(name) {} string GetName() { return m_Name; } };
>>1805122 Я про книгу Страуструпа "Язык программировния C++". Желательно читать 4-е издание, про C++11. Только вот он на английском. Перевода нет. Ну можно ещё 3-е специальное издание. Но тогда ты будешь изучать старую версию плюсов. В новой многое поменялось. Я рекомендую эти толстые книги. Именно в них расписана вся-вся-вся суть языка. А другие его книжки - фуфло, язык по ним ты не выучишь. Там дополнительная или обзорная информация.
>>1805141 Не совсем, у тебя сначала вызывается дефолтный конструктор для поля, а потом копирующий конструктор. После двоеточия только один вызов конструктора с аргументом.
>>1805250 Только после двоеточия, ну или прямо в теле класса значением по умолчанию. Компилятор не знает, что ты будешь делать в теле конструктора, поэтому все члены класса так или иначе должны быть сконструированы до него, включая ссылки и объекты без дефолтных конструкторов.
>>1805269 >14 17 Ничего серьезного, по большей части синтаксический сахар и небольшие улучшения. >20 Ещё пару лет на него только переходить будут, успеешь догнать
>>1805394 А потому, что каждый объект несёт свой тип. И это безумно мощно и удобно. Неявные проверки, кстати, в старину отключали в отлаженных программах. мимо из лиспа
>>1805559 > И это безумно мощно и удобно. Ну я в qt тоже могу в рантайме узнать какого класса объект каким методом меня вызывает, узнать все про его поля и методы, но требуется это обычно чуть чаще чем никогда.
>>1796605 (OP) Пацаны! Кто программировал WinAPI GDI, подскажите плиз. Вот есть такая функция GetDeviceCaps(), она для Device Context возвращает его характеристики, вроде разрешения экрана. Меня интересует её параметр PLANES - количество цветовых плоскостей. Функция выдаёт мне тут 1. Кто-нибудь, может объяснить, что это такое? Я понимаю, что есть BITSPIXEL - количество бит на пиксель (у меня 32). Оно может быть 8, 16, 24, 32. Это настраивается в Свойствах Экрана. Но PLANES? Что это за плоскости такие? Нигде в официальной документации описания этого я не нашёл. Я слышал, в видеопамяти, бывает отдельно лежат массивы красных, зеленых и синих пикселей экрана. Друг за другом. Вот это и есть плоскости. Это правда? Если так, нахуя так странно делать, и какой прок мне знать их количество?
А ещё, мне хотелось бы знать про GDI - есть ли в нём способ получить прямой доступ к памяти, и рисовать прямо устанавливая цвета пикселей без вызова SetPixel(), т.к. это тормозит. Вот в DirectX можно сделать Surface, для неё вызвать Lock() и получишь искомое. А в GDI можно? Что-то я это не нахожу.
>>1805675 > А в GDI можно? Неа, директ и создали чтобы это обходить, гди слишком тормозной для игор. Я где-то слышал это даже изначально не мс разработка. Про остальное хз, наверное что-то связанное с рендером на любом говне.
>>1805394 Это пиздос, когда нужно написать больше 30 строчек на питоне, ты вместо этого сидишь и дрочишь преобразования одних типов в другие, потому что явно сука нигде не указано, что функция возвращает и какого типа у неё параметры.
>>1805682 очевидно что когда тебе нужно "преобразовывать" типы, то ты уже проебался в лучшем случае делаешь костыль, а в худжем вообще используешь предложенный тебе программный код не по назначению в этом и смысл статической типизации
>>1804988 Ты ж сказал > Сравнивать все созданные карты с только что созданной выглядит долго. А с хешированием надо сравнивать не все, а только где хеши совпали
>>1805675 >есть ли в нём способ получить прямой доступ к памяти, и рисовать прямо устанавливая цвета пикселей без вызова SetPixel() Да, посмотри GetBufferedPaintBits
Вкратце делаешь пару BeginPaint/EndPaint как обычно, внутри них делаешь пару BeginBufferedPaint/EndBufferedPaint, и внутри них уже вызываешь GetBufferedPaintBits чтобы получить буфер, куда писать пиксели
>>1805675 > Planes Плоскость может содержать для каждого пикселя один или несколько битов. Так делали для экономии памяти и упрощения адресации: 3-битный цвет удобно раскидать по трем плоскостям, например. А если тебе при этом нужно только 2 цвета, ты работаешь с одной плоскостью, а остальные две просто сидят в устройстве и забиты нулями. Современные драйверы, скорее всего, будут всегда содержать одну плоскость.
>>1805848 В том, что когда ты ищешь по хешу, ты не сравниваешь хеш каждой старой карты с хешем новой. Ты считаешь хеш новой, и он тебе сразу дает адрес "хранилища" всех остальных карт с таким же хешем, и дальше ты уже ищешь только среди них, сокращая количество перебора на порядки. Что является "хранилищем" зависит от того, где это всё хранится. Если на диске, то хеш может использоваться как имя папки, например. Ну или если это добро целиком в память загружено, то можно просто в unordered_map все эти карты затолкать, и скормить ему функцию хеширования, остальное он сам сделает.
Сап аноны. Вот задача. Вот решение. Оцените: Задача: Вычислить число повторений в заданном разряде (не выше единиц тысяч) случайного десятичного числа. Использовать оператор множественного выбора switch и генератор случайных чисел rand(). Вывести результат. Пояснение: нужно посчитать сколько раз будут повторяться цифры 0, 1 .. 9 в одной из позиций числа для N случайных генераций числа.
>>1806353 Нахуя тебе этот свич кейс если у тебя в любом случае независимо от результата ch%10 будет инкремент в sum[ch%10]? Можешь просто оставить sum[ch%10]++.
Репетиторы с авито в конец охуели, анончик, может ты подскажешь почему компилятор схлопывается? В коде пытаюсь рандомному слову из вектора поменять символы на черточки:
>>1806451 Пидор демпингует, а ты в 2020 не можешь:
1)Скомпилировать сам и посмотреть какую ошибку компилятор выдает 2)Поискать её в гугле 3)Если на предыдущие пункты айкью не хватило, то хотя бы дать анончикам код в удобоваримом варианте, которые на доске описаны.
>>1796605 (OP) Есть где-то Argon2id/chukwa майнер, с поддержкой СUDA 8.0, для GPU-майнинга Nvidia-видеокартами, TurtleCoin-based монет с кастомными префиксами, и прямо на daemon? Насколько сложно заебенить такую хуйню? Можно ли её заебенить, дополнив этот майнер https://github.com/turtlecoin/turtlecoin/tree/development/src/miner какими-то cuda-файлами и задав кастомный префикс, в виде магического аргумента командной строки?
Можете посоветовать ютуб канал где норм обьясняют плюсы, мне для ue4 надо, знаю некоторые темы поверхостно типа абстрактные классы виртуальные функции и тд но как то не уверен в своих знаниях, практики не было особо, например ща не знаю как реализовать поиск предметов в инвентаре для квеста, нужно написать предикат но я хз как, там еще и лямбду использовать надо которую я впервые вижу и это пугает, да и вообще не понимаю как эту документацию читать, https://docs.unrealengine.com/en-US/API/Runtime/Core/Containers/TArray/FilterByPredicate/index.html в синтаксисе одно а на примерах вообще другое вижу, простите за такой высер, если не канал то хотя бы дайте темы я там сам нагуглю
>>1807329 Столкнуться с подобным на рабочем месте — мой основной страх перед трудовой эмиграцией. Как блядь насмотришься на этих хуесосов, настроение сразу падает.
Аноны, подскажите, а бывают хипстерские digital-nomad c++ девелоперы в 2020? Или это только в потном офисе полном задротов сидеть и писать микрооптимизации? Я не троль, вопрос искренний
>>1807629 Это зависит от железа, по большей части. При разработке на пк с big endian столкнешься пожалуй только в обработке изображений, да передаче данных по сети.
>>1807618 Лучше всего прогать так, чтобы зависимости от порядка байтов не было. Не нужно из указателя на int извлекать char. Прочитай весь int, выдели char операцией типа & 0xFF.
>>1807644 Ну мне нужно отправить поле игровое. Я его так и отправлял. Привык, что порядок такой ну и отправил. А на сервере какая то ерунда началась. Когда вывожу в сыром виде, все ок, работает. Пытаться обработать, запихнуть в примитив через указатели и начинается что то странное.
>>1807648 Чтобы что-то куда-то отправить (и где-то принять), нужно это сперва сериализовать в соответствии со строгим протоколом, иначе уязвимая система получится.
>>1807656 Ну как я это представил: первый байт тип команды, потом в зависимости от команды структура разная. Для команды сохранить поле структура такая: в начале 2 четырехбайтовых поля размера поля, а потом само поле в бинарном виде. Поле это по сути размеченый в клеточки прямоугольник, так что по размерам можно спокойно работать с полем. Двоичные данные приходят нормально, я проверил. Дальше что произошло я уже объяснил.
У нас на одном из проектов в телекоме была либа написанная в стиле до-С89 скомпиленная в 95 году. Переписали ток в прошлом году на с++17 когда под изменения в спецификации надо было добавить небольшой функционал и то просто потому что тот сурц ни одним компилятором уже нахуй бы ни собрался
Мб кто то шарит, вот сделал курсач в clion сервер на линукс, стандартная библиотека + сокеты и даже в режиме отладки в clion он мгновенно отвечает, а как запускаю в рабочей среде, то все пиздец, ответ от моего сервера 10 секунд блять, да как так то?
>>1796605 (OP) Внимание, нюфага вопрос. Почему когда я гуглю какой-то вопрос, то там обязательно присутствует кусок говно кода? По типу гуглишь какую-то функцию из стандарт библиотеки, а какой-то 12лет пробраммист переписал эту функцию на свой лад с лярдом костылей и говностилистикой.
>>1808833 Так в случае с call_once надо будет написать все то же самое, только оно будет еще и в call_once обернуто и заведена дополнительно переменная под флаг. Может я что то не так понял?
Обьясните дегенерату на пальцах. Что это означает?
"Значение типа const char * нельзя присвоить сущности типа LPWSTR" Говорят нужно включить в настройках проекта многобайтовую кодировку, но не могу найти где.
>>1809213 Тупит на эти две нижнии строчки. STARTUPINFO startInfo1 = {}, startInfo2 = {}; startInfo1.lpTitle = "Child Process 1"; startInfo2.lpTitle = "Child Process 2";
>>1809898 Можно. Компилируешь ndk и получаешь .so Минимальная обвязка на java там все равно будет чтобы запустить + многие функции API тебе придется дергать через jni интерфейс.
Как я это понимаю - создаётся массив из указателей, которые хранят адреса на данные типа инт.
Иле же второй вариант - выделяется группа адресов под тип инт?
Нахрена я это спрашиваю.
Идея следующая - избежать лишних копирований. Вот есть массив размером 30 и два по 5. Задача скопировать туда данные с неким смещением от начала массива и есть два варианта первый и простой - просто копируем со смещением, второй - заполнить итоговый массив лишь адресами на элементы каждого из массивов. У меня путаница и недопонимание - мне для воплощения второго плана нужен просто массив созданный как выше или всё таки нужен массив указателей на указатели.
>>1809961 Нихуя не понял, адрес если что больше весит чем инт в х64, так что не сработает твой план оптимизации. Оставь как есть копирование и не еби себе мозг.
Простите сетевого инженера за вероятно тупой вопрос. У меня знакомый пытается найти джуном/стажером вакансию на крестах. Знает судя по всему не очень много, в основном сам синтаксис и с winapi работал. Печатает двумя пальцами. Я ему говорю что затея выглядит тупой и пусть с его уровнем изучает другой стек куда проще вкатиться. Он всё ищет вакансию. Мне интересно, это реально вообще такое найти? Или стажерских/джуновских вакансий на данном языке в России нет в 2020?
>>1810258 А какой стек вообще вкатышу надо знать? У меня создаётся впечатление что с++ язык для того чтобы лазить под капот систем, соответственно нужны хорошие знание в целом в компьютер сайнс.
>>1810274 ну я, не смотря на свою адовую зарплату крестовиком таки считаю, что сейчас правда 0 смысла вкатываться в кресты, только по очень большой любви.
Сишарп\го\тупоскрипт - сьедобно и оплачивается, как минимум, не хуже
>>1810283 я вкатился по очень большой любви, и потом мне 3 раза подряд охуительно повезло с работой. С++ я знаю на очень серьезном уровне, и вообще да, разбираюсь дохера в чем.
Но, судя по всему, я бы мог еще х2 получать, удаленя на какой-нить параше типа тайпскрипта.
Сап ночной, есть небольшая самописная либа на плюсах, для сборки которой используется cmake. Вопрос: чем бы вы воспользовались для тестирования либы? Я хз юнит-тесты это или нет, но нужно просто подергать на либе нужные функции с известными параметрами и убедиться, что возвращаются правильные значения.
>>1807533 бывают бывают. В Нвидии пара команд, типа той же КУДЫ - полностью на удаленке еще до пандемии была. Другое дело, что там официальное трудоустройство и с налогами есть нюансы, если ты будешь больше полугода жить не в стране устройства...
Пришел с C# и что я вижу? Чтобы сделать гуй - надо ставить и учить фреймворк, чтобы юзать шифрование - надо искать либу, и разбирать тонны кода, да бля - самое простое base64 надо писать с нуля (искать либу). Конечно супер, что сказать.
>>1810893 Можно подумать в сисярпе не так, лол. Так же будешь учить фреймворки для гуя (что там с WPF под линупс?), так же будет какой нибудь BouncyCastle или BCrypt (постоянно вижу кучу thirdparty dll в папках с прогами, тот же Newton для json). Ничем тащемта не отличается от поиска всяких пакетов в нугете или что там у вас, только они распространяются в естественной форме - в виде исходников.
>>1811039 Я понимаю, что помогаю тому кому не надо бы помогать, но if тут видимо нужен чтобы проверить четность степени и поставить минус, а цикле ты просто пробегаешься по степеням x как указано в формуле и получаешь итоговую сумму
>>1811048 Можно заабузить умножение на -1. Завести переменную равную -1 в каждой итерации делать *= для нее на -1. В итоге выходит как надо в первой итерации -1 х -1 = 1, во второй 1 х -1 = -1 и т.д.
>>1811087 Здравая мысль, ибо лезть в такие дебри только если это действительно имеет смысл, иначе трата времени получается. Узнаю наше бобразование, где за шесть лет ничему не научат.
Сап, заусманенный. Нужен совет. Есть 2 структуры (пикрил 1), как видно они почти похожи, но некоторые поля имеют другой размер, почти все значения этих полей будут повторяться, что для одной структуры что для другой. Структуры будут записаны в файл. Так вот, как заполнить структуру так, чтобы не плодить одинаковый код как на (пикриле 2)? Может это нормально, но как по мне всрато выглядит. Думаю можно разбить структуру и составлять её по кускам и также по кускам записывать в файл как на (пикриле 3).
>>1811253 > Так вот, как заполнить структуру так, чтобы не плодить одинаковый код как на (пикриле 2)? Сделать какой-нибудь make класс\функцию которая будет возвращать нужное значение. Типа if( q == 1 ) { return { 0x1, 0x2 }; ) if( q == 2 ) { return { 0x1001, 0x20001 }; )
>>1811320 Ещё, если это C++, можно определить эту структуру как шаблон, и передавать тот тип ULONGLONG в 64-битной версии как параметр шаблона. Сделать ему typedef внутри структуры и применять. Аналогично, сделать шаблонную функцию для инициализации полей структуры.
>>1811346 Ещё, если структуры отличаются не просто типом отдельных полей, а уже и их составом (где-то больше, где-то меньше) - тут уже с шаблоном туго. Правда можно юзать наследование. Но тогда опять, различия должны приходится лишь на последние поля. Вперемешку не выйдет.
>>1811253 Всех благодарю за ответы. Даже не ожидал такой адекватности. Программу писал на сях, вот этот только момент с структурами мне покоя не дает. Хочу переписать на плюсыси с классами, кода не много и использовать обертки над винапи, никогда такого ещё не делал. Буду дальше ковырять. Как подметил этот господин >>1811365 вперемешку может и не получиться так как они ещё и одним полем отличаются. В любом случае попробую с шаблонами поиграться.
Есть карта для того, чтобы вкатиться в джуны по плюсам. Я просто хз что учить посе шаблонов и классов... Планирую на стажировку идти в игродел компанию по плюсам, тестовое просил - игнорят.
>>1811397 >Есть карта для того, чтобы вкатиться в джуны по плюсам Карты нет, так как плюсы во многом опираются на предметную область, в которой ты собираешься работать.
>>1796605 (OP) Вкатываюсь(пытаюсь, во всяком случае) в С++ из Си (да да, я байтоеб микриков ебучих) и пытаюсь понять, чем подход ООП в С++ отличается от процедурного программирования в Си.
Я правильно понял:
Задача: написать прогу чтобы волк ел мяско и коровка кушала травку постоянно.
В Си инструкции выполняются одни за другой и там нужно писать так:
while (1) { wolf_eat(meat); cow_eat(grass); };
Когда в С++ объекты занимаются своими делами сами по себе, и если им поставить задачу, они будут ею заниматься без постороннего участия:
>>1811886 Почему, объясните мне, почему вы называете это колбеками? Да, ты эмулируешь "методы" таким образом, но это не само себе не обязательно должно использоваться коллбеков. Это перпендикулярные вещи.
>>1812029 Я проебался со склонениями, пока редактировал сообщение, но суть передана, надеюсь. На всякий случай поправлю: >Да, ты эмулируешь "методы" таким образом, но получившаяся конструкция может быть и никак не связана с понятием колбека.
>>1796605 (OP) Аноны, в чём отличие стандартов? Ну я более менее уже освоил С++(основы по книге одной книге Страуструпа), но так и не понял в чём отличие стандартов?
>>1812085 Рикаминдую Бартека Филипека: C++17 in detail. Там в основном про отличия именно 17 стандарта, но иногда и исторический экскурс, типа, "в 11 было так, в 14 так, а в 17 еще и так". Приобрести можно на рутрекере
За сутки прочитал 300 страниц Страуса. Хули так просто? Всё схватываю читая по диагонали, задания на раз-два. До этого не кодил вообще (максимум шарил за типы данных и пупы с лупами). Если так дальше пойдёт месяца через 3-4 на работку вкачусь?
>>1812639 Потому что говно. Писать сложно так же как и на С, зато куча костылей и каша из сахара. В том же Zig намного приятнее сделано, но это пока что полигон для компилятородрочеров. Я вообще начинал с C#, перекатывался на кресты и в итоге укатился на сишку в ожидании релиза Zig или хотя бы V.
Вкатываюсь в плюсы, есть два вопроса: 1. Что изучать после стандартной библиотеки? Вроде как основы уже знаю, хочется делать что-то большее, чем задачки с хакерранка решать, но знаний для стажировки даже, вероятно, мало еще, а сам я еще не настолько преисполнился, чтобы в свободное время пет-проекты пилить, да и идей ноль. 2. Каков шанс, что слова вроде "плюсы не нужны, нового на нем не пишут, хочешь денег - учи джаву" являются правдой? Спрашиваю у опытных крестописцев, хочется писать интересные и сложные вещи на божественном с++, двигать технологии вперед (да, розовые очки присутствуют), но с голой жопой под смешки джавистов, продавшихся банкам за 100к+, тоже сидеть нет желания. Короче, как думаете, следовать зову сердца или забить уже и метить на позицию говнокодера в банке?
>>1812089 >как будто сюда как то по другому попадают. все с++ выходцы из си. Нормальные люди поступают в вуз на программную инженерию и там учат computer science(ооп, алгоритмы и данные, архитектуру компьютера) и там же на лабах учат с++. Из них становятся хорошие программисты после окончания вуза. А если ты пару лет байтоебил микрики с не-прогерским образованием(радиотехника, асутп, электроника и т.д.), а потом ты решил вкатиться в с++, чтобы больше зарабатывать, то нормальным прогером ты никогда не станешь, разве что каким нибудь быдлокодером-макакой.
>>1812841 Не ошибся. Понимаю, что чаще всего программирование это рутина, а не парк развлечений, но всякая рутина это часть чего-то большого. Понимаю, что во мне говорит энтузиазм начинающего, когда-то он пройдет, но сейчас мне просто нужно мнение более компетентных людей о современном положении дел, так сказать. Ну и совет, куда глядеть после STL, конечно.
>>1812846 А что ещё можно учить на направлении мехатроника? Плюсы тут как по-мне незаменимы. А нет, вру. Пару раз на питоне модули писал. >причем самая неинтересная Очень спорно >>1812849 Не, у нас не так. В крайнем случае будет класс Čára.
>>1812851 Программирование - это пиздец какая рутина. И тебя никто никогда не допустит ни до чего интересного первые лет 5 точно. И далеко не факт, что пустят дальше.
Вся работа за хорошие деньги - это мусорное дрочево, где ты лишь винтик.
А глядеть никуда не надо - пиши полноценный код. Хуй знает, 2д игру, уебанскую базу данных, какой-нить говнопарсер парсер, хоть что-нибудь, только пиши.
>>1812892 >радиoтехника и электрoника С пару сотен вакансий по 30-40к. >высoкoурoвневoе прoграммирoвание Десятки тысяч вакансий с зп 100-150к в среднем.
>>1812908 я обсуждаю это как хобби. гораздо интереснее с микроконроллерами тусоваться, с драйверами и методами ос, нежели со всякими сайтиками, играми и прочим фуфлом.
ну а так с твоей логикой что главное вакансии и деньги можешь вообще в js тред выкатиться
Сап. В шараге начали изучение цпп. Знаю самые азы можно сказать, что нихуя вообще не знаю и вкатываюсь с 0, но хотелось бы выучить какую-нибудь не очень сложную и потную, ибо время ограничено, но интересную тему во время написания курсача - приложения консольного/оконного с документацией, заливом в репозиторий и все как демка взрослого рабочего процесса. От какой области цпп лучше отталкиваться при выборе темы тему самому придумать надо чтобы на выходе она оказалась полезной для общего развития или актуальной/перспективной в ближайшем будущем?
Какую-нибудь визуализацию для аудио. И UI, и байтоёбство, и матан. Hard: самим написать декодер. Dante Must Die: в реальном времени, с проигрыванием самой музыки.
>>1813139 Работа с сетью, работа с графикой. Бери либу imgui и ебашь какие-нибудь интересные проги, расчёты-хуёты, построение графиков и кривых десятого порядка.
>>1813156 >Win32+boost+курлы+жонглирование жсонами. рикаминдую Слишком сложно.
>>1813195 >Какую-нибудь визуализацию для аудио. И UI, и байтоёбство, и матан. Hard: самим написать декодер. Dante Must Die: в реальном времени, с проигрыванием самой музыки. Если это мне, то тоже очень сложно, хотя я думал об этом.
>>1813246 >Работа с сетью, работа с графикой. >Бери либу imgui и ебашь какие-нибудь интересные проги, расчёты-хуёты, построение графиков и кривых десятого порядка. С сетью думал об этом, что интересно, но я в этой области слабовато ориентируюсь. Графики слишком легко же, нет? Вбил x, получил y.
>>1813480 >Напиши сетюидную прогу, которая печатает файл тогда и только тогда, когда у пользователя есть к нему доступ. Что значит сетюидная прога и в чем смысл такой программы? Типа, кто-то обходит это ограничение и получает неправомерно информацию?
Кстати, интересно, какие перспективы у байтоебства? Мощности пк нарастают, и манагеры в основном требуют скорость разроботки в угоду производительности, по крайней мере, я про это читал. Получается, лучше прогать быстро, чем за каждый бит оперативы сражаться?
>>1813500 >Получается, лучше прогать быстро, чем за каждый бит оперативы сражаться? От сферы зависит. Моя софтина считает сто тысяч подписей в секунду на сферическом процессоре, а у конкурентов — 80 штучек в секунду. И перекрыть скейлинг количеством серверов при таком разрыве просто нереально. Это влияет на то, в какие секторы рынка можно протолкнуть ваш продукт, а в какие нет.
Но в очень многих случаях важно, чтоб работало, а ресурсов хватит, лишь бы не слишком хуево работало, а там дальше разберемся, если будет необходимо. Конечно в таких случаях лучше сделать до завтра, чем никогда.
Аноны, в шараге начался с++ и всякие говнозадачки на массивы. 100500 циклов наворачивать желания нет, есть ли здесь какие-нибудь стандартные библиотеки наподобие linq в паскале и шарпе или стримов в джаве, чтобы лямбдовать в одну строчку и не париться?
Раз зашла речь про линух, объясните вкатывальщику - нахуя он сдался? В плане, какие преимущества дает наличие этой оси на машине отдельно или в совокупности с виндой? Что такого там можно делать, чего нельзя сделать в VS?
>>1814603 ПО разрабатывается обычно для какой-то операционки. Если говорить про РАБОТУ - то полноценная кроссплатформа там достаточно редкая вещь (ниразу не видел ни я, ни мои знакомые\коллеги). Соотв-но если ты пишешь какое-то серверное говно - то оно будет под линукс. Значит и разработка будет удобнее под линукс Хотя из этого есть исключения. Весь яндекс сидит на вижуал студии, хотя у них почти весь софт под никсы внутренний
Оверолл, как ойти специалисту - линукс знать нужно на каком-то уровне, он встречается повсюду. Но ставить его домой - нахуй не надо, как и без необходимости писать под него, когда есть Винда + Студия.
Почти 3 года писал под линукс, когда увольнялся последний раз - работу с линуксом просто не рассматривал даже, ибо идут они нахуй. Сейчас уже 4 года на винде пишу на работе - полет отличный
Сап, есть бинарный файл, который нужно прочитать. Как байт я использую uint8_t. Однако, ifstream напрочь отказывается воспринимать значение как шестнадцатеричное. Но если определить uint16_t как байт, то все нормально. Что я делаю не так? Формат файла: ff e0 ab 22 14 88 и т.д. Чтение: file >> std::hex >> byte;
>>1814700 Прочитал бинарный файл с содержимым как >>1814658 Вывел его же через iostream
>>1814658 >>1814698 При выводе делай каст к int или используй +x. iostream имеет overload для char, где последний интерпретируется как символ, а не как число.
>>1814698 Бля, я даун. Как создать БИНАРНЫЙ файл через консоль? Я создал текстовый через нано и думал, что если открыть через байнари, то все получится
>>1814739 Лол, я ошибся. Я создал текстовый файл, в котором написал байты, а работал с ним, как с бинарным. У меня же байтовое представление отличается от строчного.
>>1814603 можно выставить любой dpi, сделать его равным ppi монитора есть растровые шрифты по итогу можно сделать буквы что будут гореть пиксель в пиксель
есть тайловые менеджеры окон и мультиплексоры терминалов
по итогу идеальный ui можно организовать для кодинга
>>1815232 >фак говно В этом то я уже убедился. Но раз уж я уже прочитал 2 издание то что делать дальше? Есть роадмап какой-нибудь или мне за нормальным факом на какой-нибудь реддит идти?
Сап анон, поясни это блядкую оптимизацию и кеширование. Короче есть код, который определяет длины отрезков в 3д пространстве для m начальных и n конечных точек. Я сделал тест производительности, и делаю различные реализации. Использую Eigen для операций. Короче, анон, как бы я не улучшал математику (делаю матрицы поворота или n точек выстраиваю в матрицу, какие-то ухищрения в духе "если длина < порога, то вернуть ноль), и нет качественного прироста скорости. Запускаю профилировщик, узкие места да, в моих функциях, больше всего тратитится ресурсов на sin, cos или atan2. Но анон поразительно то, что я кардинально менял подход вычислений, а на финальной скорости сказывается незначительно. В лучшем случае прирост был на 70%, хотя я ожидал раз в 100. Как так? Как поступать?
>>1815238 рекомендую 4 special ed страуса, шаблоны вандервуда, последнюю книгу майерса про 14е кресты это в качестве минимума, чтобыхотя бы понимать современный код чуть-чуть
>>1815260 За контент спасибо, это деду надо. А с какого момента примерно можно начинать пилить пет проекты и где подсмотреть идеи для оных? (понятно что я и сейчас с гуглом и стаком наперевес могу начинать но я бы базы ещё поднабрался). Ну и вообще в какие направления лучше всего уходить сейчас?
>>1815281 Про кншгрид не слышал, спасибо. Ассемблер не хочу смотреть, боюсь, не увижу каких-то там откровений, будут sincos. А simd.. Eigen вроде учитывает всю эту хуйню, там тема выравнивания данных в топе. Короче, я думаю Eigen лучше меня соптимизирует векторизумые участки.
Анон, а что там с gpu? Есть ли смысл взять вулкан апи, там же вроде есть линал? Просто cuda проприетарна
Хочу рассчитать в цикле, все награды за все блоки в сети SatoriGold (SAU), которая без премайна, и которую мы майним вот здесь: https://miningpoolstats.stream/satoricoin
>>1816267 > в комитете каждый добавляет фичу нужную ему Только для принятия любой фичи не должно быть ни одного члена комитета, проголосовавшего против.
>>1815282 >где подсмотреть идеи для оных Даю идею, не благодари. Напиши игру - скроллер. Где самолёт внизу экрана летит вперёд, а сверху на него надвигаются всякие враги (и ландшафт на фоне). И надо сбивать врагов, или уворачиваться стрейфясь влево-вправо. Вот это была моя первая программа на плюсах.
Неделя вката в язык позади. Пока что всё выглядит сексуально. Это у всех так и я скоро перегорю или язык реально годнота? БТВ ещё вопрос - грамматики вроде пикрила у Страуса имеют практическое применение или это тупо способ выражать идею программы? Чёт какой-то страшно вырубай контент.
>>1817026 Грамматика это грамматика. Компилятор так видит. Это то же самое, как если бы писал разбор по русскому - два - числительное, простое, количественное, целое, именительный падеж.
>>1817032 gif формат хоть и имеет гораздо больший размер, всё же более удобен. В пересылке в телеге или другом мессенджере gif файлы в большинстве случаях запускаются автоматически и без каких либо проблем. Впринципе уже знаю как сделать mp4, думаю и с webm проблем не будет. Но вот сука gif не поддаётся, хотя казалось бы самое простое.
Я хуй знает, буду благодарен даже если скинут адекватную статью по кодекам'/декодекам гифок. Хоть что-то за что можно зацепиться.
>>1817045 бтв уже нашёл ImageMagick++. Сам для создания mp4 хуеты юзаю няшный OpenCV(хоть он и для другого предназначен лол). ImageMagick я в рот трахал, там такая страшная документация, не удивительно что он не поддерживается. Кароче реквестирую способы создания gif файла, имея массив картинок, которые сами по себе массивы x, y, RGB or HSV
>>1817058 да, вроде какая-то компания в далеком далёком году взяла да и сказала мол, права на гиф у меня, платите. А тогда гифками все уже активно пользовались и как ты понимаешь большая часть платить не собиралась. Что-то подобное и сейчас есть, какие то проблемы с правами/патентом, в общем комерческая жопа, ненавижу. Блять, права на самую простую кодировку в мире блять, ахуенно. Алсо гифка ко всем минусам ещё и уёбищно сжимает размер, раз в 6 хуже avc. Но увы, веб на ней хорошо сидит, как на героине) Хотя уже давно юзают на сайтах и урезанные mp4, у которых включили автоповторение и вырубили звук. Свои костыли
Да, видел это. Хотел почитать про то как это делается конкретно в коде, без юзания функций из коробки.
>>1817060 Как делать файл руками? Ну описаний формата полно, там довольно типично все - заголовок, размер картинки, палитра, потом кадры (со своими палитрами и размерами, если кусочек анимируется, и временем задержки) и все эти потоки упакованы lzw. https://habr.com/ru/post/274917/
Вашу ж мать, почему на дебильный джаве дозуя либ и фреймворков, а в плюсах зато сраный three-day comparison. А я, как дебил, в два часа ночи, вместо того, что бы давно вкорячить какой нибудь Спарк, пилю сраное говно на плюсах, потому что "мы не тащим в наш стек лишние технологии".
аномисты, а что будет если в main.cpp подключить условный govno.h и map.h, а в govno.h подключить снова map.h, про pragma once я знаю, а map то по итогу будет подключен 2 раза? В плане размера файлов, компилятор оптимизирует это, или что вообще произойдёт. То, что не будет проблем, я в курсе, сказочные ifndef endif pragma once, но я спрашиваю именно про размер выходных файлов, он будет больше нежели бы мы один раз подключили Map?
Поясните за выравнивание данных. Зачем это нужно? Я понимаю, когда double помещается в одну ячейку, а не разбивается на две. Тогда доступ к нему требует одной операции чтения.Но в чем профит выравнивания адреса для кратности с размером данных?
... Пока Кармаковские кракозябры (это кодом назвать сложно, разве что в смысле "код Да Винчи") продаются и вызывают ахи и вздохи хипстеров я на хлебушек смогу заработать.
... Кармак же, со своим программированием на уровне шестиклассника ...
>>1817507 Некоторые процессоры типа АРМ вообще не умеют читать невыровненное. На остальных невыровненные могут читаться медленнее. Скажем в кэш-линии помещается 16 интов Ты читаешь по адресу на границе Может понадобиться чтение двух линий по 16 интов из памяти ----xx][xxxxxx---- Плюс может быть промах мимо страницы что вообще займет в 100 раз дольше времени.
>>1817507 Процессоры любят, чтобы те данные что они читают/пишут в память, лежали по адресам, кратным 2-м, 4-м, 8-и, и т.п. Это и есть требование выравнивания. Некоторые марки процессоров попросту отказываются работать с невыровненными данными (возникает ошибка). Это сделано для их удешевления и/или ускорения. Другие марки, как тот же x86, всего лишь испытывают доп. тормоза на невыровненных данных. Впрочем SSE инструкции требуют выравнивания на 16-байтной границе, иначе генерируют ошибки.
>>1817545 Тут слово "хороший" не зря в скобках стоит. Оно опционально. Даже если в коде Кармака есть проблемы, это не значит что он никчёмный, и оттуда ньюфагу (и не только ему) ничего полезного подчерпнуть не выйдет. Пусть изучает, как код люди пишут. Разный код.
А что касается этого персонажа... Код Кармака мы видели, а код персонажа что-то ещё нет. А обосрать на словах, много труда не требуется.
>>1817641 >объявить статическую переменную, скопировать ее по ДМА (естесвенно посрав на все конструкторы копирования и прочия операторы присваивания), вызвать несколько функций Да, компетенция уровня UB
Многопроцессные программы(fork) отличаются от многопоточных(thread, future) тем, что многопроцессные находятся уже в другом процессе и имеют раздельное для каждого процесса адресное пространство?
>>1817681 А мне они больше кажутся шизофренией - когда человек писал книгу и вдруг вместо новой главы начал вести записи о покупках в магазине прямо поверх текста.
Читаю Страустурпа сейчас про классы, наследования всё показывается на базе создания гуйной библиотеки, довольно прикольно. В целом понимаю суть, но чтобы точно понять как работает нужно самому покодить. Блин там с этими классами довольно сложно, их можно наследовать, есть абстрактные и не абстрактные...
>>1818428 Пoнял, буду прoдoлжать. Пoсле Страуса, хoтел бы в архитектуру эвм вкатиться и ассемблеры(си уже знаю). Нo тут рoдаки капают на мoзг усиленнo пoэтoму пoка упoр сделал на задачи с литкoда и алгoритмы, вкачусь и буду в свoбoднoе время oбмазываться архитектурoй и асмами
Товарищи, как организованно данное дерево и добавление в него? Если вы были преподом, то что бы спросили? typedef struct Node //"связанное представление" { int value; //Значение Node left; //потомки Node right; } Node;
Node root = NULL; //Дерево (корневой элемент)
//Добавить в указанный узел значение, описанное в строке void Add(Node root, char * s) { if (s[0] == '0') //Это левый потомок { if (!root->left) root->left = newNode(); //Если потомка не было - создать Add(root->left, &s[1]); //и добавить остаток строки в потомка return; } if (s[0] == '1') //Это правый потомок { if (!root->right) root->right = newNode(); Add(root->right, &s[1]); return; }
//Это не потомок, это значение root->value = atoi(s); }
Чё-то я в смятении каком-то: плюсы обожаю, в свободное время много читаю и смотрю по ним, но по ощущениям работы на плюсах, которая бы понравилась, нет на рынке. Куда ни плюнь - гуй на кьют и винапи, какое-то легаси поддерживать, эмбеддед, где всё-таки наверняка будет си... А чё делать-то? Нахера изучать всякие тонкости и инфраструктуру языка кроме как попробовать какую-то либу написать? Жить-то на что-то надо.
Аноны, кто работает, в какой области ваши проекты? Нравится или заебало, что проку нет?
>>1818689 Аудио/видео оборудование. На, так сказать, критическом пути (собственно кодеки и обработка потоков) никаких примочек. Там довольно сильное байтоёбское колдунство с примесями асма, которое понимают несколько человек во всей компании. Зато обвязка вокруг (у софта ещё тысяча других близких и не очень функций) - пожалуйста, пользуйся всем чем душа пожелает. Недавно перешли на С++17.
Почему-то он при стандартной компиляции в g++ без флагов или с флагом -O0 делает мой код много поточным. В чем может быть загвоздка? Это только у меня так или у всех?
>>1819124 винда в несколько потоков внутри Loader'a грузит всякие библиотеки в процесс, типа kernel32.dll, но потом эти потоки пропадают, и программа остается однопоточной.
Я очень бегло посмотрел time ./a.out У тебя тут сплошной ввод-вывод, и нагружено ядро, которое внутри использует потоки, или что-то еще в юзерспейсе, например, код эмулятора терминала
... Кто не знает, так работала его мегатекстура, только даже она была чуть умнее - делала feedback pass сначала и находила все страницы в сцене, но все равно это был страшный тормоз. Останавливать GPU и грузить страницу по первому fault - будет тормознее на порядки.
... Кармак задвинул очередную телегу о том, что ПС4 и Хуян - одно и то же. У меня большая уважуха к этому поцану. Растянуть полдюжины шареварных платформеров в карьеру "Гуру 3Д" - никому больше не удавалось.
... Кармака, который, оказывается, был CTO их Окюлуса - уволили! Это же великий гений, который буквально придумал всю 3Д графику, ай-ай-ай. Наверное, Цукерберг, все же, посчитал сколько бабла туда влили и сколько выхлопа получили. На Кармака лично ушло 500М+! А что в результате? В результате Кармак был замечен на пресс-конференции Майкрософта, с привязанным к морде телефоном Самсунг и рекламирующим Майнкрафт. Если бы я заплатил за такое 500М, я бы подумал, что меня наебали.
... Я, лично, никогда не понимал как люди платили бабки за такое гумно. Не, на SNES это, наверное, круто было - 3д графичка все дела, однакож поиграв в Вольфенштайн я ничего нового от Ид не видел. Тем более Black Stone, сделаный на том же движке был куда круче.
Технически игры сами по себе ничего серьезного не представляли, движок - да, хороший движок, который можно было дать обезьяне и та что-нибудь смогла бы с ним сделать. А "3д грфичка" там была по самым нижним стандартам. Клоуны, ее делавшие, однако почему-то считались богами графики. ...
>>1819264 У меня такое подозрение, этот kunaifusu сам лично здесь ссылки постит на собственный блог, поглощенный лютой завистью к Кармаку. Он у него идея-фикс. Всячески хочет его очернить.
>>1819425 Наверное это потому, что kunaifusu нищеброд и доедает последний доширак - а у Кармака Ferrari водились уже в 90-х, когда этот хуй ещё в школу ходил.
>>1819264 Как бы ни для кого не секрет что Кармак не гений. И с Окулусом у него не вышло, и мегатекстуры из дума выпилили из-за багов. Но разве это как то умаляет его достижения? Грубо говоря пока все программисты болтались на 2-м уровне развития, он вышел на 3-й. И только тогда уже все увидели что так можно и тоже стали развиваться. Ну допустим он дошел только до 4-го уровня и это его предел. А другие пошли дальше, до 6-го, 7-го. Но что тут зазорного? Часто высказывается мнение мол он ничего не изобрел. И быстрый обратный квадратный корень был до него известен и он просто позаимствовал его из научной работы, и вообще его 3д это просто проекции из геометрии, которые он в вузике только что проходил. И мол если бы он не сделал 3д, то это сделал бы кто-то другой. Ну так а чего же не сделал? Вот и все. Кармак определил ландшафт, лицо компьютерных игр, на десятилетия вперед. История не знает слова "бы".
Он как бы говорит в самой первой копипасте выше по треду, что не Кармак страшен, а его тупые поклонники. К примеру, есть куча опенсорсных дураков, которые до сих пор копи-пастят его исходники, думая, что вот это-то и есть священный Грааль.
>>1819815 >Ты вообще в курсе, когда вышла PSX (Playstation(1)), Через год после Doom >что у нее внутри стояло? Говнецо с кривыми проекциями текстур и без z-буфера - по сути растянутые прямоугольные спрайты
Я не очень знаю первые 3д ps1-игры, но в 1994 там похоже был аналог вульфа3д, в лучшем случае - клон дума. Да, до Кармака тоже уже пытались делать 3д игры - но они были или тупо векторными, или слайд шоу, или и то и другое. К примеру в 1986-87 были Sentinel и Driller на спектрумах, почти неиграбельные.
Я хз про что вы тут сретесь, но 3д со спрайтами уже было в ультиме андеворлд, и вышла она до Вольфа. И там можно было смотреть вверх/вниз, прыгать, летать и тп.
вообще блять поступил на сис. админа в универ, а нас заставляют решать задачи в с++ и прочем говне. я думал нас чисто будут учить как поддерживать работу серверов, интернета, и др., но никак не создание программ. что за хуйня
Подскажите по Variadic templates. Есть шаблонная функция >template<typename... Args> void func(Args... args) Как внутри неё сделать std::tuple из этих аргументов?
>>1818689 С++ не предназначен для чего-то серьёзного. Пишешь на плюсах - баги обеспечены, причем не только логические но и те опечатки, которые прошли компиляцию. Недаром существуют 1000 и 1 всяких cpp-checkerов, потому что язык кривой
блять помогите, задали решить задачу z=(5f+7k)/2b, пик 1 чел решил свою задачу, я пытаюсь примерно как он решить и свою задачу, но нихуя не выходит. дайте мне мануал как такие задачи решать, сам не могу найти
>>1820473 Банальный пример операции с векторами в пространстве. Типо у тебя есть класс Vector3 и чтобы каждый раз не писать кучу лишнего кода типа vec.x /= 3; vec.y /= 3; vec.z /= 3; перегружаешь деление и кайфуешь.
>>1820513 Не понял в чем проблема, перегруженный оператор это просто функция. Если ты какую-то левую функцию случайную вызвал то тоже 3 часа будешь искать проблему?
>>1820275 1 строчка комментарий - все после // игнорируется 2 строчка подключает библиотеку для ввода вывода в консольке 3 строчка задает сокращение чтобы использовать все из этой библиотеки 5 строчка объявление главной и единственной функции программы 6 строчка начало этой функции 7 строчка объявление переменных икс и зед 8 строчка ввод из консольки в переменную икс 9 переменной зед задается значение равное матану справа это не уравнение, а именно перезаписывание содержимого зед 10 вывод в консольку значения хранимого в переменной зед 11 конец функции и программы
>>1820473 >В каких вообще случаях может потребоваться перегрузка базовых операторов Ну смотри: 1. Операции над векторами и матрицами. Любая мат либа 2. Конкатенация строчек или файловых путей. 3. Перегрузка -> в итераторах, смартпоинтерах 4. Перегрузка () в функторах или делегатах 5. DSL дристня для хитрой инициализации чего-нибудь типа как boost::program_option. >где работает быдло которое это делает? Как правило это делают разработчики всяких либ, ну или в каком-нибудь утилитарном классе. В пользовательском коде, баловаться таким наверное плохой тон. Прикольная же штука, когда сделоно нормально и в нужном месте, коммон.
>>1820670 >когда сделоно нормально и в нужном месте Как-то читал про цепочку перегрузок -> с использованием той фичи, что если у возвращаемого значения оператора-> тоже переопределен орератор-> , то также сразу вызывается. Короче вызов, a->foo() лочил мютекс, че-то еще делал и потом разлочивал. Вот где настоящая шиза.
Такая параша никогда не пройдет код-ревью. Дело не только в том, что она нечитаемая и неидиоматичная. Тут в первую очередь играют роль сугубо утилитарные свойства, значимые для командной разработки 1) Диффы при изменении этой хуйни будут кошмарные 2) Частично связано с п.1. Нет лимита на длину строк, т.е. смотреть это в тулах неудобно.
>>1820594 Код с таким уебанским форматированием априори не может быть простым и понятным. Какой-то пиздец просто, ты блядь код на дискетах хранишь или переносы платные? Раздели эту кашу на логические блоки хотя бы, уёба, нихуя ведь непонятно. Отступы же научился как-то ставить, хотя бы в 2 символа, значит какие-то зачатки интеллекта имеются. Потом уже можешь поупражняться называть переменные понятными названиями. Подтянешь математическую базу и возьму тебя джуном на 40к
>>1820797 Там каждая строчка логический блок, у тебя дефицит внимания что ли? > возьму тебя джуном на 40к Я бы тебя сам взял за 60к, но боюсь ты писать код не умеешь, а только воду лить в файлах. ///////// // /////////
>>1820801 Конечно приятно что ты меня заранее оценил выше самого себя, уёба, но вот у меня вопрос: как ты с таким кодом на классы делишь? Просто есть сомнения, что ты хуяришь всё в 1 файл
Если там есть проблемы с новыми версиями, всегда можно поставить прыщеблядикс. Я тем не менее не рекомендую использовать ноутбуки. Даже при наборе кода в нормальной ИДЕ они будут переходить в режим "ахтунг, взлетаем!".
Пишу свою первую базу даных на плюсах в качестве тренировки. И соотвественно пытаюсь делать по учебнику разносить интерфейс в .h файлы, а декларацию в .cpp. Но тут мне понадобилось в одном классе реализовать темплейтный метод. Я его объявил, задекларировал но компилятор начал ругаться довольно непонятной ошибкой. Погулив ее я увидел такое: "That means that we cannot separate the interface in a separate header file, and that we must include both interface and implementation in any file that uses the templates."
оесть получается я не могу разнести по разным файлам определение и объявление темлпейтной функци? Может я что-то не так понял?
Алсо возможно мою проблему можно будет решить иначе. Как можно иначе написать функции которая принимает аргументом лямбду?
>>1820948 Для того, чтоб компилятор мог сделать template instantiation, ему необходимо "видеть" defintion.
Поэтому просто так отделить template defintion не получится. Есть несколько способов решить вопрос.
1. Просто оставить функцию в хедере. 2. Перенести definition в .inl файл и заинклудить его в конце хедера. Получится то же самое, что и в пункте один, но с разбиением на несколько файлов. 3. Воспользоваться explicit template instantiation. Это когда ты сам в той части кода, откуда доступен template instantiation указываешь те типы, для которых нужно сделать template instantiation. Все варианты имеют свои нюансы, тут нет одного лучшего.
>Как можно иначе написать функции которая принимает аргументом лямбду?
В каком смысле? Как описать принимаемые аргумент? Можно через function pointer, можно через std::function
>>1820915 Сука блядь ты русские слова забыл что ли? Пиздец БЛЯДЬ что ни слово то какой-то ебучий англицизм. Уёбок блядь, расстроил меня на пустом месте.
>>1820956 >буду гуглить Я на это и рассчитываю. Так лучше поймёшь.
>template<typename Lambda> Нормально сделал Но сюда заедет не только лямбда, а в принципе любой callable-object. Лямбда, функтор, function-pointer, etc.
>>1820948 >оесть получается я не могу разнести по разным файлам определение и объявление темлпейтной функци? Может я что-то не так понял? Все ты можешь. В хедере в классе пишешь например template<class T> void f(T t); В сурсе соответственно template<class T> void ClassName::f(T t) { // } Шаблоны в хедере только замусоривают интерфейс и нарушают инкапсуляцию.
>>1821318 Я тут недавно пилил проект, у которого часть имплементации на ассемблере
Сделал пачку класс-темплейтов, которыев зависимости от темплейт-аргумента набирают себе в constexpr-таблицу указатели на функции, написанные на ассемблере в отдельном файле
А затем этот класс уже между этими указателями разруливает, как ему операции выполнять
Когда оптимизировал это всё — посмотрел асм и optimization log — почти все функции (кроме слишком больших) заинлайнились в LTO. Было приятно
>>1821437 Сначала так и сделал, но не знаю, как пробиться через ADL для выбора правильного scope (не работает с namespace) https://godbolt.org/z/M15veK
Мне как вкатышу посоветовали накатить генту мол там все пакеты вручную собираешь из опенсорсов и можешь на лету для самого себя какую-то фичу замутить тем самым прокачивая скилл прогерства. Так ли это и стоит ли того эта практика?
Подскажите как лучше поступать: реализовывать отдельные конструкции в глобальном скопе и применять что нужно в мейне или всё прописывать в функции? Разумеется в случае когда прога маленькая и всё ограничивается одним сорсфайлом и выносить всё в хедеры смысла нет.
>>1822150 Не, это я как раз понимаю. Но я хочу реализовать через отдельную функцию инициализацию объекта класса где юзер задаёт параметры в том числе и один из енама. Неужто такое не реализовать?
Доброго вам настоящего, посоветуйте нормальных книжонок с задачами по с++, недавно начал учить, было бы круто чтоб уровень сложности поаышался постепенно, спасибо
Сап программач. "Погроммист на Qt" в треде. Есть кудахтер с core i5-7500, на котором я дома пишу код. Меня напрягает скорость сборки даже небольшого проэкта на пару десятков тысяч строк. Компилятор g++. Кто-нибудь ради интереса пробовал собирать на многоядерных системах, типа двух Зионов E5-2678v3, насколько хорошо оно скалируется?
На али по прикидкам можно собрать комплект с мамкой/камнями/памятью, остальное докупить на месте и уложиться тыров в 50-55.
>>1822496 >Ты уверен, что у тебя проблема в количестве ядер? Проблема только в том, что мне хочется увеличить скорость сборки. Камень наверное собирает так, как и должен. Как ещё дёшево увеличить скорость сборки, если не количеством ядер/потоков?
>>1822502 >Дык это на нём. Земля тебе пухом, братишка. Ты на каком-то говне вроде юбунты или дикина изкаропки сидишь? Подрочи неделю генту, сможешь оптимизировать до такой степени что компы за тысячи баксов на шинде возьмут в рот.
>>1822508 Ты правда думаешь что мне не похуй на твоё мнение? Факт в том, что у меня древний ультрабук на сабже работает шустрее стационарника с топовым райзеном на десятке.
Зеоны, по крайней мере, того поколения, которое дешево, раза в два медленнее современных процессоров, так что лучше брать нормальную современную мейнстримную систему вместо двухсокетника с помойки
>>1822502 > Проблема только в том, что мне хочется увеличить скорость сборки. Давай ТТХ своей сборочной системы: -сколько проектов -сколько в среднем файлов в проектах -сколько сейчас длится сборка
>>1822521 >-сколько проектов Конкретно напрягает меня один проект. Файлов ~350. Собирается полторы минуты (за это время я успеваю отвлечься на какую-нибудь хуйню и залипнуть, проебав 5-10-15 минут).
Остальные проекты, с которыми я работаю, обычно мелкие программы, собираются быстро.
>>1822519 Так-то да, я ради интереса пошерстил ютуб, в тестах два таких камня примерно как один 3900X-3950X, только он один стоит как мать+камни+память.
Сап, народ. Программа, собранная mingw с ключом O3, начала падать. При этом если собирать её же с O2 или в дебаге, то она отрабатывает без падений и, на взгляд, без ошибок. Также работает нормально, если собрать в студии. Что это вообще может значить и как с таким бороться?
>>1822605 > падать - падать как? - у тебя говнокод (прогони через статические и динамические анализаторы) - прога зависит от тонкостей IEEE и т.п. - баг в кунпеляторе
>>1822636 При чём тут Qt? Мне не нужно его пересобирать по несколько раз на дню. >>1822716 Как ты их отлаживаешь тогда? Типа внёс правок на 20-30 строк, надо проверить, что всё работает. Каждый раз по полтора часа куришь бамбук?
>>1822717 Проверь порчу стека, или на куче удаление уже удаленного либо обращение к удаленному. есть инструменты для такого. Возможно возвращаешь указатель на локальную переменную.
>>1822744 > внёс правок на 20-30 строк, надо проверить, что всё работает. Каждый раз по полтора часа куришь бамбук? Нет конечно, я о том и говорю, что инкрементальные сборки времени почти не занимают, а если у тебя после мелких правок собирается всё заново, то не в процессоре дело.
>>1822790 >Нет конечно, я о том и говорю, что инкрементальные сборки времени почти не занимают, а если у тебя после мелких правок собирается всё заново, то не в процессоре дело. Ну я собираю в среде разработки QtCreator. Я так понимаю, он просто чекает, были ли внесены изменения в некий файл. И если изменения были внесены, он тупо пересобирает все файлы, в которых изменённый файл используется. Поэтому зависит от того, какой именно я файл поправил.
>>1822762 >есть инструменты для такого Типа Address Sanitizer? Попробовал на FreeBSD скомпилировать на g++ и clang++ с -fsanitize=address, но в обоих случаях не возникло никаких ошибок.
как научиться решать пикрил простые задачи на с++? какие книги по с++ можете посоветовать мне, у кого 0 знания в математике, программировании и вообще в информатике? я не собираюсь становится прогером, просто задания с универа
>>1823115 Что ты там забыл с 0 знаниями в информатике? И без знания английского ты на кой туда полез потому что знай ты английский хотя бы на B1 ты бы сумел прочитать ошибки конпилятора и исправить их. Изучение программирования хорошо тем, что определённому проценту людей из твоего потока оно поставит мозги на место и на выходе выйдут мало-мальски грамотные тела. И очень скоро у тебя и многих других развеется миф о том, что сисадмины - смузихлёбы со 100% автоматизацией и вы, скорее всего, отсеетесь что благо.
>>1823121 да я уверенный юзер пк, могу чинить итд, английский как раз примерно ниже среднего, ну не могу я кодить, тупо не интересно все эти операторы, переменные и др. термины программирования, на сис. админа поступал пушто думал нас будут учить только поддерживать работу серверов, инета и компов, а не этот кодинг злоебучий
>>1823147 Двачую. >>1823145 "Уверенный юзер пк" это моя бабушка. А ты хоть раз павершелл юзал? Рейд массивы собирал? TCP/IP знаешь, простой трафик netbios`a сниффнуть сможешь? Запросы сформируешь, логи прочитаешь? Про линуксы даже не спрашиваю. Кодить тебе так или иначе придётся, хотя бы простенький скрипт на баше или не дай бог шелле но где-нибудь да понадобится написать. А не станешь учить потом у тебя гарантированно возникнут вопросы типа "А почему 777? Гыы, Линус, нормальная такая интеграция".
>>1823145 Админу, желающему получать больше 25к в местной школе, необходимо хотя бы общее знание скриптовых языков.
Сложность твоей задачи настолько низкая, что ты бы уже успел сам найти книжку страуструпа для вката, прочитать 15 страниц и выполнить задачу. Но ты почему-то решил, что срать в этом треде тебе более предпочтительно.
>>1823170 Там в точности описано что нужно делать чтобы твой код заработал. Удаляешь инклуд строки, после пишешь using namespace std; Всё что в мейне табулируешь, в конец добавляешь return 0; Если проверка на деление на ноль не требуется то задание ты выполнил.
>>1823115 Потому чта: 1. си/си++ это языки наиболее близкие к железу, после ассемблера. Тебе бы надо знать как работает комп и программы на нем, на таком уровне - читает переменную, складывает с другой, записывает в перемнную. Это нужно хотя бы для понимания сетевых протоколов - они же не из воздуха берутся, а вот так гоняют байты по порядку. 2. си/си++ это всякие линуксы, которые наверняка придется ковырять, например я даже дома изменял и собирал прошивку для роутера. Если будешь админить какой нибудь хайлоад, наверняка придется оптимизировать какие то штуки, как минимум выделение памяти. 3. большинство уязвимостей связаны с ошибками в си/си++ программам, например переполнение буфера, так что надо бы понимать откуда оно берется, что именно происходит в программе почему буфер портится. 4. Как уже написали придется работать со скриптами, башем, батниками, павершелом и т.д. Основные принципы программирования сохранятся, отличаться будет только обвзяка и свистелки (пока это не хаскель)
>>1823677 >А почему на твоей работе VS2008 и C++03 ? Сейчас всё норм. Но был чел, код которого был написан в начале 10-х на сабже чисто на шаблонах (потому, что чел прочитал Александреску и впечатлился) и собственных костылях для той же многопоточности (хуле, std::thread не завезли ещё). И я этот код немного ковырял и просто охуевал.
warning C4291: 'void operator new(std::size_t,void ) noexcept': no matching operator delete found; memory will not be freed if initialization throws an exception
Но при этом соответствующий operator delete я сделать не могу, ведь это placement new. Насколько безопасно это игнорировать? Visual Studio 2017 на этот же проект такую ошибку не выдает.
>>1796605 (OP) Помогите бесплатно получить русский вариант книги по AMP "C++ AMP. Построение массивно параллельных программ с помощью Microsoft Visual C++"
>>1823773 Ты не подумай, на работе я c++17 /permissive-
>>1823805 >>1823784 Пишу клиент для имиджборд для Blackberry OS10. RIM предоставила NDK, в комплекте есть gcc 4.6.3 и 4.8.3. По умолчанию 4.6.3, хотя всё равно на 4.8.3 стандартная GUI библиотека скорее всего собрана без c++11. В интернете информации по этому поводу практически нет, на гитхабе проектов с этим флажком тоже нет. Вручную писать красивый интерфейс на голом и древнем Qt не очень хочется, поэтому вот терплю.
Если у кого-нибудь есть информация, которая может облегчить мои старания, делитесь пожалуйста. Спасибо.
>>1823996 Пишу разное, высоконагруженные серверные системы, сети, немного криптографии и безопасности. На работе в основном c++14, три года опыта, 150к.
Очень нравится, но хочу больше денег. Попутно пилю потенциально профитный жирный проект, но больше денег хочу уже сейчас.
>>1823997 > Какой опыт? Джва с половиной года > Что пишешь и где? САПРы nuff said, где не скажу > Сколько учился, через сколько вкатился? Устроился на втором, шарагу бросил на третьем. В общем где-то год написания разного рода laba2.cpp и ещё год написания синтетических разного рода крудов и редакторов неба и аллаха (laba6.h laba6.cpp main.cpp) > Какая зп? 120к > Нравится? Да, очень
Хочу вкатиться. Программирование. Принципы и практика использования из гитшапки актуальна? Вообще, насколько большая разница между разными версиями? Сейчас пишу на питоне, в инсте был один курс плюсов уровня хэлоуворд.
Написал кастомный аллокатор с интерфейсом под std::allocator Написал кастомные make_unique и make_shared, которые используют мой аллокатор и CustomDeleter, который деаллоцирует с помощью моего аллокатора. C shared_ptr проблем не было. Но у unique_ptr deleter это часть типа, а не объекта, поэтому при вызове CustomDeleter не получится корректно удалить дочерний полиморфный объект, имея указатель на родительский объект. Деструктор вызовется правильно, а вот память нормально не освободить, так как неизвестен размер объекта.
Понял, что избрал не совсем верный подход. Узнал, что у полиморфных объектов два деструктора, один просто деструктор, а другой для динамической деаллокации, который зовётся как раз тогда, когда происходит вызов delete на полиморфный объект. В итоге вызывается "второй" деструктор через dynamic dispatch, где внутри уже overloaded delete, так как тип объекта уже определён.
Поэтому для корректного поведения достаточно не вызывать dellocate из CustomDeleter, а сделать просто delete (или вообще оставить дефолтный deleter). А вот в оверлоаде delete уже сделать deallocate с указанием размера.
НО НЕ ТУТ-ТО БЫЛО g++/clang не позволяет сделать один overload delete, но не сделать второй. Более того, нет гарантии, что будет вызван один а не другой. Это не позволяет сделать им универсальное поведение (а именно — не хранить размер аллокации перед каждым аллоцированным блоком). Хотя при этом g++ всегда зовёт именно sized-version. clang тоже, но требует для этого -fsized-deallocation
Единственная ситуация, при которой я смог триггернуть вызов non-sized delete — это вызов delete на pointer-to-incomplete-type. Тогда-то компилятора размер и неизвестен. Но эта тест бесполезный, ведь вызов delete на pointer-to-incomplete-type — это UB и потребовало включить игнор ворнинга.
В итоге красивого выхода из ситуации я не нашёл
Перый вариант: 1. Оформить нормально пару new/sized-delete с вызовами аллокатора с указанием размера напрямую. 2. Оформить пару new[]/delete[] с хранением размера аллокации в дополнительном блоке. 3. Вызов sized-delete[] оформить так же, как и delete[]. Проигнорировать size. 4. Делать std::terminate() в случае вызова non-sized-delete, ибо нехуй. Либо он никогда не вызовется, либо я что-то не учитываю (поэтому и пишу это всё, вдруг кто подскажет).
Второй вариант: Первые три пункта как в первом варианте. 4. В случае вызова non-sized-delete делать вызов deallocate с указанием какого-нибудь специфичного размера, например, -1. В аллокаторе отдельно обрабатывать такой вызов. Вместо поиска чанка в готовой бочке (найденной по размеру), мы перебираем все бочки в поисках нужного блока для деаллокации. Потом деаллоцируем. Требует дополнительных костылей в деаллокаторе, но зато работает всегда. Но наличие этих костылей не ухудшает нормальный case (когда размер известен).
Собственно, стоит ли второй вариант того? Это долнительный костыли в обход стандартного интерфейса аллокатора ради того, чтоб избежать проблемы, которая может и не возникнуть.
>>1824725 >>1824797 >книга страуструпа Бляяять, нет. Если совсем зелёный - то лучше сначала пройти K&R по чистому Си. Книга Страуса - это спидран в котором новичок потеряется. Вот ты учишь объявление переменных и вот ты уже пишешь калькулятор с 10 неймспейсами и кучей вложенных юзертипов и ловишь конфликты имён по 100 штук на вызов.
>>1824811 > сначала пройти K&R по чистому Си Нихуя подобного, в этой книге как раз это объясняется. Сразу учи c++. А про калькулятор согласен, пиздец полный
>>1824725 у страуса годные книжки - "с++ специальное издание" 2000 года и "дизайн и эволюция языка" еще он годные статейки иногда пишет)) а последние книги у него неудачные, особенно та книга типа для новичков
>>1823818 на 98 стандарте было интересней городить шаблончики для статики и метапрограммирования в последних стандартах надобавляли синтаксического сахарку, а раньше нужно было трюки делать)
Аноны, как мне сделать ссылку на переменную класса, вызывающую функцию? Что-то вроде: Описание метода класса: void имя_класса::имя метода() { имя_класса::имя_другого_метода(какая-то переменная, та переменная_которая_ вызывает_первую_функцию) ... }
Сап, понимаю, что многого прошу, но я не знаю, что делать. Задали реализовать алгоритм шифрования ГОСТ 28147-89. Проблема в том, что программа шифрует, но вот назад не расшифровывает правильно даже один блок. Не могу понять с чем я проебался, надеюсь на помощь. С меня как всегданихуя. https://pastebin.com/Khti8mvJ
>>1825155 Просто сделай как в fmtlib сделано, будет проще и тебе и остальным. https://fmt.dev/latest/api.html#formatting-user-defined-types tl;dr специализируй структуру, в которой и хранится метод to_string Недавно смотрел одну презентацию Тита Винтера, в которой он говорил, что у языка большая проблема, если в библиотеках люди отказываются от простого написания свободных функций из-за угрозы огрести от ADL.
>>1825155 Какая-то лаба002. Ты лучше сделай чтобы это работало в рантайме: на вход подавался std variant с твоими енумами и выполнялись функции в зависимости от доступных операций.
>>1827014 Потому что тупо текстовая замена без контекста, типов не видит, нихуя не видит. Как тебе такое #define SQR(x) (xx) SQR(2+3) >11 //а не 25, так как развернулось в 2+32+3
Или например #define STEP() x++; y++;
int x=y=0; if(false) STEP(); return y; //бабах - y++ сработает всегда
>>1827180 Макросы (как и разделение на хедеры/исходники, да и вообще вся система компиляции C) - хак, потому что в маломощный PDP-11 нельзя было завести нормальные компилятор с линкером. Прости, анон, но это так.
С помощью шаблонов можно сделать только подстановки типов, а макросы этим не ограничены. Поэтому макросы мощнее. Ну да, писать чутка сложнее, если много строк. И в ногу легко выстрелить. Но настоящим программистам норм.
Как мне сделать диспатч по типам в зависимости от типа данных, который является параметром макроса (т.е. подставить разный код для разных типов)? А если макрос использует другие, которым тоже не помешал бы диспатч по типам?
"Настоящий программист" - это кто? Покажь, что написал.
>>1827309 > диспатч по типам в зависимости от типа данных Не нужно. Ты знаешь тип в точке вызова - ты вызываешь нужную версию макроса. Результат: невозможен код, который разворачивается хз во что (обычная болезнь ++С). > макрос использует другие #define iprint(x) printf("%d\n", x) #define wrap(x) do{ x; }while(0) #define twice(f,x,y) wrap(f(x);f(y)) #define iprint2(x, y) twice(iprint,x,y)
>>1827489 По стандарту main это единственная функция, в которой можно не писать return - тогда будет подразумеваться, что return 0. Нахуя так сделали - без понятия.
Пусть у меня есть некоторая шаблонная логика, которая, помимо всего прочего, проверяет значения на вхождение в диапазон допустимых (происходит конверсия из более широкого типа) перед кастом.
Как мне получить численные значения диапазона для данного типа? С шаблонами я могу использовать std::numeric_limits<T>::min/max(). Как мне это сделать в макросах без того, чтобы я везде протаскивал диапазон?
Это самый простой пример из того, что я имею в нашей кодовой базе.
>>1827522 Вот тут шаблоны мощнее. Но когда компилятор поддерживает что-то вроде typeof, то можно получить этот эффект. А вообще, зачем? Наверняка ваш код можно переписать без этого.
Как мне из typeof() получить численные значения диапазона (ну да, есть хаки, которые основаны на ~(typeof(T)0 и (T)-1 < 0), но это просто удачно можно задействовать арифметику в данном конкретном смысле). Мы говорим об общем принципе построения кода, который позволяет обойтись без бойлерплейта в каждом из call sites, где применяется шаблонный код.
>>1827590 >А вообще, зачем? Наверняка ваш код можно переписать без этого. Следуя этой логике, нужно избавляться от всего лишнего. Вообще любую программу можно написать с помощью только while и if, остальное не нужно.
>>1827489 По линукс-вей, подразумевается что у тебя много маленьких программок, выполняющих простые действия. Они общаются между собой через пайпы (грубо говоря stdout одной подается на stdin другой). Но кроме этого программа может завершиться с ошибкой. Код ошибки 0 традиционно означает отсутствие ошибки, ну и соответственно, отсутствие return из main подразумевает что твоя программа отработала штатно.
>>1828179 Что-то из этого 1. Использовать готовую библиотку для работы с длинными числами. 2. Написать свой инструментарий для работы с длинными числами. 3. Если не требуется производительность, то достаточно примитивного подхода с хранением значений разрядов в виде символов строки.
>>1828519 >1. Кто знает, почему такое исключение сделали? Так получилось ради совместимости с сями, в которым это стандартизировано ради старых долбанутых компиляторов. Конечно это можно было оставить на откуп конкретным имплементациям и сделать это как compiler extension, но Комитет мыслит не идёт простыми путями. Только недавно Корентин Жабо убедил комитет, что не надо создавать своё надмножество Юникода (причина: вдруг появятся новый набор символов не в Юникоде, нужно же нам быть готовыми к такому).
>>1829137 Пиздец конечно, решил сменить работу, нашёл просто прекрасную вакансию, но объективно понимаю, что как бы я не знал С++, без всей вузовской математики, которую я естественно проебал на первых курсах, я им нахуй не нужен. До того чё-то стало грустно, аж внутри нехорошо. Можешь посоветовать, как изучать всё это дело лучше всего?
>>1829146 Не знаю, мы математику особо не требуем. Обычно достаточно школьного уровня. Гораздо важнее, чтобы ты умел решать задачи на c++, потому как непосредственно математика - это всего лишь процентов десять из того, что тебе придется писать. Всё уже до тебя написано.
>>1829300 А в чем проблема объясни мне, а то я не понимаю. В if их же можно сравнивать. Да и при чем тут типы с точкой? А если мне, например, строки нужно сравнить?
>>1829306 Проблема в том, что строго сравнивать( через ==) типы с точкой не кошерно, поскольку они могут отличаться на очень маленькое число из-за округлений. Особенно, если они получены разными путями.
Начал гуглить о том как оно работает тут проясняется общая идея https://www.cyberforum.ru/blogs/18334/blog91.html Грубо говоря мы преобразуем число в некий адрес и переходим по нему без сравнения со всеми остальными.
Сделал на работе Performance Report по проекту, выступил с презентацией. Все порадовались цифрам и тому, насколько сильно результаты выше, чем у конкурентов.
Но всё равно попросили сделать так, чтоб новая реализация могла работать не только Windows/Linux x64 с привязкой к процессору. Сейчас оно тоже работает, но в случае несовместимости (другая ось, другая битность, другой процессор) переключается на Fallback-имплементацию, значительно менее производительную.
Ну я не против, сел и реализовал на плюсах все те функции, которые ранее были только на ассемблере. Intel ASM используется там, где он поддерживается, а во все остальных случаях используются новые функции на плюсах.
Вот только производительность в этом случае падает в 10 раз, потому что без асма и интринсиков работать с длинной арифметикой невозможно. Ну, то есть, возможно конечно, но это всегда будет значительно медленнее, чем использование асма или интринсиков.
Конечно, круто, что в C++ 20 появился <bit> и теперь не нужно писать десять оберток над popcnt и прочими lzcnt, но вот если бы ещё иметь стандартные способы работы с carry-flag и _mulx_u64, то все заботты бы решились.
Привет, анон. Возник вопрос из праздного любопытства: где посмотреть размер динамического массива? Вроде, как я понимаю, это значение хранится перед первым элементом массива в куче, однако, начинаю смотреть память и в упор не вижу ничего похожего, что я делаю не так? На пике фиолетовое - как раз объекты в массиве в количестве трёх штук, но что до них, что после - дебажный мусор.
>>1829665 Как ты думаешь, почему в векторе размер - это разность указателей? Почему в строке по крайней мере до недавнего времени хранят указатель и размер?
>>1829677 Контейнеры всё равно по умолчанию используют std::allocator, который хоть и получает длину в deallocate — в стандартной имплементации это (почти нигде?) не используется.
Из гарантированной пользы только знание того, для скольки объектов вызывать деструкторы.
>>1829671 Собственно да, порылся еще в вариантах, как это реализуют, понял, что не обязательно >>1829677 Даже не знаю, какой вывод я должен был по этим двум вопросам сделать? Что зависит от реализации? >>1829673 Это я сразу пробовал, но нет, не сработало
>>1829717 Вот именно. Но для построения более эффективных кастомных аллокаторов этот size всё же можно использовать, что и предполагается интерфейсом std::allocator.
>>1829713 Я прогнал тестик на своей системе, нашёл размер как раз перед первым элементом. Заглянул в отладчике в delete[], оттуда в free, там увидел чтение как раз этого значение из памяти (с заметной овер-аллокацией)
>>1829665 Это implementation defined. Так что ищи как это устроено в твоём тулсете. (std::allocator, malloc, calloc, менеджер памяти операционной системы)
>>1829738 Я читал про них, честно говоря плохо понимаю, где и когда они могут быть нужны. Идея комбинирования разных аллокаторов в одной программе - странная. Я видел софт, где на старте выделяется 1 кусок в хипе, и далее 0 аллокаций. Я видел софт, где используется кастомный мималлок, я видел софт, где дефолтного new достаточно.
Но вот идейно разные аллокаторы в одном месте я еще не видел. Мож чего-то не понимаю.
>>1829724 Оптимизации. Например арена аллокатор - когда выделаяешь память на много маленьких объектов, а потом пристреливаешь всю арену целиком за раз. >>1829743 Сами по себе они может и не нужны одновременно, зато апи либы можно пилить единым.
>>1829713 > Даже не знаю, какой вывод я должен был по этим двум вопросам сделать? Что зависит от реализации? Что в общем случае размер выделенной памяти тебе нужно запоминать самому.
>>1829844 А, так просто. Это более чем понятно, меня просто в какой-то момент зацепила полумагическая реализация delete[], вроде как и использую иногда, а как она понимает сколько именно нужно делитнуть - не знал
>>1829851 delete[] почти всегда в плане деаллокации реализован так же, как и delete, ему самому размер нужно знать только для того, чтоб правильно вызватть деструкторы для всех объектов массива.
При этом, если это массив примитивных типов или trivially_destructuble типов, то их деструкторы при delete[] не вызываются и размер массива компилятор больше не заботит. Он даже может начать вызывать operator delete[](void ptr) при наличии operator delete[](void ptr, size_t).
Но тот факт, что размер там всё равно может лежать перед первым элементом — используется как дедаль имплементации malloc-free.
То есть, если ты заоверлоадишь new/delete и new[]/delete[] (включая sized-версию), прибив там везде руками имплементацию, которая НЕ ЗАПИСЫВАЕТ размер перед первым элементом — у тебя delete[] всё равно будет работать, потому что компилятор не может гарантированно знать, что имплементация malloc/free/whatever хранит там размер, он не может на это полагаться, поэтому он дополнительно хранит где-то у себя размер ЕЩЁ РАЗ, чтоб знать, сколько деструкторов вызывать.
Ещё из этого вопроса можно почерпнуть всякое: >>1824807
>>1830063 tldr: 1. Вызов delete[] с точки зрения языка должен вызывать деструкторы, так что он всегда знает размер. При этом он всё ещё может аналогично делать это с помощью over-allocation. А может и нет.
2. Имплементация operator delete[] может использовать allocator, производительность или работоспособность которого может зависить от того, известен ли размер. Это отдельный слой и он может быть связан, а может быть и не связан с первым пунктом.
>>1829724 Всё — это что? Ты имеешь ввиду кучи готовых опенсорсных аллокаторов, которые можно без проблем втянуть в свой проект? Если да, то, в принципе, можно согласиться.
Или ты про то, что готовых new-malloc/delete-free должно быть и так достаточно?
>>1830774 Тебя предупредили. Я в свое вкатывался ради именно этого, охуенный язык, можно пердолиться вообще через все, что угодно, скорость. И если бы не nvidia мой потолок был бы унылое говно на С++98 за 80к в моем мухосранске. Сейчас я понимаю, что с точки зрения уютненько пристроить свою жопку - лучше было бы учить любой другой язык, а, в идеале, вообще фронтэнд, ебись он конём
>>1830959 Если тебе чистый компилятор нужен то gcc в помощь. Но учти там всё надо делать руками. Не думаю что тебе нужен именно компилятор, скорее ide. А так visual studio возьми. Можешь взять свежую, можешь 08-ого году, у неё интерфейс более виндовый.
>>1830732 Где вы такое откапываете, я ебал. Живу в центре Гейропки на 6.5к рейхсмарок с 3 годами опыта. Сваливайте из рашки и снг говна как можно раньше, мой вам совет.