Vraiment multilingue langages de programmation?

je sais que la plupart des langues prennent en charge plusieurs langues, mais toutes les langues que j'ai vues ont toujours été plus ou moins centrées sur les États-Unis. Par cela, j'entends les mots clés, les fonctions de bibliothèque standard,etc. tous ont des noms anglais. Donc, en tant que programmeur, vous avez encore vraiment besoin de savoir au moins un peu d'anglais pour en comprendre le sens.

y a-t-il des langues réellement "multilingues" avec prise en charge des mots-clés de langue et autres dans plusieurs langues?

12
demandé sur Eric Petroelje 2009-03-20 22:55:13

11 réponses

c'est généralement une idée horrible, comme quiconque a travaillé dans un IDE localisé peut en témoigner. Les programmeurs comptent beaucoup sur le fait d'avoir un vocabulaire commun. Lorsque le compilateur me donne l'erreur "missing type specifier-int assumed", je peux partager ce message d'erreur exact avec d'autres, par exemple ici sur SO, et il sera familier pour ces autres afin qu'ils puissent me dire ce que cela signifie. Si le compilateur générait des messages d'erreur en Danois, je serais limité à obtenir l'aide des quelques programmeurs qui parlent Danois.

tout à coup, mon vocabulaire n'est plus le même que celui de quelqu'un qui occupe la même position en Allemagne, en France ou au Japon. Nous ne pouvons plus échanger de code, de bogues, de corrections de bogues ou d'idées.

un développeur en Espagne ne pourrait pas utiliser mon code parce qu'il a été littéralement écrit dans une autre langue. Et si j'avais des problèmes avec mon code, d'autres seraient impuissants à le déboguer, parce qu'il ne compilerait même pas sous leurs paramètres de localisation (et si c'était le cas, ce serait toujours illisible pour eux).

en fin de compte, un langage de programmation est un langage . Il peut avoir emprunté quelques mots d'anglais, mais il est n'est pas en anglais, et vous n'avez pas besoin de comprendre l'anglais pour un programme, pas plus que j'ai besoin de comprendre latine pour parler l'anglais (l'anglais emprunte des mots latins).

autant demander pour un anglais multilingue. à quoi bon ? Oui, ça permettrait en théorie aux gens qui ne parlent pas anglais de le faire... parler l'anglais. Ce ne serait pas le même Anglais que tous les autres anglophones parlent, donc ça ne permettrait pas vraiment la communication entre eux.

le mot clé if dans un langage de programmation est et non comme si dans la langue anglaise. Ils veulent dire des choses différentes, même si l'un était de toute évidence inspiré par l'autre.

le mot-clé delegate dans C# ne signifie pas la même chose que "delegate" en anglais. Ni while , return ou "constructeur". Ce ne sont pas des mots anglais, ce sont des mots clés ou des concepts en C++, Java, C#, Python ou tout autre langage de programmation.

29
répondu jalf 2009-03-20 21:38:41

, c'est une mauvaise idée. Si j'écris un programme, Comment puis-je savoir que le nom de la variable que je tape est en fait un mot-clé en Bulgare ou en coréen translitéré? Dois-je traiter avec des milliers de mots-clés, ou Ai-je des problèmes à combiner deux routines écrites par mes collègues suédois et égyptiens?

Viens de réaliser que la programmation des mots-clés sont en anglais, tout comme la musique des mots-clés sont en italien.

9
répondu David Thornley 2009-03-20 20:12:36

, Cela semble un bon endroit pour commencer: Non-anglais langages de programmation basés sur .

il y en a quelques-uns intéressants, comme Python traduit en chinois .

4
répondu Chad Birch 2009-03-20 20:04:11

, Vous pouvez utiliser le préprocesseur C/C++ pour redéfinir tous les mots - clés, et certaines personnes ont terminé cette. Je l'ai découvert en travaillant comme formateur/mentor pour une entreprise norvégienne. Un certain bright spark avait mis en œuvre aheader qui a traduit tous les mots-clés C en norvégien et a imposé son utilisation. Le personnel norvégien, qui parlait tous un excellent anglais (ou je n'aurais pas gagné ma croûte avec eux), le détestait et il est mort.

j'ai aussi travaillé assez largement aux Pays-bas, et la plupart des programmeurs là semblent programmer en anglais. Les seules personnes que j'ai rencontrées qui résistent à l'hégémonie anglaise dans les langages de programmation sont (cela va sans dire) les Français.

2
répondu 2009-03-20 20:20:56

il y a une zone où un langage localisé peut être utile et utile et il s'agit de DLSs (Domain Specific Languages) qui ont été conçus pour être utilisés par des non-programmeurs. Ces langues peuvent certainement bénéficier d'être localisées puisque les utilisateurs commerciaux de pays non anglophones ne connaissent souvent pas l'anglais aussi bien que les programmeurs.

de tels DSL localisés peuvent s'avérer avantageux pour les programmeurs aussi s'ils traitent avec un grand nombre de termes intraduisibles. Un un système plutôt réussi que j'ai rencontré a été utilisé pour calculer les salaires pour le personnel dans L'armée israélienne. Il utilise une syntaxe basée sur l'hébreu ainsi que des centaines de termes qui ne peuvent être correctement exprimés en hébreu. Dans ce cas particulier, les mots-clés de la logique standard if , then , else , etc. ont été traduits en hébreu et l'éditeur de code entier était droit-à-gauche. Une très grande partie de la logique commerciale est maintenue de cette manière à ce jour et, IMHO, à juste titre.

2
répondu gooli 2009-03-30 18:07:39

il semble que ce serait notoirement difficile, à moins que ce soit un effort communautaire, mais pour certaines langues Je ne vois pas pourquoi vous ne pouvez pas rendre une langue existante multilingue, mais créer des bibliothèques personnalisées qui localisent les bibliothèques standard.

par exemple, en Java, vous pouvez créer

public class HoweverYouSayExampleObjectInYourLanguage extends ExampleObjectName {
  }

et ensuite créer des fonctions / méthodes d'enrubannage avec des noms dans votre langue cible, mais qui appellent essentiellement les méthodes standard existantes

private void HoweverYouSayExampleMethodInYourLanguage(parameters) {
      this.ExampleMethod(parameters);
      // Some error handling code
}

si vous manipulez correctement les erreurs, la pile trace / erreurs référencera toutes les erreurs dans les bibliothèques standards, à moins qu'il ne s'agisse d'une erreur spécifique à l'implémentation de votre bibliothèque de localisation - dans ce cas, cela devrait être signalé via un traitement d'erreur approprié dans la bibliothèque de localisation elle-même.

L'inconvénient serait, comme d'autres personnes l'ont mentionné, le partage de code source. Si nous étions tous sur la même longueur d'onde avec un IDE pour une langue donnée - Je ne vois pas pourquoi vous ne pourriez pas construire un IDE vraiment internationalisé dans lequel le code source que vous voyez sur l'écran n'est pas le vrai code source en soi, mais un rendu local du vrai code source via une certaine forme de mapping.

je vais aller de l'avant et dire que tout ce que je viens de dire est probablement au mieux une bonne idée parce que les noms de fonction ne sont pas aussi importants que la documentation localisée pour les bibliothèques et les API. quelque chose qui, en mon expérience est faite terriblement ou pas du tout pour des langages / contextes de programmation communs.

2
répondu sam 2014-03-26 02:24:33

vous pouvez programmer Perl dans Latin .

0
répondu nxadm 2009-03-20 20:10:22

N'essayez pas de coder dans le langage naturel, c'est inutile. Apprendre la "programmation" de la langue au lieu de .

par exemple, le mot" switch " ne signifiait rien pour moi en anglais, mais c'était une instruction de décider de plusieurs choix.

plus Tard ( quand j'ai appris l'anglais ), j'ai pensé.. Hé, c'est drôle, l'anglais a aussi un mot "switch", tout comme C. ( doh! )

:)

peu importe à quel point votre anglais est bon ou mauvais, vous ne pouvez pas dire à java

importer java.util.* dans mon CD-ROM;

Parce que ce n'est pas une syntaxe valide.

0
répondu OscarRyz 2017-05-23 12:25:21

Qu'en est-il des langues comme APL et J ? Les mots-clés dans APL sont tous des symboles simples; malheureusement, la plupart d'entre eux ne sont pas sur votre clavier, donc J est venu et remplacé la plupart d'entre eux avec des représentations ASCII (composé de plus d'un caractère dans de nombreux cas).

0
répondu Adam Jaskiewicz 2009-03-20 21:51:14

trié!

trié! est bilingue. Il peut comprendre à la fois le code anglais et le code Allemand. À ma connaissance, Triés! est le seul langage de programmation qui peut le faire, dans le monde.

des utiles? C'est une meilleure question.

0
répondu 2009-04-01 06:00:40

dans une large mesure, vous pouvez programmer en prolog dans n'importe quel script unicode (parce que c'est un langage symbolique). Il y a une (minuscule, weeny) attrapes - variables sont signifiés par une lettre romaine capitale initiale dans tous les compilateurs prolog que vous êtes susceptible de rencontrer et vous aurez à redéfinir les built-ins (mais prolog rend cela relativement facile*).

je pense qu'un exemple illustrera ce que je veux dire le mieux:

% un algorithme pour trouver Pâques dates, année donnée (comme premier argument)

復活節( V1, V2, V3) :-
   A 是 (V1 mod 19),
   B 是 V1// 100,
   C 是 V1 mod 100,
   D 是 B // 4,
   E 是 B mod  4,
   F 是 (B + 8) // 25,
   G 是 (B - F + 1) // 3,
   H 是 (19*A + B - D - G + 15 )mod 30,
   I 是 C // 4,
   J 是 C mod  4,
   K 是 (32 + 2*E + 2*I - H - J) mod  7 ,
   L 是 (A + 11*H + 22*K) // 451,
   M 是 (H + K - 7*L + 114) // 31,
   N 是 (H + K - 7*L + 114)mod  31,
   V2 是 M,
   V3 是 N + 1.

/ *

exemple d'essai:

?- End (2013, v2 , v3). V2 = 3 , V3 = 31

i.e. Pâques cette année sera le 31 mars

* /

  • c'est ce que j'ai utilisé pour redéfinir la construire en 'est' opérateur (ne pas tirer sur moi si c'est imparfait):

    : - op(500,xfy,փփ).

    փփ (X,Y):-is(X, Y).

0
répondu Chrissy Flangé Allen 2013-01-28 21:47:48