Programar em C/História da linguagem C: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição
m formatação (em Portugal se diz "sistema operativo"); remoção (ligações internas); index
Linha 4:
===Desenvolvimentos iniciais===
[[Image:Ken n dennis.jpg|right|300px|thumb|Kenneth Thompson (à esquerda) e Dennis Ritchie (à direita), os criadores da linguagem C]]
O desenvolvimento inicial da linguagem C ocorreu nos laboratórios Bell da [[w:AT&T|AT&T]] entre 1969 e 1973. Segundo Ritchie, o periodo mais criativo ocorreu em 1972. Deu-se o nome "C" à linguagem porque muitas das suas características derivaram de uma linguagem de programação anterior chamada "[[linguagem de programação B|B]]". Há vários relatos que se referem à origem do nome "B": Ken Thompson dá crédito à [[linguagem de programação BCPL]], mas ele também criou uma outra linguagem de programação chamada '''Bon'', em honra da sua mulher Bonnie.
 
Por volta de 1973, a linguagem C tinha se tornado suficientemente poderosa para que grande parte do núcleo de UNIX, originalmente escrito na linguagem de programação PDP-11/20 Assembly, fosse reescrito em C. Este foi um dos primeiros núcleos de sistema operacionaloperativo que foi implementado numa linguagem sem ser o Assembly, sendo exemplos anteriores o sistema [[Multics]] (escrito em PL/I) e [[TRIPOS]] (escrito em BCPL).
 
===C de K&R=== <!-- será o termo correcto? -->
Em 1978, Ritchie e Kernighan publicaram a primeira edição do livro ''The C Programming Language''. Esse livro, conhecido pelos programadores de C como "K&R", serviu durante muitos anos como uma especificação informal da linguagem. A versão da linguagem C que ele descreve é usualmente referida como "C de K&R". (A segunda edição do livro cobre o posterior padrão [[ANSI C]], descrito abaixo.)
K&R introduziram as seguintes características na linguagem:
* tiposTipos de dados <code>struct</code>
* tiposTipos de dados <code>long int</code>
* tiposTipos de dados <code>unsigned int</code>
* O operador =+ foi alterado para +=, e assim sucessivamente (a [[análise léxica]] do compilador confundia o operador =+. Por exemplo, i =+ 10 e i = +10).
 
C de K&R é frequentemente considerado a parte mais básica da linguagem cujo suporte deve ser assegurado por um compilador C. Durante muitos anos, mesmo após a introdução do padrão C ANSI, ele era considerado o "menor denominador comum" em que programadores de C se apoiavam quando uma portabilidade máxima era desejada, já que nem todos os compiladores eram actualizados para suportar na íntegra o padrão C ANSI, e o código C de K&R razoavelmente bem escrito é também válido em relação ao C ANSI.
 
Nos anos que se seguiram à publicação do C K&R, algumas características "não-oficiais" foram adicionadas à linguagem, suportadas por compiladores da AT&T e de outros vendedores. Estas incluíam:
* funçõesFunções <code>void</code> e tipos de dados <code>void *</code>
* funçõesFunções que retornam tipos <code>struct</code> ou <code>union</code>
* camposCampos de nome <code>struct</code> num espaço de nome separado para cada tipo <code>struct</code>
* atribuiçãoAtribuição a tipos de dados <code>struct</code>
* qualificadoresQualificadores <code>const</code> para criar um objecto só de leitura
* umaUma biblioteca-padrão que incorpora grande parte da funcionalidade implementada por vários vendedores
* Enumerações
* [[enumeração|enumerações]]
* oO tipo de ponto-flutuante de precisão simples
 
===C ANSI e C ISO===
Durante os finais da década de 1970, a linguagem C começou a substituir a linguagem [[Linguagem de programação BASIC|BASIC]] como a linguagem de programação de microcomputadores mais usada. Durante a década de 1980, foi adoptada para uso no PC IBM, e a sua popularidade começou a aumentar significativamente. Ao mesmo tempo, Bjarne Stroustrup, juntamente com outros nos laboratórios Bell, começou a trabalhar num projecto onde se adicionavam construções de linguagens de programação orientada por objectos à linguagem C. A linguagem que eles produziram, chamada [[Programar em C++|C++]], é nos dias de hoje a linguagem de programação de aplicações mais comum no sistema operacionaloperativo Windows da companhia Microsoft; C permanece mais popular no mundo UNIX.
 
Em 1983, o Instituto Norte-Americano de Padrões (ANSI) formou um comité, X3j11, para estabelecer uma especificação do padrão da linguagem C. Após um processo longo e árduo, o padrão foi completo em 1989 e ratificado como ANSI X3.159-1989 "Programming Language C". Esta versão da linguagem é freqüentemente referida como C ANSI. Em 1990, o padrão C ANSI, após sofrer umas modificações menores, foi adotado pela Organização Internacional de Padrões (ISO) como ISO/IEC 9899:1990.
Linha 39:
 
As novas características do C99 incluem:
* [[funçõesFunções em linha]]
* levantamentoLevantamento de restrições sobre a localização da declaração de variáveis (como em C++)
* adiçãoAdição de vários tipos de dados novos, incluindo o <code>long long int</code> (para minimizar a dor da transição de '''32-bits''' para '''64-bits'''), um tipo de dados boolean explicito e um tipo <code>complex</code> que representa [[números complexos]]
* disposiçõesDisposições de dados de comprimento variável <!-- tradução correcta?-->
* suporteSuporte oficial para comentários de uma linha iniciados por <code>//</code>, emprestados da linguagem C++
* váriasVárias funções de biblioteca novas, tais como <code>snprintf()</code>
* váriosVários ficheiros-cabeçalho novos, tais como <code>stdint.h</code>
 
O interesse em suportar as características novas de C99 parece depender muito das entidades. Apesar do GCC e vários outros compiladores suportarem grande parte das novas características do C99, os compiladores mantidos pela Microsoft e pela Borland não, e estas duas companhias não parecem estar muito interessadas adicionar tais funcionalidades, ignorando por completo as normas internacionais.
Linha 60:
The portability of UNIX was the main reason for the initial popularity of both UNIX and C; rather than creating a new operating system for each new machine, system programmers could simply write the few system dependent parts required for the machine, and write a C compiler for the new system; and since most of the system utilities were written in C, it simply made sense to also write new utilities in the language.
 
[[Categoria:Programar em C|H{{SUBPAGENAME}}]]