Autor Beitrag
thD
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33

Win 7, VirtualBox
C# (VS 2008)
BeitragVerfasst: Fr 13.11.09 14:35 
hi Leute

Ich habe mir gedacht ich mache auch mal ein Thema über F#.
Habe dazu 2 Videos gefunden. Vl habt ihr auch noch irgendwelche?

Microsoft F# Teil1: Einführung - www.microsoft.com/ge...y.aspx?id=1032406681
Microsoft F# Teil2: Die Sprach Features - www.microsoft.com/ge...y.aspx?id=1032414477



mfG thD
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 14.11.09 00:15 
user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
Hat schon mal jemand damit programmiert und Erfahrungen?
*nach links schielt* :D
Nach etwas Eingewöhnung, die wohl jeder benötigt, wenn er zum ersten Mal mit funktionaler Programmierung zu tun hat, habe ich F# zu meiner Hauptsprache auserkoren - es sei denn, gewisse Technologien/... zwingen mich zu C#. Um es gleich klar zu machen: F# besitzt weder Winforms-Designer noch wirkliche ASP.NET-Unterstützung, was sich so schnell auch nicht ändern wird.
Ich sage es einfach, wie es ist: Die schönste Sprache, die ich bisher kennen gelernt habe, ist Haskell. Leider programmiert man eben nicht nur Algorithmen, weshalb ich glaube, dass eine pure funktionale Sprache zu einschränkend und OOP für große Projekte unabdinglich ist, und ich für keine Sprache der Welt auf ein Framework und Ökosystem wie .NET verzichten will. Die Lösung lautet F# ;) .
Noch ein wichtiger Punkt: Ebenso wie Delphi Prism bemüht sich F# im Gegensatz zu C# erst gar nicht darum, für wirklich jeden verständlich zu sein. Würde mich interessieren, ob das die Prism-Leute auch so sehen ;) .
user profile iconthD hat folgendes geschrieben Zum zitierten Posting springen:
Habe dazu 2 Videos gefunden. Vl habt ihr auch noch irgendwelche?
Eine schöne Aufstellung von einem Mitglied des F#-Teams: Brian's favorite online content for learning F#.

PS: Ein definitives Kriterium, dass man sich schleunigst F# anschauen sollte: Man hat schon schmerzlich mehrere Funktionen in der Enumerable-Klasse vermisst und sie selbst nachgerüstet...

_________________
>λ=
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Di 17.11.09 17:04 
Ich verfolge die Sprache schon seit längerer Zeit und hab bisher die Erfahrung gemacht, dass in manchen Bereichen F# die Nase vorn hat, während ein anderes Mal C# als die bessere Wahl erscheint.

Als klare Vorteile von F# sehe ich z.B. die kompaktere, einfach "leichtere" Syntax. C# wirkt dagegen doch recht aufgebläht und "verbose" (wenn man C# gewöhnt ist fällt einem das gar nicht so auf, ging mir zumindest so ;)). Auch die Ideen der funktionalen Programmierung und deren in F# üblichen Sprachkonstrukte (Pipelining, die vielen Enumerable-Funktionen, ..) haben schon einen gewissen Reiz und können richtig Spaß machen. :)
Auf der anderen Seite sehe ich als eine der größten Schwächen von F# die eher dürftige Performance, C# ist hier doch meist ein bisschen bis viel schneller. Gerade da F# als Sprache für komplizierte Algorithmen angespriesen wird sehe ich hier noch viel Verbesserungspotenzial.
Prinzipiell hat man zwei Möglichkeiten: lesbarer, sauberer, langsamer, funktionaler Code oder unschöner, schneller, imperativer Code. Aber für den zweiten Fall braucht man eigentlich kein F#.

Ich denke man muss gut überlegen, ob sich die Sprache für das, was man machen möchte, eignet. Sprachen wie C# oder VB.NET haben einfach den Vorteil, dass sie sehr vielseitig sind, während F# eine doch eher speziellere Sprache ist. Für Algorithmen oder Programme, die z.B. viel mit internen Listen arbeiten und bei denen die Geschwindigkeit nicht ganz so wichtig ist, ist F# aber mit Sicherheit eine gute Wahl.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 21.11.09 14:19 
user profile iconChryzler hat folgendes geschrieben Zum zitierten Posting springen:
Als klare Vorteile von F# sehe ich z.B. die kompaktere, einfach "leichtere" Syntax. C# wirkt dagegen doch recht aufgebläht und "verbose" (wenn man C# gewöhnt ist fällt einem das gar nicht so auf, ging mir zumindest so ;)).
Jupp, die Syntax tut einfach gut :D . Unverständlich, wie manche Leute noch mit solch weitschweifigen Sprachen wie Java arbeiten können ;) .


user profile iconChryzler hat folgendes geschrieben Zum zitierten Posting springen:
Prinzipiell hat man zwei Möglichkeiten: lesbarer, sauberer, langsamer, funktionaler Code oder unschöner, schneller, imperativer Code. Aber für den zweiten Fall braucht man eigentlich kein F#.
Naja, ist das in der Praxis wirklich ein klar getrenntes "oder" :gruebel: ? Für mich stellt es sich eher so dar: Bei den wenigen Programme, bei denen sich Micro Optimisations überhaupt lohnen, existiert ein Hot Path von vielleicht 5% des gesamten Codes, der wirklich performancekritisch ist. Bei den restlichen 95% kommt es immer noch in allererster Linie auf Wartbarkeit an, und dazu ist "so deklarativ wie möglich" nie falsch. Da ich für 5% nicht die Sprache wechseln will (oder dann gleich C++ statt C# nehme), scheint mir eine Hybridsprache wie F# die beste Lösung zu sein :D .

_________________
>λ=
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Sa 21.11.09 17:01 
Irgendwie kann ich mir grad nicht vorstellen wie ein komplettes (sinnvolles) Programm damit aussieht. Aus den Codeschnipseln werd ich irgendwie nicht schlau...

user profile iconKhann ( ;-) ) da mal wer eine kleine Beispielanwendung posten?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 21.11.09 19:06 
Ich nehme an, es geht dir um den Eintrittspunkt...?
Code in der letzten Datei wird automatisch ausgeführt. ein UPN-Parser, frech von Wikipedia geklaut:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
let parse(s: string) =
    let eval stack token = match stack,token with
    | x::y::zs, "+" -> x+y :: zs
    | x::y::zs, "-" -> x-y :: zs
    | x::y::zs, "*" -> x*y :: zs
    | x::y::zs, "/" -> x/y :: zs
    | xs, literal   -> int literal :: xs
    
    match s.Split null |> Seq.fold eval [] with
    | [x] -> Some x
    | _   -> None

parse "2 1 +"
|> printfn "%A"


Über EntryPointAttribute bekommt man dagegen eine Main-Methode wie in C#/Java/...:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
[<EntryPoint>]
let main args =
    String.concat " " args
    |> parse
    |> printfn "%A"
    
    0 // return code

ausblenden Quelltext
1:
2:
3:
4:
> UPN.exe 2 1 +
Some 3
> UPN.exe 2 1 + *
<null>

Ähm, ja, null :mrgreen: . Eine kleine Optimierung von Option<T> zu Ungunsten von print ;) .

_________________
>λ=