Mandag den 20. september 2004 holdt Anders Hejlsberg et indlæg på Århus universitet om de nye features i C# version 2.
Ud over selve beskrivelsen af C# features havde Anders også en lille indledning, hvor han blandt fortalte meget kort om sin egen baggrund, som han opsummerede med ordene "Jeg har konkurreret med Basic de sidste 25 år - og gør det sådan set stadig."
Anders indledte beskrivelsen af de nye C# features med at konstatere, at der er ikke sket alverden med programmeringssprog i denne periode - der er ganske vist kommet objekter, men... Selvom syntaks jo nok ikke er det aller mest afgørende træk ved et programmeringssprog, kunne man måske nok være så fræk at mene, at denne oplevelse kunne hænge sammen med, at han/de har valgt et mere end 30 år gammelt programmeringssprog som udgangspunkt for den basale C#-syntaks. ;^)
Jeg har efterhånden hørt hans "C#v2" foredrag en del gange, men dels holder Anders altid nogle glimrende og spændende foredrag, dels kom han denne gang med en hel del bevæggrunde for de forskellige designvalg, der var truffet i forbindelse med udviklingen af C# - og specifikt i forbindelse med de nye features i version 2. Disse begrundelser, som det var utroligt spændende at høre om blev i høj grad initieret af et meget spørgelystent publikum. Ikke overraskende var emnerne først og fremmest generics, anonyme metoder, nullable typer og iterators, men som noget nyt i forhold til det sædvanlige foredrag brugte Anders også en del tid på, at demo'e C# editoren i Visual Studio.
Men var selve foredraget spændende, var det endnu mere spændende at være inviteret med til den efterfølgende roundtable diskussion, og det var vi tre fra Captator (Jens, Morten og undertegnede), der var så heldige at være. Diskussionerne her kom vidt omkring, men en af de efter min mening meget relevante diskussioner gik på, hvordan man får den relationelt-orienterede databaseverden til at hænge sammen med de objekt-orienterede programmeringssprog og -platforme. Så længe virksomhederne er gift med deres relationelle databaser - og det vil de helt sikkert og meget forståeligt være meget længe endnu, vil der være behov for en eller anden form for mapning mellem de to verdener. Anders mente ikke, at de nuværende O/R-mappere var specielt gode - om ikke andet fordi man stadig reelt set skal lave relationelle SQL-statements (uanset om de placeres direkte i koden eller om man lægger dem i stored procedures). Der findes naturligvis systemer, der kan generere disse SQL-statements, men sådanne systemer kan typisk ikke håndtere alle de situationer, man har brug for at kunne modelere, og så ender man tit, som hvad Anders kaldte "en blikkenslager", der skulle få de forskellige tilgangsmåder til at passe sammen.
Et forslag fra det runde bord var, at man kunne lade det konkrete objekt-orienterede programmeringssprog få en forståelse for relationelle databaser, sådan at de specifikke tabeller (Person, Firma etc), kolonner og rækker dukkede op som egentlige entiteter i programmeringssproget. Men Anders' glimrende svar på dette var, at så skulle man vel i princippet også lade programmeringssproget have forståelse for alt muligt andet. En pointe som jeg som udgangspunkt er helt enig med Anders i: Et generelt programmeringssprog som C# skal ikke have en specifik opfattelse af, hvad databaser eller andre lagringsservices er; for hvor ville det i givet fald stoppe: Så skulle C# måske også have en specifik forståelse for XML, HTML og endog kommaseparerede filer. En helt anden sag ville det være, hvis man kunne lave en generel mapning mellem programmeringssprog og database - vel at mærke en mapning, der ikke skabte en binding mellem programmet og den konkrete lagerservice, men som samtidig var tilstrækkelig fleksibel. Anders mente godt, at det kunne lade sig gøre at lave en sådan mapning, men han var helt tydelig ikke glad for at fortælle alt for meget konkret derom - om end han da ikke helt kunne lade være med at komme med et par enkelte hints ;^) Det skal blive spændende at se, om der mon på et tidspunkt dukker noget op på den front, med hans signatur på.
En anden til ovenstående relateret idé, der har været fremme en del gange er at lade SQL syntaksen blive en integreret del af almindelige (objekt-orienterede) programmeringssprog, sådan at man ikke blot betragter SQL-kode som strenge i ens almindelige kode. Jeg er ret sikker på, at Anders også ville være lidet begejstret for denne ide. For udover at kombinationen af f.eks. C# og SQL nok hurtigt rent stilistisk ville blive et utroligt grimt sprog, så ville man igen få problemstillingen: Hvorfor skulle man lige vælge at integrere SQL - hvad med alle de andre måder at tilgå data på - det være sig relationelle databaser, objekt-orienterede databaser, XML filer eller noget helt andet. Nej, det der er brug for, er en mere generel tilgangsvinkel. Og hvis det ikke er muligt, så vil vi sikkert mange år endnu lege blikkenslagere, når vi tager fat i vores relationelle databaser.
|