![]() | |||
Joel on Software Joel sobre Software
| |||
|
Outros artigos de "Joel on Software" em Português Outros artigos de "Joel On Software" em Inglês |
Por Joel Spolsky Traduzido por Frederico Costa Editado por Pedro Vieira 27 de Janeiro de 2001 Em 1982, a minha família recebeu o primeiro dos primeiros PC IBM em Israel. Nós fomos inclusivamente ao armazém e esperamos enquanto o nosso PC era entregue do porto. De alguma forma, convenci o meu pai a comprar a versão mais completa, com duas drives de disquetes, memória 128 K e um conjunto de duas impressoras, uma de matriz de agulhas (para rascunhos rápidos) e uma impressora Brother Letter-Quality Daisy Wheel, que soa exactamente como uma metralhadora quando está a imprimir, apenas que com mais barulho. Agora, "todos" sabem que BASIC era uma linguagem para crianças que requer que você escreva código tipo spaghetti e converte o seu cérebro num queijo Camembert. Pagámos então $600 pelo IBM Pascal que veio num conjunto de três disquetes. O primeiro passe do compilador estava na primeira disquete, o segundo estava na segunda e o linker estava na terceira disquete. Escrevi um simples programa de "olá mundo" e compilei-o. O tempo total de compilação: 8 minutos. Hmm. É muito tempo. Escrevi um ficheiro batch para automatizar o processo e consegui encurtar a duração para 7 minutos e meio. Melhorou. Mas quando eu tentei escrever longos programas como a minha espectacular versão do Othello que me ganhava sempre, acabava por gastar a maior parte do tempo a esperar pelas compilações. "Yep," um programador profissional disse-me, "nós costumávamos ter uma máquina de abdominais e costumávamos fazer abdominais enquanto fazíamos compilacões. Passados alguns meses de programação eu tinha abdominais espectaculares." Um dia, um pequeno programa chamado Compas Pascal apareceu vindo da Dinamarca, que Philippe Kahn comprou e renomeou Borland Turbo Pascal. Turbo Pascal era a modos que chocante, visto que basicamente fazia tudo o que o IBM Pascal fazia, apenas que corria em cerca de 33K de memória incluindo o editor de texto. Isto ainda não era o mais impressionante. O mais impressionante era o facto de que você podia compilar um pequeno programa em menos de um segundo. Era como se a empresa que você nunca tinha ouvido falar tinha introduzido um clone do Buick LeSabre que podia atingir 1,000,000 Km/h e andar à volta da Terra com tão pouco gasolina que uma formiga a podia beber sem ficar doente. De repente, fiquei muito mais produtivo. Foi quando eu aprendi o conceito de ciclo REP. REP significa "Read, Eval, Print", e descreve o que um interpretador de lisp faz para funcionar: "lê" o seu input, avalia-o, e imprime o resultado. Um exemplo de um ciclo REP é mostrado em baixo: eu escrevo algo, e o interpretador lê, avalia, e imprime o resultado.
Numa escala maior, quando você está a escrever código, você está numa versão macro do ciclo REP chamada ciclo Editar-Compilar-Testar. Você edita o seu código, compila-o, testa-o e vê o quanto ele funciona bem. Uma observação crucial é que você tem de passar pelo ciclo vezes sem conta para escrever um programa, e assim segue a ideia de que quanto mais rápido for o ciclo Editar-Compilar-Testar mais produtivo você será chegando ao limite natural de compilações instantâneas. Esta é a razão, formal, "informaticamente falando " porque os programadores querem mesmo hardware realmente rápido e programadores de compiladores farão qualquer coisa para ter o super-rápido ciclo de Editar-Compilar-Testar. O Visual Basic faz isso através de análise gramatical e de léxico conforme você vai escrevendo cada linha de código, fazendo com que a compilação final seja bastante rápida. Visual C++ faz o mesmo fornecendo compilações incrementais, headers pré-compiladas e "linkagem" incremental. Mas assim que você começa a trabalhar numa equipa maior com vários programadores e testadores, você encontra o mesmo ciclo novamente, só que maior. Um testador encontra um erro no código e relata o bug. O programador corrige o erro. Quanto tempo leva até que o testador receba a versão do código corrigido? Nalgumas organizações de desenvolvimento de software este ciclo Relata-Corrige-Retesta pode demorar algumas semanas, o que significa que toda a organização está a funcionar de forma não produtiva. Para manter todo o processo de desenvolvimento a funcionar suavemente você precisa de se esforçar em obter um ciclo Relata-Corrige-Retesta curto. Uma boa maneira de fazer isto é através das compilações diárias. Uma compilação diária é uma compilação completa, diária, automática de todo o código. Automática - porque você prepara o código para ser compilado a uma determinada hora todos os dias, através da utilização de processos cron (no UNIX) ou através do serviço scheduler (no Windows) Diária - ou ainda mais que isso. É tentador fazer compilações continuas mas você provavelmente não pode por causa de problemas com o controlo de versões de código sobre as quais falarei mais tarde. Completa - certamente que o seu código tem várias versões. Versões múltiplas em várias linguagens, vários sistemas operativos ou a versão topo de gama e uma de baixo de gama. A compilação diária deve compilá-las todas. E precisa de fazer a compilação de cada ficheiro a partir do zero sem se apoiar nas capacidades possivelmente imperfeitas do compilador de recompilação incremental. Aqui estão alguns dos muitos benefícios das compilações diárias:
Aqui tem como as fazer. Você vai precisar de um servidor para as compilações, que deve ser provavelmente o computador mais rápido que conseguir arranjar. Escreva um script que faz o check out de uma cópia completa do código que se encontra no repositório (você está a utilizar controlo de versões de código, não está?) e depois compila desde o zero cada versão de código que você vende. Se você tem um "installer" ou programa de setup, compile esse também. Tudo o que você entrega aos clientes deve ser produzido no processo de compilação diário. Coloque cada compilação na sua própria directoria, codificada por datas. Execute o seu script a uma hora fixa do dia.
Para mais informações:
Este articúlo apareceu originalmente em inglês com o nome Daily Builds Are Your Friend | ||
![]() O Joel Spolsky é o fundador de Fog Creek Software, uma pequena companhia de software em Nova Iorque. Licenciou-se na universidade de Yale, e tem trabalhado como programado e director na Microsoft, Viacom e Juno. | |||
Os conteudos destas paginas representam a opinião de uma pessoa
Todos os conteudos sob o Copyright ©1999-2005 por Joel Spolsky. Todos os direitos reservados.