Ein Programm ist ein Stück Software, das Aktionen eines Computers veranlasst. Der Begriff wird sowohl auf umfangreiche Standardanwendungssoftware als auch auf individuelle Anweisungsfolgen angewendet, die ein Computerbenutzer in einer Programmiersprache geschrieben oder die ein Übersetzungsprogramm in ein maschineninternes Format überführt hat.
Programm aus Benutzersicht
Aus Sicht eines Benutzers ist ein Programm ein Stück Software, das an einem Computerarbeitsplatz abläuft und bestimmte Aufgaben löst oder den Benutzer bei der Aufgabenlösung unterstützt. Dies kann ein einzelnes Programm sein, das Webseiten anzeigt (Browser), Computerviren beseitigt (Viren-Scanner) oder das Erstellen von Textdokumenten erlaubt (Textverarbeitungsprogramm), aber auch ein betriebliches Informationssystem, welches aus zahlreichen integrierten Einzelprogrammen besteht (z.B. ein ERP-System).
Programm aus Entwicklersicht
Programme werden mit Hilfe von Programmiersprachen und auf der Grundlage einer bestimmten Herangehensweise an die Problemlösung entwickelt. In den Anfängen der Datenverarbeitung, als Programme und Programmiersprachen noch die funktionale Arbeitsweise eines an der Von-Neumann-Architektur orientierten Computers reflektierten, wurde ein Programm in den meisten Lehrbüchern als eine Rechenvorschrift, ein Algorithmus oder eine Folge von Anweisungen definiert, die angibt, welche Operationen in welcher Reihenfolge ausgeführt und welche Datenstrukturen wie verwendet werden sollen [Knuth 1968, S. 5, Wirth 1975a, S. 7].”Der Computer ist ein Automat, der Prozesse nach genau vorgeschriebenen Verhaltensmaßregeln ausführt”
[Wirth 1975b, S. 13]
Da Programme als Folgen von Befehlen (Anweisungen, Instruktionen) verstanden wurden, bezeichnete man den zugrundeliegenden Programmierstil als “imperative Programmierung” oder wegen des am Ablauf orientierten Charakters als “prozedurale Programmierung”. Gängige Programmiersprachen wie Cobol, Fortran, Basic und Pl/1 erlaubten das Schreiben von Programmen genau diesem Programmierstil entsprechend.
Im Lauf der Zeit fanden andere Programmierstile (sog. Programmierparadigmen) als die imperative oder prozedurale Programmierung Verbreitung und wurden durch anders geartete Programmiersprachen unterstützt. Deshalb ist die obige Definition nicht mehr generell anwendbar. In einem funktionalen Programm sind die Kernbegriffe beipielsweise “Funktion” und “Argument” und nicht “Befehl” oder “Datenstruktur”. In einem objektorientierten Programm spricht man von Objekten, Klassen, Nachrichten und Methoden.
Allgemein gültige Definitionen des Begriffs Programm werden deshalb zwangsläufig auf einer hohen Abstraktionsebene angesiedelt. Ein Programm ist letztlich ein Text, der Anweisungen für einen Computer enthält [Gumm, Sommer 2013, S. 82]. Dies führt zu der Definition:
Ein
Programm stellt eine logisch gegliederte Menge von Anweisungen dar, die mit den Ausdruckmitteln einer Programmiersprache zur Lösung einer gegebenen Aufgabe durch einen Computer formuliert wurden.
Je nach Paradigma muss diese allgemeine Beschreibung weiter präzisiert werden. Beispielsweise beschreiben die Anweisungen eines objektorientierten Programms, das in Java formuliert ist, die verwendeten Objekte und wie die Objekte mit Hilfe von Nachrichtenaustausch zur Lösung der Aufgabe tätig werden. Ein logisches Programm enthält dagegen Anweisungen, die logische Konstrukte wie Prämissen, Implikationen und Fakten beschreiben und den Wahrheitsgehalt von logischen Aussagen auswerten.
Programm aus Systemsicht
Programme lassen sich aus Sicht des Betriebssystems, wie in Abbildung 1 veranschaulicht, wie folgt unterscheiden:
Quellprogramm – ein Programm, das mit den Ausdrucksmitteln einer Programmiersprache geschrieben ist und als Text (Quelltext) in dieser Sprache vorliegt.
Maschinenprogramm (Objektprogramm) – ein von einem Übersetzungsprogramm (Compiler oder Assembler) in eine Form überführtes Programm, die vom Prozessor des zugrunde liegenden Computersystems direkt ausgeführt werden kann. Das Maschinenprogramm liegt in binärer Form vor (Folgen von 0 und 1).
Hauptprogramm (eines Programmsystems) – dasjenige Programm, welches vom Betriebssystem zur Ausführung des Programmsystems gestartet wird. Im Allgemeinen ruft das Hauptprogramm andere Programme
(Unterprogramme) auf, die Teilaufgaben lösen.
Abb. 1: Programmbegriffe aus Betriebssystemsicht
Programme können auch integrale Bestandteile von technischen Systemen sein und z.B. zur Steuerung dieser Systeme dienen
(eingebettete Programme).
Literatur
Gumm, Heinz-Peter ; Sommer, Manfred: Einführung in die Informatik. 10. Auflage. Oldenbourg : München 2013.
Knuth, Donald E.: The Art of Computer Programming. Volume 1 : Fundamental Algorithms. Addison-Wesley : Reading, MA 1968.
Wirth, Niklaus: Algorithmen und Datenstrukturen. B.G. Teubner : Stuttgart 1975a.
Wirth, Niklaus: Systematisches Programmieren. B.G. Teubner : Stuttgart 1975b.