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

Linguagens de Programação: O que você precisa saber antes de começar sua jornada como programador.

Aprender uma nova língua nos permite expandir nossos horizontes, e a mesma coisa acontece com linguagens de programação. Quer apostar? Então pensa assim:

Com quantas pessoas no mundo você conseguiria se comunicar hoje sabendo falar somente Português? 250 milhões (sim, eu procurei no Google). Até aí tudo bem, mas..

Se você aprender Inglês, este número aumenta para quase 600 milhões.
E se você aprender Mandarim então… este número vai para quase 2 bilhões de pessoas!

E se eu te perguntar hoje: Com quantos processadores você consegue se comunicar hoje?

Aliás, você sabia que a língua nativa que eles entendem chama-se Assembly?

Outra pergunta: Você sabia que nem todos os processadores falam a mesma língua, e você sabia que você pode, sim, se comunicar com todos eles sem falar a sua língua nativa?

Em resumo, é isso que a maioria dos programadores faz no seu dia a dia. Conversa com processadores, mesmo sem saber falar a língua deles, através de alguns tradutores que chamamos de Compiladores e Interpretadores.

Este é o assunto que eu cubro com mais detalhes neste quase-podcast, que eu gravei essa semana. Como parte deste experimento aqui (de ensinar programação), estou testando o formato de podcast em vez de vídeo.

Sem mais delongas, ouça aqui o episódio pra entender melhor o que são linguagens de programação, de alto nível, de baixo nível, e porque eu digo que ao contrário do que muita gente pensa, linguagem de máquina é na verdade “muito simples“.

**Aviso 1: Se você é novo por aqui e não recebeu meus e-mails anteriores, veja os posts do Modelo Orquestra e da Dupla Dinâmica antes de prosseguir.

**Aviso 2: No final do episódio eu faço umas perguntas que eu gostaria que você deixasse nos comentários a sua opinião.

Espero que tenha gostado deste conteúdo. Tenho certeza que em breve vamos debulhar umas linhas de código juntos.

Um Abraço!