{"meta":{"title":"Traduzindo código para uma linguagem de programação diferente","intro":"Copilot Chat pode ajudá-lo a reescrever o código para executar as mesmas operações, mas em uma linguagem de programação diferente.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/copilot","title":"GitHub Copilot"},{"href":"/pt/copilot/tutorials","title":"Tutoriais"},{"href":"/pt/copilot/tutorials/copilot-cookbook","title":"Livro de receitas do GitHub Copilot"},{"href":"/pt/copilot/tutorials/copilot-cookbook/refactor-code","title":"Refatorar o código"},{"href":"/pt/copilot/tutorials/copilot-cookbook/refactor-code/translate-code","title":"Traduzir código"}],"documentType":"article"},"body":"# Traduzindo código para uma linguagem de programação diferente\n\nCopilot Chat pode ajudá-lo a reescrever o código para executar as mesmas operações, mas em uma linguagem de programação diferente.\n\nHá 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.\n\nPara 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.\n\nCopilot pode ajudá-lo a traduzir código de um idioma para outro. Traduzir um arquivo autônomo, como um script, é simples. Esse processo é descrito neste artigo.\n\nTraduzir um projeto que contém vários arquivos é um processo mais complexo, que é descrito em [Usando GitHub Copilot para migrar um project para outra linguagem de programação](/pt/copilot/tutorials/migrate-a-project).\n\n## Cenário de exemplo\n\nO 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.\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## Prompt de exemplo\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## Resposta de exemplo\n\nCopilot gera o código Typescript a seguir.\n\n> \\[!NOTE]\n> Copilot Chat as respostas são não determinísticas, portanto, você pode obter uma resposta diferente daquela mostrada aqui.\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\nSalve este arquivo como `wordcount.ts`.\n\nCopilot continua explicando como executar o novo arquivo usando o Node.\n\n1. **Instalar o Node.js:** se você ainda não o tiver, baixe e instale o Node.js no site oficial: <https://nodejs.org/>.\n\n2. **Instale o TypeScript:**\n\n   ```shell\n   npm install -g typescript\n   ```\n\n3. **Compile o código TypeScript:**\n\n   ```shell\n   tsc wordcount.ts\n   ```\n\n   Isso criará um arquivo `wordcount.js` no mesmo diretório.\n\n4. **Execute o arquivo JavaScript com Node.js:**\n\n   ```shell\n   node wordcount.js\n   ```\n\n## Leitura adicional\n\n* [Engenharia de prompts para o GitHub Copilot Chat](/pt/copilot/concepts/prompting/prompt-engineering)\n* [Práticas recomendadas para usar GitHub Copilot](/pt/copilot/get-started/best-practices)"}