java vs .NET (ernsthaft) ;-)
-
Optimizer schrieb:
Nein, kannst du nicht. IEnumerable<T> kann auch schlecht was implementieren, es ist ja selber nur ein Interface. Du musst beide Methoden und Enumeratoren, generisch und nicht-generisch implementieren. Und weil die Methoden sich auch nur anhand des Rückgabetyps unterscheiden, musst du auch noch den Namen mit dem Interface voll qualifizieren. Ich glaub, schöner als oben kann man es nicht machen.
Gut, also ich sag mal rein "technisch", hast du recht. Hab mich im
vorigen Posting geirrt. Allerdings hab ich auch grad gesehen, dass
IEnumerable<T> nicht auch IEnumerable erweitert (zumindestens laut
MSDN-Doku). Du kannst also die nicht generische Scheiße auch gerne
ignorieren ..Optimizer schrieb:
Weiß nicht was für dich jetzt ne "Dreckssprache" ist.
Naja, ich wusste nicht welche Sprache jetzt konkret Generics nicht anbietet,
darum hab ich jetzt einfach den Oberbegriff "Dreckssprache" eingeführt, die
ein Element der Menge nicht generischer Sprachen darstellen sollOptimizer schrieb:
Wenn du nicht grad wie ich return null machst sondern eben nen gescheiten Enumerator, funktioniert das in jeder Sprache. Warum ich nicht IEnumerable verwende? Weil ich mit den Generics arbeiten will natürlich... und werd von dem CLS-Müll dazu gezwungen, es auch nicht-generisch aufzählbar zu machen, selbst wenn es mir egal wäre, ob man das Teil in VB nutzen kann.
Warum du nicht IEnumerable verwendest ist klar, ich meinte eh, die Leute
die IEnumerable verwenden müssen (weil sie ne Dreckssprache benutzen)
beissen sich ziemlich in den Hintern, da sie nicht über deine Collection
iterieren können.Aber is eh egal, das artet sonst noch zu OT aus, im
Zweifelsfall hast halt du gewonnen, egal ob du überhaupt
gewinnen willst :p
-
C#-Fan schrieb:
Allerdings hab ich auch grad gesehen, dass
IEnumerable<T> nicht auch IEnumerable erweitert (zumindestens laut
MSDN-Doku). Du kannst also die nicht generische Scheiße auch gerne
ignorieren ..Das wurde geändert, die Doku ist wohl nicht aktuell. Ich hab ne Version vom Februar und es ist seit Oktober leider so.
Weiß nicht was für dich jetzt ne "Dreckssprache" ist.Naja, ich wusste nicht welche Sprache jetzt konkret Generics nicht anbietet,
darum hab ich jetzt einfach den Oberbegriff "Dreckssprache" eingeführt, die
ein Element der Menge nicht generischer Sprachen darstellen sollrofl.
Optimizer schrieb:
Warum du nicht IEnumerable verwendest ist klar, ich meinte eh, die Leute
die IEnumerable verwenden müssen (weil sie ne Dreckssprache benutzen)
beissen sich ziemlich in den Hintern, da sie nicht über deine Collection
iterieren können.Aber is eh egal, das artet sonst noch zu OT aus, im
Zweifelsfall hast halt du gewonnen, egal ob du überhaupt
gewinnen willst :pNaja durch die Vererbung ist eben das Problem gegeben, dass ich nicht einfach sagen kann "mich interessiert nur der generische Teil". Das wär ok. Aber du hast es ja gerade erst anders (veraltet) gelesen, deshalb ist das jetzt wahrscheinlich schon klar.
Ob's was zum Gewinnen gibt, weiß ich nicht.
-
Nun ja, schließlich wollte Microsoft mit .NET (und vor allem C#) Java Konkurrenz machen. Ich denke, beide Technologien haben ihre Vor- und Nachteile. Java ist gut um GUIs zu programmieren, die auf jedem System laufen - mit .NET habe ich nicht wirklich Erfahrung ;), aber da die Technologie immer stärker in Windows implementiert wird, ist sie wohl besser dafür.
Ich denke Microsoft will Java mit .NET stärker aus Windows verdrängen.
-
BloodLord schrieb:
Java ist gut um GUIs zu programmieren,
Java ist vor allem für Enterprise Anwendungen ideal.
-
Shade Of Mine schrieb:
kartoffelsack schrieb:
was ist das Problem mit ASP.NET? Bzw. heißt dass dass Du .NET für Web-Technologie ablehnst? Warum?
Naja, man bindet sich an windows server
Soweit ich weiß funktioniert ASP.NET aber auch mit einem Apache Server
und mod_mono. Ausprobiert hab ichs selbst aber nicht.Zur Zeit ist die Verwendung des .NET Frameworks für mich eher ne Glaubensfrage.
Ich glaube dran, dass Bill Gates mal den richtigen Fingerschnipp macht und
.NET so richtig aus dem Zaun lässt. Sprich alles standardisiert, und somit
der Plattformunabhängigkeit den Weg geebnet. Für mich persönlich wäre dann die
Entscheidung klar, was aber eher ne subjektive Meinung wär.[offtopic]
Ich fänds sowieso am besten, wenn ich mit C# programmieren könnte, als
Framework hätte ich ne Art J2EE zur Verfügung. Nur mit dem Unterschied,
dass mal alle veraltete Klassen rausgeworfen werden, im Prinzip halt
simple Aufräumarbeiten, etc ..
[/offtopic]
-
Optimizer schrieb:
IEnumerable<T> : IEnumerable
Wofür steht da eigentlich das I? Soll das anzeigen, dass es sich um ein Interface handelt? Geht das also schon wieder in Richtung ungarische Notation oder zumindest in Richtung CMyClass?
-
C#-Fan schrieb:
Ich glaube dran, dass Bill Gates mal den richtigen Fingerschnipp macht und
.NET so richtig aus dem Zaun lässt. Sprich alles standardisiert, und somit
der Plattformunabhängigkeit den Weg geebnet.Wow. Durch was wurde dieser Glaube denn verursacht? Mir erscheint das (sachlich ausgedrückt) erstmal unrealistisch. Darf man da von einer starken ideologischen Prägung deinerseits ausgehen?
-
C#-Fan schrieb:
... Nur mit dem Unterschied,
dass mal alle veraltete Klassen rausgeworfen werden...Und alle paar Monate fragst du dich, wieso deine alten Programme nicht mehr laufen?
P.S. ein Vorteil von Java ist die Rückwärtskompatibilität, zumindest haben die Sun-Leute das jetzt jahrelang durchgezogen, die Chancen, dass sich das plötzlich ändert sind klein (im Gegensatz zu .NET und C#, die von eine [Glaubenskrieg]Standard-boikitierenden Firma[/Glaubenskrieg] kommt.
)
-
JBeni schrieb:
P.S. ein Vorteil von Java ist die Rückwärtskompatibilität
Ist aber gleichzeitig eine große schwäche.
-
ICh finde zwar, das Optimizer einige sinnlose Punkte aufzählt (wie oft hat man bitte 'Foo' und 'foo' in der öffentlichen Schnittstelle?), aber .Net hat auf jeden Fall seine schwächen. Die Generics hätten von Anfang an da sein müssen. Jetzt wird versucht die irgendwie da reinzuwurschteln, was aber nicht immer gelingt. Vor allem gibt es dadurch jetzt vieles unnötigerweise doppelt.
-
Es muss nicht public sein. Ich könnte ne protected Variable (ja ich weiß, hässlich, böse, lame) haben und dafür noch nen public getter.
abstract class Base { public string Foo {get{ return foo; }} protected string foo = "oöusgdföklugsa"; } class Derived : Base { public bool containsCharacter(char x) { return foo.IndexOf(x) != -1; // Hmmmm, VB. } }
Für C# wäre dieser Code völlig in Ordnung.
Es ist auch nicht abwegig, Membervariablen und korrespondierende Getter so zu benennen. Ich mache das so. Meine Variablen sind natürlich nicht protected, trotzdem finde ich das Beispiel nicht völlig abwegig (hmmm könnt ja auch ne Methode/Proberty mit Rückgabewert wiederum sein). Wenn man für mehrere Sprachen compilieren will, muss man auf so was achten.
An sich aber wirklich kein großer Punkt, es gibt schlimmere Dinge, wie das mit den Generics. Kapierst du eigentlich, warum man nicht bei Sprachen ohne Generics einfach Queue<Object> intern verwendet, anstatt eine
System.Collections.Queue und eine System.Collections.Generics.Queue zu machen? Find ich sehr hässlich. In Java kann ich GenericClass<T> auch ohne Typparameter (implizit Object) verwenden.EDIT: Das soll natürlich nicht heißen, dass ich das für C# will. Aber man müsste es doch ermöglichen können, dass die CLR nicht-generischen Bytecode so interpretieren kann, dass sie intern Object einsetzt.