Eu estava estudando o livro Estrutura e Interpretação de Programas de Computador e na seção 1.1.5 O Modelo de Substituição para Aplicação de Procedimentos, o autor explica os conceitos de ordem normal e ordem de aplicação , que acredito ter entendido bem.
Agora, estou fazendo um curso sobre o Coursera chamado Princípios de Programação de Funções em Scala e aí o professor Martin Odersky (que baseou grande parte de seu curso no livro citado acima) explica os mesmos conceitos sob os nomes de chamada por nome e chamada - por valor .
Em seu curso, o professor Odersky diz que o modelo de substituição é baseado no Cálculo Lambda, então consultei um livro na minha biblioteca Uma introdução à programação funcional Embora o Cálculo Lambda e na página 22, o autor defina os termos como ordem de aplicação e ordem normal . Curiosamente, em sua definição, ele diz que a ordem aplicativa é como a chamada por valor de Pascal, enquanto a ordem normal é como a chamada por nome de Algol.
O uso das palavras "é como" em sua explicação é o que me fez duvidar. Assim, minhas perguntas:
- Esses dois termos são equivalentes ou existem diferenças sutis?
- Posso usar um ou outro de forma intercambiável sem correr o risco de cometer um erro no significado que eles transmitem?
- Você conhece algum motivo que justifique a existência de terminologia diferente para se referir à mesma coisa?