Imperative Programmierung – Wikipedia

In der Informatik zwingende Programmierung ist ein Programmierparadigma, das Anweisungen verwendet, die den Status eines Programms ändern. Ähnlich wie die imperative Stimmung in natürlichen Sprachen Befehle ausdrückt, besteht ein imperatives Programm aus Befehlen, die der Computer ausführen muss. Imperative Programmierung konzentriert sich auf die Beschreibung Wie Ein Programm wird ausgeführt.

Der Begriff wird häufig im Gegensatz zur deklarativen Programmierung verwendet, die sich auf konzentriert Was Das Programm sollte ohne Angabe von Gründen ausgeführt werden Wie Das Programm sollte das Ergebnis erzielen.

Imperative und prozedurale Programmierung[edit]

Die prozedurale Programmierung ist eine Art der imperativen Programmierung, bei der das Programm aus einer oder mehreren Prozeduren (auch als Unterprogramme oder Funktionen bezeichnet) aufgebaut ist. Die Begriffe werden oft als Synonyme verwendet, aber die Verwendung von Prozeduren hat einen dramatischen Einfluss darauf, wie zwingende Programme erscheinen und wie sie aufgebaut sind. Eine stark prozedurale Programmierung, bei der Statusänderungen auf Prozeduren lokalisiert oder auf explizite Argumente und Rückgaben von Prozeduren beschränkt sind, ist eine Form der strukturierten Programmierung. Ab den 1960er Jahren wurden strukturierte Programmierung und modulare Programmierung im Allgemeinen als Techniken zur Verbesserung der Wartbarkeit und der Gesamtqualität von Imperativprogrammen gefördert. Die Konzepte der objektorientierten Programmierung versuchen, diesen Ansatz zu erweitern.

Die prozedurale Programmierung könnte als Schritt in Richtung einer deklarativen Programmierung angesehen werden. Ein Programmierer kann häufig anhand der Namen, Argumente und Rückgabetypen von Prozeduren (und der zugehörigen Kommentare) erkennen, was eine bestimmte Prozedur tun soll, ohne unbedingt die Details zu betrachten, wie sie ihr Ergebnis erzielt. Gleichzeitig ist ein vollständiges Programm immer noch unabdingbar behebt die auszuführenden Anweisungen und deren Ausführungsreihenfolge weitgehend.

Begründung und Grundlagen der imperativen Programmierung[edit]

Die Hardware-Implementierung fast aller Computer ist unerlässlich.[note 1] Nahezu die gesamte Computerhardware ist für die Ausführung von Maschinencode ausgelegt, der dem Computer eigen ist und im imperativen Stil geschrieben ist. Aus dieser einfachen Perspektive wird der Programmstatus durch den Inhalt des Speichers definiert, und die Anweisungen sind Anweisungen in der Muttersprache des Computers. Übergeordnete imperative Sprachen verwenden Variablen und komplexere Aussagen, folgen jedoch immer noch demselben Paradigma. Rezepte und Prozess-Checklisten sind zwar keine Computerprogramme, aber auch bekannte Konzepte, die im Stil der imperativen Programmierung ähneln. Jeder Schritt ist eine Anweisung, und die physische Welt hält den Zustand. Da die Grundideen der imperativen Programmierung sowohl konzeptionell vertraut als auch direkt in der Hardware enthalten sind, sind die meisten Computersprachen im imperativen Stil.

Zuweisungsanweisungen führen im imperativen Paradigma eine Operation für Informationen im Speicher durch und speichern die Ergebnisse zur späteren Verwendung im Speicher. Übergeordnete imperative Sprachen ermöglichen außerdem die Auswertung komplexer Ausdrücke, die aus einer Kombination von arithmetischen Operationen und Funktionsauswertungen bestehen können, und die Zuordnung des resultierenden Werts zum Speicher. Durch Schleifenanweisungen (wie in while-Schleifen, do while-Schleifen und for-Schleifen) kann eine Folge von Anweisungen mehrmals ausgeführt werden. Schleifen können entweder die Anweisungen ausführen, die sie vordefiniert enthalten, oder sie können sie wiederholt ausführen, bis sich einige Bedingungen ändern. Bedingte Verzweigungsanweisungen ermöglichen die Ausführung einer Folge von Anweisungen nur, wenn eine Bedingung erfüllt ist. Andernfalls werden die Anweisungen übersprungen und die Ausführungssequenz wird von der darauf folgenden Anweisung fortgesetzt. Unbedingte Verzweigungsanweisungen ermöglichen die Übertragung einer Ausführungssequenz auf einen anderen Teil eines Programms. Dazu gehört der Sprung (genannt gehe zu in vielen Sprachen), switch und das Unterprogramm, die Unterroutine oder den Prozeduraufruf (der normalerweise zur nächsten Anweisung nach dem Aufruf zurückkehrt).

Zu Beginn der Entwicklung von Programmiersprachen auf hoher Ebene ermöglichte die Einführung des Blocks die Erstellung von Programmen, in denen eine Gruppe von Anweisungen und Deklarationen so behandelt werden konnte, als wären sie eine Anweisung. Dies ermöglichte neben der Einführung von Subroutinen, komplexe Strukturen durch hierarchische Zerlegung in einfachere prozedurale Strukturen auszudrücken.

Viele zwingende Programmiersprachen (wie Fortran, BASIC und C) sind Abstraktionen der Assemblersprache.[1]

Geschichte imperativer und objektorientierter Sprachen[edit]

Die frühesten Imperativsprachen waren die Maschinensprachen der Originalcomputer. In diesen Sprachen waren die Anweisungen sehr einfach, was die Hardware-Implementierung erleichterte, aber die Erstellung komplexer Programme behinderte. FORTRAN, das 1954 von John Backus bei International Business Machines (IBM) entwickelt wurde, war die erste große Programmiersprache, die die Hindernisse beseitigte, die der Maschinencode bei der Erstellung komplexer Programme darstellt. FORTRAN war eine kompilierte Sprache, die benannte Variablen, komplexe Ausdrücke, Unterprogramme und viele andere Funktionen zuließ, die heute in imperativen Sprachen üblich sind. In den nächsten zwei Jahrzehnten wurden viele andere wichtige imperative Programmiersprachen auf hoher Ebene entwickelt. In den späten 1950er und 1960er Jahren wurde ALGOL entwickelt, damit mathematische Algorithmen leichter ausgedrückt werden können und für einige Computer sogar als Zielsprache des Betriebssystems dienen. MUMPS (1966) brachte das imperative Paradigma auf ein logisches Extrem, indem es überhaupt keine Aussagen hatte und sich ausschließlich auf Befehle stützte, selbst in dem Maße, in dem die IF- und ELSE-Befehle unabhängig voneinander gemacht wurden und nur durch eine intrinsische Variable namens $ verbunden waren PRÜFUNG. COBOL (1960) und BASIC (1964) waren beide Versuche, die Programmiersyntax eher wie Englisch aussehen zu lassen. In den 1970er Jahren wurde Pascal von Niklaus Wirth entwickelt und C von Dennis Ritchie während seiner Arbeit bei Bell Laboratories. Wirth entwarf Modula-2 und Oberon. Jean Ichbiah und ein Team von Honeywell begannen 1978 nach einem vierjährigen Projekt, die Anforderungen für die Sprache zu definieren, um Ada für die Bedürfnisse des US-Verteidigungsministeriums zu entwerfen. Die Spezifikation wurde erstmals 1983 veröffentlicht und 1995, 2005 und 2012 überarbeitet.

In den 1980er Jahren nahm das Interesse an objektorientierter Programmierung rapide zu. Diese Sprachen waren im Stil unerlässlich, fügten jedoch Funktionen zur Unterstützung von Objekten hinzu. In den letzten zwei Jahrzehnten des 20. Jahrhunderts wurden viele solcher Sprachen entwickelt. Smalltalk-80, ursprünglich 1969 von Alan Kay konzipiert, wurde 1980 vom Xerox Palo Alto Research Center (PARC) veröffentlicht. Bjarne Stroustrup stützte sich auf Konzepte in einer anderen objektorientierten Sprache – Simula (die als erste objektorientierte Programmiersprache der Welt gilt und in den 1960er Jahren entwickelt wurde) – und entwarf C ++, eine objektorientierte Sprache, die auf C. basiert und die erste Implementierung wurde 1983 abgeschlossen. In den späten 1980er und 1990er Jahren waren Perl, das 1987 von Larry Wall veröffentlicht wurde, die bemerkenswerten imperativen Sprachen, die sich auf objektorientierte Konzepte stützten. Wolfram Language, veröffentlicht von Wolfram Research im Jahr 1988; Python, 1990 von Guido van Rossum veröffentlicht; Visual Basic und Visual C ++ (einschließlich Microsoft Foundation Class Library (MFC) 2.0), veröffentlicht von Microsoft 1991 bzw. 1993; PHP, 1994 von Rasmus Lerdorf veröffentlicht; Java, 1995 von Sun Microsystems veröffentlicht, JavaScript, von Brendan Eich (Netscape) und Ruby, von Yukihiro „Matz“ Matsumoto, beide 1995 veröffentlicht Zielsprachen, VB.NET und C #, die darauf ausgeführt werden; Microsoft F #, eine funktionale Sprache, läuft jedoch auch darauf.

Siehe auch[edit]

Verweise[edit]

  • Pratt, Terrence W. und Marvin V. Zelkowitz. Programmiersprachen: Design und Implementierung, 3. Aufl. Englewood Cliffs, NJ: Prentice Hall, 1996.
  • Sebesta, Robert W. Konzepte von Programmiersprachen, 3. Aufl. Reading, Mass.: Addison-Wesley Publishing Company, 1996.
Ursprünglich basierend auf dem Artikel ‚Imperative Programmierung‘ von Stan Seibert von Nupedia, lizenziert unter der GNU Free Documentation License.