programando perl em latim
14/Fev/2009 @ 08:47 Software

Esta vem do baú das recordações e remonta a 2001, salvo erro.

O Lingua::Romana::Perligata é um módulo PERL escrito pelo Damian Conway (sim, este Damian) e que permite programar qualquer coisa em PERL, usando um … “Latim PERLado”. Claro que per si é de uma inutilidade extrema, mas serve bem como proof of concept do extremo poder desta linguagem.
Vamos começar por instalar o módulo. Podem sacá-lo do site do CPAN e compilar, mas pela respectiva shell é mais fácil:

# perl -MCPAN -eshell
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Lingua::Romana::Perligata

Passado 1 minuto, se tanto, está instalado e pronto a usar :)

Ora andei eu uns tempos largos a ver se conseguia programar algo muito simples: verificar se um número é ou não primo. O maior problema residia no facto de ser necessário respeitar uma série de regras do Latim. Coisa que me ultrapassa completamente, apesar do módulo estar bem documentado. Mas enfim, lá acabei por conseguir. Com uma pequena ajudinha do Damian, confesso :P
E-mail para lá, e-mail para cá, tal e coiso… e ainda me deu uma dica para decompor os que não são primos em factores :)

Aqui fica o código:

#!/usr/bin/perl

use Lingua::Romana::Perligata;

    Numerum inquementum tum biguttam tum lacunam egresso scribe.
    da meo numero vestibulo perlegementum.

    meis listis II tum cum numerum fodementum conscribementa da.

    dum damentum nexto listis decapitamentum fac
     sic
      lista sic hoc tum nextum recidementum cis vannementa da listis.
      si numerum tum nextum recidementum tum nullum aequalitam fac
       sic
        dictum sic Nao e primo: cis tum lacunam egresso scribe.
        numerum tum nextum dividementum comementum egresso scribe.
        lacunam tum dictum sic x cis tum lacunam tum
        cum nextum comementum tum novumversum egresso scribe.
        nullum exi.
       cis
     cis.

    egresso scribe dictum sic E primo cis tum novumversum.
egresso scribe dictum sic E primo cis tum novumversum.

Agora, é passá-lo para um ficheiro chamado latim.pl, por exemplo, gravar e… testar:

[gamito@torvalds ~]$ perl latim.pl
Numerum: 3
E primo
[gamito@torvalds ~]$ perl latim.pl
Numerum: 20
Nao e primo: X x II
[gamito@torvalds ~]$ perl latim.pl
Numerum: 1100
Nao e primo: DL x II
[gamito@torvalds ~]$

Nice, hum :) ?

-MG
rss 2 pás de carvão
  1. 14/Fev/2009 | 16:32

    Gostei particularmente do “fodementum”.
    Não programo em Latim, mas acho que esse comando arranja sempre forma de aparecer em qualquer programa que faça! :)


    A usar Mozilla Firefox Mozilla Firefox 3.0.6 em Windows Windows XP
  2. MG
    14/Fev/2009 | 16:49

    O mais engraçado é que na altura em que troquei uns e-mails com ele, mal eu sabia que o gajo é o nº 2 do PERL.

    http://damian.conway.org/About_us//Bio_formal.html :

    “A well-known member of the international Perl community, Damian was the winner of the 1998, 1999, and 2000 Larry Wall Awards for Practical Utility. The best technical paper at the annual Perl Conference was subsequently named in his honour.

    (…)

    Most of his time is currently spent working with Larry Wall on the design of the new Perl 6 programming language and producing explanatory documents exploring Larry’s design decisions.”

    E mais admirado fiquei com a disponibilidade e a simpatia dele em ajudar um gajo que estava a usar um módulo que ele fez… just for fun :)


    A usar Mozilla Firefox Mozilla Firefox 3.0.6 em Windows Windows Vista
atira-lhe uma pá de carvão

Nota: Todos os comentários são moderados.