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

IT-Berufe-Podcast - Podcast készítő Stefan Macke - Hétfők

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

Visit the podcast's native language site