Executando verificação de segurança...
1
Carregando publicação patrocinada...
2

Já escrevi exatamente sobre isso em outros posts:

Veja: https://www.tabnews.com.br/clacerda/mergulhando-nos-fundamentos-a-influencia-silenciosa-do-c

No caso de C, os melhores materiais de estudo vêm diretamente dos autores da linguagem e dos pioneiros da computação. O livro "The C Programming Language", comumente conhecido como K&R, é a bíblia do C, escrito por seus próprios criadores. Muitos podem ser tentados por cursos em vídeo modernos, mas a verdade é que este livro, escrito muito antes de muitos de nós nascermos, é a melhor maneira de aprender a linguagem.

C é uma linguagem simples. Em sua essência, é quase trivial. C não oferece muitas das abstrações encontradas em linguagens modernas. Portanto, quando se trata de construir algo complexo em C, a tarefa pode ser desafiadora. Aqui entra o "Advanced Programming in the UNIX Environment". Mais do que apenas um livro; é uma janela para o mundo da programação em C no "mundo real". Ele desvenda os mistérios por trás de como ferramentas como o NGINX ou o PostgreSQL funcionam.

Ao dominar os conceitos apresentados neste livro, você não apenas será capaz de entender essas ferramentas, mas também de modificar, otimizar e até mesmo criar soluções semelhantes.

Em meio a tantos livros antigos, pode parecer que a linguagem C tenha estagnado no tempo. Porém, "C for the 21st Century" é uma ponte que conecta as abordagens clássicas com as modernas técnicas e ferramentas de desenvolvimento. Novas bibliotecas, otimizações e padrões surgiram. Este livro abraça a evolução da linguagem, apresentando as melhores práticas atuais, ferramentas modernas e um olhar renovado sobre a programação em C no cenário contemporâneo.

Após explorar os recursos literários fundamentais para entender a linguagem C, é essencial adotar uma abordagem prática que complementa a teoria com experiências reais de desenvolvimento. Isso envolve mergulhar profundamente nos sistemas subjacentes, construir projetos do zero e estudar o trabalho dos mestres.

Entendendo os Sistemas Subjacentes

Todas as tecnologias modernas, independentemente da stack de desenvolvimento utilizada, interage com o sistema operacional por meio de uma API em C. Essa universalidade sublinha a importância do C como a base do desenvolvimento de software. Ao se envolver em projetos que exigem interação direta com as "system calls", os desenvolvedores adquirem um entendimento profundo de como o software se interfaceia com o hardware, outros processos, e o próprio sistema operacional. Essa experiência prática é inestimável, pois revela a complexidade e a beleza da comunicação no nível do sistema, algo que a teoria por si só não pode fornecer completamente. É fundamental ter uma compreensão sólida (libc) quanto das chamadas de sistema. Aqui o man é seu melhor amigo.

Construindo do Zero

A ideia de escrever seu próprio servidor web ou sistema de banco de dados pode parecer assustadora, mas é um exercício fascinante na aplicação do C para resolver problemas complexos. Começar com uma versão simples que atenda a um caso de uso específico pode esclarecer o funcionamento de ferramentas como NGINX ou PostgreSQL. Tais projetos não apenas aprimoram suas habilidades de programação, mas também aprofundam sua apreciação pela eficiência e flexibilidade que o C oferece.

Aprendendo com os Mestres

Além de construir suas próprias ferramentas do zero, é crucial estudar o trabalho dos mestres, mergulhando no código-fonte de projetos emblemáticos. Ler o código-fonte dessas ferramentas é uma jornada de descoberta. Claro, não tente entender tudo de uma vez; o objetivo é absorver qualquer coisa, algo que faça sentido. Tente modificar algo e recompile sem quebrar o sistema. Ou melhor ainda quebre algo de propósito, e com a ajuda des mensagens de erro do compilador, arrume.

Explore todas as opções de compilação disponíveis e faça benchmarks de seu desempenho, compilando com -O3 para otimização máxima e sem nenhuma otimização. Execute o binário dentro do GDB e observe as diferenças.

Um abraço e bons estudos!

1
1

Quando eu comecei a programar em C eu li completamente o livro C completo e total. Livro excelente para quem quer se Especializar em C, porém um pouco Overkill nos dias de hoje.

A minha dica para aprender apenas para estudo seria conseguir compilar seu primeiro "Hello World" e fazer os exercícios de iniciante do Beecrowd

1
1

Vou compartilhar um pouco da minha (pouca) experiencia no assunto visto que comecei a estudar sobre C recentemente, mais especificamente C# com dotnet...

  • Segui a doc pra subir uma aplicaçao simples inicial pra entender a estrutura e lançar o primeiro "Hello World"
  • Achei um video no youtube sobre a criaçao de uma API com um CRUD simples
  • Deixei o GPT do lado e fui pesquisando sobre alguns conceitos que via no video e não conhecia pra entender bem a fundo
1

Digo sempre isso...

Se você aprender a dirigir um carro velho, você vai aprender a dirigir um novo com muito mais facilidade.

Foi assim comigo, comecei com C e fui aprendendo o feijão com arroz, a própria sintaxe em si, variáveis, arrays, bibliotecas, objetos, ponteiros. Toda a parte básica.

Recomendo usar o site da beecrowd para ir treinando o que você for aprendendo, ele tem algumas questões que você responde em código.

De resto é sem segredo, começa a estudar conceitos de estrutura de dados (após entender como funciona a linguagem) que isso vai alavancar ainda mais teu entendimento em relação a lógica de funcionamento de um código.

Pelo menos comigo foi assim e me ajudou muito na carreira hoje em dia...

Obs.: Considerei que você tenha conhecimento em lógica de programação, qualquer coisa se tiver com dúvida, ou precisar de uma explicação mais aprofundada, comenta aqui que no que eu puder eu vou te ajudando!

1

Eu percebi que com C eu tenho controle total do que estou fazendo , porém exigi uma complexidade maior para montar um sistema mais complexo e mais estudos, estou tentando montar um passo a passo antes de começar a escrever os codigos.Basicamente entrada,desenvolvimento e saída tipo um roadmap do que eu quero resolver, talvez não seja a melhor ideia mas e um começo.Estou ainda engatinhando nessa linguagem , mas espero poder montar um sistema de banco de dados completo sozinho.

Obrigado pelo feedback.