Библиотека C/C++ разработчика
6.81K subscribers
655 photos
690 videos
8 files
940 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Как написать 2D игру на C++ и чистом STL для терминала в Linux

Привет, Хабр, я PHP разработчик с опытом работы в продакшне более 8 лет. После долгого и упорного труда мне стало скучно пилить микросервисы и бэкенды в хайлоде, я решил постичь магию разработки игр. Выбрал курс по Unreal Engine 5 и C++, так как там все структурировано, понятно, и в случае необходимости есть кому задать вопрос. На первой лекции по основам С++ преподаватель сразу предложил челлендж - написать 2D игру без использования игрового движка. Идея мне понравилась и я сразу приступил к реализации.

https://habr.com/ru/post/708486/

#cpp #programming

👉 @cpp_lib
🔥5👍3
Исчерпывающее руководство по работе с файлами в C++

В этой заметке я расскажу вам, как можно использовать работу с файлами в C++ и сохранять в них не только текстовые, но и бинарные данные типа Class или Struct.

https://dev.to/tbhaxor/a-comprehensive-guide-to-file-handling-in-c-2p1b

#cpp #programming

👉 @cpp_lib
👍6
Как использовать std::span из C++20

В этой статье рассмотрен std::span, который является более универсальным, чем string_view, и может помочь в работе с произвольными смежными коллекциями.

https://www.cppstories.com/2023/span-cpp20/

#cpp #programming

👉 @cpp_lib
👍1
Последние обновления для разработки CMake в Visual Studio

Visual Studio имеет встроенную интеграцию с CMake, что позволяет пользователям C++ собирать и разрабатывать с использованием CMake и поддерживает их уникальные потребности. CMake - это кроссплатформенный инструмент сборки для C++, и с помощью новейших инструментов Visual Studio пользователи могут быть более продуктивными при настройке с помощью CMake.

https://devblogs.microsoft.com/visualstudio/latest-updates-for-cmake-development-in-visual-studio/

#cpp #programming

👉 @cpp_lib
👍5
Ranges Library в C++20: больше возможностей для проектирования

Ranges Library в C++20 по соображениям производительности было сделано несколько уникальных конструктивных решений. Эти решения имеют свои последствия: проблемы с кэшем и проблемы с постоянством.

https://www.modernescpp.com/index.php/the-ranges-library-in-c20-more-design-choices/

#cpp #programming

👉 @cpp_lib
👍3
Введение в корутины (C++20): О Promise Type, Awaitable и Coroutine Handle

Сегодня я начну цикл статей о планировщике задач. Отправной точкой минисериала является простейший планировщик от Dian-Lun Lin, который становится все более сложным.

https://www.modernescpp.com/index.php/a-concise-introduction-to-coroutines-by-dian-lun-li/

#cpp #programming

👉 @cpp_lib
👍3👏1
Extern templates to reduce binary size

Статья об использовании extern template для сокращения размеров бинарных файлов.

template <typename T>
class Wrapper {
public:
// ...
private:
T wrapped;
};

// No object code will be generated for Wrapper<int> in this translation unit
extern template class Wrapper<int>;


https://www.sandordargo.com/blog/2023/11/08/extern-templates

#cpp #programming

👉 @cpp_lib
🔥3👍2
Как читать язык ассемблера

Зачем кому-то нужно изучать язык ассемблера? Во-первых, чтение языка ассемблера - это способ узнать, что именно делает ваша программа. Почему именно эта программа на Си++ занимает 1 Мб (скажем), а не 100 Кб? Можно ли выжать еще немного производительности из той функции, которая постоянно вызывается?

В частности, для языка Си++ легко забыть или просто не заметить какую-либо операцию (например, неявное преобразование или вызов конструктора или деструктора копирования), которая подразумевается исходным кодом и семантикой языка, но не прописана в явном виде. Если посмотреть на ассемблер, сгенерированный компилятором, то все будет на виду.

https://wolchok.org/posts/how-to-read-assembly-language/

#cpp #programming

👉 @cpp_lib
🔥5👍3
Отчет о поездке: Осенняя встреча по стандартам ISO C++ (Кона, HI, США)

На днях комитет ISO C++ завершил свое второе собрание C++26, состоявшееся в Коне, штат Гавайи, США.

Наши организаторы, Standard C++ Foundation и WorldQuant, организовали высококачественные условия для нашей шестидневной встречи с понедельника по субботу. У нас было более 170 участников, около двух третей лично, а остальные удаленно через Zoom, формально представляющие 21 страну. Кроме того, на каждой встрече у нас регулярно появляются новые участники, которые никогда раньше не присутствовали, и на этот раз было более дюжины новых посетителей, в основном лично; всем им еще раз добро пожаловать!

https://herbsutter.com/2023/11/11/trip-report-autumn-iso-c-standards-meeting-kona-hi-usa/

#cpp #programming

👉 @cpp_lib
👍3
Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.

https://habr.com/ru/articles/470265/

👉 @cpp_knigi
👍3
Хардварный проброс

Оказывается пробрасывать можно не только сетевые порты, а еще и регистры периферии микроконтроллера(МК). Идея та же самая - открыть периферию для использования вне микроконтроллера. Для наглядности давайте сравним более детально.

https://habr.com/ru/articles/768460/

#cpp #programming

👉 @cpp_lib
👍4
Shared, TO, PLOT: друзья или враги

В прошлой заметке я остановился на вопросе о том, действительно ли указатели функций и виртуальные вызовы являются медленными. Я опубликовал статью в социальных сетях, и меня завалили ерундовыми комментариями. Однако среди этих обломков нашлось несколько хороших идей.

Некоторые пользователи попытались воспроизвести мои результаты и, поскольку им это не удалось, попросили у меня источник, который я с радостью предоставил в своем репозитории RedditHelp, который я использую для публикации ответов на вопросы в социальных сетях. В ходе этого общения были сделаны и приняты к сведению хорошие замечания:

https://lucisqr.substack.com/p/shared-lto-plt-friends-or-foes

#cpp #programming

👉 @cpp_lib
🔥5👍2
Создание HTTP-запросов на C++

В этой статье я покажу вам, как создавать HTTP-запросы к REST-серверу с помощью библиотеки C++ Request, написанной Ху Нгуеном. При её написании мистер Нгуен во многом ориентировался на принципы проектирования из Python Requests, поэтому для тех, кто использовал или знаком с Python Requests, C++ Requests окажется вполне понятна.

https://www.codeproject.com/Articles/1244632/Making-HTTP-REST-Request-in-Cplusplus

#cpp #programming

👉 @cpp_lib
4👍3
Инженерный калькулятор на C++. Часть 2: Алгоритм сортировочной станции

Всем маткульт-привет! В этой статье мы продолжаем и заканчиваем написание консольного инженерного калькулятора. Для понимания происходящего настоятельно рекомендую сначала ознакомиться с первой частью.

Введение
В прошлой части мы научились разбивать исходное математическое выражение формата (log2(18)/3.14)*sqrt(0.11^(-3)/0.02)на токены. На выходе мы получаем массив токенов, каждый их которых содержит информацию о типе (оператор, скобка, число, ...) и об ассоциативности, если он таковую имеет.

Теперь мы хотим привести выражение к виду обратной польской записи (RPN), чтобы затем удобно его посчитать. Это нам позволяет сделать изобретенный Эдсгером Дейкстрой алгоритм сортировочной станции.

https://habr.com/ru/articles/777368/

#cpp #programming

👉 @cpp_lib
👍2
Сложность C++ - Что делает C++ сложным для вас?

Вопрос о том, является ли C++ сложным языком, конечно, субъективен, но мало кто будет спорить с этим утверждением.

Вопрос о том, что делает C++ сложным для вас, конечно, также субъективен, но это интересный вопрос с потенциальными последствиями. Мы можем сделать вывод:

Есть функции, которые нам нужно учить лучше.
Есть области, которые нуждаются в улучшении через процесс ISO
Есть области, которые могут выиграть от улучшения инструментов

https://www.incredibuild.com/blog/c-complexity-what-makes-c-complex-for-you

#cpp #programming

👉 @cpp_lib
👍3
The Observer Design Pattern in C++

Part 1 of n - A simple implementation
Part 2 of n - Extensibility and Abstraction
Part 3 of n - Registration and Lifetime
Part 4 of n - Notify Specific System
Part 5 of 5 - Review and Next Steps

источник

#cpp #programming

👉 @cpp_lib
🥰3👍2👏2