Un programme Scheme est un texte qui décrit comment traiter des
informations. Ce texte obéit à une certaine syntaxe régissant son
aspect extérieur. La
syntaxe est un ensemble de règles
d'écriture et de structuration, l'équivalent d'une grammaire précisant
quelles sont les seules textes acceptables. Par exemple, la phrase
« mourir, Marquise, vos d'amour yeux me beau font » n'est pas
syntaxiquement acceptable (même si probablement vous avez reconnu d'où
cette phrase pouvait provenir et quelle était la forme acceptable de sa
formulation originale).
La syntaxe de Scheme est, parmi les langages de programmation, la plus
simple qui soit. C'est la notation polonaise préfixée, variante
parenthésée, dite de Cambridge (Massachussetts USA).
Lorsqu'un texte est acceptable, l'ordinateur tente de l'évaluer afin
de déterminer les informations qu'il construit. Intervient alors ce
que l'on nomme la
sémantique du langage de programmation. La
sémantique confère un sens aux mots et à leur agencement. On programme
donc en écrivant un texte dont la sémantique permet de réaliser
l'intention du programmeur.
Tout ce qui est syntaxiquement correct n'a pas nécessairement une
sémantique compréhensible. Par exemple « Napoléon est triangulaire »
est syntaxiquement correct et peut même déclencher l'hilarité sans que
l'on puisse être certain de ce que cela signifie.
Lorsque l'on écrit 3+4, la sémantique du signe + est d'être
l'addition. Certains contextes peuvent toutefois conférer d'autres
sens au même signe +: en maths, dans un groupe, le signe + dénote
souvent l'opération interne de ce groupe quelque soit cette opération
(l'addition modulo, l'union ensembliste, la disjonction booléenne,
etc.) Un texte n'a de sémantique que dans le cas d'une théorie
particulière: un langage de programmation est une théorie accordant un
sens à tous les textes syntaxiquement acceptables.
Lorsqu'un programme est soumis à un évaluateur Scheme, sa syntaxe est
tout d'abord vérifiée puis le programme commence d'être évalué sur le
plan sémantique. Une erreur à ce niveau indique que le programme est
incohérent et qu'il ne peut mener à un résultat sensé. Parce que
Scheme est un
langage sûr, l'évaluation s'arrêtera alors et
indiquera la nature de l'erreur qui peut être très simple comme une
erreur de typage ou une division par zéro ou beaucoup plus
compliquée. Il se peut même qu'un programme boucle c'est-à-dire qu'il
ne se termine jamais!
La sémantique est complexe puisqu'elle nécessite de s'abstraire de la
syntaxe pour ne voir au travers de la forme du texte que le sens qui
s'y trouve. Un des buts de l'informatique ou des notations
mathématiques est de transformer de la sémantique en syntaxe. Ce qui
permet de faire confiance aux notations sans se soucier du sens
profond caché derrière.
Si l'on prend la 16ème proposition du septième élément d'Euclide, on
lit:
Si quatre nombres sont proportionnels, le nombre produit par le
premier et le quatrième sera égal au nombre produit par le second et
le troisième; et si le nombre produit par le premier et le quatrième
est égal à celui produit par le second et le troisième, les quatre
nombres seront proportionnels.
En langage plus moderne, si l'on nomme les quatre nombres dont il est
question
a,
b,
c,
d, la proposition dit que:
a/b = c/d Û ad = bc
Les notations fractionnelles ont rendu cette transformation triviale
(encore qu'il faille veiller à la non nullité de
b et
d) et
dispensent de se référer au théorème précédent. On peut même trouver
des exemples encore plus simples: effectuer une multiplication à la
main est un travail purement syntaxique qui ne nécessite pas de se
référer à la théorie de la représentation positionnelle des nombres.