Stavo studiando il libro Struttura e interpretazione dei programmi per computer e nella sezione < a href="http://mitpress.mit.edu/sicp/full-text/book/book-ZH-10.html#%_sec_1.1.5"> 1.1.5 Il modello di sostituzione per l'applicazione di procedura l'autore spiega i concetti di ordine normale e ordine applicativo , che credo di aver capito bene.
Ora sto seguendo un corso su Coursera chiamato Principi di programmazione delle funzioni in Scala e lì il professore Martin Odersky (che ha basato gran parte del suo corso nel libro citato sopra) spiega gli stessi concetti sotto i nomi di call-by-name e call-by-value .
Nel suo corso, il professor Odersky sostiene che il modello di sostituzione è basato sul calcolo Lambda, quindi ho consultato un libro sulla mia libreria Un'introduzione alla programmazione funzionale Sebbene sia il Lambda Calculus e nella pagina 22, l'autore definisce i termini come ordine applicativo e ordine normale. È interessante notare che nella sua definizione dice che l'ordine applicativo è come la chiamata per valore di Pascal, mentre l'ordine normale è come la chiamata per nome di Algol.
L'uso delle parole "è come" nella sua spiegazione è ciò che mi ha fatto dubitare. Quindi le mie domande:
- Sono questi due termini equivalenti o ce ne sono sottili differenze?
- Posso usare l'uno o l'altro in modo intercambiabile senza rischiare di sbagliare nel significato che trasmettono?
- Ci sono ragioni per cui tu sappia che giustificano l'esistenza di termini diversi per riferirsi alla stessa cosa?