Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ws2018:33:index

33. Finale furioso: Zusammenfassung und Feedback

Themen
Zusammenfassung: Themen der Vorlesung im Überblick
Fünf Thesen
Ausblick: Wie könnte es weitergehen?
Feedback
Folien
PDF
Glossar
PDF


Zentrale Aspekte

  • Programmierung ist eine Kernkompetenz für Naturwissenschaftler.
    Trotzdem hat sie einen viel zu geringen Stellenwert.
  • Wissenschaft beruht auf Nachvollziehbarkeit und Reproduzierbarkeit.
    Das ist in der Praxis oft nicht gewährleistet.
  • Die primäre Aufgabe von Code ist Kommunikation.
    Voraussetzung ist Ausdrucksstärke und Lesbarkeit.
  • Kernaspekt aller Softwarearchitektur ist Modularität.
    Das führt zu Flexibilität und Wiederverwendbarkeit.
  • Wissenschaftliche Datenauswertung erfordert ein Gesamtkonzept.
    Einzelaspekte sind (relativ) einfach umsetzbar.

Fragen zur Vertiefung und Wiederholung

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

  • Was ist die primäre Aufgabe von Code? Was ist entscheidend, um dieser Aufgabe gerecht zu werden?
  • Was ist der Kernaspekt aller Softwarearchitektur? Welche weitreichenden Konsequenzen ergeben sich aus der Umsetzung dieses Aspekts? Warum ist er auch und gerade im Kontext naturwissenschaftlicher Datenverarbeitung so wichtig?
  • Warum erfordert eine Datenverarbeitung und -Analyse, die wissenschaftlichen Ansprüchen genügen soll, die Etablierung eines Gesamtsystems?
  • Welche Aspekte der besprochenen Infrastruktur sind zwingend notwendig für die wissenschaftliche Datenverarbeitung und Analyse? Warum? Welchen wesentlichen Aspekt der Wissenschaftlichkeit können Sie jeweils damit adressieren?
  • Was hält Sie noch davon ab, programmieren zu lernen und sich die in der Vorlesung angesprochenen Konzepte zu erarbeiten und einzusetzen?

Zum Titel der Vorlesung: Wilhelm Buschs "Virtuos"

Namensgebend für den Titel der Vorlesung – „Finale furioso“ – ist ein Bild aus einer Bildergeschichte von Wilhelm Busch (1832–1908), namentlich „Der Virtuos“. Die gesamte Bildergeschichte findet sich online:

Namensgebend ist hier das vorletzte Bild, das zur Illustration auch auf dem Foliensatz in der Vorlesung erscheint.

Weiterführende Literatur

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

Die zu allen Aspekten der Programmierung verfügbare Literatur ist unübersichtlich groß, und auch über die Vorlesung wurden einige Bücher und Artikel vorgestellt. Deshalb soll hier der Versuch unternommen werden, im Rückblick auf die Themen der Vorlesung einige wenige Empfehlungen für weiterführende Literatur auszusprechen.

Wer sich direkt mit rechnergestützter Datenverarbeitung und -Analyse in den Naturwissenschaften und der dazu notwendigen Programmierung befassen möchte, findet im Buch von Scopatz und Huff [Scopatz, 2015Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol] einen sehr schönen Überblick, der viele Aspekte der Vorlesung aufgreift und insbesondere die Gesamtheit der Prozesse von der Datenaufnahme bis zur fertigen Veröffentlichung der Ergebnisse in den Blick nimmt.

Wer sich ganz grundlegend mit Programmierung auseinandersetzen möchte und auch vor einer sehr maschinennahen Sprache nicht zurückschreckt, dem sei der „Klassiker“ von Kernighan und Ritchie, „The C Programming Language“, empfohlen [Kernighan, 1999Kernighan, Brian W.; Ritchie, Dennis M. (1999): The C Programming Language, Prentice Hall, Upper Saddle River, New Jersey]. Es ist eine sehr solide und nicht zu lange Einführung in die Programmiersprache C.

Vermutlich momentan die beste Wahl einer Programmiersprache, sowohl um Programmieren zu lernen als auch für die Anwendung im Kontext der wissenschaftlichen Datenauswertung, ist Python. Eine sehr grundlegende Einführung in die Programmierung am Beispiel von Python liefert „Think Python“ von Downey [Downey, 2015Downey, Allen B. (2015): Think Python, O'Reilly, Sebastopol]. Es ist ursprünglich als Buch parallel zu einem Kurs für Programmieranfänger entstanden und führt langsam und schrittweise essentielle Konzepte fast jeder Programmiersprache ein. Sehr viel mehr auf den Kontext der Wissenschaft fokussiert „Learning Scientific Programming with Python“ von Hill [Hill, 2015Hill, Christian (2015): Learning Scientific Programming with Python, Cambridge University Press, Cambridge, UK]. Jedem, der sich ernsthaft mit Python auseinandersetzen will, sei das sehr kurzweilige Buch „The Hitchhiker's Guide to Python“ von Reitz und Schlusser [Reitz, 2016Reitz, Kenneth; Schlusser, Tanya (2016): The Hitchhiker's Guide to Python, O'Reilly, Sebastopol] empfohlen, dass es auch komplett frei online als Webseite gibt. Da das bereits genannte Buch von Scopatz und Huff [Scopatz, 2015Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol] Python verwendet, ist es in dieser Hinsicht ebenfalls sehr hilfreich.

Eine gute Einführung in die Konzepte der Objektorientierung gibt Weisfeld [Weisfeld, 2013Weisfeld, Matt (2013): The Object-Oriented Thought Process, Addison-Wesley, Upper Saddle River, New Jersey]. Der Reiz an seinem Buch ist neben der Kürze (im Gegensatz etwa zu [Meyer, 1997Meyer, Bertrand (1997): Object-Oriented Software Construction, Prentice Hall PTR, Upper Saddle River, New Jersey]) die weitgehende Unabhängigkeit von einer bestimmten Programmiersprache und der Fokus auf den grundlegenden Konzepten der objektorientierten Programmierung.

Das große Thema des „sauberen Codes“ wird schließlich nicht nur von Robert Martin [Martin, 2008Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey] in vielen Facetten abgehandelt. Kernighan und Pike [Kernighan, 1999Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston] liefern ebenfalls sehr viele gute Hinweise und sind dazu noch sehr knapp.

Für alle weiteren Aspekte der Vorlesung sei auf die kommentierten Literaturverzeichnisse zum jeweiligen Thema verwiesen.

  • Downey, Allen B. (2015): Think Python, O'Reilly, Sebastopol
  • Hill, Christian (2015): Learning Scientific Programming with Python, Cambridge University Press, Cambridge, UK
  • Kernighan, Brian W.; Ritchie, Dennis M. (1999): The C Programming Language, Prentice Hall, Upper Saddle River, New Jersey
  • Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston
  • Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey
  • Meyer, Bertrand (1997): Object-Oriented Software Construction, Prentice Hall PTR, Upper Saddle River, New Jersey
  • Reitz, Kenneth; Schlusser, Tanya (2016): The Hitchhiker's Guide to Python, O'Reilly, Sebastopol
  • Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol
  • Weisfeld, Matt (2013): The Object-Oriented Thought Process, Addison-Wesley, Upper Saddle River, New Jersey
de/lehre/programmierkonzepte/ws2018/33/index.txt · Zuletzt geändert: 2020/09/30 21:35 von 127.0.0.1