Pourquoi n'y a-t-il pas plus de langages de programmation en plusieurs langues naturelles?

9

Existe-t-il des langages de programmation disponibles et extensibles dans plusieurs langages naturels?

Par exemple, une version anglaise avec une do..whileboucle, une version espagnole avec une hacer..mientasboucle, une version française avec un faire..pendantet une version néerlandaise avec un doe..terwijl.

Le seul «langage de programmation» auquel je puisse penser est ce type d'implémentation, c'est Microsoft VBA.

Question bonus: Pourquoi y a-t-il si peu de langages de programmation qui viennent en plusieurs langues?

Martijn Burger
la source
12
L'anglais est la Lingua Franca de la plupart des langages de programmation, pour le meilleur ou pour le pire.
Robert Harvey
13
That's a reason why the languages are in English, not why there are no other languages, for example no "Java Indonesian" or "C++ Swahili"- Parce que votre programme Java indonésien ne pourrait être maintenu que par des programmeurs indonésiens.
Robert Harvey
5
@DavidArno ce sujet a été battu à mort dans Est-ce que les gens dans les pays non anglophones codent en anglais? et plusieurs des questions qui y sont liées
moucheron
8
@MartijnBurger traduire les mots - clés est le "problème mineur", par rapport à la traduction de la bibliothèque standard , qui est la "tâche énorme". Et c'est aussi ce qui entraînerait des problèmes d'interopérabilité. Java ne dépend pas de l'orthographe des mots-clés une fois compilés; mais cela dépend de l'orthographe des noms de package, de classe et de méthode.
Dan Getz
3
@DanGetz il y a toujours le problème en Java (et probablement dans d'autres langages) que les mots clés sont réservés. Je ne peux pas définir un champ comme String for;en Java car ce serait un symbole exporté dans la classe. Et cela voudrait que je ne puisse pas nommer un champ doenon plus parce que c'est dans la version néerlandaise et public class Deer { String buck; String doe; }que le doechamp ne serait pas accessible. Tous les mots clés sont des mots réservés en Java. De mauvaises choses se produiraient dans les champs qui entrent en conflit avec des mots clés dans d'autres langues.

Réponses:

21

Les noms de fonction dans les formules Excel sont localisés, où vous pouvez utiliser la formulation anglaise ou l'équivalent local.

Cela a conduit à d'innombrables occurrences de feuilles de calcul lorsque vous vous déplacez à travers les régions et les langues des utilisateurs. Il est également difficile de rechercher des informations sur les fonctionnalités, car la documentation locale est localisée et ne mentionne pas les noms anglais des choses, et inversement, demander à SO avec vos noms locaux n'a pratiquement aucun sens pour la plupart des lecteurs.

Les mots-clés doivent être considérés comme des surnoms opaques, qui se trouvent juste correspondre au sens des mots anglais utilisés pour les épeler. Il existe de nombreux programmeurs non anglophones qui ne savent pas ce que signifient la moitié de leurs mots clés.

Lars Viklund
la source
5
Il est surprenant que cette réponse soit le seul endroit où le mot "Excel" apparaisse, vu l'échec épique des formules traduites. Les deux arguments sont valables et très forts: les feuilles de calcul se brisent et les versions localisées fragmentent les communautés. Cela n'inclut pas l'effort du vendeur pour traduire les documents et les programmes (compilateurs) eux-mêmes.
1
Pourquoi est-il si difficile de traduire des mots clés dans un script? Ils devraient certainement être relativement faciles à analyser car ils sont déjà traités spécialement.
SuperBiasMan
De plus, Excel n'est pas vraiment un système de programmation en langage naturel , car il ne traduit pas les structures de phrases en anglais en programmes exécutables.
Anderson Green
16

Au siècle précédent, notamment dans les années 1960-1970, il s'agissait de langages de programmation non basés sur l'anglais. En France, nous avions PAF & LSE avec des mots-clés à l'allure française. L'Allemagne de la Seconde Guerre mondiale avait Plankalküll de K.Zuze. En Union soviétique, A.Ershov a conçu certaines langues (par exemple Rapira ) avec des mots-clés russes. IIF PAF (conçu et mis en œuvre par mon défunt père quand j'étais bébé - début des années 1960) pourrait également être vendu avec des mots-clés anglais (ou russe, ou allemand). Et certaines langues, par exemple APL , n'avaient aucun mot-clé. Les autres langues ( PL / I ) n'avaient pas réservémots clés. Et vous pouvez redéfinir les mots clés avec des techniques de préprocesseur (par exemple aujourd'hui, en C, #define si ifet #define sinon elsepour les étudiants français ...; des astuces macro- basées similaires sont possibles en PL / I ou même Common Lisp).

Mais l' informatiquea été principalement développé dans un pays anglophone (les États-Unis). Les langages de programmation et leurs implémentations avaient donc des spécifications et une documentation en anglais et des mots-clés en anglais. Par conséquent, chaque développeur doit être capable de lire l'anglais technique, et il n'y a aucune valeur ajoutée à «localiser» le langage de programmation (et même, cela rend l'utilisation d'autres logiciels plus difficile, comme indiqué ailleurs). La domination technique et économique actuelle des pays anglophones exige que tous les ingénieurs lisent l'anglais aujourd'hui (je suis sûr que même les ingénieurs logiciels nord-coréens, chinois ou iraniens sont capables de lire la documentation en anglais et de lire le code avec des mots-clés et des identificateurs anglais) . Il n'y a donc plus assez de valeur ajoutée pour «localiser» un langage de programmation (sauf peut-être pour enseigner la programmation élémentaire aux lycéens).

De plus, l'anglais a de nombreux mots-clés courts (comparer sinonen français à elseen anglais, ou mettreen français à puten anglais), donc il y a un petit avantage à utiliser des mots-clés en anglais ....

Peut-être que dans un siècle, la Chine pourrait devenir le principal pays de l'informatique et certains langages de programmation chinois pourraient prospérer. Nous ne savons pas ce qui se passerait alors ...

PS. La domination de l'anglais n'est pas spécifique à l'informatique. Même si le Royaume-Uni quitte l'Union européenne -le scénario du Brexit- , la langue officielle de facto de la CE resterait l'anglais (qui ne sera alors la langue d'aucun pays membre de l'UE) et les projets TIC H2020 sont écrits en anglais.

Basile Starynkevitch
la source
N'oubliez pas Plankalküll !
Erik Eidt
Merci. À ne pas confondre avec le
calcul du
Je ne sais pas, mais je l'ai voté positivement, il est donc (hélas seulement) neutre. J'ai trouvé que c'était une bonne réponse.
Mawg dit réintégrer Monica le
5
L'anglais est l'une des deux langues officielles de la République d'Irlande, qui est membre de l'UE.
Matthew Flynn
9

Il y a de très bonnes raisons pour lesquelles les langages de programmation professionnels ne sont pas traduits.

1) Effort: Ce serait une tâche énorme de traduire une langue moderne. Prenez Java - ce serait une petite tâche de traduire les quelque 50 mots-clés, mais vous auriez également besoin de traduire la bibliothèque standard complète qui se compose de milliers de classes et de méthodes et de la documentation connexe.

2) Compatibilité: même si le langage de base et la bibliothèque de normes ont été traduits, vous ne pouvez toujours pas utiliser des bibliothèques et du code tiers qui n'ont pas été traduits. Les bibliothèques et le code tiers sont une partie importante de ce qui rend un langage attrayant et utile. Avec les versions traduites, chaque langue devrait démarrer l'écosystème pour chaque traduction à partir de zéro. Tout le monde serait pire.

3) De toute façon, les programmeurs doivent connaître l'anglais. Beaucoup de normes comme HTTP, CSS, HTML utilisent de toute façon la langue anglaise pour les identifiants. Ceux-ci ne peuvent pas être traduits car les mots sont intégrés dans la norme.

Étant donné que les programmeurs doivent de toute façon connaître l'anglais, il n'y aurait que des inconvénients et aucun avantage à créer des versions traduites des langages de programmation.

Cela dit, pour les langues destinées aux programmeurs occasionnels par opposition aux programmeurs professionnels, il pourrait être judicieux de créer des versions traduites. C'est le cas pour VBA et je pense qu'AppleScript existe également dans les versions traduites.

JacquesB
la source
5

Je ne connais pas d'autres langages, sauf peut-être une très ancienne version ésotérique de BASIC, qui a eu tendance à avoir beaucoup de faveurs étranges, donc je m'en tiendrai à la question bonus: pourquoi il y a si peu de langages de programmation traduits:

Je crois que c'est simplement une complexité supplémentaire dont les compilateurs et les implémenteurs de bibliothèques ne voient pas un grand besoin. Voici quelques raisons qui contribuent à mon avis.

  • Vous limitez l'audience de votre code si vous ne vous en tenez pas à un langage "universel". Bien sûr, tout le monde ne connaît pas l'anglais, mais il en va de même pour toutes les langues.
  • Les mots clés à mot unique ne sont pas nécessairement des mots uniques dans toutes les langues, ce qui complique l'analyse. Je n'ai jamais vérifié, mais je peux imaginer qu'il y ait une bonne quantité de casse spéciale pour traiter le type multi-mots unique de c ++ "long long".
  • Si vous commencez à traduire des mots clés, considérerez-vous également les paramètres régionaux et la façon dont les nombres sont formatés? La virgule par rapport à la période comme séparateur décimal par exemple. Ou exiger que les noms allemands soient capitalisés?
  • La grande majorité du texte d'un programme donné sont des variables, des méthodes et des noms de classe, sans parler des commentaires. Bien qu'il existe certainement des bibliothèques écrites dans d'autres langues, avoir à maintenir les traductions du code source de toutes les bibliothèques pour servir tous les utilisateurs serait un gros fardeau pour la plupart des développeurs, sans parler de la complexité supplémentaire des discussions autour de ce code.
  • Les compilateurs devraient comprendre tous les langages implémentés. Peut-être même plusieurs langues dans le même fichier. Un petit exploit pour un ordinateur certes, mais un travail supplémentaire quand même. Peut-être que vous finirez par devoir traiter avec le même mot-clé, ce qui signifie des choses différentes dans différentes langues, ou des termes simplement trop ambigus pour être bien lus.
  • (ok, opiniâtre) La plupart des gens qui ont dû traiter des documents MS Office programmés et formatés dans différentes langues rejetteront sûrement l'idée comme ne valant pas la peine.

Personnellement, j'adorerais que nous puissions travailler avec du code d'une manière plus structurée, dans un éditeur qui comprenait réellement le code tel qu'il est, des instructions, des instructions, etc. qui nous permettraient de faire beaucoup de choses intéressantes , peut-être même prendre en charge la traduction automatique. Pour tous ceux qui se demandent sur quoi je parle, consultez l'image et le navigateur de refactorisation de Smalltalk, et imaginez ce qu'il pourrait devenir s'il avait obtenu plus de traction.

axl
la source
3

Si vous avez un langage défini en termes de "balises symboliques" à un niveau et de "désignateurs de balises de surface" à l'autre, avec des mappages bien définis entre eux, ce serait certainement possible.

Imaginez une langue où vous avez votre if, while... do, switchet tous les autres mots - clés définis ( en quelque sorte) dans la norme, vous pouvez expédier les bibliothèques système dans « le format sous forme de jeton », avec code local écrit sous la forme non sous forme de jeton. Ensuite, le compilateur réel fonctionne sur la couche à jetons et que les choses soient bonnes.

Cependant, ce n'est pas toute l'histoire. Vous vous retrouveriez toujours dans des situations où vous avez des bibliothèques obtenues d'un endroit qui n'est pas "la bibliothèque standard", interfacé par des noms de fonction. Et ceux-ci n'auraient pas de mappage canonique entre les langues et nécessiteraient soit une traduction dans une langue locale pour être bien utilisable, soit vous vous retrouvez avec un méli-mélo de langues dans votre code source.

Vatine
la source
2

Toutes les réponses données sont d'excellentes réponses, mais je donnerai quand même mes deux cents.

Au début de l'informatique , la domination technique, culturelle et économique des États-Unis et du Royaume-Uni rendait logique la création des langues les plus réussies à l'aide de mots anglais.

Plus tard, à mesure que le logiciel devenait une industrie , il devenait également une entreprise mondiale. Ce n'est pas un secret qu'il y a moins de programmeurs que nécessaire, alors les éditeurs de logiciels, et en particulier les entreprises qui définissent l'industrie comme IBM, ont commencé à embaucher des programmeurs de toutes les régions du monde: Russie, Pakistan, Inde, France, Allemagne, Israël, etc. principalement pour programmer dans des langues déjà réussies à l'échelle mondiale qui étaient déjà basées sur l'anglais et créant également de nouvelles langues, et pour cette source disparate de programmeurs, la langue commune déjà existante était une meilleure solution que toute autre langue.

Plus récemment, le mouvement des logiciels libres et open source a fait de la création de logiciels une entreprise encore plus mondiale qu'auparavant. Certains projets de logiciels ouverts, y compris certaines plates-formes de programmation, langages et frameworks sont d'énormes projets impliquant des centaines de collaborateurs.

Quelle langue une personne d'Israël utiliserait-elle pour collaborer avec une personne du Sri Lanka? Très probablement, ils ne parlent pas ou ne lisent même pas la langue maternelle de l'autre. L'anglais vient donc à la rescousse.

Qu'on le veuille ou non, l' anglais est la langue des efforts mondiaux . Et pas parce que l'Amérique le pousse mais parce que le monde le tire.

Paraphrasant Jay Walker :

Votre langue maternelle est celle que vous utilisez le plus quotidiennement et sera toujours au centre de votre cœur et de votre cerveau, mais avec l'anglais, vous faites partie d'une conversation plus large.

Voir la vidéo, "English Mania" .

Conclusion:

Les langages de programmation qui utilisent des langages différents continueront d'exister et continueront d'être inventés (comme Scratch basé sur des jetons graphiques), mais au moins dans un avenir prévisible, ils seront relativement peu nombreux.

Tulains Córdova
la source
-2

L'anglais est également une langue "sans accent", vous n'avez pas non plus de caractère étrange qui nécessite un encodage différent de l'ASCII. Je suis italien et parfois je rencontre des erreurs de codage si j'utilise une disposition de clavier italienne ou des caractères accentués comme àèéìòù. De plus "else" est traduit en "altrimenti", "en" est "dentro" ... ce serait frustrant.

JoulinRouge
la source
9
C'est un raisonnement circulaire - ASCII est devenu le jeu de caractères standard parce que l'anglais est la lingua franca de l'informatique.
JacquesB