Erlimar Silva Campos

Programador E5R

O básico para programar computadores

Este livro está disponível para você gratuitamente graças ao projeto “E5R Development Team”. Considere conhecer o projeto melhor e outros materiais disponibilizados por essa iniciativa.

Saiba mais sobre o projeto em http://e5r.org. Uma contribuição financeira nos ajudaria muito a continuar criando conteúdos gratuitos, e assim, outras pessoas poderão aprender a programar sem custos, e também aperfeiçoar suas carreiras como proficionais do desenvolvimento de software.

Essa é a nossa contribuição para a Comunidade de Software Livre.

Copyright (c) E5R Development Team. Todos os direitos reservados.

Prefacio

Este não é um livro para aprender a programar, mas é o livro que junto a outros materiais formam o projeto que pretende ensinar programação de computadores.

Me chamo Erlimar, sou programador, e durante minha trajetória de cerca de 20 anos como programador de computadores, aprendi a apreciar muito duas coisas em especial: 1) codificar e tomar café (é isso mesmo, as duas juntas, não tem como separar essas atividades; e 2) compartilhar o que aprendo diariamente.

De uma forma ou de outra, sempre estive (e estou) participando de algum tipo de mentoria. Seja ensinando aquele programador novato as manhas dos projetos na fábrica, ou criando documentação dos componentes da empresa, ou palestrando algum cursinho ou workshop do time, ou ainda, simplesmente discutindo idéias com colegas entusiastas de tecnologia no corredor ou copa da empresa. Eu também escrevi alguns pequenos artigos em blogs, mas o fato é que eu sempre gostei da idéia de ensinar programação.

Eu gosto muito de aprender e ensinar sobre técnicas avançadas de programação. Coisas como criar bibliotecas e ferramentas de desenvolvimento, desenhar arquiteturas padrões, aplicar técnicas de automação e coisas do gênero. Mas nada me deixa tão feliz quanto ouvir alguém dizer algo como:

Mano, agora entendi. Nunca tinha pensado no problema por esse ângulo. Valeu!

Percebi que levava jeito pra compartilhar o conhecimento que tinha. De fato eu não sei muita coisa, mas acredito que o pouco que sei, consigo compartilhar com outras pessoas. E desde que percebi que levava jeito para ensinar programação, venho fazendo isso da maneira que posso. Mas o que eu queria mesmo era ter algo mais amplo, algo como um curso de programação, seja escrito, ou em áudio, ou em vídeo, quem sabe até um livro. Eu até que tentei fazer cada um desses, ou seja, escrevi em blogs, gravei podcasts, rascunhei um livro e iniciei um canal no YouTube, mas incrivelmente não consegui concluir nenhum deles.

Nossa! Como é difícil completar um trabalho desses! Quero aqui deixar meus parabéns a todos aqueles que já conseguiram completar uma série completa de vídeo aula, artigos no blog ou podcast, e também aos que conseguiram completar seus livros. Não é uma tarefa fácil e vocês completaram. Parabéns!

Nossa Erlimar! Então você é muito sem foco. Não conseguiu concluir nenhum uma seriezinha de artigos? Você deve estar pensando agora.

Pois é. Por um tempo eu fiquei até desapontado comigo mesmo, e frustrado até. Mas então resolvi analisar melhor porque não conseguia terminar esses projetos. Foi aí que percebi que na verdade nunca cheguei a desistir, eu só estava mudando de idéia de tempos em tempos.

Quando estava escrevendo os artigos, eu entendia que agora era melhor escrever um livro; quando escrevendo o livro, percebia que um podcast seria bem mais proveitoso; e quando gravando o podcast, percebia que nada cairia tão bem como um screencast sobre o assunto.

Analisando tudo que me motivou a mudar de um tipo de projeto para outro, ou seja, entre artigo, livro, podcast, vídeo e até palestras. Percebi que não se tratava apenas de eu querer fazer algo novo, mas de que certos assuntos cabem melhor se forem apresentados em um formato mais apropriado. Tente explicar o que é binário em um artigo de texto. Nada fácil! Mas não chega a ser um bicho de sete cabeças se for um vídeo. Ou então experimente fazer um vídeo para apresentar a biblioteca padrão de uma ferramenta, você vai perceber que no fim vão precisar avançar o vídeo o tempo todo pra conferir a assinatura de uma função qualquer, pois usamos as bibliotecas padrões como consulta diária; perceberá que é bem mais fácil procurar pelo nome em um arquivo de texto. E ainda, uma pessoa achará muito mais agradável ouvir 40 minutos sobre a teoria da programação funcional do que acompanhar um vídeo de forma concentrada sobre o assunto.

Cheguei a conclusão de que não é possível ensinar programação simplesmente com uma série em vídeo ou um podcast, também não é possível com uma série de artigos ou um livro inteiro. A jornada de aprender a programar envolve todo um ecossistema de recursos que quando combinados da forma correta se alcança o objetivo, que é aprender a programar.

E é assim que nasce a iniciativa Programador E5R. Portanto, este livro é a parte escrita dessa iniciativa, que combina vários recursos, a saber: livro, vídeos, podcasts, artigos e outras fontes e materiais que servirão de base para seu aprendizado em programação de computadores.

Queremos te ensinar a programar computadores de um ponto de vista fundamental, incluindo, entender o que é um programa de computador, como eles são construídos, sua anatomia e as ferramentas usadas para isso.

Mas além de ensinar a codificar programas, queremos prepará-lo para o mercado de trabalho. Por isso, um dos grandes diferenciais dessa iniciativa, é que iremos introduzí-lo em uma rotina de programador.

E o que vem a ser essa rotina de programador?

Queremos que você aprenda a estudar sozinho, e para isso ensinamos que é necessário desde o início habituar-se a ler notícias sobre o mundo da programação, conhecer as grandes empresas e pessoas de renome na área, e a usar ferramentas que estão envolvidas no dia-a-dia de um programador; ferramentas essas que são utilizadas para comunicação e compartilhamento do conhecimento, além de é claro, conhecer um pouco mais de perto o potencial de seus computadores.

Para deixar as coisas mais profissionais, queremos também que você tenha a vivência em como é feito um software de forma profissional. E é neste ponto que iremos te convidar a participar de um projeto de verdade em nossa comunidade de código livre se reunindo a uma equipe de outros aprendizes mas também de profissionais experientes, para então projetar e construir um software de verdade.

Iremos separar as tarefas, onde alguns trabalharão com o banco de dados, outros com o design, outros com análise, e todos terão a oportunidade de passear entre as funções, além é claro de conhecer o que cada um faz.

Iremos organizar o projeto usando ferramenta de gestão de projeto, gerenciar o código com controle de versão, fazer reuniões de alinhamento, distribuição de tarefa, definição de prazos, execução de testes, ou seja, tudo que ocorre com um projeto de verdade, será praticado por quem aceitar o desafio desse projeto. Dessa forma, além de aprender a escrever programas, você já terá uma experiência com o dia-a-dia de um programador quando ele está em uma fábrica de software de verdade ou em uma equipe qualquer de desenvolvimento de software.

Viu como não se trata apenas de um livro?

Como você pode estar lendo este livro impresso, ou à partir de uma versão digital desatualizada, tomei o cuidado de não deixar aqui as referências aos demais materiais, a saber: vídeos, artigos, podcasts, notícias, e etc.

Para isso dedicamos um site na Internet exclusivo para reunir essas informações, onde você pode encontrar os restante do material relacionado a este livro, e inclusive encontrar uma versão digital deste próprio livro mais atualizada.

Acesse http://www.e5r.org!

E a propósito, o que quer dizer E5R?

Meu nome é ERLIMAR, e E5R é meu nome minificado, ou concentrado. Ou seja, a primeira letra E, mais a contagem das letras do meio (RLIMA) que é 5, mais a última letra que é R. Juntas formam E5R.

Talvez você já tenha visto por aí os termos I18N para Internacionalization, ou L10N para Localization. É a mesma idéia.

Se você não é programador e nunca ouviu falar desses termos, não se preocupe, daqui em diante temos muito dessas coisas legais para você conhecer.

O fato é que eu, ERLIMAR pretendo fazer de tudo para minificar, ou melhor, concentrar a experiência e aprendizado adquiridos nessa minha trajetória de cerca de 20 (vinte) anos em um material que ficará disponível pra você.

Sei que não é possível isso, mas não custa nada tentar. Espero que você goste!

Introdução

Este livro faz parte de uma iniciativa minha que visa ensinar programação de computadores usando a linguagem de programação Python, e o nome dessa iniciativa é “Projeto Programador”. Este não é um livro de Python, mas um livro de programação geral de computadores que usa a linguagem de programação Python para exemplificar os conceitos e praticar os exercícios. Escolhi Python por toda sua facilidade, versatilidade e poder.

Parte I

SE PREPARE!