Am 5.1.2012 schrieb Manfred Broy an Hartmut Wedekind und mich:
…vieles, was Herr Kollege Wedekind (in einen noch nicht veröffentlichten Beitrag unter dem Titel ‚Das Springen in der Informatik‘) beobachtet, sehe ich ähnlich. Die Informatik sitzt gewissermaßen auf wackligen Stühlen, die Beine sind unterschiedlich lang, das Holz nicht immer sauber verleimt und ab und zu bricht eben ein Stuhl zusammen. Das Beispiel der Objektorientierten Programmierung, in der Objekt-Identifikatoren genau genommen nichts anderes als Adressen sind, die außerhalb des Rechners nun wirklich überhaupt keinen Sinn machen und das Fehlen von Primärschlüsseln, die einen anschaulichen Zusammenhang zwischen der gegenständlichen Welt und den gespeicherten Daten herstellen, ist ein Ärgernis, das mir selbst auch schon öfter untergekommen ist.
Viele der anderen Punkte finde ich auch wichtig und valide. Ich plädiere ohnehin dafür, dass Abstraktionen explizit erfasst werden sollten. Langfristig wäre meine Hoffnung, dass nur die fachlichen Abstraktionen ausgearbeitet werden müssen und aus denen dann die technischen Details (der "Code") generiert werden könnten, aber das ist eine andere Geschichte. Eine kleine Bemerkung muss ich natürlich noch loswerden. Wikipedia ist zwar immerhin ein interessantes Medium, aber eben leider auch häufig kein verlässlicher Ratgeber. Wie dort ‚Information Hiding‘ definiert ist, ist aus meiner Sicht eigenwillig und ein wenig schräg.
Einen Punkt muss ich Herrn Wedekind leider noch vorhalten. Seine Definition der Unabhängigkeit auf Seite 13 macht so keinen Sinn. Die Definition von Unabhängigkeit in logischer Form P -> ¬ (A ∨ ¬A) kann nicht ernst gemeint sein. Einfache Aussagenlogik zeigt, dass die Formel ¬ (A ∨ ¬A), die auf der rechten Seite des Pfeils steht, gern oft Konklusion genannt, gleichzusetzen ist mit ¬A ∧ A und das ist logisch äquivalent zu ‚false‘. Wenn aber aus P logisch ‚false‘ folgt, also P -> false, muss P auch ‚false‘ sein. Das ist ein etwas eigenartiger Begriff von Unabhängigkeit.
Hier sei noch angemerkt, das Thema der logischen Unabhängigkeit beschäftigt mich durch einen seltsamen Zufall seit einigen Wochen und Monaten, da mich die Frage interessiert was logische Unabhängigkeit von Anforderungen im Requirements Engineering bedeutet. Der Begriff ist wohl ein wenig komplizierter als Herr Wedekind das dargestellt hat.
Noch am selben Tag antwortete Hartmut Wedekind:
Als ich Ihre Zeilen in Sachen „Logische Unabhängigkeit“ las, geriet ich in Zweifel. Aber als ich dann in der Enzyklopädie von Jürgen Mittelstraß unter dem Stichwort „unabhängig (logisch)“ im 4. Band nachlas, war ich wieder ganz beruhigt.
Da steht verkürzt: Ein Satz S ist von einem Axiomensystem (Satzsystem) A unabhängig, wenn weder S noch ¬ S aus A logisch folgen. „Weder S noch ¬ S“ steht in der Konseqens (die Logiker schreiben Konseqens (den Folgesatz) mit „s“ am Ende. Das habe ich auch gerade wieder gelernt). Wie formuliert man nun die Konsequens „Weder S noch ¬ S“ in der Logik?
Das wird sehr schön in der kleinen Schrift von Vogt und Wehle „Die Logik als Spiegelbild der Welt“ gezeigt (siehe Link). Die gehen sogar auf den N-Operator meines so verehrten Philosophen Ludwig Wittgenstein ein. Wittgenstein wurde z. Z des Algol 60-Berichtes in der Informatik ganz groß mit seinem berühmten Satz herausgestellt „ Was sich überhaupt sagen lässt, lässt sich klar sagen; und wovon man nicht reden kann, darüber muss man schweigen“. Der Satz steht im Vorwort zum Tractatus. Ob unser Nestor der deutschen Informatik, F.L. Bauer, den Satz dahin gebracht hat? Bauer war in der Algol 60-Gruppe.
Der von Vogt und Wehle erwähnte Operator N(p,q) = weder p noch q = ¬ (p ∨ q) steht auch im Tractatus 6.001. Ich brauche nur q durch ¬ p zu ersetzen und erhalte ¬ (p ∨ ¬ p) oder in der obigen Schreibweise ¬ (S ∨ ¬ S) oder bei mir ¬ (A ∨ ¬ A). Das ist aber in der klassischen Logik in der Tat der Satz vom Widerspruch „¬ A ∧ A -> Falsch“ (nach de Morgan).
Das ist aber die Pointe. Die Logiker führen den Begriff „ unabhängig“ auf Falschheit zurück. Das ist so weit nichts Schlimmes. Für Logiker gilt dann aber auch „ ex falso sequitur quodlibet“, d. h. aus Falschem kann man Beliebiges, also alles (quodlibet) schließen. Oder aus dem Falschen folgt, bürgerlich gesprochen, alles oder gar nichts. Man nennt das auch Blabla. Das ist an die Adresse der Politiker. Oder in unserem Zusammenhang: Aus der physischen Speicherung (P) folgt für die Anwendung (A) nichts oder alles (quodlibet). Abstraktion ist aber logisch ganz etwas anderes. Den Punkt wollte ich machen.
Die Logiker sind schon komische Vögel. Sie führen den Begriff „Unabhängikeit“ auf „Beliebigkeit“ zurück. Irgendwie ist das „sexy“ würde man heute sagen, wenn man jung wäre. Logiker und sexy? Ich glaube, die Jugend bringt mich um, auf der Stelle, schon allein, weil ich ein für sie reserviertes Wort benutze.
Manfred Broy schrieb noch am 5.1.2012:
Ich schreibe für "aus A folgt S" als A |- S. Das Problem besteht in dem simplen Unterschied zwischen der Aussage P -> ¬ (A ∨ ¬A), die wie von mir begründet logisch mit P = false äquivalent ist und der Aussage, dass weder A |- P noch A |- ¬P gilt. Daraus lässt sich aber nicht ableiten, dass P = false gilt.
Lieber Herr Kollege Wedekind - hier irren Sie! Die Logiker führen den Begriff „unabhängig“ eben nicht auf Falschheit zurück, sondern auf Nichtableitbarkeit sowohl von Formel P als auch von Formel ¬P aus A. Es gilt zwar: Aus A |- P folgt |- A -> P. Aber aus der Aussage, dass A |- P nicht gilt, folgt die Aussage ¬(A -> P) nicht: Unter Missbrauch der logischen Symbole ausgedrückt ¬(P |- A) ≠ |- ¬(P -> A). Der Grund ist einfach: In der Herleitungsaussage steckt ein verborgener Allquantor. Enthalten A und P nur eine freie logische Variable x, so steht (Annahme der Vollständigkeit des Ableitungssystems) A |- P für die Aussage ∀ x: A -> P damit liefert ¬(A |- P) die Aussage ¬ ∀ x: A -> P und somit ∃ x: ¬(A -> P). Man könnte (fälschlicherweise) versucht sein zu schreiben ¬(A -> P) ∧ ¬(A -> ¬P) und erhält dann in der Tat einen Widerspruch A ∧ ¬P ∧ A ∧ P.
Ich bestehe darauf, dass ihre Übersetzung von: Ein Satz P ist von einem Axiomensystem (Satzsystem) A unabhängig, wenn weder S noch ¬P aus A logisch folgen zu P -> ¬ (A ∨ ¬A) nicht logisch korrekt ist.
Am 6.1.2012 antwortete Hartmut Wedekind:
Wenn ich die logische Unabhängigkeit über die Falschheit auf die Beliebigkeit bei Angabe der Quellen zurückführe, dann tue ich eigentlich nichts "Böses". Ich berichte bloß aus dem Reich der Logiker. Irren kann ich mich so gesehen gar nicht. Ich kann nur falsch berichten. Ansonsten, wenn ich richtig berichte, müssen Sie die Quellen, die ich heranziehe, angreifen. Das Überführen des Begriffs "Unabhängigkeit " auf den Begriff "Beliebigkeit " macht aber auch Sinn. Z.B. wenn ich sage: "Weil mein Sohn unabhängig von mir ist, kann er nach Belieben handeln" („Filius meus facit quodlibet“, würden die Lateiner sagen, "Ei, der mocht, was‘er will", sagt man so ungefähr auf Hessisch). Auch systemtechnisch ist es sinnvoll, Unabhängigkeit mit Beliebigkeit zu übersetzten. Z.B.: System B ist von System A unabhängig, wenn in B beliebig in Bezug auf A verfahren wird oder verfahren werden kann.
Wenn ich Ihren Text lese und ich das Ableitungszeichen |- sehe (manchmal schreibt man auch |-K und meint ableitbar im Kalkül K), kommen bei mir die Befürchtungen auf, dass Sie die Ebenen wechseln. Von der Logischen Semantik wandern Sie hinunter in die Welt der Logischen Kalküle oder der Logischen Syntax. Da wollte ich aber gar nicht hin. Denn das ist ein ehernes Gesetz der kalkül-orientierten Logiker (berühmt sind Frege, Hilbert, Gentzen, usw.), dass sie die Formeln, die die klassische Logische Semantik ihnen vorgibt, auch kalkülmäßig ableiten können müssen. Also z.B. auch das semantische Schema für "aus Falschem folgt Beliebiges" (A ∧ ¬ A) -> B, was ein allgemeingültiges Schlussschema ist, sogar konstruktiv.
Lieber Herr Broy: In Wirklichkeit ist das aber nur ein Nebenkriegsschauplatz in der Informatik. Logik ist nur eine Nebensache, aber natürlich für die Informatik eine wichtige Nebensache.
PS: In Ihrem Satz am Ende: „Ich bestehe darauf, dass ihre Übersetzung von: Ein Satz P ist von einem Axiomensystem (Satzsystem) A unabhängig, wenn weder S noch ¬P aus A logisch folgen zu P -> ¬ (A ∨ ¬A) nicht logisch korrekt ist” sollte P durch ¬ S ersetzt werden, und A sollte in den Vordersatz. Also: A -> ¬ (S ∨ ¬ S).
Am 10.1.2012 schrieb Manfred Broy:
ich denke, ich habe meinen Standpunkt genügend dargelegt. Es macht einen Unterschied, ob man meta-mathematisch über einen Kalkül, wie beispielsweise den Begriff "nicht ableitbar" redet (was in der formalen Sprache des Kalküls i.d.R. nicht formulierbar ist) oder innerhalb eines Kalküls Aussagen formuliert. Um in Ihrem Bild zu bleiben: Das Springen zwischen Ebenen (formale Sprache und Meta-Ebene) ist immer gefährlich.
Ob Logik eine Nebensache ist, kommt natürlich auf den Standpunkt an. Aus Sicht der Informatik finde ich, dass Logik etwas mehr ist als eine Nebensache. Es ist eher eine der Grundlagen und wie Sie auch in Ihrer Arbeit richtig schreiben, wenn in der Informatik Personen unterwegs sind, die diese Grundlage zu wenig verstehen, dann sind auch manche der Resultate zur Informatik nicht fundiert (siehe Java, UML, etc.).
Am 15.1.2012 schrieb mir Hartmut Wedekind:
Ich sag jetzt nichts mehr, obwohl ich noch stundenlang reden könnte. Herr Broy hat das letzte Wort. Basta!
Es ist amüsant zu lesen, wie sich Herr Broy über Java, UML und die Objektorientierung unterhält – die Themen, von denen er doch keine
AntwortenLöschenAhnung hat. Bereits 2002 hat er einen Versuch unternommen, die objektorientierte Programmierung kritisch zu untersuchen(siehe Manfred Broy, Johannes Siedersleben: Objektorientierte Programmierung
und Softwareentwicklung - Eine kritische Einschätzung. Informatik
Spektrum 25(1): 3-11 (2002)). Darauf bekam er eine wunderschöne Antwort von Herren Jähnichen und Herrmann (siehe Stefan Jähnichen, Stephan Herrmann: Was, bitte, bedeutet
Objektorientierung? Informatik Spektrum 25(4): 266-276 (2002)). Leider hat Herr Broy daraus nichts gelernt.