Skip to main content

Traduzindo código para uma linguagem de programação diferente

O Copilot Chat pode ajudar você a reescrever código para executar as mesmas operações, mas em uma linguagem de programação diferente.

Há muitos motivos pelos quais talvez você queira mover o código de uma linguagem de programação para outra. Cada linguagem de programação tem os próprios pontos fortes e fracos, e talvez você queira aproveitar os recursos disponíveis em outra linguagem. Por exemplo, talvez você queira mover o código para uma linguagem que tenha melhor desempenho ou que use tipificação forte para ajudar a evitar bugs.

Para facilitar a manutenção do código, convém mover o código para uma linguagem mais amplamente usada em sua organização. Por exemplo, se poucas pessoas na organização conhecem uma linguagem mais antiga, como Perl, talvez você queira mover o código Perl que ainda esteja em uso para uma linguagem mais usada, como Python ou JavaScript.

O Copilot pode ajudar você a traduzir código de uma linguagem para outra. Traduzir um arquivo autônomo, como um script, é simples. Esse processo é descrito neste artigo.

Traduzir um projeto que contém vários arquivos é um processo mais complexo, que é descrito em Usando o Copilot para migrar um projeto para outra linguagem de programação.

Cenário de exemplo

O script Perl a seguir solicita que o usuário insira o caminho para um arquivo de texto. Ele verifica o que o usuário insere e, se um arquivo de texto é encontrado nesse caminho, gera uma contagem de palavras e uma contagem de caracteres para o conteúdo do arquivo.

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";

Solicitação de exemplo

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.

Exemplo de resposta

O Copilot gera o código TypeScript a seguir.

Note

Respostas do Copilot Chat são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.

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.`);
});

Salve este arquivo como wordcount.ts.

O Copilot explica como executar o novo arquivo usando Node.

  1. Instalar o Node.js: se você ainda não o tiver, baixe e instale o Node.js no site oficial: https://nodejs.org/.

  2. Instale o TypeScript:

    npm install -g typescript
    
  3. Compile o código TypeScript:

    tsc wordcount.ts
    

    Isso criará um arquivo wordcount.js no mesmo diretório.

  4. Execute o arquivo JavaScript com Node.js:

    node wordcount.js
    

Leitura adicional