1 / 20

Evaluation der Programmiersprache PASCAL

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. Referenzen.

mihaly
Download Presentation

Evaluation der Programmiersprache PASCAL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 Proseminar SS 2006

  2. 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. Proseminar SS 2006

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

  4. 1. 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. Proseminar SS 2006

  5. 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. Proseminar SS 2006

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

  7. 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. • Record-Typen: • type person = record name: alfa; age: integer; sex: (male, female); …… end • Der Record besteht aus Komponenten, die unterschiedliche Typen haben. Proseminar SS 2006

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

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

  10. 3. 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. Proseminar SS 2006

  11. 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: • Ausschluss von dynamischen Arrays • Arrays mit fixierter Größe machen Programme zuverlässiger und transparenter, sind aber weniger flexibel. Proseminar SS 2006

  12. Um oben genannte Nachteile zu beheben, können wir einen Typ als Parameter nutzen. typetable (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. Proseminar SS 2006

  13. 4. 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. Proseminar SS 2006

  14. Um Pufferprobleme zu lösen, gibt es zwei Möglichkeiten. Die Auswahl hängt von der beabsichtigten Anwendung der Programmiersprache ab: • Für Anwendungen bei der Systemkonstruktion kann man auf Dateien ganz verzichten. • 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 Proseminar SS 2006

  15. 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 Proseminar SS 2006

  16. 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: • Der Zusammenhang zwischen eof (f) und Puffer ist zwischendurch unbestimmt. • 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. Proseminar SS 2006

  17. 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. Proseminar SS 2006

  18. 5. 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: • der Bedarf von unterschiedlichen Strukturen • gemeinsame Nutzung von Speicherplatz • Typumwandlung. • Die Gefahr bei der Verwendung von Union ist, dass die Möglichkeit besteht, den aktuelle Variablen-Typ falsch zu definieren. Proseminar SS 2006

  19. 6. 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. Proseminar SS 2006

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

More Related