zHz00 Untitled

четверг, 18 января 2018
23:59 Программа, электроника и механика: надёжность
Под надёжностью я понимаю среднее время, через которое в устройстве происходит сбой. Это не гостированное определение, но для рассуждений удобное.

Когда-то я обнаружил, что электронщики матерятся сильнее, чем программисты. И понял, почему. Ошибки и неполадки в электронных схемах сложнее диагностировать и устранить.

С отладкой механических устройств я по работе почти не сталкивался. Но в те пару раз, когда это всё-таки происходило, я обнаружил ещё более интересную вещь: неполадки в механической части ещё сложнее диагностировать и устранить, чем в электронной. Штанги не доходят туда, куда нужно (а если доходят, то не фиксируются в нужном положении). Колёсики заедают. А "посмотреть", что происходит на самом деле -- возможности практически нет.

Однако, существует широко распространённое мнение, что если устройство функционирует чисто механически -- то это "на века". Электронные приборы гораздо нежнее и легко выходят из строя. А уж программа -- это вообще что-то эфемерное. Каждый первый разработчик ПО в лицензионном соглашении пишет, что отказывается от ответственности за то, что сотворила его программа (и за то, что не сотворила, тоже). А программы, за которые разработчик отвечает своей шкурой, стоят совсем других денег.

Откуда же берётся, что механическое устройство такое надёжное? Дело в сложности. Те механические устройства, которые надёжные, содержат в себе, к примеру, сотни элементов. Они перемещаются, к примеру, 10 раз в секунду, не больше. Или просто вертятся без остановки. А процессор? Сколько в нём транзисторов? Зависит от процессора, но, к примеру, 731 млн (2008 год, Core i7 "Bloomfield"). А частота -- 2 ГГц (он же). Это частота, с которой могут перекидываться транзисторы внутри. Если бы механическое устройство состояло из такого же количества частей, оно бы проработало весьма недолго. Ибо поломка любой детали -- кирдык.

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

С программами дела обстоят несколько иначе. Если программа не зависит от внешних факторов, кроме предусмотренных "входных данных", её надёжность будет примерно такая же, как у электроники, на которой она работает. То есть -- прошивка микроконтроллера даст сбой либо из-за ошибок в самой прошивке (которые относительно просто обнаружить), либо из-за сбоя электроники. Но на практике прошивки редко воспринимаются пользователями как "программа". Когда говорят о надёжности программы, имеют ввиду чаще всего прикладное ПО, работающее под какой-либо ОС. И на этой ОС кроме самой программы тусуется ещё десяток посторонних программ. И всё это взаимодействует друг с другом и с ОС непредсказуемым образом. То есть, выход программы из строя может быть вызван неизвестным количеством внешних факторов (помимо сбоев электроники и ошибок самой программы). Кто же согласится нести ответственность за такое?

При таком подходе программы будут отказывать заведомо чаще, чем электроника, на которой они работают. Хотя сложность программ (с логической точки зрения -- число сущностей, которыми они манипулируют, число операций и т.п.) гораздо меньше сложности процессора.

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

@темы: Программирование, Борьба с техникой, Мысли, Электроника, Наблюдения

URL
до экзамена осталось 1 час 5 минут... пора выезжать... не...
Мы сильнее Туниса!
Прошлась в обед по магазинам. Хожу, смотрю и все хочу!......
Вспомнила сегодня голос и фразу Альбины, когда ей предлаг...
Занятно, что everybody from all over the world сходятся т...
Обнимет, закопает в пески.... Хочу на Карнавал в Гелен...

19.01.2018 в 14:16

19.01.2018 в 14:16
Ещё есть милая игра, перебрасывание мяча. То есть разборка, кто виноват: программист или электроник.
URL

19.01.2018 в 15:31

19.01.2018 в 15:31
Стороной, ага!
URL

19.01.2018 в 16:31

19.01.2018 в 16:31
Ещё есть милая игра, перебрасывание мяча. То есть разборка, кто виноват: программист или электроник.

А в meltdown кто виноват - программист или электроник?)))
URL

19.01.2018 в 16:39

19.01.2018 в 16:39
deadlymercury, если речь о ядерном реакторе, то виноват тот, кто не сделал аппаратную защиту от дурака-программиста. :)
URL

19.01.2018 в 16:53

19.01.2018 в 16:53
Стороной, я думаю, что речь про уязвимость процессоров.

ru.wikipedia.org/wiki/Meltdown_%28%D1%83%D1%8F%...
URL

19.01.2018 в 18:09

19.01.2018 в 18:09
Тогда виноваты аппаратчики и верификаторы.
URL

19.01.2018 в 18:12

19.01.2018 в 18:12
deadlymercury, Стороной, удивительно, что уязвимость затронула две совершенно разные архитектуры. Это значит, что ошибка была в теории (!) построения конвейера. Виноваты математики?)
URL

19.01.2018 в 18:23

19.01.2018 в 18:23
zHz00, это совпадение. Я так думаю, как имеющий отношение к ядроделанию. :) Просто механизмы выполнения команд пишутся совершенно с нуля и дырки там появляются независимо. Но поскольку все хотели сделать быстро, то оставили ворота для ошибок.
Наше ядро, я вспомнил, проверили на эту ошибку. Нету... )
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail