{"meta":{"title":"Traduire du code vers un autre langage de programmation","intro":"Discussion avec Copilot peut vous aider à réécrire du code pour effectuer les mêmes opérations, mais dans un autre langage de programmation.","product":"GitHub Copilot","breadcrumbs":[{"href":"/fr/copilot","title":"GitHub Copilot"},{"href":"/fr/copilot/tutorials","title":"Tutoriels"},{"href":"/fr/copilot/tutorials/copilot-chat-cookbook","title":"Cookbook GitHub Copilot Chat"},{"href":"/fr/copilot/tutorials/copilot-chat-cookbook/refactor-code","title":"Refactoriser le code"},{"href":"/fr/copilot/tutorials/copilot-chat-cookbook/refactor-code/translate-code","title":"Traduire du code"}],"documentType":"article"},"body":"# Traduire du code vers un autre langage de programmation\n\nDiscussion avec Copilot peut vous aider à réécrire du code pour effectuer les mêmes opérations, mais dans un autre langage de programmation.\n\nIl existe de nombreuses raisons pour lesquelles vous pourriez vouloir déplacer du code d'un langage de programmation à un autre. Chaque langage de programmation a ses propres forces et faiblesses, et vous pouvez vouloir tirer parti de fonctionnalités disponibles dans un autre langage. Par exemple, vous pouvez vouloir déplacer du code vers un langage offrant de meilleures performances, ou qui utilise un typage fort pour aider à éviter les bugs.\n\nPour faciliter la maintenance du code, vous pouvez vouloir déplacer du code vers un langage plus largement utilisé dans votre organisation. Par exemple, si peu de personnes dans votre organisation connaissent un langage plus ancien comme Perl, vous pouvez vouloir déplacer tout code Perl encore utilisé vers un langage plus couramment utilisé comme Python ou JavaScript.\n\nCopilot peut vous aider à traduire du code d'un langage à un autre. Traduire un fichier autonome, comme un script, est simple. Ce processus est décrit dans cet article.\n\nLa traduction d’un project contenant plusieurs fichiers est un processus plus complexe et est décrite dans [Utilisation de GitHub Copilot pour migrer un project vers un autre langage de programmation](/fr/copilot/tutorials/using-copilot-to-migrate-a-project).\n\n## Exemple de scénario\n\nLe script Perl suivant invite l'utilisateur à entrer le chemin d'accès à un fichier texte. Il vérifie ce que l'utilisateur saisit et, si un fichier texte est trouvé à ce chemin, il affiche un décompte des mots et des caractères pour le contenu du fichier.\n\n```perl copy id=perl-script\n#!/usr/bin/perl\nuse strict;\nuse warnings;\nuse File::Spec;\nuse File::Basename;\n\nprint \"Please enter the path to a local text file: \";\nchomp(my $file_path = <STDIN>);\n\nif ($file_path =~ /[`|;&<>(){}\\[\\]]/ || !File::Spec->file_name_is_absolute($file_path) && dirname($file_path) ne '.') {\n    die \"Invalid file path. Please provide a valid path.\\n\";\n}\nif (!-e $file_path) {\n    die \"File not found. Please provide an existing file path.\\n\";\n}\n\nopen(my $fh, '<', $file_path) or die \"Could not open file '$file_path': $!\\n\";\n\nmy $is_binary = 0;\nwhile (read($fh, my $buffer, 1024)) {\n    if ($buffer =~ /[^\\x09\\x0A\\x0D\\x20-\\x7E]/) {\n        $is_binary = 1;\n        last;\n    }\n}\nclose($fh);\n\nif ($is_binary) {\n    die \"The file '$file_path' is a binary file. Please provide a text file.\\n\";\n}\n\nopen($fh, '<', $file_path) or die \"Could not open file '$file_path': $!\\n\";\nmy $content = do { local $/; <$fh> };\nclose($fh);\n\nmy $word_count = scalar(split /\\s+/, $content);\nmy $char_count = length($content);\n\nprint \"The file '$file_path' contains $word_count words and $char_count characters.\\n\";\n```\n\n## Exemples d’invite\n\n```copilot copy prompt ref=perl-script\nTell me how I can convert this Perl script to Typescript. The functionality and output of the new script should be exactly the same as the existing one. Also tell me how to run the new file using Node.\n```\n\n## Exemple de réponse\n\nCopilot génère le code Typescript suivant.\n\n> \\[!NOTE] Les réponses de Discussion avec Copilot sont non déterministes, vous pouvez donc obtenir une réponse différente de celle présentée ici.\n\n```typescript copy\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as readline from 'readline';\n\nconst rl = readline.createInterface({\n    input: process.stdin,\n    output: process.stdout\n});\n\nrl.question('Please enter the path to a local text file: ', (filePath) => {\n    rl.close();\n\n    if (/[`|;&<>(){}\\[\\]]/.test(filePath) || (!path.isAbsolute(filePath) && path.dirname(filePath) !== '.')) {\n        console.error('Invalid file path. Please provide a valid path.');\n        process.exit(1);\n    }\n\n    if (!fs.existsSync(filePath)) {\n        console.error('File not found. Please provide an existing file path.');\n        process.exit(1);\n    }\n\n    const fileBuffer = fs.readFileSync(filePath);\n    const isBinary = fileBuffer.some(byte => byte < 9 || (byte > 13 && byte < 32) || byte > 126);\n\n    if (isBinary) {\n        console.error(`The file '${filePath}' is a binary file. Please provide a text file.`);\n        process.exit(1);\n    }\n\n    const content = fileBuffer.toString('utf-8');\n    const wordCount = content.split(/\\s+/).length;\n    const charCount = content.length;\n\n    console.log(`The file '${filePath}' contains ${wordCount} words and ${charCount} characters.`);\n});\n```\n\nEnregistrez ce fichier en tant que `wordcount.ts`.\n\nCopilot explique ensuite comment exécuter le nouveau fichier à l'aide de Node.\n\n1. ```\n          **Installer Node.js :** Si vous ne l'avez pas déjà, téléchargez et installez Node.js depuis le site web officiel : https://nodejs.org/.\n   ```\n\n2. ```\n          **Installer TypeScript :**\n   ```\n\n   ```shell\n   npm install -g typescript\n   ```\n\n3. ```\n          **Compiler le code TypeScript :**\n   ```\n\n   ```shell\n   tsc wordcount.ts\n   ```\n\n   Cela créera un fichier `wordcount.js` dans le même répertoire.\n\n4. ```\n          **Exécuter le fichier JavaScript avec Node.js :**\n   ```\n\n   ```shell\n   node wordcount.js\n   ```\n\n## Pour aller plus loin\n\n* [Ingénierie rapide pour GitHub Copilot Chat](/fr/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Meilleures pratiques pour l’utilisation de GitHub Copilot](/fr/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}