Il existe de nombreuses langues populaires. Mais, les informaticiens nous disent que pour comprendre le comportement des programmes dans ces langues argumenter définitivement et sans ambiguïté sur le comportement du programme (par exemple prouver leur identité), nous devons les traduire dans un autre langage bien compris. Ils appellent ce langage "une sémantique". Les auteurs proposent une des nombreuses sémantiques. Ils expliquent le sens de leurs constructions et comment vous pouvez traduire votre langue en leur. Une fois que vous aurez fait cela, tout le monde comprendra certainement votre programme, disent-ils.
Ça a l'air bien, pourtant, je ne comprends pas quelque chose. Nous disent-ils qu'ils introduisent une autre langue pour comprendre la première? Pourquoi le comprenons-nous mieux que l'original? Pourquoi cette sémantique est meilleure que ça? Pourquoi ne pas apprendre tout de suite la sémantique de C au lieu d'inventer un autre langage, pour décrire la sémantique de C? Il en va de même pour la syntaxe. Pourquoi je ne pose pas la même question concernant la syntaxe?
PS Dans les commentaires, j'entends que la sémantique ne signifie pas une autre langue ou une traduction en elle. Mais la sémantique formelle pour VHDL dit que si vous ne comprenez quelque chose que d'une seule manière, vous ne le comprenez pas et le «sens du sens» peut être spécifié si nous fournissons une langue avec un mécanisme qui la traduit dans une autre langue (connue). Autrement dit, "la sémantique est une relation entre les systèmes formels". Hennessy, dans Sémantique des langages de programmation , dit que la sémantique permet un traitement formel du "sens" du programme, lorsque la sémantique est fournie sous forme de BNF ou de diagramme de syntaxe. Qu'est-ce qu'un système formel sinon une langue?
PS2 Puis-je dire que la synthèse HW d'un programme HDL donné dans l'interconnexion de portes est un processus d'extraction sémantique? Nous traduisons ensuite la description (de haut niveau) dans le langage (de bas niveau) que nous comprenons.
Réponses:
Parce que pour définir la sémantique de C, vous avez besoin d'une sorte de langage, par exemple l'anglais. L'anglais peut être ambigu, et en particulier la sémantique C99.
La notion informatique de sémantique est généralement une description mathématique d'un programme, et cette description n'est pas exactement une traduction. Il existe plusieurs types de sémantique, qui peuvent concerner différentes choses:
Un peu malheureusement pour l'instant, comprendre universellement un programme à travers sa sémantique n'est ni facile ni l'intention de tout cela. Ce n'est pas le premier parce que, bien, ces mathématiques peuvent être compliquées. Ce n'est pas le dernier car la sémantique fournit en effet une description commune et non ambiguë, mais elle n'est pas utilisée pour comprendre un programme.
Si la lecture de la sémantique n'a pas beaucoup de sens, il est très important de lire et de s'entendre sur la sémantique sur les éléments de base du langage, par exemple pour expliquer sans ambiguïté comment Cœuvres primitives.continue
En conclusion:
Techniquement non, la langue est mathématique. De plus, il est fondamentalement le même pour tous les langages de programmation, donc même l'introduction d'un nouveau langage, s'il est le même pour tous, serait à peu près OK.
Parce que c'est mathématique, donc c'est peut-être plus difficile à comprendre, mais c'est beaucoup plus précis et complet.
Il existe des travaux sur les analyseurs vérifiés, mais la question de ce que signifierait une sémantique d'un analyseur n'est pas anodine.
la source