Deklarativ programmering med XAML

I snart ett års tid så har jag för de ISV:er jag jobbar med tryckt på vikten att gå över till mer deklarativ programmering. Effekterna är många, men det som tilltalar ISV:er är förenklad förvaltning, snabbare utveckling och agilitet. Men vad är då deklarativ programmering?

I stort sett alla utvecklare som idag jobbar med en databas jobbar med deklarativ programmering, T-SQL är ett sett att beskriva vad man vill göra och inte hur, och det är precis det som deklarativ programmering går ut på. När man skrivit sin T-SQL så är det upp till databasmotorn att exekvera på bästa sätt.

Det samma gäller LINQ, här beskriver vi vad vi vill göra och inte hur. Exempelvis så säger vi bara att vi vill sortera en kollektion av objekt, om sedan Bubble Sort eller någon annan algoritm används bryr vi oss inte om bara resultatet är sorterat på den egenskap vi valt.

Varför detta är så viktigt är att när vi nu går mot parallellism allt mer så kan underliggande ramverk hantera all trådhantering osv åt dig som utvecklare om du lägger dig på en deklarativ nivå.

XAML i sig är ett deklarativt språk och i .NET 4.0 så är målet att göra XAML till ett fullvärdigt språk precis som C# och VB. Idag används XAML för att beskriva UI (WPF, Silverlight), processer (WF, WCF) samt layout för tryck (XPS).

Just nu sitter jag på en presentation kring vad vi gör med språket som idag är XAML 2006 och som med nästa release får namnet XAML 2009 där bland annat följande förbättringar sker:

  • Förenklad databindning
  • Generiska typer
  • "Switch-statement"
  • Möjlighet att specficera delegater för event-hantering, dvs ingen kompilering krävs.
  • Skapa nya egenskapr på objekt direkt i XAML

I .NET 4.0 så får vi en separat komponent, System.XAML.dll, som kommer släppas som CTP under november månad.

Call to action: Som utvecklare är det av stor vikt, eller rättare sagt ett måste, att börja titta på, eller kanske snarare att verkligen använda deklarativ programmering i sina applikationer för att förbereda för framtiden, både kunskapsmässigt och applikationsmässigt! Om du sedan väljer LINQ; WF, WCF, WPF eller XPS spelar mindre roll, se bara till att komma igång!