Banner


Seminar: Programmiermethoden




Sven Eric Panitz


Aktuell

LaTeX-Beispiel von Herrn Barth hier.

Vortragsthemen

  1. Algebraische Typen mit Pattern Matching
    Ursprünglich in funktionalen Programmiersprachen wie ML oder Haskell beheimatet, finden sich algebraische Datentypen in modernen Varianten funktionaler Sprachen wie F# und ebenso auch in Hybridsprachen wie Scala in Form von Case-Klassen.

    Algebraische Datentypen sind eine einfach Möglichkeit einen Datentyp als Summentyp mehrerer Produkttypen darzustellen. Eine Fallunterscheidung über die Summentypen und Projektion auf die Attribute der Produkttypen kann über Pattern-Matching erfolgen.

    Der Vortrag zeigt an Beispielen die Funktionsweise von algebraischen Datentypen und geht auf Vor- und Nachteile dieser ein.

  2. Kombinatorbibliotheken und Monaden
    Funktionalität oder Aktionen zu kombinieren stellt eine ungeahnt allgemeine Fragestellung dar. Hierbei lassen sich zunächst die Sequenz von Aktionen (erst das eine, dann das andere), oder die Option, entweder das eine eventuell dann doch das andere identifizieren.

    Funktionale Sprachen erlauben es, Operatoren zur Verknüpfung von Aktionen zu definieren und haben schließlich die wunderbare Welt der Monaden erfunden.

  3. Nebenläufigkeit auf der JVM mittels Aktoren in Akka
    Was ist das Aktorenmodell des Frameworks AKKA?

    In Wikipedia wird es wie folgt umschrieben:

    Akka is an open-source toolkit and runtime simplifying the construction of concurrent and distributed applications on the JVM. Akka supports multiple programming models for concurrency, but it emphasizes actor-based concurrency, with inspiration drawn from Erlang.
    From Wikipedia, the free encyclopedia
  4. Behandlung von optionalen oder null-/nil-Werten
    Nullwerte sind in fast allen Sprachen eine häufige Fehlerquelle. Daher gibt es mehrere Ansätze mit diesen umzugehen: Maybe-Monade in Haskell, Option Chaining in Swift, null
  5. Dynamische Daten
    Dynamische Code Erzeugung und Ausführung in statisch getypten Sprachen: Dynamics in Scala, Reflection in Java,....
  6. Java 8 Streams (die Interna)
    Wie sehen die Interna des Java 8 Stream Apis aus. Wie wird die automatische Nebenläufigkeit in parallelStream realisiert. Was ist eigentlich sin Spilterator.
  7. Garbage Collection in Java
    Was macht eigentlich die JVM für eine Garbage Collection. Kann man diese auch als Programmierer beeinflussen?
  8. Typinferenzsysteme
    Mit der Sprache ML wurde das Hindley-Milner Typinferenzsystem entwickelt, das dann in Haskell erweitert wurde. Heute finden sich auch in typgecheckten Programmiersprachen zunehmend inferierte Anteile im Typsystem.
  9. Annotationen in Java
    Alle kennen die @Override Annotationen in Java. Aber Java bietet an, eigene Annotationen zu entwickeln und diese bei der Compilierung auswerten zu lassen. Oft sieht man solche Annotationen bei der Persistierung von Daten. Aber auch ganz andere Szenarien sind denkbar, wie das Annotieren zur Generierung automatischer GUI-Klassen, bis hin zur Simulation von algebraischen Typen.
  10. Lazyness
    Was ist Lazyness, was geht damit gut, wo liegen die Probleme in diesem Ausführungsmodell?
  11. Lift Framework
    List ist ein sehr mächtiges Framework zur Erstellung von Webanwendungen in der Programmiersprach Scala.

Termine

  • 12.1. 10Uhr: Hicham Lazar
  • 19.1. 10Uhr: Simon Senn
  • 23.1. 16Uhr: Erik Bocchnia
  • 24.1. 14:15Uhr: Benedikt Papiorek
  • 26.1. 10Uhr: Daniel Mattes
  • 30.1. 16:15Uhr: Viktor Klein
  • 31.1. 14:15Uhr: Robert Eichler
  • 2.2. 10Uhr: Ben Stuart
  • 6.2. 14:15Uhr: Tobias Reichert

externe Links