quinta-feira, 29 de maio de 2014

Java e seus problemas

Os dois primeiros dos cinco objetivos iniciais da linguagem Java eram:
  1. Que a linguagem deve ser simples,orientada a objetos e familiar;
  2. Que seja robusta e segura.
A sintaxe inicial era, de fato, simples. Com o tempo foram adicionadas complicações, como os tipos genéricos. Por ser simples, robusta e segura, no entanto, a linguagem sempre foi prolixa.
Justamente pela quantidade de código necessária para executar as atividades mais simples, mesmo os mais ávidos programadores Java parecem não gostar de programar em Java. E então vemos uma grande quantidade de frameworks nos quais pode-se programar em XML e fazer muito pouco em Java. 
Então, jogam-se pela janela a robustez e a segurança para que se possa diminuir o número de linhas em Java. Aparentemente, o número de linhas em XML não tem relevância. Adoto a filosofia Lisp: não gosto de diferenciar configuração de programação. Se troco uma linha de código por dez de configuração, o sistema fica mais complexo.
As evoluções na sintaxe tratam de tornar a linguagem mais flexível, mas têm que conviver com o modelo antigo de execução. Java, entretanto, não foi criada para ser uma ferramenta de ponta. Ela foi criada para ser o novo COBOL. Por isso, ela deveria, creio eu, tentar manter a sintaxe simples, acessível, e legível. Surpreendentemente, coisas simples, como strings multilinhas e sintaxe para hashes, não foram adicionados à sintaxe ainda.
Parece-me que Java está tentando muito ser o que não é e está sofrendo por isso.

quarta-feira, 21 de maio de 2014

Monitorando a infraestrutura

Recentemente, passei por muitos problemas com a infraestrutura da Oracle (e a falta de interesse do suporte em resolvê-los). Para assegurar-me de que não havia um problema de rede, resolvi monitorar dois serviços básicos: o banco e o ldap.

Usando Perl e o netcat (comando nc no Linux), escrevi um pequeno script para monitorar as conexões do servidor de aplicações.

#!/usr/bin/perl

$|=1;
my $dump;
my %hosts=(srv1=>1521,srv2=>389);
my $out;
for my $host (keys %hosts) {
  my $port=$hosts{$host};
  $out=`nc -z $host $port`;
  if($out!~/succeeded/) {
    open($dump,'>>', '/tmp/monitor.txt');
    print $dump `date`;
    print $dump "$host $port Failed\n";
    close($dump);
  }
}

O hash %hosts associa cada servidor a uma porta e o comando "nc -z" realiza o trabalho de testar a conexão. Se o resultado não contiver a palavra "succeeded", imprime-se a data e a combinação de servidor e porta que falhou.

Ele registra apenas as tentativas mal-sucedidas para evitar que o arquivo monitor.txt cresça muito.

Adicionei uma linha à cron, para executar o script uma vez por minuto:

* * * * * /home/forinti/monitor.pl

E assim constatei que meus problemas nada tinham a ver com a rede.

quinta-feira, 8 de maio de 2014

Supercotas

As cotas nas universidades não cessam de gerar polêmica, mas é difícil encontrar alguma opinião sobre a necessidade de diversidade no âmbito acadêmico. Sim, porque o objetivo das cotas é, justamente, dar mais cor ao meio universitário.

Comumente, as universidades são vistas como um meio para uma carreira lucrativa, não como centros de produção de conhecimento. Quem vê o curso superior como preparação para o mercado de trabalho, pode muito bem ignorar a necessidade de variedade; quem o vê com objetivos mais amplos, não pode ignorar a importância da diversidade.

Atualmente, essa injeção de diversidade concentra-se justamente na dimensão racial/étnica. É um começo, mas o processo seletivo continua o mesmo; selecionam-se candidatos capazes de guardar um volume enciclopédico de conhecimento e que tenham o tempo necessário para a preparação. Nesse sentido, os cotistas não são muito diferentes dos demais.

Eu proponho que as cotas sejam transformadas em supercotas e creio que, no processo, criaríamos um vestibular mais democrático ainda.

A solução é simples: as vagas seriam sorteadas entre todos os aprovados com a nota mínima. Desta forma, seria atingida de maneira simples a diversidade máxima. Todas as dimensões de diversidade seriam contempladas num único sistema, sem que nenhum segmento fosse destacado: negros, índios, mulheres, pobres, ricos, criativos, concentrados, distraídos, etc.

Além disso, o vestibular atual cria a ilusão de que os que não são aprovados merecem seu destino e isso acaba por abafar a discussão sobre o número de vagas. Para a educação primária e secundária, ninguém discute a necessidade de haver vagas para todos, mas para o terceiro grau aceita-se que existam vagas para apenas 5% dos candidatos. Num sistema por sorteio, encontrando-se todos os candidatos nas mesmas condições, é de se esperar que cresça a pressão por mais vagas nas universidades públicas.