Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. Mostrar todas as postagens

segunda-feira, 12 de maio de 2008

Programação em Esperanto? (II)

Pois é, o Felipe Castro comentou que já programa em esperanto, em nomes de variáveis e funções. Acho que isso é um grande passo, pois facilita a compreensão ao postar um trecho de código em um fórum para programadores em esperanto. Afinal, uma função “forvisxi_komenton” faz muito mais sentido para um colega esperantista da Polônia do que “apagar_comentario”. Parabéns, Felipe!

Fiquei impressionado com o trabalho de um alemão chamado Ulrich Ender. Ele foi muito além do que eu havia imaginado e criou a linguagem de programação mais fácil do mundo! Ainda não testei, mas o projeto da linguagem E (de Ender? de Esperanto?), foi escrito em 1998, junto com o compilador-E e até mesmo um sistema operacional em E!

Aqui está a introdução à linguagem E:

Enkonduko:
La Esperanto-programlingvo, mallonge nomata "E" estas verŝajne la plej simpla programlingvo de la mondo.
Ĝi konsistas el "vortoj", tiu estas unu aŭ pluraj signoj kiuj finiĝas per spacetosigno (ASCII-kodo 32).
Ekzemploj por vortoj: LISTU FORGESU IRU A= 69 (Rimarko: oni diferencas inter LISTU, Listu, lIstU ktp. ).
Vortoj, kiuj troviĝas en tielnomata "biblioteko" estas programoj.
Oni alvokas (aplikas) ilin, kiam oni tajpas iliajn nomojn.
Ekzemplo: LISTU - listigas la enhavon de æiuj vortoj de la biblioteko.
Aliaj vortoj estas la nombroj.
Ekzemploj: 63485 33 17 0 2
Minimume E konas nur la tri vortojn D , K kaj . per kiuj oni povas difini novajn vortojn.

La ĝenerala strukturo de difino de vorto estas:

D nomo-de-la-vorto apliko-kodo [K] [kompilado-kodo] .

([ ] = ne nepre bezonata!)


Tie la apliko-kodo estas kodo, kiu agas, kiam oni aplikas la vorton.
La kompilado-kodo priskribas, kiel vorto estas kompilita. Ĝi esta aktiva, kiam oni alvokas la vorto dum difinado de alia vorto.
Se kompilado-kodo ne estis difinita la E-kompililo aŭtomate kompilas gin kiel subprograma salto al la apliko-kodo de la vorto.
Tion vi vidas en la sekvaj ekzemploj:

Ekzemplo: D eligu-E 176 69 180 14 205 16 203 . (maŝina kodo por 8086-procesilo)
D eligu-E A= 69 EL RE . (difino por æiuj procesiloj)
( Kiam oni alvokas eligu-E la litero E aperos sur la ekrano )
Oni povas uzi jam ekzistantajn vortojn en novaj difinoj por krei pli kompleksajn programojn.

Ekzemplo: D eligu-4E eligu-E eligu-E eligu-E eligu-E RE .
D nova-linio A= 13 EL A= 10 EL RE .
D 1E eligu-e nova-linio RE .
D 4E eligu-4E nova-linio RE .
D granda-E nova-linio 4E 1E 4E 1E 4E RE .

Kiam oni tajpas nun granda-E la sekva aperos sur la Ekrano:
EEEE
E
EEEE
E
EEEE

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.