Chorinho para um rei

Nunca postei uma música no blog, mesmo isso sendo algo comum para vários blogueiros… Porém, dessa vez queria muito publicar a letra dessa música criada pela Tia Mariinha em homenagem ao Jacob do Bandolim no Festival Nacional do Choro da Bandeirantes em 1977… E resolvi fazer isso por três motivos:

  1. O Jacob é o cara e essa música é muito legal!
  2. Essa letra só existia no blog do Bruno Pinheiro até ontem…
  3. Em homenagem aos participantes do Desafio Salesiano, que [felizmente] foi um sucesso! (e se não tivesse sido, acho que além de eu ter sido xingado e ameaçado de morte, o povo realmente teria me matado! hehehe)

Chega de enrolação, curtam a letra!

Chorinho para um rei

Este chorinho tão chorado e caprichado que eu fiz Foi dedicado ao Jacob do Bandolim Que foi um rei e como tal foi coroado Lá no céu entronizado, seu reinado não tem fim Naquela sala uma cadeira está vazia, Mas por Deus eu juraria que no céu tem outra igual Onde ele senta nas noites de lua cheia vem do mar brincar na areia de sua terra natal Enquanto aqui na terra a noite é de seresta La no céu também tem festa, ninguém quer que chegue o fim Até os santos se esquecem das promessas escutando distraídos o Jacob do Bandolim Há muita gente que machuca esse instrumento mas ninguém tira o lamento que ele só soube tirar O bandolim aconchegado junto ao peito soava de um certo jeito, parecia até falar O bandolim aconchegado junto ao peito soava de um certo jeito, parecia até falar

Quando chegar a minha vez de ir embora, Pode ser até agora, peço só um favor pra mim:

Quero levar o meu chorinho caprichado Só pra ouvir interpretado por Jacob do Bandolim.

udev e suas regras maravilhosas

Participei nos dias 8 e 9 do IV Encontro Nacional Linuxchix Brasil em Florianópolis. O evento teve umas palestras interessantes, entre as quais destaco as do pessoal do FreeBSD, a do Luiz Fernando Capitulino sobre o desenvolvimento do Kernel, a do Hélio Castro sobre interfaces gráficas 3D, mas em especial a do Piter PUNK sobre o udev (talvez porque eu sou um usuário Slackware =). E é sobre o udev que eu resolvi falar nesse artigo…


Tenho até vergonha de dizer que até semana passada eu não tinha percebido que o hotplug não estava mais sendo inicializado no meu Slackware… Só depois da palestra que aprendi que o Kernel 2.6 acaba com a necessidade do hotplug substituindo por um novo e poderoso aplicativo chamado udev. Isso é uma mudança e tanto, que traz alguns prós e contras (na verdade, eu só vi prós).

O que é o udev?

Bom… Segundo a Wikipedia, udev is the device manager for the Linux 2.6 kernel series. Its primary function is managing device nodes in /dev. It is the successor of devfs and hotplug, which means that it handles the /dev directory and all user space actions when adding/removing devices, including firmware load.

Como funciona o udev

Na inicialização do sistema, o udev vê no /sys que dispositivos foram encontrados pelo Kernel e adiciona os dispositivos ao /dev (por enquanto, vou fingir que ele só adiciona os dispositivos ao /dev).

Depois, seu daemon fica rodando para adicionar novos dispositivos assim que eles aparecerem.

É bem mais rápido que no hotplug e parece funcionar bem.

E onde está a mágica?

O udev possue um diretório de regras (/etc/udev/rules.d) onde adicionamos arquivos de texto com uma sintaxe super fácil para dizer o que queremos fazer com cada dispositivo que é adicionado ao sistema.

E o que queremos fazer com cada dispositivo que é adicionado ao sistema?

Hmmm… Isso depende muito da sua necessidade, mas deixe-me citar algumas possibilidades das regras do udev:

  • Dar nome aos dispositivos – Pra que uma pasta /dev cheia de nomes difíceis que você não entende? Com o udev, você pode chamar seu sda1 de pendrive ou o seu hdc de cdrom.
  • Dar nomes diferentes para dispositivos iguais – Hoje em dia vivemos pluggando pendrives, máquinas digitais, MP3 players, etc. em nossas placas USB. Com o udev, podemos fazer com que a nossa máquina da Canon chame-se /dev/canon, a nossa máquina da Sony chame-se /dev/sony, o pendrive da mamãe chame-se /dev/mamae e o nosso MP3 Player chame-se /dev/mp3player.
  • Adicionar links simbólicos aos dispositivos – Podemos fazer nosso CD-ROM ter vários links como cdrom, dvd, cdrw, cdwriter
  • Mudar permissões dos dispositivos – Podemos fazer com que o pendrive da mamãe possa, logo que for pluggado em qualquer porta USB, ser acessado por ela (e somente por ela).
  • Executar comandos quando ocorrem alterações nos dispositivos – Sempre que a mamãe colocar o seu pendrive numa porta USB podemos montá-lo para ela e já abrir o dispositivo no Konqueror e quando ela pluggar a sua máquina digital da Canon podemos mudar suas permissões, linká-la para /dev/camera e abrir o digiKam.
  • … entre provavelmente muitas outras coisas que eu não me lembro ou não sei fazer (eu só conheço o udev há quatro dias!)

Claro que o udev pode ser útil para servidores também, para trocar hardware ou reiniciar o computador com segurança (ex.: você pode dizer que o HD principal seja sempre /dev/principal e assim mesmo que ele passe a ser o seu Second Slave ele funciona), mas estou focando mais o uso doméstico. A “mamãe” é um usuário leigo que não precisa saber montar dispositivos ou qual o nome do programa que baixa as fotos da máquina. Ela simplesmente plugga a sua máquina e o digiKam abre.

Legal… E como é que eu faço essas regras?

A sintaxe dos arquivos em /etc/udev/rules.d é muito simples. Você simplesmente separa por vírgulas as condições que você quer para que as ações que você quer fazer e as ações.

A máquina fotográfica da mamãe

ACTION=="add", BUS=="usb", SYSFS{product}=="Canon Digital Camera",
GROUP="camera", MODE="0660", SYMLINK+="camera", RUN:="/bin/su mamae -c
'/usr/bin/abredigikam.sh'"

Aqui em casa, usei um “abredigikam.sh” assim:

#!/bin/bash

export DISPLAY=":0"
/opt/kde/bin/digikam
Sinais do exemplo
  • Os dois iguais (==) são para expressar condição, como no C (e em um monte de linguagens derivadas dele).
  • O “=” atribui
  • O “+=” atribui “mais uma coisa” (append)
  • O “:=” atribui uma coisa como constante (ou seja, neste caso eu ou os scripts de regras da minha distro não conseguem mais mudar o valor do “RUN”).
Variáveis do exemplo
  • ACTION: A ação que está sendo feita com o dispositivo (neste caso é a adição dele – add)
  • BUS: Barramento. Neste caso, a USB.
  • SYSFS: Variáveis específicas deste dispositivo (depois vou mostrar como encontramos elas)
  • GROUP: Grupo em que o dispositivo está.
  • MODE: Permissões do dispositivo.
  • SYMLINK: Links simbólicos para o dispositivo.
  • RUN: Comando Shell para executar.

Não conheço todas as variáveis, mas para saber mais você pode consultar o Writing udev rules (o objetivo desse post não é entrar em detalhes).

udevmonitor

O udevmonitor é um aplicativo que imprime os eventos recebidos pelo Kernel e o evento que o udev manda depois do proessamento de regras em tempo real. Veja o que acontece, por exemplo, quando pluggo uma máquina digital na minha porta USB:

UEVENT[1158086870.385094] add@/devices/pci0000:00/0000:00:02.0/usb1/1-1
UEVENT[1158086870.388950] add@/devices/pci0000:00/0000:00:02.0/usb1/1-1/1-1:1.0
UEVENT[1158086870.389571] add@/class/usb_device/usbdev1.3
UDEV  [1158086870.390983] add@/devices/pci0000:00/0000:00:02.0/usb1/1-1
UDEV  [1158086870.404378] add@/devices/pci0000:00/0000:00:02.0/usb1/1-1/1-1:1.0

É interessante para acompanharmos os dispositivos que são encontrados pelo udev. Veja agora o udevmonitor quando eu despluggo a minha máquina:

UEVENT[1158089965.438657] remove@/devices/pci0000:00/0000:00:02.0/usb1/1-1/1-1:1.0
UEVENT[1158089965.438765] remove@/class/usb_device/usbdev1.3
UEVENT[1158089965.438794] remove@/devices/pci0000:00/0000:00:02.0/usb1/1-1
UDEV  [1158089965.440899] remove@/devices/pci0000:00/0000:00:02.0/usb1/1-1/1-1:1.0
UDEV  [1158089965.443341] remove@/class/usb_device/usbdev1.3
UDEV  [1158089965.444795] remove@/devices/pci0000:00/0000:00:02.0/usb1/1-1

udevinfo

O udevinfo imprime informações sobre um dispositivo. Para descobrir que o SYSFS{product} da minha máquina era Canon Digital Camera foi este comando que eu utilizei, da seguinte maneira:

<strong># udevinfo -q all -n usbdev1.4</strong>
P: /class/usb_device/usbdev1.4
N: usbdev1.4
S: bus/usb/1/4

(descobri que ela estava na usbdev1.4 usando o udevmonitor)

Aí agora sabendo o path eu descobri todo o resto: (a saída é grande, use a barra de rolagem)

# udevinfo -a -p /class/usb_device/usbdev1.4
Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/class/usb_device/usbdev1.4':
    KERNEL=="usbdev1.4"
    SUBSYSTEM=="usb_device"
    DRIVER==""
    SYSFS{dev}=="189:3"

  looking at parent device '/devices/pci0000:00/0000:00:02.0/usb1/1-1':
    ID=="1-1"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{product}=="Canon Digital Camera"
    SYSFS{manufacturer}=="Canon Inc."
    SYSFS{maxchild}=="0"
    SYSFS{version}==" 1.10"
    SYSFS{devnum}=="4"
    SYSFS{speed}=="12"
    SYSFS{bMaxPacketSize0}=="8"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bDeviceClass}=="00"
    SYSFS{bcdDevice}=="0001"
    SYSFS{idProduct}=="30f9"
    SYSFS{idVendor}=="04a9"
    SYSFS{bMaxPower}=="  2mA"
    SYSFS{bmAttributes}=="c0"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 1"

  looking at parent device '/devices/pci0000:00/0000:00:02.0/usb1':
    ID=="usb1"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{serial}=="0000:00:02.0"
    SYSFS{product}=="OHCI Host Controller"
    SYSFS{manufacturer}=="Linux 2.6.17.11 ohci_hcd"
    SYSFS{maxchild}=="4"
    SYSFS{version}==" 1.10"
    SYSFS{devnum}=="1"
    SYSFS{speed}=="12"
    SYSFS{bMaxPacketSize0}=="64"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bDeviceClass}=="09"
    SYSFS{bcdDevice}=="0206"
    SYSFS{idProduct}=="0000"
    SYSFS{idVendor}=="0000"
    SYSFS{bMaxPower}=="  0mA"
    SYSFS{bmAttributes}=="e0"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 1"

  looking at parent device '/devices/pci0000:00/0000:00:02.0':
    ID=="0000:00:02.0"
    BUS=="pci"
    DRIVER=="ohci_hcd"
    SYSFS{modalias}=="pci:v000010B9d00005237sv0000103Csd00000024bc0Csc03i10"
    SYSFS{local_cpus}=="1"
    SYSFS{irq}=="10"
    SYSFS{class}=="0x0c0310"
    SYSFS{subsystem_device}=="0x0024"
    SYSFS{subsystem_vendor}=="0x103c"
    SYSFS{device}=="0x5237"
    SYSFS{vendor}=="0x10b9"

  looking at parent device '/devices/pci0000:00':
    ID=="pci0000:00"
    BUS==""
    DRIVER==""

Os contras

Hmmm… Na verdade, pelo que eu me lembro da palestra, o udev só tem um contra. Ele vai detectando os dispositivos e jogando-os no /dev na ordem em que ele vai encontrando-os. Então, às vezes a minha placa de rede SiS pode ser detectada como eth0 e a Realtek como eth1 e no outro dia o contrário. Mas contornar isso é muito simples, usando aquelas regras (e inclusive podemos dar os nomes /dev/placa-sis e /dev/placa-realtek para nossas placas). =)

Encontrou um erro?

Eu ainda tô conhecendo o udev (como eu disse, conheci ele nesse final de semana), então meu texto pode ter alguma falha ou pode estar faltando alguma informação. Por favor, comente se encontrar algum erro ou quiser sugerir algo legal… =)

Para mais informações…

$ man udev

… e a página do udev

Onde anda o Slackware 11?

Ok… O Patrick tá trabalhando pra caramba, tem bastante gente colaborando, estamos tendo um monte de atualizações todo dia no slackware-current, o Slackware 11.0 vai ser estável do jeito que deve ser, mas… Tá demorando, né?

  1. 15/06: Although there’s still quite a bit in the TODO queue here I’m making my steps carefully as -current is very stable, and I think it should ship as a stable 11.0 soon so that we can get back to the business of breaking things in -current.
  2. 14/07: We *are* getting closer to 11.0, friends. I’m hoping for a larger changeset soon, but this should be fun to play with for now as I work on the TODO list; merging, compiling, and initial testing.
  3. 03/08: I know I told at least a few people that I wasn’t planning on including this in Slackware 11.0 at the last minute, and there have been a couple of patches needed for it already. Please test quickly.
  4. 14/08: There are still a few changes yet to happen, but let’s call this Slackware 11.0 release candidate 1.
  5. 19/08: This is mostly frozen now unless bugs (or irresistible upgrades) come up, so I’ll call this update Slackware 11.0 release candidate 2.

Se realmente forem só bugs ou atualizações irresistíveis, acho que na semana que vem poderemos ter uma versão nova da nossa tão querida distribuição.

A última versão do Slackware (a 10.2) é do dia 14 de setembro do ano passado. Um ano sem uma versão é um tempo considerável (claro que, pra não ser injusto com o Bill, não vale comparar com os atrasos dos sistemas proprietários). A rápida correção de bugs e lançamento de novas versões é uma entre as \infty{} vantagens que vejo no software livre; espero que essa versão saia logo! =D

Ainda estou vivo…

Escrevo este post só pra dizer que ainda não morri. Embora eu esteja sem inspiração nenhuma pra escrever, eu juro que estou tentando. Comecei três artigos para a Série Algoritmos e tentei fazer de tudo para explicar a busca em profundidade de uma maneira legal, mas por não conseguir fazer nada muito surpreendente é que a série está parada há seis meses. Mas não pensem que a esqueci…

Ando lendo muito mais do que antes; a blogosfera anda bem agitada… No início, achei até que isso podia me ajudar a escrever, mas está tornando mais difícil. Os feeds que eu assino já são tão bons! Não gosto muito de copiar uma coisa e fazer um comentário mínimo, até porque isso eu estou fazendo no meu novíssimo del.icio.us, então acabo sem escrever nada. Aliás, sobre o del.icio.us, confesso que antes eu não gostava desse serviço (não me perguntem por quê), mas agora venho percebendo que esse serviço é fascinante…

Estou esperando o Slackware 11 desde o começo de julho. Ele está “pra sair” há um tempão! Ando conferindo o changelog umas três vezes por dia esperando uma grande novidade, mas nada além das habituais mudanças. =(

Por falar em Linux, vai haver um evento muito legal nesse ano aqui em Santa Catarina, em Florianópolis. O IV Encontro Nacional Linuxchix Brasil vai ter umas palestras muito interessantes, entre elas uma sobre o udev com o Piter Punk, aquele cara power do grupo de usuários do Slackware no Brasil que está sempre contribuindo para fazer meu sistema preferido melhor do que ele já é. =) Pra quem mora aqui, esse evento é imperdível.

Entrei numa aula de piano… Eu já estava há uns sete anos sem estudar formalmente; Essa aula está sendo bem legal para eu ter um pouco mais de técnica, ter uma rotina de estudo musical melhor e aprender um pouco de música erudita.

Comecei a estudar inglês. Ler um texto na internet tudo bem, mas estou estudando porque quero falar inglês de verdade. O motivo não é levado muito a sério pelas pessoas com quem eu comento, mas eu estou querendo muito me graduar nos Estados Unidos, no MIT. Eu sei que é difícil, mas isso é mais um bom motivo para eu tentar… Adoro desafios… =) O máximo que pode acontecer é eu ser rejeitado, mas mesmo assim valeria a pena porque esse plano teria servido de motivação para eu aprender a falar inglês (por causa do TOEFL), estudado matemática e à física (por causa do SAT*) e ainda sonhar um pouco com um local legal de se estudar, um local que me faça estudar (putz, tenho tido cada aula por aqui…). Além de tentar o MIT, pretendo tentar entrar em Berkeley e em Stanford. Se nada der certo, mesmo assim vou ficar feliz na UNICAMP. =)

* Não coube no último parágrafo, mas preciso comentar que na verdade não é o SAT que vai me fazer estudar muito não… O SAT de matemática parece ser ridículo. Eu peguei umas questões para praticar no próprio site deles e “gabaritei” em alguns minutos.

Estou tentando projetar um design pro meu site há algum tempo (quase desde que o atual foi pro ar). Essas cores atuais não ficaram boas nos monitores normais. Acontece que, no laptop, eu vejo elas as vejo um pouco diferentes… Aí, já que eu fiz nele, é nele que elas ficam mehores. O problema é que só percebi essa diferença depois de publicar… De qualquer maneira, serviu para eu aprender uma lição óbvia: Sempre teste um design em mais de um monitor.

Por último, me desculpem por ficar esse tempo todo sem escrever e começar com um relato sobre a minha vida pessoal que não deve importar muito para ninguém… =) Prometo que o próximo post vai ser mais interessante!

Xico Xavier (cópia de segurança)

Venho percebendo que o Atum está fora do ar, então fiz uma busca no cache do Google para copiar um documento que não poderia ser perdido: as parábolas de Xico Xavier, o maior programador da história. Estavam no wiki do Ribamar, um cara que conheci em Campinas em 2004 e que me apresentou três dos meus softwares preferidos: Slackware, Mutt e LaTeX. Nem pedi autorização dele para copiar essa página, mas espero que ele não se importe… :) Não modifiquei absolutamente nada no texto.

Breve Introdução

O Estudo da filosofia Xiquista foi muito explorado pela humaninade até hoje, porque a programação é um ramo relativamente novo no campus do conhecimento humano (embora ela tenha sempre existido). O que se conhece até hoje são as Parábolas, Frases Cérebres, e Canções Xiquistas. As parábolas são passagens marcantes da Vida de Xico Xavier (por favor, não confundir com Chico Xavier), que devem ser absolvidas como lições por todos que não querem ser culpados depois de não saber programar. Cada Frase Cérebre está associada a uma Parábola (você entederá isso na hora em que começar a ler). Já as Canções Xiquistas são profundamente avançadas e não serão aqui estudadas, a princípio. Não existem ainda literaturas sobre o Xiquismo, tamanho mistério é. Somente é possível obter alguma informação por intermédium dessa página, ou se conhecer algum Xiquista (seguidor do Xiquismo) ou se você possuir uma conexão à rede Mentenet.

1ª Parábola

Xico Xavier foi simplesmente o maior programador da história. Ele foi o maior programador da história porque descobriu o Pascal. E o Pascal ‘ a melhor linguagem de programação contemporânea da situação porque foi descoberta por Xico Xavier.

Xico Xavier descobriu o Pascal tentando provar que o winchester era redondo. No início pensara ele haver chegado ao então ultrapassado Windows. Mas ao reconhecer tamanha evolução, logo percebeu: Descobriu uma nova linguagem de programação.

Xico Xavier foi quem realmente descobriu o Pascal, embora muitos digam que os indígenas já estavam lá. No começo não havia nada. Só BEGIN e END. Xico Xavier pegou o manual (escrito por ele mesmo) e começou a construir as funções. Xico Xavier mostrou ao seu professor sua descoberta. Mas o coordenador do curso DENNIS RITCHIE descobriu que Xico descobriu o Pascal. Dennis obrigou Xico Xavier a mostrar como desenvolveu as funções . Xico a princípio não percebeu a má-fé de Dennis. Após tudo explicado, Dennis ordenou que o Pascal fosse deletado em todas as máquinas e produziu o Basic.

Xico Xavier ressuscitou o Pascal ao terceiro dia com um Undelete. Um(a) aluno(a) do curso viu e foi correndo dedar Xico a Dennis. Não deram direito a Xico se explicar e expulsaram-no. E antes de se ir, pensou:

A sociedade é burra, nua, crua e cruel. Mas o homem que não xifra é fiel. E o homem que não se curva aos Estados Unidos é Fidel.

2ª Parábola

Xico Xavier então foi expulso do curso de Processamento de Dados. Dennis Ritchie também saiu da coordenadoria do curso. É que, a linguagem Basic fez tanto sucesso que Dennis enriqueceu e parou de trabalhar.

Para o lugar Dennis a escola chamou Bill Gatuno. Xico Xavier sabia o perigo disto e se inscreveu para o exame de seleção. Ele passou em primeiro, excedente. Ele sabia muito, mas não sabia o que os elaboradores das questões queriam.

As questões eram mais ou menos assim: 11+10 (na base decimal) é igual a: A) 15 na base 16; B) 10101 na base 2; C) 25 na base 8; D) Pó pará; tá tudo errado.

Mas os candidatos não podiam reclamar. A frase no início da prova era legível:

A interpretação das questões é parte integrante da prova. É proibido vendê-la separadamente.

Felizmente os $ortudo$ que ganharam as vagas, conscientes de que Xico estava ficando de fora, se converteram ao Xiquismo e desistiram.

Xico constatou que o curso estava fraco. Os aluno sabiam tudo de cor. Só de cor. As máquinas estavam com baixo rendimento. Xico Xavier decidiu que a primeira coisa a fazer era mudar de Sistema Operacional. Usando o Basic, a única linguagem encontrada no HD, Xico fez um e o chamou de Linux. Bill Gatuno deixou Xico de recuperação paralela em Pirataria de Software e em Pirataria da Computação e em recuperação serial, Piratéricos. A prova foi unificada. Veja ela:

1) Faça o melhor SO possível, comentado, documentado e explicado sucintamente com detalhes. Diga se ele é o melhor possível e justifique sua resposta. Cite e exemplifique !@&encentos sistemas operacionais, relacione e apresente objetivamente as melhorias. Analise e não se esqueça de calcular o tempo de execução dos sistemas. Tempo: 2 minutos.

A prova era prática. Não houve tempo nem de ligar o computador. Xico então foi obrigado a mostrar o Linux.

Bill Gatuno disse que não gostou do software: Como vai ser bom gastando tão pouca memória?De graça? De graça só software pirata.Código fonte aberto? Ninguém quer saber como foi feito. Mas quando Xico apresentou a interface gráfica, o X-Window, Bill Gatuno deu um pulo e gritou:

Tive uma idéia. Vou fazer um SO com interface gráfica. Vai se chamar Windows. Estou tão feliz! Xico, se você pagar o registros dos softwares pirateados desta máquina, você passou! Windows, Windows, Windows, hã, hã, hã! Então Bill fez o Bug, cheio de Windows, digo o Windows, cheio de bugs; que foi um sucesso de vendas. Todos perceberam o que Xico já dizia:

O Programa depende da Interface assim como a célula depende da Interfase

E Xico sabia mais:

Toda Interface é amigável, Basta que o usuário seja seu amigo

3ª Parábola

Xico Xavier, além de ser o maior programador da Matemática, da Física e da Geografia, foi o maior programador da História.

Pode-se assim considerá-lo por ter sido o mestre do grande filósofo do pensamento Maxista – Alienista Val_Max. O programador leitor já deve provavelmente ter alguma vez usado em seus programas uma constante ou uma variável denominada Val_Max, para armazenar um valor máximo. Talvez o programador não saiba, mas está homenageando o grande filósofo alimão Val_Max.

Val_Max foi quem criou a POO, a programação orientada a objetos, inspirado – por ser Xiquista – nos pensamentos de Xico Xavier, o maior programador de todos os tempos. Val_Max considerou que a luta de classes só terminaria quando fossem criados os objetos. As classes sempre existiram, mas antes da POO, o justiceiro máximo, o todo-poderoso, o Compilador, não reconhecia sua existência.

Val_Max observou que a luta entre classes só se extinguiria após o fim da propriedade privada de atributos. Para acabar com a propriedade privada, Val_Max tece uma grande sacada: todo objeto deveria ter um método CONSTRUTOR. Para construir um objeto público, o Construtor utilizaria toda a matéria-prima feita na privada. Com toda a matéria da privada sendo gasta pelo objeto público, os capitalistas, birrentos do jeito que são, deixariam de fezer suas aplicações nesse local. Como as aplicações de um capitalistas são suas necessidades, não podendo então deixar de fezê-las, eles procurariam um outro lugar para fezê-las, talvez o campo. Se passassem a fezê-las no campo, deixariam de ser Capitalistas para serem Interioristas, e estaria acabada a classe Capitalista.

Aí está a grande geniosidade de Val_Max: sem os Capitalistas, ninguém se apropriaria da privada; ninguém teria tanta necessidade de fazer aplicações; ninguém ficaria tanto tempo na fila do banco para aplicar; e acabaria o sobe-e-desce das bolsas nas mãos das mulheres que ficam nervosas quando estão vendo a cor do déficit e esses locais estão apropriados.

No entanto, os capitalistas deram um golpe. Obrigaram o compilador a aceitar a chave “private” na POO, o que transformou o materialismo-dialético em socialismo-utopléxico, que são as mesmas coisas mas são diferentes. Ainda assim, antes de morrer, Val_Max reascenderia para sempre a discussão proferindo, oh, atravessantemente por todas as veias de cada capitalista, a seguinte frase (inspirado nos pensamentos de Xico Xavier, o maior programador da história):

Programadores de todo o mundo: concatenai-vos

© 2005–2020 Tiago Madeira