Um zu verstehen, warum man in C einen Standard eingeführt hat bedarf es ein wenig mehr der Geschichte zu dieser Sprache.C C++ C/C++ ANSI C Programmieren C Kurs Programmierung Linux Systemprogrammierung C Programmierung ANSI C Standard C C Kurs Kapitel 1: Einstieg in C

Um zu verstehen, warum in C ein Standard eingeführt wurde, bedarf es ein wenig der Geschichte zu dieser Sprache.

1.1. Historische Entwicklung            zurück  Ein Kapitel tiefer  zum Inhaltsverzeichnis

C wurde 1972 von Dennis Ritchie erfunden, wobei "erfunden" nicht ganz der richtige Ausdruck ist. C wurde aufgrund einiger Einschränkungen der Vorgängersprache B implementiert und hauptsächlich für das Betriebssystem UNIX entwickelt. Denn vorher war UNIX vollständig in Assembler programmiert.

Als die ersten frei erhältlichen Compiler für C erschienen, war der Siegeszug nicht mehr aufzuhalten. C wurde im Zusammenhang mit UNIX zur erfolgreichsten Sprache überhaupt.

C wurde aber nicht entwickelt, um Software zu schreiben, sondern für Programmierer, die Compiler entwickelten. Und genau da lag das Problem. Jeder Compiler-Hersteller kochte sein eigenes Süppchen und erweiterte die Programmiersprache um einige Funktionen oder ließ die eine oder andere bestehende wegfallen.

Mit der Zeit entstanden immer mehr unterschiedliche C-Dialekte, und eine Portierung von einem zum anderen System kam dem Neuschreiben eines Programms gleich.

1.2. Der ANSI C Standard            zurück  Ein Kapitel tiefer  Ein Kapitel höher  zum Inhaltsverzeichnis

Schließlich hatte sich eine Gruppe von Compiler-, Hardware- und Software-Entwicklern zusammengefunden, mit der Absicht, das Problem der Vielfalt der Sprachendialekte zu beheben. Die so entstandene Vereinigung nannte sich "A-merican National Standard Institute" (kurz ANSI). Es wurde ein Entwurf für einen gemeinsamen Standard und dessen Einhaltung entwickelt. 1989 war es dann endlich soweit: Der Entwurf wurde vorgelegt und auch von der "International Standards Organization" (ISO) übernommen. In der Kurzform hieß er C89-Standard. Mittlerweile ist der C99-Standard aktuell, der 1999 festgelegt wurde. Wobei ich hier anmerken muss, dass der echte ANSI C99-Standard bei noch keinem Compiler vollständig implementiert ist. Die meisten Compiler basieren noch auf der im Jahre 1995 aktualisierten ISO/IEC-Norm 9899. In diesem Buch werden einige neue Datentypen, Funktionen und Makros, die mit dem ANSI C99-Standard eingeführt wurden, in einem eigenen Kapitel kurz erwähnt.

1.3. Der Vorteil des ANSI C Standards            zurück  Ein Kapitel tiefer  Ein Kapitel höher  zum Inhaltsverzeichnis

Der Hauptvorteil des ANSI C-Standards ist die Portabilität von C-Programmen. Das bedeutet, wenn Sie ein Programm auf Plattform A geschrieben haben und übersetzen, lässt sich dieses Programm auch auf Plattform B übersetzen. Natürlich ist damit eine Neuübersetzung des Quellcodes gemeint und nicht das ausführbare Programm. ANSI C-Compiler gibt es für über 40 Systeme, vom kleinsten 8-Bit-Computer bis hin zum Superrechner.

Nicht portabel hingegen sind hardwarenahe bzw. betriebssystemspezifische Operationen. Wenn Sie zum Beispiel ein Programm für UNIX/Linux schreiben, das die Grafikkarte anspricht, wird das Programm seine Ausführung auf anderen Systemen verweigern.

Es gibt natürlich noch eine Reihe von weiteren Standards, die aber in diesem Buch nicht behandelt werden.

1.4. Vorteile und Nachteile der Programmiersprache C            zurück  Ein Kapitel tiefer  Ein Kapitel höher  zum Inhaltsverzeichnis

Auch wenn alles nur noch von C++ redet, gibt es noch eine Menge guter Gründe C zu lernen. Hier einige davon:

Natürlich gibt es auch einige Nachteile der Programmiersprache C:

Es soll jedoch nicht unerwähnt bleiben, dass immer noch die meisten Programme in C geschrieben sind. Wenn solche Programme den Bedürfnissen einer Anwendergruppe angepasst oder allgemein verbessert werden müssen, sind gute C-Kenntnisse von Vorteil. Es stellt sich doch immer wieder heraus, dass viele (C-) Programmierer hauptsächlich damit beschäftigt sind, Fehler (Speicherlecks, Pufferüberläufe usw.) auszubügeln.

1.5. C in diesem Buch            zurück  Ein Kapitel höher  zum Inhaltsverzeichnis

Im Rahmen dieses Buchs werde ich mich nicht ausschließlich mit ANSI C befassen. In manchen Kapiteln ist das einfach nicht möglich. Aber ich werde die Programme - sofern möglich - so schreiben, dass diese auf den gängigen Betriebssystemen wie Windows, MS-DOS unter einer Win32-Konsole (besser bekannt als MS-DOS-Eingabeaufforderung) oder Linuxartigen Systemen ausführbar sind. In solchen Fällen weise ich am Anfang eines nicht ANSI C-Standard entsprechenden Kapitels gesondert darauf hin.

Weiter mit Kapitel 2: Was benötige ich zu C            zum Inhaltsverzeichnis