> Не знаю, сколько упало именно по этой причине. А мне вот интересно. Если кто-то говорит что из-за <whatever> случается <something> - попросить пример этого наверное логично. Хотя-бы чтобы посмотреть на чем накололись коллеги.
> Но ты же не станешь отрицать, что в Сях и Плюсах море возможностей уронить самолёт.
В любом тюринг полном ЯП бесконечно много возможностей уронить самолет.
> В силу специфики этих языков некоторые такие места принципиально неустранимы.
Например, какие и почему? Как насчет конкретики? То что это не в 100% по зубам вебмакакам - так им нечего делать в реалтайме и надежности, они не об этом.
> Значит, самолёты всегда будут под угрозой из-за ПО, написанного на Си-подобных ЯП.
Я бы сказал что любое ПО представляет угрозу. И двигатель представляет угрозу - может сломаться.
> Я не хочу этим сказать, что языки плохие, а только то, что для самолётов, АЭС и т. п.
> следует выбирать не их.
Выбор инструментов и подходов штука многофакторная. И если все приходит к выбору "мы вообще это не сделаем" или "сделаем так, и устроит надежность" - второй вариант обычно лучше.
У меня HardFault (крутой HW exception для явно сбойных ситуаций) в Cortex-M именно от моего программизма на моей памяти был 1 раз, когда я по своей инициативе (!!!) читанул адрес 0. Чтобы узнать начальный адрес стэка. Оказалось фирма ARM не любит NULL. Надеюсь, это достаточно хорошо характеризует достижимую на си культуру работы с памятью. И не то чтобы я мегапрограммист. Просто аккуратно отнессе к вопросу.
И если что, рассмотрение в FW safety guide что делать с внешними воздействиями намекает что на си можно дойти до уровня когда внешние воздействия станут одной из основных проблем. И вот там у ST весьма забавные рекомендации, типа периодического рефреша регистров, проверки чексум состояний, энфорс execution flow трюками софта и проч. И в случае сей я лично понимаю как сие взаимодейтсвует и худо-бедно могу прикинуть "что будет если" и "как это парировать". Я не уверен что возьмусь сказать это за другой ЯП (кроме асма, но он очень канительный).
> Здесь или не здесь приводили уже историю, когда самолёт при пересечении экватора
> перевернулся вверх тормашками. Сказал своё слово Сишечка родная, не только человеческий фактор.
А там софт на си вообще был? А то на аде ракета тоже вот именно этсамое...
> Стремление во всякую железку засунуть программу приводит к этой идиотеке.
А тут такие соображения:
1) Гора механики и жесткой логики зачастую менее надежна, сложнее в обслуживании и тяжелее. Один МК может заменить шкаф добра, и в том шкафу явно было чему сломаться. И мы приходим к вопросу "failure rate".
2) Софтварный алгоритм имеет больше шансов менее глупо реагировать на проблему. Там где чисто железное решение выпадет в аут, софт может начать игнорить проблемный датчик, а состояние строить по хитрозадым фильтрам + что в системе еще осталось. Так можно попытаться graceful degrade до тех пор пока вообще что-то работает. То что это еще не всегда получается - другой вопрос.
3) Шины/сети как IO между вводом, мозгами и исполниловкой в целом большой шаг вперед в всех направлениях. Это и легче, и проще, и технологичнее, и больше опций "как реализовать X", и дает зеленый свет намного более хорошему мониторингу состояний, диагностике, обнаружению ошибок и проблем.
4) Со всем этим все чаще можно вообще без человека обойтись. И идея выполнить какой-нибудь тестовый полет без пилотов, над пустой территорией - не такая уж и дурацкая.
Если что - обратите внимание, все идет к паттерну предсказанному фантастами. Однажды они будут живыми, или квазиживыми и разумными. А все это - на полпути к этому. При том нащупаные паттерны имеют свои плюсы относительно биохимии: они быстрые. Я не знаю где находится бесконечность, но гибрид этих технологий близок к этому.
> Это стремление изначально вызвано чрезмерно завышенными зарплатами говнокодеров
> в развитых странах,
А я вижу иное. Эра глупых машин закончилась. Наступает эра умных машин. А постепенно, вероятно и разумных. И не в обиду пилотам, КМК, нейросети будут лажаться многократно меньше. И хотя они тоже будут иногда убиваться, в пересчете на <километр, пассажира, рейс, ...> - это не будет идти ни в какой сравнение.
Грубо говоря, пилот может быть уставший, а тут еще компания бонуса лишить хочет за задержку рейса. И вот он прется через грозу чтобы наверстать. Но нет, не прокатило - и это последний рейс задолбаного жизнью капитана. С компьютерными системами и AI так не выйдет. Он не устает, премию не урежут, в грозу не попрется.
> в 9 из 10 случаев, в которых его сейчас применяют или пытаются внедрить,
Позволю себе не согласиться. Это
1) Сделало возможным много того что было невозможным или нецелесообразным.
2) Нехило подняло эксплуатационные свойства ряда штук.
3) А в ряде случаев так еще и стало радикально надежнее.
> Там, где 50 лет назад обошлись бы куском железа,
...в 90% случаев забили бы т.к. это дорого, криво и геморройно. Или если очень надо оставили бы вахтера пару кнопок жать. И еще вопрос не набухается ли он. В остальных случаях был бы уродский шкаф барахла, где раз в месяц что-то коротит. А МК что, это кусок кремния, там ломаться особо нечему, все провода на кристалле, упакованы от внешних воздействий.
> прогресс. На этом нехитром обмане делаются колоссальные бабки. В том числе
> экономией на «умных» датчиках вместо простых и надёжных. Так что датчикопроблемы
> относятся к ЯП, хоть это не сразу и видно.
Кроме бабок - принципиально изменились многие паттерны инженерии и проектирования. И я со своей стороны считаю что сеть по которой разлетается от мозга к исполниловке явно лучше чем куча механических тяг и чего там еще.
Более того - исполниловка может быть весьма далеко и вообще где удобно. С железяками так не катило. И собственно единственным отличием было то что в механических системах 100% отказов были в механике. Это однако вовсе не делало их редкими.
И я таки имею основания думать что в целом от смены паттернов надежность улучшилась. А отказы - ну, если самолеты не летают, они и не падают. Но это скучно.
> Не багом, а намеренным и осознанным применением средства, которого не должно было
> быть в ракете по проекту. Правильно назвать бы это преступлением.
Теоретически - может быть. Практически в реальных проектах приходится идти на компромиссы и риски. Под страхом что альтернативой - проект вообще бесславно закроют.
> Перевернувшийся вверх дном на экваторе самолёт передаёт тебе привет. :-)
А что за софт у него был?
> А я вообще гуманитарий и виндузятник.
Гг это конечно дает свежий взгляд на проблемы - но жестоко прошляпливает ряд tradeoffs. И если их игнорить - ну вон Ангару сделали, но пришел Маск и все идут запускать спутники к нему. А роскосмос получил дырку от бублика. Страна оного получила... перспективы что амеры застолбят луну и марс первыми, займут самые козырные территории, с этим придется жить.
> Там не расслабон был, а сознательное нарушение правил и норм.
Возможно. Однако срезание углов часто имеет вполне объективные причины. Делать проекты как будто бесконечно времени и ресурсов все же не катит.
А state of art - имхо в том чтобы сделать из ненадежных компонентов что-то надежное. Это работает. Человек сам живой пример этого подхода. У вас все время отказывает множество клеток, но вы это не замечаете. Это полностью прозрачно. Инженеры тоже этому учатся. Потому что это хорошо работает. И супернадежность каждого компонента при этом не подразумевается.
> Да-да… А можно просто взять Аду, которая специально создана для таких случаев,
> и не париться о сексе стоя в гамаке.
Возможно. Просто это довольно эзотеричная штука для специфичных задач. Фича си в его универсальности, это инструмент системщика и им в принципе можно сделать что угодно. Управляющие задачи и т.п. оказалось похоже на что-то такое. Ну вот и получилось так. Лично я не испытываю желания прогать на аде. Мне нравится си, он хорошо укладывается и на машину и на мой мозг, являясь съедобным и работоспособным компромиссом.
> Ни один язык заведомо не может дать гарантию от того, что учудили строители Ариана.
Тут я соглашусь, но замечу что и для си это тоже можно сказать.
> Тех угробило государство, ему можно. А Маск частник. Его за такое немножко посадят в турма.
Я не фанат двойных стандартов. И поэтому думаю что все будет иначе. Например, придет некто типа NTSB, раскопает до последнего винтика причины, и дальше уже в зависимости от них. С самолетами сие неплохо работает.
> Уровень развития материаловедения как бы уже 70 лет позволяет сравнительно безопасно летать
> в космос (даже с электроникой на борту).
Если посмотреть как это все сделано, это довольно опасные системы, играющие опасно близко к пределам возможностей. И это в целом не есть хорошо. Если попробовать это пускать с частотой сравнимой с самолетами, будет довольно много факапов. А на другие планеты таки надо расселиться. Для этого надо много полетов. Я бы не отказался дожить до даты когда можно будет купить билет на Марс.
> Не проканало.
Ну да. И все же так иногда приходится делать, в т.ч. под нажимом обстоятельств. Ну, как пилот иногда лезет в грозу чтобы не депремировали. Да, конечно, можно пускть вместо этого 10 авиарейсов в год с надежностью круче только яйца. И ценой билета в мегабаксах. В результате все будут тошниться в поездах, автомобилях и самолетах и мы узнаем что там риски в пересчете на километр были еще хуже. Ну да, будут больше убиваться - влепившись в фуру между городами.
> Типичный программист глуп
Совсем глупые программистами не становятся, хоть немного работающий мозг способный к логическому мышлению для этого все же надо.
> и ничего не знает о науках реального мира.
Самый кайф штук типа МК это возможность скрестить реальный мир и софт... и да, при этом стоит принадлежать к обоим мирам.