Cada macaco no seu galho

Postado por Osvaldo Santana

Resolvi escrever esse post hoje depois de ler os comentários de uma pessoa que já programa em C/C++ e resolveu aprender a programar em Python

Linguagens de programações diferentes são isso mesmo: diferentes. Você não pode esperar que uma linguagem que você está aprendendo agora seja igual à que você usava anteriormente. Se fosse assim você não estaria aprendendo uma linguagem nova, não é?

Se você usa Java (ou C, ou Pascal, ou …) e gosta muito das características dela, use-a. Se você gosta somente de um subconjunto de características busque uma linguagem que tenha esse mesmo subconjunto de qualidades e que acrescente algo de bom.

Se você gosta da performance obtida com um programa em C e está disposto a pagar o preço de ter que gerenciar memória “na mão”, cuidar da portabilidade de seu código “na mão”, lidar com ponteiros voadores e vazamentos de memória, colocar “;” no final de cada linha do código fonte, declarar o tipo das variáveis e usar braces, fique com C. Se você gosta disso tudo significa que você não precisa de outra linguagem de programação para trabalhar.

Se você usa Java, está interessado em empregabilidade, gosta de usar um palavreado recheado de buzzwords, acha que certificações são importantes, gosta de declarar tipo de tudo, gosta de lutar contra o compilador, usa XML até em cartão de visita e gosta de empilhar 50 decorators para abrir um arquivo texto, continue com Java.

Python é uma linguagem de programação diferente de C e de Java. Até tem algumas semelhanças, mas são poucas. Portanto se quiser aprendê-la tenha isso em mente e não fale mal dela porque ela é diferente.

Em Python você não usa braces como em C ou Java e isso não faz dela nem melhor e nem pior que outras linguagens. Em Python você também recebe “self” como parâmetro dos métodos e isso não a torna menos OO ou mais OO do que as outras. Também não precisa de “;” no fim de cada linha (e dai?).

Em Python não precisamos declarar o tipo dos identificadores porque a resolução de tipos é feita em tempo de execução. Isso é diferente de Java, por exemplo, e é pior para alguns casos e melhor para outros. Tem gente que gosta e tem gente que não gosta. Se você não gosta, paciência, porque eu gosto. Java também tem seus “privates“, “protecteds” e “publics” e Python não tem. É pior? É melhor? Nada disso. É diferente.

Enfim, Python tem seus defeitos e suas virtudes e esse conjunto de características que fazem dela “Python”. Se ela tivesse todas as características de C ela se chamaria “C” e se as caracterísicas fossem de Java ela se chamaria “Java”.

Além das características sintáticas e semânticas as linguagens carregam consigo uma certa carga de “estilo de programação”. Se você usar o “estilo de programação” C para programar em Python você não vai aproveitar as vantagens dessa linguagem nova.

Dependendo do caso você vai ter a sensação de que a linguagem é ruim onde na verdade você é que não está utilizando-a corretamente. Portanto antes de criticar a linguagem que você está aprendendo agora, pergunte-se se você está usando ela corretamente. Talvez você esteja martelando um prego com alicate e reclamando que o alicate é uma porcaria.


O guia do mochileiro das galáxias

Postado por Osvaldo Santana

O guia do mochileiro das galáxiasArthur Dent é mais um daqueles terráqueos como você… normal. Ele leva a vida dele normalmente, se é que se pode chamar uma vida onde você tem que impedir a demolição da sua casa todos os dias de normal. Arthur estava preocupado com a sua casa mas nem imaginava que algo pior estava para acontecer naquela manhã em que seu amigo Ford Prefect lhe conta que ele é um alienígena e que precisa fugir porque sabe de um plano interestelar para a demolição do planeta terra visando a construção de uma rodovia interestelar. Ford Prefect é um mochileiro que, de posse de seu formidável guia, vaga pelas galáxias à procura de aventuras. Mas ele não imaginava que dessa vez a sua aventura seria tão emocionante.

É dessa maneira louca que Douglas Adams começa a sua “trilogia de cinco livros”. O “O guia do mochileiro das galáxias” é o primeiro livro dessa série que é sucedida de “O restaurante do fim do universo“, “A vida, o universo e tudo mais“, “Até logo e obrigado pelos peixes” e o quinto livro que não tem tradução para o português e é conhecido por “Mostly Harmless“.

Essa fantástica série, que surgiu de uma série produzida para uma rádio, é muito conhecida dos fãs do gênero ficção científica mas pode ser lida também por quem não aprecia muito esse gênero pois o mesmo é escrito em forma de sátira e é repleto de boas tiradas.

Em 2005 essa história foi transformada em filme que logo e transformou em sucesso de bilheteria. O filme trás uma compilação com trechos da história dos 4 primeiros volumes da série e o destaque fica para o Robô depressivo Marvin.

Esse é o livro ideal para quem pretende ter horas agradáveis de leitura e ter vários acessos de riso com as situações absolutamente inusitadas que são criadas pelo autor. O leitor mais atento também conseguirá notar algumas críticas mais ácidas ao estilo de vida britânico (o autor é inglês). O autor também apresenta respostas para questões mais profundas que tratam sobre a vida, o universo e tudo o mais levando o leitor a entender porque o número 42 é tão importante para todo o universo.

A tradução para o português feita pela editora Sextante, apesar de não ser a ideal, não compromete a qualidade do material. O único problema mais visível foi a tradução de “Babelfish” para “Peixe Tradutor” onde infelizmente não consigo sugerir nada melhor.

Atualização: O quinto livro da séria também foi traduzido para o português sob o título de “Praticamente Inofensiva“.

Para comprar: siga os links fornecidos ao longo da resenha.


A arte de fazer acontecer

Postado por Osvaldo Santana

A Arte de Fazer AcontecerAnda sem tempo para fazer as coisas? Vive atarefado e não consegue se organizar? Acha que os sistemas convencionais de organização de tempo não funcionam? Investir na aquisição de um organizador pessoal ou em softwares de agenda está fora de cogitação?

As respostas para essas questões sem dúvida poderão ser encontradas no livro A arte de fazer acontecer, tradução do original Getting Things Done. Nesse livro o autor David Allen, papa da organização pessoal, te ensina a adotar uma metodologia simples, leve e prática para organizar as suas atividades de maneira efetiva permitindo que lhe sobre tempo para fazer as coisas que realmente importam para uma pessoa: o convívio com a família.

De maneira fácil Allen explica etapa por etapa a adoção do seu modelo de gerenciamento de tempo e faz com que o leitor adquira hábitos saudáveis de organização que farão até mesmo as pessoas que não acreditam em gerenciamento de tempo, como eu, adotar as práticas sugeridas.

Ferramentas simples como fichas de papel, escaninhos, grampeadores, clipes, etiquetas, pastas e um calendário começarão a fazer parte do seu dia-a-dia permitindo que toda a papelada que geralmente rodeia as nossas mesas de trabalho sejam reduzidas ao ponto de se ficar com apenas o extritamente necessário para desempenhar as tarefas nas quais você está trabalhando agora. Delegar e monitorar as tarefas delegadas também se tornará algo muito fácil de ser feito.

O fato dessa sua metodologia não exigir ferramentas caras como softwares e organizadores pessoais e ser simples podem explicar porque esse livro foi sucesso de vendas nos Estados Unidos. A popularidade deste livro é tão grande que diversos sites na internet tratam de fornecer idéias e ferramentas para tornar a sua eficácia ainda maior. Uma procura rápida por “Getting Things Done” ou simplesmente “GTD” em um site de buscas certamente irá te revelar uma série de materiais valiosos.

O livro é pequeno, de fácil leitura, recheado de citações brilhantes e a tradução para o português, feita pela Editora Campus, ficou muito boa, tornando assim a assimilação do conteúdo muito mais agradável.

Para comprar: A arte de fazer acontecer ou Getting Things Done


Programming Embedded Systems, Second Edition

Postado por Osvaldo Santana

Programming Embedded Systems, Second EditionRecentemente recebi gratuitamente uma encomenda com 4 livros da editora O’Reilly para que eu fizesse as resenhas desses livros.

Antes de tudo eu devo avisar que essa resenha não pertence à série de resenhas que eu vinha fazendo, e que devo continuar em breve, à qual eu dei o nome de “Leitura Obrigatória”.

O livro de hoje é o Programming Embedded Systems, Second Edition. Eu já estou quase terminando a leitura deste livro e já me sinto à vontade para recomendá-lo por aqui porque eu realmente me empolguei com o material.

Como muitos já sabem eu voltei a praticar o antigo hobby de montar dispositivos eletrônicos, e desde que eu havia parado de brincar com essas coisas muita coisa mudou. Hoje em dia é muito comum encontrar microprocessadores e microcontroladores em vários projetos, e trabalhar com esses componentes exige um conhecimento que mora entre a eletrônica “pura” e a informática.

Como eu já tenho bons conhecimentos de informática e meus conhecimentos de eletrônica “pura” estavam evoluindo com a prática do meu antigo hobby, estava faltando construir a ponte que iria unir essas duas áreas do conhecimento.

Na mesma época recebi uma proposta da O’Reilly para fazer resenhas dos livros de Python deles e aproveitei para pedir alguns títulos que tratavam de dispositivos embarcados. Recebi este livro juntamente com outros 3 de Python (aguardem resenhas) e comecei a lê-lo.

O livro tem foco prático como em quase todos os títulos da editora O’Reilly. Os autores realmente irão desenvolver o assunto em cima de uma plataforma real de desenvolvimento que usa um processador ARM XScale e irão conduzir o leitor desde o ponto onde a gente faz um LED piscar até o momento onde desenvolvemos aplicações reais com RTOS e Linux.

O livro fala sobre device drivers, interrupções, registradores, memória e sobre como gerenciar e desenvolver software em C (gcc) para usar todas essas funcionalidades.

Vale destacar que esse livro fica exatamente na fronteira entre um livro de nível básico e um livro avançado, ou seja, se você não entende nada de eletrônica e muito pouco de informática esse livro não irá lhe servir. Se você também já é um especialista no assunto pode achar o livro massante demais na primeira parte que trata de assuntos mais básicos.

O próximo passo agora é adquirir um kit de desenvolvimento parecido com esse que foi proposto no livro e começar a brincar. Eu tenho certeza que eu vou me divertir muito com esse tipo de coisa depois de ler este livro.

Para comprar: Programming Embedded Systems, Second Edition


Python está “pronta para o mercado”

Postado por Osvaldo Santana

Recentemente li um artigo em um blog que se propunha a vender a idéia de que a pilha “J2EE/Java/Linux” seria a mais perfeita escolha para uma fábrica de software trabalhar.

Em certo momento do artigo o autor faz uma comparação da plataforma Java que usa quase que exclusivamente a linguagem Java com outras plataformas e/ou linguagens de programação. Neste momento ele explica porque Python não seria uma boa escolha:

…Python, apesar de ser mais moderna e poder ser compilada, não foge muito deste escopo também. Além disso, ambas (Perl e Python) não conseguiram uma aceitação comercial madura, e, não representando um investimento seguro a longo prazo, não devem ser escolhidas como estratégicas (sic) para a fábrica de SW de uma empresa, ou para um sistema complexo e de missão crítica.

Esse chavão “…não conseguiram uma aceitação comercial madura…” e suas variantes são sempre repetidas com veemência e numa quantidade extremamente alta. Acho que essas pessoas fazem isso pensando que se repetirem essa mentira ela talvez se torne verdade.

Se é verdade que não existe empresas do tamanho da Sun, Oracle e IBM que promovam Python da mesma forma que se promove Java também é verdade que existem muitas empresas que usam o poder de Python para concorrer com toda essa força bruta usada pelos javanistas.

A coisa funciona mais ou menos assim:

  1. você quer produzir software pra ganhar dinheiro.
  2. você pode escolher Java ou Python pra trabalhar
  3. os seus concorrentes já usam Java ha bastante tempo e estão mais adiantados no desenvolvimento de seus softwares
  4. se você escolher Java, você precisa do mesmo tempo que eles para desenvolver o seu software
  5. usar Python te torna mais produtivo1 e consequentemente você levaria menos tempo para alcaçar seus concorrentes e em pouco tempo ultrapassá-los.

Esse cenário já foi bem descrito por Paul Graham mas os atores envolvidos no tempo em que ele iniciou a empresa dele eram C++ (fazendo o papel da Java) e Lisp (fazendo o papel de Python).

A dica que eu daria para as empresas que produzem software é: prestem atenção em Python e experimentem-na. Eu garanto que depois de usá-la você vai querer mantê-la como “segredo de negócio” para seus concorrentes, algo como uma “arma estratégica” contra eles.

E se você não gostar de Python também pode experimentar Ruby porque com qualquer uma dessas você certamente produzirá muito mais e melhor do que usando Java/J2EE. E se isso não for verdade eu publico o seu case de insucesso aqui neste blog e dou o meu braço a torcer.

Por último: Cobol, Clipper e Delphi já foram as linguagens que todos diziam ser “maduras para o mercado”. Pense nisso.

1 Existem várias formas de comprovar essa afirmação mas todas elas são extensas demais para este blog. Convido os interessados a pesquisarem sobre essa afirmação na Internet ou com empresas que já assumiram publicamente que usam Python.


Fim do suspense…

Postado por Osvaldo Santana

Saiu o vídeo de demonstração do Canola… Em pouco tempo teremos ele nos Internet Tablets.


Suspense…

Postado por Osvaldo Santana

<música-de-suspense-do-filme-”Tubarão”>

Algo muito legal está para surgir…

</música-de-suspense-do-filme-”Tubarão”>