Wie ist F#
-
Wie ist eigentlich F# im Vergleich zu C++ und Lisp, verglichen bezüglich Performance und Mächtigkeit?
-
Die Performance sollte wohl nicht sooo viel schlechter als C# sein (wie sich das im Vergleich zu C++ verhält, überlasse ich deiner Einschätzung).
Im Vergleich zu Lisp müsstest du erstmal sagen welcher Dialekt (Common Lisp? Scheme?) und welche Implementierung. Wahrscheinlich auch nicht langsamer als die effizienteren Implementierungen.
Aber Aussagen über die Performance sind immer mit äusserster Vorsicht zu geniessen.Und ich wage mal zu behaupten, dass F# deutlich abstrakter ist als C++, aber noch nicht so abstrakt wie Lisp.
-
visuaklstudio schrieb:
Wie ist eigentlich F# im Vergleich zu C++ und Lisp, verglichen bezüglich Performance und Mächtigkeit?
Ich habe F# nie programmiert. So, wie ich das verstehe, ist das eine funktional-angehauchte Sprache für das .NET Framework. Und das Stichwort ".NET" beantwortet meiner Meinung nach auch schon die Punkte Performance und Mächtigkeit. Ich verstehe unter Mächtigkeit das, was mir C++ bietet, nämlich ein großes Abstraktionsspektrum einschließlich Low-Level-Frickelei. Und weil Du nur in C++ sog. "zero cost abstraction" hast, sollte sich der Performance-Punkt auch erledigt haben.
Wenn Du eine Anwendung schreiben willst, bei der es nicht auf Performance ankommt und Du es geil findest, dass man in F# ein Programm recht kompakt aufschreiben kann (das glaube ich jetzt einfach mal so), dann probiere es doch mal mit F#.
-
krümelkacker schrieb:
visuaklstudio schrieb:
Wie ist eigentlich F# im Vergleich zu C++ und Lisp, verglichen bezüglich Performance und Mächtigkeit?
Ich habe F# nie programmiert.
Dann bist du natürlich prädestiniert für kompetente Antworten im Thread hier
So, wie ich das verstehe, ist das eine funktional-angehauchte Sprache für das .NET Framework.
C# ist seit Version 3.5 "funktional angehaucht". F# ist richtig funktional.
Wer im Umgang mit F# ungeübt ist, der fängt sich leicht eine deutlich schlechtere Laufzeit als mit C# ein. Auf Stackoverflow gibt es eine ganze Reihe von Fragen à la "Why is this code so much slower in F# than in C#"? Es ist eben eine funktionale Sprache und verlangt nach einer anderen Herangehensweise als C# etc.
Ungeachtet dessen ist imo das größte Plus für F#: Man kann die umfangreiche .NET Bibliothek nutzen und trotzdem funktional programmieren.
-
Wie ist eigentlich F#
Sehr aehnlich SML oder OCAML.
-
Was die Perfomance angeht läuft das letztlich auf einen Vergleich zwischen Interpreter (Lisp,Perl,Python,...), Vitual-Machine VM (F#,C#, Java, ...) und Maschinencode-Erzeugung also Assembler oder Hochsprache via Compiler (C,C++,Pascal,Delphi,Fortran, ...) hinaus.
Pauschal gilt da garnichts. Man kann immer (un-)effizient programmieren.
Praktisch sieht es aber meistens so aus. Von langsam -> schnell. Interpreter -> VM -> Compiler -> Handgeschriebener Assembler.
Letzlich diktieren bestimmte Randbedingungen (Problemstellung, mit/ohne GUI, Hardware (PC,Smartphone,...) , Betriebsystem, Programmierer-Know-How...) welche Sprache/Programmierframework das Günstigste ist.
In C++ kann man z.B. ohne Betriebsystem, direkt auf der Hardware, eine Echzeitanwendung entwickeln.
-
mmm schrieb:
Was die Perfomance angeht läuft das letztlich auf einen Vergleich zwischen Interpreter (Lisp,Perl,Python,...)
Gibt auch Lisp-Implementierungen, die recht effizienten C-Code erzeugen.
-
maximAL schrieb:
mmm schrieb:
Was die Perfomance angeht läuft das letztlich auf einen Vergleich zwischen Interpreter (Lisp,Perl,Python,...)
Gibt auch Lisp-Implementierungen, die recht effizienten C-Code erzeugen.
Das ist sicherlich richtig. Meine Erfahrung ist halt die, je weiter man Richtung Assembler absteigt, desto performanter wird es. D.h. generierter C-Code erreicht meistens nicht die Perfomance von Handmade-C-Code, kann aber mit einer VM durchaus mithalten. Wenn es sehr rechenintensiv wird, sind CPU-optimierte Assemblerroutinen das Non plus ultra. Von durchdachter Auslagerung auf die GPU ganz zu schweigen.
-
Wie funktional ist C++11?
-
Mal abgesehen davon, dass Lisp im engeren Sinne Common Lisp bedeutet und die führenden Common Lisp Implementationen zu Maschinencode compilieren: Wenn man für ein gegebenes Problem ernsthaft frei im Spektrum zwischen Lisp und handgeschriebenem Assembler wählen kann, dann ist es kein Problem, für das man normalerweise Lisp verwenden würde.
-
maximAL schrieb:
Gibt auch Lisp-Implementierungen, die recht effizienten C-Code erzeugen.
Gibt auch Lisp/Scheme/Haskell/SML/...-Implementierungen, die effizienten Maschinencode generieren.
dann ist es kein Problem, für das man normalerweise Lisp verwenden würde
Aber auch nur, weil viele nicht versiert genug in dieser Sprache sind.
-
Bashar schrieb:
Mal abgesehen davon, dass Lisp im engeren Sinne Common Lisp bedeutet
Sagt wer?