Alain schrieb am 10. September 2010 12:48
> LINQ ist zwar recht pfiffig aber IMHO in einer C-artigen Sprache
C# ist nicht C-artig. Die Gemeinsamkeiten beschränken sich auf eine
gewisse Ähnlichkeit der Namen und einige Details der Syntax.
> ein völliger Fremdkörper.
Das ist Dein persönliches Empfinden. Ohne Argumente ist eine
derartige Aussage frei von jedem Informationsgehalt und sollte
deswegen lieber unterlassen werden.
> Ich frage mich: Wenn LINQ so toll ist, warum
> denn überhaupt in C# programmieren?
Ich frage mich: Wenn LINQ so toll ist, warum sollte man es dann nicht
in die Sprache einbauen? Als professioneller Programmierer will ich
auch Werkzeuge für Profis nutzen, und es liegt in der Natur der
Sache, dass Profi-Werkzeuge komplex und umfangreich sind. Und wer mit
Sachen wie LINQ überfordert ist, der hat vermutlich ohnehin nicht das
Zeug zum Softwareentwickler.
Im Übrigen habe ich die Erfahrung gemacht, dass Komplexität, die man
in der Sprache einspart, an anderen Stellen wieder hervorkommt.
> var erinnert mich irgendwie an Referenzen in C++. Eigentlich ein
> völlig fremdartiges Konzept aber halt zwingend notwendig um operator
> overloading zu ermöglichen.
Schon wieder dieses "fremdartig"-Geblubber.
> Und schon hatte man ein zusätzliches
> Feature voller Fallstricke, weil man unbedingt v1+v2 für Vektoren
> haben wollte. Ohne Zweifel hübscher als v1.add(v2), aber dafür die
> halbe Sprache umbauen?
Ja, zweifellos. Schon einfache Formeln werden damit völlig unlesbar.
p.negate().divide(new
BigDecimal(2)).add(sqrt(p.multiply(p).divide(new
BigDecimal(4)).subtract(q)))
Was mag das sein? Mit Operatorüberladung versteht's jeder:
- p/2 + sqrt(p*p/4 - q)
> C++ ist schon daran zugrunde gegangen, dass man alles für jeden sein
> wollte.
C++ wollte nie alles für jeden sein. Der Fokus von C++ lag immer auf
herausragender Performance und der Möglichkeit, hardwarenah zu
programmieren. Da man von heutigen Sprachen aber Sachen wie Garbage
Collection, Reflection usw. erwartet, wird es heute nicht mehr so
viel verwendet wie früher.