The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Дрю ДеВолт представил язык системного программирования Hare"
Отправлено Аноним, 25-Апр-22 18:58 
> Что только люде не делают, чтобы не изучайть по-нормальному божественный язык С
> (которому только и надо что отказаться от препроцессора и некоторых других
> небольшого числа неоднозначных возможностей, как это сделано в Misra C).

Ну, понимаешь, у божества так то тоже свои приколы есть.
1) А кто такое int и сколько в нем битов? А, получив vuln в репу в чужом коде узнаем? Особенно если у вон той платформы проц не х86? Вон на абдурине int может и 16 битов быть. А чо, стандарт позволяет. Сколько кода при этом сглючит? Чуть менее чем весть?
2) За integer promition кого-то надо было бы немного убить. Потому что иногда делает крайне контринтуитивные вещи. А если ты думаешь что крут, попробуй -Wconversion в гцц и шланге, узнаешь много нового о своем коде и проблемах в нем.
3) Какой у enum вообще целочисленный тип? Ах, unspecified? Отлично. Ох, #define имеет свое мнение об int'ах, отличное от? А (1 << 31) может сделать не то о чем вы подумали? Ага, 1 и 1U две большие разницы. Удобно, б...
4) Пункт 2) ведет к совершенно идиотским выходкам программистов, не желающих греть мозги этим факапом. И вот уже прогер пишет ... array[index]... - и оказывается что index мало того что int, так еще в функцию снаружи caller'ом отдается, и это вообще ни верифицируется толком, зато когда caller делает что-то странное, оно такие интересные адреса потом дереференсит...
5) Язык местами недостаточно аннотирован для статического анализа. Операции с указателями вообще проверкам плохо поддаются. Иногда это неизбежность но 90% случаев можно заткнуть. Прошареные сишники делают эрзац этого как умеют, но почему бы не сделать это нормально?
6) Макросня в сях может вас поиметь. Нет, она реально может вас поиметь. Поэтому макросы у прошареных сишников состоят из скобок чуть менее чем полностью. А кто хочет элегантный код, получает потом вулны в репу.
7) Ну, блин, ок, как вы эффективно возвращаете несколько значений из функции? А чтоб это намерение еще и анализерам нормально задекларить? Не, вон тот void func (ptr* param) это нихрена не аннотация чего вы хотели сделать. Он вообще void возвращает. И errno так то тоже - хак.

А MISRA так то да, но некоторые вещи там довольно забавные или спорные. Есть еще с полдюжины стандартов, от CERT до Embedded C. В силу условности стандартов это компилеры не чекают как есть, разве что внешние тулы.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру