CppCoreGuidelines
Основные принципы C++ - это набор проверенных рекомендаций, правил и лучших практик по программированию на C++.
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
#cpp #programming
👉 @cpp_lib
Основные принципы C++ - это набор проверенных рекомендаций, правил и лучших практик по программированию на C++.
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
#cpp #programming
👉 @cpp_lib
👍7🔥2😱1
John Horton (2024)
Вы изучите ключевые темы C++, такие как ООП и указатели C++, познакомитесь со стандартной библиотекой шаблонов (STL). Книга поможет вам узнать о методах обнаружения столкновений и игровой физике, создав игру Pong. В процессе создания игр вы также узнаете такие интересные концепции игрового программирования, как вершинные массивы, направленный звук (пространственность), программируемые шейдеры OpenGL, порождение объектов и многое другое. Вы глубоко погрузитесь в игровую механику и реализуете обработку ввода, повышение уровня персонажа и простой вражеский ИИ. Наконец, вы изучите паттерны проектирования игр, чтобы усовершенствовать свои навыки программирования игр на C++.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Опыт создания UI библиотеки на C++
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
В течение шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.
Надо сказать, что мы активно используем boost и всей душой, как можем, его любим...
В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да... А вообще, тысячи их.
wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulkan на современных машинах.
В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost.
https://habr.com/ru/articles/768336/
#cpp #programming
👉 @cpp_lib
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
В течение шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.
Надо сказать, что мы активно используем boost и всей душой, как можем, его любим...
В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да... А вообще, тысячи их.
wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulkan на современных машинах.
В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost.
https://habr.com/ru/articles/768336/
#cpp #programming
👉 @cpp_lib
👍7
4 типовые ловушки в работе со строками в С и С++ и как их избежать
Некорректное использование строк может стать настоящей ахиллесовой пятой защиты программы. Поэтому так важно применять актуальные подходы к их обработке. Под катом разберём несколько паттернов ошибок при работе со строками, поговорим о знаменитой уязвимости Heartbleed и узнаем, как сделать код безопаснее.
https://habr.com/ru/companies/ncloudtech/articles/830918/
#cpp #programming
👉 @cpp_lib
Некорректное использование строк может стать настоящей ахиллесовой пятой защиты программы. Поэтому так важно применять актуальные подходы к их обработке. Под катом разберём несколько паттернов ошибок при работе со строками, поговорим о знаменитой уязвимости Heartbleed и узнаем, как сделать код безопаснее.
https://habr.com/ru/companies/ncloudtech/articles/830918/
#cpp #programming
👉 @cpp_lib
😱4👍3
Media is too big
VIEW IN TELEGRAM
Mastering Memory: Allocation Techniques in C, C++, and ARM Assembly
В этом видео мы рассмотрим эквивалентные методы выделения памяти в C++, C и raw ARM assembly. Мы обсудим методы и системные вызовы, связанные с каждым языком, для выделения и освобождения памяти после того, как динамическая переменная больше не нужна.
00:00 Intro
01:46 C++ Memory Allocation
05:41 C Memory Allocation
09:50 ARMv7 Assembly Memory Allocation
16:18 Conclusion
источник
#cpp #programming
👉 @cpp_lib
В этом видео мы рассмотрим эквивалентные методы выделения памяти в C++, C и raw ARM assembly. Мы обсудим методы и системные вызовы, связанные с каждым языком, для выделения и освобождения памяти после того, как динамическая переменная больше не нужна.
00:00 Intro
01:46 C++ Memory Allocation
05:41 C Memory Allocation
09:50 ARMv7 Assembly Memory Allocation
16:18 Conclusion
источник
#cpp #programming
👉 @cpp_lib
👍3
У вендора и производителя IT-инфраструктуры YADRO активны вакансии в разных направлениях для тех, кто кодит на С/С++ 🔍
1️⃣ Software Engineer C/C++
2️⃣ Разработчик ПО для цифровых систем связи
3️⃣ Senior C++ developer/Старший инженер-программист С++
4️⃣ Инженер по разработке ПО (C/C++ Embedded Linux)
5️⃣ Старший разработчик C++ (Linux/ OpenBMC)
6️⃣ Инженер по разработке встраиваемого ПО (Embedded Linux BSP)
Ты сможешь раскрыть свой творческий и инженерный потенциал в команде профессионалов, которые создают высокотехнологичные решения мирового уровня.
Какие бенефиты предлагаются:
– достойная зарплата (размер обсуждается на собеседовании) и прозрачная система премий;
– обучение за счёт компании: учебный портал с курсами и лекциями от экспертов, дополнительное профессиональное обучение, изучение английского, участие в конференциях;
– возможность учиться у лучших специалистов индустрии, расти в рамках своей роли, а также участвовать во множестве различных проектов;
– личное участие в становлении процессов и продуктов, возможность увидеть результат своей работы;
– большое инженерное сообщество, которое постоянно развивается;
– гибридный или удалённый формат работы;
– ДМС со стоматологией с первого дня, консультации юристов, психологов, экспертов по ЗОЖ и управлению финансами;
– скидки для сотрудников, дополнительные day-off;
– комфортные офисы в Москве, Санкт-Петербурге, Нижнем Новгороде и Минске.
Скорее переходи по ссылкам и оставляй отклики!
1️⃣ Software Engineer C/C++
2️⃣ Разработчик ПО для цифровых систем связи
3️⃣ Senior C++ developer/Старший инженер-программист С++
4️⃣ Инженер по разработке ПО (C/C++ Embedded Linux)
5️⃣ Старший разработчик C++ (Linux/ OpenBMC)
6️⃣ Инженер по разработке встраиваемого ПО (Embedded Linux BSP)
Ты сможешь раскрыть свой творческий и инженерный потенциал в команде профессионалов, которые создают высокотехнологичные решения мирового уровня.
Какие бенефиты предлагаются:
– достойная зарплата (размер обсуждается на собеседовании) и прозрачная система премий;
– обучение за счёт компании: учебный портал с курсами и лекциями от экспертов, дополнительное профессиональное обучение, изучение английского, участие в конференциях;
– возможность учиться у лучших специалистов индустрии, расти в рамках своей роли, а также участвовать во множестве различных проектов;
– личное участие в становлении процессов и продуктов, возможность увидеть результат своей работы;
– большое инженерное сообщество, которое постоянно развивается;
– гибридный или удалённый формат работы;
– ДМС со стоматологией с первого дня, консультации юристов, психологов, экспертов по ЗОЖ и управлению финансами;
– скидки для сотрудников, дополнительные day-off;
– комфортные офисы в Москве, Санкт-Петербурге, Нижнем Новгороде и Минске.
Скорее переходи по ссылкам и оставляй отклики!
👍3
Media is too big
VIEW IN TELEGRAM
Сборка C++ проектов. Оптимизации компилятора. Inline, constexpr, alignment. Game Engine серии
0:00:00 - Введение
0:02:26 - Дизассемблер
0:09:31 - Общие оптимизации
0:20:46 - Inline
0:35:24 - Constexpr
0:45:28 - Compile-time raytracer
0:52:40 - Internal vs. external linkage
0:55:18 - Выравнивание структур
1:06:46 - Pragma optimize
источник
#cpp #programming
👉 @cpp_lib
0:00:00 - Введение
0:02:26 - Дизассемблер
0:09:31 - Общие оптимизации
0:20:46 - Inline
0:35:24 - Constexpr
0:45:28 - Compile-time raytracer
0:52:40 - Internal vs. external linkage
0:55:18 - Выравнивание структур
1:06:46 - Pragma optimize
источник
#cpp #programming
👉 @cpp_lib
👍5⚡2❤1
Siddhartha Rao (2021)
In just one hour a day, you will have all the skills you need to begin programming in C++. With this complete tutorial, you will quickly master the basics, and then move on to more advanced features and concepts. Completely updated for the latest C++ standard, this book presents the language from a practical point of view, helping you learn how to use C++ to create faster, simpler, and more efficient C++ applications.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Нативная рефлексия в C++ уже близко
Почему в 2024 году нам приходится писать каст енума к строке вручную, для каждого кастомного типа нужна своя функция логирования, а биндинги к C++ библиотеке требуют кучу повторяющегося кода?
Если Вы задавались этими, или подобными вопросами, то у меня для вас хорошая новость - скоро эти проблемы будут решены. И что самое приятное - на уровне языка, а не нестандартным фреймворком.
Сегодня рассматриваем пропозалы рефлексии, которые с большОй вероятностью попадут в следующий стандарт - C++26.
https://habr.com/ru/articles/824840/
#cpp #programming
👉 @cpp_lib
Почему в 2024 году нам приходится писать каст енума к строке вручную, для каждого кастомного типа нужна своя функция логирования, а биндинги к C++ библиотеке требуют кучу повторяющегося кода?
Если Вы задавались этими, или подобными вопросами, то у меня для вас хорошая новость - скоро эти проблемы будут решены. И что самое приятное - на уровне языка, а не нестандартным фреймворком.
Сегодня рассматриваем пропозалы рефлексии, которые с большОй вероятностью попадут в следующий стандарт - C++26.
https://habr.com/ru/articles/824840/
#cpp #programming
👉 @cpp_lib
Хабр
Нативная рефлексия в C++ уже близко
Почему в 2024 году нам приходится писать каст енума к строке вручную, для каждого кастомного типа нужна своя функция логирования, а биндинги к C++ библиотеке требуют кучу повторяющегося кода? Если Вы...
🤷♂3👍2⚡1
Media is too big
VIEW IN TELEGRAM
С++ фреймворк для описания пайплайнов распределенных вычислений
Огромное количество С++ кода в Яндексе можно описать словами «распределенные вычисления». Доклад посвящен активно разрабатываемому сейчас С++ фреймворку, вдохновленному библиотеками std::ranges и Apache Beam. Этот фреймворк позволяет достаточно компактно и просто описывать такие процессы и запускать их в MapReduce-режиме для обработки таблиц данных или в real-time режиме для обработки бесконечных потоков (очередей) данных.
Доклад не предполагает знакомства с какими-либо специфичными технологиями. Он будет полезен разработчикам и пользователям различных распределенных систем обработки данных и тем, кто интересуется этой темой.
источник
#cpp #programming
👉 @cpp_lib
Огромное количество С++ кода в Яндексе можно описать словами «распределенные вычисления». Доклад посвящен активно разрабатываемому сейчас С++ фреймворку, вдохновленному библиотеками std::ranges и Apache Beam. Этот фреймворк позволяет достаточно компактно и просто описывать такие процессы и запускать их в MapReduce-режиме для обработки таблиц данных или в real-time режиме для обработки бесконечных потоков (очередей) данных.
Доклад не предполагает знакомства с какими-либо специфичными технологиями. Он будет полезен разработчикам и пользователям различных распределенных систем обработки данных и тем, кто интересуется этой темой.
источник
#cpp #programming
👉 @cpp_lib
❤4👍2
Как поделить не деля или оптимизация деления компиляторам(и)
Если вы никогда не пробовали смотреть как код на C++ разворачивается компилятором в код Assembly – вас ждёт много сюрпризов, причём, не нужно смотреть какой-то замудренный исходный код полный templates или других сложных конструкций: рассмотрите следующий snippet:
https://habr.com/ru/articles/833470/
#cpp #programming
👉 @cpp_lib
Если вы никогда не пробовали смотреть как код на C++ разворачивается компилятором в код Assembly – вас ждёт много сюрпризов, причём, не нужно смотреть какой-то замудренный исходный код полный templates или других сложных конструкций: рассмотрите следующий snippet:
uint8_t div10(uint8_t x)
{
return x/10;
}
https://habr.com/ru/articles/833470/
#cpp #programming
👉 @cpp_lib
👍4⚡2❤1
Memory Safety in C++ vs Rust vs Zig
https://medium.com/@shyamsundarb/memory-safety-in-c-vs-rust-vs-zig-f78fa903f41e
#cpp #programming
👉 @cpp_lib
https://medium.com/@shyamsundarb/memory-safety-in-c-vs-rust-vs-zig-f78fa903f41e
#cpp #programming
👉 @cpp_lib
👍3😁2⚡1🤣1
Автор: Frahaan Hussain (2024)
Начиная с основ, книга знакомит читателей с фундаментальными концепциями программирования на Си, включая переменные, типы данных и управляющие структуры, а затем переходит к более сложным темам, таким как управление памятью и системное программирование. При переходе к C++ в тексте рассматриваются объектно-ориентированное программирование, инкапсуляция, наследование и полиморфизм, а также инструменты, необходимые для создания надежного и эффективного программного обеспечения.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Курс «Введение в Реверс инжиниринг»! Запись до 17 августа
Курс подойдёт всем интересующимся темой реверс-инжиниринга. По окончанию курса, вы будете уметь проводить исследования исполняемых файлов и вносить изменения в логику программ.
Курс включает в себя:
- Работу с отладчиком IDA
- Практические навыки анализа исполняемых файлов без исходного кода
- Изучение ассемблера, языка Си и EXE / ELF
- Восстановление исходного кода из скомпилированных программ
🏆 Сертификат / удостоверение о повышении квалификации
Пишите нам @Codeby_Academy или узнайте подробнее о курсе здесь
Курс подойдёт всем интересующимся темой реверс-инжиниринга. По окончанию курса, вы будете уметь проводить исследования исполняемых файлов и вносить изменения в логику программ.
Курс включает в себя:
- Работу с отладчиком IDA
- Практические навыки анализа исполняемых файлов без исходного кода
- Изучение ассемблера, языка Си и EXE / ELF
- Восстановление исходного кода из скомпилированных программ
🏆 Сертификат / удостоверение о повышении квалификации
Пишите нам @Codeby_Academy или узнайте подробнее о курсе здесь
Коллекция ресурсов по современному C++
https://github.com/rigtorp/awesome-modern-cpp
#cpp #programming
👉 @cpp_lib
https://github.com/rigtorp/awesome-modern-cpp
#cpp #programming
👉 @cpp_lib
👍7
Курс по ООП в С++
введение
инкапсуляция
наследование
полиморфизм
шаблоны и метапрограммирование
источник
#cpp #programming
👉 @cpp_lib
введение
инкапсуляция
наследование
полиморфизм
шаблоны и метапрограммирование
источник
#cpp #programming
👉 @cpp_lib
👍15❤2💩1
Реализуем эффективный тупль с помощью C++26
Свет видел много любительских реализаций std::tuple, и реализация своих велосипедов — наверное, это действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-то устроено.
Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple, как мне реализовать свой тупль (кортеж)? [1]
И немало было дано ответов на такие вопросы и написано статей ([2]). Однако я берусь утверждать, что все они имеют один фатальный недостаток! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации: с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти.
В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее.
https://habr.com/ru/articles/835176/
#cpp #programming
👉 @cpp_lib
Свет видел много любительских реализаций std::tuple, и реализация своих велосипедов — наверное, это действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-то устроено.
Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple, как мне реализовать свой тупль (кортеж)? [1]
И немало было дано ответов на такие вопросы и написано статей ([2]). Однако я берусь утверждать, что все они имеют один фатальный недостаток! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации: с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти.
В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее.
https://habr.com/ru/articles/835176/
#cpp #programming
👉 @cpp_lib
Хабр
Реализуем эффективный тупль с помощью C++26
Свет видел много любительских реализаций std::tuple , и реализация своих велосипедов — наверное, действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему...
👍3💯1