Skip to main content

Traduction de code vers un autre langage de programmation

Copilot Chat peut vous aider à réécrire du code pour effectuer les mêmes opérations, mais dans un langage de programmation différent.

Il existe de nombreuses raisons pour lesquelles vous souhaiterez peut-être déplacer du code d’un langage de programmation vers un autre. Chaque langage de programmation a ses propres forces et faiblesses, et vous souhaiterez peut-être tirer parti des fonctionnalités disponibles dans un autre langage. Par exemple, vous souhaiterez peut-être déplacer du code vers un langage qui offre de meilleures performances ou qui utilise un typage fort pour empêcher les bogues.

Pour faciliter la maintenance du code, vous souhaiterez peut-être déplacer du code vers un langage plus largement utilisé dans votre organisation. Par exemple, si peu de personnes de votre organisation connaissent un langage plus ancien tel que Perl, vous pouvez déplacer tout code Perl qui est toujours utilisé vers un langage plus couramment utilisé comme Python ou JavaScript.

Copilot peuvent vous aider à traduire du code d’une langue à une autre. La traduction d’un fichier autonome, tel qu’un script, est simple. Ce processus est décrit dans cet article.

La traduction d’un projet contenant plusieurs fichiers est un processus plus complexe qui est décrit dans Utilisation de Copilot pour migrer un projet vers un autre langage de programmation.

Exemple de scénario

Le 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 nombre de mots et un nombre de caractères pour le contenu du fichier.

Perl
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec;
use File::Basename;

print "Please enter the path to a local text file: ";
chomp(my $file_path = <STDIN>);

if ($file_path =~ /[`|;&<>(){}\[\]]/ || !File::Spec->file_name_is_absolute($file_path) && dirname($file_path) ne '.') {
    die "Invalid file path. Please provide a valid path.\n";
}
if (!-e $file_path) {
    die "File not found. Please provide an existing file path.\n";
}

open(my $fh, '<', $file_path) or die "Could not open file '$file_path': $!\n";

my $is_binary = 0;
while (read($fh, my $buffer, 1024)) {
    if ($buffer =~ /[^\x09\x0A\x0D\x20-\x7E]/) {
        $is_binary = 1;
        last;
    }
}
close($fh);

if ($is_binary) {
    die "The file '$file_path' is a binary file. Please provide a text file.\n";
}

open($fh, '<', $file_path) or die "Could not open file '$file_path': $!\n";
my $content = do { local $/; <$fh> };
close($fh);

my $word_count = scalar(split /\s+/, $content);
my $char_count = length($content);

print "The file '$file_path' contains $word_count words and $char_count characters.\n";

Exemples d’invite

Tell 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.

Exemple de réponse

Copilot génère le code Typescript suivant.

Note

Copilot Chat Les réponses ne sont pas déterministes, il est donc possible que vous obteniez une réponse différente de celle présentée ici.

TypeScript
import * as fs from 'fs';
import * as path from 'path';
import * as readline from 'readline';

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('Please enter the path to a local text file: ', (filePath) => {
    rl.close();

    if (/[`|;&<>(){}\[\]]/.test(filePath) || (!path.isAbsolute(filePath) && path.dirname(filePath) !== '.')) {
        console.error('Invalid file path. Please provide a valid path.');
        process.exit(1);
    }

    if (!fs.existsSync(filePath)) {
        console.error('File not found. Please provide an existing file path.');
        process.exit(1);
    }

    const fileBuffer = fs.readFileSync(filePath);
    const isBinary = fileBuffer.some(byte => byte < 9 || (byte > 13 && byte < 32) || byte > 126);

    if (isBinary) {
        console.error(`The file '${filePath}' is a binary file. Please provide a text file.`);
        process.exit(1);
    }

    const content = fileBuffer.toString('utf-8');
    const wordCount = content.split(/\s+/).length;
    const charCount = content.length;

    console.log(`The file '${filePath}' contains ${wordCount} words and ${charCount} characters.`);
});

Enregistrez ce fichier en tant que wordcount.ts.

Copilot explique comment exécuter le nouveau fichier à l’aide de Node.

  1. Installer Node.js : si vous ne l’avez pas déjà, téléchargez et installez Node.js à partir du site web officiel : https://nodejs.org/.

  2. Installer TypeScript :

    npm install -g typescript
    
  3. Compiler le code TypeScript :

    tsc wordcount.ts
    

    Cela crée un fichier wordcount.js dans le même répertoire.

  4. Exécuter le fichier JavaScript avec Node.js :

    node wordcount.js
    

Pour aller plus loin