# Shareando Ponteiros

2014-09-03 tag_coding ^

Apesar de já ter palestrado algumas vezes sobre Boost e STL, acho que eu nunca escrevi muito sobre esses assuntos no blogue. Acho que o tamanho dessas bibliotecas assusta um pouco. Mas temos que começar de algum lugar, certo? E já que é pra começar, eu gostaria muito de saber de você, programador miserável, que passou poucas e boas nesses 10 anos de padrão 98 brincando com templates quando eles ainda estavam em beta: se fosse para melhorar um aspecto da sua vida de código, qual seria? Qual é aquela coisa que te atormenta como insetos vidrados no seu monitor noite adentro?

Que tal alocação de memória e ponteiros? Vamos matar dois coelhos com um template só?

A triste realidade do código legado

"Ah, mas tem que usar alguma biblioteca bizarra com milhões de dependências e que vai quebrar todo o fonte aqui da empresa. Sem contar que vai ter que passar de novo pelos unit tests, vai dar erro de compilação, a LIB XPTO não funciona sem dar três pulinhos virado para a cafeteira e..."

Cada caso é um caso, existe o melhor dos mundos e o pior. Mas (quase) todos têm solução. Mesmo que tudo que você tenha disponível seja um bartante e um clipe, podemos tentar alguma mágica/gambiarra/adaptação técnica. Vamos ver os casos mais comuns:

Aqui no trampo não tem frescura: posso usar C++11 (acho que até 14, 17, 34...), Visual Studio mais novo, Windows 9

Um cenário perfeito para começar. A única coisa que você precisa fazer em seus novos projetos e refatorações é incluir um único cabeçalho:

#include <memory>

E pronto! Se abriu um mundo mágico onde as alocações serão compartilhadas entre funções sem se perder quem deleta o quê. Não precisa nem checar se o ponteiro é nulo, basta alocar direto e jogar para dentro do nosso mais novo smart pointer da STL:

#include <memory>
#include <string>
#include <iostream>
struct Person
{
    Person() { std::cout << "Person created\n"; }
    ~Person() { std::cout << "Person destroyed\n"; }
    std::string name;
    std::string surname;
    int age;
    std::string phone;
};
typedef std::shared_ptr<Person> PersonRef;
PersonRef CreatePerson()
{
    return PersonRef(new Person);
}
void GetName(PersonRef person)
{
    person->name = "Carl";
}
void GetSurName(PersonRef person)
{
    person->surname = "Sagan";
}
void GetAge(PersonRef person)
{
    person->age = 79;
}
void GetPhone(PersonRef person)
{
    person->phone = "+01 042 4242-4242";
}
void PrintPerson(PersonRef person)
{
    std::cout << "Name: " << person->name << " " << person->surname
        << "\nAge: " << person->age
        << "\nPhone: " << person->phone
        << std::endl;
}
void CreateAndPrintPerson()
{
    PersonRef person = CreatePerson();
    GetName(person);
    GetSurName(person);
    GetAge(person);
    GetPhone(person);
    PrintPerson(person);
}
int main()
{
    CreateAndPrintPerson();
}

E pronto: você nunca mais vai precisar se preocupar com quem deleta o ponteiro, nem quantas cópias desse ponteiro andam por aí. O shared_ptr da STL, assim como a versão que já tem faz um tempo no boost, mantém um contador de referência para cada cópia do objeto que mantém o mesmo ponteiro "dentro de si". Só quando esse contador chegar a zero, ou seja, não há mais ninguém referenciando essa região da memória, o ponteiro é deletado.

O std::shared_ptr funciona desde o SP1 do Visual Studio 2010. Sem Service Pack ou em versões mais antigas pode haver disponível no namespace tr1, resquício de quando esse novo padrão ainda estava em definição.

Aqui no trampo vivemos na era pré-jurássica, onde pessoas mais velhas torcem o nariz quando veem um tal de template.

Vou imaginar que você usa o Visual Studio 2003, um dos primeiros da safra ".NET", que, mais uma vez, NÃO TEM QUALQUER RELAÇÃO COM C++ .NET.

Bem, nesse caso, "welcome... to the desert... of the double":

<code>------ Build started: Project: VS2003, Configuration: Debug Win32 ------

Compiling...

usando-shared-ptr.cpp

shared-ptr.cpp(15) : error C2039: 'shared_ptr' : is not a member of 'std'

shared-ptr.cpp(15) : error C2143: syntax error : missing ';' before '<'

shared-ptr.cpp(18) : error C2146: syntax error : missing ';' before identifier 'CreatePerson'

shared-ptr.cpp(18) : error C2501: 'PersonRef' : missing storage-class or type specifiers

shared-ptr.cpp(20) : error C2064: term does not evaluate to a function taking 1 arguments

shared-ptr.cpp(20) : warning C4508: 'CreatePerson' : function should return a value; 'void' return type assumed

shared-ptr.cpp(23) : error C2146: syntax error : missing ')' before identifier 'person'

shared-ptr.cpp(23) : error C2182: 'GetName' : illegal use of type 'void'

shared-ptr.cpp(23) : error C2059: syntax error : ')'

shared-ptr.cpp(24) : error C2143: syntax error : missing ';' before '{'

shared-ptr.cpp(24) : error C2447: '{' : missing function header (old-style formal list?)

shared-ptr.cpp(28) : error C2146: syntax error : missing ')' before identifier 'person'

shared-ptr.cpp(28) : error C2182: 'GetSurName' : illegal use of type 'void'

shared-ptr.cpp(28) : error C2059: syntax error : ')'

shared-ptr.cpp(29) : error C2143: syntax error : missing ';' before '{'

shared-ptr.cpp(29) : error C2447: '{' : missing function header (old-style formal list?)

shared-ptr.cpp(33) : error C2146: syntax error : missing ')' before identifier 'person'

shared-ptr.cpp(33) : error C2182: 'GetAge' : illegal use of type 'void'

shared-ptr.cpp(33) : error C2059: syntax error : ')'

shared-ptr.cpp(34) : error C2143: syntax error : missing ';' before '{'

shared-ptr.cpp(34) : error C2447: '{' : missing function header (old-style formal list?)

shared-ptr.cpp(38) : error C2146: syntax error : missing ')' before identifier 'person'

shared-ptr.cpp(38) : error C2182: 'GetPhone' : illegal use of type 'void'

shared-ptr.cpp(38) : error C2059: syntax error : ')'

shared-ptr.cpp(39) : error C2143: syntax error : missing ';' before '{'

shared-ptr.cpp(39) : error C2447: '{' : missing function header (old-style formal list?)

shared-ptr.cpp(43) : error C2146: syntax error : missing ')' before identifier 'person'

shared-ptr.cpp(43) : error C2182: 'PrintPerson' : illegal use of type 'void'

shared-ptr.cpp(43) : error C2059: syntax error : ')'

shared-ptr.cpp(44) : error C2143: syntax error : missing ';' before '{'

shared-ptr.cpp(44) : error C2447: '{' : missing function header (old-style formal list?)

shared-ptr.cpp(53) : error C2146: syntax error : missing ';' before identifier 'person'

shared-ptr.cpp(53) : error C2065: 'person' : undeclared identifier

shared-ptr.cpp(54) : error C3861: 'person': identifier not found, even with argument-dependent lookup

shared-ptr.cpp(55) : error C3861: 'person': identifier not found, even with argument-dependent lookup

shared-ptr.cpp(56) : error C3861: 'person': identifier not found, even with argument-dependent lookup

shared-ptr.cpp(57) : error C3861: 'person': identifier not found, even with argument-dependent lookup

shared-ptr.cpp(58) : error C3861: 'person': identifier not found, even with argument-dependent lookup

VS2003 - 37 error(s), 1 warning(s)

</code>

Pois é, 37 erros. Depois perguntam por que as pessoas ficam com medo de programar em C++...

Porém, a correção é mais simples do que parece: baixar o boost e trocar o nome do namespace.

#include <boost/shared_ptr.hpp>
//...
typedef boost::shared_ptr<Person> PersonRef;
//...

_ATENÇÃO! Nos meus testes a única versão funcionando com o VS2003 foi a 1.47. Mas já é alguma coisa_

Aqui não tem jeito, não. O pessoal olha feio quando usamos classe e a palavra boost é proibida de ser usada no escritório.

Não existe situação difícil que não possa piorar. Porém, mesmo nesse caso ainda há algo a se fazer, já que smart pointer utilizam mecanismos existentes na linguagem C++ desde os primórdios (ou bem próximo disso). Tudo que você precisa para criar seu próprio shared_ptr é do construtor padrão, do destrutor padrão, do construtor de cópia e dos operadores de atribuição e ponteiro. E, claro, não se esqueça de usar template se for permitido. Se não for, a coisa complica, mas não se torna impossível.

#pragma once
// Não façam isso em casa! Usem modelo de smart pointers já construídos (como o do boost).
template<typename T>
class shared_ptr
{
public:
	shared_ptr() : m_p(), m_counter()
	{
	}
	shared_ptr(T* p) 
		: m_p(p), m_counter(new int(1)) 
	{
	}
	shared_ptr(const shared_ptr& left)
		: m_p(left.m_p), m_counter(left.m_counter)
	{
		if( m_counter )
			++*m_counter;
	}
	shared_ptr& operator = (const shared_ptr& left)
	{
		if( m_p )
		{
			if( --*m_counter == 0 )
			{
				delete m_counter;
				delete m_p;
				m_counter = 0;
				m_p = 0;
			}
		}
		if( m_counter = left.m_counter )
			++*m_counter;
		m_p = left.m_p;
	}
	~shared_ptr()
	{
		if( --*m_counter == 0 )
		{
			delete m_counter;
			delete m_p;
			m_counter = 0;
			m_p = 0;
		}
	}
	T* operator -> ()
	{
		return m_p;
	}
private:
	int* m_counter;
	T* m_p;
};
#include "shared_ptr.h"
//...
typedef shared_ptr<Person> PersonRef;
//...

E é isso. A lição de hoje é: quem quer, arruma um jeito. Quem não quer, uma desculpa.


# A Garota Ideal [link]

2014-09-07 tag_movies ^

Vendido como comédia, esse filme é sobre um rapaz com problemas para se socializar (Ryan Gosling) após a morte do pai e que resolve comprar uma boneca pela internet (você sabe, "aquela" boneca) e tratá-la como sua namorada na frente de seu irmão e esposa e para toda a cidadezinha onde moram. Nada é forçado, exceto a reação praticamente positiva de todos os habitantes da cidadela, que gosta de um rapaz ausente da vida em comunidade exceto pelas missas na igreja e as idas e vindas do trabalho.

Felizmente, o lado cômico apresentado pelo diretor Craig Gillespie dura apenas o bastante para que nos sintamos à vontade com aquela situação e vejamos com uma melhor perspectiva um estudo de personagem que vai além do interpretado por Gosling. Em muitos momentos o filme está dizendo para o espectador experimentar a ausência de uma atriz no papel da namorada de plástico e nos fazer pensar nas pessoas que fazem parte do nosso círculo de relacionamentos (próximos ou não) e qual a diferença entre dizer bom dia casualmente/repetidamente para alguém de carne e osso ou apenas uma ideia.

Aliás, o que mais contém nossos risos e apela para o caráter dramático da história é um clima e fotografia particularmente depressivos: usando poucas cores em ambientes quase sempre com chuva ou neve, o diretor de fotografia Adam Kimmel faz uma melancólica brincadeira com um clichê comum em romances: situar a história de amor quase sempre na primavera ou pelo menos com cenários mais quentes. Dessa forma ele aponta visualmente que há algum problema com o jovem, embora tudo pareça correr como um relacionamento normal.

Por fim, este filme não seria metade do que é sem um elenco curiosamente competente, mesmo que muitas vezes nem sabendo direito o que fazem com diálogos e situações que em nada aprofundam o tema. De qualquer forma, A Garota Ideal consegue deixar sua mensagem de maneira quase que completamente satisfatória.


# Kung-Fu Futebol Clube [link]

2014-09-07 tag_movies ^

Shaolin Soccer é uma "versão beta" do hilário Kung-Fusão, mas é muito mais coerente em sua proposta de usar o Kung-Fu como uma forma de todas as pessoas melhorarem o que quer que façam no dia-a-dia através dessa arte milenar chinesa. Coerente, mas não menos confusa: apresentando personagens de maneira mais ou menos aleatória, e com o desafio de montar um time de futebol com personagens obviamente simplistas (o gordo, o fumante, o magro, etc), os únicos que possuem um pouco mais de polimento no roteiro são as versões original e nova da lenda conhecida como "Pé de Ouro": pernas dotadas de uma força descomunal que chutam bolas (e qualquer outra coisa) com força desproporcionalmente absurda. (Ah, sim, claro, e o interesse amoroso do herói.)

O forte do filme com certeza não é sua história, que oscila entre o humor, o drama e o tocante, sendo que o "tocante" sempre é exagerado através não apenas do recurso batido da trilha sonora, mas de situações absurdamente cruéis e/ou desproporcionais. Sua força, ironicamente, provém da mesma característica: tentando apresentar formas diferentes de jogar futebol com habilidades de lutadores de artes marciais o filme acaba quase incidentalmente criando uma nova forma de contar uma história sobre um esporte.

Mas é na sua mensagem central que Shaolin Soccer consegue chamar a atenção: apelando para símbolos e alegorias que lidam basicamente com o desapego do ego e a concentração dos lutadores, fica claro que para vencer não basta ter os poderes de um super-lutador, mas de aceitar que antes de tudo aquelas pessoas não são ninguém sem a dedicação incondicional à arte que dominaram.

O resto basicamente são lutas coreografadas e animadas com efeitos visuais interessantes na época, mas hoje já soam datados. Mesmo assim, uma diversão à parte.


# Bem-Vindo a Nova York [link]

2014-09-11 tag_movies ^

Devereaux, o personagem de Gérard Depardieu em mais um papel memorável, é um intelectual que está no topo da cadeia do mercado financeiro e que ainda é casado com uma esposa bilionária. Por onde passa espalha admiração. É um senhor fisicamente grande e desengonçado, mas educado e cordial. Fora isso é um pervertido sexual que simplesmente não consegue se controlar diante de uma mulher, e é isso que abala completamente as estruturas sociais de sua vida bem-sucedida.

A direção de Abel Ferrara (Vício Frenético e Olhos de Serpente, ambos com Harvey Keitel) e o roteiro co-escrito com Christ Zois conseguem prender 100% de nossa atenção durante todo o desenrolar inicial quase sem diálogos. A introdução passa por longas cenas de sexo que são necessárias para a narrativa -- diferente de "Azul é a Cor mais Quente", o soft-porn premiado em Cannes. Os acontecimentos eróticos vão aos poucos revelando o aspecto doentio e asqueroso do protagonista, que quase previsivelmente fulmina em um processo judicial longo e doloroso. A consequência disso para o filme são incursões filosóficas sobre diversos temas envolvendo os óbvios riqueza e poder, mas também derivados mais interessantes, como corrupção e imoralidade. É fato que essas pessoas não prestam em praticamente nenhum aspecto de suas luxuosas vidas, mas assim como Scorsese em O Lobo de Wall Street, o papel de julgar fica por conta do espectador: as cartas de ambos os lados estão abertas na mesa.

O influente e inteligente Monsieur Devereaux atingiu em sua carreira uma síntese pragmática ao ignorar toda a assimetria financeira que gira em torno do mundo ao desistir de seus ideais acadêmicos (além de seu próprio caráter). Diferente de sua esposa Simone (Jacqueline Bisset), que nunca teve as aspirações platônicas do marido, mas que ao menos possui um objetivo aparentemente claro na vida: obter cada vez mais poder e influência. Esse dueto que duela sem vítimas é um dos temas mais batidos em sequências teatrais, e encontra uma certa necessidade de existir no mundo como o encaramos hoje. Afinal, a massa que idolatra é a mesma que apedreja cinco minutos depois. O ser humano que ninguém conhece ganha o aval de todos por onde passa e o direito de ser um canalha. Quando a verdade é revelada, o mesmo canalha mal se surpreende quando é repreendido por uma sociedade sedenta por sacrifícios simbólicos que provem que o ser humano não é tão vil e odioso assim. Tudo o que queremos é manter vivo nossos ideais, por mais que estes permaneçam cada vez mais apenas no território das ideias, não valendo muito como moeda de troca nas ruas frias e escuras.

Afinal, se há uma mensagem uníssona em Bem-Vindo a Nova York é: quem se importa? Depois de assistir esse filme, talvez seja a única coisa que todos nós concordemos.


# Meu Amigo Harvey [link]

2014-09-13 tag_movies ^

Todos têm aquele amigo indesejável ou, o mais provável, aquela qualidade indesejável em um ente querido que queremos esconder para nos tornarmos aceitos pela sociedade. Se não for em um ente querido pelo menos em nós mesmos. A questão é: "Harvey", uma produção de 1950 dirigida por Henry Koster (O Manto Sagrado) e estrelada por James Stewart (dos filmes de Hitchcock) mostra isso de uma maneira genial: cria um coelho gigante como amigo invisível de um gentil senhor que vive com sua família.

A partir dessa proposta simples e direta somos apresentados a Elwood P. Dowd e toda a polidez, generosidade e compreensão de mundo que um ser humano consegue ter quando está enfeitiçado pelo espírito do "não se levar a sério". Encarado por todos como um louco, o trunfo do filme é nunca negar isso, mas fazer repensar o conceito de loucura.

Ele pode ter seus momentos escrachados, como toda comédia, e deixar algumas pontas soltas no processo, mas nunca se esquece de usar todo acontecimento a seu favor para provar o seu ponto: se é loucura ser gentil com todas as pessoas que encontramos no mundo, o quão mesquinho e miseráveis somos ao acreditar que o normal é exatamente o oposto.


# Superman II: A Aventura Continua [link]

2014-09-13 tag_movies ^

Superman II teve complicações que começam lá na história do trabalho original. O diretor Richard Donner havia imaginado o final do primeiro como o início do segundo, e o clímax do segundo seria o final do primeiro. A versão original proposta por Donner foi quase totalmente refeita e lançada para Home Vídeo em 2006, uma vez que ele já havia filmado quase todas as cenas antes de ser demitido e ter seu lugar ocupado por Richar Lester (que refilmou todas as cenas).

A versão de Richard Lester é a conhecida de todos e a que estreou nos cinemas em 1980 e apresenta três vilões kriptonianos, os mesmos que haviam sido presos na zona fantasma no filme original, e que foram ironicamente soltos por uma bomba lançada ao espaço por Superman. A história paralelamente mostra General Zod e seus dois comparsas se aproximando da Terra e descobrindo seus poderes frente aos fracos terráqueos enquanto Louis Lane descobre aos poucos que sempre esteve do lado do homem de aço com óculos, o que faz com que confessem seu amor mútuo e faz com que Kar-El elimine sua parte alienígena para viver como um humano ao lado de Louis.

Podemos encontrar ação e humor igualmente equilibrados nas sequências de Superman II, mas perde parte da força dramática de seu antecessor justamente por este já ter impactado o suficiente em sua sequência final envolvendo a mudança do tempo, além de transformar a vulnerabilidade de Kar-El em apenas 20 minutos de cena, quando ele descobre que o planeta foi invadido por kriptonianos menos nobres.

Ainda assim, Superman II - A Aventura Continua se mostra bem superior à média das produções de super-heróis de hoje em dia, em que os gostos massificados dos fãs de quadrinhos -- mas não necessariamente de Cinema -- são resolvidos com mais cenas de lutas e efeitos digitais. Se até uma narrativa rasa de um filme dos anos 80 consegue ser mais ambiciosa que as infinitas continuações de remakes dessa década, para onde vai a imaginação dos verdadeiros fãs da arte do áudio-visual?


# Superman II - The Richard Donner Cut [link]

2014-09-19 tag_movies ^

Richard Donner's cut é superior à versão original não por causa da inspiração original da história. Isso é besteira, pois o roteiro já havia sido mastigado inúmeras vezes, ao ponto de ter sido dito que não havia nem mais um palavra de Mario Puzzo (que havia escrito ambos os originais). Além disso, o próprio original foi modificado para encaixar o final da rotação da Terra que seria usado apenas em sua continuação e por um motivo mais legítimo (Zod e sua trupe teriam destruído boa parte do planeta).

Porém, o tom deste Superman II está em sintonia com o drama filosófico/religioso do original, além de saber usar o humor em momentos pontuais que não fogem da trama, diferente das tiradas sem critérios adicionadas por Richard Lester (o novo diretor sequer encontra freios após um momento em que todos acham que Superman está morto). Também é preciso dar créditos para o diálogo original com Jor-El, mal adaptado ao usar sua esposa depois que Marlon Brando se recusou a voltar ao set de filmagem para refazer suas cenas (curiosamente sua fala como está foi usada por Brian Singer em Superman Returns).

Mesmo a trilha sonora consegue ser visivelmente mais inspiradora, tanto por usar os arranjos originais de John Williams (posteriormente modificados por Ken Thorne no filme de 80) quanto por entender a proposta deste ser mais uma aventura épica do super-herói dos quadrinhos que irá alterar as bases morais do personagem, e não um episódio grandioso, embora desnecessário.

E mesmo o tratamento à história, apesar de quase idêntica, tem seus méritos por não fugir tanto do pseudo-realismo criado na estreia do herói, como o salto de Louis Lane para provar que Clark Kent é Superman (e também faz muito mais sentido ela perceber isso mais no início da trama, e não depois de ter revisto o homem de aço meia-dúzia de vezes). A fantasia dos óculos tem um limite, um contrato frágil com o espectador. É saudável não forçar demais a barra.

Por fim, apesar da conclusão parecer cópia descarada do original é preciso lembrar, como já havia dito, que isso foi fruto da confusão do lançamento do original com atraso, em que o roteiro de ambos se juntaram para que fosse terminado pelo menos o primeiro filme. Engraçado que ambos são usados exclusivamente por causa de Louis, o que me faz reavaliar a fala de Ursa quando diz que o super-herói da humanidade "se contenta com pouco".

Na minha humilde opinião, já não podemos mais dizer o mesmo de Amy Adams no novo Homem de Aço (para a atriz, que fique bem claro; infelizmente a fala de Ursa ainda é verdade para o seu personagem frágil e sem sentido).


# Nacho Libre [link]

2014-09-20 tag_movies ^

Comédias com Jack Black e Jim Carrey não são protagonizadas por atores atuando, mas antes por comediantes que usam a oportunidade para fazer suas esquisitices e deixar a plateia rir no vácuo de suas piadas muitas vezes de gosto duvidoso.

Aqui Jack Black é Nacho, que sonha em ser um astro da luta livre, mas que por enquanto tem que se contentar com seu emprego de cozinheiro (e frade) para órfãos de uma igreja isolada da cidade. Enquanto isso, surge por algum motivo uma nova professora para os meninos (são todos meninos) que é uma freira/interesse amoroso "how-convenient" para o nosso "herói" (a belíssima Ana de La Leguera).

Aliando-se a um bandido que o havia roubado, a dupla se torna uma sensação na cidade, apesar de sempre perderem as lutas que participam. Ambiciosamente buscando sua fama através do lutador mais famoso e talentoso "do mundo" (que está na tal cidade de Nacho), buscam um golpe de mágica para conseguirem milagrosamente ficarem bons de luta livre sem nunca sequer terem treinado para tal (exceto uma corrida na terra, uma luta contra uma colmeia de abelhas e mais algumas esquisitices).

Geralmente o que funciona no filme são as piadas visuais, notadamente a forma usada pelos dois para costurar seus uniformes, pegando cada parte de elementos do cotidiano. Também funciona a participação do engraçadíssimo Héctor Jiménez como Esqueleto (o parceiro de Black), que, não importa o que fale, sempre arranca um riso com sua presunção hilariante. O que não funciona mesmo é a história, que está desprendida em episódios que não ganham impulso algum e estão meramente encadeados em uma sequência que dá a entender que o tal golpe mágico parece estar funcionando.

Ou será que tudo não é fruto de um roteiro preguiçoso que simplesmente vai colocando os heróis sempre um passo mais próximo de suas ambições? Pois é, tudo para que esses comediantes tenham mais um tempinho para mostrar suas caretas e fazer suas esquisitices. Nesse caso, nem isso parece surtir muito efeito.


# Lances Inocentes [link]

2014-09-21 tag_movies ^

Estreia do diretor Steven Zaillian, Lances Inocentes conta a história do jovem enxadrista Joshua Waitzkin baseado no livro escrito pelo seu pai. No entanto, seria simplista demais considerá-lo um filme apenas sobre xadrez (ou sobre jovens enxadristas), uma vez que o roteiro escrito também por Zaillian busca não apenas compreender o universo desse microcosmos de pessoas obcecadas por esse jogo como também consegue levantar diferentes questionamentos a respeito das decisões (ou indecisões) dos pais desses jovens prodígios e do próprio amadurecimento prematuro do caráter desses pequenos gênios, além de comparar a juventude inocente e ingenuamente cordial com o rancor de quem nunca chegou tão longe no ranking dos vencedores, apesar de ter dedicado toda sua vida para esta tríade lógica chamada ao mesmo tempo de esporte, ciência e... arte.

Usando como pano de fundo o sumiço repentino de Bobby Fischer após vencer o campeonato mundial -- o único herói dos americanos nesse jogo, quando em plena Guerra Fria vencera o russo detentor do título -- a história flerta com a possibilidade do "próximo Bobby" estar em alguma dessas jovens mentes que são levadas pelos pais entusiasmados pela capacidade de seus filhos para todo e qualquer campeonato sendo disputado. Apesar de não conter cenas de ação, um dos muitos artifícios usados pelo filme para tornar um embate mental que para a maioria dos espectadores soaria maçante em algo empolgante são os cortes ligeiros e ritmados que acompanham uma trilha sonora nunca entediante. A história em si segue uma ordem cronológica simples que pontua aqui e ali momentos mais importantes da mini-carreira do jovem Joshua, mas é nas partidas e nos torneios que o engrandecimento do que está acontecendo em sua mente frenética nos tabuleiros que conseguimos acompanhar mais de perto como é a vida de quem decidiu encarar o xadrez como algo mais do que apenas diversão.

Bônus: o verdadeiro game entre Jeff Sarwer e Joshua Waitzkin está no site chessgames.com (com alguns comentários do próprio Jeff, agora adulto!). Foi o próprio Waitzkin que elaborou as mudanças da final vista no filme para torná-la mais emocionante. Acredito que nós, enxadristas, podemos dizer que ele conseguiu =)


# World War Z [link]

2014-09-23 tag_movies ^

Mais um filme de zumbi? Sim e não. World War Z está mais para o primeiro filme empolgante de fato sobre uma epidemia mundial. Estrelado por Brad Pitt, esse filme de catástrofe consegue chamar a atenção quase todo o momento, seja para seu lado bom ou ruim.

Tudo começa na cidade onde Gerry Lane (Brad Pitt) e sua família moram, onde vemos pela primeira vez em uma sequência incrivelmente tensa e agitada o ataque de humanos aparentemente inconscientes, mas com um impulso incontrolável de morder as outras pessoas (sim, zumbis). Uma simples mordida e 12 segundos são o suficiente para levar a vítima igualmente à loucura, então fica muito fácil imaginar o efeito cascata que isso gera em uma cidade grande.

Resgatado por seu amigo do exército não por compaixão, mas antes por convocação, Gerry se vê na obrigação de ajudar para manter sua família nos navios militares que servem de abrigo. Tudo acontece muito rápido e os detalhes são pescados aqui e ali. Sabemos, por exemplo, que a grande esperança dessa gente reside em um cientista de 20 e poucos anos, o que pode soar absurdo, mas soa passável depois de vermos o ataque inicial. Os mais ágeis sobreviverão.

Porém, em uma situação como essa, não basta apenas ser ágil e ter conhecimento. É preciso ter a cabeça no lugar. E é isso que Gerry parece se tornar para nós -- desesperados do outro lado da tela.

Por falar em desespero, o medo de ser pego exerce um controle muito efetivo em quase todas as cenas movimentadas. Faz-nos até esquecer alguns tropeços em tanto realismo que o filme parece querer entregar (como um zumbi escondido em um avião, ou o timing certeiro de Gerry ao presenciar um segundo holocausto em terra santa). Nesse sentido, realismo e susto convergem para um sentimento de urgência ritmado entre cada novo cenário.

Não se esquecendo de homenagear um dos grandes games que usam ciência como pano de fundo do surgimento de mortos-vivos -- sim, estou falando de Half-Life -- a sequência final é a mais equilibrada, pois a mensagem já foi dada: o perigo de extinção é imenso, e não há saída fácil.

Nesse sentido, World War Z consegue visualmente aplicar bem uma mensagem importante para todos nós: pandemias podem parecer invisíveis, mas o estrago que fazem tem o potencial de ser irreversível.


# Apertem os Cintos, o Piloto Sumiu [link]

2014-09-24 tag_movies ^

"Apertem os Cintos..." estreia a década de 80 já virando um dos representantes máximos da comédia da época: a paródia. Como toda comédia, conta uma história simples: um ex-piloto de caça traumatizado que se torna a única esperança de evitar a queda de um avião comercial, mas que para isso precisa vencer os fantasmas do passado e assim reconquistar a garota que ama. E, mesmo assim, não há maneira mais absurda de contar essa história recheada de metalinguagem e trocadilhos, acompanhada de uma trilha sonora tão bem executada por Elmer Bernstein (Cabo do Medo) que praticamente narra as piadas conforme vão acontecendo. E são muitas. Todas ótimas. Algumas são simples gags entre-cenas. Outras geram sequências memoráveis, como a aeromoça ajudando a "ressucitar" o piloto-automático e a fila de passageiros disposta a colocar a cabeça de uma mulher no lugar.


# Cosmos: Uma Odisséia do Espaço-Tempo [link]

2014-09-25 tag_series ^

Esse é um remake atualizado da série homônima dos anos 80 apresentada por Carl Sagan, um astrônomo famoso na época (até hoje, na verdade) e que ficou famoso para mim quando assisti (e li) o clássico absoluto de ficção científica Contato. Essa versão do programa, com visual e conteúdo atualizados, possui como apresentador também um "pop-star" da ciência: Neil deGrasse Tyson, um atrofísico renomado que curiosamente era fã e chegou a visitar Sagan ainda bem jovem. Sagan indiretamente o influenciou a se tornar o cientista que ele é hoje. Descobrimos isso no primeiro episódio em uma sequência particularmente tocante, pois também descobrimos como eram altos os valores humanos do atrônomo e como ser bom com as pessoas pode mudar uma vida.

E é sobre isso basicamente o que a série fala: o que é ser um cientista e como funciona a ciência na cabeça dos homens e mulheres que anseiam a verdade. A cada episódio somos transportados através da Nave da Imaginação -- que, assim como a cabine do Dr. Who, vai para qualquer lugar do espaço-tempo. Para onde ela vai? Explorar a natureza, o mundo onde vivemos, os mundos possíveis "lá fora", a formação do universo, das estrelas, do tempo e espaço e de nós mesmos. Explica como funcionam regras básicas de física até teorias complexas que mudaram nossa perceção da realidade radicalmente, como a gravidade de Isaac Newton, a relatividade de Albert Einstein e a evolução de Charles Darwin.

No entanto, Cosmos vai além dos grandes nomes e tenta mostrar ao leigo que existem muito mais cientistas desconhecidos do público geral e que colaboraram imensamente com a ciência e o bem estar humano do que poderíamos imaginar, em circustâncias muitas vezes desanimadoras. A maioria deles sequer era conhecida por ser um/uma cientista, que é uma nomenclatura relativamente nova e que não tem relação com títulos acadêmicos, mas com a maneira de pensar. Através das histórias do passado remoto de nosso planeta também aprendemos as melhores e mais impactantes aulas de humildade que você terá em toda sua vida. Porém, com isso também nos entrega uma visão abrangente e engrandecedora da vida, soando ironicamente antagônica ao que prega a maioria dos dogmas religiosos.

E com isso chegamos sobre a parte mais controversa desse novo roteiro de Cosmos: o ataque às religiões, o alvo (natural) de críticas ao programa. No entanto, para deixar isso claro, preciso primeiro dividir os conceitos de fé e religião: fé é o que você acredita, religião é o que dizem para você acreditar. Em nenhum momento o apresentador Neil deGrasse Tyson ataca a fé propriamente dita, seja do homem comum ou até de clérigos da igreja. Na verdade é exatamente o oposto: ele demonstra como a fé é o que move a maioria das grandes descobertas, pois sem essa centelha inicial de esperança (além da curiosidade) a ciência nunca avançaria em busca de mais respostas. Cosmos ataca sim a religião, mas nenhuma em específico, nem sua existência, mas a sua consequência: fechar a mente das pessoas com respostas prontas sem sequer olhar em volta. E mais importante: das crianças, todas potenciais cientistas. Nesse sentido é completamente justificável que a série tente enfaticamente tirar essa pedra do caminho das ainda jovens mentes (ou até as não tão jovens).

Aliás, que bom seria se todos nós tivéssemos esse espírito crítico e aventureiro da busca por mais conhecimento. Até porque, como vimos em determinado episódio, nunca se sabe de onde pode surgir o próximo grande cientista que irá desvendar mais um mistério do Cosmos.


# Carrie, a Estranha (2013) [link]

2014-09-26 tag_movies ^

Talvez esse remake do clássico de Brian de Palma seja até eficiente na maior parte do tempo, ou não sei se pegando carona na memória afetiva do original ele consegue se sair melhor do que aparenta, até por discutir a história de Carrie quase como uma análise do bullying escolar dos tempos atuais e da diferença de visões religiosas dos mais jovens. Porém, uma direção grosseira e um roteiro equivocado conseguem estragar uma revisita até que curiosa.

Carrie, revivida por Chloë Grace Moretz -- provavelmente escolhida depois de seu ótimo papel em Deixe-me Entrar, ou outro remake de terror -- é uma menina socialmente acuada, fruto da educação rígida da religiosa mãe (Julianne Moore, à altura do papel de Piper Laurie). Um episódio envolvendo sua primeira menstruação no colégio da escola acaba fazendo-a ganhar um desafeto que tenta se vingar durante o baile da formatura. Quase nada muda na história (até onde me lembro), exceto uma inserção ridícula de duas irmãs gêmeas que aparecem mais do que deviam em situações que fazem lembrar os gêneros de "2012".

E por falar em ridículo, a tão famosa sequência do baile converte o gênero da história para um filme B da pior espécie. Iniciando com uma cena patética repetida três vezes em câmera lenta de ângulos distintos, a noção que a diretora Kimberly Peirce (Meninos Não Choram) tem da personagem e de suas motivações é no mínimo tão bizarra quanto as irmãs gêmeas que insiste em filmar. Carrie acaba virando uma caricatura para o espectador, e caricaturas não emitem empatia. Ela se torna um objeto de fetiche de um público que anseia por efeitos digitais em demasia.

E se o susto final é algo que os incessantes remakes tentam reproduzir falhando miseravelmente, aqui pode-se dizer que Carrie de 2013 segue à risca a cartilha de remakes de clássicos, cuja última instrução, que deveria ser a primeira, diz claramente: nunca faça remake de clássicos.


<< >>