Konzepte H¨Oherer Programmiersprachen (Entwurf)

Konzepte H¨Oherer Programmiersprachen (Entwurf)

Mathematisch- Naturwissenschaftliche Fakultat¨ Konzepte hoherer¨ Programmiersprachen (Entwurf) Herbert Klaeren 4. Februar 2013 2 Dieses Werk steht unter der Creative Commons by-sa“-Lizenz (Namensnennung, ” C Weitergabe unter gleichen Bedingungen), CC BY: Copyright Herbert Klaeren, 1997–2011. Prof. Dr. H. Klaeren Universitat¨ Tubingen¨ Wilhelm-Schickard-Institut D–72076 Tubingen¨ +49–7071–29 75457 [email protected] INHALTSVERZEICHNIS i Inhaltsverzeichnis 1 Einf ¨uhrung 1 1.1 Motivation . .1 1.2 Konzepte und ihre Umsetzung . .6 1.3 Literaturhinweise . .9 1.4 Aufgaben . 18 2 Grundlagen von Sprachen 19 2.1 Syntax, Semantik, Pragmatik . 19 2.2 Compilation versus Interpretation . 21 2.3 Bootstrapping . 23 2.4 Aufgaben . 33 3 Paradigmata der Programmierung 35 3.1 imperativ . 36 3.2 funktional . 36 3.3 relational . 38 3.4 objektorientiert . 39 3.5 Aufgaben . 42 4 Entit¨aten,Namen und Bindungen 43 4.1 Exkurs: Der Lambda-Kalkul..........................¨ 47 4.2 Bindungen in Programmiersprachen . 62 4.3 Attribute von Variablen, Deklarationen . 63 4.4 Aufgaben . 75 5 Laufzeitorganisation 77 5.1 Ein abstraktes Maschinenmodell . 78 5.2 Statische Allokation . 83 5.3 Dynamische Allokation . 86 5.4 Aktivierungsblocke¨ . 91 5.5 Zugriff auf nichtlokale Grossen¨ . 96 5.6 Funktionen als Werte, Closures . 102 5.7 Aufgaben . 105 6 Prozedurale Abstraktion 107 6.1 Parameter-Zuordnungsmethoden . 107 6.2 Parameter-Ubergabemechanismen¨ . 109 6.3 Parameter-Auswertungsstrategien . 114 6.4 Implementierung der Parameterubergabe¨ . 115 6.5 Prozeduren als Parameter . 116 6.6 Aufgaben . 120 4. Februar 2013 ii INHALTSVERZEICHNIS 7 Typen und Typsysteme 121 7.1 Typen als Strukturbeschreibungen . 123 7.2 Typsprachen und Deskriptoren . 130 7.3 Taxonomie von Datentypen . 132 7.4 Einzelne Datentypen . 134 7.5 Overloading . 168 7.6 Polymorphie . 169 7.7 Aufgaben . 170 8 Modulkonzept 171 8.1 Motivation . 171 8.2 Geheimnisprinzip . 171 8.3 Steuerung der Sichtbarkeit . 172 8.4 Auflosung¨ von Namenskonflikten . 173 8.5 Bibliotheken . 174 8.6 Implementierung . 175 8.7 Konsistenz von Schnittstelle und Implementierung . 178 9 Objektkonzept 181 9.1 Geschichte . 181 9.2 Mehrfachvererbung . 183 9.3 Implementierung . 183 10 Ausnahmebehandlung 189 10.1 Entwurfsentscheidungen zur Ausnahmebehandlung . 194 10.2 Ausnahmebehandlung in PL/I . 195 10.3 Ausnahmebehandlung in CLU . 196 10.4 Ausnahmebehandlung in Ada . 198 10.5 Ausnahmebehandlung in ISO Modula-2 . 199 10.6 Ausnahmebehandlung in C++ . 203 10.7 Ausnahmebehandlung in Modula-3 . 203 10.8 Programmieren ohne Ausnahmebehandlung . 204 10.9 Bewußte Erzeugung von Ausnahmen . 206 11 Entwurf von Programmiersprachen 207 12 Kritik an Programmiersprachen 213 12.1 Kritik durch die Entwerfer . 214 12.2 Kritik am Blockkonzept . 216 12.3 Kritik von anderer Seite . 217 A Ein wenig Geschichte 219 A.1 1950er: Fruhe¨ Experimente . 229 A.2 1960er: Syntax . 230 A.3 1970er: Semantik . 231 A.4 1980er: Softwaretechnik und Funktionale Programmierung . 231 A.5 1990er: Objekte . 232 INHALTSVERZEICHNIS iii A.6 Eine andere Sichtweise . 232 A.7 Aufgaben . 233 B Zitate zum Thema Programmiersprachen 235 C Gruselkabinett 243 C.1 Fortran . 243 C.2 COBOL . 244 C.3 Algol 60 . 244 C.4 Basic . 245 C.5 C ......................................... 245 C.6 PL/I . 247 C.7 APL . 251 C.8 Programmiersprachen mit Layout . 252 4. Februar 2013 iv ABBILDUNGSVERZEICHNIS Abbildungsverzeichnis 1 TIOBE Programming Community Index . .4 2 I-Diagramm . 24 3 T-Diagramm . 25 4 T-Diagramm, Interpreter . 25 5 T-Diagramm fur¨ einen Ubersetzer¨ . 25 6 Ubersetzungsprozess¨ . 26 7 Cross compilation . 26 8 Produktion des PCode-Compilers, Phase 1 . 27 9 Produktion des PCode-Compilers, Phase 2 . 27 10 Distribution des PCode-Compilers . 28 11 PCode-Interpreter . 28 12 Installation des PCode-Compilers, Phase 1 . 29 13 Installation des PCode-Compilers, Phase 2 . 29 14 Selbstcompilation . 30 15 Bootstrap des Pascal-Compilers, Phase 1 . 30 16 Bootstrap des Pascal-Compilers, Phase 2 . 31 17 Bootstrap des Pascal-Compilers, Phase 3 . 31 18 Bootstrap des Pascal-Compilers, Phase 4 und 5 . 32 19 Speicherplatze¨ . 44 20 Berechnung der Fakultat¨ von 3 im λ-Kalkul¨ . 59 21 Zeitpunkt und Dauer von Bindungen . 63 22 Liste der standard identifier“ aus PIM-3 . 64 ” 23 Variante RECORDs ................................ 65 24 Blockschachtelung . 67 25 Blockschachtelung als Baumstruktur . 67 26 Laufzeitsystem . 78 27 Die VM . 79 28 Fortran-Programm in der VM . 85 29 Statische Verweiskette . 99 30 Variablenumgebung fur¨ Closures . 104 31 Closure mit freien Variablen der Funktion . 105 32 Prozeduren als Parameter . 117 33 Most recent property . 118 34 Boolean in der ISO-Norm . 135 35 Naives Speicherlayout fur¨ Records . 156 36 Ausgerichtetes Speicherlayout fur¨ Records . 157 37 Kompaktes Speicherlayout fur¨ Records . 157 38 Varianten in Pascal . ..

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    270 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us