Notizen zu meinen Büchern und anderen Themen RSS 2.0
 Monday, June 29, 2009

ThinkSharpShirt
(demnächst nicht mehr sharp genug?)

Für eingefleischte VB-Entwickler mag sich der Titel meines Blogeintrags nach einem ähnlichen "Horror" (bezogen auf die filmische Qualität) wie der Kinostreifen "Alien vs Predator" anhören (egal wer gewinnt, wir verlieren), speziell für C#-Entwickler hat ein solcher Vergleich durchaus seinen Reiz, gilt für manche das kommende F# bereits als das künftige C# (wenngleich das mit Sicherheit nicht passieren wird). Ich halte F# für viel zu kompliziert und anspruchsvoll für den Alltagsgebrauch, so dass es maximal für eine kleine Minderheit (Elite) an C#-Entwicklern eine echte Alternative sein dürfte. Das folgende kleine Beispiel habe ich aus einer ganz gut gemachten, wenngleich recht spärlichen Einführung in F# unter http://fsharp.net (es ist erstaunlich schwierig funktionierende und vor allem aussagekräftige Beispiele zu finden) gezogen  - es berechnet die Quadratzahlen der Zahlen von 1 bis 10:

let Quadrat x = x * x
let Zahlen = [1 .. 10]
let Quadratwurzeln = List.map Quadrat Zahlen
printfn "n^2 = %A"Quadratwurzeln

Ein Schleifenbefehl wird nicht benötigt, List.map wendet stattdessen die Funktion Quadrat auf alle Elemente der Liste Zahlen an (eigentlich gar nicht sooo kompliziert).

Dass auch C# 3.0 (und VB.NET 9.0) so etwas können, macht das folgende Beispiel deutlich:

Func<int, int> Quadrat = x => x * x;
var Zahlen = Enumerable.Range(1, 10);
var QuadratWurzeln = Zahlen.Select(Quadrat);
Console.WriteLine("n^2 = {0}", QuadratWurzeln.Aggregate("", (s, i) => s + " " + i));

Das ist nicht F#, sondern ganz normales C# 3.0 (in VB.NET würde es ähnlich aussehen). Fans funktionaler Ansätze bei der Programmierung müssen also nicht unbedingt auf F# warten. F# spielt seine wahren Vorzüge erst im Zusammenhang mit paralleler Programmierung und asynchroner Vorgänge aus. Themen, die Zukunft sicher deutlich wichtiger werden dürften. Einen ganz guten Überblick über F# gibt ein Wikipedia-Eintrag (Wikipedia hat anscheinend Probleme mit dem #) und ein recht umfangreiches Wiki.

PS: In dem obigen Beispiel produziert Enumerable.Range(1,10) eine Collection mit den Zahlen von 1 bis 10. Eine Alternative wäre natürlich ein Array:

int[] Zahlen = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

PSPS: Eine der Köpfe hinter F# bei Microsoft, Don Syme, war übrigens vor ein paar Wochen in München auf dem F# night talk. Für Entwickler, die bereits mit F# arbeiten, war es mit Sicherheit hochinteressant, für meinen Geschmack war es ein "wenig" zu anspruchsvoll (und akademisch trocken).

FSharpNightTalk 
(hier geht's lang zur möglichen Zukunft der Programmiersprachen)

Monday, June 29, 2009 6:12:42 PM (Romanische Sommerzeit, UTC+02:00)  #    Comments [0] -

Comments are closed.
Categories
Archive
<September 2010>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
Blogroll
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Peter Monadjemi
Sign In
Statistics
Total Posts: 84
This Year: 12
This Month: 0
This Week: 0
Comments: 0
Themes
Pick a theme:
All Content © 2010, Peter Monadjemi
DasBlog theme 'Business' created by Christoph De Baene (delarou)