Studium, Ausbildung und Beruf

web uni-protokolle.de
 powered by
NachrichtenLexikonProtokolleBücherForenSamstag, 24. August 2019 

C (Programmiersprache)


Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
Die Programmiersprache C wurde von Ken Thompson und Dennis Ritchie in den frühen 1970-er Jahren für das neu entwickelte Betriebssystem Unix entworfen. Ken Thompson passte zunächst die Programmiersprache BCPL auf seine Bedürfnisse an und nannte so entstandene Sprache " B " (nach den "Bell Labs" in denen Sprache entwickelt wurde). Aus dieser Sprache entstand C. Die grundlegenden Programme aller Unix -Systeme und die Kerne vieler Betriebssysteme sind in C programmiert. heute populäre Sprache C++ ist aus C hervorgegangen und gegenüber unter Anderem um Möglichkeiten zur objektorienterten und Programmierung erweitert. Auch andere moderne Sprachen haben Wurzeln in C.

Inhaltsverzeichnis

Überblick

C ist eine Programmiersprache die auf allen Computersystemen zur Verfügung steht. Im Gegensatz zu BASIC gibt es seit der Definition von ANSI C relativ einheitliche Implementierungen auf den verschiedenen Plattformen . In jedem C-System steht auch die Standard C Library zur Verfügung. Dies und die sehr Performance der resultierenden Programme erklärt die weiterhin hohe Popularität der Sprache sowohl im kommerziellen als auch im Open-Source -Bereich.

Es gibt Meinungen dass C softwaretechnologisch gesehen nicht dem heutigen Stand der entspreche oft wird C auch als portierbarer Highlevel -Assembler bezeichnet. Dem lässt sich entgegen halten die Kerne fast aller heute verbreiteten Betriebssysteme C implementiert wurden (und dies obwohl C++ seit Mitte der 1980-er Jahre zur Verfügung steht wenn auch der jetztigen ISO-genormten Form erst seit 1998). eignet sich hervorragend für die Systemprogrammierung anders die Sache jedoch bei der Anwendungsentwicklung aus. wird C zunehmend durch die Sprachen C++ Java und C# verdrängt die gemeinsam haben dass sie über Möglichkeiten zur objektorientierten Programmierung verfügen und im Bezug auf Wartbarkeit Entwurfsunterstützung Abstraktionsniveau betriebssystemunabhängige Ablauffähigkeit erweitern und verbessern.

An anderer Stelle zeigen sich die Struktur und der kleine Umfang der Sprache großer Vorteil: Die Portierung eines C-Compilers auf eine neue Prozessorplattform verglichen mit anderen Sprachen wenig aufwändig so sich dies vom einfachsten Mikrocontroller bis zum Großrechner-Prozessor praktisch immer lohnt. den Entwickler bedeutet das dass er egal welche Plattform er programmiert immer davon ausgehen einen C-Compiler zu bekommen. Die prozessor-spezifische Programmierung Assembler bleibt ihm dadurch ganz oder weitgehend und er kann Quellcode den er für Plattformen geschrieben hat auf eine neue Plattform und dieser wird (ganz ohne oder mit Änderungen) laufen.

Die Sprachbeschreibung wurde 1972 erstmals publiziert.

Ein ausführbares C- Programm wird durch den so genannten Linker oder Binder aus Objektcode erzeugt (gebunden). Die Objektcodedateien werden durch den Compiler aus Textdateien erzeugt (übersetzt) die eine Anzahl Funktions- Variablendefinitionen enthalten. Ein ausführbares Programm muss eine mit dem Namen main enthalten.

Hallo-Welt -Programm in C

Der folgende Code stellt ein einfaches dar das eine Meldung auf dem Standardausgabemedium

 #include <stdio.h>  

 int main (void) { printf("Hallo Welt!\n"); 0; }  

Kontrollstrukturen

If ... else

 if ( Bedingung ) {  Anweisungen ; } [else {  Anweisungen ; }]  

While- Schleife

 while ( Bedingung ) {  Anweisungen  }  

Do ... while

 do {  Anweisungen  } while( Bedingung );  

For-Schleife

 for ( Startausdruck ;  Bedingung ;  Inkrementierausdruck ) {  Anweisungen  }  

Switch-Ausdruck

 switch ( Ausdruck ) { case marke1 :  Anweisungen ; break; case marke2 :  Anweisungen ; break; default :  Anweisungen ; }  

Bewertung von Sprachmerkmalen

Stärken

  • minimalistischer Sprachumfang der kleinste bekannte C-Compiler besteht 3742 Bytes C-Code und kann sich selbst
    • C-Programme bestehen nur aus Unterprogrammen .
    • Das Hauptprogramm ist ein Unterprogramm mit dem Namen main
    • Kontrollstrukturen für strukturierte Programmierung
    • Umfangreiche Datenstrukturen (Feldkonstanten struct Bitfelder)
    • Vorbelegung aller Datenstrukturen mit Konstanten
    • Keine symbolischen Konstanten (ersetzt durch Makroprozessor )
    • Keine dynamische Speicherverwaltung (ersetzt durch Bibliotheksfunktionen)
    • Keine Felder (ersetzt durch Feldkonstanten und Behandlung Feldern als Zeiger)
    • Zeigerarithmetik ermöglicht die effiziente Behandlung von Feldzugriffen usw.
    • Strings ersetzt durch eingebaute Stringkonstanten und einfache
    • Zeiger auf Unterprogramme ( Funktionszeiger ) in Datenstrukturen speicherbar
    • Einfache Variablen nur als Wertparameter Felder nur als Referenzparameter
    • Referenzparameter für einfache Variablen werden durch Zeiger ersetzt.
  • Hardwarenahe Programmierung ist möglich direkter Umgang mit Bits Bytes direkter Speicherzugriff und Zeigerarithmetik
  • niedriger Abstraktionsgrad
  • Präprozessor zur Spracherweiterung und bedingten Übersetzung
  • Linker ( Binder ) (C war eine der ersten Sprachen das Einbinden von externen vorübersetzten Routinen in Sprachdefinition berücksichtigt)
  • Viele Optimierungen bei Übersetzung möglich
  • Ein C-Compiler ist auf nahezu jedem modernen vorhanden sei es ein kleiner 8-Bit-Kontroller oder High-End -64-Bit-Prozessor.

Schwächen

  • Stringunterstützung
    • Den Typ String (Zeichenkette) gibt es nicht im Sprachstandard. wird ein Zeichenfeld verwendet das mit einem abgeschlossen wird. Die Speicherverwaltung von Zeichenketten muss Programmierer vorgenommen werden.
  • Felder
    • C kennt zwar den Datentyp Feld und sogar die Definition von Feldern die mit vorbelegt sind. Intern werden Felder jedoch immer Zeiger verwaltet. Dies bedeutet dass eine eventuell dynamische Speicherverwaltung von Feldern vom Programmierer implementiert muss. Auch die Feldgröße wird beim Zugriff nicht überprüft. Durch Programmierfehler können Speicherbereiche durch illegale Feldzugriffe während Laufzeit unabsichtlich verändert werden.
  • "Wilde" Zeiger
    • Man kann Zeiger auf beliebige Stellen des richten. Insbesondere zeigen nicht explizit initialisierte Stack -Variablen oft auf beliebige Stellen des Speichers. Folge sind schwer zu diagnostizierende Fehler.
  • Speicherverwaltung
    • Der Programmierer muss den dynamischen Speicher selbst Hierzu stehen in der Regel Bibliotheksfunktionen zur Verfügung.
  • Portabilitätsprobleme
    • C schreibt die Speichergröße verschiedener Typen in der Sprachdefinition nicht vor. Dies die Portierung bestehender Programme auf andere auch Prozessoren . Es ist nur zugesichert dass ein int nicht länger sein darf als ein int. In den 1980-er und 1990-er Jahren wurden vorwiegend 32-Bit Systeme wie VAX 68000 i386 eingesetzt. Bei diesen waren Zeiger int und long alle 32 Bits lang so dass dies als Quasistandard etabliert hat. Dies bereitet bei der Portierung auf modernere 64-Bit-Architekturen falls der Programmierer von bestimmten Längen ist.
    • Einige weitere Eigenschaften der Sprachdefinition (Ergebnistyp bei Ausrichtung ( Alignment ) von Datentypen) bereiten ebenfalls Probleme wenn der empfohlenen abstrakten Typen (wie ptrdiff_t für Zeigersubtraktionen size_t für Größen von Speicherbereichen) direkt fundamentale wie int verwendet werden.
    • In der Sprachversion C99 sind Datentypen mit Bit-Längen definiert ( int8_t int16_t etc.).

Wie man der Formulierung der Schwächen entnehmen kann sind dies nicht eigentlich Schwächen Programmiersprache sondern ein zu freier Umgang der mit ihren Möglichkeiten. Man kann also durchaus daß die größte Stärke von C - Freiheit des Progammierers mit Zeigern und Speicherstrukturen gleichzeitig ihre größte Schwäche ist. Da dieser Umgang der Programmiersprache mit dem Speicher in Umgebungen ( Banken Börsen Versicherungen ...) leicht hohe Schäden nach sich kann wird hier mittlerweile ernsthaft erwogen diese bei neuen Projekten zu verbieten.

Siehe auch

Literatur


Externe Verweise



Bücher zum Thema C (Programmiersprache)

Dieser Artikel von Wikipedia unterliegt der GNU FDL.

ImpressumLesezeichen setzenSeite versendenSeite drucken

HTML-Code zum Verweis auf diese Seite:
<a href="http://www.uni-protokolle.de/Lexikon/C_(Programmiersprache).html">C (Programmiersprache) </a>