Eu ando muito cansado de aprender coisas porque preciso. Mas antes de chegar no assunto do título, eu quero te falar umas coisas.

Velho gosta de contar história longa Link to heading

Talvez depois de uns literais “hello worlds” monocrom√°ticos e coloridos em BASIC, tentando entender o que era aquele tal “QuickBASIC” que veio com meu primeiro computador, C foi a primeira linguagem de programa√ß√£o que tive contato na vida. Foi j√° na faculdade, em 2001. Nessa √©poca eu achava que ia seguir uma carreira em redes de computadores (at√© arrumar meu primeiro est√°gio na √°rea e descobrir que odiava). Depois eu achei que seria aquele misto estranho de DBA e desenvolvedor que havia no come√ßo do s√©culo XXI, j√° que todos os meus amigos estavam seguindo nessa vida de certifica√ß√£o Oracle e parecia que todos os empregos minimanente decentes na TI em Macei√≥ eram nesta √°rea (at√© descobrir que era profundamente desinteressante fazer software para usina de cana-de-a√ß√ļcar, especialmente em PL/SQL).

√Ä essa altura, por volta de 2003, tudo que me restava era tentar a vida de programador. Eu fazia um est√°gio na pr√≥pria faculdade, que al√©m de manuten√ß√£o b√°sica e atendimento aos professores e servidores, envolvia o desenvolvimento de um pequeno sistema de chamados em PHP 3. Eu tinha plena no√ß√£o de que desenvolvia ele muito mal, usando os conceitos que aprendia nas disciplinas de programa√ß√£o e engenharia de software, mas sem avan√ßar um cent√≠metro al√©m disso. A√≠ me ofereceram o primeiro emprego “de verdade” (sem carteira assinada nem direitos, claro, hehehe) para programar no “PHP do Java”, o tal JSP. Comprei um livro sobre Java, tirei xerox de um sobre JSP e l√° fui eu.

Esse trabalho foi apavorante. Os donos da empresa eram dois analistas de sistemas que não programavam mais e fiquei com a responsabilidade de desenvolver um sistema de compras para um pequeno hospital sozinho, numa linguagem que ninguém na empresa sabia (eu incluso). Fiquei pouco mais de um ano. Aprendi muita coisa, peguei hábitos bons e péssimos, implementei o sistema mal, mas no melhor das minhas capacidades e saí completamente apaixonado por programação e desenvolvimento de software.

Dal√≠ em diante, 20 anos se passaram entre trabalhos excelentes e p√©ssimos. Times incr√≠veis, amigos extra√≥rdin√°rios e uma cole√ß√£o de linguagens de programa√ß√£o que precisei aprender, dominar ou pelo menos enrolar o suficiente para fazer meu trabalho. Em 2011 cheguei a trabalhar em um breve projeto para a falecida Nokia em C/C++, mas minhas fun√ß√Ķes eram majoritariamente outras.

E o C com isso? Link to heading

A larga maioria das linguagens que trabalhei ao longo do tempo t√™m pelo menos sua sintaxe inspirada em C, de forma que nunca me foi uma linguagem estranha ou ileg√≠vel. Mas C opera num n√≠vel de abstra√ß√£o que eu n√£o tive muito contato e tenho cada vez mais interesse. Tenho passado cada vez mais tempo estudando em minhas horas de descanso sobre program√ß√£o de sistemas mais antigos, emula√ß√£o e (finalmente) abrindo pra ler aquele livro amaldi√ßoado do Tanenbaum. Isso tem feito um bem danado para minha sa√ļde mental e me ajudado a conectar com a hist√≥ria da minha √°rea. Essas coisas pouco a pouco foram me lembrando que nunca aprendi C de verdade. N√£o al√©m do m√≠nimo necess√°rio para passar por aquelas disciplinas da faculdade, quando eu sequer tinha muito interesse em programa√ß√£o.

Chegou a hora de corrigir isso. Em 2024 eu decidi que vou aprender C, como eu deveria ter feito em 2001. Veja, isso n√£o quer dizer que eu vou terminar de aprender C em 2024. Ainda n√£o tenho clareza total de como farei isso, mas defini alguns primeiros passos.

O plano de estudos Link to heading

Eu tenho alguma dificuldade de acompanhar cursos em vídeo ou nesses modelos de aula remota com slides e afins, então escolhi começar com livros. Eu tenho um livro da época de faculdade chamado C Completo e Total, de Herbert Schildt, portanto vou começar por ele. Não é um livro avançado, mas parte do princípio que você já sabe programar em outras linguagens e tem pelo menos conhecimento rudimentar de conceitos como pilha e heap. Por isso decidi começar por ele, ao invés de algo mais introdutório ou do clássico de Kernighan & Ritchie.

Talvez voc√™ saiba que C n√£o √© hoje exatamente a mesma linguagem que foi criada em 1972. Ela gahou seu primeiro padr√£o em 1989 (ANSI C) e depois disso ganhou algumas itera√ß√Ķes. Ap√≥s o ANSI C, tivemos pelo menos o C99 (1999), C11 (2011), C17 (voc√™ j√° entendeu) e o C23, todos com incrementos e melhorias √† linguagem. O problema √© que o meu livro √© de 1997, portanto ele cobre at√© o ANSI C. Mas vai ser assim mesmo. Quero encarar essas 800 e poucas p√°ginas, fazer exerc√≠cios, portar e reimplementar algumas coisas bobas que tenho por aqui e depois me atualizar com o que as novas vers√Ķes trouxeram. N√£o tenho demanda de trabalho nem pressa, ent√£o vou seguir esta trilha mais lenta.

O plano √© esse: leitura, exerc√≠cios e mini-projetos, em loop. Quero escrever e postar atualiza√ß√Ķes e reflex√Ķes aqui (uma das coisas que queria voltar a fazer este ano), vamos ver como me saio com isso. Depois de revisar, preencher as lacunas e consolidar o conhecimento b√°sico na linguagem, quero tra√ßar um plano do que estudar na sequ√™ncia, mas por enquanto tem muita coisa que n√£o sei para ter qualquer tipo de planejamento mais longo.

Nos vemos ao longo do ano, eu acho. Até mais.