Qual é a história do compilador C?


23

Quando dizemos que "Dennis Ritchie desenvolveu a linguagem C", queremos dizer que ele criou um compilador (usando uma outra linguagem já desenvolvida) que pode compilar o código fonte escrito na linguagem C? se sim, qual foi a linguagem que ele usou para escrever o primeiro compilador C? Entendo que um compilador é um programa e podemos criar outro compilador para a linguagem C usando o compilador C atualmente disponível. Isso está correto?

Respostas:


23

Do wiki :

Ritchie é mais conhecido como o criador da linguagem de programação C e um desenvolvedor-chave do sistema operacional Unix e como co-autor do livro definitivo sobre C.

Também do wiki :

O primeiro compilador C escrito por Dennis Ritchie usou um analisador de descida recursivo, incorporou conhecimentos específicos sobre o PDP-11 e contou com um otimizador opcional específico da máquina para melhorar o código da linguagem assembly gerado.

O primeiro compilador C também foi escrito por ele, em montagem.

Esta página da bell-labs responde à maioria das suas perguntas.


O primeiro link está quebrado.
Mahmoud Hossam

O IIRC, C foi baseado em um idioma anterior chamado B, e o Unix, em um sistema operacional anterior chamado Multics. Seria um palpite óbvio de que eles foram usados ​​para iniciar o desenvolvimento - mas pelo que li, esse é um palpite errado . O desenvolvimento inicial do Unix ocorreu em assembler, até que C assumiu, por exemplo.
21311 Steve #

2
IIRC, B era uma versão simplificada do BCPL, que era uma linguagem de programação de sistemas antiga. Eu acho que grande parte do trabalho inicial do Unix foi descrito usando B, mas não tenho certeza se houve um compilador Unix real para ele (possivelmente um compilador cruzado que foi executado em outra coisa).
TMN

Ai. . . escrevendo um compilador em linguagem assembly.
compman

6
@compman Em algum momento, alguém precisa escrever um compilador na montagem - de que outra forma você inicializa seu caminho para um compilador em uma HLL?
Richard Gadsden

9

Confira isso em uma lição de história: http://www.livinginternet.com/i/iw_unix_c.htm

Quando o computador PDP-11 chegou ao Bell Labs, Dennis Ritchie criou o B para criar uma nova linguagem chamada C, que herdou o gosto de Thompson por sintaxe concisa, e possuía uma poderosa combinação de funcionalidade de alto nível e os recursos detalhados necessários para programar uma operação. sistema. A maioria dos componentes do Unix acabou sendo reescrita em C, culminando com o próprio kernel em 1973

Também isso pode ser interessante: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK, "construído" como em "design baseado em design de" , não como "compilado usando" .
Vartec

8

Dennis Ritchie usou bootstrapping . O bootstrapping é uma idéia simples, onde você desenvolve um compilador inicial e simples na montagem e, em seguida, usa esse compilador simples para compilar seu compilador completo escrito em (um subconjunto) do seu idioma de destino. Foi assim que Ritchie criou o compilador last1120c muito cedo .



2

C foi projetado para permitir a porta do Unix para outras plataformas sem ter que reescrever todo o código de montagem da nova plataforma.

Daí o ditado comum de que "C é montador portátil". Isso reflete que C é intencionalmente muito próximo a uma CPU (por volta de 1970) no nível de abstração e também é a razão pela qual a maioria dos softwares incorporados é escrita em algum tipo de C.

Portanto, C está intimamente conectado ao Unix, e o pessoal do Unix escreveu o primeiro compilador C com base em trabalhos anteriores para fazer o que eles precisavam.

Observe que Kernigan e Richie escreveram um excelente livro sobre C, que é provavelmente um dos trabalhos de referência mais influentes em uma linguagem de computador, uma vez que era tão claro e conciso que a maioria dos leitores podia aprender assuntos avançados, como indicadores e recursão.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.