Обновить

Блин, Хабр! Я полчаса писал комментарий на комментарий, перепроверяя каждое слово гуглежом. Нажимаю отправить — позавчерашняя статья убрана в черновики! Фу так делать!

Пишу здесь комментарий ни к селу ни к городу ни о чём.

‑--‑--‑--‑--

Современные embedded языки имеют такие правила типизации, которые позволяют в тестах перебрать все возможные варианты значений или хотя бы категории вариантов (типа как для int: -1,1,0,min_int, max_int).

В Си и других языках той эпохи в любой аргумент (указатель) любой функции может прилететь nullptr, но в большинстве функций это никак не обрабатывается, потому что программист решил, что до сюда nullptr никак не долетит. Но по правилам языка может. Из‑за этого невозможно проверить покрытие тестами всех вариантов,потому что все возможные варианты даже по задумке работать не должны.

Си это не про надёжно. Си это про быстро летает и авось не упадёт.

С++11 пришёл и сел в ту же кучу, сделав допустимым shared_ptr<MyClass> sptr(nullptr); Его, конечно, можно запретить в своём проекте, но там ещё много чего учесть придётся, в итоге модерновый С++ тоже не тестируемый язык.

Почему я докапываюсь именно до Си? Потому что бортовое ПО всех трёх самолётов, где погибли люди из‑за ошибки в ПО было написано на Си и Ada. В том числе в 2018 году. Потому что всегда ж на них писали.

Есть языки типа Coq, тестируемые полностью. Есть языки типа Rust, тестируемые желудочно достаточно. Но авиация выбрала языки, где три иконки на панели компилятора лишними не будут.

Теги:
Всего голосов 9: ↑7 и ↓2+5
Комментарии7

Россиянам стал доступен цифровой рубль. Главное

С 1 сентября 2026 года цифровой рубль становится доступен гражданам и компаниям России. Цифровой рубль — третья форма российской валюты наряду с наличными и безналичными рублями. Его также эмитирует Банк России, а все три формы рубля равны между собой.

Россиянам стал доступен цифровой рубль. Главное

Публикации