Conhecendo o C

Introdução o C

I-A. Histórico

A história da linguagem C está intimamente ligada à história do sistema operacional UNIX. Em 1969, Ken Thompson, que trabalhava nos Bell Laboratories, desenvolveu um sistema operacional DEC PDP-7 semelhante ao Multics, mas muito mais simples e modesto. Esse sistema foi mais tarde renomeado como Unics (Uniplexed Information and Computing System), que em breve foi definitivamente alterado para UNIX.

Na época, a única linguagem realmente adequada para escrever sistemas operacionais era a linguagem Assembly. Ken Thompson então desenvolveu uma linguagem de alto nível (ou seja, mais próxima da linguagem humana), a linguagem B (cujo nome vem de BCPL que era um subconjunto da linguagem CPL, derivada do Algol, que, por sua vez, era uma linguagem mais popular na época), para facilitar a escrita do UNIX. Não era uma linguagem de programação fracamente tipada (uma linguagem não tipada, em oposição a uma linguagem tipada, é uma linguagem que manipula objetos em sua forma binária, sem a noção de tipo (caractere, inteiro, real, etc.)) e também dependia do PDP-7 para permitir a portabilidade do UNIX para outras máquinas. Assim, Denis Ritchie e Brian Kernighan, dos Bell Laboratories, também melhoraram a linguagem B para dar luz à linguagem C. Em 1973, o UNIX foi reescrito inteiramente na linguagem C. Durante 5 anos, a linguagem C foi limitada ao uso interno da Bell até que Brian Kernighan e Denis Ritchie publicaram uma primeira definição da linguagem em um livro chamado A Linguagem de Programação C. Foi o começo de uma revolução no mundo da TI.

Graças ao seu poder, a linguagem C rapidamente se tornou muito popular e, em 1983, o ANSI (American National Standards Institute) decidiu padronizá-la, adicionando também algumas modificações e melhorias, que deram origem, em 1989, à linguagem como a conhecemos hoje. No ano seguinte, a linguagem C foi adotada pela ISO (Organização Internacional de Normalização) e atualmente é aceita pela ISO e pela IEC (Comissão Eletrotécnica Internacional). Ela passou por algumas revisões ao longo dos anos (na grande maioria dos casos ainda compatíveis com as versões anteriores), das quais as mais importantes são as de 1990 (adoção pela ISO), de 1995 (suporte aprimorado ao desenvolvimento de programas internacionais) e de 1999 (adição de um número significativo de novos recursos). No entanto, a versão de 1999 atualmente ainda não é amplamente distribuída, motivo pelo qual, neste documento, focaremos no aprendizado das versões de 1990 e de 1995.

Características da linguagem C

Universalidade

C é uma linguagem de programação por excelência e não se limita a um campo específico de aplicações. De fato, C é utilizada na escrita de:

  •  Sistemas operacionais (como Windows, UNIX e Linux) ou máquinas virtuais (JVMs, Runtimes e Frameworks .NET, software para virtualização, etc.)
  •  Softwares para cálculo científico, modelagem matemática ou CAD / CAM (Matlab, R, Labview, Scilab, etc.)
  • Bases de dados (MySQL, Oracle, etc.)
  • Aplicativos de rede (intranet, internet, etc.)
  • Jogos de vídeo games (em particular com OpenGL ou SDL e/ou os vários mecanismos associados (jogos, físicos ou 3D))
  • Montagem, compiladores, depuradores, intérpretes, softwares utilitários e muitas outras áreas.

Sim, o C simplesmente permite que você faça tudo, o que fez com que ele fosse chamado de “a linguagem de programação de Deus”, e com razão. Devido ao seu caráter próximo à linguagem da máquina, o C não é, contudo, muito produtivo, o que significa que muitas vezes é necessário escrever muito para fazer pouco. Este é o preço que se paga pelo uso dessa linguagem poderosa!

 Concisão, flexibilidade

É uma linguagem concisa e muito expressiva, e os programas escritos nessa linguagem são muito compactos, graças a um poderoso conjunto de operadores.

Potência

O C é uma linguagem de alto nível, mas que facilita a execução de operações de baixo nível e o acesso à funcionalidade do sistema, que na maioria das vezes é impossível ou difícil de obter em outras linguagens de alto nível. Essa é a originalidade do C, e também a razão pela qual ele é usado bastante nas áreas onde o desempenho é crucial, como em programação de sistemas, no cálculo numérico ou ainda em sistemas embarcados.

Portabilidade

É uma linguagem que não depende de nenhuma plataforma de hardware ou software, ou seja, que é totalmente portátil. Além disso, devido à sua simplicidade, escrever um compilador C para um determinado processador não é muito mais complicado do que escrever um montador para esse mesmo processador. Assim, onde temos um montador para programar, geralmente também temos um compilador C, do qual também dizemos que C é um “montador portátil”.

Onipresença

A popularidade da linguagem, mas, acima de tudo, a elegância dos programas escritos em C, é tanta, que seu estilo e sintaxe influenciaram muitas outras linguagens de programação:

  • C ++ e Objective C são descendentes diretamente do C (geralmente são considerados extensões do C)
  • O C ++ influenciou o Java
  • O Java influenciou o JavaScript
  • O PHP é uma mistura de linguagem C e shell-script no Linux
  • O C # é principalmente uma mistura de C++ e Java, duas linguagens no estilo C, com algumas influências funcionais de outras linguagens como Delphi e Visual Basic (o # do C# vem de duas sobreposições “++”)

Estou começando

De que ferramentas eu preciso?

Para começar bem, você precisa de um IDE (Ambiente de Desenvolvimento Integrado). Vários IDEs estão disponíveis para você, mas a maioria deles está disponível apenas para um sistema operacional.
É aqui que o Code::Blocks difere de outros IDEs, porque é portátil. O que significa que está disponível pelo menos nos sistemas mais amplamente utilizados e conhecidos: Windows, Linux e Mac OS X.

No Windows, você tem a possibilidade de usar a versão conhecida como “Estável”, que geralmente é a favorita

Se o seu sistema for um sistema Linux, você poderá escolher entre diferentes pacotes, dependendo da sua distribuição:

Aqui está a versão 8.02 se você possui o Mac OS X: Instalação do Code::Blocks no Mac OS X

Você também pode usar as versões em desenvolvimento. Elas permanecem apenas versões betas, portanto mais ou menos estáveis:

Quais ferramentas adicionais estão disponíveis para mim?

Nesta seção, você encontrará ferramentas de depuração (essenciais para ter aplicações sólidas e com o mínimo possível de falhas e bugs), ferramentas para detectar vazamentos de memória, etc. Algumas delas só estão disponíveis em um sistema e, portanto, são classificadas pelo

Sistema Operacional

  • O principal depurador da Microsoft, e provavelmente o melhor nesse sistema operacional, ainda é o fornecido por padrão nas soluções do Visual Studio. A única coisa que muda aqui é que, para usá-lo, você também deve usar o editor do Visual C ++ (aqui Visual C ++ 2010 Express Edition), que pode ser baixado gratuitamente no msdn: Baixe e instale o Visual C ++ 2010.
  • No link ao lado, você pode ver as etapas para a instalação do Microsoft Visual C ++ 2010 Express: Download, instalação e configuração
  • No Linux, você tem o equipamento ideal, sem dúvida o melhor que podemos fazer no momento, mantendo o máximo de simplicidade!
  • DDD: Essa ferramenta permite depurar seus aplicativos.
  • O melhor é provavelmente usar a ferramenta de busca/download/instalação para sua distribuição, como a apt-get, por exemplo, no Debian e derivados!
  • Valgrind: Este é um conjunto de ferramentas de depuração, que permite, entre outras coisas, detectar vazamentos de memória em seus programas.
  • Como no DDD, você pode baixar o programa através dos programas da sua distribuição ou baixar diretamente no site oficial: Faça o download do Valgrind no site oficial.
  • GDB: Essa ferramenta de depuração é de fato a mesma que a do Linux e da qual o DDD (mencionado acima no Linux) é uma interface gráfica (o programa GDB original está na linha de comando). Você pode baixar este programa no site oficial: Faça o download do GDB no site oficial.
  • XCode: Se você preferir interfaces de usuário (que ainda é o mais conveniente), você também pode ter ao seu dispor o XCode, que é um IDE para Mac OS X e que integra um “Frontend” (uma interface gráfica de usuário para um programa de linha de comando).