Ich würde argumentieren, dass Metastrukturen, Module, Frameworks, Plattformen und Services alle übergeordnete Feature-Gruppierungen als Klassen sind. Meine Hierarchie der Abstraktionen von Programmiersystemen:
- Dienstleistungen
- Plattformen, Lösungsstapel
- Frameworks
- Module, Pakete
- Metastrukturen: Metaklassen, Funktionen höherer Ordnung, Generika, Vorlagen, Merkmale, Aspekte, Dekoratoren
- Objekte, Klassen, Datentypen
- Funktionen, Prozeduren, Unterprogramme
- Kontrollstrukturen
- Zeilen von Code
Metastrukturen wie Metaklassen ,
Funktionen höherer Ordnung und
Generika
verleihen Basisklassen, Funktionen, Datentypen und Dateninstanzen eine klare Abstraktion. Merkmale, Aspekte und Dekoratoren sind neuere Mechanismen zum Kombinieren von Code-Features und zum "Beschleunigen" anderer Klassen und Funktionen.
Sogar Vor-Objekt-Sprachen hatten Module und Pakete, so dass es fraglich sein könnte, sie über Klassen zu setzen. Weil sie diese Klassen und Metastrukturen enthalten, rangiere ich sie höher.
Frameworks sind die beste Antwort - sie orchestrieren mehrere Klassen, Metastrukturen, Module, Funktionen usw., um anspruchsvolle Abstraktionen auf hoher Ebene bereitzustellen. Und doch arbeiten Frameworks fast ausschließlich im Bereich der Programmierung.
Lösungsstacks oder -plattformen kombinieren im Allgemeinen mehrere Frameworks, Subsysteme oder Komponenten in einer Umgebung, um mehrere Probleme zu lösen.
Schließlich gibt es Dienste, die häufig als Web- oder Netzwerkdienste bereitgestellt werden. Hierbei handelt es sich um Architekturen, Frameworks, Lösungsstacks oder Anwendungsfunktionen, die als vollständige Bundles bereitgestellt werden. Ihre Interna sind oft undurchsichtig und legen in erster Linie Administrator-, Programmier- und Benutzeroberflächen offen. PaaS und SaaS sind gängige Beispiele.
Nun, diese Entwicklung ist aus einigen Gründen möglicherweise nicht ganz zufriedenstellend. Erstens macht es eine ordentliche lineare Abfolge oder Hierarchie von Dingen, die nicht perfekt linear oder hierarchisch sind. Es behandelt einige Abstraktionen wie "Stacks" und Service, die nicht vollständig unter der Kontrolle des Entwicklers stehen. Und es setzt keinen neuen magischen Elfenstaub fest. (Spoiler: Es gibt keinen magischen Elfenstaub. )
Ich denke , dass es ein Fehler ist nur für neue Abstraktion aussehen Ebene . Alle, die ich oben aufgeführt habe, gibt es schon seit Jahren , auch wenn sie nicht alle so prominent oder populär waren, wie sie jetzt sind. Und im Laufe der Jahre haben sich die Abstraktionen auf allen Codierungsebenen verbessert. Wir haben jetzt allgemeine, generische Sammlungen, nicht nur Arrays. Wir durchlaufen Sammlungen, nicht nur Indexbereiche. Wir haben Listenverständnisse und Listenfilter- und Kartenoperationen. Viele Sprachfunktionen können eine variable Anzahl von Argumenten und / oder Standardargumenten haben. Und so weiter. Wir erhöhen die Abstraktion auf jeder Ebene, daher ist das Hinzufügen weiterer Ebenen keine Voraussetzung für die Erhöhung der gesamten Abstraktionsebene.