[.NET] generics

Pagina: 1
Acties:

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Op MSDN kwam ik net dit artikel tegen.

Generics zouden normaal gezien van de 'Whidbey' in het framework moeten komen, en volgens dat artikel zou er ook al een whidbey preview van de CLR beschikbaar moeten zijn.

Ongeveer een jaar geleden was er al sprake van om generics en andere nieuwigheden in .NET onder te brengen. Zie dit topic daarvoor.
At the time of this writing, Microsoft has not yet decided exactly how much of the existing class library will be reworked to include generic support in the next release of the runtime.

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ik heb als alpha tester, Whidbey alpha hier en generics zitten daar inderdaad in. (net als een hele serie andere goodies, zoals refactoring en een veel betere editor. )

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
EfBe schreef op 18 October 2003 @ 17:45:
Ik heb als alpha tester, Whidbey alpha hier en generics zitten daar inderdaad in. (net als een hele serie andere goodies, zoals refactoring en een veel betere editor. )
En heb je daar ook weer dezelfde problemen ivm de verschillende versies van het .NET framework zoals je in 1.0 <> 1.1 had?
Ik bedoel: heb je voor die whidbey ook een nieuwe vs.net nodig, en heb je dezelfde miserie dat je niet kan targetten naar een ander .NET versie?

https://fgheysels.github.io/


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 17:14
Tja, ik ben niet onder de indruk. Het artikel vergelijkt bestaande features in C++ met mogelijke optimalisaties in .Net (eerste alinea : C++ genereert compile-time code, .Net runtime. C++ heeft geen reuse, .Net kan het wel hebben). 4 Jaar geleden demonstreerde Todd Velduizen van Indiana University al dat C++ templates geimplementeerd kunnen worden zoals de .Net templates blijkbaar ergens in de toekomst geimplementeerd kunnen worden.

Bovendien zijn .Net templates bij design beperkt. Zoals de auteur schrijft,
Of all the fringe benefits of run-time type expansion, my favorite is a somewhat subtle one. Generic code is limited to operations that are certain to work for any constructed instantiation of the type. The side effect of this restriction is that CLR generics are more understandable and usable than their C++ template counterparts.
Dit is bijzonder ironisch, als je het gevloek hebt gehoord in de C++ gemeenschap wat oprees over het gemis van precies dit feature in MSVC6. In MSVC7 zat partial specialization er al in. Waarom is dit feature zo essentieel? Iedereen die recursie heeft gebruikt weet dat je een stop-conditie moet hebben. In een recursief template doe je dat via een specialisatie. Concreet is dit relevant in multi-dimensionale array containers. Een subscript operator[] zal een lager-dimensionale array opleveren. De uitzondering is de 1-dimensionale array, waar een specialisatie ervoor zorgt dat je het daadwerkelijke element krijgt. MSVC6 heeft bij mij al eens een ICE opgeleverd nadat de instantiatie van een -65532-dimensionale array faalde (ik propeerde een 3D array class uit).

Een andere beperking die bewijst dat er niet hard naar bestaande C++ praktijk is gekeken is de beperking dat elk template voor elk argument geinstantieerd moet kunnen worden. Dit maakt policies volledig onmogelijk. Policies zijn classes die als template-argument worden gebruikt. Een voorbeeld is een string template, die als policy een ISO_8859_1 policy of een UTF_8 policy meekrijgt. Zo'n string class kan op die manier het aantal karakters tellen, of een uppercase algoritm implementeren. In .Net kan dit niet, omdat het legaal zou moeten zijn om een Integer als policy mee te geven.

Er wordt gesuggereerd dat constraints dit oplossen. Helaas, maar dat is een probleem. Constraints zijn Interface beperkingen op objecten, en policies zijn types. Een ander probleem is dat het niet mogelijk is om te specialiseren op basis van constraint. Als ik een find() functie wil implementeren, dan zou ik een constraint kunnen opnemen dat de container elementen gesorteerd moeten zijn ( O(ln n) implementatie ), en een ander constraint dat de container elementen een gelijkheidsrelatie hebben ( O(N) implementatie). Dit gaat niet in .Net generics.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • EfBe
  • Registratie: Januari 2000
  • Niet online
C# generics zijn geen C++ templates, het zijn nl. geen templates maar echte generieke types. At compile time wordt dus niets 'gegenereerd', alles verloopt at runtime.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

en een veel betere editor
Dan kan ik het toch echt niet nalaten om te vragen of ze de HTML editor nou ook eindelijk es hebben aangepakt?

日本!🎌


  • EfBe
  • Registratie: Januari 2000
  • Niet online
_Thanatos_ schreef op 18 oktober 2003 @ 19:29:
[...]

Dan kan ik het toch echt niet nalaten om te vragen of ze de HTML editor nou ook eindelijk es hebben aangepakt?
Ja die is compleet nieuw. (de huidige is overigens voor 90% afkomstig uit frontpage. )

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
whoami schreef op 18 oktober 2003 @ 17:48:
En heb je daar ook weer dezelfde problemen ivm de verschillende versies van het .NET framework zoals je in 1.0 <> 1.1 had?
Ik bedoel: heb je voor die whidbey ook een nieuwe vs.net nodig, en heb je dezelfde miserie dat je niet kan targetten naar een ander .NET versie?
Whidbey is de codename voor de vs.net versie en die kan alleen 2.0 targeten inderdaad. Best wel zielig, maar ja... :)

Er komt wel een compleet nieuw build system, wat er wel gaaf uitziet. (je kunt dan op de command line solutions builden bv. ).

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 15-08 18:56

alienfruit

the alien you never expected

SND fout...sorry.

[ Voor 91% gewijzigd door alienfruit op 18-10-2003 23:56 ]

Pagina: 1