Есть цитата Алана Дж. Перлиса, которая говорит:
Есть два способа написания безошибочных программ; только третий работает.
Я недавно услышал эту цитату от моего друга, и не смог понять более глубокое значение этого.
О чем здесь говорит Перлис?
bug
quotations
ykombinator
источник
источник
Ответы:
Это означает, что действительно нет безошибочных программ. Глубокая цитата о способах избежать ошибок с самой ошибкой является пародией.
источник
Третьего пути нет.
источник
Я отвечу с другой цитатой ...
;-)
источник
Как уже указывалось во многих других ответах, невозможно написать безошибочную программу .
Но я хотел бы отметить потенциальную мета-природу цитаты. По сути, это ошибка за пределами границ. В первом утверждении он определяет вселенную или «список», имеющий только две возможности или элементы. И все же во втором заявлении он ссылается на третье. Что абсурдно! Незаконно даже! Третий элемент, имеющий двухэлементную границу, сам по себе является ошибкой.
Действительно глубоко в том, что цитата способна продемонстрировать ту самую суть, на которую она ссылается.
источник
Это означает, что все нетривиальные программы будут иметь ошибки. Это просто забавный способ сказать, что нет способа написать безошибочную программу.
источник
Можно писать безошибочные программы, даже нетривиальные, и даже доказать их правильность. Рассмотрим, например, такие языки, как Coq, Epigram или Agda, где это делается.
Проблема остановки говорит о том, что это невозможно сделать для общей программы .
источник
Это напоминает мне ботаническую рубашку, которую я видел: в мире есть 10 типов людей. Те, кто знает двоичный код, и те, кто не знает.
Это также может быть игрой на том факте, что иногда списки индексируются 0. $ var = array ('First', 'Second', 'Third'); И вы можете получить доступ к этому списку следующим образом: $ var [0] = 'First' $ var [1] = 'Second' $ var [2] = 'Third'
Таким образом, буквенный индекс массива 2 указывает на «третий» индекс.
источник
Это уже объясняется другими словами, но не так ясно, как мне кажется. Это просто означает, что вы попробуете оба пути, они будут иметь ошибки, и, наконец, вы исправите свои ошибки и получите безошибочную программу. Сравните с другой цитатой:
(В качестве альтернативы вы могли бы прочитать это, как сказал Пьер (что, я думаю, натянуто). (Третий способ, которого нет в домене, работает.) Как я уже сказал, это растяжка, но это правда.
источник
Это та же самая цитата, которую мой отец использует, чтобы сказать мне, когда я оправдываюсь. Поговорка имеет тенденцию звучать так: «В истории есть 3 стороны. Их сторона, Ваша сторона и правая / верная / правильная сторона».
Подводя это к контексту с разработкой (и будучи тестером программного обеспечения проф.), Я бы сказал, поскольку существует так много способов кодирования чего-либо, что имело бы смысл использовать «Есть 3 стороны кодирования. Ваш код, их код и Рефакторированный код. "
Я думаю, это потому, что программисты / разработчики склонны проводить рефакторинг после того, как продукт становится стабильным, что в основном слишком поздно, но в большинстве случаев рефакторинг проводится для того, чтобы улучшить то, что вы и ваш собеседник не так хорошо сделали в первую очередь.
Надеюсь это поможет.
источник
Технически говоря, я думаю, что вы могли бы написать нетривиальную программу без ошибок, но из-за проблемы остановки невозможно доказать, что она не содержит ошибок. Таким образом, нужно работать в предположении, что во всех программах есть ошибки, поскольку невозможно доказать обратное.
http://en.wikipedia.org/wiki/Halting_problem
Обновление: вы можете доказать, что конкретный алгоритм будет возвращать правильные ответы, но это не то же самое, что доказывать, что он полностью правильный. http://en.wikipedia.org/wiki/Correctness_(computer_science )
Тем не менее, моя точка зрения заключалась в том, что цитата относится к тому факту, что нужно предположить, что в программе всегда есть ошибки, и пытается объяснить, почему это так. http://en.wikipedia.org/wiki/Software_bug#Bug_management
источник
В качестве дополнительного понимания, «два пути» могут быть ссылкой на эту цитату Тони Хоара :
Немного подумайте над этим, и вы увидите, что он говорит то же самое: если ваша часть программного обеспечения нетривиальна, в ней есть ошибки (но достаточно усложняют ее, и они не будут очевидными ошибками).
источник