Einführung¶
Die Programmiersprache C¶
C ist eine recht kleine Programmiersprache. Das macht sie anpassbar und sehr gut auf großen wie auch kleinen (embedded) Systemen verwendbar.
Erfunden wurde sie im Jahr 1972 von Dennis Ritchie. Sie ist sehr Nahe an der Art wie ein Prozessor wirklich funktioniert.
Fast alle Betriebssysteme bzw ihr Kern sind in C programmiert. Man kennt vielleicht Microsoft Windows oder Linux :-).
Begriffe und Werkzeuge¶
Ich sage es kurz: Es gibt deutsche Begriffe für die meisten Werkzeuge. Aber die verwendet keiner. Software Entwicklung ist eine der Beschäftigungen die nebenbei einen sehr soliden technischen Wortschatz aufbauen.
Source Code¶
Der Text der die Grundlage eines Programmes ist. Source Code ist in einer Programmiersprache geschrieben. Im Rahmen dieses Kurses in C.
Compiler¶
Ein Compiler hat die Aufgabe den Source Code eines Programmes für einen Computer zu übersetzen. Er wird aus unseren Beispielen eine ausführbare Datei generieren. Entweder ein sogenanntes „Executeable“, oder ein „Object“ File.
Beispiel: gcc, clang
Preprozessor¶
Ein Preprozessor sitzt zwischen dem Source Code und dem Compiler. Der filtert im Source Code diverse Begriffe („#include“) und ersetzt sie. Bei #include mit dem Inhalt der Datei. Typischerweise eine Header Datei.
Preprozessor Statements beginnen immer mit einer Raute.
Beispiel: cpp
Integrated Development Environment (IDE)¶
Wäre zum Beispiel Visual Studio 2022 oder auch Visual Studio Code. Eine IDE kombiniert Editor, Compiler, Linker, Debugger und alles was man noch so brauchen könnte. Der Editor unterstützt typischerweise Syntax Highlighting. Das macht Source Code leichter bearbeit- und lesbar.
Makefile¶
Ein „Rezept“ das steuert wie ein Programm übersetzt werden muss.
Beispiel: make
Debugger¶
Ein Debugger erlaubt es Fehler in einem Programm zu finden. Man kann die Asuführung beobachten, den Inhalt von Variablen betrachten und Breakpoints setzen.
Beispiel: gdb, lldb
Profiler¶
Ein wichtiges Optimierungstool das zeig wo viel Zeit in einem Programm verbraucht wird. An dieses Stellen kann man dann Änderungen durchführen um hoffentlich eine schnelleres Executeable zu erhalten.
Linker¶
Notwendiges Tool um aus mehreren Object Files ein Programm zu erhalten. Nötig da größere Programme üblicherweise aus mehreren Dateien bestehen.
Beispiel: ld
h File (Header)¶
Header files beeinhalten deklarieren Datentypen und Funktionen.
c File (Source)¶
Source files fügen definieren die in Header Files erwähnten Funktionen.
Executeable¶
Eine ausführbare Datei.
Library¶
Ein binary das nicht ausführbar ist, aber von anderen Executables verwendet werden kann.
Andere Begriffe¶
Spaghetticode¶
Typischer Stil der am Anfang einer Programmierkarriere häufig genutzt wird. Da man das Gefühl für die Größe von Funktionen noch nicht entwickelt hat, entstehen lange wenig zusammenhängende Funktionen die schwer verständlich und wartbar sind. Diese Phase geht mit Erfahrung vorbei.
Coding Standard¶
Methode erfahrener Programmierer um Junior und Anfänger zu nerven. Nicht nur das man eine neue Programmiersprache und Beispiele meistern soll, verlangen diese auch noch einen gewissen Stil, einen Coding Standard, einzuhalten: Funkionen so, Variable auf diese Art, usw… Sprache für Kommentare auf Englisch…
Trotzdem wichtig weil der Source Code auf Dauer für alle besser les- und wartbar ist.