# Transformação

Caloni, 2010-06-01 <quotes> <self> <now> [up] [copy]
Apenas testemunhe seu estado interior: a transformação e a liberdade virão.
Eckhart Tolle (O Poder do Silêncio, 2004)

# Const e Volatile

Caloni, 2010-06-04 <computer> [up] [copy]

Padrão C (ISO/IEC 9899:1990)

   
   6.5.3 type-qualifier
    const
    volatile
   Padrão C++ (ISO/IEC 14882:1998)
   
   cv-qualifier
    const
    volatile

Qualificadores de tipo

Chamamos de qualificador de tipo as palavrinhas mágicas **const** e **volatile**. Na prática elas definem como uma determinada variável será usada e se comportará durante a vida do programa.

Const

Uma variável const não pode ser alterada pelo programa durante sua execução, apenas durante sua inicialização:

   const float pi = 3.14; // até onde sabemos, pi não irá mudar neste Universo

No exemplo acima, o valor de pi não pode mais ser alterado. Só que repare que ele foi, em determinado momento, alterado com um valor constante: na sua inicialização. Isso quer dizer que:

* pi é uma variável no programa representada por um local na memória **endereçável **pelo programa

* pi não é um define do pré-processador que irá virar uma constante literal (3.14, por exemplo)

   // eu posso endereçar uma constante,
   // desde que qualifique corretamente meu ponteiro
   const float* ppi = & pi;

Teoricamente a região da memória que contiver uma variável const pode ser qualificada pelo sistema operacional como somente-leitura, mas isso não é uma obrigação. É obrigação do compilador avisar sobre tentativas de alteração da variável no meio do programa, mas nem sempre é possível enxergar que a memória não é alterável. Dessa forma, resultados imprevisíveis podem ocorrer.

Uso prático

Eu costumo usar variáveis const no lugar de defines. Além de ganhar na tipagem as constantes não precisam ser necessariamente globais, nem acessíveis por outros módulos. Um outro uso muito comum é criar variáveis locais que você sabe que não devem ser alteráveis por ninguém, como o tamanho de matrizes primitivas.

namespace Math
{
    const float Pi = 3.14;
}
//...
int func1(int x)
{
    float calc = x * Math::Pi;
    return calc;
}
//...
int func2(int y)
{
    const size_t PathSize = MAX_PATH * 2;
    //...
    char path[PathSize];
    //...
}
 

Volatile

O significado do volatile teoricamente muda de implementação para implementação, mas na prática é uma forma de definir uma variável que está sendo acessada por outros programas/threads/entidades espíritas que podem alterar o seu valor sem seu programa notar quando.

O exemplo clássico da API Win32 é o InterlockedIncrement, que realiza operações atômicas em valores inteiros. Para fazer isso é necessário usar um recurso interno disponível pelo processador que irá modificar a memória sem intrusão de outras threads/processadores.

Uso prático

Variáveis volatile geralmente interagem de alguma forma com o sistema em que rodam, e são representadas por ponteiros para memória retornada por esse sistema ou documentada como sendo de uso específico.

Const e Volatile

É possível que exista uma variável que não pode ser modificada pelo seu programa, mas é modificada pelo sistema, de forma que ela é uma mutante!

   
   /// endereça o relógio do sistema, atualizado a cada 1/100 milissegundos
   const volatile int* g_systemClock = (const volatile int*) 0x7689B9D4;

A definição de *g_systemClock é de uma memória que não pode ser alterada; só que ela é, pelo sistema. Então a variável também é volatile. No entanto, independente de ser const ou volatile, o tipo nunca será **alterado**, apenas **qualificado**. São duas coisas diferentes na linguagem.


# O Golpista do Ano (Glenn Ficarra, John Requa, 2009)

Caloni, 2010-06-04 <cinema> <movies> <miniviews> <fragments> [up] [copy]

Personagens que acompanham as personas dos atores, mas desafiam a realidade dos eventos. A vida real desses três sujeitos é uma comédia, mas definitivamente eles possuíam poucos momentos para rir de si mesmos.


# Almas à Venda (Sophie Barthes, 2009)

Caloni, 2010-06-09 <cinema> <movies> [up] [copy]

Esse filme escrito e dirigido pela estreante Sophie Barthes tenta usar o conceito de alma mais ou menos como um órgão transplantado, mas muito mais flexível, já que é possível usar a alma de outras pessoas para potencializar áreas na vida em que se é um zero à esquerda. Aí é que entra Paul Giamatti que interpreta... Paul Giamatti! Ele está com problemas com uma nova peça e resolve trocar de alma por uma que seja compatível com o personagem que tenta interpretar.

Sendo filmado como um thriller cômico, o filme ganha ritmo apenas ao tentar explicar como funciona a extração e o transplante de almas, e nem isso consegue fazer com propriedade. Não deixa de ser contraditório saber que, ainda que não se saiba exatamente como o mecanismo de almas funciona, já existem comparações entre elas (tanto que a suposta alma de Al Pacino é extremamente valiosa). De qualquer forma isso pode ser visto como uma crítica a respeito de como damos valor a coisas que simplesmente não sabemos o valor (e o fato do filme nunca se preocupar em explicar o que é alma). Há uma referência óbvia também à privacidade que temos hoje em dia. No anúncio da extração de almas por telefone fala-se sobre a privacidade total, mas quando o ator vai à consulta fica em uma sala de espera com um monte de pessoas e é chamado pelo nome.

Outro aspecto interessante é que as almas possuem cores e formas diferentes, e é óbvia a piada das celebridades terem almas "maiores" fisicamente, enquanto a do protagonista é minúscula e possui um formato pouco lisonjeador. A forma como a alma é tratada implica em como tratamos coisas de hoje em dia de maneira completamente banal. Se antes, no senso geral, a alma é algo inviolável, sagrado, na conversa com o Dr. fica bem óbvio que passa a ser mais um simples órgão, ou o que o valha. (O ator exclama "até que ponto chegamos", no que o Dr. responde "é a tecnologia, seu avanço", como se esse fosse o único empecilho para a agora possível extração de almas).

Ao ver a técnica de extrair almas é inevitável a comparação com o apagar de memória em Brilho Eterno de uma Mente sem Lembranças, e é notável como pode-se comparar ambos os filmes, principalmente na superioridade do roteiro de Brilho Eterno, que não se deixa intimidar pela ideia original e poderosa. Infelizmente, Almas à Venda sucumbe à sua própria ideia de ser original e em seu segundo e terceiro atos parte para um thriller clichê. É triste ver um tema tão bom não ser expandido em suas potencialidades, se bastando em uma historinha besta que poderia muito bem estar em outro contexto (tráfico de qualquer outro órgão, por exemplo).


[2010-05] [2010-07]