Functional Programming in F# für .NET – Kursinhalte

Die Kurs Inhalte können variieren, je nach Wissensstand, Zeitrahmen und Trainingsschwerpunkten.
Es wird Wert gelegt auf die Grundlagen und dass man das Gelernte sofort anwenden kann.

Sofort Produktiv

  • einfache und mächtige F# Syntax, wenig Code, einfaches Refactoring
  • Code ausführen während man ihn schreibt
  • effiziente und gut verständliche Datenmodellierung (Domain Driven Design (DDD)) mit Algebraischen Daten Typen die automatisch Strukturellen Vergleich und Hashing bieten.
  • Masseinheiten werden vom Compiler bei Übergabe und Berechnungen auf Korrektheit geprüft (Meter, Kilogramm, Sekunde, Pixel, Dollar, SelbstDefiniert, etc.)
  • mit F# Type Providern Ihre Daten automatisch typisiert im Code mit IntelliSense anwenden. Type Provider sind ein einzigartiges Feature von F# (seit 2010, ich konnte es kaum glauben als ich es das erste mal 2010 gesehen habe, It’s magic!), das keine andere Programmiersprache bisher ermöglicht (mit Ausnahme von IDRIS seit März 2015).
  • Erstellen von eigenen Domain Specific Languages (DSL)
  • F# ist in Visual Studio (seit 2010) schon enthalten
  • Kompatibilität, .dll’s können von C#, VB.NET und umgekehrt verwendet werden.

Wichtige Grundlagen der Funktionalen Programmierung (FP)

  • Immutability: verstehen warum Immutability gut ist und hilft Probleme einfacher zu lösen und Code besser zu verstehen. Immutable Daten Strukturen
  • Type Inference : verstehen und Nutzen erkennen
  • Partial Application und Curring
  • Rekursion: rekursive Funktionen und rekursive Datentypen
  • Higher Order Functions : map, reduce, filter, etc.
  • Pattern Matching
  • Referential Transparency
  • Lazyness: Seq, lazy
  • Memoziation
  • Algebraischen Daten Typen (ADT) (sind keine POCOs (Plain-Old CLR Objects))

Wesentliche Unterschiede von F# zu C#

  • null als ungültiger Wert (nicht als gültiger default Wert von Referenz Typen in C#)
  • unit als leerer Wert (nicht void als kein Wert wie in C#, denn void und async vertragen sich nicht gut in C#)
  • async als Library (nicht als async und await Sprachkonstrukte wie in C#)
  • lock als Funktion (nicht als Statement wie in C#)
  • choice für Exception Handling (Exception free programming)

Automatisiertes Testen

  • interaktives Testen im REPL
  • automatisches Erzeugen von Testdaten und Ermittlung des kleinsten Datensatzes, der die Fehler-Analyse vereinfacht mit FsCheck
  • Testen von Webseiten mit Canopy (Automatisiertes Surfen)

Parallel Programming und Asynchronous Programming (Concurrent Programming)

  • Parallelen Code schreiben, dem man trauen kann (immer richtiges Ergebnis)
  • Async Code composition
  • Actors (F# MailboxProcessor)

Web Programmierung (wird im Grundkurs nur gestreift)

  • F# Code zu JavaScript compilieren (mit FunScript oder WebSharper)
  • Client- und Server-Code in F# schreiben (Code Reuse) und automatisch zu .NET für Server und JavaScript für Client compilieren (mit WebSharper)
  • IntelliSense in F# für JavaScript Library Funktionen dank automatischer TypeScript Definitions File Auswertung.


Zu F# Inhouse Schulungskurse

F# Videos 2015

Eine sehr gute Staffel von Videos zu F#, kurz und auf dem Punkt. 
Von Tomas Petricek und Seth Juarez von Channel9. Erschienen am 6.6.2015.

1. F# für Manager und CTOs
Time-to-Market (TTM),  Korrektheit, komplexe Probleme lösen, effiziente skalierbare Software

2. F# für Architekten und Domain Experten
Domain Driven Development (DDD)

3. F# für Web Entwickler und Data Scientists
Eleganter Zugriff auf Web-Services mit minimalem Code und ohne Tools.

4. F# für Web Entwickler
Eine WebApp in unter 50 Zeilen Code mit Azure Deployment.


Wer mit .NET entwickelt sieht sich am besten die ganze F# Video Staffel (1-4) an, es ist empfehlenswert!

1. Für Manager
“Making the Case for using F#”


2. Für Architekten und Domain Experts
“Domain Modeling in F#”


3. Für Web Entwickler und Data Scientists
“Type Providers in F#”


4. Für Web Entwickler
“Deploying an F# Web Application with Suave”


Weiterführende Information zu Suave gibt es hier :
– Eine komplette Beschreibung zu einer “Music Store” Suave WebApp https://www.gitbook.com/book/theimowski/suave-music-store/details
– Suave Web Development F# Library https://github.com/SuaveIO/suave
– Suave Homepage : Suave is a lightweight, non-blocking web server http://suave.io/

Wettbewerbsvorteil F#

Sie wissen dass Funktionale Programmierung ein relevantes Thema in der Software Entwicklung ist, aber Sie haben bisher gewartet es auszuprobieren?

Ja C# bietet Funktionale Ansätze, wird aber niemals das bieten können, was eine vom Kern her echte Funktionale Sprache bietet.

Und genau dies macht den Unterschied, denn Werkzeuge prägen die Denkweise und Herangehensweise beim Lösen von Problemen. Ja genau, es geht um Problemlösungen, die F# Syntax ist nebensächlich und übrigens viel einfacher als C#. Die Denkweise beeinflusst die Architektur, den Design und vieles wird einfacher!

F# ist voll kompatibel mit der .NET Umgebung, sie müssen also nichts über Bord werfen, kein Risiko, ja Sie haben F# bereits seit 2010 auf Ihren Computern installiert im Visual-Studio. F# ist voll von Microsoft unterstützt, ist Open Source und Multiplatform!

Ich kenne F# seit 2009 und wende es seit 2011 fulltime für alles an. Davor C# seit .NET 1.1 und C++, PASCAL, ADA, LISP, C, Assembler. Ich habe Informatik studiert und mir mit 12 Jahren das Programmieren selbst beigebracht. Ich weiss wovon ich rede. Ich biete eine erfahrene sauber aufgebaute Einführung in die praxisnahe Funktionale Programmierung mit F# für .NET an.

Da ich selber von C# auf F# umgestiegen bin, kenne ich die Stolpersteine und räume diese aus dem Weg für einen glatten Einstieg. Ich denke nach meinem Kurs werden Sie nicht mehr zögern F# einzusetzen. Und ich denke, falls bei Ihnen schon jemand F# ausprobiert hat und zur Seite gelegt hat, weil man “das alles in C# auch machen kann“, dann liefere ich genau die nötigen fehlenden Facts. Das Zentrale ist nicht die Sprach Syntax von F# die offensichtlich anders ist, es ist die Denkweise und die Konzepte der Funktionalen Programmierung.

Und nein, es ist kein Hype, keine Bubble die bald platzen könnte, die Grundlagen der Funktionalen Programmierung wurden schon in den 30-er Jahren gelegt und mathematisch bewiesen! Und warum ist es dann heute so neu, dass man das jetzt lernen soll? Die Zeiten sind vorbei, wo ein Computer nur einen Prozessor hatte und Speicher ist heute massig vorhanden. Und um diese neuen Gegebenheiten bestens in Ihren Software Produkten nutzen zu können, ist die Funktionale Programmierung (FP) die ideale Methodik. Und an den Schulen und Universitäten wird es bisher leider nur kurz überflogen. Denn bisher wollte man auf dem Arbeitsmarkt ausschließlich Software Entwickler mit Kenntnissen in Objektorientierter Programmierung (OOP). Und F# kann übrigens auch OOP, wie gesagt voll kompatibel zu .NET. Also wird OOP nicht über Bord geworfen, sondern echtes FP kommt hinzu!

Und wie immer ist man zu beschäftigt, um Neues anzuwenden?

Are you too busy to improve?

Bild Referenz: https://hakanforss.wordpress.com/2014/03/10/are-you-too-busy-to-improve/

Ich sage es Ihnen, das ist es Wert! Wenn Sie Ihrer Firma einen Wettbewerbsvorteil verschaffen wollen und produktiver und effektiver, robuste Software Entwickeln wollen in der .NET Welt, dann ist das der beste Weg.

Und sollte ich Sie noch nicht ganz überzeugt haben, dann lesen Sie bitte was andere Anwender von namhaften Firmen zu F# sagen http://fsharp.org/testimonials/

Mehr zu den Vorzügen von F# können Sie auf meinem Deutschsprachigen Blog lesen http://FunctionalSoftware.NET/warum-fsharp/

Kompakte F# Schulungskurse

Vorsprung durch Wissen!
Es ist nicht genug zu wissen – man muss auch anwenden.
Es ist nicht genug zu wollen – man muss auch tun.
— Johann Wolfgang von Goethe