LPC
INTRODUÇÃO
Uma das linguagens mais utilizadas por técnicos e pesquisadores é a linguagem C. Isto ocorre principalmente pela versatilidade e pela complexidade da linguagem, que permitem a criação de programas muito sofisticados.
HISTÓRICO
A primeira versão da linguagem foi desenvolvida por dois pesquisadores da Bell Laboratories, Brian Kernighan e Dennis Ritchie.
A empresa necessitava de uma linguagem especificamente para escrever o sistema operacional UNIX, mas C revelou-se tão eficiente e "transportável" para outros sistemas operacionais, sistemas e hardwares que seu uso alastrou-se rapidamente.
Esta primeira versão, chamada "K&R" sofreu algumas modificações com o tempo, para adaptar-se a computadores com mais de 8 bits e assim nasceu a versão "ANSI C", considerada um padrão da linguagem.
Algum tempo depois, com a moda de programação orientada a objetos, nasceu a versão C++ que não mais segue a programação linear. Várias empresas criaram seus próprios compiladores C e assim apareceram o MS C (Microsoft), o Turbo C, Borland C, etc.
CARACTERÍSTICAS DA LINGUAGEM
“C é uma linguagem compilada, estruturada e de baixo nível.”
Linguagem compilada porque, após ser escrita num editor de textos qualquer (que siga o padrão ASCII), precisa ser decodificada, compilada (cada módulo separadamente) e linkada para obter-se um programa executável.
Certos softwares como o Turbo C e o Borland C permitem que se edite, compile e linke os programas em C dentro de um mesmo ambiente (chamado de “IDE”, ou “Integrated Development Environment”), o que facilita muito a manipulação.
É uma linguagem estruturada porque segue o padrão de endentação, tal como em Pascal e Fortran por exemplo, com alinhamentos dos blocos lógicos cada vez mais à direita, quanto mais "interno" ao bloco for o comando, e com execução linear, sem utilização de goto's, break's, etc.
Finalmente é uma linguagem de baixo nível por permitir acesso às camadas lógicas mais baixas da máquina. Isto é, por aproximar-se bastante da linguagem de máquina, Assembler, que apesar de bastante rudimentar tem a capacidade de acessar diretamente a memória, o hardware do computador, como registradores, portas, posições da RAM, etc.
Com isto, ganha-se muito em rapidez de execução e em poder para utilizar completamente os recursos do computador.
É importante salientar que apesar de ser possível utilizar-se funções muito complexas de baixo nível em C, um programador não interessado nisto terá uma linguagem estruturada como qualquer outra de alto nível.
Outra característica importante é que C é uma linguagem de “estilo livre”, sem formatação rigorosa como Fortran e Basic. Em Basic, cada linha contém um comando e cada comando ocupa somente uma linha (às vezes, há até numeração das linhas). Em Fortran, os arquivos de saída contém espaços reservados para cada string, valor de caractere ou espaço em branco que deverá ser impresso. Nada disto ocorre em C. Desde que a sintaxe correta seja seguida, não há maiores restrições na linguagem. Ou melhor, quase não há.
O programador não pode esquecer que o compilador C diferencia caracteres minúsculos de maiúsculos. Por exemplo, as variáveis "numero" e "Numero" são consideradas diferentes uma da outra na linguagem C.
Um avanço significativo que C possibilitou, foi escrever-se um programa numa linguagem de alto nível (que C não deixa de ser) e ter, após a compilação, um código gerado diretamente em Assembler.
Qual a vantagem nisto? Quem trabalha com circuitos contendo microprocessadores ou microcontroladores sabe! Até pouco tempo seria necessário escrever páginas de código em Assembler para funções simples.
Agora, com o uso de compiladores como o Keil - C ou Avocet, o programador escreve o código em C e o compilador encarrega-se de transformá-lo em Assembler. Costuma-se dizer que o C é uma linguagem extremamente "portável". Ou seja, foi desenvolvido para UNIX, mas roda muito bem em DOS. Além disto, um programa escrito em C, para uma estação de trabalho provavelmente rodará num PC ou num computador médio; ou mesmo passará de um IBM-PC para um Machintosh. Isto ocorre porque C não é rígido, não tem funções pré-definidas de I/O (aliás, de nenhum tipo) para cada máquina e adapta-se a qualquer hardware. Funções específicas (como entrada e saída) para cada máquina devem ser escritas pelo próprio usuário e certamente estas não rodariam num hardware diferente. Uma opção para o programador mais prático (ou preguiçoso) é procurar nas dezenas de arquivos de biblioteca ".h" (por exemplo, "stdio.h") uma função que se encaixe nas suas necessidades. É importante salientar que também estas funções (como por exemplo, printf(), que imprime saídas formatadas na tela) foram desenvolvidas por usuários e não pertencem à linguagem original. Na verdade, quase tudo em C é definido pelo usuário, daí sua complexidade e ao mesmo tempo, seu poder.