Terça-feira, Novembro 03, 2009

Java vs. C#, uma perspectiva estranha

Você pode achar o que quiser na disputa entre Java e C#, mas onde na documentação da Microsoft você vai encontrar uma afirmação tão direta, sincera e esclarecedora?

"Prior to Java 2 Standard Edition, JDK 1.4, the AWT focus subsystem was inadequate."

http://java.sun.com/javase/6/docs/api/java/awt/doc-files/FocusSpec.html

Quinta-feira, Outubro 29, 2009

bug bizarro no RVCT 2.2

Descobrimos um bug bizarro no RVCT 2.2 onde a compilação de uma chamada a um operador de conversão do std::auto_ptr gera as seguintes instruções:

1. push into stack from register
2. unconditionally jump to (1)

Alguém já viu isso?

Segunda-feira, Outubro 19, 2009

Dell, meu CD arranhou, e agora?

Está chegando o segundo teste do atendimento ao cliente da Dell. Não posso mais dizer suporte ao cliente porque o meu contrato de suporte expirou, certo?

Pois bem, o CD do Windows XP que acompanhava a minha primeira máquina Dell arranhou. E adivinha? O Windows XP naquela máquina não inicia mais.

O que eu quero é bem simples: uma cópia nova deste CD. Posso até mesmo fazer o download, se eles quiserem economizar a mídia e a entrega. Mas será que a Dell vai se prontificar a substituir esse CD?

Sábado, Outubro 17, 2009

Site pessoal

Estou a fim de um site pessoal mais glamouroso. Acabei de abrir um ticket no registro.br pelo domínio pedro.lamarao.nom.br.

Vou reunir ali meu site de Google Sites, e este blog, que já mostra ali no canto o meu feed do Twitter.

Quinta-feira, Setembro 24, 2009

Sobre o assim chamado golpe de Honduras

Um direitista safado, e grande amigo, me apontou para este artigo que argumenta sobre a falsidade de se considerar golpe de estado o que está acontecendo agora em Honduras.

O resumo executivo é: a Constituição de Honduras determina a deposição imediata do Presidente caso ele faça esforços para promover a própria reeleição.

Leia!

Sexta-feira, Setembro 18, 2009

C++ e puramente funcional

Usando GCC 4.5, Dehydra e um script maroto, seria possível implementar uma verificação estática de que uma função é puramente funcional?

__attribute__((user("functionally_pure")) int foo_free_of_side_effects (int x, int y);

Quarta-feira, Setembro 02, 2009

byte, address e dispositivos

Suponha que você tem uma variante de C++0x onde existem apenas os tipos: byte, address e size. byte é uma sequência de oito bits, address é uma posição na memória e size é a distância entre duas posições na memória.

Com bytes você pode fazer bit shifting e outras operações próprias de sequências de bits; com address você pode navegar pela memória, obtendo sucessores e predecessores; com size você pode navegar pela memória a passos largos.

Suponha, além disso, que o programa tem à disposição um allocator que obtém pedaços de memória com tamanho fixo, e acesso a dispositivos por uma API razoável.

Que tipos de programa você poderia escrever?

Você poderia copiar dados de um dispositivo para outro:


void copy (device& in, device& out)
{
const size length = allocator.page_size();
address buffer = allocator.allocate_page();

size n;
while ((n = in.read(buffer, length)) > 0) out.write(buffer, n);
}


Você poderia copiar dados, criptografando com XOR:


void copy_and_encrypt (device& in, device& out, byte key)
{
const size length = allocator.page_size();
address buffer = allocator.allocate_page();

size n;
while ((n = in.read(buffer, length)) > 0)
{
for (address i = buffer; i != buffer + length; ++i) *i ^= key;
out.write(buffer, n);
}
}


Acredito que você poderia realizar praticamente todo tipo de criptografia apenas com operações binárias.

De onde um programa obteria a chave? De outro dispositivo de entrada, talvez.

Meu ponto é que nada disso está relacionado com aritmética em domínios numéricos; mesmo com a existência de size no programa, que é claramente uma "quantidade". Ainda é possível escrever programas interessantes mesmo sem a possibilidade de realizar aritmética com valores do tipo size.