Все компьютерные проблемы можно свести к двум категориям: проблемы с ноликами и проблемы с единичками. Чаще всего люди сталкиваются с комбинацией этих проблем.
Еще раз. Любой существующий компьютер можно реализовать на реле (как ты понимаешь - я про техническую реализуемость впринципе). И на этом компьютере можно запустить любой реализуемый алгоритм. Для меня, как для инженера, понятно, что внутри этого компьютера нет ничего кроме контактов, которые переключаются. Т.е. любую ошибку можно исправить (или внести) поджав пальцем нужный контакт.
Научная часть вопроса - "какие именно контакты и в каком случае нужно поджимать", это другой, не связанный с редукционизмом вопрос.
P.S. Это не значит, что я считаю редукционизм лучшим способом познания мира. Он хорош, но при условии того, что есть понимание на каком именно уровне нужно остановиться в данном конкретном случае. Ошибка в программе может быть алгоритмическая, из-за ошибки компилятора, из-за ошибки реализации процессора, из-за технической проблемы с конкретным "реле". Да, любую из этих ошибок можно редуцировать до "нет нужного контакта", но всегда-ли нужно настолько глубоко погружаться?
Окей, давай попробуем ситуацию довести до абсурда.
Допустим, в результате ошибки планирования, для алгоритма вместо сортировки пузырьком выбрали random sort. Который, как известно, во-первых решает поставленную задачу (то есть не содержит формального бага), во-вторых делает это так медленно, что QA отказывается признавать это за решение задачи (т.к. не может дождаться окончания процесса).
Какой контакт тут неправильный? Ответ компьютер выдаёт, просто чуть-чуть медленее. Нет того бита, который "не в том положении".
Ну для начала нужно разделять error и mistake. Что там QA в голову пришло считать ошибкой только им понятно.
Но если доводить ситуацию до абсурда - тут неправильные контакты, которые своим состоянием реализуют алгоритм "random sort" вместо пузырька. Т.е. есть кучка бит в "неправильном положении". Если собрать кучку народа у которых хватит пальцев - можно позажимать нужные контакты и всё исправится.
Принять решение о том, решена-ли задача или нет, может только тот, кто задачу ставил.
P.S. На всякий случай напоминаю с чего всё началось - "Может ли быть компьютерный баг, который не может быть редуцирован к отсутствию/наличию контакта или нет?" Невозможность компьютера вывести цветную картинку на чёрнобелый текстовый дисплей - компьютерным багом не считается.
Баги синхронизации? Например, если у нас deadlock из-за того, что хэш-таблица очень неудачно сложила данные и и мы (в этот конкретный раз) имеем O(n) вместо O(1) - это редуцируется? Я понимаю, что мы можем свести баг до "нет пиксела на экране", но иметь root cause в виде неправильного бита - так ли?
Ышшо раз. Любой компьютер - это куча реле на стероидах. В нём ничего, кроме этих реле нет. Вобще нет. Совсем нет. Вот был-бы один-два-три-десять-сто битов не в 0 а в 1 - хеш-таблица сложилась-бы по другому. И неважно даже - эти неудачные биты в памяти данных, в памяти кода или в регистрах процессора.
P.S. Ты постоянно ходишь по самому краю "вывести цветную картинку на ЧБ монитор". На самом деле всё просто - если проблему в принципе можно решить заменив код/данные - это проблема контактов. Если решить нельзя - не контактов. Отличить первое от второго - это другая наука.
Ну вот я как раз и думаю, где у нас эта интересная граница проходит. Простые случаи понятны. А с сложными? Например, если у нас баг появляется только в результате специфичного взаимодействия нескольких независимых систем (по сети, например), и нельзя указать на конкретный код/компьютер, который не прав? Все правы, а на выходе безобразие.
Независимые системы взаимодействуют со времен реле. Перфокартами. Нету дырки там где должна быть? Ну значит контакт не замкнулся и пробивалка дырку не пробила.
P.S. Я понимаю твою проблему. Тебе сложно редуцировать всю эту байду до релюшек. Ты выше застрял. :)
no subject
Date: 2023-10-03 01:17 pm (UTC)Любой существующий компьютер можно реализовать на реле (как ты понимаешь - я про техническую реализуемость впринципе). И на этом компьютере можно запустить любой реализуемый алгоритм. Для меня, как для инженера, понятно, что внутри этого компьютера нет ничего кроме контактов, которые переключаются. Т.е. любую ошибку можно исправить (или внести) поджав пальцем нужный контакт.
Научная часть вопроса - "какие именно контакты и в каком случае нужно поджимать", это другой, не связанный с редукционизмом вопрос.
P.S. Это не значит, что я считаю редукционизм лучшим способом познания мира. Он хорош, но при условии того, что есть понимание на каком именно уровне нужно остановиться в данном конкретном случае. Ошибка в программе может быть алгоритмическая, из-за ошибки компилятора, из-за ошибки реализации процессора, из-за технической проблемы с конкретным "реле". Да, любую из этих ошибок можно редуцировать до "нет нужного контакта", но всегда-ли нужно настолько глубоко погружаться?
no subject
Date: 2023-10-04 01:36 pm (UTC)Окей, давай попробуем ситуацию довести до абсурда.
Допустим, в результате ошибки планирования, для алгоритма вместо сортировки пузырьком выбрали random sort. Который, как известно, во-первых решает поставленную задачу (то есть не содержит формального бага), во-вторых делает это так медленно, что QA отказывается признавать это за решение задачи (т.к. не может дождаться окончания процесса).
Какой контакт тут неправильный? Ответ компьютер выдаёт, просто чуть-чуть медленее. Нет того бита, который "не в том положении".
no subject
Date: 2023-10-04 07:27 pm (UTC)Но если доводить ситуацию до абсурда - тут неправильные контакты, которые своим состоянием реализуют алгоритм "random sort" вместо пузырька. Т.е. есть кучка бит в "неправильном положении". Если собрать кучку народа у которых хватит пальцев - можно позажимать нужные контакты и всё исправится.
no subject
Date: 2023-10-05 10:19 am (UTC)Но почему оно в неправильном положении? Задачу-то оно решает, только медленно.
no subject
Date: 2023-10-05 10:33 am (UTC)no subject
Date: 2023-10-05 10:40 am (UTC)А если так сказали не QA, а, например, обнаружилось при эксплуатации?
Я к тому, что "медленное" решение не может быть "неправильным контактом" (битом). Оно решает задачу.
no subject
Date: 2023-10-05 11:03 am (UTC)P.S. На всякий случай напоминаю с чего всё началось - "Может ли быть компьютерный баг, который не может быть редуцирован к отсутствию/наличию контакта или нет?"
Невозможность компьютера вывести цветную картинку на чёрнобелый текстовый дисплей - компьютерным багом не считается.
no subject
Date: 2023-10-05 11:05 am (UTC)no subject
Date: 2023-10-05 11:49 am (UTC)P.S. Ты постоянно ходишь по самому краю "вывести цветную картинку на ЧБ монитор". На самом деле всё просто - если проблему в принципе можно решить заменив код/данные - это проблема контактов. Если решить нельзя - не контактов. Отличить первое от второго - это другая наука.
no subject
Date: 2023-10-05 12:59 pm (UTC)no subject
Date: 2023-10-05 01:54 pm (UTC)P.S. Я понимаю твою проблему. Тебе сложно редуцировать всю эту байду до релюшек. Ты выше застрял. :)
https://www.youtube.com/watch?v=bOOCfx2EN10
Или даже подробнее про:
https://habr.com/ru/articles/442732/