22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Beschreibung, die üblicherweise natürlichsprachlich ist, muß die einzelnen Leistungen exakt beschreiben. Eine<br />

formale Beschreibung <strong>der</strong> Anfor<strong>der</strong>ung in deskriptiver Form garantiert die Exaktheit, da die Formeln eine<br />

eindeutige Leseweise garantieren. In unseren Fall ist durch die Regeln 1–3 aus 1.2.1.1 eine präzise Anfor<strong>der</strong>ungsdefinition<br />

gegeben.<br />

Wir könnten nun unsere formalen Anfor<strong>der</strong>ungen mit minimalen Än<strong>der</strong>ungen in eine logische Programmiersprache<br />

(Prolog) umschreiben, bzw. wir hätten unsere Anfor<strong>der</strong>ungen direkt in dieser Sprache formulieren<br />

können. Da die logischen Programmiersprachen ausführbar sind, wären wir mit <strong>der</strong> Systementwicklung (GGT)<br />

fertig! Es genügt die Problembeschreibung, eine Programmentwicklung ist nicht mehr notwendig, denn wir<br />

bekommen alle Antworten durch Anfragen wie z.B. GGT(12,15,t)? Lei<strong>der</strong> lassen sich nicht alle Probleme in<br />

den logischen Programmiersprachen darstellen, und weiter ist auch die Effizienz dieser Programmiersprachen<br />

in <strong>der</strong> Anwendung bei weitem nicht ausreichend. Daher muß man überlegen, wie man die gefor<strong>der</strong>ten Ergebnisse<br />

erreichen kann. Hier beginnt die eigentliche Programmentwicklung als intuitiver Prozess, <strong>der</strong> sich nicht<br />

durch standardisierte Verfahren durchführen läßt.<br />

Auch wenn es kein mechanisches Verfahren gibt und nie geben kann, wie in den “Grundzügen <strong>der</strong> <strong>Informatik</strong><br />

IV” nachgewiesen wird, so gibt es trotzdem eine Methodik des Programmierens. Es gibt zwei Klassen <strong>der</strong><br />

methodischen Programmentwicklung:<br />

1. man führt eine systematische Überführung <strong>der</strong> deskriptiven Beschreibung in ein funktionales o<strong>der</strong> imperatives<br />

Programm (Programmsynthese) nach bereits bewiesenen Regeln durch, <strong>der</strong>en geschickte Auswahl<br />

die eigentliche Programmentwicklung bedeutet, o<strong>der</strong><br />

2. man hat einen Einfall für ein Verfahren, von dem dann nachträglich geprüft werden muß, ob es <strong>der</strong><br />

Beschreibung des Systems entspricht (Verifikation).<br />

In <strong>der</strong> Praxis liegt eine Mischform vor. Man führt die Transformation nach bewährten aber noch nicht bewiesenen<br />

Regeln durch. Ein intuitiver Einfall ist eine Erweiterung <strong>der</strong> Regelmenge. Da die Korrektheit <strong>der</strong><br />

Regel fehlt muß eine Verifikation des Programms durchgeführt werden. Die bewährten Regeln sind lei<strong>der</strong> nur<br />

ein individueller Erfahrungsschatz. Eine brauchbare Systematik liegt noch nicht vor. Ihre Aufgabe ist es, sich<br />

dieses Regelwissen anzueignen.<br />

Hat man ein Verfahren (Algorithmus) gefunden, das <strong>der</strong> Anfor<strong>der</strong>ung entspricht, und hat man dieses Verfahren<br />

in einer imperativen o<strong>der</strong> funktionalen Sprache dargestellt (Programm), dann geht <strong>der</strong> Rest weitgehend<br />

automatisch. Das funktionale o<strong>der</strong> imperative Programm wird durch ein spezielles Programm (Übersetzer<br />

o<strong>der</strong> Compiler) in ein Maschinenprogramm übersetzt, das dann über die Schaltungen interpretiert wird.<br />

Programmentwicklung ist ein zu einen Teil intuitiver und zum an<strong>der</strong>en Teil automatisierter Prozeß, Anfor<strong>der</strong>ungen,<br />

die informal o<strong>der</strong> in einer höheren Logik formal beschrieben sind, in Programme überzuführen,<br />

die dann über Schaltungen einer Maschine, also durch Interpretation <strong>der</strong> Aussagenlogik, durchgeführt werden.<br />

Programmentwicklung besteht somit aus einer Reihe von Übersetzungen von einer Sprachebene in die<br />

nächst “tiefere”, ohne die Bedeutung bei <strong>der</strong> Übersetzung zu verän<strong>der</strong>n. Es ist ein zentrales Forschungsziel<br />

<strong>der</strong> <strong>Informatik</strong>, die Übersetzungsschritte immer mehr zu mechanisieren, unter vollem Bewußtsein, daß dies<br />

nie vollständig möglich sein wird.<br />

Wir können aber auch die an<strong>der</strong>e Richtung betrachten, die die Geschichte <strong>der</strong> <strong>Informatik</strong> wi<strong>der</strong>spiegelt: Die<br />

Aussagenlogik, realisiert über Schaltungen, erlaubt uns die Konstruktion von Maschinen (Schickard 1623: Rechenuhr),<br />

die die arithmetischen Operationen durchführen können. Die Idee, das Verfahren <strong>der</strong> Berechnung zu<br />

codieren und auch in den Rechner abzuspeichern, führt uns zum Rechner, <strong>der</strong> in <strong>der</strong> Maschinensprache universal<br />

programmierbar ist. 4 Aufgrund <strong>der</strong> wenigen Ausdrucksmöglichkeiten (mehr würde die Hardwarepreise<br />

in die Höhe treiben) <strong>der</strong> Maschinensprache ist das Programmieren aufwendig und daher fehlerträchtig.<br />

4 Falcon 1728: Webstuhl mit Lochplatten zur Steuerung des Musters, von Jacquard 1805 verbessert, Babbage: digitaler programmgesteuerter<br />

Rechner auf mechanischer Basis, Zuse 1934 und Aiken 1944 relaisgesteuerter Rechner, Eckert und Mauchley<br />

1964 röhrengesteuerter Rechner, Zemanek erster transistorgesteuerter Rechner in Europa

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!