Wie ist F#
-
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?