Prime applicazioni scritte usando LINQ

Oggi ho visto una piccola applicazione usando LINQ to SQL e LINQ to XML: si tratta di WikiSpider, che colpirà soprattutto per il fatto di avere un'interfaccia utente WPF particolarmente accattivante.

La cosa più interessante, però, è aprire il codice. Un'istruzione come quella che segue, dal mio punto di vista, da sola giustifica l'uso di LINQ.

var pages = from p in linksDoc.Descendants("page")
    select new {
        Title = p.Element("title").Value,
        Id = p.Element("id").Value,
        Touched = p.Element("touched").Value,
        RevisionId = p.Element("revid").Value,
        Links = (from l in p.Descendants("l")
                select l.Value).ToList()
}; 

Il risultato è in realtà una sola pagina (ma in un altro scenario potrebbe essere una lista) con all'interno un elemento che è a sua volta una lista di link. Gli elementi chiave della query sono due: la brevità (e con Visual Basic sarebbe stato ancora più corto, bisogna ammetterlo) e la chiarezza. Se conoscete altre applicazioni "pubbliche" che usano LINQ, sarei grato se me le segnalaste, mi interessa capire che direzione prende l'adozione di LINQ nel mondo reale.

 

Visual C++ 2008 Feature Pack (beta)

Anche se ormai C# ha preso il posto di C++ come linguaggio di riferimento per chi sviluppa in Windows (almeno in termini volumetrici per applicazioni di una certa complessità), non si può dire che il C++ sia fuori da un percorso di innovazione, anzi! Anche perché, ricordiamolo, la maggior parte dei prodotti di Microsoft sono scritti in C++.

La direzione in cui sta andando il C++, cioè la sua prossima versione di standard, sarà C++0x. Tra le tante, il supporto a lambda expression e lambda functions è particolarmente interessante (quanta strada dal primo C++…).

La beta di Visual C++ 2008 Feature Pack che è disponibile da pochi giorni offre, oltre ad alcune novità per MFC, anche un'implementazione di TR1, una serie di librerie che di fatto estendono le C++ Standard Library.

Algoritmi e strutture dati

Inauguro il 2008 segnalando la libreria DSA (Data Structures and Algorithms) scritta da Granville Barnett: si tratta di una serie di classi per .NET che implementano strutture dati (alberi, double linked list, set, ecc.) e algoritmi come vari tipi di sort, fattoriale, metodi su stringhe, ecc.

La libreria è su CodePlex, quindi gratuita e con tanto di sorgenti. Vengono usati gli extension method di C# 3.0, estendendo così anche la classe String aggiungendo metodi come Reverse, Strip, WordCount e altri. Devo dire che gli extension method sono una delle novità di C# 3.0 più interessanti, soprattutto grazie all'integrazione con IntelliSense che offre la possibilità di vedere tutti i metodi accessibili su un oggetto (con e senza Extension Methods) senza conoscere il nome della classe che li contiene realmente. Certo, bisogna almeno mettere una using