C-Programmierung: »Hansdampf« in allen Gassen

1972 erteilte der amerikanische Multimedienkonzern »AT&T« den Auftrag zur Entwicklung eines Betriebssystems für Großrechenanlagen. Die Kommandoebene mit dem Namen Unix begann schon bald einen Siegeszug durch die Computerwelt und wurde Taufpate für alle C-Entwicklungssysteme für den Atari ST.

C ist als »Entwicklungssprache« am Großrechner-Betriebssystem Unix beteiligt. Mit allen Dienstprogrammen wurde die Kommandoebene fast vollständig in diesem, ausschließlich zur Unix-Bearbeitung erfundenen Entwicklerdialekt geschrieben. Die universellen Eigenschaften von C zeigten sich indes erst später: Die Sprache eignet sich auch für andere Programmierprojekte.

C-Entwicklungspakete erfüllen im Gegensatz zu den meisten ST Compilern »ANSI«-Konventionen. Das »American National Standards Institute« erarbeitet Standards für industrielle Normen. Ähnlich der deutschen DIN Vereinbarungen sind solche Übereinkünfte nicht immer bindend. Im Fall der Programmiersprache C halten sich jedoch alle Hersteller an festgelegte Spezifikationen.

Zu anderen Programmiersprachen weist C deshalb ein markantes Unterscheidungsmerkmal auf: Sie funktioniert auf einer Großrechenanlage genauso wie daheim auf dem ST. Die Übernahme von Quelldateien in andere Compiler Systeme ist daher gewährleistet.

Die Standardisierung erlaubte es Atari, daß nahezu vollständig unter C entwickelte Betriebssystem Unix auf TT Computer zu übertragen. Dies, obwohl im Entwicklungsstadium der Kommandoebene die neue Atari Rechnergeneration noch gar nicht abzusehen war.

Die Lauffähigkeit auf fast allen Systemen verdankt C zusätzlich der konzeptionellen Besonderheit von Unix: Speicherplatz, auch bei Großrechnern lange Mangelware, war zu kostbar, um ihn an ein aufwendiges Betriebssystem zu verschwenden. Assembler, die Standardprogrammiersprache für Betriebssysteme, erzeugte zwar kurze und schnelle Programme, war jedoch der speziellen Aufgabenstellung nicht gewachsen. Die Konzeption von Unix war auf Komnatibilität zu allen Großrechenanlagen ausgerichtet. Nicht zu leisten für einen Assembler, der jeweils einen Mikroprozessor oder eine Prozessorfamilie anspricht. Dazu kommt, daß Assembler Programme auf die Hardware eines bestimmten Computers, die sog. Peripherie, zugeschnitten sind. Ritchies Plan war es, Unix zu einem »Dauerbrenner« unter den Betriebssystemen zu machen. Es sollte ständig aktualisiert und gewartet werden. Für Assembler-Programmierer eine fast unlösbare Aufgabe, da ihre ZahlenCodes keine Transparenz besitzen. Der Entwickler sah sich nach Hochsprachen um, die einerseits maschinennah, zugleich aber auch überschaubar waren. Favorisiert waren »B« und »BCPL« (»Basic Combined Programming Language«) [1].

Beide Sprachen entsprachen nicht Ritchies Anforderungen. Deshalb machte er sich an die Arbeit, eine neue Sprache zu entwickeln, mit der Unix programmiert werden kannte- Resultat ist das seit 1973 von Brian Kerninghan weiter verbesserte »C«.

Für das TOS der Atari-Computer ist derzeit eine ganze Reihe von C-Entwicklungspaketen erhältlich. Den Anfang machte »Alcyon-C von »Digital Research«, das allerdings über das Stadium. eines Provisoriums nicht herauskam. Als das Eis gebrochen war, folgten in kurzen Abständen »Laser-C«, »Lattice-C« und »Turbo-C«. In Deutschland besitzt »Turbo-C« von »Borland« einen hohen Marktanteil. Seine große Akzeptanz verdankt das Borland C einem kurzen; sehr schnellen Code und einem »Online«-Hilfssystem. Der Anwender kann damit jederzeit Programmierhinweise anfordern.

Gemessen an ihrer Leistungsfähigkeit ist »C« eine sehr »kleine« Sprache. Neben den üblichen Zuweisungs- und Rechenoperationen verfügt sie nur über wenige Kontrollstrukturen. Mit besonderen Fähigkeiten wartet sie durch genormte Funktionsbibliotheken auf. Funktionen können beliebig hinzugefügt oder aus bereits vorhandenen zusammengesetzt werden.

C ist praxisorientiert: Sie benutzt einen portablen (übertragbaren) Code und erlaubt die Entwicklung von Programmen für bestimmte Rechnerreihen. Einzelne Programmierschritte sind so transparent, daß auch mehrere Programmierer an einem Projekt arbeiten können. Ein ausgefeiltes System von Variablentypen - und Datenstrukturen erleichtert den Umgang mit diesem System. Ein »Zeigerkonzept« sorgt für den problemlosen Zugriff auf systemnahe Daten.

[1] M. Richards, »BCPL: A Tool For Compiler Writing And Systems Programming«, Proceedings AFIPS SCJJ, Vol. 34, Seiten 557-566, 1969.


Laurenz Prüßner
Aus: ST-Magazin 10 / 1990, Seite 73

Links

Copyright-Bestimmungen: siehe Über diese Seite