Entwicklung und Eigenschaften

| ### Programmieren in C von Prof. Dr. Rainer Thomas

# 1. Einführung

### 1.1 Entwicklung der Programmiersprache C

### 1.2 Prinzipielle Eigenschaften von C

## 1.1 Entwicklung der Programmiersprache C

### Vorläufer

1963
  CPL
  (Combined Programming Language)
  Erster Versuch der Synthese zwischen problemorientierter höherer Programmiersprache (ALGOL !) und maschinennaher Programmiersprache;
  zu komplex, schwierig zu erlernen und zu implementieren

1967
  BCPL
  (Basic Combined Programming Language) Martin Richards
  Beschränkung auf die wesentlichen Eigenschaften von CPL, auch heute noch verwendet (Entwicklung von Betriebssystemen und Compilern)

1969
  B
  Ken Thompson, Bell Labs
  Weitere Vereinfachung von CPL, Implementierung von UNIX auf DEC PDP-7;
  Hauptmangel : zu wenig allgemein, zu beschränkte Anwendungs- möglichkeiten (z.B. keine Datentypen außer Maschinenwort)

#### Programmiersprache C

1972
  erste Implementierung von C
  Dennis M. Ritchie, Bell Labs
  Implementierung von UNIX auf DEC PDP-11

1973
  Ergänzungen und Verbesserungen
  Brian W. Kernighan, Bell Labs

1978
  Sprachbeschreibung
  Kernigham/Ritchie "The C Programming Language", Prentice Hall
  (mit "C Reference Manual"), De-facto-Standard (--> KuR-C)

  Viele Jahre war C eng mit UNIX verbunden
  (von ca 13 000 Programmzeilen des damaligen UNIX-Systems waren nur ca 800 in Assembler geschrieben, der Rest in C, auch nahezu alle UNIX-Dienstprogramme sind in C geschrieben)
  --> hohe Portabiltät von UNIX.

  In der Folgezeit Ablösung von UNIX.
  Heute existieren C-Compiler für nahezu jedes Betriebssystem
  Problem : schwindende Portabiltät von C infolge zunehmender Dialektbildung.

1983
  Normungsbeginn
  (American National Standards Institute) ANSI Technical Committee X3J11

1988
  Norm-Entwurf
  (einschließlich Standard-C-Bibliothek)

1989
  ANSI-Standard X3.159-1989
  --> ANSI-C (einschließlich Standard-C-Bibliothek)

1990
  Normung durch ISO
  (International Standards Organisation)
  ISO-Standard ISO 9899:1990
  --> ANSI/ISO-C (Standard-C)

1994
  Ergänzung der ISO-Norm
  (Amendment 1 to Standard 9899:1990)

## 1.2 Prinzipielle Eigenschaften von C

### Prinzipielle Eigenschaften der Programmiersprache C

- C bildet in gewissem Sinn eine Synthese zwischen einer höheren Programmiersprache und einer maschinennahen Programmiersprache(--> Middle-Level Language).

  Die Sprache enthält sowohl alle notwendigen Sprachkonstrukte einer höheren Programmiersprache, als auch Elemente, die sehr maschinennahe Operationen ermöglichen :

  - Konstrukte einer höheren Programmiersprache :
    - Steueranweisungen zur Realisierung der Grundzerlegungstypen strukturierter Algorithmen (Reihung, Wiederholung, Auswahl)
    - Datentypenkonzept :
      einfache Datentypen und problemanpaßbare zusammengesetzte Typen
    - Unterprogramme :
      Funktionen mit Parameterübergabe

- Maschinennahe Sprachkonstrukte :
  - Direkter Zugriff zu Speicheradressen mittels Zeiger, verbunden mit einer sehr leistungsfähigen Adreßarithmetik
  - Registervariable
  - Direkte Manipulation einzelner Bits :
    Bitmanipulationsoperatoren
    Definition von und Zugriff zu einzelnen Bits und Bitgruppen innerhalb von Maschinenworten
  - Inkrement- und Dekrement-Operator
  - Zusammengesetzte Zuweisungsoperatoren

- C-Quellprogramme sind trotz Maschinennähe weitgehend portabel

- C unterstützt die strukturierte Programmierung

- C unterstützt den Aufbau von Programmen aus verschiedenen Quellmodulen
  sowie die gemischtsprachige Programmierung
  (--> modulare Programmierung)

- Der Sprachumfang von C ist klein, übersichtlich und relativ leicht erlernbar (nur 32 Schlüsselworte).
  Insbesondere enthält die Sprache selbst keinerlei vordefinierte Funktionen, auch nicht zur Ein- und Ausgabe.
  Es existiert aber eine - ebenfalls genormte - Standardbibliothek, die derartige Funktionen bereitstellt.

- C-Quellprogramme lassen sich sehr kompakt schreiben
  --> Gefahr der schlechten Lesbarkeit bei zu starker Kompaktheit

- C-Compiler erzeugen i.a. relativ kompakten und schnellen Objekt-Code

- C ist eine aus der Praxis entstandene und für die Praxis geschaffene Sprache,
  sie ist keine "didaktische" Sprache (wie z.B. PASCAL) :
  - geringere Exaktheit in der Sprachdefinition
  - keine strenge Typenkonsistenz (vielfältige automatische Typkonvertierungen)
  - vielfältige Fehlermöglichkeiten, die vom Compiler nicht erkannt werden
  --> C ist eine Sprache für den erfahrenen Programmierer, nicht für den Anfänger

Grundphilosophie : Programmers know what they are doing

Zum Inhaltsverzeichnis | Zum nächsten Abschnitt

###### Copyright © FH München, FB 04, Prof. Dr. Rainer Thomas
V - PC - 111 - 00 - TH - 05
V - PC - 121 - 00 - TH - 01