Programmiersprache: F# 5.0 unterstützt interaktives Programmieren mit .NET 5

Zeitgleich mit .NET 5.0 ist das dazu passende Major Release der funktionalen Sprache F# erschienen. Interaktives Programmieren im .NET-Ökosystem steht im Fokus.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Lesezeit: 6 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Das .NET-Team hat die neue Hauptversion der funktionalen Programmiersprache F# herausgebracht: Microsoft liefert F# 5.0 gemeinsam mit .NET 5.0 aus, das diese Woche erschienen ist. Der Fokus des aktuellen Release liegt auf interaktivem Entwickeln von Code und überarbeiteten analytischen Funktionen. Die Basisfunktionen sind auf die neue .NET-Version 5.0 ausgelegt, die die Nachfolge der Varianten .NET Framework, .NET Core und Mono antritt und die Vereinheitlichung der drei bislang getrennten Microsoft-Entwicklungsstränge anstrebt.

F# 5.0 ist die neue Standardversion der Sprache für die Entwicklungsumgebung Visual Studio (VS) und das .NET SDK. Wer ein neues oder bestehendes Projekt mit einem der beiden Tools kompiliert, nutzt dabei ab sofort automatisch Version 5.0. Auch Jupyter Notebooks und nteract unterstützen laut Ankündigung im .NET-Blog das Release, wodurch auch interaktive Projekte mit F# möglich werden. Die neue Hauptversion beherrscht offenbar die #r "nuget:..."-Syntax zum Referenzieren von Paketen. Paketreferenzen unterstützen dann native Abhängigkeiten wie das Machine-Leaning-Framework ML.NET, mit ihnen können F#-Entwickler in Jupyter Notebooks und in den noch im Preview-Stadium befindlichen Notebooks von VS Code Pakete laden.

Eine wesentliche Neuerung in F# 5.0 ist die String-Interpolation, die vom Design her interpolierten Zeichenfolgen in C# und in JavaScript ähneln soll: Entwickler können nun offenbar Code in die "Leerstellen" einer Zeichenfolge im String-Literal eintragen. Dabei sind laut Blogeintrag des F#-Teams auch typisierte Interpolationen möglich, mit denen man erzwingen kann, dass der interpolierte Kontext einem bestimmten Typ entspricht. Die Formatangaben entsprechen dabei wohl der Funktion sprintf.

Um beim Logging die eigenen Logs gegen spätere Änderungen im Quellcode abzusichern, können F#-Entwickler nun das neue Feature nameof einsetzen, mit dem sich ein zugewiesenes Symbol konsistent auflösen lässt. Zum Beispiel lassen sich Monatsnamen verankern – der Aufruf eines 13. Namen würde in dem Fall eine Fehlermeldung produzieren, da der Namenspool ja nur zwölf Monate enthält. Laut Herausgebern kann man praktisch alles in F# als "Namen" einsetzen, auch Typparameter.

F# 5.0 ermöglicht das Offenlegen von Typdeklarationen – das Prinzip entspricht etwa dem Öffnen einer statischen Klasse in C#. Mit dem neuen Befehl open sollen Entwickler nun den statischen Inhalt jeglichen Typs offenlegen können. Von F# definierte Einträge lassen sich damit ebenfalls "öffnen". Praktischen Nutzen entfaltet diese Option, wenn man zum Beispiel auf die Ableitungen einer Union zugreifen möchte, ohne dafür gleich das ganze übergeordnete Modul öffnen zu müssen.

Mehr zu .NET 5.0

betterCode() präsentiert: .NET 5.0 – Das Online-Event am 3. Dezember 2020

Das können Sie lernen:

  • Von .NET Framework über .NET Core zu .NET 5.0: Was bedeutet das für die Migration, und wie groß sind die Aufwände?
  • Was ist neu in .NET 5.0?
  • Neue Features: ASP.NET Core 5.0 und Blazor 5.0 kennen lernen
  • Die wichtigsten Sprachneuerungen in C# 9
  • Mobile Entwicklung mit .NET 5
  • OR-Mapping mit Entity Framework Core 5.0
  • WinUI 3 als Alternative zu WPF und UWP
  • Ausblick auf .NET 6.0

Weitere Neuerungen betreffen die Performance von Runtime und Compiler, das Slicing von Datentypen bei analytischer Arbeit an Datensätzen und Rechenausdrücke (Computative Expressions) dienen in F# 5 zum Modellieren kontextbezogener Berechnungen, den sogenannten "monadischen Rechenvorgängen" des funktionalen Programmierens. Eine Reihe anderer Features wie Reverse Indexes steht im Preview-Stadium in den Startlöchern und wird in kommenden Releases einen stabilen Zustand erreichen. Für die nächste Version plant das F#-Team Arbeiten an der Open-Source-Infrastruktur. Es hat vor, einige Kerntools zu verbessern. Die letzte F#-Version 4.7 war im September 2019 parallel zum damaligen .NET Core 3.0 erschienen und hatte den .NET Standard 2.0 vorausgesetzt. Seit F# 4.7 lässt sich die effektive Sprachversion mit dem Compiler abstimmen.

2017 hatte sich Mads Torgersen, ein Program Manager im .NET-Team bei Microsoft und Lead Designer für C#, zur Strategie der hauseigenen .NET-Sprachen geäußert: Damals fand eine Abkehr von der "Co-evolution Strategy" statt, seither verfolgen die Sprachen Visual Basic, C# und F# jeweils individuellere Entwicklungslinien. F# gilt als das funktionale Pendant zu C# und zählt zu den Multiparadigmensprachen: Hinter F# verbirgt sich eine statisch typisierte Functional-first Sprache mit Features und Idiomen für funktionales, objektorientiertes und imperatives Programmieren. Beispiele für funktionale Sprachen sind Elm, Elixir und Clojure, klassisch objektorientiert (und meistens "general purpose") sind Sprachen wie Java, PHP und C#. Allerdings verwischen die strengen Grenzen, funktionale Konzepte halten auch hier Einzug.

Beim Strategiewechsel vor drei Jahren hatte Microsoft verkündet, F# zur "besten funktionalen Sprache" machen zu wollen. Das Typsystem gilt als besonders mächtig, da es den Typ eines Ausdrucks oder Werts ohne die Angabe von Typparametern inferieren kann. In der Praxis bedeutet das, dass es oft nicht erforderlich ist, bei Benutzung der Sprache die Typen anzugeben. Werte und Funktionen lassen sich zur Identifikation an Namen binden und diesen zuweisen. Diese Variablen sind dann – im Gegensatz zu anderen Sprachen – unveränderlich. Nur auf den ersten Blick erscheint F# wie eine Spezialsprache für mathematische Algorithmen – beim genaueren Hinsehen eröffnet sich ein breiteres Anwendungsspektrum. Auffällig war bereits vor 2017, dass F# zwar weniger aktive Entwickler als C# und Visual Basic, dafür starken Rückhalt in der Open-Source-Community hatte.

Weiterlesen: .NET 5.0 ist erschienen

(Bild: Denis Linine / Shutterstock.com)

Mehr Informationen zum Release von F# 5.0 lassen sich der ausführlichen Ankündigung im .NET-Blog von Microsoft entnehmen. Das F#-Team führt zahlreiche Codebeispiele auf und bietet Anleitung zum Installieren in verschiedenen Umgebungen. F# 5.0 ist im neuen .NET-5.0-Release enthalten und lässt sich unter Windows mit Visual Studio ab Version 16.8 nutzen, neben dem klassischen Bezug über das aktuelle .NET SDK ist eine Installation auch in Jupyter Notebooks und VS Code Notebooks (Preview) möglich.

(sih)