22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Um Programmieren zu können, ist natürlich die exakte Kenntnis des formalen Systems, also <strong>der</strong> Programmiersprache<br />

notwendig. Manchen von Ihnen sind z.B. Syntaxdiagramme aus <strong>der</strong> Schule bekannt. Von <strong>der</strong><br />

syntaktischen Strukturbeschreibung werden wir ausgehen und die Wirkung (Semantik) <strong>der</strong> einzelnen Komponenten<br />

<strong>der</strong> Programmiersprache ebenso exakt beschreiben. Dafür werden wir eine funktionale Sprache verwenden.<br />

Da wir hier eine Sprache durch eine an<strong>der</strong>e erklären, haben wir einen Ebenenwechsel. Die Sprache,<br />

die eine an<strong>der</strong>e Sprache (bei uns Eiffel) beschreibt, wird daher Metasprache genannt. (Vorwarnung: Die beiden<br />

Sprachen verwenden zum Teil das gleiche Vokabular, sind aber durch die Art des Drucks stets unterscheidbar.)<br />

Obwohl die Sprache Eiffel auch viele Konzepte beinhaltet, die bereits in Pascal, Basic und noch einfacheren<br />

Sprachen vorhanden sind, gibt es nur wenige Gründe, die Entwicklung <strong>der</strong> exakten Beschreibung einer<br />

Programmiersprache im Rahmen einer Vorlesung <strong>der</strong> historischen Entwicklung <strong>der</strong> Programmiersprachen<br />

anzugleichen. Wir beginnen daher (erstmalig in diesem Semester) mit Klassen und Objekten und dem modularen<br />

Aufbau von Systemen auf <strong>der</strong> Basis bereits existieren<strong>der</strong> Module. Wir ergänzen dies dann durch<br />

konventionellere Konzepte wie Prozeduren und algorithmische Strukturen und gehen schließlich ein wenig<br />

auf die Auswertung von Formeln und Ausdrücken sowie an<strong>der</strong>e Details <strong>der</strong> Sprache ein, die für den eigentlichen<br />

Entwurf von geringer Bedeutung und eigentlich nur für das konkrete Ausprogrammieren von Details<br />

wichtig sind (, was in <strong>der</strong> Vorlesung im Hintergrund stehen soll). Die Strukturierung von Klassen über das<br />

Vererbungskonzept bildet dann den krönenden Abschluß dieser Vorlesung<br />

Exakte Kenntnis einer Programmiersprache ist notwendig, aber in keiner Weise hinreichend für die Programmentwicklung.<br />

Notwendig ist die Fähigkeit des Programmierens. Lei<strong>der</strong> gibt es kein allgemeines Verfahren, wie<br />

man programmiert. Daher kann das Programmieren auch nicht vermittelt werden. Die Programmierfähigkeit<br />

muß erworben werden! Analog zum Lernen einer Fremdsprache reicht Zuhören nicht aus. Sie müssen sprechen<br />

und an<strong>der</strong>e müssen zuhören, um Fehler zu korrigieren. Sprachunterricht bietet Vokabel, Grammatik, Redewendungen<br />

und erfor<strong>der</strong>t Training, Training, Training. Analog ist beim Erwerb <strong>der</strong> Programmierfähigkeit<br />

das Programmieren (Sprechen) unbedingt notwendig, aber wie<strong>der</strong>um nicht hinreichend! Damit Ihre Fähigkeit<br />

verbessert wird, müssen Sie Ihre Programme einer konstruktiven Kritik aussetzen: Code Review.<br />

Es wird immer wie<strong>der</strong> gefor<strong>der</strong>t, es soll doch gezeigt werden, wie man programmiert. Das ist aus theoretischen<br />

Gründen grundsätzlich unmöglich! Der Wunsch nach einem festen Verfahren, das immer wie<strong>der</strong> angewendet<br />

werden kann, ist aber auch eine unsinnige For<strong>der</strong>ung. Angenommen es gäbe ein Verfahren, wie Programme<br />

aus einer Problemstellung heraus entwickelt werden können, dann wäre dieses Programmsyntheseverfahren<br />

schon längst ein Programm und Programmieren somit wegrationalisiert (Ein Traum <strong>der</strong> KI!). Zum Erlernen<br />

<strong>der</strong> Programmierfähigkeit können wir also nur an Beispielen üben - kritisieren, üben - kritisieren, üben -<br />

kritisieren usw. Je<strong>der</strong> Schritt in disem Zyklus erweitert Ihr individuelles Regelsystem!<br />

Um Frustrationen auszuschließen: Sind Sie bei <strong>der</strong> Entwicklung eines Programms über den Aufwand verzweifelt,<br />

so können Sie sich trösten: Durch die neuen Erfahrungen wird die nächste Entwicklung sicher leichter!<br />

Grob formuliert: Ihr Aufwand für eine Neuentwicklung ähnlichen Schwierigkeitsgrades ist etwa reziprok zu <strong>der</strong><br />

Anzahl Ihrer bisher erfolgreich abgeschlossenen Entwicklungen. Wenn Sie sich die Kurve y=k/x ins Gedächtnis<br />

rufen, dann sind nur die Werte x

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!