Connaissez-vous la différence entre la syntaxe, la grammaire et la sémantique du langage?


Réponse 1:

Je pense qu'il est important de noter qu'il y a une différence entre la façon dont les mots «syntaxe» et «grammaire» sont utilisés par les linguistes et les informaticiens.

Les informaticiens utilisent le mot «grammaire» pour nommer un ensemble de règles permettant de déterminer si une séquence donnée de symboles est syntaxiquement valide, c'est-à-dire si elle appartient à une langue particulière. En d'autres termes, une grammaire est une description d'une syntaxe (vous pouvez avoir de nombreuses descriptions alternatives de la même syntaxe), et une langue est un ensemble de séquences de symboles syntaxiquement correctes. La grammaire est souvent fournie sous la forme dite de Backus-Naur.

Les linguistes utilisent le mot «grammaire» pour nommer l'ensemble de règles pour utiliser correctement la langue. Il existe de nombreux types de règles, et parmi ces types, les règles syntaxiques visent à mettre les mots dans le bon ordre. Les deux choses à noter sont que (1) oui, vous pouvez utiliser le langage naturel de manière inappropriée (et le monde ne s'effondre pas) et (2) les linguistes ne sont généralement pas très inquiets de savoir si une phrase donnée appartient à une langue, mais ils le sont plutôt préoccupé par la façon dont les langues sont utilisées.

Tant en linguistique qu'en informatique, le mot «sémantique» fait référence à un ensemble de règles qui expliquent comment interpréter les séquences de symboles.


Réponse 2:

Syntaxe: comment la langue doit être présentée. Cela inclut les mots clés et le placement de la ponctuation. Par exemple, la syntaxe Python est différente de la syntaxe C à plusieurs égards, les plus grandes instructions étant doivent se terminer par un point-virgule en C tandis que Python nécessite un retrait spécifique pour être traité.

La syntaxe est l'endroit où vous verrez de nombreux développeurs gagner leur amour ou leur haine pour une langue, y compris moi-même. Je déteste PHP et JavaScript - ils lisent moche, les gros blocs deviennent peu attrayants et inutilement complexes, et franchement, les deux permettent aux développeurs d'être bâclés avec les paradigmes de frappe inférés et les mauvaises pratiques. Pourtant, j'aime Ruby car il se lit si bien, il est un peu plus strict et les blocs ne deviennent pas trop encombrants à cause de la façon dont le langage lui-même a été développé. Les constructions de langage en font un langage élégant en dépit d'être une couche d'abstraction très importante sur C.

Grammaire: ordre approprié des instructions afin qu'elles aient un sens et puissent être traitées avec un minimum de frais de calcul possible. L'un des meilleurs exemples que j'ai vu de cela récemment était une paire de boucles imbriquées avec l'intention d'imprimer quelque chose comme:

**********

Une méthode de péage meilleure, plus facile à comprendre et à calculer moins aurait été d'utiliser une série d'instructions printf (). Une bonne grammaire programmatique vient avec la pratique, et tous les nouveaux développeurs ont tendance à trop compliquer les choses dans la poursuite de la simplicité.

Cela ne veut pas dire qu'il existe une bonne et une mauvaise façon d'atteindre votre objectif. Il y a toujours 100 façons d'écorcher un chat, mais il n'y en a qu'une poignée qui a une notation Big O acceptable, et généralement seulement quelques-unes qui sont suffisamment lisibles pour être considérées comme élégantes.

Sémantique: l'intention d'une déclaration par rapport à la fonction réelle d'une déclaration. La sémantique est extrêmement importante à la fois dans la langue parlée et dans la programmation. La différence: une personne peut mal interpréter une déclaration même si votre sémantique est exacte. Les ordinateurs exécuteront exactement ce que vous écrivez, ou ne fonctionneront pas s'ils sont totalement éteints, et c'est de là que viennent les bogues logiques.