'
Научный журнал «Вестник науки»

Режим работы с 09:00 по 23:00

zhurnal@vestnik-nauki.com

Информационное письмо

  1. Главная
  2. Архив
  3. Вестник науки №3 (72) том 5
  4. Научная статья № 77

Просмотры  15 просмотров

Гылыджова М., Ишангулыев А., Аннагылыджов Р.

  


ПРЕИМУЩЕСТВА И НЕДОСТАТКИ ИСПОЛЬЗОВАНИЯ C++ В СОВРЕМЕННОМ ПРОГРАММИРОВАНИИ ВСТРАИВАЕМЫХ СИСТЕМ *

  


Аннотация:
в данной статье речь идёт об использовании С++ в программировании встраиваемых систем, сравнение С и С++, а также приводятся примеры некоторых кодов, приспосабливающих С++ к встроенным системам.   

Ключевые слова:
программирование встроенных систем, коды, принцип нулевых затрат   


Использование языка программирования C++ для разработки встраиваемых систем неуклонно растет, хотя язык программирования C по-прежнему является предпочтительным (на него приходится до 65% встраиваемых систем). При предполагаемом 20–30 % использовании в области разработки встраиваемых систем C++ предлагает улучшенную безопасность типов и функции качества жизни, такие как циклы for на основе диапазона, ключевое слово auto и лямбда-выражения. Несмотря на возможности, которые предлагает C++, многие компании и отдельные разработчики встраиваемых систем по-прежнему придерживаются старых способов программирования на C. И объяснение этому простое: огромный объем разработок встраиваемых систем связан с критически важными с точки зрения безопасности приложениями: автомобильными, медицинскими, бытовыми приборами, управляющими нагревательными элементами, и многими другими. В глазах многих разработчиков встраиваемых систем Стандартная библиотека C++ печально известна своим динамическим распределением памяти. Основным ограничением для критически важных для безопасности приложений и систем с ограниченными ресурсами является отсутствие динамического выделения памяти. Помимо динамического выделения памяти, существуют и другие проблемы, связанные с использованием C++ во встроенных проектах, которые необходимо решить. Другой распространенный аргумент против C++ заключается в том, что он добавляет некоторые механизмы, раздувающие код, что особенно важно для систем с ограниченной памятью, где важен каждый килобайт. И это справедливо для механизма исключений и RTTI (информация о типе времени выполнения), где компилятор добавляет некоторую дополнительную информацию в двоичный файл, чтобы сделать эти механизмы возможными. Исторически C++ начинался как «C с классами». Первый компилятор C++ Cfront преобразовал C++ в C, но это было очень давно. Со временем C и C++ развивались отдельно и теперь определяются отдельными языковыми стандартами. Это приводило к случаям, когда код, действительный как на C, так и на C++, при компиляции давал разные результаты. Эти случаи редки и весьма специфичны, и они хорошо документированы. C++ и динамическое распределение памяти Примеры кода C++ из учебников, использующие std::string и std::ostream демонстрируют, почему большинство разработчиков встраиваемых систем даже не рассматривают C++ в своей работе. И std::string, и std::ostream (std::cout) используют динамическое распределение памяти. Что происходит, когда внутренний буфер ostream заполнен? Вероятно, он выделяет память для обработки этого случая. Когда вы объединяете строки, std::string динамически выделяет память для размещения полученной строки. Подробнее о строках в C++ высказался программист Найл Кулинг. В своей статье Найл обсуждает влияние std::string на память. Он также объясняет std::string_view и std::pmr (C++17). Ресурс полиморфной памяти (PMR) позволяет указать фрагмент памяти, который будет использоваться строкой в стеке. Если запрос буфера превышает размер буфера, программа завершится. Стандартная библиотека C++ предлагает набор классов шаблонов контейнеров и алгоритмов, которые можно использовать в этих контейнерах. Большинство этих контейнеров используют динамическое распределение памяти. Однако есть исключение: std::array – это контейнер, инкапсулирующий массивы фиксированного размера. Он обеспечивает несколько преимуществ по сравнению с массивами в стиле C:1. Метод .at() выполняет проверку границ, что предотвращает неправильную индексацию — ошибку, которая может случиться даже с опытными разработчиками встроенных систем.2. Информация о размере: std::array знает свой размер, т. е. несёт с собой информацию о своем размере. Вы можете использовать функцию .size(), чтобы получить количество элементов в массиве.3. Обеспечивает совместимость с алгоритмами стандартной библиотеки, такими как std::find, std::find_if, std::find_if_not, std::copy, std::copy_if и другими. #define N 20int buffer[N] = {0},for(int i = 0, i < N, i ++) { printf(“%d “, buffer[i]),}Приведенный выше фрагмент кода C можно преобразовать в следующий код C++:std::array buffer = {0},for(auto& element : buffer) { printf(“%d “, element),}В приведенном выше примере используется диапазон циклов, что упрощает чтение кода. В целом, std::array представляет собой более современную, безопасную и более выразительную альтернативу массивам в стиле C, сохраняя при этом характеристики производительности и памяти массивов в стиле C.   


Полная версия статьи PDF

Номер журнала Вестник науки №3 (72) том 5

  


Ссылка для цитирования:

Гылыджова М., Ишангулыев А., Аннагылыджов Р. ПРЕИМУЩЕСТВА И НЕДОСТАТКИ ИСПОЛЬЗОВАНИЯ C++ В СОВРЕМЕННОМ ПРОГРАММИРОВАНИИ ВСТРАИВАЕМЫХ СИСТЕМ // Вестник науки №3 (72) том 5. С. 487 - 491. 2024 г. ISSN 2712-8849 // Электронный ресурс: https://www.вестник-науки.рф/article/13605 (дата обращения: 17.05.2024 г.)


Альтернативная ссылка латинскими символами: vestnik-nauki.com/article/13605



Нашли грубую ошибку (плагиат, фальсифицированные данные или иные нарушения научно-издательской этики) ?
- напишите письмо в редакцию журнала: zhurnal@vestnik-nauki.com


Вестник науки СМИ ЭЛ № ФС 77 - 84401 © 2024.    16+




* В выпусках журнала могут упоминаться организации (Meta, Facebook, Instagram) в отношении которых судом принято вступившее в законную силу решение о ликвидации или запрете деятельности по основаниям, предусмотренным Федеральным законом от 25 июля 2002 года № 114-ФЗ 'О противодействии экстремистской деятельности' (далее - Федеральный закон 'О противодействии экстремистской деятельности'), или об организации, включенной в опубликованный единый федеральный список организаций, в том числе иностранных и международных организаций, признанных в соответствии с законодательством Российской Федерации террористическими, без указания на то, что соответствующее общественное объединение или иная организация ликвидированы или их деятельность запрещена.