Sie wenden Flow Design in C# an?

Flow Design entspricht  eigentlich der Denkweise von Funktionaler Programmierung, es gibt Funktionen mit Input und Output, die Anzahl von Input und Output kann beliebig sein und damit man kann die Funktionen verbinden. Am besten stellt man sich das als eine Elektrische Verdrahtung vor. Die Daten fließen durch die Funktionen, werden also transformiert und nicht in einer Objekt-Daten-Kapsel mutiert, was es einfacher macht gedanklich den Überblick zu behalten, einfacher zu Testen ist und auch die Skalierbarkeit (Stichwort Multicore) ist so einfach möglich (ohne die Gefahr von Deadlocks). In F# wird ihnen auffallen, dass die ganzen Objekt-Konstrukte die man für Flow Design aufbauen muss, hinfällig werden und im Code am ehesten den Diagrammen entspricht. Die Verdrahtung (wiring) kann viel eleganter mit dem F# Pipe Operator (|>) gemacht werden.
Daten |> Validierung |> Auswertung
Der Datenfluss erfolgt in Pfeil |> Richtung. Man kann den Flow auch untereinander schreiben.
Daten
|> Validierung
|> Auswertung
So fließen die Daten durch die Funktion Validierung dann die Funktion Auswertung. Und ob alles auch zusammen passt, das sagt ihnen der Compiler bevor es evtl. zu Laufzeitfehlern kommt. Eine Cheat-Sheet zu Flow-Design findet sich hier.

Fazit

Wer Flow Design anwendet, kann sich viel Arbeit in der Codierung ersparen und gleichzeitig die Qualität (Korrektheit, Lesbarkeit, Wartbarkeit) des Codes erhöhen, wenn man diesen mit F# implementiert.

Videos zum Thema Funktionale Programmierung (FP)

Hier sind einige neue interessante und zum anders Denken anregende Videos zum Thema Funktionale Programmierung (FP). Warum sich jeder Software Entwickler mit FP befassen muss!

Weckruf – rüttelt an dem wie man bisher Software entwickelt(e).

Titel: Functional Programming: What? Why? When? Aussage: The Failure of State Autor: Robert C. Martin Titel: Programming in Interesting Times Aussage: YOUR PROGRAMMING LANGUAGE IS GOING TO DIE Autor: Russ Olsen Titel: One Hacker Way, a Rational Alternative to Agile Aussage: With Scrum we talk too much about code, instead of writing code. Uses the F***-word Autor: Erik Meijer Titel: Type Systems – The Good, Bad and Ugly Aussage: Not relying on type safety is unethical (if you have an SLA) Autor: Paul Snively and Amanda Laucher

   

Zeigt die Möglichkeiten von F#

Titel: FSLAB: DOING DATA SCIENCE WITH F# Aussage: How to get knowledge from data? Autor: Tomas Petricek Title: MBrace: large-scale programming in F# Aussage: Cloud Computing is easy with F# Autor: Eirik Tsarpalis

Warum F#

  Mit über 30 Jahren Erfahrung in der Programmierung und Softwareentwicklung habe ich sehr vieles gesehen, gemacht und gelernt. Jahrzehnte lang war die Objektorientierte Entwicklung das A und O. Aber der Fortschritt stockte doch irgendwie, wenn man Software mit Elektronik vergleicht. Software Entwicklung dauerte typischerweise immer länger als geplant. Die Software Qualität von Fehlverhalten bis hin zu Anwenderfreundlichkeit lässt immer noch zu wünschen übrig. Die Aufwände trotz der viel gelobten Wiederverwendung von Objektorientiertem Code wurden nie kleiner.
Das kann doch nicht sein. Wo ist der Fortschritt geblieben? Stecken wir in einer Sackgasse?
Wie in “Über mich" beschrieben, ich suchte und fand etwas in Vergessenheit geratenes, die Funktionale Programmierung (FP), die schon älter ist als die Objektorientierte.
Und ich glaube es ist der Schlüssel, vieles einfach und besser zu machen und aus dem Sackgassen Dilemma auszubrechen und die Produktivität und Qualität von Software massiv zu erhöhen.
Der Grund wieso man jetzt immer öfter von FP hört ist, weil es die Beste Lösung für die Skalierbarkeit der immer wachsenden Prozessor Anzahl in Computern ist. Also die Asynchrone- und Parallele-Programmierung. So dass die Software die vorhandenen Hardware Ressourcen korrekt und effizient Nutzen kann und so dem Anwender das bieten was er erwartet. Meine Erfahrung zeigt mir, die praxisorientierte Programmiersprache dazu mit sofortigem praktischem Nutzen und ohne viel verwirrende Sprachkonstrukte, ist F# für .NET.
  • Voll kompatibel mit der kompletten .NET Umgebung.
  • Und es gibt Sicherheit und ist durchschaubar, denn F# ist Open Source.
  • Baut auf lange bewährtem auf und ist keine reine Microsoft Erfindung.
Der Stammbaum : Die Abstammung von F#
ML (1973) -> SML (1984) -> Caml (1987) -> OCaml (1996) – – -> F# (2007)
F# ist sehr stark an OCaml orientiert und z.T. auch Syntax kompatibel, also OCaml ist CAML mit objektorientiertem Zusatz, der wohl im OO-Hype Zeitalter dazu genommen wurde. Quelle: Programmiersprachen Stammbaum Die anderen aktuellen FP Sprachen und ihre Einflüsse sind z.B.
  • F# 1.0 (2007) : Objective CAML, C#, Haskell
  • Scala 1.0 (2003) : Java, Pizza, ML, Haskell, Smalltalk, Erlang
  • Haskell 1.0 (1987) : APL, LISP, Miranda, ML
Quelle: Wikipedia Was Entwickler überzeugen wird folgt Stück für Stück in technischen Blogs.