C
C ist eine imperative, nicht Objekt orientierte, Highlevel Programmiersprache, welche in ihren Anwendungsmöglichkeiten uneingeschränkt ist. Es ist möglich in C Betriebsystem Entwicklung zubetreiben, eben so wie die Erstellung einfacher Userland Anwendungen.
Inhaltsverzeichnis |
Kompilierung
Im Gegensatz zu Sprachen wie Java, C# oder PHP wird C weder interpretiert noch in Bytecode übersetzt was auch den immensen Vorteil der Sprache ausmacht. Der Code wird in Assembler umgewandelt und danach gelinkt, durch dieses Verfahren ist C um einiges effizienter als andere Sprachen dafür jedoch nicht so mächtig. Wofür man in Perl 5 Zeilen braucht kann in C das 6-Fache benötigen.
Sicherheit
Da C in ASM übersetzt wird gibt es eine Vielzahl von Sicherheitschwachstellen die bei unaufmerksamer Programmierung auftreten können. Der Klassiker ist der Buffer Overflow, welcher zu einer Ausführung von Programmcode führen kann. Auch wenn viele Betriebsystemhersteller bemüht sind Sicherheit-Mechanismen(ASLR, Non-Exec-Stack) in ihre Produkte zu integrieren, ist es meist nur ein Hindernis. Aus diesem Grund ist es Aufgabe des Coders sicheren Code zu verfassen.
Beispiele
Hallo Welt!
#include <stdio.h> //Standard IO Bibilothek einbinden int main(int argc, char **argv[]) //entry point { printf("Hallo Welt!"); //Ausgabe an das Terminal. return 0; //Programm ohne fehler beenden }
Der erste Buffer Overflow
#include <stdio.h> //Standard IO Bibilothek einbinden char a_to_small_buffer[10]; int main(int argc, char **argv[]) { strcpy(a_to_small_buffer, argv[1]); //Das erste Argument nach a_to_small_buffer verschieben return 0; //Programm (hoffentlich) fehlerfrei beenden! }