F-Sharp

F-Sharp (F#) ist eine .NET-konforme Sprache von Microsoft, die den funktionalen Programmiersprachen zugeordnet wird, jedoch gleichzeitig objektorientierte und imperative Möglichkeiten bietet. Damit können in F-Sharp (F#) geschriebene Komponenten problemlos mit denjenigen interagieren, die in C-Sharp (C#), Visual Basic und C++ geschrieben sind. F# hat eine deutlich andere Syntax als diese Sprachen, und lehnt sich diesbezüglich stark an die Strukturen von Ocaml und ML an. Die fundamentalen Eigenschaften der Sprache werden durch die Common Language Specification (CLS) beschrieben. F# ist aufgrund des Sprachkonzeptes für mathematische Berechnungen, also funktionale Zusammenhänge, besonders geeignet


In der Vergangenheit ursprünglich als Forschungsprojekt angegangen, wurde F# dann weiterentwickelt und als eigenständige Programmiersprache zunächst als Erweiterung zu Visual Studio 2008 zur Verfügung gestellt. Im Folgenden wurde F# dann in den Standard-Umfang von Visual Studio 2010 integriert.

Das Konzept der funktionalen Programmierung wurde bereits in den 50er-Jahren mit LISP aufgegriffen, und mit den Programmiersprachen Erlang und Haskell in den 90er-Jahren weiter verfeinert. Die Zielrichtung war es, eine einheitliche Programmierumgebung für zunächst wissenschaftliche Aufgabenstellungen zu schaffen.

F-Sharp für funktionale, imperative und objektorientierte Programmierung

F-Sharp ist nicht ausschließlich für die funktionale Programmierung ausgelegt, auch die imperative und objektorientierte Programmierung sind möglich. Sofern der Aspekt der Effizienz vernachlässigt wird, kann man daher durchaus mit F# vollständige Anwendungen - mit Grafik, User Interface, File-IO, Klassenkonzept etc. - erstellen. Aber in F#-Programmen kann als einheitliche Plattform das .NET-Framework genutzt werden; beispielsweise können C-Sharp und Visual Basic für die grafische Benutzeroberfläche (GUI) und F# für den mathematischen Teil einer Anwendung verwendet werden. Die Organisation und Koordination der verschiedenen Komponenten wird durch die gemeinsame Laufzeitumgebung - die Common Language Runtime (CLR) - sichergestellt. Bei der Implementierung eines Gesamtsystems lässt sich somit die Lösung einer spezifischen Detail-Aufgabe in den Vordergrund stellen.

F# integriert u.a. die folgenden Sprachfeatures:

  • Variablen und Funktionen, deren Typ automatisch durch Inferenz festgelegt wird,
  • Variants (Aufzählungen) und Generics,
  • Listen und Arrays sind generische Elemente,
  • Anonyme, Normale und ineinander geschachtelte Funktionen,
  • Sogenannte Tuples bezeichnen einen Container für eine bestimmte Anzahl von Elementen, die unterschiedlichen Typs sein können,
  • Pattern-Matching, was vergleichbar ist mit " switch..case"-Konstrukten in anderen Sprachen, die anschließende Nutzung in Pattern ist möglich,
  • Exceptions analog dem Konzept anderer Sprachen und
  • Parallele Programmierung und asynchrone Ausführung.
Die 
   Common Language Specification (CLS)

Die Common Language Specification (CLS)

Das Konzept von F# basiert auf der Common Language Specification (CLS) von Microsoft. Der Compiler für F# übersetzt den F#-Code daher zunächst in einen sprachunabhängigen Zwischencode, der als MSIL-Code (Microsoft Intermediate Language) bezeichnet wird. Die Common Language Runtime (CLR) enthält dann den JIT-Compiler ( Just-In-Time), der den MSIL-Code dann in nativen Code für die endgültige Ausführung übersetzt. Auch wird mit "fsi" ein F#-Interpreter zur interaktiven Ausführung des F#-Codes zur Verfügung gestellt.

Die Einsatzbereiche von F# sind mathematische Aufgabenstellungen in Wissenschaft, Technik, Finanz- und Wirtschaftsmathematik sowie in der allgemeinen Mathematik wie beispielsweise Finanz- oder Datenanalysen, Datenmodellierungen oder aufwändige Berechnungen. Die Vorteile von F# bei der Verwendung in diesem Zusammenhang sind sicherlich, dass

  • der Programmcode deutlich effizienter - d.h. kürzer und kompakter - wird,
  • durch fehlende Typenvielfalt und Seiteneffekte bedingt, extrem sicherer Programmcode ent-wickelt werden kann sowie
  • durch das funktionale Paradigma eine Vereinfachung der parallelen- und asynchronen Programmierung gegenüber C# möglich ist.
http://msdn.microsoft.com/en-us/fsharp/default.aspx

http://research.microsoft.com/en-us/um/cambridge/fsharp/manual/spec2.aspx

http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/default.aspx

Informationen zum Artikel
Deutsch: F-Sharp
Englisch: F sharp - F#
Veröffentlicht: 28.10.2013
Wörter: 592
Tags: #Sonstige Programmiersprachen
Links: .NET, Analog, Array, Aspekt, Benutzeroberfläche