O Que É a Linguagem de Programação C? Um Guia Simples da Linguagem Que Move o Mundo
Um guia simples e sem jargões sobre o C, a linguagem de programação de mais de 50 anos escondida no seu celular, no seu carro e na internet. Entenda o que é o C, por que ele é tão rápido, como lida com a memória e por que ainda importa.

Nesta página
Você provavelmente nunca viu uma linha de código em C. Mas, neste exato momento, o C quase certamente está trabalhando para você. Ele está no sistema operacional do seu celular e do seu computador, no seu roteador de Wi-Fi, no seu carro, no seu micro-ondas e nos servidores por trás de quase todo site que você visita.
O C é uma linguagem de programação criada em 1972, e mais de 50 anos depois ainda é uma das peças de tecnologia mais importantes do mundo. Este artigo explica, em linguagem simples, o que é o C, por que ele ficou tão influente, o que o deixa rápido e por que ele também pode ser um pouco perigoso.
Primeiro, o que é uma linguagem de programação?
Os computadores só entendem de verdade longas sequências de 0 e 1, chamadas código de máquina. Escrever um programa assim é lento e cheio de erros para as pessoas.
Uma linguagem de programação é um meio-termo: um jeito de escrever instruções num texto que as pessoas conseguem ler e que depois é traduzido para os 0 e 1 que o computador entende. Algumas linguagens são feitas para ser o mais amigáveis possível. Outras ficam perto de como a máquina funciona de verdade. O C fica bem no meio:

Essa posição no meio é o superpoder do C. Ele é legível o bastante para pessoas escreverem programas grandes, mas perto o bastante do hardware para esses programas rodarem rápido e controlarem a máquina com precisão. Por isso, às vezes chamam o C de "assembly portátil".
Como é o C
Este é o primeiro programa clássico em C. Tudo o que ele faz é escrever uma saudação na tela:
1#include <stdio.h>
2
3int main(void) {
4 printf("hello, world\n");
5 return 0;
6}Pode parecer enigmático, mas cada linha tem uma tarefa simples:

Esse pequeno programa "hello, world" ("olá, mundo") ficou famoso com o livro The C Programming Language, de 1978, escrito por Brian Kernighan e Dennis Ritchie. Desde então, "hello, world" virou o primeiro programa tradicional dos iniciantes em quase todas as linguagens.
Repare nas chaves { } e no ponto e vírgula ; no fim da linha. Se você já viu código em JavaScript, Java ou C#, eles vão parecer familiares. São as impressões digitais do C.
Do código a um programa rodando
O computador não consegue rodar esse texto diretamente. Primeiro, um programa chamado compilador traduz tudo para código de máquina, antes da hora:

Pense em traduzir um livro. O C traduz o livro inteiro antes de alguém ler, então a leitura depois é rápida. Linguagens como o Python usam um interpretador, que é mais como um intérprete ao vivo numa reunião, traduzindo enquanto a conversa acontece. Isso é mais flexível, mas mais lento.
Por que o C mudou tudo
O C foi criado por Dennis Ritchie no Bell Labs (o laboratório de pesquisa da companhia telefônica americana AT&T), e o nome é simplesmente a letra seguinte a uma linguagem anterior chamada B.
Ritchie e o colega Ken Thompson estavam construindo um sistema operacional chamado Unix. Naquela época, os sistemas operacionais costumavam ser escritos em linguagem assembly, que fica presa a um tipo específico de computador. Mudar para um computador novo significava reescrever quase tudo do zero.
Em 1973, eles fizeram algo ousado: reescreveram quase todo o Unix em C. De repente, levar o Unix para um computador novo significava, basicamente, escrever um compilador de C para ele e compilar de novo. Essa ideia, chamada portabilidade, foi revolucionária e ajudou tanto o Unix quanto o C a se espalharem pelo mundo.

O Linux, o macOS, o iPhone, o Android e boa parte do Windows de hoje têm parte da sua árvore genealógica ligada a essas ideias, e o núcleo deles ainda é escrito em grande parte em C.
Por que o C é tão rápido
O C tem fama de ser rápido, e com razão. São três motivos principais:
- Ele é traduzido antes para código de máquina, então não há trabalho de tradução enquanto o programa roda.
- Ele quase não acrescenta nada. Não há nenhum ajudante escondido rodando por trás para arrumar a memória ou conferir o seu trabalho.
- Quem programa está no controle. Você decide exatamente como os dados são organizados e quando a memória é usada e devolvida.
Para ver o que isso significa na prática, este é o mesmo programa simples, que conta todos os números primos abaixo de 2 milhões, escrito em três linguagens e cronometrado no mesmo notebook:

O C terminou em um terço de segundo. O Python, que é ótimo para muita coisa mas não foi feito para velocidade bruta, levou umas 50 vezes mais. O JavaScript acompanhou o C neste teste simples, porque os motores modernos de JavaScript (escritos em C++, um parente próximo do C) traduzem o código mais usado para código de máquina na hora. Em programas reais, maiores e mais bagunçados, o C costuma manter uma vantagem, principalmente em quão pouca memória ele precisa.
É por isso que o C é a escolha certa quando cada pedacinho de velocidade e de memória conta: sistemas operacionais, bancos de dados, motores de jogos e os pequenos computadores dentro de eletrodomésticos, carros e aparelhos médicos.
Mexendo direto na memória
Esta é a parte que deixa o C poderoso e traiçoeiro ao mesmo tempo. A memória de um computador é como uma fileira muito longa de caixas de correio numeradas. Cada caixa tem um endereço e pode guardar um valor. O C deixa você mexer nessas caixas diretamente:

A variável onde é um ponteiro. Ela não guarda um valor comum, como uma idade ou uma nota; ela guarda o endereço de outra caixa. É como anotar o endereço da casa de alguém num papelzinho, em vez de carregar a casa por aí.
Os ponteiros deixam os programas em C moverem dados de forma eficiente e conversarem direto com o hardware. Eles são um grande motivo para o C ser rápido e flexível, e também são a origem de muitos dos seus erros mais traiçoeiros.
O porém: o C não tem rede de proteção
A maioria das linguagens modernas confere o seu trabalho. Se você tentar colocar 4 coisas num espaço feito para 3, elas param você com um erro. O C confia totalmente em você e não confere:

Neste exemplo, a 4ª nota transborda para a caixa do vizinho, que por acaso guarda uma configuração chamada e_admin ("é administrador"). Agora o programa acha que o usuário é um administrador. Esse tipo de erro se chama estouro de buffer (buffer overflow), e atacantes o exploram há décadas.
Isso não é só teoria:
- A Microsoft disse que cerca de 70% dos problemas de segurança que ela corrige todo ano são de segurança de memória, e a equipe do Google Chrome relatou um número parecido. Boa parte desse código é escrita em C e no seu parente C++.
- O Heartbleed, uma falha famosa de 2014 que expôs dados privados de um número enorme de sites, foi um erro de memória no OpenSSL, uma biblioteca de segurança muito usada e escrita em C.
- Em 2024, o Escritório do Diretor Nacional de Cibersegurança da Casa Branca publicou um relatório pedindo que a indústria de software adote linguagens com segurança de memória sempre que possível.
O C também pede que você cuide da memória à mão: você pede caixas quando precisa e tem que devolvê-las quando termina. Esqueça de devolver, e o programa vai comendo memória aos poucos (um vazamento de memória). Devolva cedo demais e continue usando, e aparecem erros estranhos e difíceis de achar.
A grande família do C
Mesmo que o C sumisse amanhã, a influência dele continuaria em todo lugar:

- Linguagens que ele inspirou: C++, Objective-C, Java, JavaScript, C# e Go copiaram o jeito do C e muitas das suas ideias. Se você aprender C, muitas outras linguagens vão parecer familiares.
- Softwares feitos com ele: o núcleo do Linux (que roda na maioria dos servidores e supercomputadores do mundo e em todo celular Android), o núcleo do Windows e do macOS, o banco de dados SQLite (presente em praticamente todo celular e navegador), o Git (que programadores usam para controlar o seu código) e muitos outros.
- Aparelhos minúsculos: micro-ondas, máquinas de lavar, termostatos, centrais eletrônicas de carros, marca-passos. Os pequenos chips dentro desses aparelhos muitas vezes são programados em C, porque ele roda bem com pouquíssima memória.
Há décadas, o C aparece de forma constante entre as linguagens de programação mais populares nos rankings da indústria, uma trajetória impressionante para uma linguagem nascida no começo dos anos 1970.
C vs. C++ (e outros nomes confusos)
Os nomes podem confundir, então aqui vai um guia rápido:
- O C++ começou no início dos anos 1980 como "C com classes", acrescentando novas formas de organizar programas grandes. Ele é, em grande parte, uma extensão do C: muito código em C também funciona em C++. É muito usado em videogames, navegadores e outros softwares grandes que exigem desempenho.
- O C# (pronuncia-se "C sharp") é outra linguagem, da Microsoft, lançada em 2000. Ele copia a aparência do C, mas funciona de um jeito bem diferente, inclusive com gerenciamento automático de memória.
- O Objective-C acrescentou novos recursos ao C e foi a principal linguagem da Apple por muitos anos, antes da chegada do Swift.
Vale a pena aprender C?
Depende do que você quer fazer:
- Bons motivos para aprender C: você vai entender como os computadores funcionam por dentro (memória, processador, como os programas rodam) e vai estar pronto para trabalhar com sistemas operacionais, aparelhos, robôs, jogos ou qualquer coisa em que a velocidade importa.
- Motivos para começar por outra: o C faz você cuidar de muitos detalhes, e os erros dele podem confundir iniciantes. Muita gente começa por uma linguagem mais amigável, como Python ou JavaScript, e aprende C depois.
De qualquer jeito, o C nunca é perda de tempo. Muitos programadores dizem que aprender C foi o momento em que os computadores finalmente "fizeram sentido".
Um pequeno glossário
- C: uma linguagem de programação criada em 1972 no Bell Labs, conhecida pela velocidade e pelo controle.
- Linguagem de programação: um jeito de escrever instruções para o computador num texto que as pessoas conseguem ler.
- Código de máquina: os 0 e 1 que o processador entende de verdade.
- Linguagem assembly: uma versão legível do código de máquina, uma linha por instrução do processador.
- Compilador: um programa que traduz código para código de máquina antes da hora.
- Interpretador: um programa que traduz e roda o código enquanto avança.
- Portabilidade: a capacidade de levar um programa para outro tipo de computador com poucas mudanças.
- Endereço de memória: o número de uma "caixa de correio" na memória do computador.
- Ponteiro: um valor que guarda um endereço de memória, como um papelzinho com o endereço de uma casa.
- Estouro de buffer: escrever além do fim de um espaço reservado na memória, por cima dos dados de outra coisa.
- Vazamento de memória: memória que um programa esquece de devolver, usando cada vez mais aos poucos.
- Linguagem com segurança de memória: uma linguagem que evita automaticamente a maioria dos erros de memória, como Python, Java, Go ou Rust.
- Unix: um sistema operacional muito influente, reescrito em C em 1973, ancestral do macOS e inspiração para o Linux.
Concluindo
O C é uma linguagem de programação de 1972 que fica entre as pessoas e a máquina: legível o bastante para escrever programas grandes, perto o bastante do hardware para rodá-los rápido. A capacidade dele de passar de um computador para outro ajudou o Unix, e depois o Linux, a se espalharem pelo mundo, e o jeito dele continua vivo em muitas das linguagens mais populares de hoje.
Essa proximidade com a máquina tem um preço: o C dá aos programadores controle total sobre a memória e, com ele, a chance de cometer erros caros. Ainda assim, mais de 50 anos depois, uma parte enorme da tecnologia que você usa todo dia, do sistema operacional do seu celular ao chip minúsculo do seu micro-ondas, roda silenciosamente em C.
Read next

O Que É a Linguagem de Programação C#? Um Guia Simples da Linguagem da Microsoft para Apps, Sites e Jogos
Um guia simples e sem jargões sobre o C#, a popular linguagem da Microsoft por trás de jogos feitos na Unity, sites e apps de empresas. Entenda de onde vem o nome, como ele roda em quase qualquer aparelho e por que cuida da memória para você.

O Que É a Linguagem de Programação C++? Um Guia Simples da Linguagem por Trás de Jogos e Navegadores
Um guia simples e sem jargões sobre o C++, a linguagem por trás de videogames, navegadores e muitos programas do dia a dia. Entenda o que ele acrescenta ao C, como funcionam as classes e a limpeza automática e por que ele é rápido e complexo.

O Que É um Transformer na IA? A Ideia por Trás do ChatGPT, Explicada de Forma Simples
Um guia simples e sem jargões sobre os transformers, a arquitetura de IA por trás do ChatGPT, do Claude e do Gemini. Entenda como a "atenção" ajuda a IA a entender palavras no contexto e por que isso mudou a IA tão rápido.
Comentários
Be kind and specific. Comments with links from new accounts appear after a moderator reviews them.