segunda-feira, 12 de janeiro de 2009

Entendendo e aplicando PEP 8 - Parte 1

Mas o que seria PEP 8?

Bom, PEP é uma sigla para Python Enhancement Proposals o que poderíamos definir como uma proposta de aprimoramento da linguagem Python como um todo, ou seja, tudo aquilo que está ligado ao Python;
  • novas funcionalidades
  • processos
  • ambiente
  • core
  • e outros
O PEP se resume em um documento totalmente técnico que pretende ajudar os desenvolvedores a entenderem uma idéia proposta, criando assim uma política de especificações da linguagem Python.
Existem inúmeros PEPs, todos eles com seus devidos índices e autores que especificam a intenção do PEP.

Neste post vou falar especificamente do PEP 8, que vem a ser um guia para o estilo de layout dos códigos escritos em Python, foi proposto por Guido van Rossum e Barry Warsaw.
Para uma leitura mais detalhada você pode lê-lo em http://www.python.org/dev/peps/pep-0008/.

Todo o conteúdo é baseado na especificação original do PEP 8, mas neste post a minha intenção é criar exemplos detalhados a cada abordagem deste PEP e também explicar cada caso isoladamente, montando uma série de regras que podem ser facilmente retidas pelo leitor.
Muitos desenvolvedores dizem que as regras estabelecidas pelo PEP 8 são seguidas apenas para os códigos que estão no core do Python e módulos externos importantes. Mas não acho que seja bem assim, é muito importante que o desenvolvedor que esteja começando a escrever códigos em Python siga estas regras desde cedo.
Toda linguagem de programação respeitada tem uma padronização de layout do código, afinal essa é uma das boas práticas de programação mais importantes para um desenvolvedor, principalmente para desenvolvedores que ajudam no software livre.

"O meu código é o seu código."

O código de um desenvolvedor que ajuda a comunidade Software Livre sempre vai pertencer a milhares de outros desenvolvedores, nunca o código vai ficar retido à um programador, por isso que é muito importante que as regras se tornem um hábito.
A padronização do layout de código facilita a legiblidade, manutenabilidade e até mesmo a produtividade, porque essas regras seguem a mesma via do fluxo de documentação. Então você acaba gerando um código mais expansível aos olhos da comunidade.

1 - Code Layout

1.1 - Indentação

Sempre use 4 espaços por nível de indentação.

Dicas:
  • nunca misture tabs com espaços. É bom você se adaptar com a indentação de 4 espaços, habituando-se com esse padrão você ganha produtividade e legibilidade. A indentação com 4 espaços evita várias dores de cabeça com editores de texto e ajuda no ciclo de manutenabilidade do código.

Fig 1.1.1

Fig 1.1.2


1.2 - Tamanho máximo das linhas

Sempre limite as linhas à um máximo de 79 caracteres.
Para blocos longos de texto (docstrings ou comentários), limite o tamanho para 72 caracteres.

Dicas:
  • a melhor maneira de quebrar uma linha de instrução é atribuindo um par de parênteses "()" ao redor de uma expressão ou usando uma barra invertida "\" para indicar a quebra de linha.
  • quando há uma quebra de linha em uma instrução a continuação da linha deve ser indentada com a linha mais acima.
  • o melhor lugar para quebrar uma linha ao redor de um operador binário é após ele, e nunca antes dele.
  • a estética de quebra de linha fica a critério do desenvolvedor, mas claro, seguindo as regras citadas acima.












Fig 1.2.1




1.3 - Linhas em Branco


Sempre separe o topo de funções e definições de classes com duas linhas em branco.
As definições de métodos dentro de uma classe são separadas por apenas uma linha em branco.

Dicas:
  • linhas em brancos podem ser usadas para separar grupos de funções relacionadas.
  • o uso de linhas em branco deve ser regrado para que o código não fique muito extenso, causando um cansaço e uma demora na leitura do código.
  • as vezes para que um código não fique muito extenso a melhor maneira é reformular a modelagem do código em si para que seja possível a separação em mais de um arquivo.
  • é sempre bom usar linhas em branco nas funções e métodos para separar seções lógicas.

1.4 - Encodificação

Para evitar problemas use sempre utf-8.


Em breve estarei postando a segunda parte do artigo.
Até mais!!!

Agradecimentos:

James Italiano - recorte das imagens

domingo, 11 de janeiro de 2009

GPL de cara nova!

O projeto GNU vive um dos momentos mais importantes na sua história. A simbiose que tem com o kernel linux; o permitiu um progresso muito frutífero e fez um sistema computacional estável e livre.

Hoje muitas pessoas podem desfrutar de uma grande variedade de softwares que satisfazem as suas necessidades. Alguns o valorizam por sua estabilidade, rapidez, flexibilidade; outros porque é livre. Mas muitos se esquecem de uma outra parte muito importante que permite e defende a natureza livre de um programa: a licença.

Richard Stallman e a Free Software Foundation pensaram em um acordo satisfatório entre o programador e o usuário final para evitar que algum intermediário (ou o mesmo usuário final) se apoderasse do programa e impediria seu caráter livre. O resultado foi o nascimento da General Public License da GNU, também conhecida por muitos como "a GPL".

A GPL possui quatro liberdades fundamentais:

Liberdade 0. Executar o programa com qualquer próposito (privado, educativo, público, etc.).
Liberdade 1. Estudar e modificar o programa (para o qual é necessário poder acessar ó código fonte).
Liberdade 2. Copiar e redistribuir o programa sem nenhum impedimento.
Liberdade 3. Melhorar o programa e publicar as novas features.

Fazem 14 anos que é usada sem mudanças, a licença GNU GPL voltou ao laboratório para ser atualizada em vários sentidos. O problema principal radicava em defender aos usuários dos DRM, sistemas de gestão digital de restrições desenhados para limitar o que as pessoas podem fazer com seus ambientes informatizados.

Os "autores" e os fabricantes andam popularizando massivamente "seus direitos de uso" (DRM) ao incorporá-lo em qualquer hardware que reproduza qualquer arquivo de multimedia e assim evitar a cópia ilegal das obras. Como complemento, ignorá-los converte-se em uma ação ilegal em muitos países (a Digital Millenium Copyright Act dos EEUU é a principal impulsora do DRM).

A GPLv3 assegura que as pessoas podem remover estas limitações sem ter riscos legais. GPLv3 estabelece que não se proíbe aos DRM nem o desenvolvimento de nenhuma outra aplicação desta natureza. Simplesmente assegura a liberdade de removê-los mediante o choque com os "direitos do autor".

Um outro grande tema que é abordado, são sobre as patentes de software. A maioria de programas de computador estão cobertos por copyright, sem embargo, em alguns países, voltou a ser possível registrar idéias implementadas em software sob o sistema de patentes.

As ameaças radicam o feito de que qualquer pessoa pode estabelecer direitos exclusivos de uso sobre determinado processo ou algoritmo computacional. Ao ser exclusivo, ninguém pode usá-lo sem um consentimento ou um acordo (econômico na maioria dos casos) com o dono dos direitos. Tudo isso sem se importar com a originalidade do dono, em outras palavras, o dono da patente pode não ser o "cara" que teve a idéia, mas o ponto principal é que ele é o dono absoluto ao registrar a patente.

A única forma de assegurar a liberdade é abolindo as patentes de software onde já estão implementadas e evitando que se implementem em países onde ainda não foram legalizadas. Uma licença de software não pode solucionar este problema. Sem embargo, pode-se tratar de fazer um certo controle dos danos. GPLv3 tem um respaldo de patentes explícito para assegurar que usuários e distribuidores não sejam levados a juízo quando usarem, modificarem e resdistribuírem software livre.

Como complemento aos pontos anteriores, a internacionalização da GPL é um deles. O aumento do uso de Software Livre em todo o mundo faz-se necessário que a linguagem da licença seja adptável aos textos jurídicos que regulam o copyright de cada país. Não são poucos os que pedem traduções da licença como solução. Isto não é possível, já que cada licença traduzida e localizada a um território específico será uma licença em si e portanto incompatível com a GPL original em inglês ou com outras traduções. Isto fragmenta ao invés de unir e quebra uma das janelas mas grandes do Software Livre: sua universalidade.

Na GPLv3 se especifica uma terminologia própria que pode ser usada sem se importar a espicificiadade da legislação vigente em cada país. Isto é denominado "internacionalização".

Outras mudanças incluem uma modificação nos términos de finalização para dar oportunidades de reverter possíveis violações involuntárias, o uso e promoção de sistemas P2P e BitTorrent e a compatibilidade com outras licenças como Apache, por exemplo.

A GPLv3 representa um novo suporte fundamental no progresso que tem o software livre a cada dia. Os novos obstáculos que as empresas de software proprietário constroem com seus exércitos de artimanhas legais fizeram que a Free Software Foundation e o mesmo Stallman recorressem a participação global da comunidade. Esta nova GPL está feita à todos e deve ser conhecida por todos os usuários, sejam "linuxeros" ou "usuários de softare livre". Todos merecemos a liberdade, nada pode legitimamente impedir a liberdade das pessoas que usam um computador.

Referêcia: Revista Papirux Número 0, Ano 0 Outubro de 2008

sábado, 10 de janeiro de 2009

Como escrever um bom HowTo

Howtos são sempre muito úteis. Não importa o assunto que é abordado.
Se você está tentando contribuir com um projeto Open Source ou se está atraindo tráfego para o seu blog, howtos podem deixar as coisas mais fáceis.

Escrevi esta lista de passos para servir de exemplo enquanto escrevo um howto, as pesquisas são baseadas nas definições de howto da Wikipedia e com as minhas próprias experiências.

1. Tente deixar pequeno
  • Seja específico. Howtos devem ser escritos para guiar uma tarefa específica, não discuta outros tópicos, mesmo que eles estejam relacionados. Guarde para um outro tópico.
  • Deixe detalhes irrelevantes para apêndices ou outros documentos de referências. Detalhes tendem a distrair os leitores.
  • Divida em vários arquivos se for um post longo e para leitura online.
2. Deixe legível
  • Seja informal, imagine o leitor na sua frente.
  • Destaque informações importantes. Muitos leitores visualizam o documento procurando apenas um pedaço da informação.
  • Sumarize e categorize. Isto não apenas ajudará o seu leitor a encontrar rapidamente o que ele estava procurando como também organizará as suas idéias enquanto estiver escrevendo.
  • Use listas e seções. Isto ajuda-o a alcançar o próximo tópico. O howto inteiro pode ser uma lista se você estiver escrevendo um assunto simples como este.
3. Use recursos visuais
  • Use imagens ou vídeos. Eles podem poupá-lo de muitas palavras, mas não abuse desses recursos porque há pessoas com conexões muito baixas. Contudo, howto de vídeo pode ser uma boa escolha para tarefas complexas.
4. Mantenha-o simples
  • Talvez o ponto mais importante seja resumir todos os tópicos anteriores. Howtos são entendidos como algo que deixa as coisas mais claras.
  • Use termos técnicos apenas quando for necessário, a não ser que seja para alcançar um público que entendem tais termos.
  • Construa um glossário com os termos técnicos ou aponte-os a um wikipage que explique melhor.
Referência: How To Write a Good Howto