Eh bien, le terme entropie n'apparaît pas seulement dans la thermodynamique et la théorie de l'information, il apparaît également dans le monde réel de la compression de données. Dans ce contexte, l'entropie que voit le compresseur est égale au nombre de bits qu'il produit. (Notez que j'ai dit "l'entropie que voit le compresseur ", car ce qui est considéré comme l'entropie dépend du modèle que le compresseur utilise pour décrire les données d'entrée. C'est la raison pour laquelle différents compresseurs produisent des fichiers de taille différente: Qu'est-ce que l'entropie pour le l'un est une structure exploitable à l'autre.)
Cela peut, en principe, être magnifiquement appliqué à la complexité du code source: "Il suffit" d'écrire un compresseur qui ne fonctionne que sur du code source entièrement conforme, et qui le comprime en le analysant comme le ferait un compilateur, produisant l'arborescence de syntaxe correspondante. Ensuite, il peut parcourir cet arbre de syntaxe et décider à chaque nœud quels nœuds auraient été possibles à chaque point, codant ce nœud avec cette connaissance.
Ainsi, par exemple, si la langue autorise un identifiant existant, ou quelque chose entre parenthèses, ou un produit à un point spécifique, le compresseur comptera les identifiants existants possibles, en tenant compte des informations de type (par exemple, vous avez 3 de ces identifiants ) et ajoutez 2 pour les deux sous-expressions possibles, ce qui donne 5 possibilités. Ainsi, le nœud serait codé avec des lb 5 = 2.32
bits. Dans le cas des deux sous-expressions possibles, plus de bits seraient nécessaires pour coder leur contenu.
Cela donnerait en effet une mesure très précise de la complexité du code tel qu'il est. Cependant, cette mesure est toujours inutile! C'est inutile pour la même raison que toutes les mesures de complexité de code sont inutiles: elles échouent à établir le lien entre la complexité de code mesurée (quelle qu'elle soit) et la complexité du problème que le code résout. Vous pouvez toujours trouver des solutions ridiculement complexes à vos problèmes de programmation pour impressionner votre employeur avec vos comptes LOC, mais aucune mesure de complexité du code ne vous dira que la tâche aurait pu être résolue avec une fraction de l'effort.