Воспоминания о языках программирования в авиации (и не только)

Реклама
Да возьмите вокруг нас вещи. Тот же самый автомобиль. Там датчиков - что блох на собаке. А нормальное автоматическое вождение так до сих пор безопасное не осилили в производстве. Сколько людей уже погибло от ошибок...
"Если бы программисты были строителями, то случайно залетевший в город дятел привел бы к гибели всю цивилизацию" Из народного (с)
Плохой пример. Автомобилизм - очень консервативная среда, полный автопилот сразу рынок просто не съест. Плюс правовое регулирование должно подтянуться. Поэтому и происходит постепенно - парктроники, круиз контроль, адаптивный круиз, автопарковка, сейчас вот уже автопилот по дороге появился.

И это вообще ничего не говорит о качестве кода или архитектуры 🤔.

Можно кстати другой привести из автомобилизма. На CAN шине сейчас весь автомобиль висит, у него до 1000 пакетов в секунду. И ничего так себе, справляется.
 
Комментарии в коде - это признак переусложнённого кода. В 99% случаев они означают, что код надо переписать, чтобы он выглядел проще.

Обожаю эту историю. Встречал мнение, что можно писать вообще без комментариев. Типа называй переменные так, чтобы все, было понятно, и упрощай код.

Кто-то пишет - комментариев мало не бывает.

И хз как между вами истину найти 🤷.

Мне лично интересно было бы увидеть понятный код без комментариев чего-то серьезного.
 
Ну надо же. А у нас адаптивный круиз-контроль уже давно на скорости за 200 по автобанам на серийно продающихся машинах ездит.
Вопрос был не про адаптивный круиз контроль, а про полное автовождение. Это разные вещи
Комментарии в коде - это признак переусложнённого кода. В 99% случаев они означают, что код надо переписать, чтобы он выглядел проще.
В каком плане комментарии это переусложнение кода? На конечный код это никак не отражается, а вот на понимание кода вполне очень даже качественно отличается. Отладка занимает больше времени, комментарии сильно облегчают этот процесс. А если надо внести изменения в старый код? Комментарии вообще становятся на вес золота в тексте программы
Где комментарии действительно имеют смысл - это при описании интерфейсов библиотек, для автоматической генерации документации.
НУ это если планируется многократное использование в других проектах. Но одно другому не мешает. Это разные вещи...
Конечно, фигурные скобочки легче читаются, чем begin и end.
Нисколько фигурные не читаются проще - глазу зацепиться сложнее. Вот такой вопрос почему SQL язык не написан с использованием скобочек, а написан по Вирту? Изначально прочитайте, почему Вирт создал такой язык - саму концепцию... (она должна быть как обычный текст читаться, что и было реализовано). Если бы так всё просто было со скобками, зачем было делать язык Питон? Где концепция разметки и написания обычным текстом возведена в абсолют?
Погуглите "фильтр Калмана", что я вам буду пересказывать учебники.
Спасибо за наводку, почитаю.
 
Плохой пример. Автомобилизм - очень консервативная среда, полный автопилот сразу рынок просто не съест. Плюс правовое регулирование должно подтянуться. Поэтому и происходит постепенно - парктроники, круиз контроль, адаптивный круиз, автопарковка, сейчас вот уже автопилот по дороге появился.

И это вообще ничего не говорит о качестве кода или архитектуры 🤔.

Можно кстати другой привести из автомобилизма. На CAN шине сейчас весь автомобиль висит, у него до 1000 пакетов в секунду. И ничего так себе, справляется.
Пример как пример. Тесла ворвалась и сделала море новаций, причём большая часть весьма сомнительных. Они сразу попытались сделать полностью систему автономную автовождения. Но не вышло до сих пор работает с ошибками, что привело к куче трагедий.
Те же складывающиеся электронные ручки дверей - при блокировке и отключения питания при пожаре остаешься в коробке запертый на смерть.
Перевод всех настроек на бортовой планшет - весьма сомнительная новация. Лучше рычажков и кнопочек ничего не придумали, особенно если нужно оперативно что-то отрегулировать...
 
Те же складывающиеся электронные ручки дверей - при блокировке и отключения питания при пожаре остаешься в коробке запертый на смерть.
Что то не понял. Внутри то там ручки как ручки. А ручки снаружи - они в любом случае не открывают двери, если машина заперта изнутри (а многие машины автоматически изнутри запирают в движении). То есть, выдвижная ручка существенной роли не играет при ДТП.

Одновременно, в авто можно найти огромное количество инноваций, которые реально работают на безопасность.

Мне кажется, зря ты эту тему развиваешь. Глупости какие-то получаются. И причем здесь качество кода вообще непонятно 🤷.
 
Что то не понял. Внутри то там ручки как ручки. А ручки снаружи - они в любом случае не открывают двери, если машина заперта изнутри (а многие машины автоматически изнутри запирают в движении). То есть, выдвижная ручка существенной роли не играет при ДТП.

Одновременно, в авто можно найти огромное количество инноваций, которые реально работают на безопасность.

Мне кажется, зря ты эту тему развиваешь. Глупости какие-то получаются. И причем здесь качество кода вообще непонятно 🤷.
Автомобиль должен быть автомобилем, а не гаджетом на колёсах!!! Развлекаловка отдельно, внутренняя система отдельно. Разделена физически(!!!). А ручка в Тесле - там слишком понадеялись на электричество - уже были случаи, когда дверь при аварии/пожаре не открывалась изнутри, это так к слову.
А вот по поводу качества бортового кода пожалуйста - Электромобиль Nissan Leaf уязвим для кибератак. Хакерам удалось удаленно перехватить рулевое управление
 
Мне лично интересно было бы увидеть понятный код без комментариев чего-то серьезного.
Он будет понятен локально (что делают конкретные строчки) знающим язык. Чтобы он был понятен глобально (что делает модуль в целом), придётся смотреть проектную документацию (HLD, DD), локальные комментарии тут тоже не помогут.

Вот мы на днях заопенсорсили (с документацией):


Впрочем, там куча технических комментариев для подавления реакции линтеров (мотивированные умышленные отклонения от требований и ложно-позитивные срабатывания).
 
Автомобиль должен быть автомобилем, а не гаджетом на колёсах!!! ...
А вот по поводу качества бортового кода пожалуйста - Электромобиль Nissan Leaf уязвим для кибератак. Хакерам удалось удаленно перехватить рулевое управление
С лозунгами это тебе на митинг.

Возможность открыть дверь изнутри на обесточенной машине - базовое требование безопасности. Там нет кода, потому что при ДТП нормально отстрелить пиропатрон АКБ и обесточить машину, значит все реализуется механически. Тем не менее, иногда двери или замки заклинивают чисто механически.

Хз что там за "взлом" Лифа, но больше похоже на громкое дело угона самолёта через мультимедиа из кресла пассажира. Живу на ДВ, лифы этих лет тут ездят, ничего такого не слышал.
 
Вопрос был не про адаптивный круиз контроль, а про полное автовождение. Это разные вещи
А с чего бы вдруг возник вопрос "про полное автовождение"? Какое он имеет отношение к теме дискуссии вообще и к скорости получения информации от датчиков в частности?

В каком плане комментарии это переусложнение кода?
Комментарии - это признак того, что код без них не читается, то есть переусложнён.

На конечный код это никак не отражается, а вот на понимание кода вполне очень даже качественно отличается. Отладка занимает больше времени, комментарии сильно облегчают этот процесс.
Автоматические тесты писать не пробовали?

А если надо внести изменения в старый код? Комментарии вообще становятся на вес золота в тексте программы
Строго наоборот. Если надо вносить изменения в старый код, то комментарии становятся обузой, поскольку все релевантные комментарии (а они не только в тех строчках, которые меняются) надо найти и обновить.

И никакой тест вам не подскажет, что вы где-то забыли это сделать.

Нисколько фигурные не читаются проще - глазу зацепиться сложнее.
Чем за begin и end? Не смешите.

Вот такой вопрос почему SQL язык не написан с использованием скобочек, а написан по Вирту?
Потому что SQL написан не "по Вирту", а по КОБОЛу.

Потому что и у того, и у другого ноги растут из конца 50-х годов прошлого века, когда представления о читаемости программ были в зачаточном состоянии.

Если бы так всё просто было со скобками, зачем было делать язык Питон? Где концепция разметки и написания обычным текстом возведена в абсолют?
Где вы в Питоне нашли begin и end?
 
Реклама
А ручка в Тесле - там слишком понадеялись на электричество - уже были случаи, когда дверь при аварии/пожаре не открывалась изнутри, это так к слову.
У теслы есть механическое открытие дверей изнутри. На задних дверях реализовано с костылями, на передних - удобно.
Снаружи не открыть без питания, но это у многих автомобилей так

Если дверь зажмет из-за деформации проема - трижды механический замок не поможет
 
Вот мы на днях заопенсорсили (с документацией):

Мне такой подход всегда напоминает одну историю. Как то работал у меня программист, у него задача была добавить счетчик, который делает инкремент по одному событию и сброс в 0 по другому событию. И вот он создает класс с методами inc и reset и свойство для чтения счетчика :ROFLMAO:.
 
Мне такой подход всегда напоминает одну историю. Как то работал у меня программист, у него задача была добавить счетчик, который делает инкремент по одному событию и сброс в 0 по другому событию. И вот он создает класс с методами inc и reset и свойство для чтения счетчика :ROFLMAO:.
А как иначе в объектно-ориентированном языке и таком же мозге программиста...?
 
Может, кто-то полагает, что использование "языков высокого уровня" защищает от подобного?
История №98765
Против ЧФ никакого лома не существует...
Только надлежащий менеджмент (в хорошем смысле) и контроль.
...а так же "общая культура" коллектива разработчиков помогает...

P.S. Помянутые выше "паркуртисты" в эту систему (включая "общую культуру") редко встраиваются, ИМХО.
 
Мне такой подход всегда напоминает одну историю. Как то работал у меня программист, у него задача была добавить счетчик, который делает инкремент по одному событию и сброс в 0 по другому событию. И вот он создает класс с методами inc и reset и свойство для чтения счетчика :ROFLMAO:.
И мок к нему. И для кода, который использует этот класс, пишутся тесты, которые по моку проверяют, что этот код инкрементирует и ресетит счётчик там и только там, где это ожидается.

А иначе, действительно, первый же залетевший к вам дятел-программист разрушит всю цивилизацию.

Это ASIL B код там, по ссылке. В ASIL D ещё хуже.
 
С лозунгами это тебе на митинг.

Возможность открыть дверь изнутри на обесточенной машине - базовое требование безопасности. Там нет кода, потому что при ДТП нормально отстрелить пиропатрон АКБ и обесточить машину, значит все реализуется механически. Тем не менее, иногда двери или замки заклинивают чисто механически.

Хз что там за "взлом" Лифа, но больше похоже на громкое дело угона самолёта через мультимедиа из кресла пассажира. Живу на ДВ, лифы этих лет тут ездят, ничего такого не слышал.
Там написано Лифы выпуска 2020+. Т.е. более свежие, на старых таких проблем нет. Потому как они ещё сделаны по ДВС стандартам, а новые уже гаджеты на колёсах. Уже на Кан шину и бортовую систему всякого барахла навесили, что превратилось в шмурдяк. И задала тон этому Тесла, с прилетающими обновлениями ...
 
Реклама
А с чего бы вдруг возник вопрос "про полное автовождение"? Какое он имеет отношение к теме дискуссии вообще и к скорости получения информации от датчиков в частности?
Вопрос был про качество кода в критически важных системах. Просто перешли от самолётов к автомобилям. Но проблема везде одинаковая...
Комментарии - это признак того, что код без них не читается, то есть переусложнён.
На вкус и цвет фломастеры разные. Мне нравится код с большим количеством комментариев. Мне так удобнее и быстрее...
Автоматические тесты писать не пробовали?
Это конечно хорошо, но как автоматические тесты помогут выявить проблемы с кривыми библиотеками? И разными другими нюансами... Логика у всех разная, как и реализация. Думаешь одно, а на практике совсем другое выходит... У некоторых логика работает весьма в извращенном виде... Это не лечится... К сожалению...
Строго наоборот. Если надо вносить изменения в старый код, то комментарии становятся обузой, поскольку все релевантные комментарии (а они не только в тех строчках, которые меняются) надо найти и обновить.

И никакой тест вам не подскажет, что вы где-то забыли это сделать.
Предварительное проектирование никто не отменял. Чем тщательнее и детальнее будет проведено предварительное проектирование, тем качественнее будет продукт на выходе... Но кому это надо на сегодня? Лично я хочу качественное ПО, а не раздутое до невероятным масштабов нечто, что присутствует на рынке сегодня
Чем за begin и end? Не смешите.

Потому что SQL написан не "по Вирту", а по КОБОЛу.

Потому что и у того, и у другого ноги растут из конца 50-х годов прошлого века, когда представления о читаемости программ были в зачаточном состоянии.

Где вы в Питоне нашли begin и end?
В питоне Begin End заменены форматированием. Так себе идея, особенно когда длинные описания и не помещаются в одну строку...
А вообще принцип Вирта был - чем меньше синтаксиса, тем более удобнее инструмент написания, хотя как указывает в интервью сам Вирт, удобство читабельности - вещь спорная,
кстати сама статья тут - Никлаус Вирт о культуре разработки ПО
Вопрос - что из того, что он сказал стало неактуальным сегодня?
По большому счёту - сам язык программирования и его синтаксис должен быть по минимуму, ибо как в пословице - короля делает его свита. На сегодня любая среда программирования, кроме специфических задач - это прежде всего набор дополнительных библиотек, в которых заложены все реализации для быстрого написания программ. Вот только качество этих библиотек так себе... Хотя когда просматривал исходники библиотек Delphi там огромное количество ассемблера кода... И да, для меня скобки - не читабельность, а begin end - удобоваримо...
 
Назад