1 Einleitung


1.1 Entwicklungsgeschichte der Sprache C
1.2 Kurzdarstellung der Sprache C
1.3 Einsatzgebiete


1.1 Entwicklungsgeschichte der Sprache C

1969 Ken Thomson (Bell Laboratories) erstellt erste Version von UNIX in Assembler => ist nicht portabel !!!

1970 Ken Thomson entwickelt auf einer PDP/7 die Sprache B als Weiterentwicklung der Sprache BCPL, B ist eine typlose Sprache, sie kennt nur Maschinenworte

1974 Dennis M. Ritchie Weiterentwicklung von B zu C, erste Implementation auf einer PDP 11

C ist in den USA weit verbreitet und findet auch bei uns immer mehr Anwendung. Dies hängt zum einen mit den Eigenschaften der Sprache C und zum anderen mit der wachsenden Verbreitung des Betriebssystems UNIX und seiner Derivate zusammen.

Als Quasi-Standard für die Programmiersprache C galt lange Zeit allgemein das folgende Buch:


  Brian W. Kernighan und Dennis M. Ritchie

  The C programming language 

  Prentice Hall, Englewood Cliffs N.Y. (1978).

Die in diesem Buch gemachten Festlegungen bezüglich Syntax und Semantik der Programmiersprache C stellten quasi den kleinsten gemeinsamen Nenner für alle C-Programme dar.

Inzwischen hat sich C zu einer eigenständigen, betriebssystemunabhängigen Programmiersprache entwickelt. Sie ist auf praktisch allen Rechnerplattformen vom PC bis hin zum Supercomputer und unter allen wichtigen Betriebssystemen verfügbar. Im Laufe der Zeit entstanden "C-Dialekte", die zusätzlich die dringende Notwendigkeit einer "richtigen" Standardisierung zeigten.

1988 hat das ANSI-Kommitee X3J11 diesen Sprachstandard für die Programmiersprache C veröffentlicht, der kurz ANSI C genannt wird. Neuere C-Compiler sollten dem ANSI-Standard entsprechen.

Das oben erwähnte Buch von Kernighan und Ritchie gibt es mittlerweile in einer neueren Auflage, die auch den ANSI-Standard als Grundlage beschreibt.


1.2 Kurzdarstellung der Sprache C

C nimmt eine Zwischenstellung zwischen Assembler und Hochsprache ein. Sie vereint zwei an sich widersprüchliche Eigenschaften:

- gute Anpassung an die Rechnerarchitektur (Hardware)

- hohe Portabilität

C-Compiler erzeugen sehr effizienten Code (sowohl bzgl. Laufzeit als auch bzgl. Programmgröße), daher kann für die meisten Anwendungsfälle auf den Einsatz eines Assemblers verzichtet werden. Die einfachere Programmierung bedingt kürze Entwicklungszeiten für die Software und die hohe Portabilität einfachere und vor allem schnellere Anpassungen an eine andere Hardware.

Bei Mikrorechnern ist ein Trend hin zu "maschinennahen" Hochsprachen festzustellen (TURBO-PASCAL, APL). C ist quasi schon von Hause aus maschinennah.

C ist eine vergleichsweise einfache Sprache (Daher nicht ganz einfach anzuwenden!!!). Sie kennt nur 4 Datentypen: char, int, float und double. Diese Grunddatentypen können noch qualifiziert werden. Auch zusammengefaßte Datentypen wie Vektoren(Felder) und Strukturen sind möglich, allerdings mit weniger eingebauten Kontrollen als z.B. in PASCAL.

Es gibt einfache Kontrollstrukturen: Entscheidungen, Schleifen, Zusammenfasssungen von Anweisungen (Blöcke) und Unterprogramme.

Ein-/Ausgabe ist nicht Teil der Sprache C sondern wird über Bibliotheksfunktionen erledigt. Weiterhin gibt es keine diffizielen Dateimanipulationen und keine Operationen auf zusammengesetzten Objekten als Ganzes (z.B. Zeichenketten).

Parameter werden als Werte an Funktionen übergeben, daher kann eine Funktion diese nicht ändern. Allerdings gibt es die Möglichkeit von Zeigern (Adressen) als Parametern, deren Zielobjekt dann natürlich geändert werden kann. Zeiger stellen sehr mächtige und vielseitige Anwendungsmöglichkeiten bereit. Sie werden durch eine automatische Adreßarithmetik unterstützt.

Für Datenwandlungen zwischen den einzelnen Typen gibt es kaum Beschränkungen, so daß man hier sehr flexibel ist. Weiterhin gibt es z.B. mittels der Speicherklasse "register" Bezüge zur Hardware.


1.3 Einsatzgebiete

Die Programmiersprache C findet heutzutage eine immer weitere Verbreitung, da sie einerseits fast so flexibel wie ein Assembler ist und andererseits über viele Möglichkeiten heutiger moderner Hochsprachen verfügt. Das hat dazu geführt, daß sich C besonders als Sprache für Betriebssystementwicklungen eignet (für die sie ja auch entwickelt wurde). Weiterhin lassen sich numerische Verfahren, Textverarbeitung und Datenbanken effizient in C realisieren. (Das Datenbankprogramm DBASE ist z.B. in C geschrieben.)

C gehört zu UNIX in dem Sinne, daß UNIX ohne C kaum vorstellbar ist (wohl aber C ohne UNIX). So ist z.B. die Syntax des UNIX Dienstprogrammes awk in vielen Dingen identisch mit der von C. Selbst das Lesen und Verstehen der UNIX-Dokumentation ist an vielen Stellen ohne C-Kenntnisse nicht möglich.

Eine Programmierung in C ist immer dann angebracht, wenn sehr portabler Code erzeugt werden soll, da keine andere Sprache (trotz Normung) dazu in dem Maße in der Lage ist wie C.

Mittlerweile gibt es viele verschieden C-Implementationen:

Auf UNIX Systemen heißt der C-Compiler CC und es gibt ein Dienstprogramm LINT, das ein C-Quellenprogramm unter strengen Maßstäben auf Portabilität prüft.

Für MS-DOS Rechner sind z.B. folgende C Compiler und Interpreter verfügbar: RUN/C (Interpreter), LATTICE C Compiler, AZTEK C Compiler, ZORLITE C Compiler, MICROSOFT C (Quick C) und TURBO-C sowie C++ von BORLAND. Die letzten 3 stellen dabei eine vollständige Programmierumgebung mit Editor und teilweise mit Debugger zur Verfügung (wie z.B. TURBO-PASCAL).


Zurück zum Inhaltsverzeichnis

 

11. November 1999, Peter Klingebiel, DVZ