Meu Começo: Linguagem C
Autor: Hugo Lopes Tavares | Publicado: 2011-08-22T19:53:00-07:00


Acabaram de me pedir "orientações", e eu comecei a me lembrar do que eu estudei quando estava começando&nbsp;a programar.


Resolvi colocar nesse post um resumo do meu início, e fazer algumas recomendações.

Eu comecei a me interessar por computadores logo que ganhei o meu primeiro, quando eu tinha 10 anos,&nbsp;e o que eu mais gostava de fazer era ficar no mIRC nos fins-de-semana e madrugada. Até que um dia, o irmão de um amigo meu&nbsp;resolveu falar pra eu começar a aprender a programar, e me passou uma apostila de C da UFMG.

Primeira apostila: Apostila de C da UFMG


Eu nem sabia o que era linguagem, e já fui estudando umas apostilas de lógica que eu achava na internet, e logo em seguida&nbsp;comecei a estudar a tal apostila de C da UFMG que o Vitor Padilha havia me recomendado. Eu tinha uns 12 anos, e não entendia muita coisa,&nbsp;aí brinquei uma ou duas semanas e desisti. Me senti um merda. Fiquei brincando com mIRC scripting até que com uns 13 pra 14 eu resolvi voltar&nbsp;a aprender a programar.

Eu sempre usei IRC, e na época eu usava a BrasNet. Muitas pessoas do #C me ajudaram na época, inclusive pessoas de comunidades&nbsp;do Orkut, como o professor Paulo Motta, que me ajudou muito no meu início, via MSN/Gtalk.

Eu fiquei nessa de aprender por mais de um ano, e nesse meio tempo muita coisa, tudo pelas dicas da galera da BrasNet.

A apostila de C da UFMG sempre foi uma lenda, e muitas pessoas a recomendam até hoje! Depois de estudar muito C,&nbsp;vi que ela é legal para dar uma passada superficial pela linguagem, mas não é tão legal pra ter como referência.

Eu não a recomendaria hoje em dia.



Primeiro livro: C Completo e Total

O Paulo falava muito sobre esse livro, e eu decidi baixar e começar a lê-lo no computador. O livro é uma bíblia, tem umas 800 páginas!Tem muita coisa interessante no livro que não está totalmente ligado a linguagem C - no início eu me lembro de explicações sobre stack,&nbsp;heap e etc, que achei muito legal, pois eu não havia lido isso em lugar nenhum. Acho que foi fundamental eu ter gasto meses&nbsp;nesse livro, e com certeza aprendi muito com ele.

Um ponto fraco do livro é que tem muitos exemplos de coisas que só funcionam com bibliotecas da Borland no sistema,&nbsp;e algumas péssimas práticas.

É um livro razoável pra ter como referência.



O melhor: The C Programming Language, 2nd edition

O livro é muito foda. É o melhor material sobre C (c89/k&amp;r) que eu já li até hoje. O livro é bem pequeno,&nbsp;mas é fantástico. Os autores são: Dennis Ritchie e Brian Kernighan, duas lendas, e ambos autores do UNIX.É uma ótima leitura, recomendo a todos que querem aprender C, lê-lo. Ele é conhecido como K&amp;R2.

Há poucos dias o Zed Shaw fez umas críticas a esse livro no twitter, falando sobre algumas má praticas usadas em exemplos do livro.Eu concordo com o Shaw em alguns pontos, mas os exemplos são muito sucintos e adequados, e isso facilita muito pra quem está aprendendo.

É claro que há muita coisa de C que só é possível aprender lendo código e conversando com pessoas. Por isso eu recomendo frequentar&nbsp;o canal ##c na Freenode, pra quem está aprendendo C. Já obtive muita ajuda lá também (depois que eu parei de usar a BrasNet).



Muitas Man Pages

Essa semana eu estava conversando no almoço com alguns amigos da Globo.com sobre documentação de linguagens,&nbsp;e eu falei sobre o meu início, em que eu tinha um Slackware numa máquina virtual,e usava internet discada, e logo, tudo o que eu tinha pra estudar C eram as man pages.

São documentações EXCELENTES. Segundo o Everton Carpes, o motivo disso é a maturidade, já que a GLIBC tem uns 30 anos.

Recomendo muito que todos aprendam a fazer consultas pelas man pages, antes de ir ao Google.

Antes que eu me esqueça: leiam a man page do scanf, ele é muito mais poderoso do que os livros mostram.



Lendo código dos outros

Como eu não poderia deixar de falar, ler código dos outros é uma das melhores maneiras de aprender uma linguagem nova.

Um que me marcou foi o código do MINIX. Eu, obviamente não entendia nada de sistema operacionais, mas eu queria ver como&nbsp;programadores C de verdade escreviam código, e lá aprendi alguns padrões que eram usados na época, alguns truques com pré-processador e etc.

Na época o host de projetos opensource mais famoso era o SourceForge, e de lá eu já baixei muito código pra ler, e me lembro de um&nbsp;ircbot que o Isaque Dutra estava escrevendo em C, eu comecei a hackear pra aprender como funcionava a comunicação pela rede,&nbsp;e era tão newbie que nem sabia usar o CVS (que era o SCM usado no SourceForge naquela época).



Conclusão

Acho que é fundamental que todo programador aprenda alguma linguagem que seja de mais baixo nível, como experiência de vida mesmo,&nbsp;porque é necessário aprender a escovar bits e se virar com os poucos recursos existentes.

Apesar de ter estudado muito C, nunca escrevi nenhuma biblioteca/framework interessante em C,mas sinto que criei uma base bem sólida pra evoluir desde então.