31
Tradução: Por que você não deve codificar em Português
by AkitaOnRails on Jul.31.2008 at 04:41pm
Achei esse artigo interessante, o título original é Why you shouldn’t code in Spanish. E como o autor mesmo fala, a parte engraçada é que ele publicou esse artigo no site chamado CodeSpanish. Eu coloquei “Português” no título porque senão ninguém iria ler :-) Mas vou traduzir o artigo original. Seja português, seja espanhol, a noção é a mesma, então lá vai:
Por que você não deve codificar em Espanhol.
Na realidade eu promovo a tradução de software para Espanhol e outras linguagens. Quando digo que você não deveria codificar em Espanhol quero dizer que não deve usar Espanhol ou qualquer outra língua que não seja Inglês como nomes de variáveis, nomes de arquivos, nomes de funções, etc. Linguagens de Programação, linguagens de script, comandos de sistema operacional, etc, são todos baseados na língua Inglesa. Então, por que você faria diferente no seu código?
Pegue por exemplo este código em PHP do post Construindo um forum em PHP e MySQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
require(’funciones.php’);
$id = $_GET["id"];
$citar = $_GET["citar"];
$row = array(”id” => $id);
if($citar==1)
{
require(’configuracion.php’);
$sql = “SELECT titulo, mensaje, identificador AS id “;
$sql.= “FROM foro WHERE id=’$id’”;
$rs = mysql_query($sql, $con);
if(mysql_num_rows($rs)==1) $row = mysql_fetch_assoc($rs);
$row["titulo"] = “Re: “.$row["titulo"];
$row["mensaje"] = “[citar]“.$row["mensaje"].”[/citar]“;
if($row["id"]==0) $row["id"]=$id;
}
$template = implode(”", file(’formulario.html’));
include(’header.html’);
mostrarTemplate($template, $row);
include(’footer.html’);
|
Algumas palavras podem ser familiares para pessoas que entendem inglês já que têm pronúncias similares em inglês, por exemplo: configuracion é configuration, mas e mostrarTemplate? Mesmo formulario dará dores de cabeça a mais de um programador que não saiba Espanhol.
Você também tem que considerar que muitos programadores nem mesmo falam Inglês. Eles podem falar línguas que sequer tem raízes em Latin, para eles já é difícil o suficiente interpretar funções em Inglês como require, echo, etc. Você consegue imaginar um desenvolvedor Chinês tentando entender seu código em Espanhol? Escrever seu código em Inglês é crítico quando se quer trabalhar em um projeto Open Source.
Minha visão é que código deve ser escrito em Inglês: nomes de variáveis, nomes de funções, nomes de classe, campos de dados, etc. Quando digo código, também estou falando de bancos de dados. Existem exceções, objetos nomeados em inglês poderiam ser um problema se o usuário final tiver acesso livre para gerar relatórios, exportar dados, etc.
Não é difícil escrever seu código em Inglês. Use dicionários Espanhol/Ingles (Sua Língua/Inglês – eu recomendo Word Reference). Não entre em pânico, não é para escrever como Shakespeare, gramática não é necessária. Por exemplo, no código acima, mostrarTemplate poderia ser facilmente modificado para showTemplate.
Mesmo que você não tenha intenções de fazer outsourcing, compartilhar ou vender seu código, ter funções em Espanhol misturado com funções nativas de uma linguagem de programação em particular é uma má prática que pode levar a confusões e duplicação de código. Por exemplo, alguém poderia escrever uma função obtenerVariable (obtener significa ‘obter’, em Espanhol), quando já existe uma função chamada getVariable incluso na biblioteca padrão. Se tivesse escrito seu código em inglês e duplicado a função getVariable por engano, é bem possível que o compilador ou interpretador o avisasse. Isso não aconteceria se misturar línguas humanas no seu código.
E sobre comentários dentro de seu código? Embora seja desafiador para muitos que não falam inglês, a realidade é que a maioria dos comentários normalmente tem uma ou duas sentenças. Como disse antes, não é sobre escrever Inglês perfeito. Existem diversas ferramentas que podem ajudá-lo a traduzir sentenças simples. Free Translation é um dos meus favoritos. Mas saiba que essas ferramentas não são 100% perfeitas, traduções de línguas humanas ainda não foram vencidas. Se precisar traduzir um manual, o conteúdo de um website ou as mensagens mostradas ao usuários, por favor, contrate um tradutor profissional.
Não me entenda mal, sou um forte defensor da minha língua materna, Espanhol, mas não sou um idiota. No mundo de hoje, uma empresa estrangeira poderia chegar em você para comprar os direitos do seu produto a qualquer momento. Por exemplo, ano passado o Google comprou o Panoramio, uma empresa fundada pelo Espanhol Eduardo Manchón. Se seu código for ruim para quem não fala Espanhol, será mais difícil de terceirizar sua manutenção (você estará limitado a programadores que falam espanhóis). Esse último ponto poderia ser tópico de discussão com investidores internacionais.
Goste ou não, Inglês é o Esperanto da tecnologia e dos negócios dos tempos modernos. Você deveria escrever seu código em Inglês.
Nota do Akita: novamente, sou um antigo defensor da melhoria da educação pessoal de cada profissional. Cada um é responsável por sua própria capacitação, e ninguém mais. Como disse o autor, aprender – e realmente usar – inglês diariamente não é uma opção, é uma obrigação.
Anos atrás, muitos desenvolvedores reclamaram do código fonte do Ruby porque muita coisa estava documentada em Japonês (!) Imagino que isso deva ter sido um dos motivos que dificulta revoluções maiores no interpretador e a busca por novas alternativas.
Outro caso notório é da SAP, com sua linguagem ABAP/4. Provavelmente, 30 anos atrás, os alemães não imaginavam que seu software seria usado no mundo todo. Veja este pequeno trecho de código ABAP:
1 2 3 4 5 6 7 8 9 10 |
IF SUDATE = 'X'. SORT ITAB BY UDATE EKKEY-EBELN CHANGENR EKKEY-EBELP EKKEY-ETENR. ELSEIF SNAME = 'X'. SORT ITAB BY USERNAME EKKEY-EBELN CHANGENR EKKEY-EBELP EKKEY-ETENR. ELSE. SORT ITAB BY EKKEY-EBELN CHANGENR EKKEY-EBELP EKKEY-ETENR. ENDIF. |
EKKEY, EBELN, EBELP … consultores SAP se acostumam depois de algum tempo, mas tudo isso são acrônimos – que já é ruim – de palavras em alemão! Não é pouco: estamos falando de centenas de milhares de acrônimos como esses, para cada tipo de campo, objeto, tabela em cada módulo empresarial de um pacote que atende Fortune 500. Boa sorte lendo um código desses. ABAP por definição não é a linguagem mais visualmente agradável de se trabalhar, junte a isso diversos nomes de variáveis, tabelas, funções, APIs, tudo em Alemão. Pior: com comentários de código em alemão! Você não precisa compilar nem nada: o código já é naturalmente obfuscado.
Portanto, façam um favor a todos: escrevam nomes em inglês. Não se trata de nacionalismo, idealismo, ou qualquer coisa assim. Isso é puro pragmatismo.








Não concordo. O código deve ser escrito na língua do público alvo, mantendo os termos utilizados na língua sem tradução para o inglês. É melhor ter um código em bom português do que em um mal inglês.
Preciosismos a parte, eu defendo um código misto para a maioria das aplicações feitas no brasil. Não se traduz “get” para o português porque o “get” é amplamente utilizado na computação do brasil, todo mundo sabe o que é. Da mesma forma, não se traduz o nome “Nota Fiscal” para o inglês, porque se falar “Invoice”, muitos programadores vão ter dificuldade para entender o que realmente a “Invoice” é. Neste caso, bom senso é essencial para manter o código legível para a equipe.
Claro, open source e outsourcing são, certamente, uma exceção a isso que falei.
[]s
Eu concordo com o Akira, todos os códigos deveriam ser escritos em inglês mesmo, nunca se sabe oque pode vir a acontecer com aquele programa, sem falar em outro detalhe que o Akira não mensionou, normalmente escrever em inglês leva bem menos dígitos que em português, logo ainda é produtivo XD
E acho que pra quem ainda programa em português, é apenas questão de costume, e sem falar que ainda lhe ajuda a treinar seu inglês diariamente (como dizia meu professor de redes: se você não consegue ler um texto técnico em inglês, não se preocupe, ainda há tempo para mudar de profissão)
@wilker, só uma correção, é Akita, não Akira X-D
Eu não cheguei a trabalhar com ABAP enquanto trabalhei na SAP, mas o pessoal em geral tinha tabelas com esses acrônimos pendurados aos montes nas baias. Sem contar isso, tem aqueles nomes de transactions indecifráveis como se80 e coisas do gênero.
E quanto a usar inglês, acho que temos que deixar a preguiça de lado e estudar mais, escrever mais e errar mais, só assim a gente aprende inglês.
=D
abraços
Concordo plenamente com o Akita. O inglês é a lingua mãe da computação. se você quiser se aprofundar em algum tema, tem que partir pros livros em inglês, exemplos que estão em ingles, tutoriais em inglês. a maioria dos foruns e wiki estão em lingua inglesa. Vamos fazer código limpo e em inglês!!!
Não seria interessante nós, que somos brasileiros, primeiramente escrevermos de forma correta em português para depois tentar fazer alguma coisa em outra língua.
Interessante artigo, eu costumo escrever meu XHTML/CSS e códigos server-side todos em inglês, pois foi costume já que aprendi (e ainda estou aprendendo) principalmente com o pessoal que usa inglês… Eric Meyer, Jeffrey Zeldman, Andy Budd, Ryan Bates, o pessoal do Learning Rails, etc.
E também sempre tive o pensamento que para se tornar um bom profissional na área de TI você precisa saber inglês, entnao aproveito para praticar e quando alguém precisar dar manutenção será muito mais fácil… Se vocês ainda não leram o livro Wikinomics, eu recomendo para que vocês tomem conhecimento da grande revolução que vem se manifestando.
Por fim mais uma vez agradeço ao “Akira” :P por trazer mais esse ótimo debate.
@Pessoal desculpem a falta de links… É que não lembro se aqui no blog do Akita é liberado! =D
O recado já foi bem dado pelo Akita.
Cabe a cada um decidir se utiliza ou não essa prática.
O mais importante é cada um determinar seus próprios limites e decidir se poderá conviver sem participar de um mercado bem mais amplo e colaborativo na programação (em inglês).
Quem puder conviver com as oportunidades perdidas que passam pela janela no decorrer da vida então pode se recusar a essa prática.
Depende portanto do objetivo de cada um.
O que não vale é reclamar depois. Como disse no começo o aviso já foi dado!
Diego Alencar: Redigir documentos é uma coisa, escrever código-fonte é outra.
O artigo não quis dizer que devemos redigir documentos ou algo do gênero em inglês e sim que devemos codificar utilizando este idioma.
Prefiro programar em inglês sem dúvida, mas é interessante seguir o padrão adotado pelo projeto que se está trabalhando (mesmo que vc ache errado). E também evitar de misturar as coisas como aqueles métodos/variáveis chamados de CalculatePreco(), ProcessPedido(), priceCusto…
Uma nota, acho que o titutlo deveria ser: “Por que você não deve codificar em Português e em PHP” ... porque aquele exemplinho dado é muito tosco … huaahhuaua XD
Apesar da brincadeira
sem flames por favoreu concordo com o post ! E aproveitando, não vejo nenhum problema em chamar Nota Fiscal de Invoice.Ótimo artigo!
Concordo com todos os argumentos do autor.
Sempre gostei de escrever código em inglês, porque acho que fica muito mais fluente e elegante, sobre tudo quando se trata de código de infra-estrutura, etc.
Agora, o que sempre faço também é deixar a “interface de negócio” em português, o mais próximo possível dos termos e linguajares do domínio de negócio, seguindo o princípio de ubiquitous language.
Foi mal Akita, foi erro de digitação mesmo XD
Concordo e assino embaixo.
Para desenvolvedores acostumados a definirem nomes de variáveis, arquivos, etc. em português a resistência é maior pelo fato do costume e de facilitar durante a leitura e o entendimento do código.
Mas isso com a prática se torna comum.
Belo post, Akita.
Abraço,
Silva Developer
Akita,
Eu já trabalhei com vários padrões diferentes com relação ao lingua no qual o código foi escrito. Já trabalhei em projetos onde tudo era em Português. Em outros projetos onde tudo era em Inglês e em alguns onde era um misto.
Minha opinião, depende muito do projeto. É muito complicado afirmar que tudo deve ser em Inglês, por que há casos onde o inglês não acrescenta nada.
Vou dar um exemplo prático e hipotético, imaginemos um projeto de Software para a Justiça Federal Brasileira. Este software nunca será usado por alguém que não seja brasileiro. Alem disso, a Justiça Federal possui termos próprios do português, de difícil tradução. Termos estes que serão usados para nomear entidades e por sua vez tabelas e colunas no banco de daos. Posso garantir, escrever o código todo em inglês num caso desse é garantia de dificuldades.
Escreva os termos de negócio em Português, crie um glossário para o projeto.Se você acha muito esquisito um metodo como buscar_usuario, que tal find_usuario, não há problemas, mas mantenha os termos do negócio na lingua de origem.
Outro ponto, se puder, deixe comentário em português mesmo. Nada pior que um comentário em Inglês mal escrito. E no Brasil, há poucas pessoas com Inglês bom.
Agora, se o projeto é internacional, não há dúvida, faça tudo em Inglês.
Novamente, é difícil sair com uma regra bala de prata. Depende muito do contexto do projeto.
[]´s Gustavo
Concordo em parte.
Código para:
Bibliotecas (infra), padrões e “frameworks” => Inglês Lógica de Negócios Nacionais (Empresas pequenas e médias) => Português Lógica de Negócios Internacionais (ou potencial) => Inglês
Acho que o segundo caso faz sentido pelo menos enquanto tivermos estagiários e pessoal sem bom inglês saindo do ensino médio. E, claro, ainda falarmos português.
Abraços!
Estou de pleno acordo. O Pedro comentou muito bem sobre escrever, errar e aprender. Isso faz parte de uma das 70 dicas dos Pragmatic Programmers e se encaixa no contexto do Getting Real.
Se quisermos compartilhar idéias a dica citado pelo Juerez é excenlente.
Estou de pleno acordo. O Pedro comentou muito bem sobre escrever, errar e aprender. Isso faz parte de uma das 70 dicas dos Pragmatic Programmers e se encaixa no contexto do Getting Real.
Se quisermos compartilhar idéias a dica citado pelo Juarez é excenlente.
No meu caso, pela minha abrangência atual, prefiro escrever “tudim” em Português. Tudo muito bem claro e bem explicadinho. Assim fica bem mais fácil para qualquer um entender o que o software faz. Quando houver necessidade, com tudo bem organizado, passo para outra lingua…não necessariamente o Inglês. Eu até prefiro o Espanhol. De repente até uma Mandarim.
Já codifiquei em portugues, já até trabalhei em uma empresa que tinhamos um miniframework de funções todas em portgues. Mas hoje para mim tudo tem que ser em inglês. E no meu ponto de vista todo programador tem que saber no mínimo ler inglês bem e escrever razoavelmente.
Acho que código em duas linguas além de ficar feio para caramba, não pode ser terceirizado para outros paises e ainda tem que ficar fazendo puxadinhos como a pluralização do rails.
Uma coisa que as vezes eu faço e colocar as msgs de commit do git em portgues mas quando só eu estou no projeto e é projeto pequeno.
Quanto a traduzir todo tem coisa que não existe né…. por exemplo, nome é nome em qualquer lugar do mundo, se você está fazendo um sistema que tem nomes próprios para algumas coisas use o nome próprio mesmo mas o resto pode ser perfeitamente traduzido.
Na minha opinião devemos usar os termos conforme os especialistas do domínio (domain experts) usam. Se os termos usados são em inglês devem estar em inglês no código. Se são em português, devem estar em português no código. É a Linguagem Ubíqua (Ubiquitous Language) do Domain-Driven Design.
Ou ainda, na linha do comentário do Daniel (Daniel’s post), devemos inserir anotações no código traduzindo os conceitos (business concepts), facilitando a compreensão dos desenvolvedores estrangeiros (foreign developers).
Quis dizer, comentário do Guilherme (Guilherme’s post).
Também acho que deva ser tudo em inglês. Mas penso que existem exceções, como o caso que o Gustavo Amigo citou.
concordo com o gustavo e humberto.
Concordo com o Vitor Pamplona.
Escrever em Inglês leva bem menos dígitos, que já é uma grande vantagem.
Opa. Na verdade eu concordo com o Wilker, foi mal pessoal.