Il problema delle interfacce è che faccia hanno

Picasso, come architetto sarebbe stato fallimentare, per via delle linee non proprio diritte, ma come pittore spacca.
G.Giorgi

Si fa presto a dire interfaccia.

Da quando ho iniziato il lavoro della mia vita (corrente), dai corsi più infimi a quelli più fighi, fino alle conferenze degli ubriachi di CORBA ed XML del 2001, ogni documento, super consulente o conferenza iniziava definendo nella sua stupenda idea aprendo il discorso/abstract/etc con la parola che ti posizionava subito nell’empireo:”interfaccia”.

  1. In C le dichiarazioni di funzioni sono delle interfacce (o ci provano)
  2. In C++ le classi sono dichiarate con delle interfacce (zeppe di parole anche loro fighe tipo virtual, ecc)
  3. I Java Bean definisco delle interfacce (meta-personalizzabili con i BeanInfo, oggetti che non usava nessuno).
  4. Gli EJB definiscono delle interfacce per separare l’implementazione e disaccoppiarla
  5. CORBA (pace all’anima sua) definisce delle interfacce per gli oggetti remoti
  6. <metti qui il tuo linguaggio preferito tranne JavaScript>

Il creatore di Java (James Gosling) con una battuta ha affermato che se potesse tornare indietro toglierebbe la parola chiave “extends” da Java:

[…] During the […] Q&A session, someone asked him [James Gosling]: “If you could do Java over again, what would you change?” “I’d leave out classes,” he replied. After the laughter died down, he explained that the real problem wasn’t classes per se, but rather implementation inheritance (the extends relationship). Interface inheritance (the implements relationship) is preferable. You should avoid implementation inheritance whenever possible.

Comunque, come ogni astrazione, le interfacce hanno un problema.

Le persone sono abituate a fare le cose. Pensano operativamente

Per cui le interfacce devono cercare di esprimere un aspetto dinamico con una serie di sostativi (classe Casa) e di verbi (metodi… es demolisci() ) i cui nomi devono essere scelti bene, curati e possibilmente chiari.

E qui sta il problema, perché gli americani sono poco fantasiosi e hanno una lingua base dalle zero sfumature:

set/get/is/notEquals/destroy/init  e finisce lì

Vi lascio indovinare cosa è successo dal 2000 fino ad oggi in Italia, patria dell’estro italico, tanto più forte ove chi non sa cerca di compensare con la fantasia (alzi la mano chi non si è trovato in un terreno sconosciuto e non è stato “creativo”).

PS Bisogna dire che JavaScript, linguaggio creato per pseudo-programmatori  non aveva interfacce: ma “prototipi”, oggetti immediatamente utilizzabili e dalla criptica semantica… ora è il linguaggio forse più diffuso al mondo, e inizio a pensare che avesse ragione lui…

PPS: E sì, il link dell’articolo è C4, come l’esplosivo: maneggiare con cura