L'inferno delle DLL di Windows

Un bell'articolo di Davide Bianchi, ho avuto il suo consenso a pubblicarlo qui. Davvero esilarante, consiglio a tutti la lettura!

Breve storia della programmazione Windows

Al principio, c'erano le API di Windows e "l'inferno delle DLL", che roba è direte voi, semplice! è quella condizione per cui si installa un nuovo programma e

  1. il programma non funziona e
  2. tutto il resto smette di funzionare.

Questo perchè quel coglione che ha scritto l'installazione ha fatto in modo che questa sovrascrivesse 100 DLL di sistema che erano già presenti, mentre non ne ha sovrascritte altre 100.

Dopo un pò di tempo Microsoft inventò VERSIOINFO, cioè la possibilità di ficcare dentro la DLL un numero di versione che il programma di installazione fatto bene (nessuno quindi) dovrebbe verificare per evitare di sovrascrivere una DLL più nuova con una più vecchia. OOOOOOOHHHHH!!!!

Ma nello stesso tempo, un altro gruppo di sviluppo all'interno di Microsoft stessa scoprì un baco colossale nel DDE: che non lo avevano fatto loro! Così inventarono OLE, che è come il DDE, ma diverso, e proclamarono che l'OLE avrebbe risolto "l'inferno delle DLL".

Ma poco tempo dopo, Microsoft "vide la luce" e le MFC emersero come soluzione ad ogni problema possibile immaginabile, bè OLE non se ne stette seduto sugli allori, così riemerse come COM, che è come OLE, ma diverso (!).

Ma un altro gruppo di sviluppatori Microsoft scoprì un baco colossale nelle MFC: non le avevano scritte loro! Essi procedettero a correggere il problema introducendo le ATL, che sono come le MFC, ma diverse, e nello stesso tempo si diedero da fare per nascondere tutti quei bei dettagli relativi a COM (o era OLE?) che il gruppo COM stava cercando di spiegarci.

Questo spinse il gruppo COM a cambiare nome, così vide la luce ActiveX, che è esattamente come OLE (o COM?) ma diverso, inoltre utilizza un'innovativo sistema di interfacce che (indovina un pò) elimina "l'inferno delle DLL", non solo, ma rende anche il nostro codice scaricabile da Internet (insieme a tutti i virus dell'universo).

Come un figlio misconosciuto, il gruppo OS richiamò l'attenzione sul nuovo nato: Cairo che nessuno riuscì mai a spiegare, lasciamo perdere poi produrre e distribuire. Nonostante ciò questi introdussero un'affascinante meccanismo di protezione dei file che era espressamente pensato per eliminare l'inferno delle DLL!

A questo punto però, il gruppo di sviluppo linguaggi scoprì un terribile errore in Java: non lo avevano fatto loro! Il rimedio fu la creazione di "J" o Jole o ActiveJ, che era come Java, ma diverso... tutto questo era molto eccitante, ma Sun aprì un contenzioso contro Microsoft sostenendo che c'è un limite al quantitativo di schifezze che puoi rilasciare in un determinato tempo, e questo mise fine a "J" (o era Jole?).

Ovviamente tutto questo distolse l'attenzione da ActiveX (o era COM?), i quali però ritornarono alla ribalta con COM+ (ma non avrebbe dovuto essere ActiveX+?) ed MTS (che non ho mai capito perchè sia solo 'MTS' e non abbia dentro un qualche 'Activè o '+' o 'COM'...).

Nello stesso tempo però, un altro gruppo se ne uscì con Windows DNA, che però scomparve prima che io avessi avuto il tempo di capire a che cosa era uguale però diverso...

Recentemente poi, Microsoft ha scoperto un altro terribile errore in Internet: che non lo hanno fatto loro! Ecco quindi la creazione di .NET, che è come Internet, ma con più marketing. E che (sia chiaro questo) eliminerà l'inferno delle DLL! Inoltre introduce un bellissimo linguaggio detto C# (c'era un errore terribile in Java come detto prima), e distribuirà un bellissimo runtime che consentirà di eseguire i programmi (c'è un errore terribile nel farlo fare alla CPU), inoltre include un esclusivo sistema di login centralizzato (c'è un errore terribile nel non inserire tutte le vostre password in un server Microsoft) e che rivoluzionerà il modo di programmare...

Ma intanto, il gruppo OS è ritornato alla ribalta, hanno scoperto un errore colossale in Windows NT: non lo hanno fatto loro! (a no?), ma hanno pronta la soluzione: Window XP! (perchè non Windows XP+ o ActiveWindows?) il quale (indovina un pò) eliminerà l'inferno delle DLL!

...io intanto continuo ad usare Linux...

Davide Bianchi