Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ws2018:11:index

11. Programmierparadigmen

Themen
Begriffsklärung: Was ist ein (Programmier-)Paradigma?
Warum sich mit Programmierparadigmen befassen?
Programmierparadigmen: eine Übersicht
Folien
PDF
Glossar
PDF


Zentrale Aspekte

  • Paradigmen beeinflussen die Sicht des Programmierers
    auf mögliche Lösungswege für eine Problemstellung.
  • Bestimmte Paradigmen haben die Entwicklung zentraler Aspekte
    der Programmierung erleichtert bzw. ermöglicht.
  • (Grobe) Kenntnis der Paradigmen ist wichtig,
    um sich innerhalb der Disziplin verständigen zu können.
  • Programmierparadigmen schließen einander
    in der Regel nicht gegenseitig aus.
  • Alle drei hier vorgestellten Paradigmen zielen auf
    Modularität und Wiederverwendbarkeit von Code.

Fragen zur Vertiefung und Wiederholung

Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.

  • Warum ist es relevant, sich mit Programmierparadigmen zu befassen?
  • Welche drei grundlegenden Programmierparadigmen sind von Bedeutung?
    (Wodurch werden sie charakterisiert?)

Weiterführende Literatur

Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.

Der Begriff des Paradigmas wurde von Robert W. Floyd 1979 in seiner „ACM Turing Award Lecture“ [Floyd, 1979Floyd, Robert W. (1979): The paradigms of programming, Communications of the ACM 22:455-460] in die Computerwissenschaften eingeführt und nimmt Bezug auf Thomas Kuhn und seine Darstellung der Wissenschaftsgeschichte und -theorie [Kuhn, 1976Kuhn, Thomas S. (1976): Die Struktur wissenschaftlicher Revolutionen, Suhrkamp, Frankfurt am Main].

Als „Geburtsdaten“ für die drei hier vorgestellten Paradigmen lassen sich [McCarthy, 1960McCarthy, John (1960): Recursive functions on symbolic expressions and their computation by machine, part I, Communications of the ACM 3:184-195] für die funktionale, [Dahl, 1966Dahl, Ole-Johan; Nygaard, Kristen (1966): SIMULA—an ALGOL-based simulation language, Communications of the ACM 9:671-678] für die objektorientierte und [Dijkstra, 1968Dijkstra, Edsger W. (1968): Go to statement considered harmful, Communications of the ACM 11:147-148] für die strukturierte Programmierung ins Feld führen.

Ein interessanter Artikel von Robert C. Martin („Uncle Bob“), der die drei vorgestellten Paradigmen zusammenfasst, findet sich im Blog von 8th Light Inc: Three Paradigms. Etwas ausführlicher findet sich diese Darstellung in seinem recht neuen Buch „Clean Architecture“ [Martin, 2018Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston].

Eine recht gute Einführung in die funktionale Programmierung ist der Artikel von John Hughes [Hughes, 1989Hughes, John (1989): Why functional programming matters, The Computer Journal 32:98-107], kurz darauf als Buchkapitel [Hughes, 1990Hughes, John (1990): Why Functional Programming Matters, in Turner, David A. (Hg.): Research Topics in Functional Programming, Kap. 2, S. 17-42, Addison-Wesley, Boston, MA] veröffentlicht (und deutlich lesbarer formatiert).

Sehr interessant ist der Essay „The Other Road Ahead“ von Paul Graham, als Kapitel 5 abgedruckt in seinem Buch „Hackers & Painters“ [Graham, 2010Graham, Paul (2010): Hackers & Painters, O'Reilly, Sebastopol, CA]. Er beschreibt darin, wie er mit einem Freund gemeinsam ein Startup für Webshops gründete, das später von Yahoo aufgekauft wurde. Der Schlüssel zum Erfolg war die Verwendung von Lisp, einer funktionalen Programmiersprache, die einen viel kürzeren Entwicklungszyklus als herkömmliche strukturierte bzw. objektorientierte Sprachen ermöglichte.

  • Dahl, Ole-Johan; Nygaard, Kristen (1966): SIMULA—an ALGOL-based simulation language, Communications of the ACM 9:671-678
  • Dijkstra, Edsger W. (1968): Go to statement considered harmful, Communications of the ACM 11:147-148
  • Floyd, Robert W. (1979): The paradigms of programming, Communications of the ACM 22:455-460
  • Graham, Paul (2010): Hackers & Painters, O'Reilly, Sebastopol, CA
  • Hughes, John (1989): Why functional programming matters, The Computer Journal 32:98-107
  • Hughes, John (1990): Why Functional Programming Matters, in Turner, David A. (Hg.): Research Topics in Functional Programming, Kap. 2, S. 17-42, Addison-Wesley, Boston, MA
  • Kuhn, Thomas S. (1976): Die Struktur wissenschaftlicher Revolutionen, Suhrkamp, Frankfurt am Main
  • Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston
  • McCarthy, John (1960): Recursive functions on symbolic expressions and their computation by machine, part I, Communications of the ACM 3:184-195
de/lehre/programmierkonzepte/ws2018/11/index.txt · Zuletzt geändert: 2020/09/30 21:35 von 127.0.0.1