Verfahrensprogrammierung

Verfahrensprogrammierung kann manchmal als ein Synonym für die Befehlsform-Programmierung verwendet werden (das Spezifizieren der Schritte, die das Programm machen muss, um den gewünschten Staat zu erreichen), aber kann sich auch (als in diesem Artikel) zu einem Programmierparadigma beziehen, ist auf strukturierte Programmierung zurückzuführen gewesen, die auf dem Konzept des Verfahren-Anrufs gestützt ist. Verfahren, auch bekannt als Routinen, Unterprogramme, Methoden, oder Funktionen (um mit mathematischen Funktionen nicht verwirrt, aber zu denjenigen ähnlich zu sein, die in der funktionellen Programmierung verwendet sind), enthalten einfach eine Reihe von rechenbetonten Schritten, ausgeführt zu werden. Jedes gegebene Verfahren könnte an jedem Punkt während einer Ausführung eines Programms, einschließlich durch andere Verfahren oder es genannt werden.

Verfahren und Modularität

Modularität ist besonders in großen, komplizierten Programmen allgemein wünschenswert. Eingänge werden gewöhnlich syntaktisch in der Form von Argumenten und den als Rückwerte gelieferten Produktionen angegeben.

Scoping ist eine andere Technik, die hilft, Verfahren stark modular zu halten. Es hält das Verfahren davon ab, auf die Variablen anderer Verfahren (und umgekehrt), einschließlich vorheriger Beispiele von sich ohne ausführliche Genehmigung zuzugreifen.

Weniger Modulverfahren, die häufig in kleinen oder schnell geschriebenen Programmen verwendet sind, neigen dazu, mit einer Vielzahl von Variablen in der Ausführungsumgebung aufeinander zu wirken, die andere Verfahren auch modifizieren könnten.

Wegen der Fähigkeit, eine einfache Schnittstelle anzugeben, geschlossen zu sein, und wiederverwendet zu werden, sind Verfahren ein günstiges Fahrzeug, um Stücke des Codes geschrieben von verschiedenen Leuten oder verschiedenen Gruppen, einschließlich durch die Programmierung von Bibliotheken zu machen.

Vergleich mit der befehlenden Programmierung

Verfahrensprogrammiersprachen sind auch befehlende Sprachen, weil sie auf den Staat der Ausführungsumgebung anspielen. Das konnte irgendetwas von Variablen sein (der Verarbeiter-Registern entsprechen kann) zu etwas wie die Position der "Schildkröte" auf der Firmenzeichen-Programmiersprache.

Vergleich mit der objektorientierten Programmierung

Der Fokus der Verfahrensprogrammierung soll eine Programmieraufgabe in eine Sammlung von Variablen, Datenstrukturen und Unterprogrammen brechen, wohingegen in der objektorientierten Programmierung davon eine Programmieraufgabe in Datentypen (Klassen) brechen soll, die Verhalten (Methoden) mit Daten (Mitglieder oder Attribute) vereinigen. Die wichtigste Unterscheidung ist, wohingegen Verfahrensprogrammierung Verfahren verwendet, um auf Datenstrukturen zu funktionieren, stopft objektorientierte Programmierung die zwei zusammen so ein "Gegenstand", der ein Beispiel einer Klasse ist, funktioniert auf seiner "eigenen" Datenstruktur.

Nomenklatur ändert sich zwischen den zwei, obwohl sie ähnliche Semantik haben:

Sieh Algorithmen + Datenstrukturen = Programme.

Vergleich mit der funktionellen Programmierung

Die Grundsätze der Modularität und des Codewiedergebrauchs auf praktischen funktionellen Sprachen sind im Wesentlichen dasselbe als auf Verfahrenssprachen, da sie beide Stamm von der strukturierten Programmierung. Also zum Beispiel:

  • Verfahren entsprechen Funktionen. Beide erlauben den Wiedergebrauch desselben Codes in verschiedenen Teilen der Programme, und an verschiedenen Punkten seiner Ausführung.
  • Aus dem gleichen Grunde entsprechen Verfahren-Anrufe zur Funktionsanwendung.
  • Funktionen und ihre Beschwörungen werden von einander auf dieselbe Weise durch den Gebrauch von Funktionsargumenten modular getrennt, geben Werte und variable Spielraume zurück.

Der Hauptunterschied zwischen den Stilen ist, dass funktionelle Programmiersprachen entfernen oder mindestens die befehlenden Elemente der Verfahrensprogrammierung bagatellisieren. Die Merkmalsreihe von funktionellen Sprachen wird deshalb entworfen, um Schreiben-Programme so viel wie möglich in Bezug auf reine Funktionen zu unterstützen:

  • Wohingegen die Verfahrenssprachmusterausführung des Programms als eine Folge von befehlenden Befehlen, die geteilte staatliche, funktionelle Programmiersprache-Musterausführung als die Einschätzung von komplizierten Ausdrücken implizit verändern können, die nur von einander in Bezug auf Argumente und Rückwerte abhängen. Deshalb können funktionelle Programme eine freiere Ordnung der Codeausführung haben, und die Sprachen können wenig Kontrolle über die Ordnung anbieten, in der verschiedene Teile des Programms durchgeführt werden. (Zum Beispiel werden die Argumente für eine Verfahren-Beschwörung im Schema in einer willkürlichen Ordnung durchgeführt.)
  • Funktionelle Programmiersprache-Unterstützung (und verwenden schwer), fungiert erster Klasse, anonyme Funktionen und Verschlüsse.
  • Funktionelle Programmiersprachen neigen dazu, sich auf die Schwanz-Anruf-Optimierung und höherwertigen Funktionen statt befehlender sich schlingender Konstruktionen zu verlassen.

Viele funktionelle Sprachen sind tatsächlich jedoch unrein funktionell und bieten befehlende/verfahrensrechtliche Konstruktionen an, die dem Programmierer erlauben, Programme im Verfahrensstil, oder in einer Kombination von beiden Stilen zu schreiben. Es ist für den Code des Eingangs/Produktion auf funktionellen Sprachen üblich, in einem Verfahrensstil geschrieben zu werden.

Dort bestehen Sie einige esoterische funktionelle Sprachen (wie Unlambda), die sich strukturierter Programmiermoralprinzipien enthalten wegen, schwierig zum Programm in zu sein (und deshalb herausfordernd). Diese Sprachen sind die Ausnahme zum Übereinstimmungsbereich zwischen verfahrensrechtlichen und funktionellen Sprachen.

Vergleich mit der Logikprogrammierung

In der Logikprogrammierung ist ein Programm eine Reihe von Propositionen, und Berechnung wird durchgeführt, indem sie versucht wird, Kandidat-Lehrsätze zu beweisen. Aus diesem Gesichtspunkt sind Logikprogramme Aussage-, sich konzentrierend, was das Problem, aber nicht darauf ist, wie man es löst.

Jedoch behandelt die rückwärts gerichtete vernünftig urteilende Technik, die durch die SLD Entschlossenheit durchgeführt ist, verwendet, um Probleme auf Logikprogrammiersprachen wie Einleitung zu beheben, Programme als Verfahren der Absicht-Verminderung. So Klauseln der Form:

:

haben Sie eine Doppelinterpretation, beide als Verfahren

:to zeigen/lösen, zeigen/lösen und … und

und als logische Implikationen:

:.

Erfahrene Logikprogrammierer verwenden die Verfahrensinterpretation, um Programme zu schreiben, die wirksam und effizient sind, und sie die Aussageinterpretation verwenden, um zu helfen, sicherzustellen, dass Programme richtig sind.

Siehe auch

Außenverbindungen


Macht ist untergegangen / Index von Pareto
Impressum & Datenschutz