Полезные материалы по всему, что может быть полезно плюсовику/сишнику.
Delivering Safe C++ — Bjarne Stroustrup
Бьёрн разбирается с тремя основными вопросами:
- что означает "безопасный" в контексте различных применений C++;
- как гарантировать безопасность там, где она необходима;
- как заставить разработчиков писать безопасный код.
источник
#cpp #programming
👉 @cpp_lib
📚Beginning C++ Game Programming
Автор: John Horton (2019)
Первое издание данной книги было обновлено и улучшено, чтобы осветить новейшие функции Visual Studio 2019, SFML и современные методы программирования на C++. Книга представляет собой увлекательное введение в программирование игр. Вы научитесь создавать клоны популярных игр, таких как Timberman, Pong, шутер на выживание с зомби, платформер-головоломку для совместной игры и Space Invaders.
Во время чтения книги вы:
✔️Настроите свой проект разработки игр в Visual Studio 2019 и изучите библиотеки C++, такие как SFML;
✔️Изучите основные игровые концепции, такие как игровая анимация, физика игры, ведение счета и звук;
✔️Используете классы, наследование и ссылки для создания и управления тысячами врагов;
✔️Изучите ООП в C++, создав Pong;
✔️Научитесь работать с указателями, ссылками и STL.
#cpp #programming
👉 @cpp_lib
🔥 Время прокачивать свои навыки и RustИ !!!
🫵 Проверь себя - ответь на вопросы и узнай, хорошо ли ты знаешь Rust и его ключевые особенности. Тест является частью полноценного онлайн-курса «Rust Developer. Professional» от Отус.
➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cwx3Er
Почему именно сейчас в 2024 году Rust так популярен?
Безопасность, высокая производительность, многопоточность и кроссплатформенность. Он подходит для создания безопасных, эффективных и многопоточных приложений на разных платформах.
💥 Бонусом за успешно пройденный тест, получишь доступ к записям открытых вебинаров курса (доступ на странице курса).
Пройди тест, смотри наши вебинары и приходи учиться! Ждем.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake).
00:00 Зависимости и хедера
08:22 Build.sh
11:48 Makefiles и декларативная модель
19:51 Ленивые и переменные
30:52 Автоматические переменные
36:15 Первая версия makefile
41:33 Функции и wildcards
47:40 Вторая версия makefile и зависимости от хедеров
56:36 Третья итерация: почти идеальный makefile
01:06:26 Знакомство с cmake
01:19:35 Бонус. Немного больше про cmake.
01:30:40 Окончательные уроки.
источник
#cpp #programming
👉 @cpp_lib
Преобразование типов данных в языках С и С++
#cpp #programming
👉 @cpp_lib
Разреженные структуры данных
Когда-то я писал пост про различные интересные структуры данных. Среди них был т.н. sparse set. Там мы описали его в общих чертах, опустив некоторые детали (которыми позже статья была дополнена). Но кроме sparse set существуют и другие разреженные структуры данных! На них сегодня и посмотрим : )
https://habr.com/ru/articles/790844/
#cpp #programming
👉 @cpp_lib
Практика языка C (МФТИ, 2023-2024). Интермедия. Стандарт языка C.
На этом занятии мы поговорим о стандарте C. Мы начнём с попытки изобрести очень простой язык программирования и увидим на его примере основные особенности поведения высокоуровневых программ. Далее мы подробно разберём разные формы поведения программ на языке C, познакомимся и потренируемся со стандартом языка.
У нас будет один вставной момент где я учу детей разбивать программы на модули и писать тесты. Это связано с тем что они сейчас делают проекты, можете это пропустить если смотрите эту лекцию в отрыве от основного курса.
В конце я приготовил небольшое рассуждение про важность стандартизации.
00:00 Язык программирования INC и поведение программ
12:38 Семантика и стандарт языка
23:50 Поведение программ
34:15 Неопределённое поведение
47:17 Тренировка в чтении стандарта и время решать задачи
50:20 Немного информации про проект и live coding
01:08:43 Стандарт как источник знаний
01:19:11 Важность стандартизации
источник
#cpp #programming
👉 @cpp_lib
⁉️ Каких разработчиков берут в свою команду российские IT-гиганты?
Тех, кто следит за изменениями рынка и владеет современными инструментами.
Станьте одним из них — освойте кросс-платформенный фреймворк Qt всего за 5 месяцев на онлайн-курсе «Разработка прикладного ПО на Qt и ОС «Аврора» от OTUS.
После обучения вы:
- освоите Qt — одну из лучших кросс-платформенных библиотек для разработки UI на С++;
- изучите нативную разработку для Авроры 5.0, сможете участвовать в проектах по созданию мобильных приложений для государственных компаний и крупного бизнеса;
- научитесь писать программы на QML;
- научитесь создавать, масштабировать и видоизменять приложения на Qt;
- сможете создавать приложения под модули Qt: датчики, мультимедиа, геолокацию.
Стартуем 26 апреля! Есть рассрочка и специальная цена.
👉 Пройдите короткий тест и узнайте, готовы ли вы к расширению карьерных возможностей: https://vk.cc/cwpn03Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как исключения C++ легко делают ваше программное обеспечение лучше и безопаснее
В чем проблема?
Если ваше программное обеспечение не проверяет и не устраняет ошибки, ваша программа может быть ненадежной. Клиенты сочтут это некачественным программным обеспечением.
Многие реальные программы не должны завершаться аварийно, и не только те, которые управляют медицинскими приборами или ракетами.
Если исключения не используются или не обрабатываются должным образом, процесс завершается аварийно. При вызове std::abort() или если реализация не разворачивает стек перед вызовом std::terminate(), деструкторы объектов могут не вызываться, а внешние ресурсы могут оставаться в неопределенном состоянии. Ненормальное завершение процесса - типичный вектор для атак типа "отказ в обслуживании" (DOS).
https://nexwebsites.com/blog/cpp_exceptions/
#cpp #programming
👉 @cpp_lib
C++. Ограничение noexcept
Реализация обобщенного кода C++ может быть сложной, поскольку любая операция потенциально может выкинуть исключение.
Примечательно, что, когда требуется строгая гарантия исключений, это может значительно усложнить код и привести к накладным расходам во время выполнения (или даже к изменению сложности «O большого»).
К счастью, для обеспечения соблюдения гарантий noexcept во время компиляции концепты можно использовать C++20.#include <utility>
struct UnsafeType
{
UnsafeType() = default;
UnsafeType(UnsafeType&&) {}
UnsafeType& operator=(UnsafeType&&) { return *this; }
};
template <typename T>
void unsafe_swap(T& left, T& right)
{
auto tmp = std::move(left);
left = std::move(right); // Что будет, если этот move выкинет исключение?
// было выполнено перемещение значения из left,
// и перемещение этого значения в right снова может выкинуть исключение
right = std::move(tmp);
}
struct SafeType
{
SafeType() = default;
SafeType(SafeType&&) noexcept {}
SafeType& operator=(SafeType&&) noexcept { return *this; }
};
template <typename T>
requires requires (T& a, T& b)
{
// присваивание перемещением допустимо и не выкидывает исключение
{ a = std::move(b) } noexcept;
}
void safe_swap(T& left, T& right)
{
auto tmp = std::move(left);
left = std::move(right);
right = std::move(tmp);
}
SafeType a, b;
safe_swap(a, b); // OK
UnsafeType x, y;
// Не скомпилируется:
// safe_swap(x, y);
// UnsafeType не удовлетворяет требованию noexcept
simontoth/daily-bit-e-of-c-constraining-on-noexcept-fe477cc2bbe1" rel="nofollow">https://medium.com/@simontoth/daily-bit-e-of-c-constraining-on-noexcept-fe477cc2bbe1
#cpp #programming
👉 @cpp_lib
Дерево отрезков
Всем привет. В этой статье я расскажу про дерево отрезков. Дерево отрезков - это очень мощная структура данных, которая позволяет делать много разных операций над массивом чисел. Я постараюсь по полочкам разложить эту тему и объяснить возможности дерева отрезков. Также я разберу несколько нетривиальных задач на дерево отрезков. Помимо самого дерева отрезков я расскажу и про связанные темы: дерево Фенвика, разреженные таблицы.
https://habr.com/ru/articles/808511/
#cpp #programming
👉 @cpp_lib
#вакансия #job #vacancy #remote #parttime #наставник
Компания: OTUS – образовательная платформа. За более чем 7 лет работы мы создали более 180 авторских курсов для IT-специалистов разного уровня от Junior до Senior. Практически на каждом нашем курсе есть вступительное тестирование для наших студентов, плюс более 650 преподавателей-практиков из крупнейших компаний. Мы учимся друг у друга, советуемся, помогаем, делимся опытом и обсуждаем новости как в преподавании, так и в IT.
Вакансия: Наставник на онлайн-курс «Программист С». Предстоит проверять около 5-20 домашних заданий в неделю.
Эта вакансия предполагает частичную занятость. Требуется практический опыт работы по тематике курса. Можно без опыта преподавания. Мы с удовольствием поможем Вам освоить Best Practices преподавания: для этого у нас есть бесплатный курс подготовки.
Наставник проверяет домашние задания и дает письменный фидбэк, помогает студентам разобраться в материале.
Условия:
✅ удаленное сотрудничество, занятость part-time.
✅ оплата от 300 до 400 руб. за проверку 1-го домашнего задания.
✅ наши методисты помогают освоить лучшие инструменты и практики преподавания.
Еще Вы сможете:
✅ внести свой вклад в развитие IT.
✅ структурировать свой опыт и знания.
✅ развивать личный бренд.
✅ прокачать софт-скиллы.
Бонусы:
✅ наши курсы со скидкой/бесплатно.
✅ возможность приглашать в свою команду на работу лучших выпускников.
✅ воркшопы и конференции.
Подробнее в telegram: @ElenaAlias
📚Building Low Latency Applications with C++
Sourav Ghosh (2023)
Develop a complete low latency trading ecosystem from scratch using modern C++. C++ is meticulously designed with efficiency, performance, and flexibility as its core objectives. However, real-time low latency applications demand a distinct set of requirements, particularly in terms of performance latencies.
C++ is meticulously designed with efficiency, performance, and flexibility as its core objectives. However, real-time low latency applications demand a distinct set of requirements, particularly in terms of performance latencies.
With this book, you’ll gain insights into the performance requirements for low latency applications and the C++ features critical to achieving the required performance latencies. You’ll also solidify your understanding of the C++ principles and techniques as you build a low latency system in C++ from scratch.
You’ll understand the similarities between such applications, recognize the impact of performance latencies on business, and grasp the reasons behind the extensive efforts invested in minimizing latencies. Using a step-by-step approach, you’ll embark on a low latency app development journey by building an entire electronic trading system, encompassing a matching engine, market data handlers, order gateways, and trading algorithms, all in C++. Additionally, you’ll get to grips with measuring and optimizing the performance of your trading system.
By the end of this book, you’ll have a comprehensive understanding of how to design and build low latency applications in C++ from the ground up, while effectively minimizing performance latencies.
#cpp #programming
👉 @cpp_lib
Подборка полезных ресурсов для изучения C++
💡 LearnCpp.com — это бесплатный веб-сайт, посвященный обучению вас программированию на C++. Независимо от того, был ли у вас какой-либо предыдущий опыт программирования или нет, учебные пособия на этом сайте помогут вам выполнить все шаги по написанию, компиляции и отладке ваших программ на C++, и все это с большим количеством примеров.
💡 ravesli.com — Здесь представлены более 240 бесплатных уроков, где с нуля рассматриваются основы и тонкости языка С++ и программирования в целом. Есть пошаговые создания игр на С++ с помощью библиотек MFC и SFML, и более 70 практических заданий для проверки ваших навыков программирования.
💡 metanit.com — данный сайт посвящен различным языкам и технологиям программирования, компьютерам, мобильным платформам и ИТ-технологиям. Здесь будут выкладываться различные руководства и учебные материалы, статьи и примеры.
💡 cppstudio.com/cat/274/ — Если вы новичок в C++, предлагаю Вам прочитать этот бесплатный учебник. Здесь собрано большое количество статей для начинающих программистов по С++. Условно все статьи разделены на группы, кратко характеризующие их содержание. После прочтения статьи, можно закрепить материал, написав несколько программ. Для проверки своих теоретических знаний можно пройти тестирование по С++. В таблице после теоретических статей идет подраздел практики, в котором вы можете пройти тестирование и написать программы.
💡 cplusplus.com/doc/tutorial/ — These tutorials explain the C++ language from its basics up to the newest features introduced by C++11. Chapters have a practical orientation, with example programs in all sections to start practicing what is being explained right away.
💡 devdocs.io/cpp/ — The interface of C++ standard library is defined by the following collection of headers.
💡 https://en.cppreference.com/w/cpp — ещё одна хорошая документация на английском. Постоянно обновляется.
💡 https://learnc.info/ — хороший сайт с лекциями по языку C. В качестве базового языка вам предстоит изучать C. Почему именно C, а не Pascal, Python, Ruby или PHP? Этот язык заставляет вас думать обо всём. Когда программируешь на си, начинаешь понимать, что компьютер - просто железяка. Необходимо самостоятельно выделять память под объекты, затем очищать эту память, заботиться о переполнении массивов, переполнении переменных, изменении знака переменных, приведении типов, правильном обращении к памяти и т.д.
#cpp #programming
👉 @cpp_lib
👀 Кто сказал, что управлять памятью в Rust сложно?
Приглашаем 22 апреля в 20:00 мск на бесплатный вебинар «Управление памятью в Rust» от Отус.
Вебинар является бесплатной частью полноценного онлайн-курса «Rust Developer. Professional».
➡️ Регистрация на вебинар: https://vk.cc/cwflqN
На вебинаре мы рассмотрим:
✔️ принцип владения, позволяющий уничтожать объекты без сборщика мусора;
✔️ принцип заимствования, гарантирующий корректное использование ссылок;
✔️ зачем в язык были добавлены явные лайфтаймы;
✔️ механизм для описания кастомной логики деинициализации объектов.
❗️Записывайтесь сейчас, а мы потом напомним. Участие бесплатно.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👨💻 Потренируйтесь проходить собеседования с разработчиками из Яндекса, VK, Ozon, Тинькофф и других ведущих компаний, а также получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать.
Потренироваться проходить собеседования
Structured binding declaration (since C++17)
https://en.cppreference.com/w/cpp/language/structured_binding
#cpp #programming
👉 @cpp_lib
Восемь возможностей C++17, которые должен применять каждый разработчик
Мы поговорим о восьми удобных изменениях, которые влияют на ваш повседневный код. Четыре изменения касаются самого языка, а ещё четыре — его стандартной библиотеки.
https://habr.com/ru/articles/343622/
#cpp #programming
👉 @cpp_lib
"Как вы начинаете, так вы и продолжаете." – Брюс Ли
Курс для начинающих «Введение в Реверс инжиниринг» стартует 6 мая (6 мес.)
Курс подойдёт всем интересующимся темой реверс-инжиниринга. По окончанию курса, вы будете уметь проводить исследования исполняемых файлов и вносить изменения в логику программ.
Курс для продолжающих «Реверсивный инжиниринг ПО под ОС Windows» начинается 3 июня (6.5 мес.)
Курс ведет Андрей Бирюков, автор книг, статей, эксперт и спикер конференций по ИБ.
На курсе подробно рассматривается синтаксис Ассемблера, анализ приложений различного уровня сложности, от простейших crackme до полноценных программ на современных архитектурах.
Учитесь у лучших!
🏆 Сертификат/удостоверение о повышении квалификации
Пишите нам:
@Codeby_Academy
+74994441750
Приведение типов в C++
1. static_cast
В общем тот же reinterpret_cast, только делает проверку во время компиляции на совместимость. Проверяет можем ли мы сделать downcasting типа, привести тип родителя к типу потомка. Когда заранее известно, что может быть только один тип потомка
2. dynamic_cast
Динамическое преобразование типов, когда информация о типе появляется только во время исполнения программы
3. reinterpret_cast
Сообщает, что в данном участке памяти лежат те или иные типы данных и он этого никак не проверяет. В данном случае программист сам решает
4. const_cast
Снимает const квалификатор. Если понадобился const_cast, то действительно пошло что-то не так и пытаемся снять константность
5. C-style cast
Замаскированное применение const_cast, static_cast, reinterpret_cast и их комбинаций. Применяются в следующем порядке
• const_cast
• static_cast
• static_cast + const_cast
• reinterpret_cast
• reinterpret_cast + const_cast
#cpp #programming
👉 @cpp_lib
Кто такой архитектор ПО и как им стать?
Архитектор ПО — одна из самых востребованных позиций на современном рынке IT.
Узнайте, что нужно, чтобы претендовать на эту должность, на бесплатном практическом уроке от OTUS. Спикер — опытный эксперт из крупной компании. На вебинаре разберём:
- какую роль выполняет архитектор и зачем он нужен;
- какие бывают архитекторы;
- чем отличается архитектура от проектирования.
Встречаемся 20 мая в 19:00 мск в рамках курса «Software Architect». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!
Ссылка для регистрации: https://vk.cc/cwqlRMРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
C++. std::make_unique_for_overwrite, std::make_shared_for_overwrite и std::allocate_shared_for_overwrite
C++ 440. Набор функций создания умных указателей в C++20: std::make_unique_for_overwrite, std::make_shared_for_overwrite и std::allocate_shared_for_overwrite.
Стандарт C++20 представил новый набор функций создания умных указателей: std::make_unique_for_overwrite, std::make_shared_for_overwrite и std::allocate_shared_for_overwrite.
Эти варианты инициализируют выделенную память значениями по умолчанию, в отличие от предыдущих вариантов с инициализацией значениями.
Это позволяет избежать дублирующей инициализации POD типов при немедленной перезаписи памяти.#include <memory>
#include <memory_resource>
auto p1 = std::make_unique_for_overwrite<int>();
// decltype(p1) == std::unique_ptr<int>, *p1 == неопределенное значение
auto p2 = std::make_shared_for_overwrite<int>();
// decltype(p2) == std::shared_ptr<int>, *p2 == неопределенное значение
std::pmr::monotonic_buffer_resource mr;
std::pmr::polymorphic_allocator<int> alloc{&mr};
auto p3 = std::allocate_shared_for_overwrite<int>(alloc);
// decltype(p3) == std::shared_ptr<int>, *p3 == неопределенное значение
// Перегрузки также поддерживают массивы, инициализируемые по умолчанию
auto p4 = std::make_unique_for_overwrite<int[]>(7); // 7 элементов
// decltype(p4) == std::unique_ptr<int[]>, p4[0] == неопределенное значение
auto p5 = std::make_shared_for_overwrite<int[]>(7);
// decltype(p5) == std::shared_ptr<int[]>, p5[0] == неопределенное значение
auto p6 = std::allocate_shared_for_overwrite<int[]>(alloc, 7);
// decltype(p6) == std::shared_ptr<int[]>, p6[0] == неопределенное значение
simontoth/daily-bit-e-of-c-std-make-unique-for-overwrite-std-make-shared-for-overwrite-and-34875c161fbd" rel="nofollow">https://medium.com/@simontoth/daily-bit-e-of-c-std-make-unique-for-overwrite-std-make-shared-for-overwrite-and-34875c161fbd
#cpp #programming
👉 @cpp_lib
📚Learn C++ by Example: Covers versions 11 to 23
Frances Buontempo (2024)
Эта книга — веселый и практичный способ начать писать современный код на C++. В ней вы пройдете через занимательные задачи, подчеркивая возможности и приемы, ставшие возможными благодаря C++ 17, 20 и 23. Вы узнаете об объектах и массивах, создав колоду игральных карт, освоите библиотеку C++ random для игры в угадывание чисел, используете библиотеку chrono для создания таймера обратного отсчета и многое другое. Попутно вы почерпнете ценные советы по тестированию, организации проектов и другим навыкам продуктивности.
#cpp #programming
👉 @cpp_lib
🦾 Научитесь писать корректный код на С++, учитывая возможности новых стандартов
Всего за 5 месяцев вы освоите современные инструменты для более эффективной разработки и повышения грейда. Записывайтесь на онлайн-курс «C++ Developer. Professional» от OTUS.
Программа идеально подходит для разработчиков на C++ уровней Junior или Middle, а также разработчиков на Java и Python.
На курсе вас ждут:
- живые вебинары с возможностью задать вопросы экспертам;
- много практики и сильные проекты для портфолио;
- поддержка профессионального комьюнити;
- рассрочка на комфортных условиях.
👉 Пройдите короткий тест и узнайте, готовы ли вы к расширению карьерных возможностей: https://vk.cc/cwmvdgРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
std::exception
— это базовый класс для всех стандартных исключений в C++
Почему стоит наследоваться от std::exception?
• Единообразие в обработке исключений: Когда вы наследуетесь от std::exception
, ваш класс исключения приобретает интерфейс, который делает его совместимым с другими стандартными исключениями
• what()
метод: std::exception
предоставляет важный метод what()
, который возвращает строковое представление исключения. Это позволяет вам предоставлять информативные сообщения об ошибке при обработке исключений
• Легкость в поддержке кода: Если вы используете сторонние библиотеки или фреймворки, они также могут ожидать обработку исключений, производных от std::exception
• Стандартные типы исключений: std::exception
имеет несколько стандартных подклассов, таких как std::runtime_error
, std::logic_error
и другие. Вы можете использовать эти подклассы вместо базового std::exception
, чтобы более точно определить характер ошибки
#cpp #programming
👉 @cpp_lib
Вы все еще пишете многопоточку на C++ с ошибками синхронизации?
Привет, коллеги! В этой статье я покажу свой подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации.
Демонстрация идеи будет проходить на живых примерах кода на современном C++. Большинство описанных решений я применял сначала на собственных проектах, а теперь часть этих подходов уже используется в нашей собственной микроядерной операционной системе «Лаборатории Касперского» (KasperskyOS).
https://habr.com/ru/companies/kaspersky/articles/805365/
#cpp #programming
👉 @cpp_lib
Семантические процессы в C++
Константин Владимиров
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if.
Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам. Этот доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка.
источник
#cpp #programming
👉 @cpp_lib
🔥 Освой разработку ПО на QT и ОС Аврора и получи возможность попасть в крупную IT-компанию!
Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cwgIiqРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Базовый курс C++ (MIPT, ILab)
Lecture 1. Scent of C++.
Lecture 2. Указатели и ссылки
Lecture 3. Имена и сущности
Lecture 4. Инициализация и копирование.
Lecture 5. RAII и перемещение
Lecture 6. Приведение типов
Lecture 7. Перегрузка операторов
Lecture 8. Наследование и полиморфизм
Lecture 9. Множественное наследование
Lecture 10. Языки и грамматики
источник
#cpp #programming
👉 @cpp_lib
Перепрограммирование мозга с помощью test driven в C++ - Фил Нэш - Meeting C++ 2023
Мы все говорим, что должны писать тесты, или, по крайней мере, должны писать их больше.
Но, похоже, у нас никогда нет времени, и наше внимание сосредоточено на реальных проблемах, которые мы пытаемся решить. Никто не хочет быть замотанным работой.
А что, если все это не так?
Что, если бы тесты могли сэкономить ваше время, улучшить вашу сосредоточенность - и даже доставить удовольствие!
В этой беседе мы рассмотрим некоторые психологические особенности того, как мы работаем, как мы совершенствуемся и как мы можем использовать подход, основанный на тестировании, чтобы повысить нашу производительность!
источник
#cpp #programming
👉 @cpp_lib