Computerprogramm

ÔĽŅ
Computerprogramm

Ein Computerprogramm oder kurz Programm ist eine Folge von den Regeln der jeweiligen Programmiersprache gen√ľgenden Anweisungen, die auf einem Computer ausgef√ľhrt werden k√∂nnen, um damit eine bestimmte Funktionalit√§t zur Verf√ľgung zu stellen.[1]

Inhaltsverzeichnis

√úberblick

Ein Computerprogramm geh√∂rt zur Software eines Computers. Es liegt zumeist auf einem Datentr√§ger als ausf√ľhrbare Programmdatei im sogenannten Maschinencode vor und wird zur Ausf√ľhrung in den Arbeitsspeicher des Rechners geladen. Das Programm wird als Abfolge von Maschinen-, d.h. Prozessorbefehlen von dem/den Prozessoren des Computers verarbeitet und damit ausgef√ľhrt.

Eine Programmdatei, die aus Maschinencode besteht, enth√§lt Befehle aus dem Sprachschatz des Prozessors, d. h. Befehle, die f√ľr den Prozessor ‚Äěverst√§ndlich‚Äú und damit ausf√ľhrbar sind. Die Erstellung eines solchen Programms bezeichnet man allgemein als Programmierung oder auch als Implementierung. In den Anf√§ngen der Programmierung wurde - bis zur Entwicklung von Programmiersprachen - ausschlie√ülich in Maschinencode programmiert. Der Programm- bzw. Quelltext, den der Programmierer in einer Programmiersprache abgefasst hat, besteht aus einer Abfolge von (zumeist der englischen Sprache entnommenen) Befehlen, die f√ľr den Programmierer (i. A.) verst√§ndlicher sind als der Maschinencode (z. B.: ADD, SUB, AND, OR etc). Sp√§ter erg√§nzten die h√∂heren Programmiersprachen Schleifen, Abstraktion und modularen Aufbau.

Sowohl der Quelltext als auch der von einem Computer ausf√ľhrbare Maschinencode werden als Programm bezeichnet. Meist ist eine Quelltextdatei durch eine Dateiendung gekennzeichnet, die auf die verwendete Hochsprache hinweist (programm.c: ein in C formuliertes Programm). Sie kann im Allgemeinen mit einem einfachen Texteditor bearbeitet werden. Eine Datei, die dagegen Maschinencode enth√§lt, besitzt keine oder eine betriebssystemspezifische Endung, die lediglich auf ihre Ausf√ľhrbarkeit hinweist (programm.exe bei MS-DOS und Windows; programm bei unixoiden Systemen). Sie kann oft als Kommando in einem Terminal (Eingabeaufforderung) aufgerufen werden.

Damit ein in einer Hochsprache geschriebenes Programm auf einem Prozessor ausgef√ľhrt werden kann, muss es in Maschinencode √ľbersetzt werden. Ein Befehl einer h√∂heren Programmiersprache wird im Allgemeinen in mehrere Maschinenbefehle √ľbersetzt. Den √úbersetzungsvorgang nennt man Compilierung. Um aus dem Quelltext den Maschinencode zu generieren, wird ein Assembler, Compiler oder Interpreter ben√∂tigt. Dieser √ľbersetzt die Befehle der Programmiersprache, die f√ľr menschliche Benutzer verst√§ndlich und bearbeitbar sein sollen, in die semantisch entsprechenden Befehle der Maschinensprache des verwendeten Computers.

Die Anweisungen, die (als Teil von Programmen) einen konkreten Lösungsweg repräsentieren, werden als Algorithmus bezeichnet; Beispiel: Berechnen der Mehrwertsteuer.

Im Sprachgebrauch wird Computerprogramm meist zu Programm verk√ľrzt oder der Begriff Software verwendet. Allerdings ist Computerprogramm kein Synonym zu Software, da mit Software die komplette, f√ľr den Benutzer fertige Anwendung gemeint ist. Diese umfasst zus√§tzliche Ressourcen wie Betriebssystem, Datenbanken, Grafik- und Audiodateien, Schriftarten oder Hilfetexte.

Ein gr√∂√üeres Computerprogramm besteht meist aus mehreren Modulen - die entweder zum Programm selbst 'geh√∂ren' oder die als 'Bausteine' (Unterprogramme) aus bereits bestehenden Programmbibliotheken bei der Ausf√ľhrung des Programms benutzt werden. Im umgekehrten Fall k√∂nnen Computerprogramme Teil eines √ľbergeordneten, ein gr√∂√üeres Aufgabengebiet abdeckenden Anwendungssystems sein; Beispiel: Gehaltsabrechnung, Finanzbuchhaltung, Meldewesen etc.

Die Entwicklung von Computerprogrammen ist das Gebiet der Softwaretechnik. Je nach Komplexit√§t der zu entwickelnden Computerprogramme geschieht dies im Rahmen von Projekten. Die Aktivit√§ten der Beteiligten werden dabei meist unter Anwendung von Vorgehensmodellen, speziellen Methoden und Werkzeugen zur Softwareentwicklung ausgef√ľhrt.

Klassifizierungsmöglichkeiten

Neben den f√ľr Software im Allgemeinen geltenden Unterscheidungsmerkmalen lassen sich Computerprogramme (als Untervariante von Software) nach den folgenden, beispielhaft genannten Kriterien unterscheiden:

  • Quellprogramme (in einer bestimmen Programmiersprache) oder Maschinenprogramme (ausf√ľhrbar unter bestimmten Betriebssystemen) oder Programme in einem Zwischencode
  • Hauptprogramme (aufgerufen √ľber Betriebssystem-Kommandos) oder Unterprogramme (aufgerufen durch andere Programme). Sonderformen treten auf, wenn Programme z. B. √ľber technische Steuerungskomponenten aufgerufen werden, z. B. √ľber serviceorientierte Architekturen, automatisiertes Workflow-Management etc.
  • Stapelprogramme (verarbeiten 'Stapel' von Daten) oder Dialogprogramme (stehen in Interaktion mit Benutzern)
  • Nach dem Ort der Speicherung und Programmausf√ľhrung unterschieden k√∂nnen Programme lokal (auf einem Arbeitsplatzrechner) gespeichert und ausgef√ľhrt werden oder auf einem Server installiert sein und trotzdem lokal (nach dem Laden √ľber eine Online-Verbindung) ausgef√ľhrt werden oder nur auf dem Server gespeichert und dort auch ausgef√ľhrt werden. Bei verteilten Anwendungen werden Programmteile auf unterschiedlichen Rechnern ausgef√ľhrt, z. B. die Gesch√§ftslogik und Datenhaltung im Server, Funktionen der Benutzeroberfl√§che am lokalen Rechner; im rein technischen Sinn stehen hierbei verschiedene Programme miteinander in Verbindung.

Geschichte

Das erste Computerprogramm von Ada Lovelace

Als weltweit erstes Computerprogramm gilt eine Vorschrift f√ľr die Berechnung von Bernoulli-Zahlen, die Ada Lovelace in den Jahren 1842/1843 f√ľr die mechanische Analytical Engine von Charles Babbage erstellte. Das Programm konnte seinerzeit nur von Hand ausgef√ľhrt werden, da es im 19. Jahrhundert noch keine funktionsf√§hige Maschine gab, die dazu in der Lage war.

Erste Programme auf Lochstreifen

In den Jahren 1936 bis 1941 entwarf Konrad Zuse die Rechner Z1 und Z3, die lange Befehlsfolgen auf einem Lochstreifen verarbeiteten, die ersten Computerprogramme, die auf realen Maschinen ausgef√ľhrt werden konnten. Die Rechner beherrschten die vier Grundrechenarten und Quadratwurzelberechnungen auf bin√§ren Gleitkommazahlen, der Lochstreifen enthielt jeweils eine Rechenoperation und eine Speicheradresse.

Auf Zuse geht auch die erste h√∂here Programmiersprache Plankalk√ľl, zur√ľck. Damit lassen sich Probleme maschinenunabh√§ngig formulieren und sp√§ter in eine maschinenlesbare Form √ľberf√ľhren.

Programme im Arbeitsspeicher

Der EDVAC-Rechner, der auf einem Entwurf von John von Neumann aus dem Jahre 1945 basiert, hatte einen Quecksilber-Verz√∂gerungsspeicher f√ľr 1024 Fest- oder Gleitkommazahlen mit jeweils 44 Bit. Jede Speicherzelle konnte statt einer Zahl auch einen Befehl aufnehmen. Bei diesem Rechnerkonzept war es m√∂glich, die Befehle eines Computerprogramms vor der Ausf√ľhrung zuerst in den Arbeitsspeicher zu √ľbertragen. Das ist heute noch √ľblich. EDVAC wurde jedoch erst im Jahr 1951 teilweise fertiggestellt. Der Demonstrationsrechner Manchester SSE und der auf dem EDVAC aufbauende EDSAC-Rechner hatten schon vorher Programme aus dem Arbeitsspeicher ausgef√ľhrt.

Höhere Programmiersprachen und Compiler

Ende der 1950er Jahre wurden Computer so leistungsf√§hig, dass spezielle Programme, Compiler genannt, Quelltexte in h√∂heren Programmiersprachen automatisch in Maschinenbefehle, also ausf√ľhrbare Programme, √ľbersetzen konnten. Ausf√ľhrbare Programme k√∂nnen dann, wie beim EDVAC, in den Speicher geladen und abgearbeitet werden.

Mit Fortran, COBOL, ALGOL und LISP entstanden in den sp√§ten 1950er Jahren die ersten standardisierten h√∂heren Programmiersprachen. Programme in diesen Sprachen laufen durch einen entsprechenden Compiler √ľbersetzt auf unterschiedlichen Rechnern. Sie k√∂nnen teilweise auch noch auf modernen Computern eingesetzt werden.

Vom Algorithmus zum Programm

Berechnung des größten gemeinsamen Teilers

Es soll ein Programm zur Bestimmung des größten gemeinsamen Teilers (ggT) zweier Zahlen erstellt werden. Zunächst muss ein geeigneter Algorithmus gefunden werden.

Der euklidische Algorithmus, der bereits um 300 v. Chr. beschrieben wurde, ermittelt den gr√∂√üten gemeinsamen Teiler (ggT) zweier nat√ľrlicher Zahlen A und B:

1. Sei A die größere der beiden Zahlen A und 'B (gegebenenfalls vertauschen).
2. Setze A = A - B.
3. Wenn A und B ungleich sind, dann mit Schritt 1 fortfahren, wenn sie gleich sind,
   dann den Algorithmus beenden: Diese Zahl ist der größte gemeinsame Teiler.

Verwendung einer Programmiersprache

Sobald eine formale Beschreibung eines Algorithmus, also eine genau definierte Verarbeitungsvorschrift, vorliegt, kann der Algorithmus umgesetzt (implementiert) werden. Dazu wird eine geeignete Programmiersprache ausgewählt.

Zur Umsetzung wird heute meist eine h√∂here Programmiersprache verwendet, die von einem Computer eventuell nicht direkt ausgef√ľhrt werden kann, sondern zuerst kompiliert oder interpretiert werden muss. In Sprachen wie Pascal dienen Variablen, Ausdr√ľcke, Vergleiche, Zuweisungen und Kontrollstrukturen zur Umsetzung des ggT-Algorithmus:

                                (* Schritt3:             *)
 WHILE A <> B DO                (* Solange A ungleich B  *)
 BEGIN
                                (* Schritt1:             *)
     IF B > A THEN              (* Falls B größer als A  *)
     BEGIN                  
         H = A; A = B; B = H;   (* A und B vertauschen   *)
     END;                         
                                (* Schritt2:             *)
     A = A-B;                   (* A durch A-B ersetzen  *)
 END;

Ber√ľcksichtigung aller Sonderf√§lle

Bei der Umsetzung wird mit der Pr√ľfung von Schritt 3 begonnen. Der urspr√ľngliche Algorithmus ber√ľcksichtigt nicht den Fall, dass A und B bereits zu Beginn gleich sein k√∂nnen. W√§re die Aufgabe, den gr√∂√üten Teiler von 103 und 103 zu finden, w√ľrde ein Mensch sofort das Ergebnis 103 nennen, er w√ľrde den Algorithmus gar nicht bem√ľhen. Der originale Algorithmus w√ľrde aber null ergeben. Die Umsetzung auf einem Rechner muss auch alle Sonderf√§lle ber√ľcksichtigen. Durch das Vorziehen von Schritt 3 wird der Sonderfall hier korrekt behandelt.

Elementare Schritte

Pascal und andere Programmiersprachen besitzen keine Operation zum Vertauschen von Zahlen. Das muss daher in elementarere Schritte umgesetzt werden. Eine zusätzliche Variable H, eine sogenannte Hilfsvariable, erlaubt die Vertauschung mit Hilfe von drei Zuweisungen:

     H := A;     (* Wert von A in der Hilfsvariablen H retten *)
     A := B;     (* A mit dem Wert von B √ľberschreiben        *)
     B := H;     (* B mit dem Wert von H (=A) √ľberschreiben   *)

Das ist auch ein kleiner Algorithmus.

Ein vollständiges Programm

Damit daraus ein korrektes Programm wird, muss der Algorithmus noch um Ein- bzw. Ausgabeanweisungen, oft jedoch auch um Variablen und eine Programmstruktur ergänzt werden. Diese sind nicht Teil des eigentlichen Algorithmus:

 PROGRAM Ggt(Input,Output);             (* Programmkopf        *)
     VAR A,B,H: Integer;                (* Variablendefinition *)
 BEGIN
     ReadLn(A,B);                       (* Eingabe von A und B *)
     WHILE A <> B DO                    (* Euklidischer Algorithmus *)
     BEGIN 
         IF B > A THEN 
         BEGIN          
             H := A; A := B; B := H;
         END;
         A := A-B;
     END;
     WriteLn(A)                         (* Ausgabe von A       *) 
 END.                                   (* Programmende        *)

√úbersetzung und Ausf√ľhrung

Ein solches Programm wird unter Verwendung eines Texteditors erstellt und als Quellcode in einer Datei oder Programmbibliothek (f√ľr Quellcode) gespeichert. Anschlie√üend kann es '√ľbersetzt' werden. Dazu ist ein Compiler erforderlich, der den Code aus der jeweiligen Programmiersprache in die Maschinensprache √ľbersetzt und als Ergebnis ein ausf√ľhrbares Programm erstellt, das als Datei oder in einer Programmbibliothek (f√ľr ausf√ľhrbare Programme) abgestellt wird. Dieses Programm kann dann √ľber ein Betriebssystem zur Ausf√ľhrung gestartet werden, und zwar beliebig oft (ohne neue √úbersetzung).

Einige Programmiersprachen verwenden keinen Compiler, sondern einen Interpreter, der Programme erst zur Laufzeit in Maschinensprache √ľbersetzt.

Eine weitere M√∂glichkeit besteht in der Verwendung von Zwischencode (Bytecode), der vom Compiler an Stelle des Maschinencodes generiert wird. Ein Beispiel daf√ľr ist Java: Der Java-Compiler erzeugt Bytecode, welcher dann auf der sogenannten virtuellen Maschine ausgef√ľhrt wird. Die virtuelle Maschine interpretiert oder √ľbersetzt dann den Bytecode f√ľr das darunterliegende Betriebssystem.

Ebenso muss in manchen Rechnerumgebungen, i. d. R. bei Gro√ürechnern, der vom Compiler erstellte Maschinencode noch mit einem Systemprogramm ('Linkage Editor' o. √§.) nachbearbeitet werden, wobei ggf. weitere Unterprogramme und Systemroutinen 'eingebunden' werden k√∂nnen. Erst das so entstandene Programm ist ausf√ľhrbar.

Mittels spezieller Programme, sogenannter Decompiler, ist es in begrenztem Maße möglich, aus dem Maschinencode wieder einen in Hochsprache lesbaren Quelltext zu erzeugen.

Siehe auch

Wiktionary Wiktionary: Computerprogramm ‚Äď Bedeutungserkl√§rungen, Wortherkunft, Synonyme, √úbersetzungen

Literatur

Einzelnachweise

  1. ‚ÜĎ ISO/IEC 2382-1:1993 definiert ‚Äěcomputer program‚Äú: "A syntactic unit that conforms to the rules of a particular programming language and that is composed of declarations and statements or instructions needed to solve a certain function, task, or problem." Bis 2001 definierte die DIN 44300 "Informationsverarbeitung Begriffe" identisch.

Wikimedia Foundation.

Schlagen Sie auch in anderen W√∂rterb√ľchern nach:

  • Computerprogramm ‚ÄĒ das Computerprogramm, e (Grundstufe) Programm, das im Computer installiert werden kann Beispiel: Dieses Computerprogramm funktioniert nicht ‚Ķ   Extremes Deutsch

  • Computerprogramm ‚ÄĒ Softwareanwendungen; Software; Anwendung; Programm; Applikation; Softwaresystem; Softwareanwendung * * * Com|pu|ter|pro|gramm ‚Ć©[ pju: ] n. 11; EDV‚Ć™ eindeutige Befehle, die den Computer veranlassen, bestimmte Abl√§ufe od. Auftr√§ge in einer… ‚Ķ   Universal-Lexikon

  • Computerprogramm ‚ÄĒ 1. Begriff und Arten:¬†‚á° Programm. 2. C. werden urheberrechtlich gesch√ľtzt, wenn sie Ergebnis der eigenen geistigen Sch√∂pfung ihres Urhebers sind. Der Schutz gilt f√ľr alle Ausdrucksformen eines C. (Betriebssystem, Anwendungsprogramm, Hilfsprogramm ‚Ķ   Lexikon der Economics

  • Computerprogramm ‚ÄĒ Com|pu|ter|pro|gramm ‚Ķ   Die deutsche Rechtschreibung

  • Computerprogramm des Trainings ‚ÄĒ kompiuterinńó treniruotńós programa statusas T sritis KŇęno kultŇęra ir sportas apibrńóŇĺtis Sporto treniruotńós analizńós, fizinio krŇęvio ir priemoniŇ≥ parinkimo uŇĺdavinio sprendimas kompiuteriu, taikant matematinńĮ programinńĮ algoritmńÖ. Kompiuterinńó… ‚Ä¶   Sporto terminŇ≥ Ňĺodynas

  • Ressource (Computerprogramm) ‚ÄĒ Die Ressource (engl. resource) einer Software sind die Dateien, die nicht den Ablauf (Algorithmus) des Programms festlegen, sondern das Hintergrundwissen f√ľr den Ablauf speichern. Ressourcen sind beispielsweise W√∂rterbuch Dateien bei… ‚Ķ   Deutsch Wikipedia

  • Fortune (Computerprogramm) ‚ÄĒ Das Computerprogramm Fortune ist traditionell auf Computern mit Unix oder Linux als Betriebssystem zu finden. Es existieren aber auch f√ľr Windows entsprechende Programme. Seine Funktion besteht darin, ‚Äěfortune cookies‚Äú (Gl√ľckskekse) und andere… ‚Ķ   Deutsch Wikipedia

  • Linker (Computerprogramm) ‚ÄĒ Unter einem Linker oder Binder (auch: ‚ÄěBindelader‚Äú) versteht man ein Computerprogramm, das einzelne Programmmodule zu einem ausf√ľhrbaren Programm zusammenstellt (verbindet). Auf IBM Gro√ürechnersystemen wird der Linker linkage editor (englisch)… ‚Ķ   Deutsch Wikipedia

  • Quine (Computerprogramm) ‚ÄĒ Ein Quine ist ein Computerprogramm, das eine Kopie seiner selbst (√ľblicherweise seines Quelltextes) als Ausgabe schreibt. Es handelt sich somit um eine Form der Selbstbez√ľglichkeit. Hacker und Geeks sehen es als sportliche Herausforderung, die… ‚Ķ   Deutsch Wikipedia

  • Trojanisches Pferd (Computerprogramm) ‚ÄĒ Als Trojanisches Pferd (englisch Trojan Horse), auch kurz im EDV Jargon Trojaner[Anm.] genannt, bezeichnet man ein Computerprogramm, das als n√ľtzliche Anwendung getarnt ist, im Hintergrund aber ohne Wissen des Anwenders eine andere Funktion… ‚Ķ   Deutsch Wikipedia


Share the article and excerpts

Direct link
… Do a right-click on the link above
and select ‚ÄúCopy Link‚ÄĚ

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.