Era uma vez C: A História da linguagem que mudou tudo

Dheph
4 min readSep 24, 2024

--

"Quer aprender uma linguagem ? Procure saber o motivo dela existir."

Essa frase, dita por um sábio (vulgo Fábio Akita), resume uma das melhores abordagens para aprender uma nova linguagem de programação.

Normalmente, no nosso dia a dia, temos o hábito de pular etapas. Na maioria das vezes, damos desculpas como “não tenho muito tempo” ou simplesmente ignoramos certos aspectos, achando que não são importantes. Mas hoje, vamos fazer diferente. Prepare-se para descobrir C sob um ângulo que você nunca viu antes — e que pode transformar sua forma de aprender programação.

Aviso! Lembre-se: não existe fórmula mágica. Só uma pessoa pode definir seu futuro, e essa pessoa é você 🫵.

Porque essa "C"oisa existe ?

Não se preocupe, não vou passar três anos contando a história do C e suas antecessoras. Vamos focar no que realmente importa agora. Se quiser se aprofundar mais, fique à vontade!

Vamos ser visuais: imagine que você está olhando para dois códigos. Qual deles você acharia mais fácil de dar manutenção, considerando que são centenas de linhas em múltiplos arquivos?

A primeira:

Ou a segunda ?

Caso tenha pensado: “a primeira”, tenho uma péssima notícia para você 🙂‍↕️.

Agora, imagine que estamos em 1969 ⏳. Você tem uma ideia bacana para um novo sistema operacional. Está tudo planejado, até que chega a um dilema: qual linguagem usar?

Você entende que o projeto será grande e que a escolha será difícil. Então, foca em dois requisitos principais para definir a linguagem:

  • Controle sobre o hardware ( baixo nível )
  • Facilidade de manutenção ( alto nível ).

Perfeito, agora que temos os requisitos, vamos conhecer nossas opções atuais.

Qual caminho seguir ?

Algumas opções de linguagens da época:

  • Assembly: Dá controle total sobre o hardware, mas sua portabilidade e manutenção são complicadas.
  • Fortran: Focada em operações matemáticas e fácil de manter, mas sem abstração suficiente do hardware.
  • Algol: Claramente expressa algoritmos e trouxe “if”, “while” e “for”, mas tem pouco controle do hardware.
  • Cobol: Ótima para manipulação de grandes volumes de dados, mas também carece de controle sobre o sistema.
  • Lisp: Forte em IA e matemática simbólica, mas, novamente, não oferece controle.
  • BCPL: Mais intermediária, boa para criar softwares de sistemas como compiladores, com maior controle sobre o hardware.

Parece que temos uma vencedora: BCPL. Só tem um porém: o seu computador é um PDP-7 com mais ou menos 9,2 KB de memória. Ou seja, apesar de a BCPL ser compacta e eficiente, ela não vai funcionar muito bem no seu computador. Precisamos pensar em alguma solução para isso.

Da glória a perdição: O Nascimento do B

Então você otimiza a BCPL até que ela funcione no PDP-7. “Se a montanha não vem, vamos caminhar até ela”.

Isso deu origem a algo novo. Vamos chamar de B. Otimizamos tanto que nem vamos precisar mais do CPL 🫢.

Tudo está indo muito bem, mas você começa a se deparar com alguns problemas. O B, assim como a BCPL, não tem tipagem explícita. Ou seja, não sabemos quais variáveis são caracteres, inteiros, flutuantes, etc.

Você identificou mais alguns problemas:

  • Não podemos representar conjuntos de dados mais complexos.
  • Sem diferenciação entre inteiros (1) e floats (1.2), as operações matemáticas ficam ineficazes.
  • Variáveis globais sem escopo definido causam problemas em programas maiores.
  • A recursividade não é bem suportada, limitando nossas opções.

B trouxe avanços, mas não era suficiente. A solução? Melhorar a linguagem e resolver esses problemas.

Uma nova esperança

Podemos começar resolvendo o problema da ausência de tipagem explícita, e depois os outros problemas listados.

Parece que temos algo novo, uma nova linguagem. Ela possui controle preciso sobre a memória e tipos de dados, é mais eficiente no uso de recursos de hardware, suporta estruturas de dados mais complexas e oferece maior simplicidade de manutenção.

Excelente! Criamos o C, e agora estamos prontos para terminar o Unix.

E então…

Você acaba de explorar a história da criação do C por um ângulo completamente diferente. De Dennis Ritchie a Ken Thompson, essas figuras revolucionaram a programação, e suas ideias ainda moldam o que fazemos hoje. Se esses nomes te intrigaram, vale a pena se aprofundar mais. E lembre-se: cada grande linguagem tem suas raízes, e entender o passado é a chave para dominar o futuro.

Se ficou com dúvidas ou quer discutir mais, estou por aqui.

Até a próxima!

--

--

Dheph
0 Followers

Developer passionate about technology and how it can change people's lives.