Le sens des mots n'est pas fixe, mais je peux vous donner mon interprétation.
Un calcul est quelque chose avec lequel nous calculons dans le sens de jongler avec des équations (pensez à la manipulation de séries de Taylor ou au calcul d'intégrales en analyse). Un calcul nous dit quelles sont les règles de manipulation, mais pas lesquelles nous devons utiliser dans une situation donnée.
Un langage de programmation est quelque chose qui nous dit comment calculer. Il nous indique précisément comment utiliser les règles. Nous laissons généralement l'ordinateur utiliser les règles, car c'est beaucoup plus rapide. Les règles peuvent être non déterministes et il peut y avoir de très bonnes raisons pour qu'elles ne soient pas déterministes. Il peut être dans la nature du calcul qu'il soit non déterministe (pensez aux processus de communication simultanés), ou la fixation d'une stratégie particulière peut être préjudiciable aux techniques de mise en œuvre et à l'optimisation.
Par exemple, le -calculus est une théorie équationnelle . Il y a des expressions et des équations qui nous disent quand les expressions sont égales. Les équations ne pas nous dire comment les appliquer, bien que les gens ont généralement des programmes cachés et ils présentent les équations de sorte que plus tard ils peuvent tirer des stratégies d'évaluation utiles de leur part . Mais dans son essence, λ -calculus est un tas d'équations. Ce n'est pas un langage de programmation.λλ
En revanche, Standard ML est un langage de programmation. Elle est donnée en termes de sémantique opérationnelle, c'est-à-dire de règles de calcul. Il y a des notions dérivées d'égalité (équivalence contextuelle, équivalence observationnelle, etc.) que nous pouvons ajouter par dessus pour la considérer comme une sorte de calcul.
Bien sûr, il existe souvent des connexions utiles entre un calcul et sa manifestation en tant que langage de programmation. La normalisation conflictuelle n'est qu'un moyen de passer du calcul au langage de programmation (bien que malheureusement certaines personnes en aient fait une sorte de religion). L'interaction entre les calculs et les langages de programmation est importante: les langages de programmation peuvent effectivement être utilisés, mais les calculs expliquent en quoi consistent les programmes.
Juste pour ennuyer les gens, permettez-moi également de dire que prétendre qu'il n'y a pas de différence entre un calcul et sa manifestation opérationnelle conduit parfois à des visions biaisées de la programmation et des mini-religions au sein de la communauté de la programmation. Vous pouvez essayer de deviner quelle langue j'ai en tête. (C'est une langue très cool!)