Що ж, термін ентропія з'являється не тільки в термодинаміці та теорії інформації, але й з'являється в реальному світі стиснення даних. У цьому контексті ентропія, яку бачить компресор, дорівнює кількості бітів, які він виробляє. (Зверніть увагу, що я сказав "ентропія, яку бачить компресор ", тому що те, що вважається ентропією, залежить від моделі, яку компресор використовує для опису вхідних даних. Це причина, чому різні компресори створюють файли різного розміру: Що таке ентропія для одна - експлуатаційна структура, а інша.)
Це, в принципі, може бути прекрасно застосовано до складності вихідного коду: "Просто" написати компресор, який працює лише на повністю стандартний сумісний вихідний код, і який стискає його насправді, аналізуючи його, як і компілятор, створюючи відповідне дерево синтаксису. Тоді він може обходити це дерево синтаксису і вирішувати в кожному вузлі, які вузли були б можливі в кожній точці, кодуючи цей вузол цим знанням.
Наприклад, якщо мова дозволяє або існуючий ідентифікатор, або щось укладене в дужках, або продукт у певній точці, компресор буде рахувати можливі існуючі ідентифікатори, беручи до уваги інформацію про тип (скажімо, у вас є 3 таких ідентифікатори ), і додайте 2 для двох можливих підвиражень, даючи 5 можливостей. Так вузол буде кодований lb 5 = 2.32
бітами. У випадку двох можливих субпрессий, для кодування їх вмісту знадобиться більше біт.
Це дійсно дало б дуже точну міру складності коду таким, яким він є. Однак цей захід все ще марний! Це марно з тієї ж причини, що всі вимірювання складності коду марні: вони не вдається вивести зв’язок між вимірюваною складністю коду (якою б це не було) і складністю проблеми, яку вирішує код. Ви завжди можете знайти смішно складні рішення своїх проблем із програмуванням, щоб вразити роботодавця вашими підрахунками LOC, але жодна міра складності коду не скаже вам, що завдання могло бути вирішено за частку зусиль.