langages de programmation

Pour les sujets qui ne concernent pas les autres catégories, ou en impliquent plus d’une
Répondre
Avatar de l’utilisateur
abgech
Messages : 565
Inscription : lun. 02 oct. 2006, 17:43
Localisation : Genève, Suisse

Message par abgech »

Conviendrait-il d'aborder les langages de programmation des ordinateurs ?

Il en existe, c'est une estimation personnelle, sans doute plus d'un millier utilisés plus ou moins couramment.

Ces langues ont un vocabulaire, une syntaxe définie par une grammaire formelle, une sémantique. Bref, bien que je ne sois pas linguiste, je crois qu'ils ont les attributs d'une langue élémentaire.

Le vocabulaire est parfois très restreint, de l'ordre d'une trentaine de mots, parfois plus étendu, plus de quatre cent mots pour le plus "verbeux" des langage de programmation que je connaisse.

La syntaxe est très contraignante. Une chose qui m'a toujours amusée (si j'ose dire) c'est que des étudiants, dont l'orthographe française est, au minimum, approximative, se disciplinent suffisamment pour arriver à programmer. Il est vrai que les traducteurs de langage de programmation (on parle de compilateurs) font, la plupart du temps, une vérification soignée de la syntaxe (tel un correcteur orthographique pour les langues naturelles) et refusent de continuer le travail de traduction tant qu'il y a des erreurs de syntaxe.

Pour ce qui est de la sémantique, c'est une tout autre paire de manches. C'est elle qui nous conduit à souvent entendre : "c'est la faute de l'ordinateur". Même si cette malheureuse machine n'y est pour rien, elle se contente de faire ce qu'on lui dit de faire.
Au surplus, cette phrase peut cacher bien d'autre choses qu'un programme informatique défaillant. Elle est bien commode pour masquer des erreurs humaines et des défauts d'organisation.
Dernière modification par abgech le mar. 13 août 2013, 13:55, modifié 3 fois.
Avatar de l’utilisateur
Jacques
Messages : 14475
Inscription : sam. 11 juin 2005, 8:07
Localisation : Décédé le 29 mai 2015, il était l'âme du forum

Message par Jacques »

Si mes souvenirs sont bons, le compilateur traduit un langage de programmation fondé sur le langage humain en « langage machine » c'est-à-dire en hexadécimal. (pas moyen ici d'éviter les répétitions).
J'ai fait de la programmation en amateur, et la syntaxe est totalement rigoureuse, la moindre erreur bloque le programme. C'était par curiosité, et je n'ai abordé que le BASIC, qui est extrêmement parlant car il est fondé sur le vocabulaire anglais. Exemple d'erreur de syntaxe : écrire par exemple go to en deux mots ne veut rien dire, en BASIC c'est goto. Alors, les dilettantes de l'orthographe sont obligés de se discipliner.
Si haut qu'on soit placé, on n'est jamais assis que sur son cul (MONTAIGNE).
Avatar de l’utilisateur
abgech
Messages : 565
Inscription : lun. 02 oct. 2006, 17:43
Localisation : Genève, Suisse

Message par abgech »

Jacques a écrit :... « langage machine » c'est-à-dire en hexadécimal. ...
Un nombre est une entité qui peut être représentée de différentes façons.

Dans la vie courante, on représente un nombre, avec la notation indo-arabe, en base 10.

Les romains utilisaient un système plus compliqué et peu pratique : essayez de faire une multiplication, voire une simple addition, en chiffres romains !

Les Sumériens avaient développé un système sexagésimal (en base 60). Il en reste des trace dans les minutes - secondes et la notation angulaire en degrés.

Les diverses notations, X (romain), (10 indo-arabe), A (hexadécimal), 1010 (binaire), représentent la même entité.

Le langage machine est formé d'une suite de 1 et de 0 (suites de bit), commandant l'ouverture ou la fermeture d'une porte électronique à un instant donné.
Le plus "naturel" serait sans doute d'utiliser une notation binaire. Mais c'est peu pratique, la notation est simple, deux signes, mais il y faut utiliser une grande suite de chiffres.
Alors, on fait des groupes de 4 bits, et on exprime ce groupe par un chiffre hexadécimal (en base 16) en utilisant les signes 0-9 et a-f (ou A-F). On divise ainsi par 4 la nombre de chiffres à utiliser.
L'hexadécimal n'est qu'une représentation commode, pas véritablement le langage machine.

Le BASIC est effectivement un langage de programmation basé sur, grosso modo, des mots anglais, comme d'ailleurs la grande majorité (si ce n'est la totalité) des langages de programmation.
La plupart du temps le BASIC n'est pas un compilateur, mais un interpréteur.
Dans un interpréteur le langage humain, par exemple le BASIC, est traduit à la volée, c'est à dire, immédiatement avant l'exécution de l'instruction et répétée avant chaque exécution.
Un compilateur traduit une seule fois l'entier d'un programme, l'exécution se passant ensuite.

Les compilateurs produisent des programmes bien plus rapides que les interpréteurs. On utilise ces derniers pour faire des prototypes, et ensuite on passe aux choses sérieuses avec un compilateur.
Encore que, la tendance moderne veut que l'on se contente de programmer "vite-fait, mal-fait" en utilisant un interpréteur.
Avatar de l’utilisateur
shokin
Messages : 438
Inscription : jeu. 03 janv. 2013, 18:06
Localisation : Suisse
Contact :

Message par shokin »

Je ne suis pas un spécialiste en programmation. Mais ne devrions-nous pas parler de codes de programmation ?

J'utilise le mot langage plus pour la communication entre êtres vivants.
Nous sommes libres. Wir sind frei. We are free. Somos libres. Siamo liberi.
Avatar de l’utilisateur
Jacques
Messages : 14475
Inscription : sam. 11 juin 2005, 8:07
Localisation : Décédé le 29 mai 2015, il était l'âme du forum

Message par Jacques »

Langages de programmation est le terme officiel que tout le monde utilise.
Si haut qu'on soit placé, on n'est jamais assis que sur son cul (MONTAIGNE).
Avatar de l’utilisateur
shokin
Messages : 438
Inscription : jeu. 03 janv. 2013, 18:06
Localisation : Suisse
Contact :

Message par shokin »

Oui, il est entré dans les "moeurs numériques francophones", je le constate, même si, d'un point de vue scientifique, il me semble moins approprié.

A priori, je me disais que la sémantique était ce qui manquait aux langages de programmation pour qu'ils s'apparentent à des formes de langages entre êtres vivants. Mais je viens de voir qu'il semble y avoir une sémantique des langages de programmation, comme il s'est développé une sémantique dans le langage écrit en mathématique et logique, que l'on numérise maintenant à l'aide du LaTeX (que j'apprends pour rédiger des exercices de mathématique).
Nous sommes libres. Wir sind frei. We are free. Somos libres. Siamo liberi.
Avatar de l’utilisateur
abgech
Messages : 565
Inscription : lun. 02 oct. 2006, 17:43
Localisation : Genève, Suisse

Message par abgech »

À mon avis, parler de code à la place de langage de programmation, c'est un anglicisme.

La sémantique est le but premier de tout langage, et encore plus en matière informatique.
Les langages de programmation ont été développés pour exprimer une sémantique, c'est à dire, pour exprimer la suite des opérations élémentaires que l'automate programmable doit effectuer.

En dehors de cette sémantique que je pourrais appeler opérationnelle, il existe une sémantique propre au langage de programmation considéré.
Les "phrases" d'un langage de programmation, dans ce contexte, on parle d'instructions, ont une signification particulière, ont un sens, même en dehors de tout aspect opérationnel.
Pour reprendre une instruction citée par Jacques, goto, signifie "va à" et cela, quel que soit le sens du programme qui la contient.

Au passage, goto est une instruction qui est maintenant bannie des bonnes techniques de programmation, il est trop long d'expliquer pourquoi et, de toute façon, ce n'est pas le lieu*.

Dans l'exemple donné par Shokin, LaTex est un langage de composition, avec sa syntaxe, qui permet d'exprimer une sémantique : la représentation graphique d'une intégrale ou de tout autre objet mathématique.

LaTex, est la modernisation de Tex, ce dernier est dû à un très grand monsieur de l'informatique, Donald Knuth, qui l'a imaginé pour pouvoir plus aisément publier l'essentiel d'une œuvre consacrée à l'algorithmique. C'est un aspect totalement marginal du travail de Knuth. Mais un aspect essentiel maintenant de toute publication scientifique.


* Pour l'anecdote, je disais à mes étudiants : je suis ravi si vous utilisez goto, je n'ai pas à corriger plus loin, vous avez d'office l'évaluation la plus basse.
Avatar de l’utilisateur
Jacques
Messages : 14475
Inscription : sam. 11 juin 2005, 8:07
Localisation : Décédé le 29 mai 2015, il était l'âme du forum

Message par Jacques »

abgech a écrit :À mon avis, parler de code à la place de langage de programmation, c'est un anglicisme.
La preuve : BASIC est un acronyme pour beginners allpurpose symbolic instruction code.
Si haut qu'on soit placé, on n'est jamais assis que sur son cul (MONTAIGNE).
Répondre