Media is too big
VIEW IN TELEGRAM
Возможности С++ для программирования микроконтроллеров
Игнат Ворошилов
Обычно, программирование микроконтроллеров подразумевает использования языков программирования ASM, C, и лишь изредка C++. Но даже те проекты, которые написаны с использованием C++, написаны в стиле C, без использования преимуществ C++ в полной мере. Эти утверждения справедливы для подавляющего большинства проектов с открытым исходным кодом, библиотек от разработчиков микросхем, различных SDK и иже с ними. На мой взгляд, игнорирование возможностей C++ и возможностей ООП, при разработке ПО для микроконтроллеров, неоправдано. Предлагаю рассмотреть конкретные примеры использования возможностей языка C++, которые помогут сэкономить время разработчика и повысить качество проекта.
источник
#cpp #programming
👉 @cpp_lib
Игнат Ворошилов
Обычно, программирование микроконтроллеров подразумевает использования языков программирования ASM, C, и лишь изредка C++. Но даже те проекты, которые написаны с использованием C++, написаны в стиле C, без использования преимуществ C++ в полной мере. Эти утверждения справедливы для подавляющего большинства проектов с открытым исходным кодом, библиотек от разработчиков микросхем, различных SDK и иже с ними. На мой взгляд, игнорирование возможностей C++ и возможностей ООП, при разработке ПО для микроконтроллеров, неоправдано. Предлагаю рассмотреть конкретные примеры использования возможностей языка C++, которые помогут сэкономить время разработчика и повысить качество проекта.
источник
#cpp #programming
👉 @cpp_lib
👍4
Лекции С++ продвинутый поток ФПМИ 2023-24
Лекция 1. Введение в язык C++. Основные типы и операции над ними
Лекция 2. Основные команды в терминале. Компиляция программ
Лекция 3. Объявления и определения, области видимости, пространства имен
Лекция 4. Выражения и операторы. Управляющие конструкции
Лекция 5. Compile-time errors, runtime errors, undefined behavior
Лекция 6. Указатели
Лекция 7. Стековая, статическая и динамическая память
Лекция 8. Массивы, функции и указатели на функции
источник
#cpp #programming
👉 @cpp_lib
Лекция 1. Введение в язык C++. Основные типы и операции над ними
Лекция 2. Основные команды в терминале. Компиляция программ
Лекция 3. Объявления и определения, области видимости, пространства имен
Лекция 4. Выражения и операторы. Управляющие конструкции
Лекция 5. Compile-time errors, runtime errors, undefined behavior
Лекция 6. Указатели
Лекция 7. Стековая, статическая и динамическая память
Лекция 8. Массивы, функции и указатели на функции
источник
#cpp #programming
👉 @cpp_lib
👍8
Библиотека Ranges в C++20
Благодаря библиотеке ranges работа со стандартной библиотекой шаблонов (STL) стала намного удобнее и мощнее. Прежде всего, алгоритмы библиотеки ranges, могут работать непосредственно на контейнере и могут быть композитными. Кроме того, в библиотеке ranges сделано несколько уникальных конструктивных решений, о которых вы должны знать.
https://www.modernescpp.com/index.php/the-ranges-library-in-c20-design-choices/
#cpp #programming
👉 @cpp_lib
Благодаря библиотеке ranges работа со стандартной библиотекой шаблонов (STL) стала намного удобнее и мощнее. Прежде всего, алгоритмы библиотеки ranges, могут работать непосредственно на контейнере и могут быть композитными. Кроме того, в библиотеке ranges сделано несколько уникальных конструктивных решений, о которых вы должны знать.
https://www.modernescpp.com/index.php/the-ranges-library-in-c20-design-choices/
#cpp #programming
👉 @cpp_lib
👍3❤1
Пишем свой QTableView с нуля
Итак жил был фреймворк Qt и последние 10 лет ничего почти в нем не менялось. И захотел один чел написать свой QTableView с нужным ему функционалом, а именно захотелось ему выводить ячейки в несколько рядов в одной строке. Ещё ему хотелось растягивать одну из ячеек по ширине двух других и т.д. (ну как в 1С например).
Искал, искал чел готовый пример в интернете и не находил. И вот однажды подумал он посмотреть как сделан внутри сам QTableView и стало плохо ему от количества строк кода, не одна тысяча там.
https://habr.com/ru/articles/761530/
#cpp #programming
👉 @cpp_lib
Итак жил был фреймворк Qt и последние 10 лет ничего почти в нем не менялось. И захотел один чел написать свой QTableView с нужным ему функционалом, а именно захотелось ему выводить ячейки в несколько рядов в одной строке. Ещё ему хотелось растягивать одну из ячеек по ширине двух других и т.д. (ну как в 1С например).
Искал, искал чел готовый пример в интернете и не находил. И вот однажды подумал он посмотреть как сделан внутри сам QTableView и стало плохо ему от количества строк кода, не одна тысяча там.
https://habr.com/ru/articles/761530/
#cpp #programming
👉 @cpp_lib
👍1
Советы по рефакторингу C++
Когда-то давно, в мире, где Си++ был молод, а глобальная кодовая база была невелика, можно было легко прочитать и просмотреть чужой код, затем принять его и развивать проект до бесконечности. Но, конечно, такого, скорее всего, не было, но интересно представить себе время, когда программы были короткими и простыми, но при этом законченными настолько, что функциональность не требовала расширения. В таком мире рефакторинг кода, возможно, и не требовался. Однако если кодовая база нуждается в проверке или обновлении, будь то расширение, улучшение в соответствии с изменениями в языке или даже просто проверка эффективности, то рефакторинг кода становится скорее необходимостью, чем просто приятным занятием.
Идея рефакторинга заключается в том, чтобы внести улучшения в существующий код, не меняя того, что он делает. По сути, улучшается дизайн и общая читаемость, а функциональность остается нетронутой. Преимущества рефакторинга кода заключаются в повышении эффективности, читаемости, сопровождаемости и расширяемости. А также синтаксическое и семантическое снижение сложности кода.
https://www.incredibuild.com/blog/tips-for-c-refactoring
#cpp #programming
👉 @cpp_lib
Когда-то давно, в мире, где Си++ был молод, а глобальная кодовая база была невелика, можно было легко прочитать и просмотреть чужой код, затем принять его и развивать проект до бесконечности. Но, конечно, такого, скорее всего, не было, но интересно представить себе время, когда программы были короткими и простыми, но при этом законченными настолько, что функциональность не требовала расширения. В таком мире рефакторинг кода, возможно, и не требовался. Однако если кодовая база нуждается в проверке или обновлении, будь то расширение, улучшение в соответствии с изменениями в языке или даже просто проверка эффективности, то рефакторинг кода становится скорее необходимостью, чем просто приятным занятием.
Идея рефакторинга заключается в том, чтобы внести улучшения в существующий код, не меняя того, что он делает. По сути, улучшается дизайн и общая читаемость, а функциональность остается нетронутой. Преимущества рефакторинга кода заключаются в повышении эффективности, читаемости, сопровождаемости и расширяемости. А также синтаксическое и семантическое снижение сложности кода.
https://www.incredibuild.com/blog/tips-for-c-refactoring
#cpp #programming
👉 @cpp_lib
👍2
Три очень практичные фичи C++23
C++23 — это текущая рабочая версия стандарта C++. На момент написания статьи туда пока не было включено ни одной крупной фичи, но ряд небольших нововведений, а также множество отчетов о дефектах уже утверждены в стандарте. Вы можете посмотреть текущий статус и поддержку компиляторами новых фич здесь. Многие из этих нововведений представляют из себя небольшие улучшения и вещи, которыми вы, вероятно, не будете пользоваться на регулярной основе. Однако сегодня я хочу обратить ваше внимание на три новые фичи C++23, которые, на мой взгляд, выделяются на фоне остальных именно тем, насколько часто они будут встречаться в нашем коде.
https://mariusbancila.ro/blog/2022/01/17/three-cpp23-features-for-common-use/
#cpp #programming
👉 @cpp_lib
C++23 — это текущая рабочая версия стандарта C++. На момент написания статьи туда пока не было включено ни одной крупной фичи, но ряд небольших нововведений, а также множество отчетов о дефектах уже утверждены в стандарте. Вы можете посмотреть текущий статус и поддержку компиляторами новых фич здесь. Многие из этих нововведений представляют из себя небольшие улучшения и вещи, которыми вы, вероятно, не будете пользоваться на регулярной основе. Однако сегодня я хочу обратить ваше внимание на три новые фичи C++23, которые, на мой взгляд, выделяются на фоне остальных именно тем, насколько часто они будут встречаться в нашем коде.
https://mariusbancila.ro/blog/2022/01/17/three-cpp23-features-for-common-use/
#cpp #programming
👉 @cpp_lib
Marius Bancila's Blog | About code. Mostly on C++
Three C++23 features for common use
A look at three new C++23 features that you could potentially use on a regular basis
👍3
Знакомство с constexpr unique_ptr (С++23)
https://andreasfertig.blog/2023/10/using-cpp23s-constexpr-unique_ptr/
#cpp #programming
👉 @cpp_lib
https://andreasfertig.blog/2023/10/using-cpp23s-constexpr-unique_ptr/
#cpp #programming
👉 @cpp_lib
Andreasfertig
Using C++23s constexpr unique_ptr
Back in 2022, my paper P2273R3: Making std::unique_ptr constexpr was accepted for C++23. All the time, I planned to provide an implemen...
👍5
Ускорение работы за счет дублирования кода
https://voidstar.tech/code_duplication/
#cpp #programming
👉 @cpp_lib
https://voidstar.tech/code_duplication/
#cpp #programming
👉 @cpp_lib
👍4
Оптимизация с помощью аллокаторов в C++17
Благодаря полиморфным аллокаторам в C++17 можно оптимизировать распределение памяти. Эта оптимизация включает в себя производительность и повторное использование памяти.
https://www.modernescpp.com/index.php/optimization-with-allocators-in-c17/
#cpp #programming
👉 @cpp_lib
Благодаря полиморфным аллокаторам в C++17 можно оптимизировать распределение памяти. Эта оптимизация включает в себя производительность и повторное использование памяти.
https://www.modernescpp.com/index.php/optimization-with-allocators-in-c17/
#cpp #programming
👉 @cpp_lib
👍6🔥1
C++23: четыре новых ассоциативных контейнера
В C++23 появились четыре новых ассоциативных контейнера: std::flat_map, std::flat_multimap, std::flat_set и std::flat_multiset, которые являются полноценной заменой упорядоченных ассоциативных контейнеров std::map, std::multimap, std::set и std::multiset. Они были добавлены в C++23 по двум причинам: расход памяти и производительность.
https://www.modernescpp.com/index.php/c23-four-new-associative-containers/
#cpp #programming
👉 @cpp_lib
В C++23 появились четыре новых ассоциативных контейнера: std::flat_map, std::flat_multimap, std::flat_set и std::flat_multiset, которые являются полноценной заменой упорядоченных ассоциативных контейнеров std::map, std::multimap, std::set и std::multiset. Они были добавлены в C++23 по двум причинам: расход памяти и производительность.
https://www.modernescpp.com/index.php/c23-four-new-associative-containers/
#cpp #programming
👉 @cpp_lib
👍7
Введение в компиляцию C++ в командной строке
Возможно, наступит день, когда технологии продвинутся настолько, что нам не нужно будет беспокоиться о том, какие флаги установлены при компиляции, какие файлы включены. Но это не сегодняшний день.
При использовании Unreal Engine 4 или другого высокоуровневого фреймворка компиляция кода на языке C++ в значительной степени скрыта от глаз. Это очень удобно, когда все работает, но становится препятствием, когда нужно что-то изменить. Единственный способ не стать рабом своих творений - понять, как они работают.
https://unrealistic.dev/posts/introduction-to-c-compilation-on-the-command-line
#cpp #programming
👉 @cpp_lib
Возможно, наступит день, когда технологии продвинутся настолько, что нам не нужно будет беспокоиться о том, какие флаги установлены при компиляции, какие файлы включены. Но это не сегодняшний день.
При использовании Unreal Engine 4 или другого высокоуровневого фреймворка компиляция кода на языке C++ в значительной степени скрыта от глаз. Это очень удобно, когда все работает, но становится препятствием, когда нужно что-то изменить. Единственный способ не стать рабом своих творений - понять, как они работают.
https://unrealistic.dev/posts/introduction-to-c-compilation-on-the-command-line
#cpp #programming
👉 @cpp_lib
❤4👍1
Моя борьба против знакового/беззнакового сравнения: самые распространенные нарушения
Как мы уже говорили на прошлой неделе, сравнение чисел с разными знаками может быть опасным в языке C++. Если попытаться сравнить знаковое и беззнаковое целое число, то можно получить результат, который не имеет смысла, если подходить к вопросу с математической точки зрения. По крайней мере, при правильных настройках компилятора вы получите предупреждение.
Мы также увидели, что C++20 предлагает простой и безопасный способ сравнения чисел в любое время, и он всегда вернет вам ожидаемый результат.
https://www.sandordargo.com/blog/2023/10/18/signed-unsigned-comparison-the-most-usual-violations
#cpp #programming
👉 @cpp_lib
Как мы уже говорили на прошлой неделе, сравнение чисел с разными знаками может быть опасным в языке C++. Если попытаться сравнить знаковое и беззнаковое целое число, то можно получить результат, который не имеет смысла, если подходить к вопросу с математической точки зрения. По крайней мере, при правильных настройках компилятора вы получите предупреждение.
Мы также увидели, что C++20 предлагает простой и безопасный способ сравнения чисел в любое время, и он всегда вернет вам ожидаемый результат.
https://www.sandordargo.com/blog/2023/10/18/signed-unsigned-comparison-the-most-usual-violations
#cpp #programming
👉 @cpp_lib
Sandor Dargo’s Blog
My battle against signed/unsigned comparison: the most usual violations
As we discussed last week, comparing numbers with different signs can be dangerous in C++. If you try to compare a signed with an unsigned integer, you might get a result that makes no sense if you approach the question from a mathematical point of view.…
👍3