Penso che sia importante approfondire ulteriormente questo debug "inverso" o "storico". Penso che comprendere i sistemi e il comportamento complessi in questi, per riprodurre "eventi" che rendono esplicito lo stato è assolutamente cruciale.
Ciò che voglio esprimere è che non sei il solo a chiedermi perché questa tecnica non viene applicata tanto oggi o perché i problemi correlati vengono discussi raramente in modo chiaro.
Quindi enfatizziamo due concetti molto importanti qui:
1.Per comprendere un sistema di programmazione è utile rendere esplicito lo stato
2.Per capire ancora meglio un sistema di programmazione che riproduce sequenze di stati (eventi) può aiutare molto.
Ecco alcune fonti che hanno affrontato il problema e hanno proposto o progettato soluzioni per il problema (occupandosi dello stato in sistemi complessi):
-Out di tar bit, paper: link
Principali idee: evitare, isolare o rendere esplicito lo stato
-CQRS
link
Questa è una combinazione di due concetti: Comando Query Segregation e Event Sourcing. 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 veramente riduci e vedi l'immagine molto ampia puoi già vedere che con "l'ascesa" della programmazione funzionale le persone sono già ((non) consapevolmente) attratte da fp perché rende lo stato esplicito!
Ma questo riguarda solo il primo punto, per affrontare il secondo è necessario un altro concetto che possa essere definito "liberamente" come programmazione reattiva funzionale.
Quindi potresti dire tutto bene ma chi usa effettivamente CQRS e FRP? Direi (IMO perché non ho numeri concreti) in realtà un sacco di aziende è solo che non sanno che il lavoro che fanno ha questa terminologia. Forse fai un po 'di google e senti parlare di aziende che usano CQRS, ci sono già alcune storie di successo.
Anche FRP sta salendo lentamente come un esempio che potrei dare a Netflix: link
Che ha appena rilasciato un'implementazione di RX che è in realtà basato su .NET (ma ha anche un'implementazione Javascript). Quindi le persone stanno già usando queste tecniche, IN GRANDE, per comprendere sistemi complessi e renderli ancora migliori. Questo è il motivo per cui usano tecniche di reverse reverse.