Bene, il termine entropia non appare solo nella termodinamica e nella teoria dell'informazione, ma appare anche nel mondo reale della compressione dei dati. In quel contesto, l'entropia che il compressore vede è uguale al numero di bit che produce. (Si noti che ho detto "l'entropia che il compressore vede ", perché ciò che è considerato entropia dipende dal modello utilizzato dal compressore per descrivere i dati di input.Questo è il motivo per cui diversi compressori producono file di differenti dimensione: ciò che è l'entropia di uno è struttura sfruttabile verso l'altro.)
Questo può, in linea di principio, essere magnificamente applicato alla complessità del codice sorgente: "Basta" scrivere un compressore che funziona solo su un codice sorgente pienamente conforme e che lo comprime effettivamente analizzandolo come un compilatore, producendo l'albero di sintassi corrispondente . Quindi può camminare su questo albero di sintassi e decidere su ciascun nodo quali nodi sarebbero stati possibili in ogni punto, codificando quel nodo con quella conoscenza.
Quindi, ad esempio, se la lingua consente sia un identificatore esistente, o qualcosa racchiuso tra parentesi, o un prodotto in un punto specifico, il compressore conterà i possibili identificatori esistenti, tenendo conto delle informazioni sul tipo (ad esempio, hai 3 identificatori di questo tipo) e aggiungi 2 per le due possibili sottoespressioni, dando 5 possibilità. Quindi il nodo verrebbe codificato con lb 5 = 2.32
bit. Nel caso delle due possibili sottoespressioni, sarebbero necessari più bit per codificare il loro contenuto.
Ciò fornirebbe una misura molto accurata per la complessità del codice così com'è. Tuttavia, questa misura è ancora inutile! È inutile per la stessa ragione per cui tutte le misurazioni della complessità del codice sono inutili: falliscono disegnare la connessione tra la complessità del codice misurata (qualunque essa sia) e la complessità del problema che il codice risolve. Puoi sempre trovare soluzioni ridicolmente complesse ai tuoi problemi di programmazione per stupire il tuo datore di lavoro con i tuoi conteggi LOC, ma nessuna misura di complessità del codice ti dirà che il compito avrebbe potuto essere risolto con una frazione dello sforzo.