Webdesign Definition / Lexikon C - Programmiersprache
Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories für das Betriebssystem Unix entwickelte. Seitdem ist sie auf vielen Computersystemen verbreitet.
Die Anwendungsbereiche von C sind sehr verschieden. Es wird zur System- und Anwendungsprogrammierung eingesetzt. Die grundlegenden Programme aller Unix-Systeme und die Systemkerne vieler Betriebssysteme sind in C programmiert. Zahlreiche Sprachen, wie C++, Objective-C, C#, Java, PHP oder Perl orientieren sich an der Syntax und anderen Eigenschaften von C.
Überblick
C ist eine Programmiersprache, die auf fast allen Computersystemen zur Verfügung steht. Sie zählt zu den sogenannten prozeduralen Programmiersprachen. Um den Wildwuchs zahlreicher Dialekte einzudämmen, wurde C mehrfach standardisiert (C89, C95, C99, ISO-C). Abgesehen vom Mikrocontrollerbereich, wo eigene Dialekte existieren, sind die meisten aktuellen PC-/Server-Implementierungen eng an den Standard angelehnt; eine vollständige Implementierung aktueller Standards ist aber selten. In den meisten C-Systemen mit Laufzeitumgebung steht auch die genormte Standard C Library zur Verfügung. Dadurch können C-Programme, die keine sehr hardware-nahe Programmierung enthalten, in der Regel gut auf andere Zielsysteme portiert werden. Konzeptionell ist C auf einfache Kompilierbarkeit ausgelegt. Die Compiler erzeugen in der Regel aber auch nur wenig Code zur Gewährleistung der Sicherheit zur Laufzeit der Programme.
Die Verbreitung von C ist hoch, und viele Programmierschnittstellen für Anwendungsprogramme werden in Form von C-Schnittstellen implementiert.
Verwendung
Das Haupteinsatzgebiet von C liegt in der Systemprogrammierung, einschließlich der Erstellung von Betriebssystemen und der Programmierung von eingebetteten Systemen. Der Grund liegt in der Kombination von erwünschten Charakteristiken wie Portabilität und Effizienz mit der Möglichkeit, Hardware direkt anzusprechen und dabei niedrige Anforderungen an die Laufzeitumgebung zu haben.
Auch Programme für Endanwender werden oft in C erstellt.
Wegen der relativ hohen Geschwindigkeit und geringen Codegröße werden Compiler, Programmbibliotheken und Interpreter anderer höherer Programmiersprachen (wie zum Beispiel die Java Virtual Machine) oft in C implementiert.
C wird als Zwischencode einiger Implementierungen höherer Programmiersprachen verwendet. Dabei wird diese zuerst in C-Code übersetzt, der dann kompiliert wird. Dieser Ansatz wird entweder verwendet, um die Portabilität zu erhöhen (C-Compiler existieren für nahezu jede Plattform) oder aus Bequemlichkeit, da kein maschinenspezifischer Codegenerator entwickelt werden muss. Einige Compiler, die C auf diese Art benutzen, sind EiffelStudio, Esterel, Gambit, der Glasgow Haskell Compiler, einige LISP-Compiler, Lush, PyPy, Sather, Squeak und Vala.
C wurde als Programmiersprache und nicht als Zielsprache für Compiler entworfen. Als Zwischensprache ist es daher eher schlecht geeignet. Das führte zu C-basierten Zwischensprachen wie C--.
C wird oft für die Erstellung von Anbindungen genutzt (zum Beispiel Java Native Interface). Diese Anbindungen erlauben es Programmen, die in einer anderen Hochsprache geschrieben sind, Funktionen aufzurufen, die in C implementiert wurden. Der umgekehrte Weg ist oft ebenfalls möglich und kann verwendet werden, um in C geschriebene Programme mit einer anderen Sprache zu erweitern (zum Beispiel mod perl).
Eigenschaften
- C gehört zu den imperativen Programmiersprachen.
- C besitzt eine relativ kleine Menge an Schlüsselwörtern. Die Anzahl der Schlüsselwörter ist so gering, weil viele Aufgaben, welche in anderen Sprachen über eigene Schlüsselwörter realisiert werden, über einzubindende Bibliotheksroutinen (zum Beispiel die Ein- und Ausgabe auf der Konsole oder Dateien und die Verwaltung des dynamischen Speichers) oder über spezielle syntaktische Konstrukte (zum Beispiel Variablendeklarationen) realisiert werden.
- C ermöglicht direkte Speicherzugriffe und sehr hardwarenahe Konstrukte. Es eignet sich daher gut zur Systemprogrammierung. Sollen Programme portierbar sein, sollte von diesen Möglichkeiten aber möglichst wenig Gebrauch gemacht werden.
- C schränkt direkte Speicherzugriffe kaum ein. Dadurch kann der Compiler (anders als zum Beispiel in Pascal) nur sehr eingeschränkt bei der Fehlersuche helfen. Aus diesem Grund ist C für sicherheitskritische Anwendungen (Medizintechnik, Verkehrsleittechnik, Raumfahrt) weniger geeignet.
- C enthält einige sicherheitskritische Funktionen; so überschreibt zum Beispiel gets(), eine Funktion der Standardbibliothek, fremde Speicherbereiche (Pufferüberlauf), wenn es auf eine unpassende (zu lange) Eingabe stößt. Der Fehler ist innerhalb von C weder bemerk- noch abfangbar. Um den großen Vorteil von C - die Existenz zahlreicher älterer Quellcodes - nicht zu verlieren, unterstützen auch aktuelle Implementierungen weiterhin diese und ähnliche Funktionen, warnen jedoch in der Regel, wenn sie beim Übersetzen im Quelltext benutzt werden.
- Historisch bedingt existieren in C keine Funktionen zur positionierten Ausgabe. Es existieren jedoch zahlreiche Bibliotheken, die für das jeweilige Zielsystem eine solche Ausgabe ermöglichen.
- C verwendet im Quellcode einige Sonderzeichen (zum Beispiel ?{?, ?|? und ?&?), die in der Vergangenheit nicht auf allen Zielsystemen zur Verfügung standen. Das hat dazu geführt, dass C sich auf jenen Systemen nicht verbreiten konnte. C bietet zwar eine Alternativschreibweise über Trigraphen, was jedoch die Lesbarkeit des Quelltextes enorm verschlechtert.
- Eine Modularisierung in C erfolgt auf Dateiebene. Eine Datei bildet eine Übersetzungseinheit; intern benötigte Funktionen und Variablen können so vor anderen Dateien verborgen werden. Die Bekanntgabe der öffentlichen Funktionsschnittstellen erfolgt mit sogenannten Header-Dateien. Damit verfügt C über ein schwach ausgeprägtes Modulkonzept.
Die Programmiersprache C wurde mit dem Ziel entwickelt, eine echte Sprachabstraktion zur Assemblersprache zu implementieren. Es sollte eine direkte Zuordnung zu wenigen Maschineninstruktionen geben, um die Abhängigkeit von einer Laufzeitumgebung zu minimieren. Als Resultat dieses Designs ist es möglich, C-Code auf einer sehr hardwarenahen Ebene zu schreiben, analog zu Assemblerbefehlen. Die Portierung eines C-Compilers auf eine neue Prozessorplattform ist, verglichen mit anderen Sprachen, wenig aufwändig. Beispielsweise ist der freie GNU-C-Compiler (gcc) für eine Vielzahl unterschiedlicher Prozessoren und Betriebssysteme verfügbar. Für den Entwickler bedeutet das, dass unabhängig von der Zielplattform fast immer auch ein C-Compiler existiert. C unterstützt damit wesentlich die Portierbarkeit von Programmen, sofern der Programmierer auf Assemblerteile im Quelltext und/oder hardwarespezifische C-Konstrukte verzichten kann. Bei der Mikrocontroller-Programmierung ist C die mit Abstand am häufigsten verwendete Hochsprache.
Aktuelles
V&P bezieht neue Büroräume in der Schloßstr.
21.06.2010 | Seit Anfang Juni sind wir in unserem neuem Büro in der Schloßstr. 28 in Berlin Steglitz. Unsere neue Telefonnummer lautet...weiterlesen...
V&P erstellt Webseite für die schärfste Currywurst Berlin`s
10.12.2009 | Unsere Hauptstadt hat ja in Sachen kulinarischen und extravaganten Hochgenüssen schon so einiges zu bieten... weiterlesen...
Kundenmeinungen
"Ventzke & Partner ist ein professioneller Partner für die Homepage-Beratung, Erstellung und Aktualisierung! Das Design geht ins Auge und bleibt im Kopf! Mit klaren Strukturen, perfektem Serviceangebot und außergewöhnlicher Ideenvielfalt ergänzen sich die K.I.S.S. Security und Ventzke & Partner..."
(Diana Tanneberger, K.I.S.S. Security) weitere Kundenmeinungen...
Anfrage
Ventzke & Partner
Schloßstr. 28
12163 Berlin
Telefon:
030/ 505 671 67
E-Mail:
info@ventzke-partner.de