Acho importante expandir um pouco mais essa depuração "reversa" ou "histórica". Eu penso em entender sistemas complexos e comportamento naqueles, para reproduzir "eventos" que tornam o estado explícito é absolutamente crucial.
O que eu quero expressar é que você não está sozinho em se perguntar por que essa técnica não é aplicada hoje ou porque os problemas relacionados raramente são discutidos com clareza.
Então, vamos enfatizar dois conceitos muito importantes aqui:
1. Para entender um sistema de programação, é útil tornar o estado explícito
2. Para entender ainda mais um sistema de programação, repetir sequências de estado (eventos) pode ajudar muito.
Aqui estão algumas fontes que abordaram o problema e propuseram ou projetaram soluções para o problema (lidando com o estado em sistemas complexos):
- Fora do tar bit, papel: link
Principais idéias: evitar, isolar ou tornar explícito o estado
-CQRS
link
Esta é uma combinação de dois conceitos: Segregação por Consulta de Comandos e Fornecimento de Eventos. Existem diferentes implementações (Java, C #, Scala).
A repetição de seqüências de Tate e a evolução de um modelo de domínio são as partes cruciais aqui.
Se você realmente diminuir o zoom e ver a imagem muito ampla, você já pode ver que com o "aumento" da programação funcional as pessoas já estão ((des) conscientemente) atraídas pelo fp porque explícito!
Mas isso só lida com o ponto um, para abordar o segundo, você precisa de outro conceito que possa ser descrito de forma "vagamente" como programação reativa funcional.
Então você pode dizer tudo bem, mas quem realmente usa CQRS e FRP? Eu diria (IMO porque eu não tenho números concretos), na verdade, muitas empresas são apenas o fato de não saberem que o trabalho que fazem tem essa terminologia. Talvez você pesquise um pouco no Google e ouça empresas que usam o CQRS, já existem algumas histórias de sucesso por aí.
O FRP também está subindo lentamente como um exemplo que eu poderia dar à Netflix: link
Que acaba de lançar uma implementação do RX que é realmente baseado em .NET (mas também tem uma implementação em Javascript). Então, as pessoas já estão usando essas técnicas hoje em dia, para entender sistemas complexos e torná-los ainda melhores. É por isso que eles usam técnicas de depuração reversa.