Programmiersprachen und Ubersetzer - Skript zur Vorlesung Sommersemester 2011 c Prof. Dr. R. Parchmann

Die Seite wird erstellt Gustav Herrmann
 
WEITER LESEN
Skript zur Vorlesung

  Programmiersprachen
          und
       Übersetzer

       Sommersemester 2011

       c Prof. Dr. R. Parchmann
   Institut für Praktische Informatik
FG Programmiersprachen und Übersetzer
          Universität Hannover
Vorwort

Dieses Skript entstand aus Notizen zur Vorlesung Programmiersprachen und Übersetzer“ die
                                                 ”
erstmalig im Wintersemester 1994/95 für Studierende der Elektrotechnik angeboten wurde.
Ziel der Vorlesung ist es, einen Einblick in den Aufbau von Übersetzern zu geben, um die Studie-
renden mit den wichtigsten Konzepten und Techniken dieses Teilgebiets der Informatik vertraut
zu machen. Dies schließt auch den Umgang mit Werkzeugen zur automatischen Erstellung von
Komponenten eines Übersetzers wie lex oder yacc ein, so dass die Arbeitsweise dieser Programme
bei späterer Anwendungsprogrammierung bekannt ist.
Ein zweites Ziel dieser Vorlesung ist es, verschiedene Programmierparadigmen vorzustellen, um
den Studierenden Ausblicke in andere Strukturen der Programmierung und Problemlösung zu
geben. Dazu werden beispielhaft die Prinzipien der funktionalen, der logischen und der objekt-
orientierten Programmierung vorgestellt.
Danken möchte ich an dieser Stelle besonders Herrn Dr. Bernhard Baehr, der die Übungsstunden
für diese Vorlesung maßgeblich konzipiert und durchgeführt hat. Ohne seinen Einsatz hätten die
begleitenden Beispiele, speziell die Beispielprogrammiersprache BPS mit den zugehörigen Über-
setzern und allen Unterstützungsprogrammen, den Studierenden nicht zur Verfügung gestanden.
Weiterhin danke ich Herrn Marc Janecki, der meine teilweise etwas kryptischen Vorlesungsno-
tizen in dieses Manuskript übertrug und wesentlich dazu beigetragen hat, dass dieses Skript im
nächsten Semester den Studierenden zur Verfügung steht.

Hannover, August 1996                                                                R. Parchmann

Durch Einbeziehung dieser Vorlesung als Pflicht- bzw. Wahlvorlesung in die Studiengänge Ma-
                                                                                           ”
thematik mit Studienrichtung Informatik“ und in den Bachelor/Master Studiengang Informa-
                                                                                       ”
tik“, sind einige Umstellungen und Änderungen des Skriptes notwendig geworden. Um dem
größeren Hörerkreis gerecht zu werden, sind die Definition der Beispielprogrammiersprache BPS
und die zugehörigen Übersetzer nicht mehr Teil dieses Skripts.
Eingefügt wurde ein zusätzlicher Abschnitt über das Problem der Typ-Prüfung im Compiler. In
diesem Kontext wird in einem kurzen Einschub die Unifikation als wichtige Grundlage zur Typ-
Prüfung polymorpher Funktionen, für Typ-Inferenzsysteme und zur logischen Programmierung
behandelt. Die Notation der Unifikation wurde gegenüber der vorigen Version verändert.
Das Kapitel über die Programmierparadigmen wurde neu geschrieben. Als Beispiel einer funktio-
nalen Programmiersprache wird jetzt ML verwendet, um eine Sprache mit einem Typ-Inferenz-
system vorstellen zu können.

Hannover, März 2007                                                             R. Parchmann

Einige kleinere Korrekturen sind in die aktuelle Version des Skripts eingeflossen.

Hannover, März 2011                                                                 R. Parchmann
136                                                                            LITERATUR

Literatur

allgemeine Literatur zur Vorlesung:

 [1] K.C. Louden, Programming Languages Principles and Practice, PWS-Kent Publishing,
     1993. Deutsche Übersetzung: Programmiersprachen - Grundlagen, Konzepte, Entwurf,
     Thomson Publishing, 1994.

 [2] B.J. MacLennan, Principles of Programming Languages (sec. Edition), Holt, Rinehart and
     Winston, 1987.

 [3] J.C. Mitchell, Concepts in Programming Languages, Cambridge University Press, 2003.

 [4] R. Sethi, Programming Languages - Concepts and Constructs, Addison Wesley, 1990.

 [5] P. van Roy und S. Haridi, Concepts, Techniques, and Models of Computer Programming,
     MIT Press, 2004.

 [6] R. W. Sebesta, Concepts of Programming Languages, 7. ed, Pearson International, 2006.

 [7] D.A. Watt, Programmiersprachen, Konzepte und Paradigmen, Hanser, 1996.

zu Kapitel 1 – Historische Entwicklung der Programmiersprachen

 [8] J. Backus, The History of FORTRAN I, II and III, Annals of the History of Computing 1
     (1979), 21–37.

 [9] F.L. Bauer und H. Wössner, The Plankalkül“ of Konrad Zuse, A Forerunner of Today’s
                                    ”
     Programming Languages, Comm. ACM 15 (1972), 678–685.

[10] W. de Beauclair, Rechnen mit Maschinen, Vieweg Verlag, 1968.

[11] T.J. Bergin, R.G. Gibson (Eds.), History of Programming Languages, ACM Press. 1996.

[12] P.E. Ceruzzi, A History of Modern Computing, The MIT Press, 1998.

[13] D.E. Knuth, Ancient Babylonian Algorithms, Comm. ACM 15 (1972), 671–677.

[14] D.E. Knuth und L.T. Pardo, The Early Development of Programming Languages, in A
     History of Computing in the Twentieth Century, N. Metropolis, J. Howlett und G.-C. Rota
     (Eds), 197–273.

[15] J. McCarthy, History of Lisp, in R.L. Wexelblet (Ed.), History of Programming Languages,
     Academic Press, 1981.

[16] D.D. Swade, Der mechanische Computer des Charles Babbage, Spektrum der Wissenschaft
     No. 4 (1993), 78–84.
LITERATUR                                                                                   137

zu Kapitel 2 – Compiler und Interpreter

[17] A.V. Aho, M.S. Lam, R. Sethi und J.D. Ullman, Compilers - Principles, Techniques, and
     Tools, Pearson-Addison Wesley, 2007. Deutsche Übersetzung: Compiler - Prinzipien, Tech-
     niken und Werkzeuge, Pearson Studium, 2008.

[18] H. Albas, A. Nymeyer, Practice and Principles of Compiler Building with C, Prentice Hall,
     1996.

[19] A.A. Appel, Modern Compiler Implementation in Java, Cambridge University Press, 2002
     (zweite Auflage). (Das Buch gibt es auch in einer C– und einer ML–Version!)

[20] B. Bauer und R. Höllerer, Übersetzung objektorientierter Programmiersprachen, Springer,
     1998.

[21] Ch.N. Fischer und R.J. LeBlanc Jr., Crafting a Compiler, The Benjamin/Cummings
     Publishing Company, 1988.

[22] C. Fraser und D. Hanson, A retargetable C Compiler: Design and Implementation, The
     Benjamin/Cummings Publishing Company, 1995.

[23] D. Grune, H.E. Bal, C.J.H. Jacobs und K.G. Langendoen, Modern Compiler Design, Wiley,
     2000.

[24] T. Mason und D. Brown, lex & yacc, O’Reilly & Associates Inc., 1991.

[25] T.W. Parsons, Introduction to Compiler Construction, Computer Science Press, 1992.

[26] T. Pittman und J. Peters, The Art of Compiler Design, Prentice Hall, 1992.

[27] J. A. Robinson. A machine-oriented logic based on the resolution principle, J. ACM, 12
     (1965), p 23–41.

[28] P. Ruzicka und I. Privara, An almost linear robinson unification algorithm, Acta Inf.,
     27(1989), p 61–71.

[29] F.J. Schmitt, Praxis des Compilerbaus, Hanser, 1992.

[30] B. Teufel, S. Schmidt und T. Teufel, C2 Compiler Concepts, Springer 1993.

zu Kapitel 3 – Programmierparadigmen

[31] M.C. Bücker, J. Geidel und M.F. Lachmann, Objectworks(R) \Smalltalk für Anfänger,
     Springer, 1993.

[32] P. Coad und J. Nicola, Object-Oriented Programming, Yourdon Press, 1993.
     Deutsche Übersetzung: Objekt-orientierte Programmierung, Prentice Hall, München, 1994.

[33] B. Meyer, Object-oriented Software Construction, Prentice-Hall, 1988.
     Deutsche Übersetzung: Objektorientierte Softwareentwicklung, Hanser, 1990.

[34] B. Stroustrup, The C++ Programming Language (second Edition), Addison Wesley, 1993.

[35] H. Abelson, und G.J. Sussman, Structure and Interpretation of Computer Programs,
     MIT Press / McGraw-Hill Book Company, Cambridge, 1990.
     Deutsche Übersetzung: Struktur und Interpretation von Computerprogrammen, Springer,
     1991.
138                                                                           LITERATUR

[36] J.D. Ullman, Elements of ML Programming, Prentice-Hall, 1994.

[37] T.W. Pratt und M.V. Zelkowitz, Programming Languages - Design and Implementation,
     Prentice-Hall, 2001.

[38] D.P. Friedman, M. Wand und C.T. Haynes, Essentials of Programming Languages,
     MIT Press / McGraw-Hill Book Company, Cambridge, 1992.

[39] W.F. Clocksin und C.S. Mellish, Programming in Prolog, Springer, 1987.

[40] L. Sterling und E. Shapiro, The Art of Prolog, MIT Press, Cambridge, 1986.
Sie können auch lesen