Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Durch das Konzept des Übersetzers (Rutishauser 1951) kann man sich von dieser frustrierenden Ebene befreien<br />
und seine Algorithmen als imperative Programme (in Fortran, Pascal, Eiffel, Modula usw.) schreiben. Doch<br />
auch hier hat man noch mit Problemen wie <strong>der</strong> Speicherverwaltung zu kämpfen. Davon kann man sich durch<br />
den Übergang zu funktionalen Programmen, die dann wie<strong>der</strong>um in imperative Sprachen übersetzt werden,<br />
befreien. Fühlt man sich sogar von <strong>der</strong> Algorithmusentwicklung belästigt, so muß man auf weitere Ergebnisse<br />
<strong>der</strong> Forschung hoffen, die die Programmsynthese automatisiert. Dann beschränkt sich die Systementwicklung<br />
nur mehr auf die Beschreibung, was man will. Das Wie, also das Programm, wird dann automatisch generiert.<br />
Diese Schichten <strong>der</strong> formalen Systeme machen einen Teil <strong>der</strong> Faszination <strong>der</strong> <strong>Informatik</strong> aus: Durch Übersetzung<br />
von einer oberen Schicht in die nächsttiefere kann man sich von Fesseln des unteren Systems befreien<br />
und in die höhere Ebene <strong>der</strong> formalen Systeme und damit auch des Denkens aufsteigen.<br />
Komplexere Softwaresysteme haben generell eine Schichtenstruktur. Auf <strong>der</strong> Basis einfacher Systeme baut<br />
man komplexere Systeme auf, die wie<strong>der</strong>um Basis <strong>der</strong> nächsten Entwicklung sind. Das leitet uns zum zweiten<br />
Schwerpunkt <strong>der</strong> Grundzüge <strong>der</strong> <strong>Informatik</strong> über.<br />
1.3 Methodisch-Technische Schwerpunkte<br />
Auf <strong>der</strong> Basis formaler Systeme können Programme entwickelt werden. Die Anwendung formaler Systeme, ist<br />
daher die wichtigste Aufgabe <strong>der</strong> Grundausbildung. Programme können von guter o<strong>der</strong> schlechter Qualität<br />
sein. Daher ist bei komplexeren Programmen wichtig, Techniken <strong>der</strong> Systementwicklung einzusetzen, die zu<br />
Programmen hoher Qualität führen. Die Technik <strong>der</strong> Systementwicklung nennt man Software Engineering.<br />
1.3.1 Programmieren: Anwendung formaler Systeme<br />
Im Zentrum <strong>der</strong> Anwendung steht das Programmieren in problemorientierten Sprachen und in maschinennahen<br />
Sprachen. Der Schwerpunkt wird hierbei auf die Programmiersprache Eiffel [Meyer, 1988, Meyer, 1992]<br />
und auf den Assembler des Motorolarechners [Kammerer, 1993] gelegt. Nach diesen beiden Semestern sollten<br />
Sie in <strong>der</strong> Lage sein, durch Selbststudium die Kenntnisse an<strong>der</strong>er Programmierprachen zu erwerben.<br />
Die Auswahl <strong>der</strong> Sprache Eiffel hat didaktische Gründe. Als Sprache zur Erklärung von Programmierkonzepten<br />
spielt Eiffel heute die gleiche Rolle wie Pascal vor etwa 20 Jahren. Eiffel ist die einfachste und konsequenteste<br />
Programmiersprache mit objektorientierten Konzepten (siehe Abschnitt 1.3.6). Die Erfahrungen <strong>der</strong> vorangegangenen<br />
Semester zeigen, daß Eiffel sich zur Einführung in objektorientierte Sprachen beson<strong>der</strong>s gut eignet.<br />
In Umfragen wurde Eiffel gegenüber C++ bevorzugt. Pascal wurde abgelehnt. Bei guter Kenntnis von Eiffel ist<br />
es ein leichtes nach C++ zu wechseln, das sich trotz softwaretechnisch schlechter Grundkonzeption langsam<br />
zum Industriestandard entwickelt. Die in <strong>der</strong> Schule übliche Sprache Pascal hat in <strong>der</strong> Schule zur Entwicklung<br />
einfacher Algorithmen ihre Berechtigung, ist für größere Systeme aber in ihrer mittlerweile veralteten Konzeption<br />
ungeeignet. Die Verbesserungsvorschläge in Richtung Modularisierung und Objektorientierung setzen<br />
in Pascal und C auf den festen Standard auf und bieten daher kein harmonisches Gesamtkonzept an.<br />
Die Auswahl des Assemblers ist durch die jeweiligen Arbeitsplatzrechner des FB20 gegeben. Derzeit sind die<br />
Rechner mit Motorola 680x0 ausgestattet.<br />
Bevor man programmiert, sollte man wissen, was man programmieren will. Es muß also die Anfor<strong>der</strong>ungsdefinition<br />
vorhanden sein. Die Programmiersprache Eiffel bietet dafür die Idee eines Kontraktes an: Wenn<br />
<strong>der</strong> Benutzer meines Programms die von mir vorgeschriebenen Voraussetzungen garantiert, dann garantiert<br />
mein Programm dem Benutzer die beschriebenen Ergebnisse. Die Voraussetzungen und Ergebnisse sollten<br />
nach Möglichkeit formal deskriptiv beschrieben sein, damit sie eindeutig sind und auch formal geprüft werden<br />
können. Daher werden wir zuerst einen Streifzug durch die Logik (Aussagen- und Prädikatenlogik erster Stufe)<br />
machen, bevor wir in die Programmiersprache Eiffel und in ihre Anwendung einsteigen.