Aprendendo uma nova linguagem via livros: herança de décadas passadas ainda funciona bem
Cheguei ao final de semana com uma reminescência, que conduz a uma indicação de livro com o qual estou gostando de aprender Python.
Quando eu estava aprendendo a ser um programador profissional (na época ainda não nos chamavam de “desenvolvedor”, mas já havia quem preferisse se qualificar como “projetista de softwares”), no final da década de 1980 e após alguns anos de hobby , o mercado da microinformática ainda era dominado pelas hoje chamadas linguagens de terceira geração (Pascal era a minha preferida, ainda nos tempos da série Turbo, da Borland).
Era um tempo diferente: a maioria dos PCs com que trabalhei rodavam o MS-DOS (ou algum dos clones), conexões (em redes locais – Internet por aqui era assunto conhecido por poucos) eram raras, dados eram transportados em disquetes e a orientação a objetos era vista como “a próxima onda” (na livraria da esquina havia até um livro intitulado “Assembler orientado a objetos”, que hoje há quem pense que era um elaborado hoax).
A maior parte dos profissionais com que convivi nos meus primeiros anos como programador havia aprendido a programar originalmente nos micrinhos da chamada “geração 8 bits” brasileira (TK-82C, CP-300, os clones do Apple ][, HotBit e todos os seus companheiros, predecessores e sucessores).
Esse aprendizado ocorria com ajuda de uma grande variedade de revistas, fascículos e livros de autores brasileiros que explicavam como usar as linguagens disponíveis para essas surpreendentes máquinas – em especial o BASIC, que anos depois os professores vinham nos dizer que havia estragado nossa noção de programação estruturada para sempre. (essa interessante entrevista com o Prof. Pierluigi Piazzi conta mais sobre como eram esses livros, na fase final da “era 8 bits”).
Para mim (e para outros contemporâneos), esses livros – incluindo os bons manuais que acompanhavam os micrinhos – tinham uma característica hoje relativamente rara: como as linguagens da época eram bastante autocontidas (sem a profusão de bibliotecas, frameworks e APIs que hoje facilitam nossa vida), dava de descrever 100% de seus comandos, parâmetros e configurações em um único livro. Já sabendo lógica de programação, e tendo à mão um segundo livro descrevendo a íntegra das rotinas e variáveis programadas na ROM dos computadores, dava de praticamente dominar um combo plataforma + linguagem.
E na hora de aprender uma segunda linguagem, ainda nessa época, o cidadão começava escolhendo um bom livro que apresentasse a linguagem completa. Havia verdadeiras bíblias de Clipper Summer 87, e ao mesmo tempo havia um cartão de referência de Turbo Pascal 3.0 que caberia em 2 folhas A4 – e todos eles apresentavam a íntegra dos comandos, funções e parâmetros das suas linguagens.
Só que aí o mundo do que chamávamos de microinformática mudou rapidamente. Vieram os ambientes gráficos, os frameworks, a orientação a objeto, multitarefa, multiusuário, multithreading, virtualização, comunicação interprocessos e tantos outros conceitos que na década anterior ficavam mais restritos, e subitamente passaram a potencializar o nosso trabalho diário – ao mesmo tempo em que tornaram mais difícil aprender uma nova linguagem, pois vinha acompanhada de uma série de APIs, recursos da plataforma, frameworks, etc., como uma interminável penca de siris saindo do balaio.
A última linguagem que eu aprendi “lendo o livro” foi AWK, quando já havia deixado de ser um profissional do desenvolvimento de sistemas. Gostei da proposta, comprei o livro dos autores da linguagem, e comecei a me divertir bem mais com meus scripts – isso deve ter sido há uns 15 anos, e a linguagem é bem mais antiga do que isso: data de 1977, o que se traduz em limitações em relação ao que se pode fazer hoje com linguagens igualmente simples de operar, mas mais completas em termos de recursos de interface, de armazenamento e mais.
Mas estar limitado ao console e aos arquivos-texto, embora atenda uns 80% das minhas necessidades práticas de ex-programador, estava me fazendo cada vez mais me sentir anacrônico. Ao mesmo tempo, a inserção de camadas externas sobre o AWK para tratar de interfaces mais modernas, bases de dados, conectividade, etc. me parece desafiar a proposta da própria linguagem.
Foi por isso que recentemente saí em busca de uma linguagem mais moderna com a qual eu pudesse simpatizar, e acabei encontrando isso no Python. Mas embora o núcleo da linguagem seja suficientemente sucinto, ainda não havia encontrado um livro com as qualidades com as quais estava acostumado da minha época de aprendiz de linguagens, e nem estava disposto a aprender usando recursos online, como fiz com PHP.
Devido à atividade de blogueiro, recebo grande variedade de obras para analisar e resenhar, e um número considerável delas tem estado relacionada ao Python. Encontrei várias que recomendaria a quem quisesse usar o Python durante o aprendizado de lógica de programação, e outras que tinham excelente qualidade técnica mas não conseguiram me atrair.
Mas agora, fechando as atividades do ano que começa a encerrar, resolvi passar o pente-fino na biblioteca técnica (do qual o primeiro resultado foi que doei 27 livros de TI para uma escola do interior), e separei alguns livros de Python para uma segunda olhada mais atenta.
Outros autores, não se sintam diminuídos: não sou um leitor típico, e também tem mais livros que separei para um segundo momento, fazendo o papel dos antigos livros que apresentavam o conjunto das rotinas da ROM e as variáveis de sistema. Mas tem um livro que separei para ler por primeiro, por ter as qualidades que busco – e curiosamente não é um livro que foi escrito para isso.
Trata-se do “Python e Django“, escrito por Osvaldo Santana e Thiago Galesi. Publicado pela Novatec em 2010, tem 279 páginas, e o sumário pode ser consultado on-line.
Acontece que este livro foi feito para ensinar desenvolvimento ágil de aplicações web, aproveitando para isso o ótimo framework Django – algo que dificilmente poderia me interessar menos.
Mas (e verifiquei nas biografias para ter certeza) os 2 autores também viveram a era 8 bits, e acho que isso se reflete na natureza dos capítulos 1 a 7, que ocupam cerca da metade da obra, descrevendo a linguagem Python em si (sem se preocupar com o Django) como eu gosto: começando pela estrutura, depois uma lista detalhada dos tipos, comandos e funções, loops, seleções, modularização e assim por diante.
Espero que os autores não se ofendam por eu ter gostado do livro deles por uma razão diferente daquela da que ele foi escrito, e por não estar interessado no Django ou no desenvolvimento de aplicações web.
Mas o fato é que estou gostando de ler os capítulos sobre Python, estudar os exemplos de programas e de uso (tudo simples como deve ser), e recomendo que quem mais tiver interesse em aprender a linguagem Python folheie este livro na livraria e avalie se não chega à mesma conclusão que eu.
Ao mesmo tempo, convido os leitores a aproveitar os comentários para relembrar de livros de informática dos “velhos tempos” que foram importantes para o seu aprendizado, ou mesmo para recomendar outros livros para o aprendizado de linguagens atuais!
“Ao mesmo tempo, convido os leitores a aproveitar os comentários para relembrar de livros de informática dos “velhos tempos” que foram importantes para o seu aprendizado”
Eu usei o ‘The C Programming Language’, do Kernighan, na faculdade. Acho que conta como ‘velhos tempos’ (é de 1988)…
Python é realmente uma linguagem fantástica, e a compreensão de listas é muito expressiva. Outra que eu gostaria de aprender é Haskell, mas o cérebro não deixa…
Eu também sou desses mesmos velhos tempos e também comecei aprendendo Basic e Assembly Z80 em micros de 8 bits. Depois aprendi Pascal na faculdade e C e C++ por conta própria e necessidade de trabalho.
Hoje estou fazendo um curso de Java porque esta linguagem é complexa demais para se aprender por conta própria de maneira avançada.
Python está na minha lista de desejos de aprender também, mas o meu interesse não é para usá-la para web e sim pela facilidade de se construir rapidamente protótipos de sistemas, inclusive com GUI, e pela facilidade de interfaceamento com bibliotecas em C.
Bons tempos aqueles em que a programação era bem mais simples porque não havia interfaces gráficas, que complicam bastante os programas.
A programação para web também é complexa, mas pelo menos o sistema fica multiplataforma naturalmente por necessitar apenas de um browser para ser usado e acho que é o caminho mais sensato para quem precisa desenvolver sistemas corporativos e que gostaria de migrar para linux e software livre tanto nos servidores quanto nos clientes.
“Assembler orientado a objetos”
uhauhauhauhauhauahuah
piada mais nerd que essa não deve existir
Já programei em várias linguagens, principalmente na faculdade – começando com Pascal. Hoje trabalho com .NET, mas tenho muita curiosidade e vontade de aprender Phyton, mas a falta de tempo (ou será preguiça mesmo?) não me deixa começar.
Gabriel
http://dotdicas.blogspot.com/
O meu livro clássico, que me foi recomendado na época da faculdado, isso foi em 1995, é Treinamento em Linguagem C da Victorine Viviane Mizrahi. É bem no estilo que você descreveu, simples e direto, dissecando a linguagem.
Mas em casa tenho Clipper Orientado à Objetos.
Quero aprender python, mas todo programa que tenha um código mais avançado pra mim ver as funcionalidades não rodam de maneira alguma, deve ser noobisse… mas me parece uma linguagem fantástica… Embora eu não me de bem com a idéia de utilizar outra linguagem senão C, ainda tem o C++ que compreendo até o ponto de templates XD mas aprender uma linguagem nova é algo meio chatinho…
Olha, não vivi a era dos 8 bits (a não ser nos video-games) e estou aprendendo a programar agora, mas confesso que gosto de leituras sobre linguagens exatamente como vc descreveu: “omeçando pela estrutura, depois uma lista detalhada dos tipos, comandos e funções, loops, seleções, modularização e assim por diante”
Acho que facilita a aprendizagem pq acaba sendo um modelo onde vc pode comparar e relacionar similaridades e diferenças em relação aquilo que já conhece.
Oi Augusto,
Em primeiro lugar obrigado pela bela resenha que não só fala sobre o nosso livro como também cita clássicos da minha infância (já que aprendi a programar com 9 anos de idade).
Os livros “Input” da ilustração estão aqui ainda. Eu os tenho aqui junto com diversos outros livros da “geração MSX”. Muitos deles com as páginas amarelas e desgastadas pelo tempo e pelo uso intenso que eu fazia (alguns deles ainda preservam minhas anotações com letra ‘de criança’ ainda).
Quando iniciei esse livro eu tinha vontade de ter algo similar aos livros de Clipper Summer’87 do Vidal: dois volumes onde a linguagem e biblioteca eram abordadas no primeiro e no segundo ele desenvolvia uma aplicação “de verdade” (um software de mala direta).
É claro que a qualidade do trabalho do Vidal era muito maior do que a que imprimimos no nosso trabalho, mas espero que, no futuro, com as próximas revisões, a gente se aproxime desse resultado.
Uma lista que considero que mudou minha vida (eu estou nessa luta desde a era do XT, 286):
- The C Programming Language
(eu comecei com Turbo Pascal, depois migrei)
- Compilers: Principles, Techniques, and Tools
(Dragon Book, indispensável)
- Estruturas de Dados – prof. Paulo Veloso et al
(li na facul para uma cadeira, era muito bom ehehe)
Da lista recente:
- Expressões Regulares – Aurélio Marinho Jargas
(gostoso de ler, agnóstico na linguagem, e divertido!)
- Pro JavaScript Techniques – John Resig
(javascript é o futuro, sabiam?)
De uns anos pra cá eu reduzi muito as compras de livros (nenhum esse ano todo, p.ex.), porque acho que eles ficam mais rapidamente ultrapassados. Na época da faculdade os livros tinham validade maior… Tempos difíceis para autores :(
Eu prefiro muito mais as linguagens mais simples do que essas coisas de frameworks e etc.
Hoje em dia programar é muito mais um trabalho braçal de configurações e intrincadas dependências do que um trabalho lógico de racioncínio, como era antigamente.
Estou aprendendo Python e me interesse deveras pelo livro da resenha (hoje eu tenho uma versão impressa em casa do Dive Into Python) e mais alguns artigos falando acerca de threads em Python, mas nada como o apresentado no Livro, bom para dar uma visão mais geral e ampla da linguagem (apesar de todo mundo dizer que se aprende de tudo na internet [o que é verdade] eu ainda acho muito mais produtivo aprender com um lviro pronto, estruturado e pensado para isso do que com 1001 sites de referência e artigos/matérias/tutoriais pela internet, não que não sejam bons, mas sempre me parece que falta alguma coisa).
É bem possível que a resenha tenha convencido mais uma pessoa a comprar o livro, ainda mais com o preço em conta =D
Abs!
Interessante, enquanto eu estou estudando python, me dei de cara com esse post.
Infelizmente não pude ter a oportunidade de viver na geração 8 bits, mas se vivesse, a história seria outra.
Eu comecei com o livro C Completo e Total, de Herbert Shcildt. Me lembro que pedi ele de nataç para a minha mãe em 2007, lembro também da frase do autor escrita no final do livro: “Se você tiver somente um livro de C em sua biblioteca, tem de ser este!”
Nesse ano, quando comecei a me aventurar com o Linux, peguei alguns tutoriais na internet de shell script (daqueles bem inchutados, que dá para você aprender shell em uma semana), depois fui me aprofundando até que parei.
Agora estou começando com python, peguei umas dicas na internet, só para iniciar, depois peguei uma tradução do tutorial de referência de python e vou partir para um livro mais aprofundado e para pyGTK e talvez, django
Já favoritei! =D
Apesar de não ser um profissional da informática (sou Geofísico), sempre necessito de escrever um programa aqui, um script ali e procuro aprender alguma outra linguagem acolá, de modo que mais pra frente eu possa escolher aquela que for mais conveniente para aquilo que pretendo fazer. Geralmente essas coisas me poupam horas de trabalho ao mesmo tempo em que me divirto tentando resolver desafios com essas linguagens (meu Deus, como era bom resolver aqueles EPs na faculdade!),
Nesse caminho, me deparei com alguns livros que gostei, até que encontrei uma coleção dos Deitel. Esses sujeitos (acho que pai e filho) escreveram sobre diversas linguagens, incluindo Python e de uma maneira super detalhada e prazerosa de ler. Você nota o cuidado que eles tiveram ao escrever o livro. Quando percebi isso, disse: “Esse é meu livro!”. E foi, já usei o “C – How to program”, “C++ How to program”, recentemente peguei o “Java – How to program” e estou querendo obter o “Python – How to program também”. Na minha humilde opinião, a melhor coleção de livros a respeito de linguagens de programação.
Nossa… programo apenas desde 2000 (se não me engano), quando aprendi Pascal… desde então foram livros e mais livros… O interessante é que quanto mais linguagens se aprende, podemos também ver semelhanças entre elas e acredito que facilita para aprender outras. Hoje trabalho (por conta própria, é claro) com XUL, HTML, CSS, Javascript, Pascal, Object-Pascal ( e com FCL e GTK), Python(e PyGTK), PHP( e PHP-GTK), C (e C-GTK), C++, brinco um pouco com J2ME (embora Java eu não goste muito) e ainda tenho um projetinho de linguagem aqui…
Temos ótimos autores brasileiros e os livros sempre nos ensinam muito, só é preciso disciplina e um pouco de tempo para estudar e praticar (sem CTRL+C e CTRL+V)!
Só vou tentar daqui pra frente comprar um leitor digital pois assim como gosto de livros, gosto das árvores e prefiro que elas façam parte do meu futuro pois dos livros, ficará o conhecimento.
Sim, existe o livro “Linguagem Assembler Orientada para Objetos”, de Leo Dorfman ( Makron Books ), que comprei em 18/11/1992 !
Professor Pierluigi Piazzi!!!!!
Que surpresa encontrá-lo de novo!!! Comprei todos seus livros (Editora Aleph) quando tinha um Hotbit.
Tempos heroicos, divertidos, proveitosos… cada dia uma descoberta, diferentemente de hoje.
Oi, esse assuntos de ‘velhos tempos’ … nao vamos iniciar contadores, por favor heim …
Basic e Assembly no MSX (Hotbit e CCE).
Depois C89 com C Guia do programador e C Alinguagem de programacao.
Aprendi Pascal com Dominando Turbo Pascal e Ferramentas avancadas em Turbo Pascal.
Agora dica de um livro (em 3 tomos) para linguagem super atual …
Programando em C, da Ciencia Moderna, livro de C99. A maior.
Desconsiderando a parte dos velhos tempos, já que não tenho nem 20 anos, o primeiro livro de linguagem que eu realmente peguei para ler foi A book on C, isso não me impediu de ver meu pai brincar de desenhar coisas na tela da televisão, com o que eu acho que seria BASIC :p
Comprei este livro na black friday do linuxmall. comecei a ler ontem é muito bom mesmo, recomendadissimo, a as serie dos deitel também gosto muito e logico tenho meu exemplar de Expressoes Regulares do Aurelio (a primeira edição ainda), faz poucos anos que me habituei a comprar livros de informática, mas um que me ajudou muito é Desvendando o SqlServer 7.0 de Soukup Delaney me ajudou muito com técnicas de SQl.
Desculpa pelas propagandas galera.
O livro do Osvaldo e do Thiago ficou realmente muito bom. A minha cópia autografada já está rodando entre os alunos, enquanto não compramos as cópias pra Biblioteca.
Recentemente, saiu um novo livro de Python, também pela Novatec. É o Introdução Á computação com Python, do Nilo Menezes. O link é esse: http://novatec.com.br/livros/intropython/. O livro segue a mesma estrutura dos livros clássicos de algoritmos e lógica de programação, como o Manzano e o Forbellone. Pra quem ensina programação, a sequencia é conhecida e facilita muito o uso de Python no ensino de programação. Recomendo a leitura.
Aprendi lógica de programação por um livro do Manzano, realmente são bons
Uma pena que a maioria dos bons livros de programação são caros a beça.
Eu comprei esse livro, li e já emprestei para um amigo. Através dele entendi muitas coisas que não conhecia no python. Parabéns! :)
A revista Input era uma das minhas diversões da adolescência… ficava horas programando meu TK90X. Encontrei este link com todas as edições da revista, original em inglês, digitalizadas:
http://www.bombjack.org/commodore/magazines/input/input.htm
Não gosto muito de tutoriais ou how to, salvo raras excessões. Não há nada comparado à leitura de livros para um conhecimento consolidado.
Comecei com um PC 8bits 80086.
Tive livros de Cliper do Ramalho. Doei os livros de basic/pascal. Lembro dos livros de C/C++ que eram os básicos de Herbert Schildt e STROUSTRUP…
Augusto esta sua resenha me fez lembrar de uma experiência semelhante. Na época que fazia faculdade ainda aprendendo Pascal tive contato com o livro “Visual C++ for Dummies”, que apesar de ser sobre o famoso IDE da Microsoft tinha metade do livro sobre C++ puro inclusive com os conceitos de orientação a objetos. Apesar de não ter interesse pelo Visual C++ este livro foi muito importante para meu aporendizado de C++ e POO.
Lembro-me de um pequeno guia do Turbo Pascal 5.0 que vivia sempre comigo. Também já fui rato do help do QBasic!
Tenho saudades da época do modo texto. Mudar para os ambientes gráficos foi como trocar uma estrada por um campo aberto. Web é aerovia.
Meu livro preferido desta época é o “C Completo e Total”, do Herbert Schildt. Acho que até hoje ele é vendido. Aprendi C na segunda edição deste livro. Lembro que alguns anos depois comprei também o “Programming Perl”, escrito pelo próprio pai da criança.
Saindo do conceito estrito de livro de linguagem de programação, gostaria de mencionar aqui a série que adquiri ainda nos anos 90, a “Unix Network Programming”, do W Richard Stevens. Muito bom! Hoje em dia não compro mais livros técnicos.
Tinha um livro digital / programa que ensinava o MS-Dos e que era muito bom. Chamava-se “Professor PC”. Se alguém o tiver e puder me enviar gostaria de guardá-lo por saudosismo. O programa era muito bom para iniciantes…
Realmente funciona mas tem que começar com o livro certo. Hoje em dia tem muita lixeira (principalmente no mercado nacional) que é uma cópia lavada dos arquivos de ajuda da linguagem e não acrescenta absolutamente em nada.
Acredito que os livros antigos se preocupavam mais em ensinar e solidificar os conceitos iniciais da linguagem do que simplesmente vomitar tudo e fazer do leitor um grande balde de informação (sem conhecimento algum), o que leva a perpetuação dos sobrinhos.
Olha só o que eu achei!!!
http://www.diveintopython3.org/
Ops!
Programando em C, da Ciencia Moderna, tem 2 tomos e nao 3, teclei errado, desculpem.
Uma serie que segue essa linha de mostrar todo o basico de uma linguagem eh a serie BlackBook da MakronBooks, tenho o C++ e o XML dessa serie e gostei muito de ler, simples, rapido e efetivo.
Tenho o C++ do Bjarne Stroustrup e C A linguagem de programacao, em minha opniao apesar da ser menos espacoso o Kerningham e o Ritchie, fizeram um livro mais eficaz. Mas os dois sao otimos livros.
Excelente post. Lembrei de meu primeiro computador que ganhei em 1984, um CP-400 da Prológica, era leitor assíduo da revista Input e da Microsistemas. Passava horas digitando programas (jogos) em Basic e Assembler que vinha nestas revistas, depois gravávamos em fitas K7 – pode acreditar. Abandonei a área por alguns anos, mas retomei a carreira a partir de 96 quando entrei para Universidade onde não sai mais, me tornei funcionário e professor da Instituição. Conheci Linux em 97 que uso desde então, outro vício.
Hoje quarentão, sigo na área e dou graças a Deus por ter conhecido esta máquina mágica, e tenho profundo interesse pela teoria da computação que é outra história.
@marcodesouza… Também comecei nos anos 80 e a Abril havia lançado a “Enciclopédia Prática de Informática” (acho que era esse o nome) em fascículos que depois você poderia encadernar. Para não ficar atrás, a editora Globo lançou a “Microcomputador Curso Prático” e depois outra editora (não lembro qual) lançou a “Input”. Ficávamos eu e meu tio – ele com um MSX-Expert da Gradiente e eu num CP-400 da Prológica digitando programas em Basic e Assembler para depois salvarmos em fitas K-7 – drive de disquete era um luxo e coisa de rico! Tempos bons aqueles…