Anmeldung Registrierung
Auto Hell Dunkel
Erweiterte Suche
  1. Startseite
  2. Podcasts
  3. IT-Berufe-Podcast Podcast
  4. Gregor Trefs über funktionale Programmierung, Konferenzen und Fachartikel – Anwendungsentwickler-Podcast #106
Gregor Trefs über funktionale Programmierung, Konferenzen und Fachartikel – Anwendungsentwickler-Podcast #106

Gregor Trefs über funktionale Programmierung, Konferenzen und Fachartikel – Anwendungsentwickler-Podcast #106

IT-Berufe-Podcast vor 9 Jahren
Zu Sammlung hinzufügen

Du hast noch keine Sammlungen.

Herunterladen (rechte Maustaste) Teilen Fundstellen Kommentare
0:00
1:41:45
Funktionale Programmierung, Konferenzvorträge und Fachartikel im
Gespräch mit Gregor Trefs sind das Thema der einhundertsechsten
Episode des Anwendungsentwickler-Podcasts. Inhalt Folgende Fragen
gehen wir im Verlaufe des Interviews durch. Allgemeines zur Person
Wie ist dein Name und wo arbeitest du? Gregor Trefs, 31 Jahre alt
Momentan bin ich freiberuflich unterwegs Themen: Java und Security
Wie bist du zur Informatik bzw. Softwareentwicklung gekommen?
Computer fand ich interessant Erster Rechner: 486 Erstes Programm
mit 12 Jahren geschrieben: Text-Adventure in Basic Viel Macromedia
Flash: ActionScript 2 (ECMA Script Derivat) Mit 16 auf ein
technisches Gymnasium gegangen Software und Hardware Design
Hauptsächlich Java Welche Ausbildung bzw. Studium im Bereich der
Informatik hast du absolviert? Studium Wirtschaftsinformatik Viel
Abwechslung Nie das Interesse verloren Tutorentätigkeit in
Softwaretechnik Masterarbeit im Bereich künstliche Intelligenz
Semantic Web Technolgies Hadoop Mit welcher Programmiersprache
arbeitest du im Alltag? Hauptsächlich Java Nebenbei Kotlin und
Scala Lieblingsprogrammiersprache Klar man arbeitet mit manchen
Sprachen lieber als mit anderen. Jedoch ist das nicht einfach Immer
eine Frage wie vertraut man mit der Sprache ist Faszinierend finde
ich Scala Sehr viel dabei Stichwort: Typelevel Programming Jedoch:
Steile Lernkurve und manchmal eine Sytax zum Wegrennen Auch sehr
wissenschaftlich orientiert Forschungssprache etc. Compiler finde
ich toll Tolle Inferenz Hier möchte ich noch mehr lernen
Praktikabel finde ich Kotlin Kompatibel mit Java und der Compiler
hilft mehr Typinferenz val/var etc. Nulltypes ist interessant Kein
Fan der Lamdba-Syntax, da geschweifte Klammer für mich zu überladen
wirkt Geht schnell voran Coroutines sehen toll aus Bessere
Abstraktion für parallele Programmierung im Vergleich mit Java
JavaScript Ich möchte mal wirklich was Nettes mit machen Leider nie
wirklich die Zeit gefunden Ich finde Flow Types toll und auch
normale Linter JSON in Javascript fühlt sich einfach besser an
Haskell Verdreht einem den Kopf ;-) Gut zum Lernen von FP
Verständnis für Equational Reasoning steigt Angst vor Monaden wird
genommen, da Monaden einen klaren Zweck erfüllen Bspw. pure
functional IO -> IO Monade Nie produktiv eingesetzt Java Kenne
ich am besten Entdecke doch immer was Neues (z.B. java.nio)
Lambda-Syntax sehr angenehm Leider etwas komplexes Typsystem
Referenz- vs. primitive Typen Type Erasure Sehr große Community
Funktionale Programmierung Wie würdest du die funktionale
Programmierung (FP) einem Einsteiger erklären? FP ist ein
Programmierparadigma Eine bestimmte Ansicht wie ein
Computerprogramm gestaltet wird Grundlegendes Element: Funktion Es
basiert auf dem Lambda-Kalkül von Alonzo Church Formale Sprache zur
Untersuchung von Funktionen Formal: Grammatik und Alphabet
unwidersprüchlich durch Mathematik ausgedrückt Beschreibt
Umwandlungsregeln wie Funktionen bspw. auf Argumente angewendet
werden Verzicht auf die Änderung eines globalen Zustands
Unterschied zu imperativ: Zustandsänderung durch Imperative
Erleichtert semantische Analyse Bedeutung? Ersetze Funktionen
rekursiv durch ihren Rückgabewert Form der Auswertung:
Subsitutionsmodell Problem: I/O Im Lambda-Calculus geht es um die
Anwendung von Umformungsregeln auf Lambda-Ausdrücken bis keine
Regel mehr anwendbar ist Wenn wir aber nur Umformungsregeln haben,
wie modellieren wir dann Input und Output und bleiben dem
Lambda-Kalkül treu? Anders gefragt, wie bleibt eine funktionale
Sprache mit I/O pur? Verschiedene Lösungen Prozeduren kümmern sich
um Input und Output und "füttern" einen funktionelen Kern
Beschreibung des Effektes mit puren Funktionen welche dann mit
einem Interpreter ausgeführt werden (Stichwort: Monaden)
Seiteneffekte am Rand der Applikation und wohldefiniert Ohne Angst
an die Materie herangehen und Verständnisfehler akzeptieren Welche
wichtigen Konzepte zeichnen die FP aus? Einfaches Nachvollziehen
von Verhalten (Substitutionsmodell) Trennung von Beschreibung und
eigentlicher Ausführung Kein geteilter globaler Zustand Komposition
von Funktionen Funktionen höherer Ordnung Klare Trennung von
Verantwortlichkeiten Implizite Informationen können explizit
modelliert werden FP ist ja eigentlich schon uralt! Warum sollte
man sich heute (wieder) damit beschäftigen? Neues Paradigma: Neue
Lösungen für alte Probleme Mehrkern-Prozessoren: Funktionen auf je
einem Kern ausführen Vgl. John Carmack: "My pragmatic summary: A
large fraction of the flaws in software development are due to
programmers not fully understanding all the possible states their
code may execute in. In a multithreaded environment, the lack of
understanding and the resulting problems are greatly amplified,
almost to the point of panic if you are paying attention.
Programming in a functional style makes the state presented to your
code explicit, which makes it much easier to reason about, and, in
a completely pure system, makes thread race conditions impossible."
Spaß Welche Vorteile hat FP gegenüber der Objektorientierung (OO)?
Meine Meinung Keine Seiteneffekte, dadurch einfacheres
Nachvollziehen Funktionen sind per se kompositionierbar Keine
Seiteneffekte, dadurch bessere Testbarkeit Input -> Output
Funktionen in einem Kontext ausführen Beispiel: Transaktionen
Imperativ: begin -> code -> end Funktional: Transaction(f)
map(g) flatMap(Transaction(h)) run Man arbeitet mit Werten Einmal
erstellt ändern sich diese nicht Gegenargumente Mit OOP lassen sich
Klassen modellieren, die einer Funktion ähneln Specification
Pattern: Create Specification and run against Candidate
Veränderbare Strukturen dominant in Java Immutables keine
Alternative: Speicher Lösung: Purely functional data structures
(siehe vavr) Immutable: Keine Änderung -> neue Instanz, jedoch
Structural Sharing Persistent: Alte Struktur bleibt erhalten Wie
schwer fiel/fällt dir der Wechsel zwischen FP und OOP? Ökonomische
Sicht: Solange FP bis Kosten größer als anderes Paradigma Sprache?
FP Wissen? Am Anfang eine riesen Lernkurve Viele Konzepte, die erst
verstanden werden müssen und eingeordnet Historische Recherche hat
mir auch ein bisschen dabei geholfen Ich kann nicht alles in FP Das
FP gibt es auch nicht Bspw. sind LISP und Clojure untypisiert OCAML
und Haskell stark typisiert Ähnlicher Kampf wie bspw. JavaScript
vs. Java Aber auch Scala vs. Java Ziel: Produktiv arbeiten. Code
der unseren Ansprüchen genügt. Ich benutze FP da, wo es Sinn macht
und soweit mein Verständnis mich trägt Nutzt du im Alltag nur
Konzepte der FP in OO-Sprachen oder rein funktionale Sprachen?
Primäre Sprache: Java Java ist keine funktionale Sprache Die
Bedeutung eines Java-Programs ist definiert durch das Memory Model
Das Memory Model regelt, wie Threads durch Speicher miteinander
kommunizieren D.h. per se gibt es shared mutable state Jedoch
funktionale Konzepte Unveränderliche Werte Funktionen benutzen
Monaden Combinatoren Ich nutze Kotlin und Java Magst du persönlich
lieber FP, OO oder eine Kombination aus beiden und warum? Mir
gefällt die Idee von FP besser OOP hatte ein paar Versprechen die
nicht ganz eingehalten wurden siehe lambdafy Code Reuse: Compose
functions Wie können auch unerfahrene Entwickler mit FP beginnen?
Code-Katas: Probleme mit Funktionen lösen Online Kurse: Coursera,
EDX, etc. Bücher: Learn you a Haskell for a greater good (Miran
Lipovaca) Functional Programming in Scala (Paul Chiusano, Rúnar
Bjarnason) Vorträge auf Konferenzen Worum ging es in deinem Vortrag
auf der JavaLand? Es ging um das Combinator Pattern in Java 8 Wie
kam es zu deinem Vortag auf der Javaland? Ich war letztes Jahr auf
der Javaland und habe Leute auf dem Newcomer-Track gesehen Ich fand
das toll. Stellenweise besser als die "Etablierten" Da war mir
klar: Das willst du machen. Was ist der Newcomer-Track und wie
wurdest du betreut? Die JavaLand möchte den Nachwuchs förden In
diesem Rahmen gibt es den Newcomer-Track Leute, die zuvor nicht auf
einer Konferenz gesprochen haben Man meldet sich mit Thema und
Mentor an Der Track geht über beide Konferenztage hinweg Ich habe
mich mit meinem Thema beworben und mit Johannes Link als Mentor
Falls man keinen Mentor angibt, bekommt man einen zugeteilt
Johannes kenne ich schon seit ca. 2-3 Jahren Er hat in Heidelberg
ein Code Dojo für Kinder veranstaltet und ich war mit dabei als
Mentor An das Mentoring bin ich über Walery Strauch gekommen, einer
unserer Mitorganisatoren Um ehrlich zu sein, wusste ich beim
Kennenlernen nicht, dass er recht bekannt ist und ein Fachbuch über
TDD geschrieben hat Hier auch mal Grüße an euch Johannes und Walery
:-) Wie hast du das Thema deines Vortrags gefunden? Ich hatte etwas
mit FP in Java eingereicht Artem Kozlov und ich hatten bereits bei
der majug einen ähnlichen Vortrag gehalten Nach dem ersten Treffen
mit Johannes war klar, dass das viel zu weit gegriffen ist Wir
haben uns dann zusammen auf das Thema Combinator Pattern in Java 8
festgelegt Wie hast du dich auf deinen Vortrag vorbereitet?
Johannes und ich haben uns ein paar mal getroffen. Oft im Cafe,
aber auch bei mir zu Hause. Thema schärfen Abstract: Leute
ansprechen und die Erwartungen genau beschreibt Welches Publikum
will ich ansprechen? Was für Voraussetzungen erwarte ich vom
Publikum? Danach ging es dann los. Folien erstellt und mit Johannes
ausgetauscht Weiterhin hatte ich einen Probevortrag und Kommentare
eingearbeitet Ich möchte Mark Paluch nochmals für den Tipp mit dem
Comparator-Typ danken Dieser nutzt Combinator Am Ende war der
Foliensatz da und ich war glücklich :-) Inzwischen finde ich Google
Docs da ganz angenehm Was hast du selbst durch den Vortrag gelernt?
Nicht so viel Aufregug :-) Alles halb so schlimm Haltung, Haltung,
Haltung In einem Foto sitze ich mit dem Schultern nach vorne und
mache einen recht beklemmten Eindruck ...
Episode melden

„Gregor Trefs über funktionale Programmierung, Konferenzen und Fachartikel – Anwendungsentwickler-Podcast #106“

Worum geht es? Danach fragen wir noch nach dem Grund.

Teilen

Mein Archiv

Deine Privatkopie der Folgen, die du nicht verlieren willst.

Podcast-Folgen verschwinden. Feeds werden auf die letzten Episoden gekürzt, Hoster räumen alte Dateien ab, Formate wechseln den Anbieter und lassen ihr Archiv zurück. Mit „Mein Archiv“ sichert podcast.de die Folgen deiner Podcasts für dich — angefangen bei den ältesten, denn die sind zuerst weg.

  • Deine gesicherten Folgen bleiben hörbar, auch wenn das Original offline geht.
  • Auch Folgen, die im heutigen Feed gar nicht mehr stehen — podcast.de kennt sie noch.
  • Herunterladen bleibt möglich, solange die Folge beim Podcaster liegt. Der zählt seine Abrufe wie bisher.
Startet bald

Sei beim Start von Mein Archiv dabei

Mein Archiv ist fast fertig. Trag dich ein, dann bekommst du eine E-Mail, sobald es losgeht – und bist von Anfang an dabei. Wir schreiben dir nur zum Start, keine Werbung, keine Weitergabe deiner Daten.

Du bekommst zuerst eine Bestätigungsmail. Abmelden geht jederzeit. Datenschutz