Verfahrensprogrammierung

Verfahrensprogrammierung ist ein Programmierparadigma, abgeleitet von Imperative Programmierung,[1] Basierend auf dem Konzept der Verfahrensanruf. Verfahren (eine Art Routine oder Subroutine) Enthält einfach eine Reihe von rechnerischen Schritten, die durchgeführt werden sollen. Ein bestimmtes Verfahren kann zu jedem Zeitpunkt während der Ausführung eines Programms aufgerufen werden, einschließlich anderer Verfahren oder sich selbst. Die ersten großen prozeduralen Programmiersprachen erschienen um 1957–1964, einschließlich Forran, Algol, Cobol, Pl/i und BASIC.[2] Pascal und C wurden um 1970–1972 veröffentlicht.

Computerprozessoren Bieten Sie Hardwareunterstützung für prozedurale Programmierung über a Stapelregister und Anweisungen für Anrufverfahren und von ihnen zurückkehren. Die Hardware -Unterstützung für andere Arten von Programmierungen ist möglich, aber kein Versuch war wirtschaftlich erfolgreich (zum Beispiel Lisp -Maschinen oder Java -Prozessoren).[widersprüchlich]

Verfahren und Modularität

Modularität ist im Allgemeinen wünschenswert, insbesondere in großen, komplizierten Programmen. Eingänge werden normalerweise syntaktisch in Form von angegeben Argumente und die Ausgaben als geliefert als Rückgabewerte.

Scoping ist eine weitere Technik, die die Verfahren modular hält. Es verhindert, dass das Verfahren ohne explizite Genehmigung auf die Variablen anderer Verfahren (und umgekehrt), einschließlich früherer Fälle von sich selbst, zugreift.

Weniger modulare Verfahren, die häufig in kleinen oder schnell schriftlichen Programmen verwendet werden, neigen dazu, mit einer großen Anzahl von zu interagieren Variablen in der Ausführung Umgebung, welche anderen Verfahren auch ändern können.

Aufgrund der Fähigkeit, eine einfache Schnittstelle anzugeben, in sich geschlossen und wiederverwendet zu werden, sind Verfahren ein bequemes Mittel, um Codesteile zu erstellen, die von verschiedenen Personen oder verschiedenen Gruppen geschrieben wurden, auch durch bis durch durch Programmierbibliotheken.

Vergleich mit anderen Programmierparadigmen

Imperative Programmierung

Prozedurale Programmiersprachen sind auch Imperativ Sprachen, weil sie explizite Hinweise auf den Zustand der Ausführungsumgebung geben. Dies könnte alles sein von Variablen (was entsprechen kann Prozessorregister) zu so etwas wie der Position der "Schildkröte" in der Logo -Programmiersprache.

Oft werden die Begriffe "prozeduraler Programmieren" und "Imperative Programmierung" synonym verwendet. Die prozedurale Programmierung hängt jedoch stark ab Blöcke und Umfangwährend die imperative Programmierung als Ganzes solche Funktionen aufweist oder nicht. Daher verwenden prozedurale Sprachen im Allgemeinen reservierte Wörter, die auf Blöcken reagieren, wie z. wenn, während, und zum, implementieren Steuerfluss, wohingegen nicht strukturiert Imperative Sprachen verwenden gehe zu Aussagen und Zweigtische Für den gleichen Zweck.

Objekt orientierte Programmierung

Der Schwerpunkt der prozeduralen Programmierung liegt auf der Aufteilung einer Programmieraufgabe in eine Sammlung von Variablen, Datenstrukturen, und Unterroutinenwährend Objekt orientierte Programmierung Es soll eine Programmieraufgabe in Objekte unterteilt, die Verhalten (Methoden) und Daten (Mitglieder oder Attribute) mithilfe von Schnittstellen aufdecken. Die wichtigste Unterscheidung besteht darin, dass die prozedurale Programmierung Verfahren verwendet, um Datenstrukturen zu operieren, die objektorientierten Programmierungen die beiden zusammenbündeten, also ein "Objekt", was ein ist Beispiel einer Klasse, arbeitet in seiner "eigenen" Datenstruktur.[3]

Die Nomenklatur variiert zwischen den beiden, obwohl sie ähnliche Semantik aufweisen:

Prozedural Objektorientierter
Verfahren Methode
Aufzeichnung Objekt
Modul Klasse
Verfahrensanruf Nachricht

Funktionelle Programmierung

Die Prinzipien der Modularität und der Wiederverwendung von Code in Praktikum funktional Sprachen sind im Grunde genauso dieselbe wie in prozeduralen Sprachen, da beide aus stammen Strukturierte Programmierung. Also zum Beispiel:

  • Prozeduren entsprechen Funktionen. Beide ermöglichen die Wiederverwendung des gleichen Code in verschiedenen Teilen der Programme und an verschiedenen Punkten seiner Ausführung.
  • Aus dem gleichen Token entsprechen Prozeduraufrufe der Funktionsanwendung.
  • Funktionen und ihre modular voneinander getrennt voneinander durch die Verwendung von Funktionsargumenten, Rückgabetwerten und variablen Scopes.

Der Hauptunterschied zwischen den Stilen besteht darin, dass funktionale Programmiersprachen die imperativen Elemente der prozeduralen Programmierung entfernen oder zumindest untertauchen. Der Funktionssatz von funktionalen Sprachen ist daher so konzipiert, dass das Schreiben von Programmen wie möglich in Bezug auf reine Funktionen:

  • Während prozedurale Sprachen die Modellausführung des Programms als Abfolge von imperativen Befehlen, die den gemeinsamen Zustand implizit verändern können, die Modellausführung der funktionalen Programmiersprachen als Bewertung komplexer Ausdrücke, die nur in Bezug auf Argumente und Rückgabewerte voneinander abhängen, implizit verändern können. Aus diesem Grund können Funktionsprogramme eine kostenlose Reihenfolge der Codeausführung haben, und die Sprachen bieten möglicherweise eine geringe Kontrolle über die Reihenfolge, in der verschiedene Teile des Programms ausgeführt werden. (Zum Beispiel die Argumente zu einem Verfahrensaufruf in Planen werden in einer willkürlichen Reihenfolge ausgeführt.)
  • Funktionelle Programmiersprachen unterstützen (und verwenden stark) erstklassige Funktionen, Anonyme Funktionen und Schließungenobwohl diese Konzepte in neuere prozedurale Sprachen aufgenommen werden.
  • Funktionelle Programmiersprachen neigen dazu, sich auf Schwanzanrufoptimierung und Funktionen höherer Ordnung anstelle von imperativen Schleifenkonstrukten.

Viele funktionale Sprachen sind jedoch tatsächlich unheilbar funktionsfähig und bieten im Verfahrenstil oder in einer Kombination aus beiden Stilen im Verfahrenstil oder in einer Kombination aus beiden Stilen. Es ist üblich für Input-Output Code in funktionalen Sprachen, die in einem prozeduralen Stil geschrieben werden sollen.

Es gibt ein paar Esoterisch Funktionssprachen (wie Unambda) Das mies Strukturierte Programmierung Vorschriften, um schwer zu programmieren (und daher herausfordernd). Diese Sprachen sind die Ausnahme von der Gemeinsamkeit zwischen prozeduralen und funktionalen Sprachen.

Logikprogrammierung

Im LogikprogrammierungEin Programm ist eine Reihe von Räumlichkeiten, und die Berechnung wird durch Versuch durchgeführt, Kandidaten Theorems zu beweisen. Aus dieser Sicht sind Logikprogramme deklarativsich auf das Problem konzentrieren, und wie man es löst.

Allerdings die Rückwärtsreden Technik, implementiert von SLD -Resolution, verwendet, um Probleme in logischen Programmiersprachen zu lösen, wie z. Prolog, behandelt Programme als Zielreduktionsverfahren. So Klauseln der Form:

H:- b1, …, Bn.

eine doppelte Interpretation haben, beide als Verfahren

zu zeigen/lösen Hzeigen/lösen B1 und und Bn

und als logische Implikationen:

B1 und… und bn impliziert h.

Erfahrene Logikprogrammierer verwenden die prozedurale Interpretation, um Programme zu schreiben, die effektiv und effizient sind, und die deklarative Interpretation, um sicherzustellen, dass die Programme korrekt sind.

Siehe auch

Verweise

  1. ^ "Programmierparadigmen".
  2. ^ "Willkommen bei IEEE XPLORE 2.0: Verwendung prozeduraler Programmiersprachen zur Kontrolle von Produktionssystemen". Verfahren. Die siebte IEEE -Konferenz über künstliche Intelligenzanwendung. ieeexplore.ieee.org. doi:10.1109/caia.1991.120848. S2CID 58175293.
  3. ^ Stevenson, Joseph (August 2013). "Prozedurale Programmierung gegen objektorientierte Programmierung". neonbrand.com. Abgerufen 2013-08-19.

Externe Links