Почему происходят сбои в работе программ?

Вопрос скорее философский, но, вопрос про точные вычисления.

На него почему-то никто не может ответить дельно.


Если взять примитивный код в несколько строчек, который исполняет всего пару задач и исправно это делает 500 раз, на 501-й он выдаёт ошибку. Не запускается, вылетает или ещё что-то. Что, мать его, происходит?


На эту тему можно посмотреть глобально: падающие спутники, навигационные программы, различного рода примитивная автоматика. Что бл происходит? Программы отработавшие многократно, прошедшие испытания, начинают «троить»...


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

Автор поста оценил этот комментарий

Программы работают по коду, который по сути - логические операции. Все твои баги, вылеты, сбои и "падения спутников" - неучтенки или последствия ошибок. Для этого и есть логи и разборы случаев. Вот недавно читал в журнале "Планета"... Накрылась нахрен сложная оборонительная система ни с того ни с чего? Почему? Оказалось - 1 микрочип купили "китайский"... И он перегорел в ответственный момент. А философствовать можно бесконечно, если не технарь и не видишь что по другую сторону занавеса.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Та кагбэ технарь, но иной раз уже думаешь что происходит какая-то мутная хрень)  

показать ответы
1
Автор поста оценил этот комментарий

Поискать лог и провести дебаг не советовать?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

нет, я же уточнил что код уже отлажен.

показать ответы
1
Автор поста оценил этот комментарий

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

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Не, я не про то, про "идеальные условия".

показать ответы
2
Автор поста оценил этот комментарий

Все просто, нет сборщика мусора который высвобождает память. 500 раз отработало - память была, а на  501 кончилось место, программа не может сохранить какое-либо значение и потому ошибка.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Это тоже можно предусмотреть ещё на стадии написания кода.

показать ответы
1
Автор поста оценил этот комментарий

Вопрос из разряда: "Почему у людей сопли текут?"

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну здесь известна "механика"

4
Автор поста оценил этот комментарий

Сама программа с выверенным кодом не сбоит. Сбоит зоопарк служб и драйверов в операционной системе.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ок, почему? Если и эта система в своё время была отлажена?

показать ответы
1
Автор поста оценил этот комментарий

И что сказал лог 501-го случая, простите?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Просил вызывать шамана с бубном! 501 - число просто для примера.

показать ответы
2
Автор поста оценил этот комментарий

по носу ?

раскрыть ветку (1)
Автор поста оценил этот комментарий

В

Автор поста оценил этот комментарий

отличное подтверждение про вариант с неожиданными внешними условиями. Даже в этой отрасли не всегда могут все предусмотреть, что уж говорить об обычном софте

раскрыть ветку (1)
Автор поста оценил этот комментарий

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



Но в данном случае IMU передавал данные на главный компьютер "Скиапарелли" неожиданно долго, на протяжении секунды, что "обмануло" ПО модуля и заставило его считать эти измерения реальными данными, а не аномалией."

Т.Е. и это учитывается.

показать ответы
1
Автор поста оценил этот комментарий

Примитивный код не станет сбоить на 501 раз просто сам по себе.

Ко всему уже перечисленному добавлю вариант, что еще и языки программирования тоже не идеальны.

раскрыть ветку (1)
Автор поста оценил этот комментарий

пост про причину крушения  Скиапарелли http://pikabu.ru/story/eka_vyiyasnilo_prichinu_krusheniya_qu...

показать ответы