Zum Inhalt springen

Diskussion:Imperative Programmierung

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 5. Dezember 2011 um 21:43 Uhr durch Avron (Diskussion | Beiträge) (Neuer Text). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Erste Kommentare

Ich bin absolut überzeugt, dass weder C noch Pascal imperative Programmiersprachen sind und entferne sie aus dem Artikel. Sollte es Argumente dagegen geben, lasse ich mir an dieser Stelle gern überzeugen ;) --Jon Kowal 18:07, 5. Okt 2005 (CEST)

Wie leichtsinnig... Aber man kann sich ja auch 'mal irren: [4], um nur einen zu nennen. Ansonsten hilft auch hier Google ungemein weiter. --Frank. 18:22, 5. Okt 2005 (CEST)

Befehle -> Anweisungen

Befehle sind die Arbeitsschritte eines Prozessors. Die meisten imperativen Programmiersprachen arbeiten nicht auf der Ebene von Befehlen, sondern von Anweisungen. Deswegen nannte man sie eine Weile "hoehere Programmiersprachen", bis das ein Pleonasmus wurde.

(Auch imperative Programmiersprachen haben uebrigens Deklarationen.)

Aufgrund dessen nehme ich die Sprache C wieder bei den Beispielen auf. --Freak 1.5 14:44, 26. Sep 2006 (CEST)

Erledigt; im Artikel wird nun einheitlich der Begriff 'Anweisung' verwendet. --Gms 20:31, 29. Mär. 2009 (CEST)Beantworten

Imperative Programmierung versus Prozedurale Programmierung

Meiner Meinung nach ist prozedurale Programmierung ein Spezialfall der imperativen Programmierung und nicht mit dieser identisch. Ich wollte aber die letzte Änderung von R.K.A.L. auch nicht einfach revertieren und bitte um eine Stellungnahme. Auf jeden Fall fehlt dem Artikel mindestens ein Einzelnachweis für die konkrete Definition des Begriffs. --jpp ?! 21:52, 11. Mai 2007 (CEST)Beantworten

Die Begriffe werden häufig synonym verwendet (vgl. auch http://en.wikipedia.org/wiki/Imperative_programming) aber bei differenzierter Betrachtung würde ich die Prozedurale Programmierung als einen charakteristischen Aspekt der Imperativen Programmierung auffassen. --R.K.A.L. 23:32, 11. Mai 2007 (CEST)Beantworten
Also ist beides nicht synonym. Dann baue ich mal wieder den Verweis auf den anderen Artikel ein. --jpp ?! 14:12, 12. Mai 2007 (CEST)Beantworten
ok--R.K.A.L. 14:56, 12. Mai 2007 (CEST)Beantworten

Fortsetzung Dez 2012

Dieser Disk-Beitrag geht zurück auf die 'Mega-Diskussion' unter Prozedurale Programmierung, die bereits zum zweiten Mal erfolglos, weil ohne Konsens, abgebrochen wurde. Dabei wurde aus meiner Sicht folgender Status erreicht:

  • Der Begriff 'prozedurale Programmierung' wird in den Medien mit zwei verschiedenen Bedeutungen behandelt.
  • Eine davon (= programmieren mit Prozeduren; in der Disk. pP1 genannt) wird im gleichnamigen Artikel von Wikipedia beschrieben.
  • Die andere, umfassendere Definition (pP2) gilt nach verschiedenen Quellen als Synonym für 'imperative Programmierung' .
  • Die Merkmale dieser pP2-Bedeutung sind bisher aber weder im Artikel iP noch in pP umfassend beschrieben und nicht mit Quellen belegt.

Deshalb sollte 'iP' um die entsprechenden Angaben ergänzt werden. In beiden Artikeln sollte darauf hingewiesen werden, dass dieser Ausdruck 'prozedural' jeweils auch im anderen Sinn gebraucht wird.

Demnach wäre pP (nach der pP2-Interpretation) doch wieder Synonym zu iP - im Gegensatz zu den obigen Feststellungen - in denen ja nicht definiert wurde, was man darunter versteht. Leider ist die Quellenlage sehr heterogen. Da kann man in WP nichts anderes tun, als explizit auf solche Unterschiede hinzuweisen.

Ich stelle deshalb zunächst und unter der Annahme, dass der 'Synonym'-Sachverhalt zutrifft, temporär HIER den neuen Text ein, der auf den genannten Referenzen basiert.

Kommentarabschnitt aktualisiert: --VÖRBY 11:41, 5. Dez. 2011 (CET)Beantworten

Neuer Text

(Einrückungen etc. bei Übernahme in den Artikel entsprechend anpassen)

EINLEITUNG:

Imperative Programmierung ist ein Programmierparadigma. Danach „besteht ein [Quell-] Programm aus einer Folge von Befehlen, die vorgeben, in welcher Reihenfolge was vom Computer getan werden soll “[1].

Die imperative Programmierung ist das bekannteste Programmierparadigma. Diese Vorgehensweise war, bedingt durch den Sprachumfang früher Programmiersprachen, ehemals die klassische Art des Programmierens und wird heute noch praktiziert. Sie liegt zum Beispiel dem Entwurf von ALGOL, Fortran, Pascal, ADA, PL/I, C und allen Assemblersprachen zugrunde (nach [1]).

Das dem imperativen Paradigma zugrunde liegende abstrakte Ausführungsmodell ist nah verwandt mit der Ausführung von Maschinencode auf einem konkreten Computer, der die vorherrschende Von-Neumann-Architektur implementiert. Es existieren beispielsweise bedingte und unbedingte Sprunganweisungen. Der Status des Rechners setzt sich aus dem Arbeitsspeicherinhalt und dem Zustand von Systemvariablen (z. B. Register, Befehlszähler ...) zusammen.

Abweichende Bezeichnungen: In der Literatur wird diese Vorgehensweise zum Teil auch 'imperativ/prozedural', 'algoritrhmisch' oder 'prozedural' genannt. Der Ausdruck 'prozedurale Programmierung' wird jedoch zum Teil auch mit einer abweichenden Bedeutung benutzt, nämlich (siehe Prozedurale Programmierung) als Programmieren unter Verwendung von Prozeduren (was in [1] auch 'strukturiertes, prozedurales Programmieren' genannt wird).

DETAILS (Merkmale)

Die besonderen Merkmale dieser Art des Programmierens sind (nach [2] und [3]):

  • Im Quellcode wird festgelegt, was in welcher Reihenfolge und wie zu tun ist: „First do this and next do that“[2] = schrittweises 'Fortschreiten' der Befehle; „viewed as sequence of things to be done“[3] = dargestellt als Folge von Anweisungen).
  • Der Entwickler verwendet Kontrollstrukturen (z. B. Sequenz, Schleife, Verzweigung) zur Steuerung der Befehlsausführung.

Ebenfalls als tpyisch für diese Art des imperativen/prozeduralen Programmierens, aber nicht ausschließlich dort angewendet, gelten die nachfolgenden Merkmale (nach [2], [3]):

  • Die Aufgabenstellung wird im Wesentlichen durch Bilden von Prozeduren, Funktionen oder Subroutinen implementiert (Konzept der Abstraktion. Dabei entsteht eine Hierarchie von Funktionen, die in ihrer Gruppierung nach beliebigen logischen Prinzipien gebildet werden kann. Der Startpunkt des Programms liegt in der Hauptprozedur - von der aus die Teilfunktionen aufgerufen werden. Bestimmte Befehle unterstützen das Durchleiten und die Rückgabe von Parameterwerten.
  • Datenwerte werden als benannte Variablen definiert und über ihre Namen angesprochen" [2], sie werden von den Funktionen verändert und transformiert, Zugriff ist grundsätzlich von allen Anweisungen des Programms aus möglich[3].
  • Diesen Variablen sind Datentypen zugeordnet, die jeweils nur bestimmte Instruktionen erlauben.
  • Der Quelltext wird durch Compilierung und Einbindung zusätzlicher Funktionskomponenten (sprach- und/oder aufgabenspezifisch) zum ausführbaren Programm.

ABGRENZUNG:

Als Gegensatz zur imperativen Programmierung wird das Paradigma Deklarative Programmierung verstanden. Darin wird beschrieben, was das Programm erarbeiten/berechnen soll, aber nicht wie.

Wesentliche Unterschiede bestehen zum Beispiel auch zur objektorientierten Programmierung, wo die Anweisungen und der Code nach Objekten zusammengefasst sind. Das Prinzip der Datenkapselung (Information Hiding) wird in imperativen Sprachen oft dadurch umgesetzt, dass Prozeduren, die eine logische Einheit bilden, in Modulen oder Paketen zusammengefasst werden. Bei der ereignisorientieren Programmierung wird die Reihenfolge der Verarbeitung vom Eintritt gewisser (externer) Ereignisse gesteuert.

Einige imperative Programmiersprachen wie z. B. C++ und Java bieten neben imperativen/prozeduralen Merkmalen auch zusätzliche Sprachmittel, um andere Prinzipien wie z. B. die objektorientierte Programmierung zu unterstützen.

Bei der physischen Ausführung von Computerprogrammen (im Prozessor) werden die einzelnen Befehle (= Maschinenbefehle) immer, unabhängig vom praktizierten Paradigma, 'Befehl für Befehl' ausgeführt. In nicht vollständig imperativ/prozedural entwickelten Anwendungen sind dabei einzelne Programmteile übergeordneten Komponenten der Systemsoftware unterstellt, die die codierten Anweisungen zum Beispiel in Maschinenbefehle umwandelt (etwa bei SQL-Kommandos das DBMS) oder den Code abhängig vom Eintritt bestimmter Ereignisse (gesteuert vom Eventhandler) ausführt. Die Paradigma-Zuordnung gilt insofern jeweils nur für den Quelltext von Programmen.

Referenzen (ebenfalls temporär):

  1. a b c Grundkurs IT-Berufe (Vieweg-Verlag) Böhm/Jungkunz [1]
  2. a b c d JAVA AND OBJECT-ORIENTED PROGRAMMING PARADIGM [2]
  3. a b c d Programming Paradigms and Methodology[3]


Abweichende Bezeichnungen: In der Literatur wird diese Vorgehensweise zum Teil auch 'imperativ/prozedural', 'algoritrhmisch' oder 'prozedural' genannt Wo wird die imperative Vorgehensweise prozedural genannt?
Ebenfalls als tpyisch für diese Art des imperativen/prozeduralen Programmierens, aber nicht ausschließlich dort angewendet, gelten die nachfolgenden Merkmale... Quatsch, wenn es dir bei prozeduraler Programmierung nicht gelingt willst du es hier probieren? Was imperativ bedeutet ist glasklar belegt; du musst es halt mal irgendwann akzeptieren.
Wesentliche Unterschiede bestehen zum Beispiel auch zur objektorientierten Programmierung, wo die Anweisungen und der Code nach Objekten zusammengefasst sind. Quatsch. Ein Programm welches auf Benutzereingabe wartet soll auf einmal nicht imperativ sein. Da verwechselst du wieder Stapelverarbeitung und Dialogverarbeitung. Auch hier rate ich dir mal die Literatur richtig zu lesen.
Als Gegensatz zur imperativen Programmierung wird das Paradigma Deklarative Programmierung verstanden. Darin wird beschrieben, was das Programm erarbeiten/berechnen soll, aber nicht wie.Wesentliche Unterschiede bestehen zum Beispiel auch zur objektorientierten Programmierung, wo die Anweisungen und der Code nach Objekten zusammengefasst sind Da merkt man dass es schon mal logisch nicht stimmt. Es gibt entweder imperativ oder deklarativ; auf der Stufe gibt es nichts anderes. Das sind elementarste Grundlagen der Informatik.
... oder den Code abhängig vom Eintritt bestimmter Ereignisse (gesteuert vom Eventhandler) ausführt. Die Paradigma-Zuordnung gilt insofern jeweils nur für den Quelltext von Programmen.. Ist es wirklich dein ernst? Das ist ja was fürs Humorarchiv.
Du wechselst munter die Ebenen, Programmierung und Software, verwechselst ereignisorientierte Progammierung mit Dialogverarbeitung, verwechselst imperative und objektorientierte Programmierung, mischst noch kräftig prozedurale Programmierung darunter und schüttelst kräftig alles um dass es einem schlecht wird. Auf diesem Niveau kann man nicht diskutieren. Wenn du diesen Artikel in diese private Theorie-Richtung änderst, werde ich ihn revertieren. --Avron 20:43, 5. Dez. 2011 (CET)Beantworten

Verständlichkeit des Artikels

Der Artikel ist verständlich, aber ihm fehlt die Anschaulichkeit. Es wäre gut, wenn jemand an einem Beispiel verdeutlichen könnte, was imperativ in Bezug auf eine Programmiersprache heißt. --Jan Mathys 18:21, 17. Dez. 2008 (CET)Beantworten

Erledigt; ich habe ein Beispiel ergaenzt. --Gms 20:32, 29. Mär. 2009 (CEST)Beantworten

Änderung an der Geschichte

Plankalkül ist die älteste hohe Programmiersprache und nicht Fortran !! Fortran ist die älteste "NOCH IM GEBRAUCH" befindliche hohe Programmiersprache, nicht die Älteste ! (nicht signierter Beitrag von 84.175.199.252 (Diskussion) 15:23, 21. Sep. 2010 (CEST)) Beantworten

Etymologie

Der erste Bestandteil des Lemmas leitet sich vermutlich vom lateinischen imperare ab, was „befehlen“, „beherrschen“, „gebieten“, „herrschen“ bedeuten kann. Ich bin mir nicht sicher, habe auch keine mögliche Quelle. Allerdings könnte ein plumpes „befehlen“ richtig sein, schließlich ist die programmiererische Anweisung eine Art von Befehl. Die erklärende, etymologische Angabe wirkt ergänzend und hilft oft beim raschen Verständnis. Könnte man also mal andenken. -- Gohnarch 23:43, 9. Mär. 2011 (CET)Beantworten