Met alle verwikkelingen rond Windows XP, de heftige discussies in binnen- en buitenland over gewijzigde licentievoorwaarden en het al of niet juridisch vervolgen van het concern wegens vermeend misbruik van een monopoliepositie, zouden we haast vergeten dat Microsoft nog veel meer doet en op een aantal terreinen met zeer ambitieuze plannen bezig is.
Niet in de laatste plaats is dat natuurlijk de .Net-strategie, die al weer geruime tijd terug door Bill Gates persoonlijk met het nodige tromgeroffel werd aangekondigd. Daarna kwam Hailstorm en begonnen Microsoft-managers te praten over .Net-servers. Al met al is de situatie de afgelopen maanden eerder mistiger dan duidelijker geworden. Hoewel het concept waarop .Net is gebaseerd vrij duidelijk is (lijkt?), kan dat niet gezegd worden van de verdere uitbouw die Microsoft tot nu toe aan dit basisidee heeft gegeven. Ook de impact die dit alles zal hebben op de manier waarop we met informatiesystemen en informatieverwerking omgaan, is verre van duidelijk.
Eén van de weinige aspecten in al deze plannen en toekomstschetsen die wél concreet zijn, is de komst van een aantal nieuwe programmeerhulpmiddelen. Niet in de laatste plaats is dat C# – ofwel ‘C sharp’. Maar ook hier dreigt de bekende mist en verwarring te ontstaan die we tegenwoordig van Microsoft kennen. Zo lijkt op eerste gezicht C# een nieuwe objectgeoriënteerde programmeertaal die veel gelijkenis vertoont met C en vooral C++. De vraag die daarbij opkomt is: waarom? Als er dan zoveel gelijkenis is met C en C++, waarom dan een compleet nieuwe taal creëren? Microsofts antwoord is op zich duidelijk. Maar heeft de mogelijkheid om bij het ontwerpen van deze taal te beginnen met een ‘clean sheet’ dan inderdaad zoveel voordelen opgeleverd? Of hebben al die marktanalisten die de taal eerst en vooral positioneren als een poging van het concern om een kloon of een vervanger van Java te creëren dan toch gelijk?
Microsoft is het uiteraard niet met deze perceptie eens. Tijdens de in juli gehouden Microsoft Professional Developer Conference ontkende één van Microsoft’s topmensen op het gebied van talen – Anders Hejlsberg – nadrukkelijk dat het om een Java-kloon zou gaan. Hij verklaarde dat Microsoft weliswaar gekeken heeft naar andere talen – hij noemde onder andere Java, Modula 2 en Small Talk – maar gaf daarbij ook aan dat er nu eenmaal veel programmeertalen zijn die gebaseerd zijn op dezelfde uitgangspunten als C#, te weten: ‘deep objectorientation’ en bijvoorbeeld ‘object simplification’. En mocht iemand een gelijkenis met een andere taal zoeken, kijk dan vooral, zo meende Helsberg, naar C++. Maar neen, een kloon van Java is C# in zijn visie zeker niet.
Er is rond C# nog veel onduidelijk. Bijvoorbeeld: wat is het nu precies? Waar houdt de taal op en begint .Net-Runtime? Ook hier dringt zich ironisch genoeg een gelijkenis met Java op: verwarring. Wat bedoelt iemand immers wanneer hij het over Java heeft? De taal? De syntaxis? Het platform? Iets dergelijks kan maar al te gemakkelijk ook rond C# en de relatie met .Net gebeuren. Mede daardoor is ook een andere kwestie relevant: wanneer .Net inderdaad uitgroeit tot een reëel platform, welke programmeertaal of -talen kunnen dan het beste worden toegepast? Is dat C#? Visual Basic, C++ of desnoods Cobol? En waarom dan?
Het valt vooralsnog niet mee op om dit soort vragen een duidelijk antwoord te krijgen. Waar inmiddels wel de nodige informatie over beschikbaar is, is C# zelf. Bijvoorbeeld via boeken als ‘C#, een inleiding’ van Christoph Wille en ‘Programmeren in C#’, geschreven door Eric Gunnerson.
Wie weet dat Gunnerson lid is van het C#-ontwikkelteam zal waarschijnlijk een gevoelsmatige voorkeur hebben voor dit boek. Toch is dat niet helemaal terecht. Beide boeken zijn typische – laten we zeggen – programmeerboeken waarin de nadruk ligt op ‘statements’, ‘namespaces’, gegevenstypes, enumerators en dergelijke. Dit alles wordt door beide auteurs goed uitgelegd. Daardoor wordt ook uit beide boekwerken snel duidelijk dat een ervaren programmeur weinig moeite zal hebben met het werken met deze taal. Veel ‘statements’ zijn direct uit C en C++ overgenomen, zodat een grote mate van herkenning optreedt. Een verschil tussen beide boeken zit ‘m in het feit dat Gunnerson een hoofdstuk wijt aan een (summiere) vergelijking van C# met andere talen. Daarbij komen C en C++ aan bod, maar ook Visual Basic en uiteraard Java.
Wat echter in beide boeken niet aan de orde komt, is de plaats van C# in het grotere geheel der dingen. Natuurlijk geven beiden auteurs aan dat C# werkt in .Net Frameworks en .Net Runtime. Maar daar blijft het verder bij. Wie iets meer wil weten over de betekenis van de ontwikkeling die Microsoft met .Net heeft ingezet en de rol die deze taal daar in speelt, leert hier weinig. Daarom zijn deze twee boeken eerst en vooral interessant voor wie C# vooral als een potentieel interessante programmeurtaal ziet en de – zeg maar – technische details daarvan wil doorgronden. Beide boeken pakken dat duidelijk en goed aan.
Robbert Hoeffnagel Freelance Medewerker
C# – een opleiding
Christoph Wille
Pearson Education, 204 pagina’s,
ISBN90-430-0425-1. 59,95 gulden
Programmeren in C#
Eric Gunnerson Academic Service, 338 pagina’s,
ISBN 90 395 171 7 7, 69 gulden