Skip to main content

Перевод кода на другой язык программирования

Copilot Chat помогает переписать код для выполнения одних и той же операций, но на другом языке программирования.

Существует множество причин, по которым может потребоваться переместить код с одного языка программирования на другой. Каждый язык программирования имеет свои собственные сильные и слабые стороны, и вы можете воспользоваться преимуществами функций, доступных на другом языке. Например, может потребоваться переместить код на язык, который имеет лучшую производительность, или использовать строгую типизацию, чтобы предотвратить ошибки.

Чтобы упростить обслуживание кода, может потребоваться переместить код на язык, который более широко используется в вашей организации. Например, если несколько пользователей в вашей организации знают старый язык, например Perl, может потребоваться переместить любой код Perl, который по-прежнему используется на более часто используемый язык, например Python или JavaScript.

Copilot помогает переводить код с одного языка на другой. Перевод автономного файла, например скрипта, прост. Этот процесс описан в этой статье.

Преобразование проекта, содержащего несколько файлов, является более сложным процессом и описывается в Использование Copilot для переноса проекта на другой язык программирования.

Пример сценария

Следующий скрипт Perl предложит пользователю ввести путь к текстовому файлу. Он проверяет, что пользователь вводит, и если текстовый файл найден по указанному пути, он выводит число слов и число символов для содержимого файла.

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

Пример запроса

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.

Пример отклика

Copilot создает следующий код Typescript.

Note

Ответы Copilot Chat являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.

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

Сохраните этот файл как wordcount.ts.

Copilot переходит к объясните, как запустить новый файл с помощью Node.

  1. Установите Node.js: если у вас еще нет, скачайте и установите Node.js с официального веб-сайта: https://nodejs.org/

  2. Установка TypeScript:

    npm install -g typescript
    
  3. Скомпилируйте код TypeScript:

    tsc wordcount.ts
    

    Будет создан wordcount.js файл в том же каталоге.

  4. Запустите файл JavaScript с Node.js:

    node wordcount.js
    

Дополнительные материалы