Recentemente ho letto un articolo intitolato "Tutto ciò che avreste sempre voluto sapere sull'analisi dinamica degli errori e sull'esecuzione simbolica avanzata (ma potrebbe aver paura di chiedere)" del Dr. EJ Schwartz. Nel documento, ha parlato principalmente delle loro applicazioni in contesto di sicurezza a livello binario.
Per spiegare ciò che sono, l'autore definisce un linguaggio specifico, con la sua semantica operativa e così via. Come posso vedere, questo è un linguaggio imperativo. Mi chiedevo se tale analisi potesse essere applicata (e avrebbe potuto avere senso farlo) anche a un piccolo sottoinsieme di un linguaggio funzionale. Voglio dire, uno con alcune operazioni aritmetiche e booleane di base, se espressioni, definizione di funzioni, applicazioni e alcuni tipi di funzioni di input.
In un linguaggio funzionale puro non ci sono effetti collaterali e i valori sono immutabili. In un tale contesto, il possibile impatto di un valore contaminato è, a mio parere, molto ridotto perché possiamo semplicemente usare le espressioni per verificare il valore. Una volta che lo abbiamo fatto, possiamo assumere che ogni valutazione del ramo "allora" e "altro" sarà sicura? Voglio dire, in un contesto come questo, in cui non abbiamo goto dichiarazioni, puntatori e così via, la sicurezza generale è migliorata e l'analisi dell'inquinamento è più semplice piuttosto che in un linguaggio imperativo e, dal momento che il flusso di controllo è più chiaro, l'applicazione dell'analisi statica e dinamica sarebbe più semplice.
Tuttavia, non sono un esperto in questo campo, quindi sono abbastanza confuso riguardo alle possibili applicazioni e implicazioni. I miei presupposti e pensieri sono giusti?
Grazie a tutti.