GdI2 - Systemnahe Programmierung in C- SS 2006
Vorlesungsüberblick
Die Vorlesung soll aufbauend auf den Informatik-Kenntnissen aus GdI1 und
ersten Programmiererfahrungen mit der Programmiersprache Java
grundlegende Kenntnisse der systemnahen Programmierung vermitteln.
Während sich moderne Anwendungsprogrammierung primär an den Zusammenhängen
und Begriffen des Anwendungsproblems orientiert und von den
tatsächlichen Abläufen im Rechner weitgehend abstrahiert wird,
sind bei systemnaher Programmierung gerade diese Abläufe im Rechner/Mikrocontroller
das zu lösende Problem. Damit stehen die mächtigen Abstraktionen eines
Betriebssystems, einer Middleware oder einer virtuellen Maschine nicht
oder zumindest nur in geringerem Umfang zur Verfügung.
Eine in diesem Umfeld weit verbreitete Programmiersprache ist C, die im
Rahmen der Lehrveranstaltung als Grundlage für Vorlesung und praktische Übungen
dienen wird.
Obwohl C aus softwaretechnischer Sicht nicht mehr aktuell ist und
für den Aufbau größerer Anwendungssoftwaresysteme äußerst kritisch gesehen werden
muss, ist ein großer Teil der heute in Betrieb befindlichen Software
in dieser Sprache geschrieben und man ist dadurch häufig mit der
Wartung oder Weiterentwicklung solcher Software konfrontiert.
Vor allem im Bereich von eingebetten Systemen und allen anderen
Arten von systemnaher Programmierung wird C auch heute noch häufig
für Neuentwicklungen eingesetzt. Viele Entwicklungswerkzeuge sind
auf diese Sprache ausgerichtet und in den Entwicklergruppen ist die
Erfahrung mit der Programmiersprache und der damit verbundenen Art der
systemnahen Programmierung nach wie vor sehr weit verbreitet.
Der Fokus der Lehrveranstaltung liegt einerseits auf der Architektur
systemnaher Software und den Zusammenhängen zwischen den Abstraktionen
der Programmiersprache und den tatsächlichen Strukturen und Abläufen in der Hardware
(z.B. Zeiger in C, virtueller Speicher, Speicherzellen des Hauptspeichers).
Andererseits wird besprochen, wie man bei der gerade im
ingenieurwissenschaftlichen Bereich wichtigen systemnahen Programmierung
- z.B. für für eingebettete Systeme - vorgeht und diskutiert, wann und wo man
eine sinnvolle Grenze zwischen systemnaher Software und der immer umfangreicher und
komplexer werdenden Anwendungssoftware ziehen sollte.
Im Vergleich zu Java sollen dabei vor allem auch die aus programmiertechnischer
Sicht problematischen Seiten von C und die daraus resultierenden Gefahren
beleuchtet werden.
Übungen
Die ersten Übungsaufgaben sind "zum Warmwerden" mit
der Sprache gedacht (Umgang mit den Sprachkonstrukten).
Danach planen wir ein oder zwei Aufgaben, in denen
mit einem Simulator für einen Controller (H8-Prozessor, wie
er z.B. bei den Lego-Robotern eingesetzt ist) einfache
Probleme, wie sie in einer eingebetten Umgebung typisch
sind, programmiert werden.
Interessierten Studierenden werden wir auch anbieten, die Software
dann auf einem echten System laufen zu lassen.
Vorlesungsskript
Zur Verfügung gestellt werden die in der Vorlesung eingesetzten Folien als Postscript- bzw. PDF-Dokumente zum Selbstausdruck. Als Alternative sind Folienkopien auf Basis von Gutscheinen erhältlich, die in den ersten Übungen erworben werden können. Die Gutscheine kosten 2,00 EUR. Folienausdrucke werden dann jeweils vor der Vorlesung ausgegeben.
Vertiefende Literatur