Es scheint hervorragend möglich zu sein, ein Typensystem zu erstellen, das die Leistungsmerkmale von Typen kategorisiert(z. B. "schnell / langsam für den seriellen Zugriff", "schnell / langsam für den wahlfreien Zugriff", "speichereffizient / ineffizient"). Diese Merkmale können abstrakte Typen sein, die so in die Hierarchie eingefügt werden, dass die konkreteren Typen von ihnen geerbt werden. Die Leistung eines Programms, das diese Typen verwendet, hängt jedoch von der Art und Weise ab, in der sie tatsächlich verwendet werden / auf die zugegriffen wird. Damit das Typsystem Aussagen über das Programm selbst treffen kann, muss die Verwendung (der Zugriff auf) diese Typen selbst als Typen dargestellt werden Dies würde bedeuten, auf die Verwendung integrierter Steuerungsstrukturen (z. B. for / while-Schleifen) zu verzichten und stattdessen Typen zu verwenden, die diese implementieren. Daher könnte die Hierarchie einen abstrakten Typ für seriellen Zugriff und einen Nachkommen-Listen-Seriell-Zugriff, Baum-Seriell, haben -Zugriffstypen und so weiter.Die Effizienz der Nutzung könnte dann zumindest teilweise durch die Kombination und Anwendung dieser Typen untereinander ausgedrückt werden.
In einer funktionalen Sprache wie Haskell - die sowieso fast keine Kontrollstrukturen hat - erscheint mir dies ziemlich praktisch und durchsetzbar. In Java, jedoch scheint ein solches System viel weniger erreichbar (nicht so viel von der Umsetzung von der Durchsetzbarkeit / Vertrauenswürdigkeit des Ergebnisses).
Mit Haskell können wir bereits definitiv angeben, wie viel von einem Programm rein ist, und es gibt Möglichkeiten, bestimmte Aktivitäten in versiegelten Kartons einzuschränken. Da Parallelität / Parallelität in Haskell über das Typsystem implementiert wird , könnte argumentiert werden, dass es bereits Teil des Weges dorthin ist (zu dem, was Sie wollen). Im Gegensatz dazu bieten imperative Sprachen (auch statisch typisierte wie Java) dem Codierer viele, viele Möglichkeiten, jeden Versuch zu untergraben.
if condition then expensive_operation else cheap_operation
?