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

[edição verificada][edição verificada]
Conteúdo apagado Conteúdo adicionado
Abacaxi (discussão | contribs)
Sem resumo de edição
Linha 1:
{{reciclar}}
 
{{Em tradução}}
==História==
===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 periodoperíodo 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 "[[w:linguagem de programação B|B]]". Há vários relatos que se referem à origem do nome "B": Ken Thompson dá crédito à [[w:BCPL|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, tornando-se um dos primeiros núcleos de sistema operacional implementado em uma linguagem sem ser o Assembly. Como exemplos anteriores pode-se citar o sistema [[w:Multics|Multics]] (escrito em PL/I) e [[w:TRIPOS|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 [[w:ANSI C|ANSI C]], descrito abaixo.)
K&R introduziram as seguintes características na linguagem:
* Tipos de dados <code>struct</code>
Linha 16:
* 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 actualizadosatualizados 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:
Linha 23:
* Campos de nome <code>struct</code> num espaço de nome separado para cada tipo <code>struct</code>
* Atribuição a tipos de dados <code>struct</code>
* Qualificadores <code>const</code> para criar um objectoobjeto só de leitura
* Uma biblioteca-padrão que incorpora grande parte da funcionalidade implementada por vários vendedores
* Enumerações
Linha 29:
 
===Os Padrões 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 adotada 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 projeto onde se adicionavam construções de linguagens de programação orientada por objetos à 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 operativo 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 é frequentemente 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 36:
 
===C99===
Após o processo ANSI de padronização, as especificações da linguagem C permaneceram relativamente estáticas por algum tempo, enquanto que a linguagem C++ continuou a evoluir. (Em 1995, a Normative Ammendment 1 criou uma versão nova da linguagem C mas esta versão raramente é tida em conta.) Contudo, o padrão foi submetido a uma revisão nos finais da década de 1990, levando à publicação da norma ISO 9899:1999 em 1999. Este padrão é geralmente referido como "C99". O padrão foi adoptadoadotado como um padrão ANSI em Março de 2000.
 
As novas características do C99 incluem:
Linha 42:
* Levantamento de restrições sobre a localização da declaração de variáveis (como em C++)
* Adiçã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ções de dados de comprimento variável <!-- tradução correcta?-->
* Suporte oficial para comentários de uma linha iniciados por <code>//</code>, emprestados da linguagem C++
* Várias funções de biblioteca novas, tais como <code>snprintf()</code>
* Vários ficheirosarquivos-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.
 
===Resumo em inglês===
Em 1947, três cientistas do Laboratório Telefonia Bell, William Shockley, Walter Brattain, e John Bardeen criaram o transistor.A computação moderna teve início. Em 1956 no MIT o primeiro computador completamente baseado em transistores foi concluidoconcluído, the TX-0. Em 1958 na Texas Instruments, Jack Kilby construiu o primeiro circuito integrado. Mas mesmo antes do primeiro circuito integrado existir, a primeira linguagem de alto nível já tinha sido escrita.
 
Em 1954 Fortran, a Formula Translator, foi escrito. Começou como Fortran I em 1956. Fortran veio a ser Algol 58, o Algorithmic Language, em 1958. Algol 58 veio a ser Algol 60 em 1960. Algol 60 veio a ser CPL, o Combined Programming Language, em 1963. CPL veio a ser BCPL, Basic CPL, em 1967. BCPL veio a ser B em 1969. B veio a ser C em 1971.