Hallo liebe myCSharp Community,
Microsofts neue Programmiersprache F# soll sich hervorragend eignen, um funktionale Zusammenhänge darzustellen. Das heißt also: Diese Sprache ist prädestiniert dafür, mathematische Probleme damit darzustellen und zu lösen.
Hat jemand Erfahrung mit F#? Wie ist die Performance? Wie lässt es sich damit entwickeln?
Gibt es gute Tutoriasl? Wenn ja, wo?
Danke und Grüße, gm
Ich habe mir das ganze mit Beginning F# angesehen und habe eben nur ein paar kleine Sachen ausprobiert.
Zu aller erst erübrigt sich die Performance-Frage, da genauso wie C# F# nach MSIL übersetzt wird, weswegen du auch C#-DLLs in F#-Projekten und umgekehrt nutzen kannst.
Ich persönlich bin nicht davon überzeugt, dass ein großes Projekt nur in F# geschrieben sein sollte, da ich den Code gerade was UI und den OOP-Aufbau angeht, hässlich finde, allerdings sind mathematische Formeln fast 1:1 abbildbar, was das Umsetzen von Algorithmen natürlich sehr erleichtert. (Da unter anderem das Hantieren mit Datenmengen genauso unkompliziert von der Hand geht wie in Sprachen wie R.)
Ich finde es eine nette Abwechslung und interessant zu lernen, in der Firma würde ich es aber (auch wegen fehlendem Einsatzgebiet) nicht einsetzen.
As a man thinketh in his heart, so he is.
Ich habe mal damit rumgespielt und finde es für manche Probleme intuitiv. Performance-Technisch meine ich mal gelesen zu haben, dass es i.d.R. etwas schlechter ist als C#. Dafür ist die Parallelisierung super simpel.
Es ist halt eine andere Art zu denken. Wenn man noch nie Funktional programmiert hat, wird es zu Beginn sogar abstoßend wirken.
Aber außerhalb von mathematischen Algorithmen halte ich C# für deutlich besser.
Hallo zusammen!
Danke für eure Antworten. Ich habe auf http://www.ctocorner.com/fsharp/book/ ein E-book entdeckt. Das beschreibt F# einigermaßen ausführlich. Sollte sich Parallelisierung damit komfortabel umsetzen lassen, ist die Sprache für mich interessant!
Grüße, gm
komfortable parallelisierung hast du mit .net 4.0 auch.
f# ist halt wie bereits erwähnt perfekt um algorithmen umzusetzen. f# ist prinzipbedingt in einigen bereichen bedeutend schneller als c#. diese bereiche sind vor allem bei komplexeren algorithmen abgedeckt.
c# hingegen ist deutlich schneller bei simpleren berechnungen mit wertetypen.
Zu aller erst erübrigt sich die Performance-Frage, da genauso wie C# F# nach MSIL übersetzt wird,
ersteres ist nicht wahr, letzteres hingegen schon.
f# unterstützt deutlich mehr inlining und hat ein viel besseres delegatenkonzept, was bei c# sehr bremst.
Die Frage ist natürlich immer, was man machen will. Mit funktionaler Programmierung lassen sich Multicore-Systeme wesentlich effizienter nutzen, da das ewige Locken von Variablen und die damit verbundene Synchronisation vollkommen wegfallen, da es nur immutable Datenstrukturen gibt. Wenn man aber nicht ganz auf Objektorientierung verzichten möchte gibt es auch Hybriden wie z.B. Scala (die .Net Implementation soll leider nicht sehr gut sein), welche sowohl funktionale, als auch objektorienterte Konzepte bieten. Aktuell finde ich auch Clojure (ein LISP Dialekt) sehr interessant. Aber wie auch immer. Wer in Zukunft Applikationen schreiben will, die alles aus dem Rechner holen, der muss sich früher oder später mit funktionaler Programmierung auseinandersetzen.
Hallo Corpsegrinder,
Haskell soll angeblich sehr schnell sein, lässt sich wahrscheinlich aber nicht in eine .NET Umgebung integrieren?!
Grüße, Marc
Unter Liste von .NET-Sprachen ist es dort aufgeführt, jedoch konnte ich im Haskell-Artikel nichts darüber finden.
Jedoch findet man mit der Suche nach ".NET Haskell" u.a.:
The Haskell.net Project
Und unter dotnetpowered Language List finden sich noch zwei weitere Links zu Haskell.NET.
Die Frage ist jedoch, was bietet Haskell mehr als F#?
Die Frage ist jedoch, was bietet Haskell mehr als F#?
Das frage ich mich auch. Angeblich soll es schneller sein als F#. Und das sogar wesentlich.
Danke für die Links!