Download C/C++ Skriptum
Transcript
TU-Wien
Institut E114
Prof. DDr. F. Rattay
Einführung
Um dem Leser einen Überblick über verschiedene, Programmiersprachen, Konzepte und
Entwicklungsumgebungen zu geben, sollen im folgenden die wesentlichen Eigenschaften der in diesem
Skript behandelten Programmiersprache „C“ im Vergleich zu anderen Sprachen dargestellt werden.
„Hochsprachen“ und maschinennahe Sprachen
Prinzipiell benutzt man Programmiersprachen um dem Computer eine genaue Beschreibung einer von
ihm zu erledigenden Aufgabe zu geben. Da man diese Beschreibung nicht einfach umgangssprachlich
formulieren kann, ist eine Kommunikationsmethode erforderlich, die sowohl vom Rechner als auch vom
Menschen „verstanden“ wird. Von entscheidender Bedeutung ist die Frage, wie weit der Programmierer
sich an den Rechner annähern muß, um eine Programm entwerfen zu können, bzw. wie weit ihm der
Rechner, oder besser gesagt die verwendete Programmiersprache, entgegenkommt. Man spricht in diesem
Zusammenhang von sogenannten „Hochsprachen“, die dem Programmierer ein relativ hohes
Abstraktionsniveau bieten und im Gegensatz dazu von „Assembler“ oder „Maschinensprachen“. Um ein
Programm in Assembler zu programmieren sind genaueste Kenntnisse über den internen Aufbau des
Rechners notwendig. Der Programmierer muß z.B. wissen, wie die CPU des Rechners aufgebaut ist, aus
welchen Registern sie besteht und an welchen Adressen im Speicher ein bestimmtes BetriebssystemUnterprogramm (s. Kapitel 0, Kapitel 0) anfängt. Assembler bietet aber immerhin (im Unterschied zur
reinen Maschinensprache) die Möglichkeit Befehle mit einigermaßen verständlichen Kürzeln
darzustellen, z.B. wird ein Sprungbefehl, um an eine andere Stelle im Programm zu gelangen, oft durch
„JMP“ (für JuMP) abgekürzt.
Die reine Maschinensprache, die hauptsächlich in der Anfangszeit der Programmierung benutzt wurde,
bietet nicht einmal diesen Komfort, sondern codiert alle nötigen Anweisungen direkt im binären Format,
der einzigen Sprache, die der Rechner direkt versteht. Trotz des hohen Aufwandes und der großen
Fehleranfälligkeit, die Assembler-Programme mit sich bringen, haben sie auch heute noch ihre
Berechtigung, da sie nämlich in der Regel sehr schnell und sehr kompakt sind. Aus diesen Gründen wird
Assembler oft in systemnahen oder sehr geschwindigkeitsabhängigen Bereichen, wie z.B. der
Programmierung von Treibersoftware, verwendet.
Ein sehr viel höheres Abstraktionsniveau bieten die „Hochsprachen“, wie etwa BASIC, Pascal, COBOL,
Smalltalk usw. sowie die visuellen Entwicklungssysteme neuerer Bauart, wie etwa Visual BASIC, Delphi
oder Powerbuilder. Bei Verwendung einer solchen „höheren“ Programmiersprache sind genaue interne
Kenntnisse des Rechners nicht mehr notwendig. Es werden Befehle und Anweisungen angeboten, die auf
einer höheren Abstraktionsstufe liegen. So kann man z.B. Befehle zur einfachen Ausgabe von Text auf
dem Bildschirm verwenden, wie etwa writeln ("Hello World"); in Pascal, die relativ einfach zu verstehen
sind. Die gleiche Anweisung in Assembler besteht aus einer großen Anzahl kryptischer Befehle und
Zahlen im Hexadezimalformat [1]. Um einen Eindruck über die unterschiedlichen Abstraktionsniveaus zu
erhalten, ist im folgenden ein einfaches Beispielprogramm einmal in C und einmal in Assembler
dargestellt:
C++ Code:
#include "stdio.h"
main()
{
int i=0;
for(i=0;i<=9;i++)
printf("Hello World \n");
exit(0);
}
Die Programmiersprachen C und C++
Einführung
4