Es gibt ein Zitat von Alan J. Perlis , das besagt:
Es gibt zwei Möglichkeiten, fehlerfreie Programme zu schreiben. nur der dritte funktioniert.
Ich habe dieses Zitat kürzlich von meinem Freund gehört und konnte die tiefere Bedeutung dahinter nicht verstehen.
Worüber spricht Perlis hier?
bug
quotations
ykombinator
quelle
quelle
Antworten:
Es gibt also wirklich keine fehlerfreien Programme. Ein tiefgreifendes Zitat über Möglichkeiten, Fehler mit einem Fehler selbst zu vermeiden, ist Parodie.
quelle
Es gibt keinen dritten Weg.
quelle
Ich werde mit einem anderen Zitat antworten ...
;-)
quelle
Wie viele andere Antworten bereits gezeigt haben, gibt es keine Möglichkeit, ein fehlerfreies Programm zu schreiben .
Was ich jedoch hervorheben möchte, ist die potenzielle Metanatur des Zitats. Es ist im Wesentlichen ein Fehler außerhalb der Grenzen. In der ersten Aussage definiert er das Universum oder die "Liste" mit nur zwei Möglichkeiten oder Elementen. In der zweiten Aussage verweist er jedoch auf eine dritte. Welches ist absurd! Sogar illegal! Ein drittes Element mit einer Grenze von zwei Elementen ist selbst ein Fehler.
Wirklich tiefgreifend, dass das Zitat das Wesentliche, auf das es sich bezieht, demonstrieren kann.
quelle
Dies bedeutet, dass alle nicht trivialen Programme Fehler aufweisen. Es ist nur eine lustige Art zu sagen, dass es keine Möglichkeit gibt, ein fehlerfreies Programm zu schreiben.
quelle
Es ist möglich, fehlerfreie Programme zu schreiben, auch nicht triviale, und diese sogar als richtig zu beweisen. Betrachten Sie zum Beispiel Sprachen wie Coq, Epigram oder Agda, in denen dies geschieht.
Das Problem des Anhaltens besagt, dass dies für das allgemeine Programm nicht möglich ist .
quelle
Das erinnert mich an ein Nerd-Shirt, das ich gesehen habe: Es gibt 10 Arten von Menschen auf der Welt. Diejenigen, die binär wissen und diejenigen, die nicht.
Es könnte auch ein Spiel auf die Tatsache sein, dass Listen manchmal mit 0 indiziert sind. $ var = array ('Erste', 'Zweite', 'Dritte'); Und Sie können auf diese Liste als solche zugreifen: $ var [0] = 'Erste' $ var [1] = 'Zweite' $ var [2] = 'Dritte'
Der Literal-Array-Index 2 zeigt also auf den "Dritten" -Index.
quelle
Dies wird bereits mit anderen Worten erklärt, aber nicht so klar, wie ich es für richtig halte. Es bedeutet einfach, dass Sie beide Möglichkeiten ausprobieren werden, sie werden Fehler haben, und schließlich werden Sie Ihre Fehler beheben und ein fehlerfreies Programm haben. Vergleichen Sie mit einem anderen Zitat:
(Alternativ können Sie dies lesen, wie Pierre sagte (was ich für eine Strecke halte). (Der dritte Weg, der in der Domäne nicht existiert, funktioniert.) Wie ich sagte, es ist eine Strecke, aber wahr.
quelle
Dies ist das gleiche Zitat, das mein Vater verwendet, um mir zu sagen, wenn ich Ausreden mache. Das Sprichwort lautet: "Eine Geschichte hat drei Seiten. Ihre Seite, Ihre Seite und die richtige / wahre / richtige Seite."
Wenn ich dies mit der Entwicklung in Zusammenhang bringe (und ein Software-Tester von Prof. Bin), würde ich sagen, da es so viele Möglichkeiten gibt, etwas zu codieren, wäre es sinnvoll, mit "Das Codieren hat drei Seiten. Ihr Code, ihr Code und der überarbeitete Code. "
Ich denke, das liegt daran, dass Programmierer / Entwickler dazu neigen, das Produkt umzugestalten, sobald es stabil ist, was meistens zu spät ist. Meistens wird der Umzug jedoch durchgeführt, um etwas zu verbessern, was Sie und Ihr Kumpel anfangs nicht so gut gemacht haben.
Hoffe das hilft.
quelle
Ich denke, technisch gesehen könnte man ein fehlerfreies, nicht triviales Programm schreiben, aber aufgrund des Halteproblems ist es unmöglich zu beweisen, dass es fehlerfrei ist. Man muss also davon ausgehen, dass alle Programme Fehler aufweisen, da es unmöglich ist, das Gegenteil zu beweisen.
http://en.wikipedia.org/wiki/Halting_problem
Update: Sie können nachweisen, dass ein bestimmter Algorithmus die richtigen Antworten liefert. Dies ist jedoch nicht das Gleiche wie der Nachweis, dass er vollständig korrekt ist. http://en.wikipedia.org/wiki/Correctness_(computer_science )
Mein Punkt war jedoch, dass sich das Zitat auf die Tatsache bezieht, dass man davon ausgehen muss, dass ein Programm immer Fehler aufweist und zu erklären versucht, warum dies der Fall ist. http://en.wikipedia.org/wiki/Software_bug#Bug_management
quelle
Als zusätzliche Einsicht könnten die "zwei Wege" ein Hinweis auf dieses Zitat von Tony Hoare sein :
Meditiere ein wenig darüber und du wirst sehen, dass er dasselbe sagt: Wenn deine Software nicht trivial ist, hat sie Fehler (aber kompliziere sie genug und sie werden keine offensichtlichen Fehler sein).
quelle