Introdução a C:

 

    O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973. Não se sabe se o nome "C" foi dado à linguagem porque muitas de suas características derivaram da linguagem B e C é a letra conseguinte no alfabeto, ou porque "C" é a segunda letra do nome da linguagem BCPL, da qual derivou-se a linguagem B.

    C foi originalmente desenvolvido para a implementação do sistema Unix (originalmente escrito em PDP-7 Assembly, por Dennis Ritchie e Ken Thompson). Em 1973, com a adição do tipo struct, C tornou-se poderoso o bastante para a maioria das partes do núcleo do Unix, serem reescritas em C. Este foi um dos primeiros sistemas que foram implementados em uma linguagem que não o Assembly, sendo exemplos anteriores os sistemas: Multics (escrito em PL/I) e TRIPOS (escrito em BCPL). Segundo Ritchie, o período mais criativo ocorreu em 1972.    

    C é uma linguagem imperativa e procedural, para implementação de sistemas. Seus pontos de design foram para ele ser compilado. O C é uma linguagem estruturalmente simples e de grande portabilidade, pois o compilador C gera códigos mais enxutos e velozes do que muitas outras linguagens, e estes podem ser utilizados em qualquer SO (Sistema Operacional), desde que este possua o compilador de C. Embora estruturalmente simples (poucas funções intrínsecas) o C não perde funcionalidade pois permite a inclusão de uma farta quantidade de rotinas do usuário. Os fabricantes de compiladores fornecem uma ampla variedade de rotinas pré-compiladas em bibliotecas.  O C fornece acesso de baixo nível à memória e baixos requerimentos do hardware, mas também foi desenvolvido para ser uma linguagem de alto nível, para maior reaproveitamento do código, ou seja a reusabilidade

    Essa propriedade não foi acidental, a linguagem C foi criada com o objetivo principal em mente: facilitar a criação de programas extensos com menos erros, recorrendo ao paradigma da programação procedural, mas sobrecarregando menos o autor do compilador cujo trabalho complica-se ao ter de realizar as características complexas da linguagem. Para este fim, a linguagem C possui as seguintes características:

  • Uma linguagem extremamente simples, com funcionalidades não-essenciais, tais como funções matemáticas ou manuseamento de ficheiros (arquivos), fornecida por um conjunto de bibliotecas de rotinas padronizada;

  • A focalização no paradigma de programação procedural;

  • Um sistema de tipos simples que evita várias operações que não fazem sentido;

  • Uso de uma linguagem de pré-processamento, o pré-processador de C, para tarefas tais como a definição de macros e a inclusão de múltiplos ficheiros de código fonte;

  • Ponteiros dão maior flexibilidade à linguagem;

  • Acesso de baixo-nível, através de inclusões de código Assembly no meio do programa C;

  • Parâmetros que são sempre passados por valor para as funções e nunca por referência (É possível simular a passagem por referência com o uso de ponteiros);

  • Definição do alcance lexical de variáveis;

  • Estruturas de variáveis, (structs), que permitem que dados relacionados sejam combinados e manipulados como um todo.

    A linguagem C não possui Ortogonalidade: Em linguagem de programação, ortogonalidade significa que um conjunto relativamente pequeno de construções primitivas podem ser combinadas em um número pequeno de maneiras para construir as estruturas de controle e de dados de uma linguagem. Na prática, uma linguagem ortogonal seria mais fácil de aprender e teria menos exceções. Cada exceção é uma construção que precisa ser aprendida para ser evitada.

    Exemplos de falta de ortogonalidade em C:

  • Um struct (registro) podem ser valores de retorno de uma função, mas vetores não;
  • Um vetor pode ser valor de retorno se estiver encapsulado por um struct;
  • Um membro de um struct pode ser qualquer tipo de dado exceto void ou um struct do mesmo tipo;
  • Um vetor pode ser de qualquer tipo exceto void;
  • Todos os tipos de dados são passados por valor exceto vetores.

   

    C é uma das linguagens de programação mais populares e existem poucas arquiteturas para as quais não existem compiladores para C. Essa linguagem tem influenciado muitas outras linguagens de programação, mais notavelmente C++, que originalmente começou como uma extensão para C.

 

 
 
Fontes: