Jest cytat Alana J. Perlisa, który mówi:
Istnieją dwa sposoby pisania programów bezbłędnych; działa tylko trzeci.
Niedawno usłyszałem ten cytat od mojego przyjaciela i nie byłem w stanie zrozumieć głębszego znaczenia tego słowa.
O czym tutaj mówi Perlis?
bug
quotations
ykombinator
źródło
źródło
Odpowiedzi:
Oznacza to, że tak naprawdę nie ma żadnych programów wolnych od błędów. Głębokim cytatem o sposobach uniknięcia błędów z samym błędem jest parodia.
źródło
Nie ma trzeciej drogi.
źródło
Odpowiem innym cytatem ...
;-)
źródło
Jak już wskazano wiele innych odpowiedzi, nie ma sposobu na napisanie programu bezbłędnego .
Chciałbym jednak zwrócić uwagę na potencjalną meta-naturę cytatu. Jest to zasadniczo błąd poza zakresem. W pierwszym stwierdzeniu definiuje wszechświat lub „listę” mającą tylko dwie możliwości lub elementy. Jednak w drugim oświadczeniu odwołuje się do trzeciego. Co jest absurdalne! Nawet nielegalne! Trzeci element mający granicę dwóch elementów sam w sobie jest błędem.
Prawdziwie głęboki w tym, że cytat jest w stanie pokazać samą istotę, do której się odnosi.
źródło
Oznacza to, że wszystkie nietrywialne programy będą miały błędy. To po prostu zabawny sposób powiedzenia, że nie ma sposobu na napisanie programu bezbłędnego.
źródło
Możliwe jest pisanie programów bezbłędnych, nawet nietrywialnych, a nawet ich poprawność. Rozważmy na przykład takie języki, jak Coq, Epigram lub Agda.
Zatrzymanie problemem stwierdza, że nie jest możliwe, aby zrobić to dla ogólnego programu .
źródło
To przypomina mi nerdowską koszulę, którą widziałem: na świecie jest 10 rodzajów ludzi. Ci, którzy znają binarny, a ci, którzy nie.
Może to być także gra polegająca na tym, że czasami listy są indeksowane 0. $ var = array („First”, „Second”, „Third”); I możesz uzyskać dostęp do tej listy jako takiej: $ var [0] = 'First' $ var [1] = 'Second' $ var [2] = 'Third'
Tak więc dosłowny indeks tablicy 2 wskazuje na indeks „Trzeci”.
źródło
Jest to już wyjaśnione innymi słowy, ale nie tak jasno, jak myślę, że powinno być. Oznacza to po prostu, że spróbujesz w obie strony, będą miały błędy, a na koniec naprawisz błędy i będziesz mieć program bezbłędny. Porównaj z innym cytatem:
(Ewentualnie możesz to przeczytać, jak powiedział Pierre (co uważam za odcinek). (Trzeci sposób, który nie istnieje w domenie, działa.) Tak jak powiedziałem, jest to odcinek, ale prawda.
źródło
To ten sam cytat, za pomocą którego mój tata mówi mi, kiedy robię wymówki. Powiedzenie zwykle brzmi: „Historia ma 3 strony. Ich strona, Twoja strona i prawa / prawdziwa / poprawna strona”.
Umieszczając to w kontekście rozwoju (i będąc testerem oprogramowania przez prof.), Powiedziałbym, ponieważ istnieje tak wiele sposobów na kodowanie czegoś, co miałoby sens, mówiąc: „Istnieją trzy strony kodowania. Twój kod, ich kod i Refaktoryzowany kod ”.
Myślę, że dzieje się tak, ponieważ programiści / programiści mają tendencję do refaktoryzacji, gdy produkt staje się stabilny, co jest w większości za późno, ale przez większość czasu refaktor jest robiony w celu poprawy czegoś, czego ty i kolega nie zrobili tak dobrze w pierwszej kolejności.
Mam nadzieję że to pomoże.
źródło
Myślę, technicznie rzecz biorąc, że można napisać bezbłędny nietrywialny program, ale z powodu problemu zatrzymania nie można udowodnić, że jest wolny od błędów. Tak więc należy pracować przy założeniu, że wszystkie programy zawierają błędy, ponieważ nie można udowodnić inaczej.
http://en.wikipedia.org/wiki/Halting_problem
Aktualizacja: możesz udowodnić, że określony algorytm zwróci prawidłowe odpowiedzi, ale to nie to samo, co udowodnienie, że jest całkowicie poprawny. http://en.wikipedia.org/wiki/Correctness_(computer_science )
Chodzi mi jednak o to, że cytat odnosi się do faktu, że należy założyć, że program zawsze zawiera błędy i próbuje wyjaśnić, dlaczego tak jest. http://en.wikipedia.org/wiki/Software_bug#Bug_management
źródło
Jako dodatkowy wgląd, „dwa sposoby” mogą odnosić się do cytatu Tony'ego Hoare'a :
Zastanów się nad tym trochę, a zobaczysz, że mówi to samo: jeśli twoje oprogramowanie nie jest trywialne, zawiera błędy (ale komplikuj je wystarczająco i nie będą to oczywiste błędy).
źródło