Langage

a marqué ce sujet comme résolu.

Bonjour à toutes et à tous

Après quelques mois d'absence, je me posais une question philosophico-technique à propos des langages informatiques.

En tant qu'êtres humains, nous avons un tas de langages. En France on parle Français, en Allemagne allemand et en Angleterre anglais ! Pourquoi toutes ces langues ? Ce pourrait être l'objet d'un autre sujet.

Mais en informatique ?

Durant mon ancienne pratique de l'informatique, j'ai utilisé Fortran (usage scientifique, éléments finis…), Basic ( pour débutants, comme son nom l'indique !), Pascal (Basic amélioré), Algol (ancêtre lointain du C++), SQL (trier, chercher…), C (pas longtemps; bien moins fun que Algol), etc…

Le langage informatique, pour moi, est une passerelle entre ce que je veux faire et ce que l'ordinateur sait faire. Je veux faire ÇA et pour le dire à l'ordinateur j'utilise un langage. Je lui dit avec des mots que je comprends (le langage informatique), quelqu'un traduit (le compilateur ou interpréteur) et lui, il exécute.

Mais pourquoi faut-il changer de langage en fonction du ÇA ? Pourquoi un langage particulier en fonction du type de tâche ?

Les différents langages humains (Français, Anglais, Allemand…) servent tous à la même chose : communiquer. Leur différentiation est historique et culturelle, pas fonctionnelle.

Pourquoi n'a-t-on jamais été capable de créer un langage unique entre l'homme et l'ordinateur ?

Avoir plusieurs langages permet d'en utiliser certains pour tels programmes et d'autres pour tels autres programmes.

Les différents langages humains (Français, Anglais, Allemand…) servent tous à la même chose : communiquer. Leur différentiation est historique et culturelle, pas fonctionnelle.

Si ! Il existe par exemple un langage minimaliste au doux nom de Toki Pona. Il y a aussi par exemple l’espéranto.

Pourquoi n'a-t-on jamais été capable de créer un langage unique entre l'homme et l'ordinateur ?

On pourrait, mais soit il y a un top grand niveau d'abstraction soit pas assez !

+0 -0

Les différents langages humains (Français, Anglais, Allemand…) servent tous à la même chose : communiquer. Leur différentiation est historique et culturelle, pas fonctionnelle.

Il y a aussi beaucoup de ça en langage informatique : si les différences étaient uniquement fonctionnelles il y en aurait beaucoup moins.

Tu dis toi meme que tu trouve le C fin que l'Algol. C'est bien que tu porte un avis subjectif sur le langage. Tu en trouve un plus fun que l'autre.

La majorité des langages les plus courant permettent tous de tout faire. Les différences ne sont donc pas fonctionnelles.

Si on met de côté les problèmes historique (car ça a beaucoup d'importance) et les gouts de chacun en matière de syntaxe (subjectif), il reste que chaque langage n'a pas les mêmes caractéristiques. L'exemple le plus frappant sont les paradigme de chaque langage. Un langage procedural, objet ou fonctionnel vont pas générer le meme type de code et la meme façon de programmer. Certains sont plus adaptes a certaines taches qu'a d'autres.

Et encore je ne parle meme pas la des langages qui ont des domaines de prédilection comme R par exemple.

Les différents langages humains (Français, Anglais, Allemand…) servent tous à la même chose : communiquer. Leur différentiation est historique et culturelle, pas fonctionnelle.

Tagada

Ils servent tous à communiquer, mais pourtant, il existe des mots, ou des déclinaisons, ou tout autre moyen sémantique d'exprimer des choses dans certaines langues qui n'existent pas dans d'autres. Les Anglais distinguent I must de I have to, qui signifient tous deux je dois. Le second indique que la contrainte est extérieur, qu'il y a un donneur d'ordre. En Français, cette distinction n'est pas importante et n'existe pas dans le langage, il faut ajouter une proposition à la phrase pour l'exprimer.

En programmation, c'est pareil, certains langages sont pensés pour exprimer certaines choses, et rendent plus difficiles l'expression d'autres choses. On pourrait imaginer avoir moins de langages, mais beaucoup plus riches sémantiquement, mais ils deviendraient alors très complexes à apprendre. C'est un peu le cas de C++, d'ailleurs, qui peut exprimer de l'héritage multiple, un héritage virtuel ou non (alors qu'il l'est toujours en Java), 3 conversions de type différentes, etc. Il n'en est que plus complexe à utiliser, et le fait de devoir exprimer toutes les nuances ne fait que l'alourdir.

Mettre le maximum de choses dans une langue, c'est ce qu'on fait quand c'est la langue qu'on utilise tous les jours, le Français, le Mandarin, etc… mais on met du coup des années à apprendre à parler de nouvelles langues. Ce n'est pas souhaitable pour les langages informatiques; à l'inverse, on veut exprimer des choses rapidement, avec un maximum de sous-entendus, pour ne pas avoir à l'exprimer, sachant qu'on peut facilement parler de multiples langues. Le choix de la langue qu'on parle est déjà une indication de ce qu'on veut dire.

Comme le dit Natalya, les langages deviendraient beaucoup trop complexe et lourd d'utilisation. Quand on voit la difficulté de traduction entre deux langages "humain", imagine la complexité d'un compilateur ou interpréteur si les langages informatique était du même ordre.

Ceci dit je tiens à préciser que le langage SQL est tout de même universel, même si c'est en train de changer il me semble.

J'avais constater quelque chose il y à peu de temps, dans les "langages" utilisé par les hommes pour communiqué, il y en à au moins un (je pense deux) qui sont universel et n'importe qui presque pas inité peut comprendre. Il s'agit du solfège (pour le deuxième je pensais aux mathématiques, mais les notations diffèrent selon les régions donc bon…). Le solfège permet d'exprimer des phrases, a du sens d'un point de vue musical etc. Je le considère comme un langage.

J'ai trouvé amusant qu'il y ai un langage universel chez nous humain, et un langage universel chez nous informaticien !

Ceci dit je tiens à préciser que le langage SQL est tout de même universel, même si c'est en train de changer il me semble.

Non. Le langage SQL est et restera la norme de dialogue entre un opérateur et un système de gestion de base de données relationnelle. Ce qui change c'est que les SGBDr ne suffisent plus au monde actuel et que certaines solutions de SGBD non ACID/ non relationnel ont vraiment monté leurs perfs à un niveau suffisant pour être utilisées.

Comme le dit Natalya, les langages deviendraient beaucoup trop complexe et lourd d'utilisation. Quand on voit la difficulté de traduction entre deux langages "humain", imagine la complexité d'un compilateur ou interpréteur si les langages informatique était du même ordre.

Ceci dit je tiens à préciser que le langage SQL est tout de même universel, même si c'est en train de changer il me semble.

J'avais constater quelque chose il y à peu de temps, dans les "langages" utilisé par les hommes pour communiqué, il y en à au moins un (je pense deux) qui sont universel et n'importe qui presque pas inité peut comprendre. Il s'agit du solfège (pour le deuxième je pensais aux mathématiques, mais les notations diffèrent selon les régions donc bon…). Le solfège permet d'exprimer des phrases, a du sens d'un point de vue musical etc. Je le considère comme un langage.

J'ai trouvé amusant qu'il y ai un langage universel chez nous humain, et un langage universel chez nous informaticien !

Ricocotam

La notation (italienne VS anglaise) et la notion de tonalité (quart de ton des musiques arabes) diffèrent.

+1 -0

Oui il y a des quarts de ton dans des musiques "arabes" mais ce n'est pas le seul endroit où on en trouve. En musique contemporaine aussi ça peut se trouver. Sans parler des musiques atonales btw …

Pour ce qui est du langage mathématique il y a une dépendance à la construction, il y a plusieurs manière de choisir son langage en vue de faire du calcul propositionnel. En fait il y a même rarement du langage mathématique "pur" dans un texte mathématique. Ce sont souvent des expressions simples, mais personne n'écrit vraiment en langage mathématique, parce que c'est moins compréhensible la majorité du temps.

+1 -0

La notation ? Quand on regarde une partition (et j'ai vu des partitions anglaise, asiatique et européenne) c'est la même notation. Le nom des notes diffèrent c'est vrai.

Je ne savais pas pour la musique arabe, je vais regarder :)

Ricocotam

Personellement je sais ni lire avec un diagramme d'accord ni avec les lettres, uniquement une partition. Mais je connais des guitaristes ne sachant pas lire une partition mais un diagramme d'accord si ! :-)

https://fr.m.wikipedia.org/wiki/Notation_musicale

+1 -0

Pour revenir vers le sujet, j'aimerais apporter une réponse peut-être surprenante au premier abord. Pourquoi a t-on autant de langages ? Pour la même raison que l'on a autant de systèmes d'exploitation et autant d'éditeurs de texte : parce que c'est possible.

Je veux dire par là que n'importe qui (ayant des connaissances suffisantes, mais c'est plus facile qu'on ne le croit) peut créer un langage de programmation. Du coup, les gens ne se privent pas — que ce soit pour le défi, pour s'amuser, ou bien pour obtenir un langage qui correspond exactement à ses propres attentes. Ainsi, le C et le Forth (entre autres) ont été conçus par des personnes qui avaient un besoin particulier, et aucun langage qui le satisfaisait sous la main. Si je ne m'abuse, le OCaml était à la base une expérimentation pour essayer de nouvelles techniques de compilation et de nouvelles fonctionnalités pour les langages. Java était initialement pensé pour attirer les programmeurs C++ vers des langages semblables au Lisp. Le Lisp, d'ailleurs, était un langage théorique : il servait à représenter des objets mathématiques, pas a programmer. Ça n'est que par accident que l'on a implémenté un compilateur (d'ailleurs, John MacCarthy, le concepteur du langage, pensait au départ qu'il était impossible d'implémenter ce langage sur un ordinateur !). D'autres langages, comme le C#, le Basic et l'objective C, ont été créés ou récupérés par des entreprises pour faire partie de leur stratégie commerciale.

Bref, la liste est longue.

Ce qu'il faut retenir, c'est qu'il n'y a pas de Grand Conseil des Langages de Programmation, qui décide quels sont les langages qui existent. Les gens ne se concertent pas entre eux, chacun fait son truc dans son coin. Il doit exister des milliers — peut-être même des millions — de langages de programmation qui ne sont jamais sortis du disque dur de leur concepteur. J'en ai une demi-douzaine rien que sur ma machine. ^^ Les gens les implémentent pour apprendre, pour le fun, pour le défi, ou par besoin — chacun a ses raisons. Ensuite, la loi de l'offre et de la demande (ou la sélection naturelle, comme tu veux) fait le reste : dans certains cas, une communauté se crée et fait vivre le langage.

En outre, si tu étudies la conception de langages de programmation et la compilation, tu commenceras rapidement à penser : « hey, mais je peux améliorer ça ! » lorsque tu apprendras un nouveau langage. La conception de langages est comme un art, et les langages existants des œuvres. Tu commenceras à voir les avantages et les défauts de chacun, y compris d'un point de vue théorique, et tu auras rapidement envie d'essayer de faire le tien.

On peut voir les choses autrement. Il y a un débat fondamental qui est : « qu'est-ce que la programmation ? ». Tu peux considérer chaque langage comme l'expression d'un point de vue vis-à-vis de cette question. Ainsi, je prétends que Dennis Ritchie (concepteur du C) et John MacCarthy (concepteur du Lisp) avaient des vues assez différentes — quoique pas diamétralement opposées — sur cette problématique. Si tu t'intéresses à cette question, tu te documenteras et tu te forgeras ta propre opinion à ce sujet ; concrétiser cette opinion sous forme de langage de programmation, avec un compilateur et tout, est un excellent moyen de confronter ton idée avec la réalité.

Comme je l'indiquais en début de mon message, on pourrait faire une réponse similaire sur la question : « pourquoi y a t-il plusieurs éditeurs de textes ? Systèmes d'exploitations ? Marques de céréales ? » etc. etc.

+11 -0

J'ajouterais bien une citation de Sam :

Faire évoluer un langage qui a 20 ans et dont il y a des millions de lignes de code partout, c’est dur. Chaque petite modification peut entrainer des conséquences importantes, et tout juste milieu renferme des craquelures d’inélégance.

C’est aussi pour ça qu’il est si plaisant d’inventer son langage, son framework, son outil pour faire x mieux que le status quo y. Il est parfait. Il est tout frais. Personne ne l’utilise. Il n’a encore eu aucune cicatrice.

Sam, de sametmax.com

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte