Kann man sagen, dass der Unterschied zwischen imperativer und deklarativer Programmierung lediglich in der Abstraktionsebene liegt?


Antwort 1:

Irgendwie aber nicht wirklich. Es geht darum, wie viel Sie über die Maschine nachdenken müssen.

Die Bedeutung eines Imperativprogramms ist, was es mit der Maschine macht. Die Bedeutung einer Erklärung ist unabhängig davon, was sie angibt. Diese werden als "operative Semantik" bzw. "denotationale" Semantik bezeichnet. Betrachten Sie als Beispiel für ein Programm, das operativ übersichtlich ist, aber nichts Bestimmtes angibt, das folgende Fragment von BASIC: 10 GOTO 10. Im Gegensatz dazu ist klar, was der folgende Text bedeutet, aber keine Maschine dazu veranlasst alles im Besonderen: {“x”: 7} (es ist ein Objekt, dessen X-Eigenschaft den Wert 7 hat).

Sie können und sollten sowohl die operationellen als auch die denotationalen Bedeutungen Ihres Programms berücksichtigen. In Imperativ C können Sie beispielsweise verstehen, was x + 1 ist und nicht, was es tut. Und in deklarativem Haskell müssen Sie das Betriebsverhalten von foldl (+) [1..10000000] verstehen (da es wahrscheinlich keinen Speicher mehr gibt).

(Es gibt übrigens mehr Möglichkeiten, die Bedeutung eines Computerprogramms zu verstehen als diese. Es ist ein aktiv untersuchter Bereich.)


Antwort 2:

Es ist nicht sinnvoll zu sagen. Was weg abstrahiert wird, ist ein sehr wichtiger Teil der Definition von deklarativ.

Die deklarative Programmierung definiert, was sein soll und geht nicht direkt darauf ein, wie dies erreicht wird. Dies erfordert Unterstützung von der Laufzeit, dem Framework und / oder den Bibliotheken. Imperative Programmierung konzentriert sich darauf, wie Dinge implementiert werden, und erfordert zusätzliche Abstraktion, um die Ebene „Wie Dinge sein sollten“ zu erreichen. Diese beiden Ansätze sind im Wesentlichen gegensätzlich.


Antwort 3:

Es ist nicht sinnvoll zu sagen. Was weg abstrahiert wird, ist ein sehr wichtiger Teil der Definition von deklarativ.

Die deklarative Programmierung definiert, was sein soll und geht nicht direkt darauf ein, wie dies erreicht wird. Dies erfordert Unterstützung von der Laufzeit, dem Framework und / oder den Bibliotheken. Imperative Programmierung konzentriert sich darauf, wie Dinge implementiert werden, und erfordert zusätzliche Abstraktion, um die Ebene „Wie Dinge sein sollten“ zu erreichen. Diese beiden Ansätze sind im Wesentlichen gegensätzlich.


Antwort 4:

Es ist nicht sinnvoll zu sagen. Was weg abstrahiert wird, ist ein sehr wichtiger Teil der Definition von deklarativ.

Die deklarative Programmierung definiert, was sein soll und geht nicht direkt darauf ein, wie dies erreicht wird. Dies erfordert Unterstützung von der Laufzeit, dem Framework und / oder den Bibliotheken. Imperative Programmierung konzentriert sich darauf, wie Dinge implementiert werden, und erfordert zusätzliche Abstraktion, um die Ebene „Wie Dinge sein sollten“ zu erreichen. Diese beiden Ansätze sind im Wesentlichen gegensätzlich.