Web Log di Adrian Florea

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
posts - 440, comments - 2715, trackbacks - 3944

My Links

Archives

Post Categories

Image Galleries

.RO Blogs

.RO People

.RO Sites

Blogs

Furls

Links

vinCitori

novembre 2004 Blog Posts

Quiz Sharp #40 (protected internal)

protected internal in C# (o Protected Friend in Visual Basic .NET) corrisponde in CTS a: A. Family-Or-Assembly, oppure a B. Family-And-Assembly? Oltre alla vostra risposta esatta, sarei interessato a sentire anche i vostri commenti personali sulla scelta logica del significato da parte degli architetti del CLR.

posted @ martedì 30 novembre 2004 15:34 | Feedback (12) | Filed Under [ Quiz Sharp ]

Consumare da C# codice Delphi non-CLS

Abbiamo visto nel post precedente come il compilatore Delphi crea una classe finta per ogni unit così che anche il codice procedurale soddisfi la regola CLS 36. Cosa succede invece quando non gli lasciamo più spazio agli trucchi e trasgrediamo in modo esplicito una regola CLS, per esempio la CLS Rule 11 (quella sulla signature)? Potremmo da C# "consumare" un codice come quello di seguito? (al tipo Word di Delphi corrisponde in C# il tipo ushort, non CLS) // DelphiCls.paslibrary DelphiCls;usesFoo in 'Foo.pas';// inutile: Delphi non è CLS-compliant[assembly: CLSCompliant(True)]beginend. // Foo.pasunit Foo;interface// non ha una signature conforme al CLSfunction BadArgType(i: Word): Word;implementationfunction...

posted @ martedì 30 novembre 2004 01:27 | Feedback (13) | Filed Under [ Carillon .NET CLS ]

Using Delphi for .NET in C#

Esiste una regola CLS (CLS Rule 36) che dice: "Global static fields and methods are not CLS-compliant". Visto questo, vi aspettate che il seguente codice in Delphi for .NET sia CLS-compliant? Senza una classe, senza niente... :-) // Delphi for .NETlibrary Foo;uses  SysUtils;procedure DoSomething(msg: String);begin  Console.WriteLine(msg)end;beginend. Ebbene, sì! Il compilatore di Delphi for .NET, appunto per la conformità al CLS, trasforma la "procedura" DoSomething in un metodo static di una classe Foo sotto il namespace (se lo inventa lui) Foo.Units. E possiamo benissimo utilizzare la "procedura" DoSomething in C#: // C#class Test{  static void Main()  {    Foo.Units.Foo.DoSomething("Ciao");    System.Console.Read();  }} Ecco perché la mia sessione di giovedì si chiama "CLS:...

posted @ lunedì 29 novembre 2004 17:15 | Feedback (8) | Filed Under [ Carillon .NET ]

Compiler error message != error message reference

Ho notato delle piccole differenze tra alcuni messaggi d'errore generati dal compilatore C# e la documentazione di questi errori: CS3006: "Overloaded method 'method' differing only in ref or out, or in array rank, is not CLS-compliant" CS3012: "You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking" In arancione ho evidenziato i pezzi mancanti nella documentazione.

posted @ lunedì 29 novembre 2004 14:02 | Feedback (10) | Filed Under [ Carillon .NET ]

Gli errori C# relativi esplicitamente al CLS

Nel file "errors.h" che contiene la lista di tutti gli errori e warning del compilatore C# del Rotor c'è scritto che "Range 3000-3999 is reserved for CLS errors". Qui sotto nella tabella, ho mappato gli errori C# riguardanti esplicitamente il CLS alle regole del CLS trasgredite: Visual C# Compiler Error / Warning Number Rotor Error Name Summary Description CLS Rule Number CLS Rule ? ERR_CLS_NoVarArgs ? ? ? ? CS3001 ERR_CLS_BadArgType Argument type 'type' is not CLS-compliant A public, protected, or protected internal method must accept a parameter whose type is compliant with the CLS. 11 All types appearing in a signature shall be CLS-compliant. (p. 49 del PDF) CS3002 ERR_CLS_BadReturnType Return type of 'method' is not CLS-compliant A public, protected, or...

posted @ lunedì 29 novembre 2004 01:19 | Feedback (94) | Filed Under [ Carillon .NET CLS ]

L'underscore e la CLS Rule 4

Mi ha attirato l'attenzione un commento di Massimo Prota a questo post di Pierre. Beh, riguarda CLS, di cui vi parlerò giovedì - a sala vuota mi sa... :-) Massimo segnalava in sostanza il fatto che in un assembly conforme al CLS non possiamo nominare gli identificatori dei campi protected con il prefisso "_" in una classe public. Ne approfitto per aggiungere delle cose magari meno conosciute: Beccare tra le 41 regole del CLS quella responsabile di questo vincolo non è immediato. Dovreste leggervi l'appendice 7 "Programming Language Identifiers" dell'"Unicode Technical Report #15" (come specificato dalla CLS Rule 4 - p. 44 del...

posted @ domenica 28 novembre 2004 17:23 | Feedback (4) | Filed Under [ Carillon .NET CLS ]

Il ragno azzurro

Italian Web Awards di quest'anno vinto dal sito Etro. Questi sono i ragazzi che lo hanno realizzato: Arachno, web design & more, la miglior web agency italiana dell'anno. Senza parole.

posted @ domenica 21 novembre 2004 18:24 | Feedback (16) | Filed Under [ Varie ]

Quiz Sharp #39

using System;class Bar: Attribute{  static Bar()  {    Foo.WriteNumberOfCustomAttributes();  }  public Bar()  {    Console.Write("Bar ");  }}[Bar]class Foo{  public static void WriteNumberOfCustomAttributes()  {    Console.Write(typeof(Foo).GetCustomAttributes(false).Length + " ");  }  static void Main()  {    WriteNumberOfCustomAttributes();    Console.Read();  }} Cosa viene visualizzato a console? A. 1 B. 1 1 C. 1 Bar 1 D. 1 Bar 1 Bar E. Bar 1 Bar 1 E perché?

posted @ domenica 21 novembre 2004 13:26 | Feedback (9) | Filed Under [ Quiz Sharp ]

xUnit Family

Dal capitolo free "The xUnit Family of Unit Test Frameworks" di questo libro: P. Hamill, "Unit Test Frameworks. Tools for High-Quality Software Development", O'Reilly (2004) che sta per uscire proprio in questi giorni, scopro un'intera famiglia, oltre a NUnit e JUnit: SUnit (per Smalltalk, è autoconsiderato "the mother of all unit testing frameworks") CppUnit (per C++) utPLSQL (scritto da Steven Feuerstein per Oracle PL/SQL) vbUnit3 (per Visual Basic and COM) PyUnit (per Python) MinUnit (scritto in 3 righe di codice C da John Brewer) e sembra che ce n'è siano ancora altri ("This is just a sample of the many xUnit-derived test tools"). Per il vostro divertimento, qui sotto...

posted @ sabato 20 novembre 2004 18:19 | Feedback (12) | Filed Under [ Varie ]

Have you got it? (Style quiz)

Un eccelente, e a mio parere difficile, quiz di scrittura, basato su "The Economist's Style Guide". Potete, seguendo la guida, riflettere come esercizio sugli elementi di stile del vostro blog.

posted @ sabato 20 novembre 2004 15:22 | Feedback (5) | Filed Under [ Varie ]

DDpDqrDDtDttDDsqDDpsDps

Questo IsNot mi ha fatto ricordare, senza tanto legame però, di un altro operatore, intorno a cui ho cucito ai tempi una storia vera e folle. Non riesco a ricordarmi bene l'anno ma dovrebbe essere successa all'inizio degli anni '90 quando incontrai l'assioma e l'operatore di Nicod con cui si può ricostruire l'intera logica booleana. In quel magico pomerigio ho scarabocchiato nel quaderno rosso un grafo in cui i 5 simboli dell'assioma di Nicod facevano da nodi e l'operatore da archi ottenendo così, come per dire, un volto geometrico dell'essenza della logica booleana. Corsi subito a casa di Iulian e...

posted @ sabato 20 novembre 2004 01:39 | Feedback (7) | Filed Under [ Varie ]

Andrea salta a un'altra decina

Auguroni!

posted @ sabato 13 novembre 2004 17:33 | Feedback (9) | Filed Under [ Voi ]

Still Crazy After All These Years

Sembra che questi due articoli: H. Edward Roberts, W. Yates, "ALTAIR 8800 Minicomputer, Part 1. The most powerful minicomputer project ever presented - can be built for under $400", Popular Electronics, Volume 7, Number 1, (1975) pp. 33-38 H. Edward Roberts, W. Yates, "ALTAIR 8800 Minicomputer, Part 2. Practical use of the computer, including programming", Popular Electronics, Volume 7, Number 2, (1975) pp. 56-58 scatenarono nei primi giorni dell'anno 1975 in Paul Allen e Bill Gates (quando Microsoft non era ancora nata) la voglia di sviluppare Altair BASIC. Li potete leggere col tocco originale, qui. Ne vale la pena perché troverete frasi...

posted @ sabato 13 novembre 2004 17:28 | Feedback (10) | Filed Under [ Un po' di storia ]

SECTBRA e SECTKET

Le nostre amate parantesi graffe si chiamavano prima, direi molto funky, SECTBRA e SECTKET :-) Il linguaggio in cui si scriveva così, BCPL, un antenato in linea diretta di C, è stato progettato 38 anni fa da Martin Richards. Di sorprendente vigore, l'ultimo rilascio di questo linguaggio porta la data del 23 aprile 2004!

posted @ sabato 13 novembre 2004 14:30 | Feedback (5) | Filed Under [ Un po' di storia ]

La nascita dell'Informatica in Italia

50 anni fa sbarcava in Italia il primo computer dell'Europa continentale. Strana sensazione sapere che venne messo in funzione a qualche centinaia di metri dal posto dove abito :-) Dettagli sull'incontro di domani a lui dedicato, qui.

posted @ mercoledì 10 novembre 2004 23:53 | Feedback (2) | Filed Under [ Un po' di storia ]

Searching 125M lines of code

Via questo post di Richard Dudley, ho scoperto: Koders - Source Code Search Engine Spettacolo!

posted @ martedì 9 novembre 2004 08:57 | Feedback (12) | Filed Under [ Un po' di numeri Varie ]

Foto Quiz #4 - V.M. 18 :-)

Attenzione: questo non è un quiz per ragazzi dell'età di Lawrence! :-) Guardate bene le bellezze in questa pagina e identificate la donna che ha lasciato un segno nella scienza, dopodiché ditemi qual è il suo legame con l'informatica. Ma non passateci delle ore :-)

posted @ domenica 7 novembre 2004 16:12 | Feedback (10) | Filed Under [ Foto Quiz ]

Slot per variabili locali in IL

Per ridurre la signatura delle variabili locali, IL permette di specificarle in degli slot indicizzati: [0], [1], etc. così da poter condividere uno slot con più variabili locali dello stesso tipo. Per esempio, a questo metodo Main: static void Main(){  int i = 1;} corrisponde questo codice IL in seguito a una compilazione con /debug+ .method private hidebysig static void Main() cil managed{  .entrypoint  .maxstack 1  .locals init ([0] int32 i)  ldc.i4.1  stloc.0  ret} in cui si nota lo slot [0] per la variabile i. Però, se si compila con /debug-, lo slot sparisce: .method private hidebysig static void Main() cil managed{  .entrypoint  .maxstack 1  .locals init (int32 V_0)  ldc.i4.1  stloc.0  ret} Strano, mi aspettavo a un comportamento...

posted @ domenica 7 novembre 2004 14:46 | Feedback (4) | Filed Under [ Carillon .NET ]

Compilazione di programmi vuoti in vari linguaggi .NET

Un mese fa avevo scritto due post (questo e questo) su programmi vuoti in C#. Oggi vorrei completare il quadro anche per altri linguaggi .NET, con il tabellone qui sotto che spero parli un po' da sé. Non sono riuscito a individuare le opzioni giuste per il compilatore Visual C++ (cl.exe) (con i vostri commenti magari riuscirò a completare la tabella anche per C++ e, perché no, per altri linguaggi .NET). Quattro commenti soltanto:  in Visual C# .NET non c'è bisogno di referenziare assembly che supportino la compilazione e la generazione di codice (come "Microsoft.VisualBasic.dll", "vjscor.dll", "Microsoft.JScript.dll"); Visual Basic .NET referenzia...

posted @ sabato 6 novembre 2004 17:57 | Feedback (20) | Filed Under [ Carillon .NET ]

Mattomatica

Ho ricevuto oggi una mail in cui un amico mi indirizzava questa domanda: "Oltre all'aspetto culturale, un corso di laurea in matematica che cosa può dare a una persona in termini di crescita personale?" Tante volte tutto, ancora più volte niente. L'ho amata follemente fino quando mi sono laureato, l'ho voluta per anni, l'ho sognata, l'ho avuta, l'ho bruciata per potenza e per impotenza, mia e sua. Poi siamo diventati amici stanchi in un letto matrimoniale troppo grande. Ho scritto per 11 anni un libro su di lei per dimenticarla, in cui non parlo di lei, ma non ho finito né il...

posted @ venerdì 5 novembre 2004 00:57 | Feedback (18) | Filed Under [ Varie ]

Foto Quiz #3

Con chi parla Bill? :-)

posted @ martedì 2 novembre 2004 23:26 | Feedback (17) | Filed Under [ Un po' di storia Varie Foto Quiz ]

Tutti pazzi per Mary

Ieri ho ricordato Mary Kirtland qui e qui. Oggi tocca a Don Box ricordarla. La cosa bella è che trovo come referrer al mio post su Mary ("Mary Kirtland ovvero la Super COM Woman") qualcuno che alle 2:47 AM cercava su Bloglines Citations pagine che linkano Pluralsight (dove Don ha il suo blog). Alle 4:32 AM, Don postava "Blast from the Past - CLR circa 1997". Gli ho fatto ricordare Mary??? :-)

posted @ lunedì 1 novembre 2004 15:54 | Feedback (6) | Filed Under [ Un po' di storia Varie ]

Powered by:
Powered By Subtext Powered By ASP.NET