Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

27.06.2006 Proseminar SS 20061 Evaluation der Programmiersprache PASCAL AN ASSESSMENT OF THE PROGRAMMING LANGUAGE PASCAL Autor: Niklaus Wirth Bearbeitung:

Ähnliche Präsentationen


Präsentation zum Thema: "27.06.2006 Proseminar SS 20061 Evaluation der Programmiersprache PASCAL AN ASSESSMENT OF THE PROGRAMMING LANGUAGE PASCAL Autor: Niklaus Wirth Bearbeitung:"—  Präsentation transkript:

1 Proseminar SS Evaluation der Programmiersprache PASCAL AN ASSESSMENT OF THE PROGRAMMING LANGUAGE PASCAL Autor: Niklaus Wirth Bearbeitung: Haiyu Wang Betreuer: Prof. Dr. Rainer Manthey Proseminar Geschichte der Programmiersprachen SS 2006

2 Proseminar SS Referenzen Niklaus Wirth: An assessment of the programming language pascal, ACM SIGPLAN Notices, Vol. 10 (6), Juni 1975, 23 – 30 Yao Zhiqiang: Grundlage der Programmiersprache Pascal, Uni-Qinghua Verlag Juli 2000 China.

3 Proseminar SS Gliederung 1. Was ist zuverlässige Software? 2. Wichtige Sprachkonzepte für transparente Programmierung in Pascal 3. Explizite Unterscheidung zwischen Typ und Variable 4. Datei: ein problematisches Konzept 5. Sicherheit vs. Flexibilität: der Typ Union 6. Zusammenfassung

4 Proseminar SS Was ist zuverlässige Software ? zuverlässig: ein Mensch, ein Auto, ein Gerät, auf das man sich verlassen kann Viele unerwartete Zustände, die der Programmier nicht im voraus erkannt hat, führen zu Fehlern in einem Programm. Software besteht aus verschiedenen Programmen. Zuverlässige Software bedeutet, dass jeder Teil der Software bzw. jedes Programm stabil und zuverlässig sein muss. Um zuverlässige Programme zu haben, ist es notwendig, korrekten Code zu schreiben.

5 Proseminar SS Darüber hinaus sehen wir, dass der Programmierer selbst die ganze Zeit über eine bedeutende Rolle spielt. Für Programmierer ist es wichtig, vernünftig, systematisch, präzise abzuwägen, bevor sie Programme schreiben... mit passenden Tools bzw. formaler Sprache Programme zu schreiben. Die Sprache Pascal ist so entworfen worden, dass man zuverlässige Software in Pascal besonders gut erstellen kann.

6 Proseminar SS Wichtige Sprachkonzepte für transparente Programmierung in Pascal 1. symbolische Skalar-Typen 2. Record-Typen 3. Mengen-Typen 4. Subrange-Typen 5. Schleifen und Verzweigungen

7 Proseminar SS symbolische Skalar-Typen: type color = (red, yellow, green, blue) Der Compiler überprüft ständig die verschiedenen Variablen dieses Typs und verhindert dadurch unzulässige Operationen. 2. Record-Typen: type person = record name: alfa; age: integer; sex: (male, female); …… end Der Record besteht aus Komponenten, die unterschiedliche Typen haben.

8 Proseminar SS Mengen-Typen: type tint = set of color Bitstrings, die charakteristische Funktionen darstellen, unterstützen die Darstellung von Mengen. 4. Subrange-Typen: type index = Die Deklaration gibt dem Compiler Informationen, den günstigsten Speicherbedarf zu bestimmen und jeden Auftrag mit den nötigen Überprüfungen durchzuführen.

9 Proseminar SS Schleifen und Verzweigungen: while, repeat, for if, case Mit Schleifen- und Verzweigungen schreibt man Programme einfach und flexibel. Sprachkonzepte, die Transparenz behindern: 1. Operatorprioritäten Es gibt weniger Operatoren als in Algol goto-Statement Wegen der Instabilität von goto-Statements in Pascal, ist es sinnvoll. keine goto-Statements zu nutzen.

10 Proseminar SS Explizite Unterscheidung zwischen Typ und Variable In Pascal hat jede Variable einen Typ, und jeder Typ wird präzis vom Programmierer definiert. Der Compiler übersetzt eine Typ-Definition in eine Speicherschablone, die von der Verteilung jeder Variable des Typs abhängig ist. Die Typdefinition bestimmt die Menge von Operatoren, die für die Variablen des Typs zulässig sind.

11 Proseminar SS Für transparente und effiziente Programm haben explizite Typdefinitionen große Vorteile. Wegen zu strikter Typdefinition hat das Konzept des Typs Schwierigkeit zu unterscheiden, zwischen integer und natural numbers, small sets und large sets. weitere Einschränkungen in der Nutzung von Arrays: 1. Ausschluss von dynamischen Arrays 2. Arrays mit fixierter Größe machen Programme zuverlässiger und transparenter, sind aber weniger flexibel.

12 Proseminar SS Um oben genannte Nachteile zu beheben, können wir einen Typ als Parameter nutzen. type table (m,n) = array [m.. n] of integer; var t1: table (1,100); t2: table(0,999); function sum (t: table; u, v: integer): integer; var i, s: integer; bigin s := 0; for i := u to v do s := t [i] + s; sum := s end; …… end.

13 Proseminar SS Datei: ein problematisches Konzept In Pascal bestehen Dateien aus streng sequentiell angeordneten Daten, und sie wird durch mathematischen Begriffe definiert. Im Vergleich zum Array sind Dateien dynamisch änderbar. Eine modifizierte Version von Pascal im Jahre 1973 bietet eine Verbesserung des Datei-Konzepts. Pufferprobleme entstehen, wenn eine Datei in den Sekundärspeicher geladen werden muss.

14 Proseminar SS Um Pufferprobleme zu lösen, gibt es zwei Möglichkeiten. Die Auswahl hängt von der beabsichtigten Anwendung der Programmiersprache ab: 1. Für Anwendungen bei der Systemkonstruktion kann man auf Dateien ganz verzichten. 2. Sonst kann man oft die Operatoren get und put durch read und write ersetzen: read ( f, x ) Ξ x : = f*; get ( f ) write ( f, x ) Ξ f* : = x ; put ( f ) f* ist Puffer

15 Proseminar SS Eine Voraussetzung der axiomatischen Schemata ist die Verwendung des Prädikats eof (end of file): EOF(f) = Das bedeutet, bevor man ein Programm angibt, muss der Dateizugriff schon durchgeführt werden. (Ein Puffer hier ist notwendig) Eine Lösung besteht aus einer Kombination von zurückgespulter Datei mit Anfangsladung im Puffer (siehe nächste Folie). TRUE,Sichtfenster steht hinter letzter Komponente von f FALSE,sonst

16 Proseminar SS Die Lösung mit den Operationen reset (f) und rewrite (f): reset ( f ) Ξ rewind ( f ); openread ( f ) rewrite ( f ) Ξ rewind ( f ); openwrite ( f ) Die Nachteile sind: 1. Der Zusammenhang zwischen eof (f) und Puffer ist zwischendurch unbestimmt. 2. Der Programmierer vergisst manchmal festzulegen, ob eine openread- oder openwrite-Operation vorliegt. Die meisten ungenügenden Konsequenzen des Datei-Konzepts in Pascal entstehen im Bereich von Grundlagen und Text-Dateien.

17 Proseminar SS Man sieht eine Text-Datei als eine Reihefolge von Linien an, und jede Linie beginnt mit einem Zeichen. Wie eof (f) führen wir eoln (f) ein, der das Ende einer Linie zeigt. Analog werden andere Operatoren eingeführt: writeln (f) beendet die Erzeugung einer Linie, readln (f) beginnt das Lesen der nächsten Linie. Problem dabei: Am Ende einer Linie ist eoln (f) wahr, soll am Ende der letzter Linie die Wert von eof (f) auch wahr sein? Es ist schwer einfach zu sagen. Solche Kleinigkeiten im Datei-Konzept spielen einen ganz wichtigen Rolle, um zuverlässige Programme zu bekommen.

18 Proseminar SS Sicherheit vs. Flexibilität: der Typ Union Manchmal ist es wünschenswert, Variablen mit verschiedenen Typen zu definieren. Diesel Variablen-Typ heißt Union (Vereinigung) der gewüsnchten Typen. Es gibt drei Gründe dafür, den Typ Union zu verwenden: 1. der Bedarf von unterschiedlichen Strukturen 2. gemeinsame Nutzung von Speicherplatz 3. Typumwandlung. Die Gefahr bei der Verwendung von Union ist, dass die Möglichkeit besteht, den aktuelle Variablen-Typ falsch zu definieren.

19 Proseminar SS Zusammenfassung PASCAL ist eine zuverlässige Programmiersprache. Die Sprache muss auf einfachen, flexiblen, und sauberen axiomatischen Merkmalen basieren. Die Sprachregeln sollten nicht von traditionellen Regeln abweichen. Auch bei neuen Eigenschaften soll man sich an diese Regeln halten. Jedes Konzept der Sprache soll offensichtlichen Regeln gehorchen. Jede Sprachregel muss vom System überprüfbar sein.

20 Proseminar SS Ich bedanke mich für Ihre Aufmerksamkeit und herzlich danke Dr. Manthey für die wertvolle Hilfe und Unterstützungen! Wang Haiyu


Herunterladen ppt "27.06.2006 Proseminar SS 20061 Evaluation der Programmiersprache PASCAL AN ASSESSMENT OF THE PROGRAMMING LANGUAGE PASCAL Autor: Niklaus Wirth Bearbeitung:"

Ähnliche Präsentationen


Google-Anzeigen