Epifanias

January 16th, 2007 § 2 comments § permalink

Kepler, ao descobrir a solução para o modelo planetário heliocêntrico:

“Oh, Deus, Todo-Poderoso, estou pensando Teus pensamentos!”

Einstein, ao comentar sobre a elegância da teoria da relatividade:

“Quando estou julgando uma teoria, eu pergunto a mim mesmo se, caso eu fosse Deus, teria feito o mundo desse modo.”

F2b

January 15th, 2007 § 6 comments § permalink

Não lembro quem me indicou agora, mas passo a indicação adiante: se você está precisando de um serviço de cobrança online, eu recomendo a F2b.

Estou usando há alguns meses e não tenho absolutamente nada a reclamar. Aceitam pagamentos em boleto, cartão de débito e de crédito e possuem uma série de outros serviços interessantes para o associado. E, antes que alguém pergunte, não estou ganhando nada pela propaganda. É realmente a indicação de um cliente satisfeito.

Exceções em PHP5

January 14th, 2007 § 0 comments § permalink

Estranhamente, o sistema de exceções do PHP5 não se mistura com o antigo sistema de erros. Eu até entendo que haja a necessidade de manter compatibilidade com programas escritos anteriormente, mas pelo menos deveria haver algum modo de transformar todos erros em exceções. Ficar cuidando de ambos os detalhes em um programa é um verdadeiro tiro no pé.

Obviamente, posso estar falando a maior bobagem. Provavelmente existe algum flag que só eu ainda não descobri que faz a transição. Se existe, alguém poderia me dizer qual é? :-) Se não, acho que o que sobra é implementar alguma tradução entre os dois mundos.

Emacs-Rails 0.44

January 13th, 2007 § 0 comments § permalink

A versão 0.44 do minor mode do Emacs para Rails acaba de sair do forno com uma série de adições e correções. Para quem está programando em Rails com esse (mega-)editor, a extensão é mais do que recomendada.

Aliás, eu contribuí com alguns patches para esse versão e, se alguém mais tiver interesse em participar, posso dizer que o autor do projeto é bem receptivo.

Narrative JavaScript

January 13th, 2007 § 4 comments § permalink

Qualquer um que já escreveu código assíncrono em JavaScript sabe o quão cansativos os detalhes podem ser. Esses dias, via uma entrada no fórum do RubyOnBr, achei uma referência ao Narrative JavaScript que uma extensão à linguagem introduzindo a possibilidade de linearizar código assíncrono. O exemplo é bem interessante e mostra algumas soluções interessantes para alguns problemas que eu sempre tive que resolver de formas mais complicadas anteriormente.

É interessante ver como 2006 foi o ano do JavaScript e como a linguagem está se tornando uma das forças dominantes na Web. Com a introdução de novos compiladores e interpretadores, não custa nada para esse ano o surgimento de frameworks inteiros na linguagem.

iPhone != iMac

January 12th, 2007 § 0 comments § permalink

Via Luiz, o comentário do Steve Jobs sobre a possibilidade de programar o iPhone com aplicações desenvolvidas por terceiros:

“You don’t want your phone to be like a PC. The last thing you want is to have loaded three apps on your phone and then you go to make a call and it doesn’t work anymore. These are more like iPods than they are like computers.”

É até possível entender o raciocínio por trás desse comentário, mas é óbvio que os benefícios de uma abertura superam qualquer outro problema. A Apple, infelizmente, tem uma história estranha em relação à inovação e abertura. Geralmente lança produtos que modificam o mercado, mas não gosta de abrir nada. E quase faliu por causa disso. Era de se esperar que tivesse aprendido a lição, principalmente com os desenvolvimento recentes do mercado.

Depois de ver o vídeo de demonstração é impossível não pensar nas possibilidades. Mesmo depois do hype, permanece o fato de que o iPhone é revolucionário em muitos sentidos. E, de qualquer forma, outros produtos virão com avanços similares–ou não, considerando o tanto de patentes que a Apple tem sobre as funcionalidades do produto. É esperar o mercado. No Brasil, em todo caso, vai demorar tanto para aparecer que não dá nem para começar a preocupar com a questão.

Mas que eu queria um, isso eu queria. :-)

Programadores e… programadores

January 11th, 2007 § 9 comments § permalink

O Luiz Rocha, em uma entrada comentando outra do Osvaldo Santana, escreve sobre o desenvolvimento de software no que tange ao uso de ferramentas e o que isso implica em termos de conhecimento de programação,

A analogia usada é de uma mecânico versus um engenheiro-mecânico, pensando sobre a diferença entre saber usar determinadas ferramentas e saber porque as ferramentas existem em primeiro lugar. Ferramentas aqui significando primeiramente um IDE.

Em termos gerais, eu acho que o argumento já quebra na própria analogia. Por mais que precisemos de engenheiros-mecânicos, se eliminássemos os mecânicos teríamos um mundo em que carros são produzidos mas não rodam mais depois do primeiro problema. Aliás, a ironia de que isso é basicamente o que acontece no mundo do desenvolvimento não deixa de ser óbvia.

Eu acredito que o programador-mecânico é uma ferramenta indispensável no processo de desenvolvimento. É claro que, enquanto profissional, é do interesse dele passar para o próximo nível. E, por mais que o código produzido seja uma grande função da ferramenta, se o programador entende os princípios mais básicos por trás do que está fazendo, a tendência natural é chegar a um entendimento maior do seu trabalho.

Agora, por entendimento maior é possível considerar duas coisas diferentes: uma, é saber os princípios que levam a uma elegância e concisão maior nas soluções; outra coisa, completamente diferente, é entender a base matemática da qual toda a computação é derivada. A minha opinião é que a primeira é fundamental enquanto a segunda é mais uma escolha que depende de circunstâncias de carreira.

Um exemplo básico é entender como compiladores funcionam. Entender os conceitos por trás, principalmente os matemáticos, é algo que certamente ajuda extremamente um programador ou analista. Mas não é um impedimento para que o mesmo produza código conciso e elegante. Nesse sentido, e voltando ao ponto original, saber programar sem um IDE não é absolutamente uma indicação de eficiência.

Obviamente, há contra-exemplos em ambos os sentidos. Hoje mesmo, eu observei um programador usar código tirado de outra biblioteca e depois perguntar: alguém pode me explicar como esse código funciona? Em minha carreira, já perdi a contas de quantos programadores formados em ciência da computação eu conheci que tiveram basicamente que aprender novamente a programar quando confrontados com o mundo real de desenvolvimento–e não estou pensando em prazos limitados e qualidade variável.

O que eu quer dizer com isso tudo, é que o uso ou não de ferramentas é um desvio do problema real. Ferramentas jamais são o problema. Eu acredito que a diferença está basicamente na perspectiva do programador ou analista.

Eu tomo como exemplo disso um programador que trabalha comigo. Até pouco tempo atrás, ele era muito dependente de ferramentas e receitas de bolo para programar. Mas eu continuo muito satisfeito ao ver o progresso dele em juntar pequenas coisas que ele aprende no dia-a-dia para compor soluções melhores a cada novo momento–com pouca ou nenhuma necessidade de ser informado de que aquela solução é melhor. Para um programador isso deve vir naturalmente ou a pessoa não merece o título.

Pessoas assim escolhem suas ferramentas não porque não entendem o que estão fazendo, mas porque sabem muito bem o valor agregado das mesmas. Eu programo em ASP.NET a maior parte do meu tempo. Trabalhar sem o IDE nesse caso seria um figurativo tiro no pé. E saber trabalhar sem o IDE–o que eu poderia muito bem fazer com um pouco de documentação–não me faria um programador melhor. Smalltalk, mais um exemplo, é uma linguagem onde o IDE é parte da mesma.

Na entrada do Santana, ele fala sobre dois programadores que tiveram, aparentemente, muita dificuldade em passar de Delphi para Python. Eu não sei as particularidades do acontecido, mas, conhecendo o Delphi, eu tenho a grande impressão que os dois provavelmente só aprenderam a programar quando passaram para o Python, o que torna a distinção sem valor mais uma vez. Se ele dissesse que os dois faziam programação MVC em Delphi (algo que eu pratiquei com sucesso durante anos nesse IDE/linguagem), eu diria que ele tem razão. Mas não parece ser o caso.

Para resumir esse texto que ficou bem maior do que eu pretendia, a distinção é entre programadores reais e pretendentes a programadores. Depois de tantos anos programando e ensinado outros a programar, em minha opinião não existe meio termo.

Numb3rs

January 10th, 2007 § 0 comments § permalink

Se tem uma série verdadeiramente ridícula de TV é a tal da Numb3rs. A série tem um tema até interessante–a possibilidade de resolver crimes por meio de análise matemática–mas peca pelo excesso de nerdice (inventei agora) da trama.

As poucas vezes que eu consegui assistir um pedaço eu acabei trocando de canal por causa desse mesmo motivo. Provavelmente tem um público razoável porque está na terceira temporada, mas eu confesso que não agüento.

O irônico é que eu sou absolutamente fascinado por matemática, mas não consegui ver a série. Opinião minha, mas é realmente muito pretensiosa.

iPhone? iPhone!? I want a phone!

January 9th, 2007 § 7 comments § permalink

Tudo bem: o TaQ estava certo. Eu não devia ter vendido minha alma pelo celular Linux. Celular sem teclado? Celular sem teclado!? Celular sem teclado que é um iPod e com 8GB de memória!?

Caramba, mas caramba de com força. Se for programável (e rodando o OS X não tem porque não ser), esqueça Windows Mobile e QTek e Blackberry e qualquer outra coisa. Vai ser como o Zune comparado com o iPod. Ou seja, não tem comparação. Eu pago–o preço–que estiverem–pedindo.

Eu lembro de ler lido uma reportagem na Wired há alguns vários anos atrás–na revista física mesmo–sobre um cara que tinha um handheld que ele mesmo tinha feito, se não me engano, baseado em um Sharp Zaurus ou similar. Esse handheld era o computador primário dele. No trabalho, handheld mais dois monitores. Em casa, handheld mais monitor. Para ver TV, handheld controlando a tela e sei lá mais o que. A Apple trouxe isso para muito mais perto.

Com um negócio desses na mão e toda uma parafernália de acessórios, o desktop começa a morrer de forma geral. A era do PC, como disse o Om Malik, está acabando. E começando com um telefone.

Falando nisso, excelente resumo das características na cobertura da Read/Write Web.

Voltando ao que interessa: I want a phone, mister! O pior de tudo é que pode nem chegar aqui e, se chegar, pode estar cheio de restrições.

Rails com Vim e Emacs

January 9th, 2007 § 23 comments § permalink

Ontem o TaQ comentou sobre o desenvolvimento em Rails usando o Vim e hoje ele comenta sobre o desenvolvimento usando Emacs, particularmente sobre a necessidade maior de uso de mouse.

Eu estou usando o ambiente específico que ele menciona (já tinha até escrito alguma coisa aqui também há algum tempo atrás sobre essa extensão) e posso atestar que o uso de mouse é totalmente desnecessário a menos que o usuário deseje isso. Todas as janelas que a demonstração exibe podem ser facilmente acessadas via teclado e qualquer outra funcionalidade exibida também pode ser acessada com algumas seqüências de caracteres. Inclusive, eu prefiro tanto o teclado que contribuí com código para o projeto nesse sentido, aumentando ainda mais a possibilidade de usar os comandos naturais do Emacs.

Se houver tempo, nós próximos dias eu colocarei uma demonstração mais específica do ambiente aqui. Questão de gosto também. Nada “religioso”. 😉

Where am I?

You are currently viewing the archives for January, 2007 at Superfície Reflexiva.