Categorias
Programação

Linguagem C: Os 3 Estágios da Compilação

Hoje teremos mais um daqueles posts em que não falamos diretamente de programação, mas sim dos estágios da compilação de um programa em linguagem C.

Talvez de momento você possa imaginar que isto é desnecessário, já que o compilador faz todo o processo pela gente, mas na realidade, dominar os procedimentos é um passo essencial, e eu vou explicar melhor o porquê:

Tudo é divertido enquanto as coisas dão certo. Concorda?

  • Você escreve seu programa;
  • O GCC compila e gera um arquivo executável;
  • Você executa o arquivo gerado.

Só quem já tentou programar alguma vez na vida sabe que nem sempre isto sai como o esperado.

É comum que no começo a gente sempre pense que o problema está no código em si. Procuramos por horas e horas e o problema, no final das contas, era só alguma opção que faltava passar para o compilador poder fazer a coisa certa.

Existe código que “compila”, mas ainda assim não funciona, exatamente por ter dado algum erro no processo posterior ao da compilação, e que nem sempre é lembrado ou até mesmo conhecido pelo programador.

Por isso que sempre digo que precisamos entender as ferramentas e os processos, e não só a programação em si. Quanto mais você entende do processo, melhor você programa, e quanto melhor você programa, melhor você entende o processo.

É um via de mão dupla, e por isso hoje separei este conteúdo pra você desde já ir se acostumando.

O processo de compilação pode ser dividido em diversos estágios, e é de extrema importância pelo menos entender os 3 principais:

  1. Pré-processamento
  2. Compilação propriamente dita (traduzir código de alto nível em código de baixo nível: saiba mais aqui)
  3. Linking (ou “ligação”, mas pra ser sincero nunca ouvi ninguém falando assim em português)

No vídeo eu mostro o que é o pré-processamento, o que acontece com o seu código por debaixo dos panos depois que ele é processado, e explico a importância do estágio de Linking, que tem tudo a ver com as #include‘s, que já vimos nas aulas sobre bibliotecas.

Se você gostou da ideia de poder incluir bibliotecas escritas por outras pessoas no seu código, então você precisa entender o que é esse tal de Linking.

Algo que esqueci de comentar no vídeo e que é legal de saber: O pré-processador também é responsável por remover todos os comentários do seu código antes de passar para o estágio de compilação. Abordaremos o assunto de comentários um pouco mais para a frente.

E agora que você já conheceu o comando ldd, que tal passar para o ldd outros programas aí do seu computador e ver quais bibliotecas eles estão usando por debaixo dos panos?

Se você caiu aqui “de paraquedas”, clique aqui para assistir/ver os posts na ordem em que foram lançados.

Nota: O pessoal da QtCon me avisou que ainda tem ingressos para os dois dias de palestras (para os treinamentos já se esgotaram). Para o pessoal de São Paulo que tiver interesse em Qt, dê uma olhada no site oficial do evento: br.qtcon.org. Minha palestra falando do Ubuntu Phone a princípio está marcada para o Sábado dia 19 de Agosto de 2017. Apareça lá pra gente bater um papo 🙂

E antes de fechar o post, uma pergunta para você: tá com um tempo livre? Então deixa um comentário aqui em baixo (ou lá no youtube mesmo se preferir).

Um abraço!

Categorias
Programação

Funções em linguagem C, Bibliotecas e Libc – Parte 2

Finalmente está no ar a segunda parte do conteúdo de funções e bibliotecas!

Se você ainda não assistiu a primeira parte, o post anterior está aqui neste link.

Hoje vamos aprender como utilizar algumas funções matemáticas fornecidas pela glibc através da “math.h” e algumas funções de uso geral da “stdlib.h”.

De quebra vamos aprender rapidamente o tipo de variável “double”, que nos permite representar um número “real” (com casas decimais), e veremos como pedir para o printf() formatar este tipo de valor adequadamente quando impresso na tela.

Talvez você perceba que o ritmo da aula foi meio acelerado, mas logo voltamos à nossa “programação normal” 🙂

Caso tenha curiosidade de olhar tudo o que a Glibc oferece para você usar no seu programa, vou deixar o link da documentação abaixo. Não se assuste com a quantidade de informação. Realmente é bastante coisa, mas de passo em passo a gente chega lá.

Como exercício você pode procurar no documento as funções que aprendemos hoje na aula, e talvez descobrir outras funções semelhantes.

https://www.gnu.org/software/libc/manual/html_mono/libc.html

Eu sei que olhar documentação nem sempre é um processo divertido, mas pense assim: Melhor gastar 2 minutos do seu tempo olhando e entendendo a documentação de algo que já existe do que gastar 1 hora programando algo do zero e que já havia sido feito por outra pessoa.

Para finalizar, tenho dois avisos:

  1. Nos dias 18, 19 e 20 de Agosto de 2017 estará acontecendo a primeira QtCon do Brasil em São Paulo. Farei uma palestra sobre o que aprendemos no desenvolvimento do Ubuntu Phone usando o framework Qt. A programação do evento está muito legal e terá diversas palestras interessantes. Algumas pessoas que acompanham aqui já me avisaram que comparecerão e será um prazer conversar pessoalmente com vocês.
  2. Para os alunos do curso de terminal: Neste domingo lançamos o Curso de Shell Script e alunos do curso anterior recebem 50% de desconto. Um cupom foi enviado no mesmo e-mail utilizado no cadastro do EAD. Se por qualquer motivo você não recebeu o seu, por favor entre em contato com o EAD do Diolinux. Caso ainda deseje fazer o curso anterior, ao final você também receberá o desconto para prosseguir no de Shell Script.

Um abraço e até mais.

Categorias
Programação

Funções em linguagem C, Bibliotecas e Libc – Parte 1

Já imaginou você emprestar um livro e adquirir instantaneamente todo o conhecimento sem nem precisar ler? Parece bom demais pra ser ver verdade, não é? Mas esta é a mágica das bibliotecas em linguagens de programação, e que vamos aprender um pouco melhor no vídeo hoje. Vamos também entender o que são funções em linguagem C.

Para você não se assustar muito, já adianto que o vídeo de hoje é o maior vídeo que já gravei aqui pro site. Um combo de uma hora de duração.

Tópicos abordados:

  • Programar direto na linha de comando (opcional) do seu computador;
  • Instalar o compilador de linguagem C da GNU (gcc);
  • Aprender a compilar seu programa com o gcc manualmente no terminal;
  • Aprender o que são funções usando o exemplo da minha cafeteira italiana;
  • Fazer um paralelo entre funções em linguagem C e funções da matemática;
  • Aprender o que são bibliotecas e como elas vão facilitar sua vida na programação;
  • Mostrar exemplos de bibliotecas open source que você pode usar no seu programa.
  • Aprender o que é a libc e a glibc;
  • Aprender o que exatamente significa “#include <stdio.h>”, e o que isso tem a ver com o Neo do Matrix.
  • Aprender a usar as funções puts(), putchar() e printf().

Como você deve ter visto, é bastante conteúdo e por isso recomendo que você reserve uma hora do seu dia para assistir e executar os procedimentos da aula no seu computador.

Segue aqui os links que citei durante a aula:

Como nesta aula não consegui vencer todo o conteúdo que tinha preparado, dividi o post em duas partes.

Na próxima aula veremos algumas outras funções em linguagem C oferecidas pela libc: funções matemáticas e funções de uso geral.

Agora me diga aí nos comentários sua opinião pra eu poder ir adequando as aulas aos poucos e achar a melhor forma de trazer o conteúdo pra você.

Um abraço e nos vemos na parte 2.