Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Ich besuche so oft ich kann Entwicklerkonferenzen und habe einen Trend festgestellt. Jedes Jahr scheint es mehr Inhalte über funktionale Programmierung (FP) zu geben, nicht weniger. Oft ist ein ganzer Track diesem Thema gewidmet und auch in den anderen Vorträgen werden FP-Inhalte irgendwo als Gesprächsthema eingebaut.

FP wird langsam aber sicher zu einer großen Sache. Warum ist das so?

Weil FP eine der größten Innovationen in der Geschichte der Softwareentwicklung ist. Es ist auch cool. Und Spaß macht es auch.

Mit dem Wachstum von Konzepten wie Containerisierung und serverlosen Anwendungen ist FP nicht nur ein Spaß für Freizeitprojekte von Entwicklern, sondern auch keine Modeerscheinung, die in ein paar Jahren vergessen sein wird. Es hat einen echten Nutzen für unsere Stakeholder.

In der .NET-Welt spielen noch weitere Faktoren eine Rolle. Mads Torgerson, der Chefdesigner von C#, ist selbst ein Fan von FP und eine der wichtigsten treibenden Kräfte hinter der Einführung des funktionalen Paradigmas in .NET. Es gibt auch F#, die funktionale Sprache von .NET. Da F# und C# eine gemeinsame Laufzeit haben, werden viele funktionale Funktionen, die vom F#-Team gefordert werden, in irgendeiner Form auch in C# verfügbar.

Die großen Fragen bleiben jedoch bestehen: Was ist FP? Und muss ich eine völlig neue Programmiersprache lernen, nur um sie nutzen zu können? Die gute Nachricht ist, dass du als .NET-Entwickler keinen großen Teil deiner Zeit damit verbringen musst, eine neue Technologie zu lernen, nur um auf dem neuesten Stand zu bleiben. Du musst nicht einmal in eine weitere Bibliothek eines Drittanbieters investieren, um sie in die Abhängigkeiten deiner Anwendung aufzunehmen: FP ist mit fertigem C#-Code möglich, wenn auch mit ein wenig Bastelei.

Dieses Buch führt in alle grundlegenden Konzepte von FP ein, zeigt ihre Vorteile auf und beschreibt, wie sie in C# umgesetzt werden können - nicht nur für dein eigenes Hobby, sondern auch mit Blick auf den unmittelbaren Nutzen für dein Berufsleben.

Zu diesen Vorteilen gehören unter anderem die folgenden Dinge:

  • Sauberer, aufgeräumter und leichter zu lesender Code

  • Eine leichter zu pflegende Codebasis

  • Anwendungen, die deutlich seltener von unbehandelten Ausnahmen und deren unvorhersehbaren Folgen betroffen sind

  • Eine Codebasis, für die es einfacher ist, automatisierte Unit-Tests zu schreiben

All das und mehr!

Wer sollte dieses Buch lesen?

Dieses Buch richtet sich an Entwickler/innen - egal ob Profi, Student/in oder Hobbyist/in -, die bereits über grundlegende Kenntnisse in C# verfügen. Du musst kein Experte sein, aber du solltest mit den Grundlagen vertraut sein und zumindest eine relativ einfache C#-Anwendung erstellen können.

Es werden auch einige fortgeschrittenere .NET-Themen behandelt, die ich aber erklären werde, wenn sie auftauchen.

Dieses Buch wurde mit Blick auf einige wenige Personengruppen geschrieben:

  • Diejenigen von euch, die die Grundlagen von C# gelernt haben, aber Wege finden wollen, ihre Kenntnisse durch fortgeschrittene Techniken zum Schreiben von besserem, robusterem Code zu vertiefen.

  • .NET-Entwickler, die schon von FP gehört haben und vielleicht sogar wissen, was es ist, aber wissen wollen, wie sie anfangen können, auf diese Weise Code in C# zu schreiben.

  • F#-Entwickler, die nach Möglichkeiten suchen, die funktionalen Spielzeuge, an die du gewöhnt bist, weiter zu nutzen.

  • Diejenigen, die von einer anderen funktionalen oder funktionsunterstützenden Sprache (wie Java) auf .NET umsteigen.

  • Jeder, der das Programmieren wirklich liebt. Wenn du den ganzen Tag im Büro Code schreibst und dann nach Hause kommst, um zum Spaß noch mehr zu schreiben, ist dieses Buch wahrscheinlich genau das Richtige für dich.

Warum ich dieses Buch geschrieben habe

Ich interessiere mich für das Programmieren, solange ich mich erinnern kann. Als ich ein kleiner Junge war, hatten wir einen ZX Spectrum, einen britischen Heimcomputer, der in den frühen 80er Jahren von Sinclair Research entwickelt wurde. Falls sich jemand an den Commodore 64 erinnert: Er war ähnlich, aber viel primitiver. Er hatte nur 15 Farben und eine Bildschirmauflösung von 256 × 192.1 Ich hatte das fortschrittlichere Modell mit 48K Speicher, aber mein Vater hatte das frühere Modell, den ZX81, der nur ein Kilobyte Speicher (und Gummitasten) hatte. Er konnte nicht einmal farbige Charakter-Sprites haben, sondern nur Bereiche des Bildschirms, so dass dein Spiel-Avatar die Farbe von dem änderte, vor dem er gerade stand. Kurz gesagt, es war der pure Wahnsinn auf Toast.

Eines der besten Dinge daran war sein Betriebssystem, das praktisch aus einer textbasierten Programmierschnittstelle bestand. Um ein Spiel zu laden, brauchte man Code (von einer Kassette, mit dem Befehl LOAD ""), aber es gab Zeitschriften und Bücher für Kinder mit Code, den man selbst für Spiele eingeben konnte. Daraus entwickelte sich meine dauerhafte Besessenheit von den Geheimnissen des Computercodes. Vielen Dank, Usborne Publishing!

Als ich etwa 14 Jahre alt war, schlug mir ein Computer-Beratungsprogramm in der Schule vor, eine Karriere in der Software-Entwicklung anzustreben. Damals wurde mir zum ersten Mal klar, dass man aus einem albernen Hobby etwas machen kann, mit dem man tatsächlich Geld verdienen kann!

Nach der Uni war es an der Zeit, einen richtigen Job zu finden, und da kam ich zum ersten Mal mit C# in Berührung. Der nächste Schritt war also, zu lernen, wie man richtig Code entwickelt. Ganz einfach, oder? Um ehrlich zu sein, fast zwei Jahrzehnte später versuche ich immer noch,das herauszufinden.

Einer der wichtigsten Wendepunkte in meiner Programmierkarriere war die Teilnahme an einer Entwicklerkonferenz in Norwegen, auf der ich endlich zu verstehen begann, was es mit der funktionalen Programmierung auf sich hat. Funktionaler Code ist auf eine Art und Weise elegant, prägnant und leicht zu lesen, wie es bei anderen Formen von Code nicht der Fall zu sein scheint. Wie bei jeder Art von Code ist es immer noch möglich, schrecklich aussehende Codebases zu schreiben, aber der Code fühlt sich im Grunde so an, als ob er endlich richtig gemacht wird, wie ich es bei anderen Arten von Code noch nie erlebt habe. Ich hoffe, dass du nach der Lektüre dieses Buches nicht nur zustimmst, sondern auch daran interessiert bist, die vielen anderen Möglichkeiten zu erforschen, die es da draußen gibt, um das Thema weiter zu erkunden.

Navigieren in diesem Buch

So habe ich dieses Buch gegliedert:

  • Kapitel 1 ist die Einführung und behandelt, was du sofort tun kannst, um funktional in C# zu programmieren, ohne ein einziges neues NuGet-Paket referenzieren, eine Bibliothek eines Drittanbieters verwenden oder an der Sprache herumhacken zu müssen. Fast alle Beispiele in diesem Kapitel funktionieren mit fast jeder Version von C# seit Version 3. In diesem Kapitel werden die allerersten Schritte in FP vorgestellt, allesamt relativ einfacher Code, der den Grundstein für das legt, was noch folgen wird.

  • In Teil I, "Was machen wir schon?" (Kapitel 2 bis 4), geht es darum, wie du ein paar funktionale Ideen in deinen täglichen C#-Code einbauen kannst, ohne dass du etwas grundlegend Neues machen musst. Viele der Code-Beispiele sind einfaches, sofort einsetzbares C#. Probiere diese Kapitel aus, wenn du noch nie etwas von FP gehört hast und einen netten, sanften Einstieg suchst. Stell dir vor, du tauchst deine Zehen ins Wasser, um zu sehen, ob du schwimmen willst.

  • In Teil II, "In den Bauch des Funktionalen" (Kapitel 5 bis 10), ziehe ich die Handschuhe aus und beginne, einige "richtige" funktionale Konzepte vorzustellen. Aber keine Panik, ich werde den sanften Anstieg zum Gipfel nehmen und die Ideen langsam und in leicht verdaulichen, mundgerechten Stücken vorstellen.

  • Teil III, "Und auf der anderen Seite" (Kapitel 11 bis 14), fasst alles zusammen, was du bisher gelernt hast, und gibt dir Anregungen, wie du weiter lernen kannst.

Du kannst so weit einsteigen, wie du dich bereit dafür fühlst. Dies ist kein Roman;2 Lies die Kapitel in der Reihenfolge, in der sie für dich Sinn machen.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://oreil.ly/functional-programming-with-csharp-code zum Download bereit .

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, sende bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Funktionale Programmierung mit C# von Simon J. Painter (O'Reilly). Copyright 2023 Simon J. Painter, 978-1-492-09707-5."

Wenn du der Meinung bist, dass deine Verwendung von Codebeispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

Wir haben eine Webseite für dieses Buch, , auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/functional-programming-with-csharp aufrufen .

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.

Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media

Folge uns auf Twitter: https://twitter.com/oreillymedia

Schau uns auf YouTube: https://youtube.com/oreillymedia

Danksagungen

Die allererste Person, der ich danken möchte, ist Kathleen Dollard. Sie hielt vor einigen Jahren auf der Norwegian Developers Conference (NDC) in Oslo einen Vortrag mit dem Titel "Functional Techniques for C#". Das war das erste Mal, dass ich mit FP in Berührung kam, und es hat mir wirklich die Augen geöffnet.

Der andere Guru, dem ich auf gefolgt bin, ist Enrico Buonanno. Sein Buch Functional Programming in C# (Manning) war das erste, mit dem ich richtig verstehen konnte, wie einige der schwer zu verstehenden funktionalen Konzepte funktionieren. Wenn dir mein Buch gefällt, solltest du dir sein nächstes Buch ansehen.

Ian Russell, Matthew Fletcher, Liam Riley, Max Dietze, Steve "Talks Code" Collins, Gerardo Lijs, Matt Eland, Rahul Nath, Siva Gudivada, Christian Horsdal, Martin Fuß, Dave McCollough, Sebastian Robbins, David Schaefer, Peter De Tender, Mark Seeman, Gerald Versluis, Alex Wild, Valadis Novakovits, Lackner Reinhard, Eric Lucas, Christopher Straten, Kathleen Dollard und Scott Wlaschin haben die ersten Entwürfe gelesen und uns wertvolles Feedback gegeben. Vielen Dank, Leute!

Danke auch an meine Redakteurin Jill Leonard. Sie muss eine Engelsgeduld haben, um es ein ganzes Jahr lang mit mir auszuhalten!

1 Es gab acht Grundfarben und von jeder eine helle Version. Eine war allerdings schwarz, und wie um alles in der Welt kann man helles Schwarz haben? Also...15.

2 Aber wenn dies ein Roman wäre, wäre es garantiert ein Mordfall, und der Butler hätte es getan!

Get Funktionale Programmierung mit C# now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.