Che cos'è la cronologia e il concetto di annotazione del codice?

3

C # e Java hanno attributo di codice e annotazione del codice. Non conosco altre lingue, ma so che la funzione di annotazione del codice è utilizzata per espandere la lingua stessa.

Sapevo di cosa si tratta, ma voglio sapere come si è sviluppato nel tempo. Voglio sapere la sua storia. Come ha richiesto e come è stato implementato. È possibile implementarlo in una specie di concetto su LISP, Smalltalk o C ++?

E c'è un termine generico per chiamare il concetto di annotazione?

    
posta Eonil 27.03.2012 - 16:21
fonte

2 risposte

4

Questo di solito è legato alla riflessione, poiché la riflessione è l'unico modo per esaminare gli attributi o le annotazioni (a seconda della lingua). Quindi potrebbe essere possibile per LISP ma non per C ++.

Inoltre, le annotazioni sono solo una serie di nomi / valori che sono taggati ad una specifica classe, metodo, campo, ecc.

Quindi all'interno del meta-oggetto che memorizza informazioni su una classe (ad esempio metodi, campi, ecc.), è necessario aggiungere un'altra mappa (o lista) che contenga informazioni su tutti gli attributi contenuti in una classe o in un metodo.

Ovviamente, se non sai cos'è un meta-oggetto, dovresti studiare un po 'la meta-programmazione, in particolare CLOS (Common Lisp Object System), ovvero la madre di tutte le lingue che implementano la metaprogrammazione.

    
risposta data 27.03.2012 - 16:39
fonte
1

Non posso parlare molto per le annotazioni Java ma gli attributi C # sono stati introdotti nella prima versione di .NET quando Microsoft stava spingendo pesantemente i servizi Web. Gli attributi ti consentono di fornire metadati relativi al tuo codice (o metaprogrammazione per così dire) che il framework può esaminare e utilizzare per migliorare il tuo codice. Ad esempio in .NET 1, è possibile utilizzare l'attributo WebMethod per indicare al framework che si desidera esporre un metodo su un servizio Web. Il framework gestirà il resto.

In C ++ le persone usano le direttive e le macro preprocessore per eseguire Metaprogramming. Altre lingue (come Lisp e Boo) hanno incorporato Metaprogramming nella lingua. Questo articolo su wikipedia offre un ottimo punto di partenza sull'argomento.

    
risposta data 27.03.2012 - 17:39
fonte

Leggi altre domande sui tag