|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
|
А может есть Safe C/C++?27.03.2025, 19:02. Показов 7907. Ответов 74
Метки нет (Все метки)
Я не совсем уж конченный начинающий в C/C++, думаю, уровень мидла, скорее, - за счёт знания других языков и опыта разработки разных проектов. В общем просто привела меня судьба в эмбеддинговые системы и язык С/С++. Arduino, ESP32 и всё такое.
Вот я уже почти год пинаю первый свой проект, он уже почти закончен. Основной вердикт - задолбало отстреливание своих конечностей. Я могу неделю искать причину неработоспособности и случайного сбоя. Моё предложение - создать отладочный вариант языка С/С++, который будет безопасным, но листингово-совместимым с обычным C/C++. То есть сначала работаешь в Safe C/C++, который медленный, но контролирует выход указателя за пределы массива, пишет логи разных уровней и всё такое. Как только убеждаешься, что всё работает, то отключаешь логи и контроль. Если бы можно было писать отдельные части кода на Safe C/C++, другие - на оригинальных языках C/C++ - это вообще атас!
0
|
|
| 27.03.2025, 19:02 | |
|
Ответы с готовыми решениями:
74
Секундомер и thread-safe thread-safe ли? Thread-safe ли чтение структур? |
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||
| 27.03.2025, 22:07 | ||
|
Но в моей стране Rust популярен и есть вакансии. Используется в топовых корпорациях. А вот Kotlin в рейтингах упал. Java в разы на лучших позициях. https://www.tiobe.com/tiobe-index/ Java - 3-е место и растет дальше Kotlin - 19, причем с отрицательным коэффициентом изменения - т.е. язык падает ко дну) Даже Rust впереди котлина.
0
|
||
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
||
| 28.03.2025, 09:07 [ТС] | ||
|
https://www.waveshare.com/wiki... ouch-LCD-7 Программируется в Arduino IDE в том числе.
0
|
||
|
Модератор
|
||
| 28.03.2025, 10:52 | ||
|
С хорошей IDE проще писать код, а то в используемом даже не подебажить и нету ничего вообще удобного.
0
|
||
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
|
| 28.03.2025, 11:02 [ТС] | |
|
Перейти на платформио с наработанной кодовой базой трудно?
0
|
|
|
274 / 206 / 31
Регистрация: 26.11.2022
Сообщений: 891
|
|
| 28.03.2025, 11:34 | |
|
Напортачить и сделать неработающий код можно на любом языке и это не проблема языка.
мы так и не увидели что же за код вызвал такие трудности в отладке. А это как раз самое интересное. Ибо надо искать причины и разбираться с ними. И по ходу дела нарабатывать опыт и навыки решения типовых трудностей конкретной платформы. А попытки переложить ответственность за неработающий код на язык не позволит програмисту совершенствоваться.
1
|
|
|
2469 / 1615 / 741
Регистрация: 17.03.2022
Сообщений: 5,267
|
||
| 28.03.2025, 11:42 | ||
|
0
|
||
|
47 / 39 / 10
Регистрация: 25.02.2025
Сообщений: 84
|
|
| 28.03.2025, 11:56 | |
|
В C++ безопасно работать с массивами array и vector, если использовать метод at.
0
|
|
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,335
|
|
| 28.03.2025, 12:09 | |
|
NotAbug, и ловить исключения
Очень весело
0
|
|
|
47 / 39 / 10
Регистрация: 25.02.2025
Сообщений: 84
|
|
| 28.03.2025, 12:12 | |
|
Для программирования одноплатных компьютеров лучше использовать кросс-компиляцию.
Добавлено через 2 минуты >ловить исключения Очень весело для этого try/catch и сделаны
0
|
|
|
274 / 206 / 31
Регистрация: 26.11.2022
Сообщений: 891
|
|
| 28.03.2025, 12:17 | |
|
NotAbug, при программировании встраиваемых систем исключения абсолютно бесполезны.
данные отправленные в оборудование вы автоматически не вернёте. поэтому когды вы ловите исключение вы получаете оборудование находящееся в неизвестном состоянии и единственное что можно сделать - это сброс.
0
|
|
|
47 / 39 / 10
Регистрация: 25.02.2025
Сообщений: 84
|
|
| 28.03.2025, 12:29 | |
|
>единственное что можно сделать - это сброс
надо же аккуратно всё перехватывать. Сначала всё тщательно отладить на хост-системе. Когда возникает неперехваченное исключение внутри кода, его перехватит обработчик в main и выведет сообщение, по крайней мере ошибки не останутся незамеченными. А если ошибки возвращать в виде кодов, то есть опасность не заметить что ошибка не была обработана.
0
|
|
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,335
|
||
| 28.03.2025, 13:35 | ||
.at , try/catch - это всё лишние накладные расходы, удар по быстродействию, засорение текста кода.
0
|
||
|
274 / 206 / 31
Регистрация: 26.11.2022
Сообщений: 891
|
||
| 28.03.2025, 14:20 | ||
|
Или ещё круче - в обработчике прерываний вы вызвали чью-то функцию (написанную программистом любителем новомодных исключений), а она дала исключение )) что же там будет?
0
|
||
|
47 / 39 / 10
Регистрация: 25.02.2025
Сообщений: 84
|
|
| 28.03.2025, 16:18 | |
|
>ну расскажите
Рассказываю: для программирования микроконтроллеров и DSP я против использования высокоуровневых языков, там только язык ассемблера. А вот на одноплатных компьютерах с операционной системой вполне можно использовать C или Ada. Вот в статье хвалят Аду для встроенных систем: https://habr.com/ru/articles/549688/ Насчёт C++ - я не пробовал, но у меня есть книги Майа Пош "Программирование встроенных систем на C++ 17" и Мякишев Д.В. "Принципы и методы создания надёжного программного обеспечения АСУТП", так там очень рекомендуют C++.
0
|
|
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
||
| 28.03.2025, 17:59 [ТС] | ||
|
Парни, извините, я думаю об одном, а пишу о другом. (Наверное я так и программирую.)
Моя мысль заключается в том, чтобы использовать возможности C/C++, чтобы создать безопасные перегруженные функции и операторы вместо опасных. И переключать их с помощью DEBUG 0/1. То есть нужна Safe-библиотека, а не новый язык. Не так кардинально, господа. Не надо Rust/Go/MISRA C. Добавлено через 15 минут
0
|
||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
||||
| 28.03.2025, 19:26 | ||||
|
1
|
||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 28.03.2025, 20:52 | ||
|
Вот это у людей проблемы. Mikhaylo, я за вас искренне рад.
Добавлено через 7 минут По сути вопроса. Выбор ЯП для вас ограничен. Под конкретную задачу доступен ограниченный набор ЯП и иногда даже IDE. Второе. Что в Си, что в С++, да и это относится и к большинству других ЯП. Вы как кодер, должны выработать набор техник и правил написания кода. А не каждый раз выдумывать велосипед. Вот вам подкинули MISRA. Отличный вариант. Misra C++ 2008 поддерживает масса статических анализаторов. Думаю вам нужно снять розовые очки по типу:
0
|
||
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
|||
| 29.03.2025, 01:51 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||
| 29.03.2025, 02:56 | ||||||
|
Вы можете как угодно себя обезопасить и подстраховывать. Создать кучу оберток. Налепить шаблонов нагрузив этап компиляции. Использовать статический анализатор, что бы он подсказал вам где вы делаете "не по фен шую". Но в итоге ответственность ложится на вас. Ничего из этого не спасет вас если будете писать код на скорую руку. Даже самый безопасный ЯП не спасет. Добавлено через 4 минуты Но давайте оставим сферических коней в покое и вернемся к нашим квадратным баранам. Ошибки рантайм ложатся ВСЕГДА на программиста. С тем же вылетом за пределы массива. Почему у вас вдруг вылет? - Потому что вы не сделали проверку. Банально. Вопрос, почему? И так далее. Добавлено через 6 минут assert
0
|
||||||
|
14727 / 9501 / 1362
Регистрация: 21.01.2016
Сообщений: 35,829
|
||
| 29.03.2025, 03:08 | ||
|
Добавлено через 4 минуты Более того, насколько я знаю в С++ уже напихано разных механизмов для обезопасевания своих ног от прострела. Другое дело, что это всё надо ещё освоить. А ты предлагаешь язык ещё больше расширить? Чтобы новые механизмы тоже не освоить?)))
0
|
||
| 29.03.2025, 03:08 | |
|
Что такое thread safe? Возможно ли как-то в Visual Studio 2010 проверять есть ли утечки памяти? Может есть какие-то специальные плагины для этого? Где найти Двунаправленное кольцо? У кого есть такое? Или есть ссылки где их можно найти? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|