L'articolo di "Strategia di riduzione" di Wikipedia è interamente estratto da una particolare modifica apportata da un IP anonimo all'articolo "Strategia di valutazione".
L'opinione che rappresenta non è consensuale, nel senso che sospetto che relativamente poche persone del settore daranno spontaneamente questa risposta se chiedessi loro "distingueresti i nomi" strategia di riduzione "e" strategia di valutazione "?". L'ho sentito solo da Matthias Felleisen, che è irremovibile sull'importanza di questa distinzione - e presumo che questo punto di vista sia condiviso da altri che hanno avuto la possibilità di dedicare del tempo a discutere questi punti in dettaglio con lui.
La mia attuale comprensione di questo punto (ma non ho ancora studiato i dettagli tecnici per la loro piena giustizia) riguarda quanto segue: si tratta di utilizzare la semantica "grande passo" contro "piccolo passo" - questa distinzione è standard e compresa da tutti nel settore. La semantica a piccoli passi definisce un passo atomico di riduzione e il risultato è generalmente ancora riducibile. La semantica big-step definisce un "grande" passo di riduzione che va dal programma iniziale al suo valore (o qualche tipo di "risposta" più ricco se la tua lingua ha altri effetti osservabili rispetto alla restituzione di un valore, ad esempio input / output o stato mutabile).
Se si definisce una relazione sia a passo grande che a passo piccolo, è possibile verificare che la semantica a passo grande sia inclusa nella chiusura transitiva della relazione a passo piccolo e che la relazione a passo piccolo non si riduca ad altri termini bloccati rispetto a quelli raggiunti dalla relazione big step o divergono se viene definita la riduzione big step. Questa è la relazione di coerenza attesa tra entrambi.
Penso che la formulazione dell'articolo possa essere più o meno descritta, in termini moderni, come "la strategia di valutazione è la relazione a grandi passi", "la strategia di riduzione è la relazione a piccoli passi". Si noti che la discussione fatta nell'articolo "Strategia di riduzione" riguarda principalmente articoli e ricerche (e, soprattutto, punti di vista eloquenti formati durante la loro lettura e scrittura) tra il 1973 e il 1991, in un momento in cui tali nozioni erano appena nate, e probabilmente non così ben compreso come lo sono oggi. (la semantica del grande passo è stata enfatizzata da Kahn nel 1987 e uno dei lavori più importanti sulla semantica del piccolo passo è Wright e Felleisen, 1992)
Per il lato più supponente del motivo per cui Felleisen insiste sull'importanza di questa differenza (vale a dire, perché potrebbe esserci qualcosa di più di un semplice "piccolo passo contro grande, meh"), la mia attuale comprensione è la seguente: il punto che si sta facendo è che la semantica a piccoli passi dovrebbe essere vista come un dettaglio di implementazione. Illa semantica, secondo questo argomento, è la funzione astratta che mappa ogni programma al suo valore / risposta, e il resto sono dispositivi di implementazione progettati per approssimarlo (o ragionare sull'equivalenza indotta da questa semantica). Quando diciamo un grande passo oggi, pensiamo a un sistema di regole di inferenza di natura sintattica, ma la "strategia di riduzione" che è discussa sopra è in realtà la sua astrazione come una mappatura. (Non penso che questo dia più espressività o forza alla nozione in pratica, ma la rende più astratta.)
Quindi penso che ciò che questa pagina di Wikipedia, e Matthias Felleisen, stiano dicendo sia qualcosa del tipo: "Definisci la tua valutazione nel modo che preferisci, ma alla fine la cosa che conta è come i tuoi programmi sono associati ai loro valori / risposte / comportamenti, e questo è ciò che dovrebbe essere chiamato "semantica operativa" e ragionato ".
Si noti che questa posizione è in qualche modo contraria all'attuale distinzione (che ritengo piuttosto consensuale, ma potrebbe essere un pregiudizio culturale da parte mia) tra "semantica operativa" e "semantica denotazionale", dove la prima è vista come più sintattica in natura (definito come una relazione di riduzione), e quest'ultimo è tipicamente caratterizzato dal fatto che i programmi computazionalmente equivalenti hanno la stessa identica denotazione (quindi la denotazione è ignara del meccanismo di calcolo effettivo). In quest'ultima prospettiva, ciò che viene proposto come una "strategia di valutazione" o "semantica operativa" negli articoli e la mia spiegazione sopra sarebbe piuttosto visto come una semantica denotazionale - ma è certamente di natura più concreta della maggior parte: valori / risposte / i comportamenti sono più vicini agli oggetti sintattici rispetto a molti domini semantici.
Riferimenti: per comprendere questo punto di vista, è probabilmente utile tornare alla sua proclamata fonte, che è l'articolo di Gordon Plotkin nel 1973. Potresti anche avere fortuna a provare uno di questi ultimi articoli citati su Wikipedia; Ho scoperto, ad esempio, che "Parameter-Passing and the Lambda Calculus", di Crank e Felleisen, 1991, ha fornito una panoramica molto chiara della loro posizione sull'argomento nelle prime pagine.