Codage dans d’autres langues (parlées)

C’est quelque chose que je me suis toujours demandé, et je ne trouve aucune mention de cela en ligne. Quand un magasin du Japon, par exemple, écrit du code, pourrais-je le lire en anglais? Ou les langues, comme C, PHP, n’importe quoi, ont-elles des traductions japonaises écrites?

Je suppose que ce que je demande, c’est si chaque codeur du monde connaît suffisamment d’anglais pour utiliser exactement les mêmes mots réservés que moi?

Serait ce code:

If (i < size){ switch case 1: print "hi there" default: print "no, thank you" } else { print "yes, thank you" } 

afficher exactement la même chose que je vois en anglais, ou est-ce qu’une autre personne non anglophone verrait les mots “if”, “switch”, “case”, “default”, “print” et ” sinon “dans leur langue maternelle?

EDIT – oui, c’est grave. Je ne savais pas si différentes localisations d’une langue avaient des mots-clés différents. ou s’il y a même des localisations différentes.

Si j’ai bien compris, la question est la suivante: “Chaque codeur du monde connaît-il suffisamment d’anglais pour utiliser exactement les mêmes mots réservés que moi?”

Eh bien, l’anglais n’est pas le sujet ici, mais le langage de programmation réservé aux mots. Je veux dire, quand j’ai commencé il y a environ 10 ans, je n’avais aucune idée de l’anglais, et pourtant je pouvais programmer des choses simples en apprenant le langage de programmation, même si je ne savais pas ce qu’ils voulaient dire (en anglais). En fait, cela m’a aidé à apprendre l’anglais.

Par exemple. Je sais faire une iteración (itération bien sur) j’ai dû écrire:

  for( i = 0 ; i < 100 ; i++ ) {} 

Pour moi le "pour", le ";" et le "++" où simples mots ou symboles étrangers. Plus tard, j'apprends que "pour" signifiait "para" et "while" signifiait "mientras", etc. mais entre-temps je n'avais pas besoin de connaître l'anglais, mais dans mon cas, j'avais besoin de connaître "C".

Bien sûr, lorsque je devais apprendre plus de choses, je devais apprendre l'anglais, car la documentation est écrite dans cette langue.

Donc, la réponse est: non, je ne vois pas si, quand, etc. dans ma langue maternelle. Je les vois en anglais, mais ils ne voulaient pas dire autre chose pour le langage de programmation.

Est-ce comme déclaration de commutateur dans bash: case .. esac. Qu'est-ce que "esac" ... pour moi la fin de l'instruction switch dans bash.

Je suppose que c'est ce qu'on appelle "l'abstraction"

J’ai du mal à trouver des références, mais cela me rappelle trois histoires.

Un pirate Lisp défend des fonctions sans signification comme “cdr” et “car” en les comparant à la programmation dans votre langue non native: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg01171. html

Quand Yukihiro Matsumoto (“Matz”) a commencé à développer Ruby, il a utilisé des mots clés anglais même s’il écrivait toute la documentation en japonais! . Il n’y avait pas de documentation en anglais pour Ruby depuis quelques années et très peu d’Américains utilisaient la langue. Mais maintenant, c’est une langue de classe mondiale, et le fait qu’elle soit née au Japon n’a qu’un intérêt historique. Si la langue utilisait des mots-clés en hiragana, cela aurait eu beaucoup plus de mal à gagner en popularité.

J’ai lu un essai une fois – peut-être que quelqu’un d’autre peut le trouver, Google ne sert à rien aujourd’hui – qui suggérait que la traduction des mots-clés était erronée parce que les mots ne sont pas en fait anglais. Non seulement (pour utiliser les exemples ci-dessus), para et verser n’ont pas tout à fait le sens exact que pour a en anglais, pour les non-programmeurs, l’expression “pour la boucle” est stupide. Même les Américains doivent apprendre un nouveau sens. Donc, traduire la signification superficielle des mots dans une autre langue revient plus à faire un jeu de langage multilingue plutôt qu’à être réellement utile.

Je n’ai vraiment pas trop pensé à la programmation en japonais auparavant, mais nous y voilà, en utilisant l’exemple de code de la question.

En utilisant uniquement les instructions de langue en japonais avec les variables en anglais:

 // In Japanese, it makes more sense to put the keywords/modifiers as // postfix expressions rather than prefix expressions. (i < size)か { (l[i])は { 1だ: 「もしもし。」を書く;省略時値: 「いいえ、いいですよ。」を書く; } } ない { 「はい、ありがとうございます。」を書く; } 

En langage Java, certaines méthodes doivent être nommées (au moins partiellement) en anglais à cause de la convention JavaBeans.

Cette convention exige qu’une propriété X soit établie via une paire de méthodes getX () et setX (). Ici, au Canada français, où certains développeurs sont obligés de coder en français, cela mène à la parodie suivante:

 interface Foo { Color getCouleur(); void setCouleur(Color couleur); } 

Comme de nombreuses personnes l’ont déjà fait remarquer, dans la plupart des langages de programmation, il vous suffit d’apprendre quelques mots clés, donc peu importe qu’ils soient en anglais (ou une langue autre que la vôtre). C’est juste un symbole que vous associez à une construction. Par exemple, dans VB, vous avez “THEN”, ce qui dans de nombreux langages de style C serait “{” et cela ne fait pas une grande différence en termes de lisibilité (enfin, du moins c’est ce que je vois, étant un non-anglais). locuteur natif).

Mais là où les choses peuvent parfois devenir velues, et où le choix du langage (naturel) est important, il faut nommer les identificateurs. Si les noms des variables, fonctions, classes, etc. n’ont pas de nom significatif en raison d’une barrière linguistique, il peut être difficile de suivre le code le plus simple.

Je me souviens que quelqu’un m’a donné un petit extrait d’actionscript sur un blog. Les noms étaient en allemand et comme je ne parle pas un mot de cette langue, des choses auraient pu s’appeler également var_123, var_562 ou func_333 (et cela aurait probablement été plus facile pour moi de me souvenir des noms ou au moins d’avoir un chance de les épeler correctement sans copier et coller). Comme il s’agissait d’un extrait de code court et autonome, j’ai utilisé un traducteur en ligne pour donner à ces variables et à ces fonctions des noms significatifs dans ma langue maternelle (l’espagnol) et après cela, tout était clair. Le fait est que le code était en fait simple, mais je n’ai pu que le comprendre sans trop d’effort supplémentaire (inutile) au moment même où je surmontais la barrière de la langue.

Depuis lors, je suis passé à l’utilisation de l’anglais pour nommer les identificateurs. Que vous le vouliez ou non, c’est le “koine” pour la programmation, l’ingénierie et la technique en général. La plupart des API sont écrites en anglais, de même que la plupart des documents (et les meilleures ressources que vous pouvez trouver sont probablement également en anglais). En passant, cela garde votre code plus cohérent avec le code avec lequel vous êtes susceptible d’interagir, et je pense qu’il a tendance à être plus compact et succinct que d’autres langages comme l’espagnol (ce qui serait autrement mon choix naturel).

Bien sûr, si vous ne comprenez pas au moins un peu l’anglais, le problème rest le même, ce n’est donc pas une solution parfaite. Mais, étant donné le nombre de développeurs de nombreux pays, il est probable que la langue commune pour communiquer (par le biais du code et, bien sûr, d’autres moyens) sera l’anglais. Donc, choisir l’anglais est peut-être la meilleure option, même si ce n’est pas la solution parfaite à ce problème.

Le langage de programmation définit les mots-clés et les noms de classe standard, et il est recommandé de donner aux utilisateurs des types, des variables et des fonctions définis en anglais (en tant que non-locuteur, je peux le dire ;-).

Donc, si tout va bien, vous pourrez lire le code.

Cependant, des langages tels que Java et Perl permettent de définir l’ensemble des identifiants Unicode, donc si quelqu’un écrit ses noms de classe dans Kanji, vous aurez probablement un problème.

Mise à jour: Pour Perl, il existe un module blague qui vous permet d’écrire Perl en latin. Mais c’est vraiment ça, une blague. Personne n’utilise les choses comme ça sérieusement.

Deuxième mise à jour: L’idée de langages de programmation localisés n’est pas si ridicule. Le langage macro d’Excel est localisé, mais heureusement, il est stocké dans une langue canonique (anglais) dans le fichier, de sorte que la localisation n’est qu’une couche par-dessus la normale. De telles choses n’ont de sens que pour les petits “programmes”, les “vrais” programmes qu’il est difficile de maintenir.

En fait, il existe des langages de programmation non anglophones (Wikipedia)

Je suis norvégien mais j’ai toujours utilisé l’anglais pour tout le code, à l’exception de la sortie (en ignorant un code idiot de l’école). En fait, j’écris généralement tout en anglais et le traduit ensuite dans ma langue maternelle en utilisant gettext (ou quelque chose du genre).

Je suis britannique et un problème que nous rencontrons souvent est l’affrontement entre les Américains et les Britanniques. Cela se produit souvent avec des termes liés à la programmation tels que Initialise () ou Initialize (), Analyze () ou Analyze (), etc. Cela peut (a) causer des problèmes lors du remplacement des méthodes et est parfois difficile à identifier.

Étant donné que le framework (dans notre cas C #) a été conçu par des Américains, nous avons constaté qu’il est préférable d’être cohérent et d’utiliser des orthographes américaines. Nous adoptons même la couleur.

Nous avons un mélange de nationalités dans nos équipes de développement et la plupart des non-britanniques ont tendance à s’inscrire naturellement dans l’orthographe américaine.

AppleScript était autrefois disponible en dialectes français et japonais. Je ne sais pas pourquoi il a été retiré.

En prenant cela au prochain niveau, qu’en est-il de la possibilité de substituer des symboles?

Après avoir vu des langages comme Brainf ** k et Whitespace, j’ai pensé faire un langage comme celui-ci: il serait identique à C sauf que vous utiliseriez des accolades fermantes pour ouvrir, des accolades pour fermer, pour échanger les significations de + et -, * et / ,; et:,> et <, etc.

Le concept n’est rien de plus qu’un compilateur C altéré. Mais, comme penser différemment les mots-clés, il est difficile de repenser certaines hypothèses de base si vous n’avez jamais pensé à de telles choses auparavant. Ex:

 int foo)int i, char c( } int six = 2 / 3: int two = six + 4: if )i > 0( } printf)"i is negative"(: { { 

Je suis dans une équipe française qui développe un logiciel en C #. Bien que les mots-clés du langage de programmation soient apparemment en anglais, j’imagine que vous auriez beaucoup de difficulté à lire le code car tous les noms de fonctions, variables, commentaires de code, tables et colonnes de firebase database, spécifications techniques, protocoles, etc. Le français, y compris les jolis caractères accentués ç, é, è, ù, etc. Je ne suis même pas certain que le système fonctionnerait ailleurs en raison de bogues de localisation, par exemple en utilisant la virgule comme séparateur décimal par défaut.

Sinon, WinDev est une plateforme de programmation populaire en France, et son langage de programmation WLangage a des mots-clés en français ou en anglais, voir et exemple ici: texte du lien

J’ai vu VBA traduit en commandes de type espagnol. C’est l’une des choses les plus laides jamais vues. J’aurais honte d’avoir quelque chose comme ça sur mon ordinateur.

PD: je pense que l’espagnol est une langue beaucoup plus agréable que l’anglais; mais traduire est incorrect

Eh bien, comme d’autres l’ont souligné, les mots-clés et les appels système restraient probablement en anglais.

Cependant, la compréhension des mots-clés du langage ne représente qu’une petite partie de la compréhension du code. Les noms de variables, les noms de fonctions et les commentaires risquent d’être dans la langue maternelle de l’auteur.

Edit : Je viens de faire un retour sur ma jeunesse où je suis allé dans les tables de mapping de mon BASIC intégré TRS-80 pour passer les mots-clés en français. Je pouvais changer tous les mots-clés mais je ne pouvais en augmenter la taille. Conçu pour des programmes amusants.

Ne te moque pas de ça. Il y a quelques années, Microsoft avait annoncé G # (German Sharp) – C # avec des mots-clés et une API allemands. Bien sûr, c’était une blague April Fools, mais le site entier à ce sujet semblait si réel et professionnel (et était sur microsoft.com). Effrayant.

Au travail, nous utilisons deux systèmes de bus de terrain, tous deux développés dans des pays germanophones, qui ont un mélange effrayant d’allemand et d’anglais pour les identifiants, y compris de beaux faux amis. C’est le bordel.

Non, les mots-clés et les identifiants anglais conviennent. Bien que certains pourraient argumenter si cela devrait être couleur ou couleur 🙂

Dans plusieurs projets VBA sur lesquels j’ai travaillé (oui, très tôt dans ma carrière), nous avons dû détecter la version du bureau installée sur la machine de l’utilisateur et modifier en conséquence les formules utilisées dans les feuilles de calcul.

Comme je programme en portugais “SUM” devrait être traduit en “SOMA” et ainsi de suite. Je ne peux tout simplement pas imaginer le travail nécessaire pour que cela se produise en plusieurs langues. Quelqu’un d’autre a-t-il souffert de ce problème?

La seule langue que j’ai vue localisée est Excel avec ses macros. Si vous essayez d’append une colonne en utilisant une version italienne d’Office, vous devez écrire SOMMA(A1:A10) et non SUM. C’est une honte.

À propos, juste parce que c’est amusant, voici comment votre code devrait ressembler avec des mots-clés italiens:

 se (i < size){ commuta caso 1: stampa "hi there" normalmente: stampa "no, thank you" } altrimenti { stampa "yes, thank you" } 

Certaines langues ont des mots-clés traduits. Des formules Excel, par exemple. Si vous écrivez des calculs dans une feuille de calcul, cela sera dans votre langue.

Heureusement, ce n’est pas une pratique générale, et même les non-anglophones comme moi remercient Dieu qu’il existe un langage standard pour les mots-clés:

  • c’est plus facile de partager votre travail.
  • cela empêche la documentation de devenir un cauchemar plus important qu’elle ne l’est déjà.
  • Les mots et les phrases en anglais sont généralement courts et syntaxiquement pragmatiques. En littérature, les langues latines sont beaucoup plus belles, mais pour les trucs techniques, les roches anglaises.

Et où s’arrêter? Pouvez-vous imaginer un C en grec ancien?

Les mots-clés doivent restr dans une langue, et bien, cela a commencé avec l’anglais, laissez-le restr ainsi. Cela aurait pu être pire (langue asiatique?). Nous devons donc écrire des méthodes et des commentaires en anglais. Ok, plus de travail pour nous, mais au moins la base de code internationale rest cohérente.

Il y a cependant un cas où l’utilisation de noms et de commentaires de méthodes en langue maternelle peut être une bonne pratique: dans un pays du tiers monde. Je vais au Sénégal dans quelques mois pour gérer un projet Django. Le Sénégal a un taux d’analphabétisme énorme, et il est donc déjà formidable qu’ils déploient des efforts pour améliorer leurs connaissances en matière de programmation. Le français est la langue maternelle ici, il serait donc inefficace de les forcer à apprendre l’informatique ET une nouvelle langue en même temps.

BTW, ce serait votre code avec des mots-clés français:

 Si (i < taille) { cas par cas : cas 1: afficher "salut" défaut: afficher "non merci" } sinon { afficher "oui, merci" } 

La traduction des mots-clés n’a rien à voir avec la traduction des chaînes. Bien sûr, nous avons "hi, there" traduit dans notre langue. Les codeurs européens ont même tendance à utiliser I18N bien plus que les Américains, car leur service peut atteindre un public plus large.

De manière générale, la plupart des programmeurs s’adaptent à la forme anglaise. J’ai appris à programmer quand j’avais 7 ans et je ne parlais que l’hébreu (ce qui est de droite à gauche) et sans anglais, ce qui en fait une expérience passionnante.

Le problème que vous rencontrez habituellement est la documentation, les variables et les noms de fonctions. J’ai vu ma part de variables dans d’autres langues en utilisant l’alphabet anglais.

La seule langue que je connaisse qui a été traduite était un bon vieux logo (encore incroyable à ce jour).

Quand j’étais enfant, nous sums allés en France et dans un musée où nous sums allés, je me souviens avoir trouvé un écran qui vous montrait comment écrire des programmes informatiques. Le langage était une sorte de variante BASIC et je m’en souviens distinctement en utilisant POUR au lieu de FOR, et ainsi de suite. J’avais 7 ans et je venais juste d’apprendre le BASIC, et il me semblait tout à fait naturel que les Français aient leur propre dialecte !!

Je suppose que c’était peut-être le LSE que j’ai vu?

Le langage de script du réalisateur est localisé. Les scripts (et les données!) Sont stockés sous une forme terrible “sorta canonique”.

Donc, si vous écrivez un script dans la version américaine, ouvrez-le ensuite dans la version française, tous les mots-clés et les noms de fonctions intégrés seront en français. Mais pourquoi ça ne marche pas?! Aha! La version française utilise “,” comme point décimal, et donc pour éviter les ambiguïtés “” pour séparer les arguments de fonction – où la version américaine utilise “.” et “,” respectivement. Cette conversion vous devez faire vous-même.

Vous travaillez donc avec une interface d’édition de script incroyablement mauvaise (vous ne pouvez pas écrire de scripts sous forme de fichiers texte) pour résoudre tous ces problèmes. Ça marche! Génial! Les résultats sont tous faux! Oh non! Aha! La date du 7 janvier 2004 que vous avez entrée dans la version américaine est interprétée comme étant le 1 er juillet 2004; Est-ce que je vous plaisante ? Non.

[Note: Filemaker 8 et 9 peuvent être sains – je n’ai jamais travaillé avec 3 – 7.]

Votre question est intéressante en ce qui concerne Perl car sa syntaxe est conçue pour suivre un langage naturel (anglais). Je me demande si cela rend les choses plus difficiles pour les non-anglophones …

Bien sûr, Perl et Perlers refusent de jouer selon les règles conventionnelles. Le scientifique fou Damian Conway a écrit le module Lingua :: Romana :: Perligata qui utilise la magie noire des filtres sources pour vous permettre d’écrire Perl en latin!

Ici, en Australie, nous devons encore épeler la couleur comme la couleur . Cependant, je trouve cela ennuyeux quand d’autres développeurs (australiens) travaillant sur un projet australien décident que les noms de variables internes doivent être orthographiés à l’américaine.

À mon humble avis, il serait inutile d’utiliser une syntaxe de langage. Cela ne ferait que tuer toute sorte de portabilité.

La seule exception concerne les langues éducatives, telles que LOGO. Ils ont été conçus pour faciliter l’apprentissage, de sorte que la portabilité n’est pas un problème.

Je lis beaucoup de code, mais le problème concerne toujours les noms et les commentaires des variables / méthodes. S’ils commentent leur code dans leur propre langue, en utilisant une langue caractères spéciaux comme le japonais ou le cyrillique, nous sums en difficulté! mais les mots-clés, je pense qu’ils restront en anglais comme ils sont.

en italien

 se (i < dimensione){ scegli caso 1: stampa "ciao" mancante: stampa "no, grazie" } altrimenti { stampa "sì, grazie" } 

Pour confirmer les inquiétudes d'une affiche précédente, j'ai vu un code Fortran avec une macro pour traduire tous les mots clés de l'anglais vers le français. Permettez-moi de ne pas continuer là-dessus.

Je devais aussi travailler avec un code contenant simultanément des identifiants en italien, allemand, anglais et français, non seulement parce qu'il était développé dans de nombreux endroits, mais aussi parce que le développeur principal pensait que c'était amusant et ne le dupliquait pas ( bien sûr, avec une routine de 2000 lignes de long ....)

Je pense que WordBasic était localisé. WordBasic a été utilisé pour écrire des macros pour dans Word avant l’utilisation de VBA.

Si je m’en souviens bien, seul WordBasic écrit dans la version anglaise s’exécutera sur toutes les versions localisées. Si vous écrivez une version néerlandaise, vous ne pouvez l’exécuter que sur un mot néerlandais.