Skip to main content

Traducción de código a un lenguaje de programación diferente

Copilot Chat puede ayudarte a reescribir el código para realizar las mismas operaciones, pero en un lenguaje de programación diferente.

Hay muchas razones por las que es posible que quieras mover código de un lenguaje de programación a otro. Cada lenguaje de programación tiene sus propias ventajas y debilidades, y es posible que quieras aprovechar las características que están disponibles en otro lenguaje. Por ejemplo, es posible que quieras mover código a un lenguaje que tenga un mejor rendimiento o que use escritura segura para ayudar a evitar errores.

Para facilitar el mantenimiento del código, es posible que quieras mover código a un lenguaje que se use más ampliamente en tu organización. Por ejemplo, si pocas personas de tu organización conocen un lenguaje más antiguo, como Perl, es posible que quieras mover cualquier código de Perl que todavía esté en uso para un lenguaje más usado, como Python o JavaScript.

Copilot puede ayudarte a traducir código de un lenguaje a otro. Traducir un archivo independiente, como un script, es sencillo. Este proceso se describe en este artículo.

Traducir un proyecto que contiene varios archivos es un proceso más complejo y se describe en Uso de Copilot para migrar un proyecto a otro lenguaje de programación.

Escenario de ejemplo

El siguiente script de Perl solicita al usuario que escriba la ruta de acceso a un archivo de texto. Comprueba lo que el usuario escribe y si se encuentra un archivo de texto en esa ruta de acceso, genera un recuento de palabras y un recuento de caracteres para el contenido del archivo.

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

Ejemplos de indicaciones

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.

Respuesta de ejemplo

Copilot genera el siguiente código Typescript.

Note

Las respuestas de Copilot Chat no son deterministas, por lo que puedes obtener una respuesta diferente a la aquí mostrada.

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

Guarde el archivo como wordcount.ts.

Copilot pasa a explicar cómo ejecutar el nuevo archivo mediante Node.

  1. Instala Node.js: si aún no lo tienes, descarga e instala Node.js desde el sitio web oficial: https://nodejs.org/.

  2. Instala TypeScript:

    npm install -g typescript
    
  3. Compila el código TypeScript:

    tsc wordcount.ts
    

    Esto creará un archivo wordcount.js en el mismo directorio.

  4. Ejecuta el archivo JavaScript con Node.js:

    node wordcount.js
    

Información adicional