Ik had laatst een gesprek met een klant die overstapten van klassiek ASP naar ASP.NET. Op een gegeven moment kwam het gesprek op de verschillende versies van het Framework en C#. Dat gesprek ging ongeveer zo:
Thomas, hoe zit het nou met die versienummering van C#?
Ehm, van C# of van het .NET framework?
Hoe bedoel je?
Nou, de versienummering van C# loopt niet gelijk met die van het .NET Framework. Bijvoorbeeld, in het 3.5 framework zit C# 3.0.
Aha, maar wat zit er dan in het 3.0 Framework?
Daar zit C# 2.0 in.
Ok, en ik durf het bijna niet te vragen, maar welke C# versie zat er dan in het 2.0 Framework?
Gewoon C# 2.0.
Ja, ja. Maar in het 1.1 Framework zat daar dan C# 1.1 in?
Nee, dat dan weer niet. In het 1.1 Framework zat gewoon C# 1.0.
Natuurlijk...Maar goed, ik zie hier assemblies met als versienummer 1.0.5000.0, dus dat is dan het 1.0 Framework met hopelijk C# 1.0.
Dat ook weer niet. Het 1.0.5000.0 Framework is het 1.1 Framework. De interne nummering wijkt af van de externe nummering van het Framework. Dus assemblies met 1.0.5000.0 als versienummer zijn onderdeel van het 1.1 Framework waar dus C# 1.0 in zit.
Je meent het? Er zal wel een soort van logica in zitten. Maar die versies gaan we toch allemaal niet meer gebruiken. We gaan naar C# 3.0, Visual Studio 2008 en het 3.5 Framework. Maar waarom zit er eigenlijk in het 3.0 Framework dan geen C# 3.0?
Ach, ja, technisch gezien is het 3.0 Framework helemaal geen nieuw framework, maar het 2.0 Framework met een aantal uitbreidingen. Qua taal is er niets veranderd in het 3.0 Framework.
Maar waarom heette C# 3.0 dan geen C# 3.5 als het toch alleen werkt op het 3.5 Framework?
Microsoft's wegen zijn soms ondoorgrondelijk. Zeker de wegen van de club die die versienummer verzint.
Maar blijven ze aan de gang of komt het ooit nog goed?
Het komt wel goed. Straks in 2010 hebben we C# 4.0 en het 4.0 Framework. Tenminste, zoals het er nu uitziet...