Penso che sia importante ampliare ulteriormente questo debug "inverso" o "storico". Penso che comprendere sistemi e comportamenti complessi in quelli, riprodurre "eventi" che rendono esplicito lo stato sia assolutamente cruciale.
Quello che voglio esprimere è che non sei il solo a chiederti perché questa tecnica non è così tanto applicata oggi o perché i relativi problemi raramente vengono discussi chiaramente.
Diamo quindi risalto a due concetti molto importanti qui:
1.Per comprendere un sistema di programmazione è utile rendere esplicito lo stato
2.Per comprendere ulteriormente un sistema di programmazione, la riproduzione di sequenze di stato (eventi) può essere di grande aiuto.
Ecco alcune fonti che hanno affrontato il problema e proposto o progettato soluzioni per il problema (gestione dello stato in sistemi complessi):
-Del bit di bit, carta: http://shaffner.us/cs/papers/tarpit.pdf
Idee principali: evitare, isolare o rendere esplicito lo stato
-CQRS
http://www.cqrs.nu/
Questa è una combinazione di due concetti: segregazione di query di comando e sourcing di eventi. Esistono diverse implementazioni (Java, C #, Scala). La riproduzione delle sequenze di Tate e l'evoluzione di un modello di dominio sono le parti cruciali qui.
Se ingrandisci davvero e vedi l'immagine molto ampia puoi già vedere che con il "sorgere" della programmazione funzionale le persone sono già ((inconsapevolmente) attratte da fp perché rende esplicito lo stato! Ma questo riguarda solo il punto uno, per affrontare il secondo è necessario un altro concetto che potrebbe essere "liberamente" descritto come programmazione reattiva funzionale.
Quindi potresti dire tutto bene ma chi effettivamente utilizza CQRS e FRP? Direi (IMO perché non ho numeri concreti) in realtà molte aziende è solo che non conoscono il lavoro che fanno ha questa terminologia. Forse vai un po 'in giro su Google e senti le imprese che usano CQRS, ci sono già alcune storie di successo là fuori. Anche FRP sta aumentando lentamente come esempio che potrei dare a Netflix: http://techblog.netflix.com/2013/02/rxjava-netflix-api.html
Che ha appena rilasciato un'implementazione di RX che in realtà è basata su .NET (ma ha anche un'implementazione Javascript). Quindi le persone utilizzano già queste tecniche oggi, IN THE LARGE per comprendere sistemi complessi e renderli ancora migliori. Questo è il motivo per cui usano tecniche di debug inverse.