Pagina 1 di 1

Chi scrive i compilatori?

MessaggioInviato: sab feb 21, 2009 4:16 pm
da zenith
E' il primo messaggio che posto nella sezione Programmazione [:)]
...ma non ho programmato un bel niente [std] . Vorrei infatti porre una domanda da profano agli esperti:
Per scrivere un programma serve un compilatore. Ma i compilatori chi li scrive? Altri programmi. Ma qualcuno l'avrà fatto un primo compilatore?!

Wikipedia ha scritto:L'idea della compilazione prese velocemente piede e molti dei principi di design dei compilatori vennero sviluppati negli anni 60.
Un compilatore è esso stesso un programma scritto in un qualche linguaggio. I primi compilatori venivano scritti in Assembler. Il primo compilatore auto-compilato, capace cioè di compilare il suo stesso codice, fu creato per il linguaggio Lisp da Hart e Levin presso il MIT nel 1962.[2]
L'uso di linguaggio ad alto livello per scrivere i compilatori ebbe una spinta nei primi anni '70, quando i compilatori Pascal e C furono scritti negli stessi linguaggi. Creare un compilatore autocompilante introduce un problema di bootstrapping, il primo compilatore di quel linguaggio deve essere per forza scritto in un altro linguaggio o compilato facendo girare il compilatore come un interprete (come fecero Hart e Levin con il loro compilatore Lisp).


Non tiratemi fuori la storia del motore immobile di Aristotele, che non me la bevo! [:D]

Re: Chi scrive i compilatori?

MessaggioInviato: sab feb 21, 2009 5:18 pm
da eDog
E' l'esilarante arte del compilare il compilatore, da cui nasce la domanda "E' nato prima il sistema operativo con cui compilare il compilatore, o il compilatore per compilare il sistema operativo?" [crylol] [crylol]

Ormai i compilatori sono software, software che, ovviamente, eseguono ancora il loro sporco lavoro.

GCC, il famoso GNU Compilers Collection (compilatore c, java e molto ancora) si autocompila con la procedura del bootstrap in 3 passaggi.

Re: Chi scrive i compilatori?

MessaggioInviato: sab feb 21, 2009 5:25 pm
da zenith
eDog ha scritto:GCC, il famoso GNU Compilers Collection (compilatore c, java e molto ancora) si autocompila con la procedura del bootstrap in 3 passaggi.

Si, ma bisognerà pure istruirli questi benedetti cosi! [boh] Non ci capisco niente...
Alla domanda "è nato prima l'uovo o la gallina", è facile rispondere che è nata prima la gallina. Il difficile è dire da dove è venuta la prima gallina!

Re: Chi scrive i compilatori?

MessaggioInviato: sab feb 21, 2009 8:22 pm
da Xero
Il compito del compilatore è trasformare in sequenze binarie il codice pseudo-umano digitato.

Un compilatore legge un comando riconosciuto come tale e lo trasforma in una stringa di numeri binari che il "cuore" primitivo del computer sa interpretare.

Rappresenta un'interprete tra gli 01001010 del computer e il nostro Do, If, Then, For, etc..

Capisci bene che i primi programmi erano creati conoscendo a menadito le sequenze di 0 e 1 necessarie per eseguire un operazione. Cosa affatto elementare e piuttosto scazzosa, ma soddisfacente direi [std]

Re: Chi scrive i compilatori?

MessaggioInviato: sab feb 21, 2009 8:24 pm
da zenith
Ah allora ecco chi ha fatto la gallina! [8D]

Re: Chi scrive i compilatori?

MessaggioInviato: dom feb 22, 2009 5:23 pm
da Luker94
Da piccolo mentre imparavo a programmare mi sono posto migliaia di volte questa domanda [rolleyes]


Prima c'erano i linguaggi macchina:
Codice: Seleziona tutto
3E 41 D3 4B
3B 8F 45 B3
4E 77 55 3D
...

bello, eh?
poi, scritti in linguaggio macchina, vennero i primi assembler, che trasformavano una cosa tipo
Codice: Seleziona tutto
mov al,80h
mov bl,81h
mov ah,02h
add al,bl
adc dl,30h
int 21
int 20

in linguaggio macchina.
Con l'assembly vennero creati i primi compilatori (ammesso che qualcuno non abbia avuto la voglia di scriverseli direttamente in macchina)
Codice: Seleziona tutto
function somma(int a,int b)
{
int sum;
sum=a+b;
return sum;
}

Decisamente più comprensibile [std]

Re: Chi scrive i compilatori?

MessaggioInviato: dom feb 22, 2009 5:44 pm
da dararag
ovviamente, i programmi scritti in macchina li puoi usare senza compilarli.... ma ti immagini a scrivere cinquanta righe per un "Hello World!"?? [...] [:D]

Re: Chi scrive i compilatori?

MessaggioInviato: dom feb 22, 2009 6:02 pm
da zenith
Quindi, un bel giorno un tizio senza niente da fare si è alzato, ha preso un foglio e si è messo a scrivere 01010111001010100001010101001010111011010101010101010111111111010100000010111000110101001010101...

E ha fatto il primo compilatore. Poi dopo essersi fatto il maz** ha usato il compilatore per compilare altra roba.
E poi con lo stesso compilatore si è inventato un altro linguaggio. Ed ecco l'altra domanda: come si fa ad inventare un linguaggio di programmazione? Insomma, come si fa a farlo capire ai compilatori?

Re: Chi scrive i compilatori?

MessaggioInviato: dom feb 22, 2009 6:27 pm
da dararag
ora, mettiamo che tu voglia sommare come diceva prima luker, a + b, ok?
diciamo che, nel tuo linguaggio, tu voglia che questo possa essere fatto tramite la funzione sum(int a, int b), quindi dirai al compilatore che, quando incontrerà l'istruzione, dovrà sostituirla con il codice macchina necessario ad eseguire la somma [^]

Re: Chi scrive i compilatori?

MessaggioInviato: dom feb 22, 2009 6:29 pm
da Xero
zenith ha scritto: Ed ecco l'altra domanda: come si fa ad inventare un linguaggio di programmazione? Insomma, come si fa a farlo capire ai compilatori?

In teoria gli dici "caro compilatore, questo è il linguaggio Z#, in cui se ti scrivo "se" devi associarlo alla sequenza di bit 01010010101, ok?", in pratica non so come si faccia, credo sia tra gli esami della specialistica, ma non è nulla di elementare, anzi.

Re: Chi scrive i compilatori?

MessaggioInviato: dom mar 08, 2009 5:17 pm
da Luker94
Devi avere molte buone ragioni se vuoi scrivere da 0 un compilatore...non è proprio la cosa più semplice [rolleyes]