Bitte beachten Sie, dass Harpers Anforderungen für den Unterricht eines CS-Einführungslehrplans sich stark von den Anforderungen eines realen Projekts unterscheiden . Seine Aufgabe ist es, Neulingen grundlegende Konzepte (zB Modularität, Parallelität, Induktion) beizubringen. Daher ist es sehr wichtig, dass die gewählte Sprache (und das gewählte Paradigma) diese Konzepte mit möglichst wenig Zeremonie (syntaktisch und konzeptuell) zum Ausdruck bringen kann. Vertrautheit, Werkzeugunterstützung, verfügbare Bibliotheken, Ausführungsleistung usw. spielen in diesem Zusammenhang keine Rolle. Denken Sie also bitte daran, wenn Sie Folgendes berücksichtigen ...
Die Ansicht , dass OO ist anti-modular ergibt sich aus der großen Anzahl von Abhängigkeiten zu anderen Klassen auch Objekte von gut gestaltete Klassen mit am Ende neigen. Dass dies ein Problem ist - auch in den Augen der Befürworter von OO - wird deutlich, wenn man sich die Verbreitung von Frameworks , Artikeln, Büchern und Blogposts für die Abhängigkeitsinjektion in den letzten Jahren ansieht (auch der Anstieg von Mocks und Stubs ist interessant).
Ein weiterer Hinweis ist die Bedeutung von Entwurfsmustern und die Komplexität ihrer Implementierung - im Vergleich zu einigen anderen Programmierparadigmen - z. B. Fabriken, Builder, Adapter, Brücke, Dekorateur, Fassade, Befehl, Iterator, Mediator, Beobachter, Strategie und Vorlagenmethode und möglicherweise Die Zusammenstellungen haben alle in gewisser Weise mit der Verbesserung der Modularität von OO-Code zu tun.
Vererbung ist auch problematisch (z. B. Fragile Base Class Problem ) und (Subtyp-) Polymorphismus verführt dazu, die Implementierung eines Algorithmus zwischen mehreren Klassen zu beschleunigen, wobei Änderungen die gesamte Vererbungskette durchdringen können (auf und ab!).
Die Anklage, antiparallel zu sein, hängt mit der Betonung des Zustands im Vergleich zur Berechnung zusammen (auch bekannt als Mutabilität vs. Unveränderlichkeit). Ersteres macht es komplizierter, Abhängigkeiten von Teilberechnungen auszudrücken (was Harpers Annahme von Parallelität ist!), Da Sie normalerweise nicht aus dem Ort schließen können, an dem der Zustand verwaltet wird (auch bekannt als die Datei, in der die Instanzvariable deklariert ist), welche externen Akteure wird es zu welchem Zeitpunkt ändern.
Die Betonung auf Unveränderlichkeit und Berechnung erleichtert das Ausdrücken von Abhängigkeiten von Teilberechnungen erheblich, da es keine Zustandsverwaltung gibt, sondern nur Funktionen / Berechnungen, die an der Stelle kombiniert werden, an der Sie die Abhängigkeiten von Teilberechnungen ausdrücken möchten.