generische Klassen
-
Mich würden Diskussionen über die neuen Features in der nächsten C#-Version interessieren. In welchem Forum wird man da fündig?
-
Es gab einige Threads in der Newsgroup microsoft.public.dotnet.languages.csharp aber die wesentlich interesanteren findest du in den privaten Newsgroups zum neuen Framework/C#2.0. (Solltest du Zugriff haben)
Für eine Liste der Features kannst du in die Spezifikation schauen. Die findet man auf der offiziellen CSharp Seite
Diskussionen findest du sonst in den einschlägigen Sites&Foren(gotdotnet,codeproject usw.) Wobei man da schon suchen muß und die Qualität nicht so toll ist. Muss mal abklappern hab leider keinen konkreten Link.
Andere wüsste ich jetzt nicht. Vielleicht kann da wer anders noch einen guten Tip geben.
-
Hab ich was falsch verstanden? Die generischen Erweiterungen beider Sprachen sind doch nur eine Tippersparnis, damit man nicht mehr explizit casten muss. Generische Programmierung, wie in C++ oder Sather oder sonst wo lässt sich damit doch nicht betreiben. Klärt mich bitte auf, falls ich da was missverstanden habe.
-
In Java bieten die Generics IMHO tatsächlich nur 2 Dinge:
1. Tippersparnis
2. TypsicherheitDas liegt daran, dass in Java jede Klasse von Object abgeleitet ist und die Generics deshalb garnicht so nötig sind. Leider sind die Generics in Java nicht direkt mit primitiven Datentypen vereinbar, das geht nur über die Wrapper-Klassen.
-
Die Typsicherheit ist aber eine gute Sache. Ich finde das Containerkonzept von Java und C# etwas gewöhnungsbedürftig.
Ich finde es z.B. verrückt, daß mir der Compiler verweigert einen int + uint zu rechnen, aber ich kann in einen Array-Container fröhlich abwechselnd Objekte vom Typ string und vom Typ Eigenbau reinstopfen - und wundere mich dann beim Durchlauf, warum bei jedem zweiten Objekt eine Exception fällt.
Bei C++ ist das durch die Templates besser gelöst - in eine list<string> passen nur string-Objekte rein, und eine Polymorphie im Container gibt's nur, wenn ICH SELBST für die eingefütterten Objekte eine entsprechende Klassenhierarchie festgelegt habe.
Mir erscheint das bisherige Vorgehen bei Java und C# sehr inkonsequent, bei den arithmetischen Ausdrücken so eine harte Typsicherheit zu fordern, aber beim ganz wesentlichen Bestandteil der vorhandenen Container darf man eigentlich alles machen, so ein Container frisst jede Instanz. Und die offizielle Empfehlung um das zu sichern lautet, daß man sich Wrapper um die Container bauen soll/muß.
Insofern ist der Punkt "Typsicherheit" in meinen Augen ein recht großer Zugewinn.
-
Naja, mag sein, dass die Typsicherheit wirklich etwas bringt. Ich habe ja auch nichts gegen die Generics, nur hatte ich bisher keine Probleme damit, dass ich falsche Objekte oder so in eine Liste gesteckt habe, obwohl ich keine Wrapper gebaut hatte. Deshalb empfinde ich diesen Vorteil nicht als so stark.
Aber der Umbau zu Generics geht auf jeden Fall recht flott. Ich habe mein aktuelles Javaprojekt (182 Klassen) in wenigen Stunden so ziemlich komplett auf Generics umgerüstet.
Ich bin eigentlich deshalb von den Generics etwas enttäuscht, weil sie halt nicht direkt mit primitiven Datentypen funktionieren. Das hätte ich gut gebrauchen können. Naja, aber mit Java 1.5 kommt schon ne ganze Menge, was ich gut gebrauchen kann.
-
Gregor schrieb:
Naja, mag sein, dass die Typsicherheit wirklich etwas bringt. Ich habe ja auch nichts gegen die Generics, nur hatte ich bisher keine Probleme damit, dass ich falsche Objekte oder so in eine Liste gesteckt habe, obwohl ich keine Wrapper gebaut hatte. Deshalb empfinde ich diesen Vorteil nicht als so stark.
Naja, das liegt wohl an der persönlichen Wegrichtung, die man einschlägt.
Ich komme aus der Richtung C++ und bin daher eher verblüfft, wie unsicher diese Container sind. Man kommt dann rasch an den Punkt wo man sagt "solche Programme sind aber nicht sehr sicher, wie kann man damit arbeiten".
Kommt man aus der Richtung Java nach C++, wird einem ein ähnlicher Gedanke dann z.B. beim Thema Zeiger kommen.
-
dynamix schrieb:
Die .net Platform ist ja nun nicht mehr so neu und es gibt durchaus einige Enterprise Scale Produkte die zurzeit mit ihr entwickelt werden/bzw. für sie. Natürlich noch nicht soviel wie mit der Java Platform aber das ändert sich, denke ich im kommenden bzw. darauffolgenden Jahr und könnte sich dann bei einem Gleichgewicht einpeggeln.
Ich habe heute mal wieder bei Gulp in den "Trend Analyzer" geschaut und muss feststellen, dass es für .NET tatsächlich eine Zunahme an Projektanfragen zu geben scheint. Im letzten Monat gab es 3,9% Projektanfragen für .NET. Das ist zwar bei weitem noch nicht auf dem Niveau von Java (mehr als 15% im letzten Monat), aber es ist zumindest ein Wachstum zu registrieren.
Was mich allerdings wundert ist, dass dieses Wachstum nur bei .NET zu beobachten ist, bei C#, ASP.NET, VB.NET ist davon nichts zu sehen. Es gab zum Beispiel im letzten Monat nur 0,2% Projektanfragen für C# (ASP.NET auch 0,2%, VB.NET nur 0,1%). Das ist seit etwa einem Jahr der tiefste Wert für C#. Insgesamt kann ich bei C# kein Wachstum feststellen.
Ich frage mich deshalb, was man momentan überhaupt mit .NET macht. Welche .NET-Technologie wird momentan gebraucht?
-
Es könnte auch eine statistische Anomalie sein... daß Anfragen mit .NET und C# unter .NET eingeordnet werden, analog VB.NET, etc. Denn - macht das Sinn - Zunahme für .NET aber für keine Sprache? Irgendwie unlogisch. Wie wenn man sagt "Softwareentwicklung unter Windows", gibt aber keine Sprache dazu an. Da fehlt doch die Hälfte der Informationen.
Soweit ich das bisher hören konnte, ist vor allem ASP.NET recht stark angenommen worden.
-
Naja, ich habe mir die .NET-Projektanfragen jetzt mal genauer angeguckt. Insgesamt hat der Gulp Roboter 27 Anfragen gefunden, in denen ".NET" vorkommt.
Davon sind...
... 7 Anfragen vollkommen falsche Treffer. Hier kommt .NET beispielsweise so vor, dass man näheres bei einerEMail@Adresse**.net** erfahren kann. Auch folgendes wurde als .NET erkannt Netzwerktechnologie, NetBackup und Netinstall.
... 16 Anfragen nicht eindeutig für .NET-Projekte. Hier tritt das .NET nur als "Nice to have" neben vielen anderen Technologien, wie z.B. auch J2EE, oder in Texten, wie folgendem auf:
Geforderte Kenntnisse
- Kartenapplikationsentwicklung - Kartenpersonalisierung und -management - Hintergrundapplikationen insbesondere im Finanzdienstleistungssektor (Authorisierungssysteme, Customer Master Data, etc.) - Server und Client Technologie: WebServer, WebServices, Internet Browser - Mainframe Technologie - Erfahrungen mit Web-basierten Plattformen, J2EE, .NET mit den Anwendungsgebieten - kartenbasierte Zahlungssysteme insbesondere EMV und ePurse - Chipkartentechnologie, kontaktlos und kontaktbasiert - Global Platform Spezifikationen - IT Sicherheitsarchitekturen, Verschlüsselungsverfahren, Certificate Authority, Active Directory, Digitale Signatur, PKI, Firewalls, VPN, Authentifikationsverfahren Erfahrung in Akquisition und Proposalmanagement, Powerpoint, Englisch in Wort und Schrift. Bereitschaft zu Reisetätigkeit, hohe Belastbarkeit, Integrationsfähigkeit in andere Kulturkreise Sonstige Kenntnisse - Erfahrung in Akquisition und Proposalmanagement - Sehr gute MS Officekenntnisse insbesondere Powerpoint, Word und Project) - Gutes Englisch in Wort und Schrift - Basiskenntnisse in einer weiteren Fremdsprache (vorzugsweise Spanisch oder Französisch)
... 4 Anfragen eindeutig für .NET-Projekte.
Wenn von den Projekten, die nicht eindeutig .NET-Projekte sind nur sehr wenige tatsächlich .NET-Projekte sind, dann würde das natürlich einiges erklären. Ich habe das Gefühl, dass einige das ".NET" in die Anfrage mit aufnehmen, weil es gerade "In" ist, aber nicht weil es tatsächlich benötigt wird.