segunda-feira, 12 de maio de 2008

Programação em Esperanto?

Outro dia, estive pensando sobre linguagens de pessoas e de máquinas... perguntava-me se seria possível criar uma linguagem de programação em Esperanto e se isso traria alguma vantagem para alguém. Então, pensei em duas “não tão hipotéticas” situações, que apresento a seguir:

Hoje é mais ou menos assim (
Exemplo 1)
Uma fábrica de software de Moscou, que adota o russo como língua de trabalho, conta com uma rede de free-lancers em todo o mundo. Na semana passada, como parte de um processo de seleção, entregou a dois de seus candidatos a desenvolvedores um programa simples, só que em BASIC, uma linguagem pouco usada hoje em dia, e deu a eles um prazo de resposta de 15 dias.

Um dos candidatos é de Vilnius, na Lituânia e fala lituano e russo. O segundo é de Dublin, na Irlanda, e fala inglês e russo. Nenhum dos dois jamais teve contato com a linguagem BASIC. Ambos nunca saíram de sua cidade de origem.

O irlandês, então, compra pela Internet um livro sobre a linguagem BASIC, em inglês, que foi o mais recomendado pelos seus professores da faculdade e descobre que nesta linguagem as funções são bastante intuitivas, pois se parecem com o inglês cotidiano. Ele entrega seu projeto antes do prazo.

O lituano, por sua vez, procura um livro de BASIC em lituano mas descobre que os melhores livros sobre BASIC só estão disponíveis em inglês. Finalmente, encontra um em russo na biblioteca da faculdade. Começa, então, a utilizar suas funções e não acha nada intuitivo. Não está acostumado às palavras inglesas que dão nome às funções e, usualmente, confunde o seu uso. Após alguns dias, consegue se familiarizar e a se concentrar no projeto, mas seu prazo expira enquanto ele ainda buscava alguma ajuda em um fórum em russo na Internet.

Para ilustrar o exemplo, eu coloquei dois extremos: um candidato não fala nada em inglês e outro tem este idioma como sua língua materna.

Ainda assim, acredito que todos os profissionais que não têm o inglês como língua materna encontram alguma dificuldade semelhante àquela do candidato lituano, em um certo grau. Seja porque não participam tão ativamente dos fóruns (por não conseguir descrever corretamente os problemas), seja por não conseguir compreender totalmente o material de estudo, ou mesmo porque consegue fazer tudo isso, mas em velocidade bem menor do que o faria se tivesse o inglês como sua língua materna.

Agora, pense verde (Exemplo 2)
Uma fábrica de software de Moscou, que adota o esperanto como língua de trabalho, conta com uma rede de free-lancers em todo o mundo. Na semana passada, como parte de um processo de seleção, entregou a dois de seus candidatos a desenvolvedores um programa simples, só que em BASIC, uma linguagem pouco usada hoje em dia, e deu a eles um prazo de resposta de 15 dias.

Um dos candidatos é de Vilnius, na Lituânia e fala lituano e esperanto. O segundo é de Dublin, na Irlanda, e fala inglês e esperanto. Nenhum dos dois jamais teve contato com a linguagem BASIC. Ambos nunca saíram de sua cidade de origem.

O irlandês, então, compra pela Internet um livro sobre a linguagem BASIC, em inglês, que é o mais recomendado pelos seus professores da faculdade e descobre que nesta linguagem as funções são bastante intuitivas, pois se parecem com o inglês cotidiano. Ele entrega seu projeto antes do prazo.

O lituano, por sua vez, decide utilizar uma pseudo-linguagem do BASIC, totalmente em esperanto, o ETO (ou EO, ou E, ou qualquer coisa do gênero), pois tem pouco tempo e acha que pode ser mais fácil. Depois de pesquisar na Internet, baixa os manuais em um blog em esperanto, de um programador de Pequim, e rapidamente domina as funções, que se parecem muito com o esperanto cotidiano. Ao fim do processo, foi ajudado por uma programador da Polônia, em um fórum de informática em esperanto, e converteu seu código facilmente para o BASIC, entregando o projeto antes do prazo.

Tenho o sentimento de que o desenvolvimento desta pseudo-linguagem em esperanto, pode realmente potencializar o trabalho de programadores esperantistas e até mesmo gerar um efeito multiplicativo, pela completa (e não somente superficial) integração entre pessoas com diferentes estilos de programação, que conseguem expressar-se facilmente.

Também não há dúvida de que um profissional que não fala nem inglês e nem esperanto pode muito mais rapidamente participar de forma ativa em um fórum esperantista do que em um fórum que usa a língua inglesa.

Mas é melhor parar por aqui, porque isso é impossível, não é mesmo?

Bem, talvez tenha sido idéia semelhante, aplicada à língua portuguesa, que teria motivado o brasileiro Thiago Silva a desenvolver o G-Portugol. Este é um pseudo-código em português do Brasil, com estruturas como algoritmo, início, fim e imprima.

Em sua página oficial, tem vídeos bem didáticos onde é demonstrada a criação de um algoritmo e sua compilação como um programa “Olá, Mundo” em poucos segundos.

Ele usa o próprio KWrite, editor de texto do KDE, que já tem o suporte para destacar os elementos do G-Portugol por cores. Seu compilador, o GPT, roda direto no console do GNU/Linux, e dá ao usuário a opção de gravar o código como C ou Assembly.

É uma excelente idéia, mas se cada idioma tivesse o seu próprio projeto análogo ao G-Portugol, estaríamos então construindo mais muros e menos pontes. Eu jamais discutiria sequer uma linha de código com um programador da Hungria, por exemplo. Além disso, o material em português que eu utilizo aqui sobre o G-Portugol não faria o menor sentido para ele. E se o material fosse em esperanto e os elementos do código em português, aí uma função como início talvez não pudesse nem ser digitada por lá, e eu imagino como seriam as funções do projeto húngaro...

Bom, eu sou grato ao Thiago por me fazer crer que isso não é tão impossível assim.

E sou grato ao Esperanto, por me fazer acordar para a necessidade de adotar uma postura mais proativa em relação ao nosso lugar no mundo.

Podemos estar diante de uma escolha importante, entre unir os nossos esforços para ter o direito de sermos protagonistas do desenvolvimento tecnológico, ou continuar assistindo a tudo pela TV.
Sem legenda.

5 comentários:

Felipo disse...

Eu já programo em esperanto! Até agora, tenho 3 projetos que desenvolvo. Com o primeiro, quando começei, usei o inglês. Agora que já está assim, vou deixar. Mas a partir do segundo, resolvi usar o esperanto para programar, ou seja, os nomes das variáveis, funções, etc, são todas em esperanto, usando o sistema x de escrita.

No entanto, as funções de bibliotecas externas e as palavras chaves continuam em inglês. Penso que, se foram criadas assim, seria perda de energia forçar uma tradução para elas. Meu pensamento é: o que já foi criado em inglês, que assim permaneça; para projetos novos, tudo em esperanto.

Valeu!

Anônimo disse...

Olá Michel,

Na verdade, o que me motivou a fazer o projeto G-Portugol foi aprender sobre compiladores. O que me motivou a continuar desenvolvendo o projeto foi meu interesse em ensino de programação, e minha preocupação com a população brasileira que não tem acesso a educação que nós temos.

"[...] mas se cada idioma tivesse o seu próprio projeto análogo ao G-Portugol, estaríamos então construindo mais muros e menos pontes."

Você está absolutamente correto aqui. Ainda, eu sempre me preocupei com a hipótese de que, se a linguagem se tornasse suficientemente poderosa, poderia acabar tendo programas não-triviais sendo escritos nela, o que é um problema, pois apenas povos de língua portuguesa poderiam ler, entender e modificar o código (por outro lado, nunca pensei nisso como um motivo para não tornar a linguagem melhor).

Quanto ao esperanto, tenho um amigo ativo na comunidade desta língua, e numa conversa de bar com ele, discutimos a possibilidade de termos uma linguagem de programação em esperanto. Eu não cheguei a pesquisar por projetos que já tenham feito isso, mas me pareceu algo interessante.

[]'s
Thiago

Leonardo la Janz disse...

Olá, amigos.

Sem dúvida que é algo muito interessante! Mais do que isso, seria uma iniciativa de grande utilidade para o mundo da programação.

Tenho voltado a estudar programação para a NET, e, como sou também usuário e instrutor de Esperanto, não é que me peguei dia desses com a mesma questão de vocês?

Vamos pois nos tornar feras em programação, e, em seguida... Eis um compilador que interpreta códigos-fonte totalmente em ESperanto!!!

Forte Abraço, L. Janz.

Felipo disse...

Se você está a fim de aprender ALGOL 68, sei de um cara que traduziu o compilador para aceitar o Esperanto....

João Fabiano disse...

Que maneiro!