Ich bin sehr daran interessiert, was F # zu bieten hat, und ich bin sehr daran interessiert, die zeitbasierte Investition zu starten, die notwendig ist, um es zu lernen. Aber werden die F # -Arbeitsstellen bald Wirklichkeit werden oder könnte es sich um eine verschwendete Investition handeln?
Auf die Gefahr hin, einen Flammenkrieg zu beginnen, halte ich F # für einen besseren OCaml mit weniger Fehlern und einer besseren Bibliothek. Es fällt mir nicht schwer zu glauben, dass F # große Teile der OCaml-Community dazu verleiten würde, in .NET Land zu wechseln.
(Diese Strategie scheint dem Ansatz, den Microsoft verwendet hat, um Java-Entwickler mit J # zu locken, der sich als Flot entpuppte, sehr ähnlich. Hoffen wir, dass F # nicht auf die gleiche Weise untergeht.)
Nach meiner Erfahrung neigen .NET-Software-Shops dazu, VB.NET und C # unter Ausschluss aller anderen Sprachen zu verwenden. VB.NET und C # sind besonders marktfähig, weil:
Sie haben eine extrem gut entwickelte RAD- und GUI-Unterstützung. F # GUIs müssen von Hand geschrieben werden, was die Sprache für die Entwicklung großer, komplexer Benutzerschnittstellen ungeeignet macht.
Vorhandene Dokumentation ist in C # und VB.NET geschrieben, was es Neueinsteigern erleichtert, C # und VB.NET gleichzeitig mit .NET .NET zu lernen. F # -Programmierer müssen mental von C # / VB.NET übersetzen, so dass zumindest C # bereits eine Voraussetzung für das Lernen von F # ist.
VB.NET/C# fährt auf den Coattails des bekannten imperativen Programmierstils, der von Java und C ++ etabliert wurde. Funktionale Programmierung existiert weit außerhalb des Mainstreams, was den Übergang von Programmierern von imperativen Sprachen zu F # verlangsamt.
Zumindest bin ich optimistisch für F #. Es gibt ein paar Dinge, die Sie in anderen Sprachen nicht sehen können:
Es gab eine Menge Medienpräsenz in Blogs, und ich habe F # -Demos in den letzten 5 .NET-Konferenzen gesehen, an denen ich teilgenommen habe.
Ich folge Programmierblogs auf religiösem Weg, und es sieht so aus, als ob die Programmiergemeinschaft insgesamt mit dem Lock-basierten Ansatz für Multithreading frustriert ist. Veränderlicher Zustand in Multithread ist ein Mörder, der viele Programmierer dazu veranlaßt hat, mit unveränderlichen Datenstrukturen auf einen lockfreien Stil umzusteigen. Unveränderlichkeit kommt in F # natürlicher vor als in C #, und Async-Workflows in F # machen Multithreading-Code extrem einfach zu verstehen.
F # wirklich ist bei bestimmten Aufgaben besser als C #. Zum Beispiel ist alles, was die Umwandlung von XML oder Quellcode in eine abstrakte Syntax betrifft, in F # in 100% der Fälle um Größenordnungen einfacher.
C # wird mit jeder neuen Entwicklung immer "funktionaler". Dies trägt dazu bei, funktionale Programmierung mehr in den Mainstream und in eine breite Akzeptanz zu bringen. Während Sie C # in einem funktionalen Stil schreiben können, finden die meisten Leute es sehr ungeschickt, besonders wenn es viele generische Typen gibt. Es ist, als ob die funktionalen Merkmale als nachträglicher Einfall angeheftet wurden - es ist einfacher, einen funktionalen Stil mit einer echten funktionalen Sprache wie F # zu schreiben.
Am wichtigsten ist, dass F # nicht nur ein anderer C # -Klon mit einer anderen Syntax ist. Meine Firma nutzt F #, um unsere bestehende C # -Codebase zu ergänzen, da sie eine ganze Reihe neuer Werkzeuge bietet, die in C # einfach nicht verfügbar sind.
Wenn F # Mainstream wird, stelle ich mir vor, dass es auf die im letzten Bulletpoint erwähnte Art und Weise als eine Begleitsprache zu C # und VB.NET verwendet wird. Die Leute werden F # nicht annehmen, weil es eine überlegene Alternative zu C # / VB.NET ist. Die Leute werden F # benutzen, wenn sie aus der One True Language ™ / "Alles sieht wie ein Nagel" - Ansatz zum Schreiben von Software herauskommen >
Ich bezweifle, dass funktionale Programmiersprachen jemals extrem populär werden. F # könnte jedoch leicht die erfolgreichste funktionale Sprache sein. Es hat eine riesige Bibliothek dahinter (zB die .NET CLR), es integriert sich nahtlos in sehr populäre Sprachen (C #, VB, etc) und wird in Kürze in der populärsten IDE der Welt (Visual Studio) unterstützt werden.
Ich sehe nicht, wie viel Zeit damit verbracht wird, F # zu lernen. Sie können Ihre F # -Komponenten immer von C # aus aufrufen. Außerdem können Sie eine neue Art des Denkens über die Programmierung lernen, die Sie mitnehmen können, egal welche Sprache Sie verwenden.
Es gibt ein paar Sektoren, in denen es (oder OCaml) ziemlich häufig ist - wie Finanzen oder andere statistische Analysen. Ich bezweifle jedoch ernsthaft, dass es für den Mainstream-Code plötzlich in den Vordergrund rückt. Eines der größeren Probleme hier ist, dass C # immer funktioneller wird (und hoffentlich mit besserer Unveränderlichkeit in C # 5.0), es immer weniger von den regulären .NET-Sprachen wie C # unterscheidet.
Tags und Links f#