Qual è la storia del compilatore C?


23

Quando diciamo che "Dennis Ritchie ha sviluppato il linguaggio C", intendiamo che ha creato un compilatore (usando un altro linguaggio "già" sviluppato) che può compilare il codice sorgente scritto in linguaggio C? se sì, qual era il linguaggio che usava per scrivere il primo compilatore C? Capisco che un compilatore è un programma e possiamo creare un altro compilatore per il linguaggio C usando il compilatore C attualmente disponibile. È corretto?

Risposte:


23

Dal wiki :

Ritchie è meglio conosciuto come il creatore del linguaggio di programmazione C e uno sviluppatore chiave del sistema operativo Unix, e come coautore del libro definitivo su C.

Anche da wiki :

Il primo compilatore C scritto da Dennis Ritchie utilizzava un parser di discesa ricorsivo, incorporava conoscenze specifiche sul PDP-11 e faceva affidamento su un ottimizzatore opzionale specifico per la macchina per migliorare il codice del linguaggio assembly generato.

Anche il primo compilatore C è stato scritto da lui, in assemblea.

Questa pagina di Bell-Lab risponde alla maggior parte delle tue domande.


Il primo collegamento è interrotto.
Mahmoud Hossam,

IIRC, C era basato su un linguaggio precedente chiamato B e Unix era basato su un sistema operativo precedente chiamato Multics. Sarebbe ovvio che questi fossero usati per lo sviluppo di bootstrap - ma da quello che ho letto, è un'ipotesi sbagliata . Il primo sviluppo di Unix fu nell'assemblatore, fino a quando C prese il controllo, per esempio.
Steve314,

2
IIRC, B era una versione ridotta di BCPL, che era un primo linguaggio di programmazione dei sistemi. Penso che molti dei primi lavori su Unix siano stati descritti usando B, ma non sono sicuro che ci sia mai stato un vero compilatore Unix (forse un cross-compilatore che funzionava su qualcos'altro).
TMN,

Ahia . . . scrivere un compilatore in linguaggio assembly.
compman,

6
@compman A un certo punto, qualcuno deve scrivere un compilatore in assembly - in quale altro modo si avvia il bootstrap verso un compilatore in un HLL?
Richard Gadsden,

9

Dai un'occhiata a questa lezione di storia: http://www.livinginternet.com/i/iw_unix_c.htm

Quando il computer PDP-11 arrivò a Bell Labs, Dennis Ritchie si basò su B per creare un nuovo linguaggio chiamato C che ereditava il gusto di Thompson per la sintassi concisa e aveva un potente mix di funzionalità di alto livello e le funzionalità dettagliate necessarie per programmare un funzionamento sistema. La maggior parte dei componenti di Unix furono infine riscritti in C, culminando con il kernel stesso nel 1973

Anche questo potrebbe essere interessante: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK, "costruito su" come in "progettazione basata sulla progettazione di" , non come "compilato utilizzando" .
vartec,

8

Dennis Ritchie ha usato il bootstrap . Il bootstrap è un'idea semplice, in cui si sviluppa un compilatore iniziale e semplice in assembly, quindi si utilizza questo compilatore semplice per compilare il compilatore completo scritto in (un sottoinsieme della) lingua di destinazione. È così che Ritchie ha creato il compilatore last1120c molto presto .



2

C è stato progettato per consentire il porting di Unix su altre piattaforme senza dover riscrivere tutto il codice assembly per la nuova piattaforma.

Da qui il detto comune che "C è assemblatore portatile". Ciò riflette che C è intenzionalmente molto vicino a una CPU (intorno al 1970) a livello di astrazione ed è anche la ragione per cui la maggior parte del software incorporato è scritta in una sorta di C.

Quindi, C è intimamente connesso con Unix e la gente di Unix ha scritto il primo compilatore C basato sul lavoro precedente per fare ciò di cui aveva bisogno.

Si noti che Kernigan e Richie hanno scritto un libro eccellente su C che è probabilmente uno dei lavori di riferimento più influenti su un linguaggio informatico, poiché era così chiaro e conciso che la maggior parte dei lettori poteva imparare argomenti avanzati come puntatori e ricorsività da esso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.