Arquivos para fevereiro, 2007

Freakonomics é uma leitura que adiei bastante, mas a edição americana em papel-jornal (na casa dos R$ 20) me permitiu tirar o atraso. Trata-se de um interessante apanhado de análises em torno de questões sociais como criminalidade e sucesso profissional, cuja metodologia e conclusões desafiam o senso comum de uma forma muito original.

Cada tópico é motivado por uma pergunta aparentemente nonsense (“Qual a semelhança entre professores e lutadores de Sumô?”, “O que é mais perigoso, uma arma ou uma piscina?” e “Se o tráfico de drogas dá tanto dinheiro, porquê a maioria dos traficantes ainda mora com a mãe?” são alguns exemplos). Estas questões motivam novas perspectivas para a análise de dados socioeconômicos, e seus resultados surpreendentes, se não mudam completamente a vida de ninguém, garantem a satisfação do leitor.

Embora detalhes técnicos, tabelas e gráficos tenham sido omitidos (para tristeza dos matemáticos/economistas e alegria dos seres humanos normais), seu lugar é ocupado por um texto agradável e competente, que explica – ainda que superficialmente – a metodologia utilizada em cada estudo. Isso, aliado à reputação dos autores (um economista que causou polêmica ao fundamentar a ligação entre a legalização do aborto e a diminuição da criminalidade nos EUA e o jornalista que o acompanha na divulgação deste tipo de investigação ao público leigo), só me faz recomendar o livro, tanto para matemáticos quanto para curiosos de plantão.

1 Comment » - Posted in Uncategorized by chester

Ano passado escrevi um texto sobre o problema do Java com o horário de verão, explicando as causas, apontando soluções comuns e sugerindo uma nova – cuja principal vantagem é dispensar alterações no código-fonte da aplicação afetada.

Sua maior desvantagem é que o arquivo com o código de correção tem que ser recompilado a cada mudança de regra do horário de verão (i.e., uma vez por ano, pelo menos) e re-copiado em cada servidor – o que fica complicado quando se cuida de dezenas ou centenas deles.

Em vista disso (e com a ajuda da classe ZoneInfo, de autoria de Stuart D. Gathman), criei o timefix – uma biblioteca que lê automaticamente o arquivo /etc/localtime do servidor, ajusta o timezone default e chama a aplicação final. Desta forma, basta reiniciá-la quando o arquivo for atualizado parq que as novas datas de início e fim do horário de verão entrem em vigor.

(mais…)

16 Comments » - Posted in software by chester

Por mais que eu respeite o trabalho de criação de logomarcas, não dá pra engolir as hipérboles que a explicação oficial do significado do logotipo do Metrô de São Paulo faz. O metrô tem um ícone muito eficiente, mas, depois dessa explicação, ele ficou muito menos simpático.

Reproduzo na íntegra, essa merece:

Signo de Comando da empresa, sua forma quadrada é um estímulo que desencadeia associações a partir de sua percepção.

O quadrado é uma forma rica em arestas, associado ao domínio da racionalidade, da impessoalidade e, historicamente, aos pontos cardeais.

Ele agrega significados como firmeza, solidez, confiabilidade, sobriedade, e a igualdade dos seus lados nos transmite o comedimento, a serenidade… é cartesiano, imparcial, e neste sentido nos remete à precisão, ao cálculo, à perfeição matemática, à engenharia…

A Marca da Companhia do Metropolitano de São Paulo em seu contexto semântico, refere-se à sua expansão radial, em direção aos quatro pontos cardeais, conotando o sentido direcional do ir-e-vir, do levar-e-trazer, do subir-e-descer, sua velocidade e sua característica essencial: a interrelação de suas linhas.

Em seu contexto sintático, foi resolvido pelo deslocamento de um quadrado sobre o outro, no eixo diagonal, resultando quatro vetores que se opõem dois a dois, e inseridos num campo também quadrado que os delimitam.”

(dica do Willian, do Vá de Bike)

5 Comments » - Posted in Uncategorized by chester

Parece que o Fabio “Combo Rangers” Yabu não consegue ficar muito tempo sem aprontar uma das suas. Dessa vez foi o Big Brother Bonequinho – que mostra que, mesmo sem lápis, papel ou Photoshop (tá, o Photoshop ele usa aqui e ali) o cara manda muito bem.

Assim como acontece com os Combo Rangers, você rapidamente perde o constrangimento e começa a se envolver no melê (tem Jesus contracenando com Hello Kitty, Moranguinho maloqueira, e daí pra baixo) e nas palhaçadas forradas de referências, que são a marca registrada do Yabu.

O formato blog atrapalha um pouco os retardatários já que, para ler na ordem correta (cronológica), é preciso navegar até a página inicial da categoria e abrir post a post. Mas vale o esforço.

1 Comment » - Posted in Uncategorized by chester

Segundo o GameSpot, ex-funcionários da RedOctane (fabricante de tapetes de DDR legais e de jogos como Guitar Hero) que saíram da empresa para fundar a a sua própria estão sendo processados pela atual dona da RedOctane, a Activision.

Nada de mais nisso, mas o caso me lembrou de uma história muito parecida: nos anos 70, a Atari produzia seus próprios jogos para o Atari 2600, lucrando horrores no processo. Os programadores não viam a cor do dinheiro, e sequer podiam ter seus nomes nos créditos do jogo.

Um grupo deles resolveu fundar sua própria empresa, produzindo jogos de qualidade visivelmente superior (títulos como Enduro, River Raid, Pitfall! e Keystone Kapers compunham o catálogo da nova produtora) – e a Warner (que havia comprado a Atari algum tempo antes) não demorou a processar a nova empresa.

Seu nome? Activision! Parece que não é a toa que os atuais executivos da empresa se preocupam – eles sabem a tenacidade que ex-funcionários descontentes adquirem quando se tornam concorrentes…

1 Comment » - Posted in Uncategorized by chester

A comparação entre linguagens de programação (e incluem-se aí os ambientes sob os quais estas linguagens operam) é um assunto quase que inesgotável.

Quando abordado de forma leviana, acaba em discussões que pouco diferem das mesas-redondas futebolísticas: programadores movidos por um ímpeto de paixão e desejo de preservar seu investimento intelectual defendem com unhas e dentes suas linguagens prediletas, agindo como se todo o resto fosse secundário. O argumento também pouco varia: linguagens mais pragmáticas (de menor nível que a escolhida) são sempre “improdutivas” e as mais abstratas (de maior nível) “performam pouco”. Não é exagero afirmar que a maioria esmagadora das discussões sobre o assunto se dá sob este cenário, e é fácil perceber que, assim como suas contrapartes desportivas, pouco avançam.

Uma discussão mais aprofundada requer um estudo igualmente profundo (nas palavras de Robert Herrick, “no pain, no gain”). É preciso compreender não apenas as linguagens que estão sendo comparadas, mas também suas antecessoras. A abordagem histórica é importante porque uma linguagem não surge ao acaso – uma forte motivação é necessária, tal como a existência de um domínio cujos problemas não são apropriadamente descritos (ou processados) nas lingaugens pré-existentes – ao menos na opinião dos criadores da nova linguagem.

Mesmo trilhando este caminho, um erro comum (que já cometi) é concentrar os estudos naquilo que já se conhece. É uma abordagem muito produtiva: se eu trabalho com Java, não vou perder muito tempo com programação funcional; se uso PHP, é mais jogo procurar técnicas que otimizem o meu trabalho do que me envolver com as dificuldades do mapeamento objeto-relacional, e por aí vai.

Esta produtividade tem um custo – fica cada vez mais difícil situar o seu ambiente (e perceber onde ele pode melhorar). E quando a inenvitável mudança tecnológica vier (e sim, ela virá – independente do “padrão de mercado” ou do “imenso legado” – características já atribuídas a tantas outras linguagens, hoje marginais ou extintas), este custo se fará sentir, pois será muito mais difícil migrar para novos paradigmas.

Independente da justificação prática, achei que seria interessante aproveitar as férias da faculdade para preencher algumas lacunas pessoais neste assunto, o que me levou a alguns livros interessantes (que são o verdadeiro tema deste post). Vamos a eles:

A Little Smalltalk

Se você, programador Java, já se perguntou por que a classe-mãe-de-todas-as-classes se chama Object (e não “Class”), ou porque chamamos o paradigma de “orientação a objeto” (considerando que o desenho da aplicação acaba lidando mais com as classes do que com os objetos em si), aprender Smalltalk vai acender algumas luzes.

E é melhor ainda se este aprendizado se der sob uma ótica isenta de legado. A Little Smalltalk aborda um dialeto específico da linguagem, mas é mais do que suficiente para evidenciar variações sutis (por exemplo, em Smalltalk você não “chama um método”, e sim “envia uma mensagem”). Tais diferenças parecem, numa primeira análise, puramente estéticas/semânticas, mas ajudam a compreender as motivações (e reais limitações) existentes no Java como o usamos hoje.


Programming in Common Lisp

Lisp é como a Cher: de tempos em tempos volta com plena majestade. Seja quando Paul Graham defende seu aprendizado, seja quando programação funcional se torna o assunto da vez, vira e mexe algo aparece que desperta a curiosidade sobre esta linguagem.

Assim como o outro livro, Programming in Common Lisp trata de um dialeto específico, mas suficiente para ajudar a compreender os fundamentos, e separar o hype da realidade.

Para quem gosta de construções matemáticas “belas” (i.e., simples em suas definições, mas que possuem ramificações complexas), Lisp é um prato cheio: os reais fundamentos (CAR/CDR, lazy evaluation e cercanias) são bastante sintéticos, mas os desdobramentos (e aplicações) são infindáveis, e, a meu ver, justificam plenamente o interesse (ainda que teórico) em torno da linguagem e das técnicas associadas a ela.


Comparative Programming Languages – 2nd Edition

Muito mais denso que os anteriores, este livro traça um panorama das linguagens de programação mais relevantes, desde as primeiras tentativas de evoluir do código de máquina puramente numérico até os primeiros ambientes OO maduros.

Para quem, como eu, trabalha a maior parte do tempo com Java, é muito esclarecedor ter um contato com fontes de inspiração como Ada e Modula-2 (além de C++, que eu já conhecia, mas também ajudou ver em perspectiva).

E, independente da linguagem, aspectos como alocação de memória, passagem de parâmetros, escopo, tipagem e muitos outros são analisados em detalhe (do código fonte à execução final), considerando sempre o tripé performance-flexibilidade-confiabilidade.

Ao contrário de boa parte da literatura do gênero, Comparative Programming Languages não requer um background matemático, ou mesmo conhecimentos extremamente avançados em programação. A terceira edição (abordada no site) engloba linguagens mais modernas, mas a que li tem um bom equilíbrio entre a perspectiva histórica e a análise computacional.

10 Comments » - Posted in Uncategorized by chester

O futuro da indústria fonográfica (e, para quem consegue dissociar, dos artistas) num mundo onde o download de MP3 e o CD pirata do camelô estão ao alcance de qualquer um é um tema que rende muita conversa. Além disso, a relação dos quadrinhos impressos com as inúmeras alternativas online, se não tem a universalidade do outro tema, possui muitas semelhanças – e é igualmente interessante.

Claro que a explosão de popularidade dos MP3 players (desde os mais modestos até os iPods) e as iniciativas de venda de música (e quadrinhos) online (também dos mais diversos portes) exercem um papel nessa história toda. No entanto, minhas convicções sobre o assunto ainda são fortemente calcadas em um texto da Courtney Love e uma história em quadrinhos do Scott McCloud[1] que antecedem tudo isso (são de 2000 e 2001, respectivamente).

Muita gente torce o nariz para estas fontes – afinal, bad girls e quadrinhistas não entendem picas desse negócio de tecnologia e mercado (e mal sabem escrever textos longos), certo? Errado: ambos abordam o assunto com competência e profundidade. E eles possuem uma perspectiva que eu (ou a maioria das pessoas que dá pitacos neste assunto) não tem: são artistas e vivem disso. Esta condição lhes dá todos os motivos do mundo para assumir uma posição mais conservadora – o que só reforça seus argumentos (que passam ao largo desta esfera).

Claro, eles continuam lançando CDs e quadrinhos em papel, mas sem perder a perspectiva do trabalho, do público e das alternativas para continuar vivendo de (e, igualmente importante, pela) arte.

UPDATE (06/01): Embora eu tenha um pé atrás com pessoas dotadas de campo pessoal de distorção da realidade, tenho que adicionar um terceiro texto a esta lista, o Thoughts on Music, publicado ontem por Steve Jobs. Se não pelo ineditismo, pela relevância.

[1] Essa é a parte 2, que eu considero a mais relevante para a discussão – mas você pode ler a parte 1 antes ou depois, sem prejuízo.

2 Comments » - Posted in Uncategorized by chester