Полезные материалы по всему, что может быть полезно плюсовику/сишнику.
6 невозможных вещей - Кевлин Хенни - Открытие Keynote Meeting C++ 2023
"Иногда я верю в шесть невозможных вещей до завтрака", - сказала Королева Алисе во время ее приключений через зазеркалье. Всего шесть? В разработке программного обеспечения мы постоянно верим в невозможные вещи, независимо от времени суток! Однако в этом докладе мы рассмотрим шесть конкретных невозможных вещей, которые определяют границы наших возможностей, начиная с мельчайших деталей представления целых чисел и заканчивая минным полем оценки задач и расстановки приоритетов, неопределенностью распределенных систем и пределами вычислимости. Как только мы узнаем свои пределы, мы сможем работать в их рамках, создавая решения, а не проблемы.
источник
#cpp #programming
👉 @cpp_lib
📚Beginning C++20: From Novice to Professional
Авторы: Ivor Horton, Peter Van Weert (2020)
Начните с изучения основ программирования, продвигаясь через пошаговые примеры, которые помогут вам стать опытным программистом на C++. В эту книгу включены новые возможности стандарта C++20, такие как модули, концепты, диапазоны и spaceship operator. Все языковые концепции, которые объясняются в книге, проиллюстрированы примерами рабочих программ, а все главы включают упражнения, которые помогут вам проверить и попрактиковать свои умения. Для всех примеров из текста и решений упражнений предусмотрена бесплатная загрузка исходного кода.
Во время чтения книги вы:
✔Начнете программировать со стандартом C++20;
✔Изучите работу с массивами и циклами, указателями и ссылками, строками и т. д.;
✔Напишете свои собственные функции, типы и операторы;
✔Откроете для себя основы объектно-ориентированного программирования;
✔Используете перегрузку, наследование, виртуальные функции и полиморфизм;
✔Напишете общие шаблоны функций и классов и сделаете их безопасными;
✔Изучите все тонкости контейнеров, алгоритмов и диапазонов.
#cpp #programming
👉 @cpp_lib
Dangerous Dave
Серия видеороликов, показывающих начинающим программистам, как воссоздать Dangerous Dave с помощью C и SDL (2 часа)
источник
#cpp #programming
👉 @cpp_lib
Устал писать тесты с кучей моков? Сложно поддерживать приложение, ведь бизнес логика перемешалась с инфраструктурой? 😰
Присоединяйся к нашему практическому курсу по Domain Driven Design, где за 10 вебинаров мы разложим все по полочкам.
🚀Стартуем 1 апреля. Присоединяйся прямо сейчас https://microarch.ru/courses/hexagonal-architecture?utm_source=posev&utm_medium=erid:2VtzqwtV8Fo&utm_campaign=10
Наш курс по Domain-Driven Design позволит вам изучить основы и принципы этого подхода, а также освоить практические навыки, необходимые для успешного применения DDD в реальных проектах. Вы узнаете:
✅ Что такое Domain-Driven Design и почему он так важен для современных разработчиков.
✅ Основы проектирования доменов и формирование предметной области.
✅ Принципы и методы моделирования предметной области, включая разработку моделей предметной области и определение бизнес-правил.
✅ Создание эффективных и масштабируемых сервисов с использованием DDD.
✅ Применение шаблонов проектирования и принципов DDD для оптимизации кода и повышения производительности.
Курс ведет действующий архитектор и разработчик Кирилл Ветчинкин. Он успешно реализовал проекты для Мегафона, Теле2, ВСS Brокer. Постоянный спикер крупных IT-конференций.
Не упусти шанс стать экспертом! Присоединяйся к нашему курсу и раскрой свой потенциал в разработке успешных проектов уже сегодня https://microarch.ru/courses/hexagonal-architecture?utm_source=posev&utm_medium=erid:2VtzqwtV8Fo&utm_campaign=10
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqwtV8Fo
Автоматическая Генерация Конфигураций для Make Сборок
При разработке программного обеспечения (особенно для микроконтроллеров) рано или поздно придется столкнуться с тем, что надо как-то передавать конфигурации для данного программного проекта.
В своем опыте я пришел к выводу, что с точки зрения масштабирования кодовой базы, конфиги проще всего передавать через переменные окружения. Да.. Плюс в том, что переменные окружения можно определять прописывая прямо в скриптах (Make, CMake и т.п.).
Выглядит это так. У каждой сборки есть файл config.mk в котором перечислены программные компоненты из которых должна собираться эта конкретная сборка. Содержимое этого файла обычно выглядит так.
https://habr.com/ru/articles/798213/
#cpp #programming
👉 @cpp_lib
Отладка C при помощи пакета Cosmopolitan Libc
Cosmopolitan Libc предоставляет набор отладочных возможностей, повышающих удобство разработки на C: трассировка вызовов функций, интеграция с gdb, среда выполнения ASAN/UBSAN и многое другое! На C написано много быстрого и критически важного кода. Если вы пользуетесь программами, написанными на C, если вам приходится предусматривать интерфейсы для работы с библиотеками на C, исправлять баги в коде на C, либо даже переписывать имеющуюся на С программу на каком-то другом языке, то именно этот инструмент помогает понять, что делается в вашем коде на C. Отладка – это не просто россыпь инструкций printf. В этом посте будет рассмотрено, как Cosmopolitan Libc помогает наверняка и как следует отлаживать код C. Все примеры находятся в этом репозитории.
https://ahgamut.github.io/2022/10/23/debugging-c-with-cosmo/
#cpp #programming
👉 @cpp_lib
Words counter benchmarks
Это серия все более производительных "счетчиков слов" (не вычурных, просто разделяющих "слова" пробелами), реализованных с использованием возможностей Modern C++20, таких как span, string_view, filesystem, ranges и других.
При необходимости используются параллельные хэш-карты и другие зависимости, такие как контейнеры Abseil, Boost.Future (допускающие продолжения) или Asio с корутинами C++20.
https://github.com/germandiagogomez/words-counter-benchmarks-game
#cpp #programming
👉 @cpp_lib
❓Хотите с нуля освоить разработку игр или сменить сферу на геймдев?
Отус приглашает 27 марта в 20:00 по мск на бесплатный вебинар по Unreal «Создаём шутер от первого лица на Unreal Engine 5»!
Вебинар является частью полноценного онлайн-курса «Unreal Engine Game Developer. Basic».
На вебинаре вы узнаете об отличиях и преимуществах движка Unreal Engine 5, установите его и научитесь базово ориентироваться в его интерфейсе.
➡️ Регистрация на вебинар: https://vk.cc/cvzl6x
Основные темы вебинара:
✔️ Что такое игровой движок
✔️ Основные отличия и преимущества Unreal Engine 5
✔️ Установка и настройка Unreal Engine 5
✔️ Подбор ассетов из маркетплейса
✔️ Создание проекта
Не упустите свою возможность, попробовать себя в роли разработчика игр на Unreal Engine!
После вебинара вы сможете продолжить обучение на специальных условиях и получить видеокурс по программированию на С++ в подарок.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Рефакторинг с использованием C++17 std::optional
Существует множество ситуаций, когда вам нужно выразить, что что-то является "необязательным" - объект, который может содержать значение или нет. У вас есть несколько вариантов реализации такого случая, но в C++17 появился, пожалуй, самый полезный способ: std::optional.
Сегодня я подготовил один пример рефакторинга, где вы можете научиться применять эту новую возможность C++17.
https://www.cppstories.com/2018/04/refactoring-with-c17-stdoptional/
#cpp #programming
👉 @cpp_lib
Развлечения с gRPC и C++
Погружение в асинхронные серверы и клиенты с использованием C++ и gRPC в 2023 году
Почему я пишу эту серию статей? Так получилось, что я хочу использовать gRPC в своем будущем DNS-сервере.
В прошлом я уже использовал gRPC - с большим трудом. В этот раз я посмотрел несколько примеров и сделал что-то вроде реализации - но понял, что это дерьмо. К тому же было слишком много вещей, которых я не знал и не понимал, чтобы исправить это. Поэтому я решил потратить некоторое время на игру с gRPC, чтобы лучше понять его.
https://lastviking.eu/fun_with_gRPC_and_C++/
#cpp #programming
👉 @cpp_lib
🦾Хардкорный тест по языку С🦾
📌Пройдите полный тест из 20 вопросов на сайте и проверьте, насколько вы готовы к обучению на углубленном курсе - «Программист С» от OTUS. Сможете сдать - пройдете на курс по спеццене!
⏰ Время прохождения теста ограничено 30 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
C++: Трассировка лучей за одни выходные
За годы работы я провел множество занятий по графике. Часто я провожу их по трассировке лучей. Я решил адаптировать свои заметки к курсу, чтобы как можно быстрее познакомить вас с полезной программой. Это не будет полнофункциональный трассировщик лучей, но в нем есть непрямое освещение, которое сделало трассировку лучей основным элементом в фильмах. Следуйте этим шагам, и архитектура созданного вами трассировщика лучей будет пригодна для создания более обширного трассировщика лучей, если вы увлечетесь и захотите этим заняться.
https://raytracing.github.io/books/RayTracingInOneWeekend.html
#cpp #programming
👉 @cpp_lib
Простое руководство по атомарности в C++
Часто возникает путаница с тем, что же понимается в компьютерных науках под «атомарностью». Как правило, атомарность – это свойство процесса, означающее, что он совершается за один шаг или операцию. Но в языке C++ атомарность определяется гораздо более специфичным образом. На самом деле, при использовании std::atomic с классами и типами еще не гарантируется, что весь код будет подлинно атомарным. Хотя, атомарные типы и входят в состав языка C++, сами атомарные операции должны поддерживаться на уровне того аппаратного обеспечения, на котором работает программа. Эта статья – простое руководство, помогающее понять, что же представляет собой атомарность в C++.
https://blog.devgenius.io/a-simple-guide-to-atomics-in-c-670fc4842c8b
#cpp #programming
👉 @cpp_lib
Ecs-cpp
Entity Component System (ECS) - это шаблон проектирования, который используется для разделения данных и логики. Это способ организовать код таким образом, чтобы он был более гибким и удобным в обслуживании. Этот паттерн часто используется в игровых движках, но может применяться и в других приложениях.
Рассматривайте его как контейнер, в котором хранятся сущности, и каждая сущность может иметь один или несколько компонентов. Компонент - это структура данных, которая хранит данные, а система - это функция, которая работает с сущностями, имеющими определенный набор компонентов. Систему можно рассматривать как функцию, которая принимает набор компонентов и выполняет операции над ними. Контейнер ECS отвечает за отслеживание того, какие сущности имеют те или иные компоненты, и какие системы должны быть запущены на тех или иных сущностях.
https://github.com/annell/ecs-cpp
#cpp #programming
👉 @cpp_lib
❓Чем перемещение отличается от копирования в C++?
Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете:
- синтаксис и подводные камни move-семантики;
- отличие копирования от перемещения;
- когда компилятор может сам, а когда ему нужно подсказать;
- как отличить rvalue от lvalue;
- как избегать лишнего копирования объектов.
⏰ Занятие пройдёт 21 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение!
👉 Зарегистрируйтесь прямо сейчас: https://otus.pw/DefN/?erid=2VtzqwJbp9S
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🦾 Изучите Qt Remote Objects и межпроцессное взаимодействие для старта работы в кроссплатформенной разработке
🎙 Ждём вас на бесплатном практическом уроке от OTUS, спикер Владимир Щелов — ведущий разработчик в 1С.
На вебинаре:
- поговорим про механизм Qt Remote Objects;
- разберем его работу на примере;
- освоим удобный механизм организации межпроцессного взаимодействия, доступный на Qt;
- научимся пользоваться им на конкретном примере.
Встречаемся 2 апреля в 19:00 мск в рамках курса «Разработка прикладного ПО на Qt и ОС Аврора». Доступна рассрочка на обучение!
👉 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cvJYMIРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Перед вами — книга-метод, книга-наставник, способная перевернуть мышление и помочь выработать осознанный подход к работе и жизни в целом путём высокоуровневого планирования.
В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.
У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.
Ознакомиться с книгой
🔥 Освой актуальные инструменты разработки на С++
Пройди тест по C++ и проверь подходит ли тебе наш курс
Ответишь — пройдешь на продвинутый курс "C++ Developer. Professional" от OTUS по специальной цене + получишь запись мастер-класса от преподавателя курса.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cvHNq8Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
C++: Эмулятор NES с нуля
#1: Bitwise Basics & Overview
#2: The CPU (6502 Implementation)
#3: Buses, RAMs, ROMs & Mappers
#4: PPU - Background Rendering
#5: PPU - Foreground Rendering
#6: APU - Sounds, Beeps & Bloops
#7: More About Mappers
источник
#cpp #programming
👉 @cpp_lib
📚C++ Standard Library Quick Reference
Авторы: Marc Gregoire, Peter Van Weert (2016)
Стандартная библиотека шаблонов является жемчужиной языка программирования С++ и содержит основные алгоритмы, структуры данных и функции, необходимые для повседневной работы. Обычно она изучается в конце любого руководства по С++, однако этот справочник направлен исключительно на изучение STL, рассматривая основные темы, такие как контейнеры, лямбда-выражения, указатели и функции по работе с многопоточностью.
В книге рассматриваются следующие темы:
✔️ математические функции;
✔️ контейнеры;
✔️ алгоритмы;
✔️ потоки ввода/вывода;
✔️ строки;
✔️ многопоточность.
#cpp #programming
👉 @cpp_lib
💡 Разрабатываешь на C++? Освой кроссплатформенную разработку на QT и ОС Аврора
❗️ Вкладывай в перспективу - вкладывай в себя!
Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cvBd8i
Курс доступен в рассрочку.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📚Expert C++: Become a proficient programmer by learning coding best practices with C++17 and C++20's latest features
Авторы: Vardan Grigoryan, Shunguang Wu (2020)
Язык C++ развивался на протяжении многих лет, и сейчас доступна его последняя версия - C++20. Начиная с C++11, C++ постоянно расширяет набор функций языка. В новой версии вы познакомитесь с такими возможностями, как концепции, модули, диапазоны и корутины. Эта книга станет вашим путеводителем в изучении тонкостей языка, методов, инструментов C++ и новых возможностей, появившихся в C++20, а также поможет вам применить их при создании современного и отказоустойчивого программного обеспечения.
#cpp #programming
👉 @cpp_lib
Разработка кросплатформенного приложения на Qt с использованием нейросетей, обученных на tensorflow
Раз уж Вы заинтересовались данной статьёй, то ожидается, что Вы умеете программировать на с++ с использованием библиотеки Qt и разрабатывать нейросети на Python c использованием библиотеки tensorflow.
Соответственно остаётся только понять как использовать обученные Вами нейросетевые модели в Qt проектах.
https://habr.com/ru/articles/719888/
#cpp #programming
👉 @cpp_lib
👩💻 Как прокачать свои скиллы в разработке на С++?
Прийти на бесплатный практический урок «Атомарные типы данных и Memory Ordering» от OTUS.
На вебинаре:
🔹 поговорим о типах данных в C++, для которых не нужна дополнительная синхронизация при конкурентом доступе;
🔹 разберемся, как С++ помогает тонко оптимизировать lock-free разработку с помощью memory ordering.
Встречаемся 28 марта в 20:00 мск в рамках курса «C++ Developer. Professional». Доступна рассрочка на обучение!
➡️ Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cvxvCyРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
C++ Что такое указатели и зачем они нужны
#cpp #programming
👉 @cpp_lib
Генерация пещер при помощи клеточного автомата
Клеточный автомат — дискретная модель, изучаемая в математике, теории вычислимости, физике, теоретической биологии и микромеханике. Основой является пространство из прилегающих друг к другу клеток (ячеек), образующих решётку. Каждая клетка может находиться в одном из конечного множества состояний (например, 1 и 0).
https://habr.com/ru/articles/741564/
#cpp #programming
👉 @cpp_lib
💡 QT и ОС Аврора: надежная основа для разработки востребованного ПО!
❗️ Вкладывай в перспективу - вкладывай в себя!
Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cvtPSB
Курс доступен в рассрочку.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🦾 Раскрой всю мощь C++
Пройди тест по C++ и проверь свои знания.
Ответишь — пройдешь на продвинутый курс "C++ Developer. Professional" от OTUS по специальной цене + получишь запись мастер-класса от преподавателя курса.
➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cvrZSD
На этом курсе ты:
✔️ Научишься прикладному применению стандартов C++11 / C++14 / C++17.
✔️ Освоишь асинхронное и многопоточное программирование.
✔️ Получишь глубокое представление о шаблонной магии и паттернах проектирования.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
C++: Рендеринг на основе физики: от теории к реализации
Мэтт Фарр, Венцель Якоб и Грег Хамфрис
Фотореалистичная компьютерная графика повсеместно распространена в современном мире, широко используется в кино и видеоиграх, а также в дизайне продуктов и архитектуре. Физически обоснованные подходы к рендерингу, когда в основе синтеза изображения лежит точное моделирование физики рассеивания света, обеспечивают визуальную реалистичность и предсказуемость. Этот учебник по компьютерной графике, ставший бестселлером, в новом, всесторонне обновленном издании устанавливает стандарты физически-ориентированного рендеринга в индустрии и области.
Книга Physically Based Rendering описывает как математическую теорию, лежащую в основе современной системы фотореалистичного рендеринга, так и ее практическую реализацию. Метод, известный как грамотное программирование, объединяет человекочитаемую документацию и исходный код в единый справочник, специально разработанный для облегчения понимания. Передовые алгоритмы, программное обеспечение и идеи книги, включая новый материал о трассировке лучей на GPU, позволят читателю разработать и использовать полнофункциональную систему рендеринга, способную создавать потрясающие изображения.
https://www.pbr-book.org/4ed/contents
#cpp #programming
👉 @cpp_lib
C++: Движок Raycasting для Wolfenstein 3D
Raycasting - это техника рендеринга для создания 3D-перспективы на 2D-карте. В те времена, когда компьютеры были более медленными, невозможно было запустить настоящие 3D-движки в реальном времени, и первым решением стал рэйкастинг. Raycasting может работать очень быстро, потому что для каждой вертикальной линии экрана нужно сделать только один расчет. Самой известной игрой, в которой использовалась эта техника, является, конечно же, Wolfenstein 3D.
https://lodev.org/cgtutor/raycasting.html
#cpp #programming
👉 @cpp_lib