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.